Development »

betterWeibo – 新浪微博Chrome插件

better Weibo – Chrome插件,主要功能:保持按时间排序、移除新浪微博广告、移除新浪微博无聊的元素,调整UI、将视觉和交互重点放在微博阅读上…等等
整体思路是减少微博界面对信息阅读和发布的干扰。

大爱韩寒 – 韩寒Android移动客户端

花了不少时间做了一个关于韩寒博文的网站和韩寒博文的Android客户端,功能其实很简单:整理收集了韩寒2005年开博以来的所有博文,可以随时浏览,不被新浪和谐。

关于Phonegap的一些看法

呃,phonegap今年发展不错啊,至少“跨平台”一个词就是多少人无法拒绝的一个诱惑,而且使用HTML+CSS+JS开发,可灰常有吸引力。网易轻博LOFTER就是用phonegap开发的,但是目前只有iOS版本,Android版本似乎还在开发中。
正好之前我也用phoengap做过demo,说一下我的感觉吧,只针对Android。

屏蔽电信广告

如果电信修改首次网络访问页面为自己广告页面、劫持错误域名到自己广告页面,这都是习以为常的明骚的话,那这种在正常网页中植入JS脚本然后不停弹窗的行为真是让人发指的暗骚。我对中国电信这种下三滥的、变着法子的、无耻流氓的行为真的是找不到形容词来表达我对其的愤怒。我tmd的每个月给你电信交的网费是给你干嘛的啊???!!!

Chrome插件:114adblocker,屏蔽电信广告

这个插件借鉴了Adblock Plus的源码,专门针对电信的两种流氓行为进行屏蔽:

每天的第一个网页自动跳过电信广告,到目标页面。
在错误域名的情况下,屏蔽电信的广告页面。

杯具啊,原来是.htaccess多了一行deny from all

若干日之前,我杯具的发现自己的blog突然上不去了,显示“403 Forbidden”,“Access Denied”。因为是找的免费空间,之前虽然一直挺稳定,但是在我什么都没有改的情况下突然出现无法访问的问题,我怀疑是免费空间的问题。靠,在折腾了一个多星期以后,我终于发现问题的根结原来是.htaccess最后莫名其妙的多了一行“ deny from all”,

程序员的生活是这样的… – Stupid Bug

作为一个程序员,最痛苦的事情是:调代码…
作为一个程序员,最快乐的事情是:改掉Bug成功的瞬间…

如果你恨他,那就让他一直调代码…
如果你爱他,那就让他去看着别人一直调代码…

Tomcat与Java 5的编译问题

今天应用迁移,以前写的那个系统要迁到另一个服务器上,本来以为很简单的,结果装完Tomcat以后程序居然报错,说什么“&&”是不能用于boolean、Boolean,感觉很莫名其妙,&&可是基本操作符啊,怎么会出这个错误,以前从来没遇到过。不过象这种层面问题,肯定是和编译有关。初步猜测和Tomcat版本有关,因为我以前装的什么版本已经忘了,刚装的是一个5.0.30。换了一个5.0.28(Apache上5.x的版本最老的就是这个了),覆盖安装,还是不行。后来我试了很多乱七八糟的方法,换了好几个版本,挣扎了2、3个小时,终于把这个狗屎问题解决了,得到以下提示:
不知道从什么版本开始,Tomcat不能自动编译Java 5(1.5)的JSP文件,——错误提示我javac的时候使用“-source -1.5”而不是“source -1.3”,个人认为它后台使用1.3 compatible的方式进行编译。而1.5的什么泛型、autoboxing就全部被枪毙,无法通过编译。错误从这里产生。
解决方法是修改/conf/web.xml 文件:找到名为“jsp”的servlet并修改如下内容,增加 compilerSourceVM 和 compilerTargetVM 两个设置:

