- 一般我们都是把 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. Read More - 在前一篇日志: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。 Read More - 做 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 控制实际的日志输出也是最强的。
Read More - SiteMesh 是一个很好的 Java Web 模板框架,它的思维方式与通常的模板实现(比如 Tiles 或 include)有些区别。SiteMesh 模板一旦配置好后,在编辑内容页时可以忽视它的存在。可以它是被动,内容页中的输出被抽取到模板中,一般的模板为主动的把自己某部分内容去填充模板。
在站点中应用样式或 JS 代码时很可能会依赖于每个页面的 <body> 的 id,比如:
body#archive primary{....} /** 样式 **/
$("body#archive").bgColor='red'; //JS 所以就要求每个页面有不同的 body id 值。在很多 SiteMesh 的例子中页面渲染后 body 都没有 id 值的,或是相同的 id 值。 Read More - 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 月。
Read More - 前一个多月中都是用 fetch_rss() 函数 (定义在 wp-includes/rss.php 中) 来获取外部 RSS 数据的,代码如下:
1<?php 2 $articles = fetch_rss("http://feed.unmi.cc"); 3 foreach($articles as articles){ 4 echo $article['title'].'=>'.$article['link']; 5 //更多元素可用 var_dump($article) 查看 6 } 7?>
当然,你可以用 wp_rss() 或 get_rss() 直接在页面上显示获取的 rss 记录,我是需要处理 $articles 数组变量的。 Read More - 任何一个有经验的程序员都知道,软件开发遵循着一些不成文的法则。然而,如果你不遵循这些法则也并不意味着会受到惩罚;相反,有时你还会获得意外的好处。下面的就是软件编程中的21条法则:
任何程序一旦部署即显陈旧。
修改需求规范来适应程序比反过来做更容易。
一个程序如果很有用,那它注定要被改掉。
一个程序如果没用,那它一定会有很好的文档。
任何程序里都仅仅只有10%的代码会被执行到。
软件会一直膨胀到耗尽所有资源为止。
任何一个有点价值的程序里都会有至少一个bug。
原型完美的程度跟审视的人数成反比,反比值会随着涉及的资金数增大。 Read More 其实一直以来,我写博客都比较喜欢在线来写,省得装那些客户端,主要是曾经试用 Windows Live Writer 写出的东西垃圾代码太多,且文件上传时目录不好控制。 不能因为一次不愉快的经历就害怕十年吧。为什么又再次提起博客的离线客户端呢?因为现在风声吃紧,特别是对于使用国外空间的,你非常的谨慎的写着, 该避讳的地方也避了,还是不知哪个字成敏感词,一提交,网络被重置,完蛋了,抓逛也无济于事,一切重来,如果你没有事先 Ctrl + C 的话。 所以我现在网上养成了一个良好习惯,写一段话在提交之前必按 Ctrl + C。
找个博客的客户端程序是十分必要的,由于我的是用的 WordPress,所以在此介绍几款支持 WordPress 的客户端。 有了 WordPress 客户端不光可以不受胡萝卜的侵扰,还能让你无论何时何地自由的书写,连上线后即发布,上传图片文件等事也省了许多麻烦,还有更多的在线编辑不能提供的功能。
Read More
要向另一个服务程序传送 PDF 文件,同时要用另一个文件来给 PDF 文件加入一些描述信息,描述都很短,这时候那个描述文件其实是多余的,完全可以把这些描述信息写到 PDF 文件自身中去。比如在查看 PDF 文件属性 PDF 标签页中可以看到的 Title/Author/Subject/Keywords/Created/Modified/Application 这些信息都可以通过 iTextSharp 来编辑。其实不止这些,你可以加入任何命名的属性,只是它们不在属性窗口中显示而已。而且这些属性存的数据好像也不受限的,当然太大了直接就是增加 PDF 文件的体积,如果是可视属性的话,在查看文件属性时显示也要变慢,所以尽量还是在 PDF 的 MetaData 中存简短的信息。 Read More
看来我真是浸淫在了 WordPress 里,俗称工欲善其事,必先利其器,也不知道想把这一器磨成多利。大约和当初结识 Joomla 时同样的境遇,难道要变大杀器不成?接连都几篇与 WordPress 相关的内容,反而把主业给抛在了一边。
好了,都是实际的问题,我的文章里因为有一些代码什么的,所以选择了用 <!--more--> 的形式显示片断,而不是用的摘要,虽然摘要也有可视编辑器,但还是用 <!--more--> 一点鼠标方便些。但是问题又有了,文章列表页里是显示了 more 前面的内容,但 RSS 不好控制,因为文章没有摘要, 所以在后台 Settings/Reading 里无论选择 Rss 输出是 Full Text 还是 Summary 都会以全文的方式输出。选择 Summary 时,WordPress 看到没有填写文章摘要就会代之以全文。 Read More