- 在前一篇日志: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- 客观的说,阅读本书的收获并不大,学了些东西,点点滴滴,零零碎碎的。上回话说到何处,今天接着记录。
通过我们在 General Settings 里都是把 WordPress address (URL) 和 Site address (URL) 设置成一样的,但它们可以不一样的。比如说 wordpress 整个目录传到了虚拟主机中,默认的你要用 http://unmi.cc/wordpress 的方式来访问,这当然不太好看,你希望用 http://unmi.cc 的 URL 来访问,可以用的做法是把 wordpress 下的文件放在虚拟主机根目录中。
另一种做法是仍然让保留 wordpress 目录,把其中的 index.php 以及 .htaccess 两个文移到根目录下,再编辑这个 index.php 文件,把其中的 Read More