<servlet>    <servlet-name>jsp</servlet-name>    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>    <init-param>        <param-name>fork</param-name>        <param-value>false</param-value>    </init-param>    <init-param>        <param-name>xpoweredBy</param-name>        <param-value>false</param-value>    </init-param>    <init-param>        <param-name>compilerSourceVM</param-name>        <param-value>1.5</param-value>    </init-param>    <init-param>        <param-name>compilerTargetVM</param-name>        <param-value>1.5</param-value>    </init-param>    <load-on-startup>3</load-on-startup></servlet>

我看网上有人说还要拷贝tools.jar以及ant-1.6.x.jar到common/libs下面,并删除common/lib/jasper-compiler-jdt.jar,不过好像5.0.30版本并没有这种问题。5.5版本以上我确定Tomcat会安装common/lib/jasper-compiler-jdt.jar文件。
Tomcat版本直接切忌不要覆盖安装,我花了很长时间发现覆盖安装以后版本的文件恨混乱,我覆盖装了5.0.28,结果Tomcat Monitor还是显示5.0.30………。
不要设置“CATALINA_HOME”环境变量,否则你可能无法使用2个Tomcat。记得很早以前是要手工设置这个变量的,但是现在千万不要设置这个环境变量。今天装JIRA的时候发现JIRA无论如何启动不起来,发现其老是去找8080端口,而我已经在server.xml文件中把它端口改到8081去了,很奇怪。后来想起来可能是“CATALINA_HOME”影响了JIRA的启动过程,去掉这个变量,啊,整个世界清净了………

解决ValueList自动排序的乱码问题

一年多没整过技术文章了吧………今天下午调整了一下原来的代码,解决了ValueList自动排序的乱码问题。
其实如果你页面上全部都用UTF-8,是不会出现ValueList自动排序的乱码的,因为ValueList默认是使用UTF-8进行编码。但是我原来写的那个应用太小,而且也不会有i18n的需求,没心情全部把汉字写到resource文件中,那样比较繁琐,——我可是又当程序员又当美工的。所以当时是全部页面都用了GBK编码。
另外先提一下另一个需要特别注意的地方:如果使用GBK编码,那么请一起把Tomcat的server.xml文件一起改掉,在“connector”element后面加一个attribute:“URIEncoding=’GBK’”,否则默认会是UTF-8。这里不把编码改掉的话,那么你所有的GET查询都可能出现乱码。
好了,现在说ValueList这里容易出现乱码的问题。ValueList一个比较方便的功能就是允许对属性进行自动排序,而这个排序是通过GET方式完成的。然后我发现我原来写的那个东西,查中文字很正常,不会有乱码,但是查了中文字以后再进行自动排序就不行了,表单上显示属性由中文字变为乱码,很明显,页面和GET编码都是GBK,那么只有可能是ValueList的自动排序的URL的编码有问题。
相信有经验的程序员不会花太多时间,问题很快定位在LinkEncoder,不过这是一个接口,默认实现是DefaultLinkEncoder,里面有一行代码:private String encoding = “UTF-8″,以及getter和setter,一看到这个地球人就都知道了,Spring配置一下“encoding”属性为“GBK”就行了。
打开ValueList配置文件,先用Spring把DefaultLinkEncoder这个bean的“encoding”属性写为“GBK”,再在什么“classicLook”、“simpleLook”、“microsoftLook”啊,反正是xxxLook这些bean下面都加一行,然后就OK了。记住在所有的xxxLook下面都加这一行,我开始就是只在“classicLook”下面加了,结果我页面上实际使用的是“simpleLook”,搞得我还以为哪里还有bug呢。

Programmming in the memory

Yesterday, some fellow asked a favor for Tomcat, and then I came to realize that there had been quite a long time since the last time I developed as a damn programmer. The last version of Tomcat I could recognized was 5.5.xx, but now the major version has already been upgraded to 6.xx.
The world that I used to be familiar with, I used to play with, simply fades its color from time to time. The technologies once were glory just perish to embrace the new ones. For me, the word “programming” gradually lost its meaning in …