Redis setup

Redis是一个非常流行的No-SQL数据库,在互联网网站的技术架构中应用相当广泛。这几天通过阅读《Redis in action》学习Redis,准备用博客简单记录一些有用的信息,以供未来参考。第一篇是Redis的开发环境搭建,这里使用的是书中推荐的Python开发环境,整个搭建过程比较简单。

Prototype in Javascript

最近又有机会重新学习了一下Javascript的基础语法,越发觉得这门语言和传统的、面向对象的静态类型语言的区别很明显。多语言使用者经常出现的问题就是使用A语言写出B语言风格的程序,这种情况屡见不鲜——话说我写Java风格的C++程序也是非常流畅的。

Javascript语言基础里有两个特性我觉得值得深入了解一下,分别是原型(Prototype)和闭包(Closure)。当然,Javascript也有很多其他高级特性比如函数式编程,也许以后有机会我们可以深入探究一下。今天主要看一下Javascript里原型式继承是怎么做的。

Manacher

最近在研究算法,今天重点学习了一下Manacher算法(俗称“马拉车”算法,也即最长回文子串问题的最佳解法),不禁为算法发明者拍案叫绝。算法的精巧之处在于充分利用了原问题的关键信息:回文串。

前段时间参加了July组织的算法班,遗憾的是当时算法的基础并不好没听透,所以现在只好重听一下邹博的讲课录音,听完之后似乎明白又似乎不太明白,囧。把原C++程序改成成Java代码之后,Exception退出,囧++。智商已成事实,只好使用网络搜索大法,力求加深理解。在找了一些博客之后,略感失望,可能不是人家讲得不清楚,而是自己理解能力有限吧,不过为了参考方便,还是列举如下:

Understanding Spring

今天在公司做了一个Spring入门的介绍,感觉思路值得总结一下,可能对于以后深入理解类似主题有些帮助。

在多年以前的一个公司,我曾经参与过一段时间的Java企业应用开发,如果没有记错的话,应该是电信工单运维类的项目。我那时还比较青涩,对于Java企业开发以及相关框架和架构都理解的不深。当时组里有个架构师,是他主持了开发的设计决策,应该选的就是Struts/Spring/Hibernate这个经典组合。但是,项目持续的时间并不长,再加之任务繁杂,而我主要负责写前端页面实现,所以对于这些框架开发的精髓也并没有特别深入的了解,有点遗憾。但就是在这个项目,我认识的这位架构师,非常推荐阎宏的书《Java与模式》,所以我听从他的建议买了这本书,我的评价是:如果用Java语言做面向对象设计,这本书到现在依然有较高的阅读价值。

A little Emacs

最近看了《程序员的呐喊》,对我的影响可能比较大,Steve对于Lisp和Emacs的推崇使我不得不重新审视自己之前的一些观点。我也尝试着说服自己花一点时间来做些实验,看看自己学习了某些传说中的工具,到底会产生什么样的影响。工具只是工具,这句话在大部分情况下是适用的,只是对于Emacs这个神一样的编辑器来说,是否适用呢?带着这个问题,我开始了我的Emacs之旅。

It's complex

事情有点复杂,不知道从哪里说起。因为没什么主题,索性就叫杂感吧。

这段时间又重新学起了Java EE的知识,算作是之前一直没有认真了解的一个代价吧。一个礼拜多的时间看完了Java EE 6 Tutorial,也把有些典型的例子看了看,这次的感觉是原来Java EE还算好,没有想象的沉重,尤其是EJB,新的版本3.1已经算是轻量级的开发技术了。也从网上看了一些评论,主要是Java EE和Spring的比较,如果真的做一个新的企业应用项目,可能还是有点难以取舍。Spring的发展很快,现在已经出到4.0,而Java EE也并不示弱,现在已经有了Java EE 7。从历史上来看,Java EE在较早的版本名声不好,因为过于沉重了,所以Spring顺理成章地赢得了很大的市场,所以现在Java EE想要赢回这场持久战,还真得需要点耐心。一般来说,因为Spring并不受JCP的控制,所以在应用先进思想方面要更敏捷一些,而Java EE涵盖多个JSR的标准更新需要协调各方意见,步调怕是要略显迟缓。另外,Spring集成其他框架的灵活性是Java EE难以比拟的。所以,可能需要考察开发项目的特性,充分了解两种主要框架的能力和缺陷,以作判断。最后一句,Java EE因为包含很多标准来适配企业开发的方方面面,但并不见得在实际的项目都能用到,所以还是要量体裁衣,不要过多的Upfront Design。

Appfuse (2)

书接上文。

Eclipse里编译成功之后,下一个要执行的任务是下载Appfuse的全部源码。按照官网的方法就是一条命令,很简单:mvn appfuse:full-source,但实际的过程往往并不顺利。

首先要注意的是,在下载源码之前不要修改pom.xml,否则可能遇到一些奇怪的问题。

Appfuse (1)

以前也用过Appfuse,不过一直也没怎么深入,最近又有机会玩一玩儿,顺便记录一下。

Appfuse是一个很有意思的项目,可以把它看成是Java企业应用开发的一个最佳实践集合。在Maven的帮助下,可以生成基于Struts,Spring MVC或者Wicket等一些框架的组合,这样就免去了最初搭建脚手架(Scaffolding)的过程。这在Play Framework和Grails出现之前应该算是比较方便的,再加上作者Matt Raible(他的博客地址)本身在Java圈子里也有小有名气,所以这个项目还是有一定人气的。今天看了一下,最新版的Appfuse 3.0已经支持Spring 4和Java 7/Maven 3(最低要求)了,可见人家也是与时俱进的,我们就来尝试一把。