把 Lucene 索引数据存到数据库表中

一般我们都是把 Lucene 索引存放在文件系统中,大数据量时会考虑用分布式文件系统,如 Hadoop 及 MapReduce、GFS 的应用。也许你会想我们有数据库作为集中的数据存储地,是否可以把 Lucene 索引文件存储到关系型数据库中。可以这么做,不过好像性能上有些问题,本文就此也作这样一个尝试。

http://wiki.apache.org/lucene-java/LuceneFAQ
Can I store the Lucene index in a relational database?
Lucene does not support that functionality out of the box, but several people have implemented JdbcDirectory's. The reports we have seen so far indicate that performance with such implementations is not great, but it is doable. 阅读全文 >>

在 Java Web 项目中选择使用 Slf4J 通用日志框架

在前一篇日志:Java 流行框架(Spring/Struts2/Hibernate/iBatis)都在使用什么日志组件,介绍了当前流行框架 Spring、 Struts2、 Hibernate、iBatis(Mybatis) 分别使用的是什么通用日志组件:

Spring 3.0.4:Commons-Logging
Struts 2.2.1:间接的优先支持 Commons-Logging
Hibernate 3.6.0:直接的使用 Slf4J
iBatis/MyBatis 3.0.2:间接的优先使用 Slf4J

再考虑 Slf4J 以及 Logback 的优越性,性能得到的改善,多 JVM 写同一日志文件都无妨,方便运用于 OSGI 环境,自动压缩日志,参数化。所以个人认为在 SSH 或 SSI 项目中推荐用

Slf4J + Logback 对于 Hibernate 和 iBatis/MyBatis 直接走这条路
jcl-over-slf4j + Logback 对于 Spring 和 Struts2,需用用 jcl-over-slf4j 把 Commons-Logging 桥接到 Slf4J,然后 Logback。 阅读全文 >>

Java 流行框架(Spring/Struts2/Hibernate/iBatis)都在使用什么日志组件

做 Java Web 应用我想多会采用这两种框架组合,SSH 和 SSI,其实我是不太喜欢用这两种缩写方式:

SSH = Spring + Struts + Hibernate,SSH 由久已久所代表的是 Secure Shell,像 https
SSI = Spring + Struts + iBatis,SSI 在很久以前就是 Server Side Include,像 shtml,而 iBatis 已更名为 MyBatis 了。

要是在以往做这样的 Java 项目都会用 Commons-Logging + Log4J 来作为日志框架,因为多数组件用的是 Common-Logging 通用组件,而那时 Log4J 控制实际的日志输出也是最强的。
阅读全文 >>

使用 SiteMesh2 时为每个页面指定不同的 body id 值

SiteMesh 是一个很好的 Java Web 模板框架,它的思维方式与通常的模板实现(比如 Tiles 或 include)有些区别。SiteMesh 模板一旦配置好后,在编辑内容页时可以忽视它的存在。可以它是被动,内容页中的输出被抽取到模板中,一般的模板为主动的把自己某部分内容去填充模板。

在站点中应用样式或 JS 代码时很可能会依赖于每个页面的 <body> 的 id,比如:

body#archive primary{....} /** 样式 **/
$("body#archive").bgColor='red'; //JS

所以就要求每个页面有不同的 body id 值。在很多 SiteMesh 的例子中页面渲染后 body 都没有 id 值的,或是相同的 id 值。
阅读全文 >>

修正 FeedBurner Stats by DevMD.com 插件统计图中的月份显示错误

Feed 的烧制(代理) 程序还是 FeedBurner 有名,结果也是因为它让消息传得太快了,所以被墙了,才有了国内的 FeedSky。如同 Google 当年的遭遇一样才成就了百毒。

FeedBurner 在自由的国家里用得还是很广泛,所以你的客户群是那些人的话,还是值得去使用 FeedBurner。假如是用 WordPress 建站的话,你可以安装 FeedBurner Stats by DevMD.com 插件来查看 Feed 的订阅情况,以统计图形直观的显示。

这里是它的界面截图:http://wordpress.org/extend/plugins/feedburner-stats-by-devmdcom/screenshots/

但是对于该插件的当前版本 0.1.6 的统计图在月份显示时还有个 Bug,就是月份相差 1,比如当前是 10 月,图中却显示为 November,11 月。

阅读全文 >>

WordPress 3.0.1 中被迫用 fetch_feed() 替换 fetch_rss() 来获取 rss 数据

前一个多月中都是用 fetch_rss() 函数 (定义在 wp-includes/rss.php 中) 来获取外部 RSS 数据的,代码如下:

当然,你可以用 wp_rss() 或 get_rss() 直接在页面上显示获取的 rss 记录,我是需要处理 $articles 数组变量的。 阅读全文 >>

[译稿]软件编程21法则[转]

任何一个有经验的程序员都知道,软件开发遵循着一些不成文的法则。然而,如果你不遵循这些法则也并不意味着会受到惩罚;相反,有时你还会获得意外的好处。下面的就是软件编程中的21条法则:

任何程序一旦部署即显陈旧。
修改需求规范来适应程序比反过来做更容易。
一个程序如果很有用,那它注定要被改掉。
一个程序如果没用,那它一定会有很好的文档。
任何程序里都仅仅只有10%的代码会被执行到。
软件会一直膨胀到耗尽所有资源为止。
任何一个有点价值的程序里都会有至少一个bug。
原型完美的程度跟审视的人数成反比,反比值会随着涉及的资金数增大。 阅读全文 >>

几款 WordPress 客户端的功能介绍(一)

其实一直以来,我写博客都比较喜欢在线来写,省得装那些客户端,主要是曾经试用 Windows Live Writer 写出的东西垃圾代码太多,且文件上传时目录不好控制。不能因为一次不愉快的经历就害怕十年吧。为什么又再次提起博客的离线客户端呢?因为现在风声吃紧,特别是对于使用国外空间的,你非常的谨慎的写着,该避讳的地方也避了,还是不知哪个字成敏感词,一提交,网络被重置,完蛋了,抓逛也无济于事,一切重来,如果你没有事先 Ctrl + C 的话。所以我现在网上养成了一个良好习惯,写一段话在提交之前必按 Ctrl + C。

找个博客的客户端程序是十分必要的,由于我的是用的 WordPress,所以在此介绍几款支持 WordPress 的客户端。有了 WordPress 客户端不光可以不受胡萝卜的侵扰,还能让你无论何时何地自由的书写,连上线后即发布,上传图片文件等事也省了许多麻烦,还有更多的在线编辑不能提供的功能。

阅读全文 >>

让 CCTV 告诉你怎么做一个真正的爱国者

央视热捧的三位爱国好学生全部弃乡定居国外
 原文:http://blog.sina.com.cn/s/blog_563545560100ldb3.html

消息说,10年前(2000年)央视在《对话》节目请了北京三位高唱爱国主义的女大学生楷模做了一个批判个人主义坏中学生韩寒的对话。但是,10年后,中学生韩寒坚决留在官员全部腐败、环境全部污染的中国,并且成为全国青年的意见领袖,而三位高唱爱国主义的大学生马楠、刘亦婷、黄思路呢,全投身外国了—— 马楠曾美国总统克林顿访华时,向克林顿表达对美国的不满,引起中国人叫好;但10年后,她拿着美国绿卡,嫁了美国老公。刘亦婷进了哈佛后,也不提报效祖国,现在是美国某基金副总裁,嫁了美国人。黄思路从北大毕业后,今天也定居哥伦比亚,老公也是白人。 阅读全文 >>