2007年11月25日星期日

蹭网上

今天飞机延误,平生第一次碰到飞机延误,并且延误了很久,百般无聊,打开笔记本看书,突然想,在机场应该有无线局域网吧,打开天线之后,果然有,并且有好几个,不过信号最好的是移动的,可以连接,但是要钱才可以上啊,这是机场的移动随E行业务。还有一个是南航贵宾室的信号,比较弱,只有一格,但是上网已经很不错了。飞机延误到5点才起飞,到了宾馆房间之后,休息了一会,打开笔记本,居然又自动搜到了信号。又是开放的网络,可以用,尽管信号很弱,但是已经上网看网页没有问题了,比较爽,顺便谢谢让我可以免费上网的人。想想,如果用移动的GPRS,哪得多少钱啊,我就上个网,看个邮件,不会占用太多带宽的,况且信号比较弱了,也只能干这些~

2007年10月20日星期六

我为伊烦

办公室换了台新电脑,联想启天6800,D925双核CPU,100GSATA硬盘,Broadcom千兆网卡。把老机器上的东西移动过来之后,考虑装个Linux系统,但是不知道怎么回事,装了好多linux发行版都得不到好的效果,其实我应该不算个Linux新手了,到现在有4年的Linux使用经历了,并且有很多时候Linux还用得更多-从前做学生的时候,我为不用盗版而用Linux,后来是真的爱上了使用它,喜欢Shell,喜欢VI,喜欢配置文件简明的方式,喜欢花时间去折腾电脑。我最喜欢最熟悉的就是Gentoo。但是这次我蒙了。首先是尝试Ubuntu,Ubuntu我有从之前机器上来的Ghost备份;但是居然恢复到一半时死活不动了,尝试了n次。后来用Ubuntu的安装盘装:自己刻的7.04提示文件损坏,装不上,刻了几个盘都是这样;后来用送的ubuntu6.06免费光盘,装完之后发现启动时偶尔会出现gnome崩溃的情况,甚至还出现文件校验的错误。尔后换成kubuntu6.06,装上了,KDE间隙性的崩溃,最痛苦的是不能上网,尝试了tg3驱动还有自己编译broadcom驱动都不行,放弃;开始在网上找其他的,后来找到ArchLinux,装上之后,可以上网了,除了偶尔自启动gdm登陆gnome时有崩溃的现象外,其他都还好,致命的问题又来了,没有声音!放弃;后来准备再尝试Fedora7,可它的DVD刻坏了两张盘,后来不想再搞了,觉得没有什么意思了。为什么不尝试用Gentoo呢?日常使用,日常工作,用gentoo编译起来太辛苦了吧,太浪费时间了。并且最怕的是装完之后结果也是这样。平常用windows的时候,有时候有的程序也有无法启动,需要重启之后再试的情况,但是只有少数,比如Eclipse和迅雷,其他的问题也没有。最近很忙,所以也就把装Linux的事情放在脑后了,有时间再试。装了个Cygwin平常使用。

今天IIS莫名无法启动了,在网上查解决方案。发现windows下的好多设置以前都没有听说过,我开始在想:若不是windows做得这么傻瓜,人们是否也会像解决Linux设置问题那样乐此不疲呢?易用性是在牺牲灵活性的代价换来的,这些我在做软件开发的几年里面深有感触。而现在,我在公司用着正版的Windows xp,笔记本上也是HP OEM的windows xp,我是否还需要执着要花时间在这台机器上装一个Linux呢?cygwin已经够用了。
在windows上,我同样用着大量自由软件,这些软件让我的工作变得容易和有趣:Dia, Freemind, Eclipse, Opera, Cygwin, Netbeans...,毕竟我需要的只是可以帮助我工作的桌面系统。虽然服务器是Linux,家里的电脑是Linux,那么公司的这个呢,装不上就不装了。真怀疑是硬盘的问题,发现大的iso镜像,两次运行md5sum得到的结果居然不一样!但是在windows上又没有问题,又不能送联想修。在这体现了linux和windows兼容性的区别了~

2007年10月19日星期五

小心:JDBC的executeQuery和executeUpdate

在jdbc的specification中,executeQuery()用于返回结果集,也就是select语句的执行用这个;而executeUpdate是要返回updateCount,而不能返回结果集,否则程序就会报错。
这些我都清清楚楚,但是今天遇到一个奇怪的问题。
程序部署到服务器上和MS SQL Server使用时总是报错:executeUpdate must not return a result set,并且只有insert操作出错,而update不出错!但是在本机上和hsqldb使用时又是正常的。我试了几次之后,开到报错的行数,JtdsStatement.java中有错,我开始怀疑可能是jTds的bug,于是看jTds的源码,怎么看也没有问题,在google中搜索也没有结果。后来我怀疑是不是Hibernate的哪个地方的故障啊,于是有自己写了测试程序,不用Hibernate而之间用JDBC,首先测试了一个insert语句,没有问题;这就怪了,jtds没有问题啊。于是把问题程序中生成的SQL语句拿来试了一把,不行了!怪事!突然一想,那么在SQL Server的查询分析器中试一下呢?放到查询分析器中一查:居然返回了一条记录!哈哈,问题发现了,问题出在了触发器上:为了集成另外一个系统而不在我的程序中增加代码而做到insert触发器!同事在我操作的那个表上写的触发器用了select语句,但是没有把返回结果付给变量,所以我的程序对表进行插入操作会返回一个Result set,而Jdbc是严格定义了的,于是就出错了。改了一下触发器就好了。说实在的我对SQL Server不熟,开始也没有意识到触发器会这样工作。调这个程序调了大半天,所以这里提醒大家还有自己要小心一下。

2007年10月17日星期三

庆幸没有离开Blogger

哈哈,庆祝一下,又可以访问了!去了BlogJava短暂安了一下家,没有留下几篇文章,仍然想念Blogger。现在好了,又可以访问了,不知道可以延续到什么时候!

2007年10月15日星期一

我的右手-真男人

昨天看了军旅题材的电影《我的右手》,这部片子的主要目的不是为了反映战争场面,而是从一个侧面说明了主人公胡小军的坚强意志,从战斗英雄向生活中的英雄转变的过程。看到后面,看到胡小军激动的说“护士长说她做我的右手”,我突然感到眼眶酸酸的。附上后面的一段歌词:
---------
别人都说那是一座很巍峨的山
而我也知道那是你也会疲倦的肩
别人看到你胸前的荣誉和花环
而我数不清你背后付出的血汗
从来没有风沙让你 让你低过头
从来没有荆棘让你停留
每次把我的手握痛你才走
你的背影是握深情的眼眸
一生只对你微笑
再长的路陪你千里迢迢
虽然你不能给我一个完整的拥抱
我愿温暖你的暮暮朝朝

2007年8月24日星期五

Blogger招谁惹谁了?

这么久了blogspot.com的域名还是不能访问,觉得很奇怪.不过还是对Blogger满怀信心,因为尝试过几个blog程序,还是没有一个可以取代Blogger的地位.Opera的博客已经好几个月不能访问了,据说也是GFW的杰作.唉,算了,反正用inblogs.net还是可以访问的,了解blogger的人会看到,最坏就当我自言自语好了吧.

2007年8月6日星期一

有点想换Java IDE了,想换到Netbeans

一直用Eclipse,从学Java时开始,都好几年了.从2.0的版本开始用的,真的有感情了.
Eclipse很漂亮,3.0之后的版本比2.0漂亮;Eclipse的增量编译很爽.Eclipse的实时语言提示和纠错很爽,总之,用Eclipse编写Java代码是一种享受.

后来实际应用Java时,主要是来做WEB项目,最早的时候使用Tomcat Plugin和lomboz插件来做.在2004年的时候,我在CSDN发了一篇关于使用tomcat plug集成和断点调试的文章到现在时而都有人来邮件询问这方面得问题,我都会回复他们,现在我都不用这些了,用Eclipse的WTP或者直接用JbossIDE绑定的Eclipse,它可以免去许多插件集成的麻烦.然而这却有一些麻烦了.JbossIDE2.0绑定得Eclipse3.2在Linux下很不稳定,问题集中体现在启动Tomcat时总会是不是Crash.这也就是为什么现在手中项目的WEB部分在Windows下开发的原因.我不能使用Linux,总觉得心里不爽.

项目的下一期工程需要开发一个客户端,以弥补WEB页面客户端的一些不足.这面临这两种选择,找一个合适的技术和工具构建Java版本的GUI程序,考虑的当然是SWT和Swing;另外一种方法,是用DotNet来做图形界面程序,那么也就是底层通信协议的程序用C#重新实现,或者用Web-service方式让已有的Java代码和新的客户端程序一起工作.

我找到了Netbeans,先不说别的,它的Swing界面设计器很棒,这是我急切需要的功能.别给我提Eclipse,它的VE简直慢得像蜗牛.但是最初我感到不爽得是它的代码编辑器的字体不好看.我把代码字体设置成Counter new,英文的代码好看了,但是中文就不能显示了.还有在Note book上,菜单的字体偏小,都缩成一团了.后来在网上查了Netbean,才发现它现在已经引起了广泛关注,特别是即将发布的Netbeans6,关于它和Eclipse的比较的文章也很多.其实早在2,3年前我就知道Netbeans,那个时候好像是4.0版本吧,我推荐其他人用它,因为它有中文版本,并且可以绑定JDK,对于某些新手来说,免去了设置等等步骤.我自己觉得它集成的服务器的功能不错,而我自己却没有真正的用过它.一是它看起来没有Eclipse漂亮,特别是代码编辑器.然而这一切似乎都成了过去时了.新的Netbeans,比如现在的最新稳定版本5.5.1,通过设置之后,可以很漂亮:在Windows下把所有语言的缺省字体设置为DialogInput,那么英文字体是等宽的Courier New字体,而中文会用新宋体,这就和Eclipse中的表现一致了.可以调整启动参数使得菜单的字体大起来,比如调整为12pt,那么在我的Note book上显示就相当漂亮了,自然在办公室工作机器的Linux上面使用也会没有问题.有时间试试看吧,如果用起来顺手,就决定转用Netbeans了.并且期待着Netbeans6的稳定版本.据说它的代码编辑器可以赶超Eclipse!不过还能有一点得到满足就完美了,FreeMarker-IDE的NB插件!网上找过了没有,不知道什么时候能有,或者自己来研究一下,尝试能否开发.

2007年8月3日星期五

FreeMarker2.3.7开始增加的一个很爽的特性

Webwork自带的FreeMarker是2.3.4版本。Webwork中模版的渲染是基于FreeMarker。今天看Freemarker最新版本2.3.10的文档,发现一个很很爽的特性,'!'操作符。在2.3.7之前的版本,如果你要为java中某个为null的值设置默认值,或者在网页上显示空白,你得这么做。
<#if product.color?exists>${product.color}</#if>
<#if product.color?exists>${product.color}<#else>red</#if>
而在新的FreeMarker中对应可以这么写:
${product.color!},${product.color!'red')
还有一个更爽的是这么写:
${(product.color)!'red'}取代<#if product?exists && product.color?exists>${product.color}<#else>red</#if>
 
有这样的操作符之后,大大简化了模版的编写,我再也不害怕可能为null值的判断了,反正加个'!'就是。不过要记住,要把Freemarker升级到2.3.7之后的版本哦,否则这个操作符是不被支持的。Freemarker真的是个好东西,方便应用,并且易于扩展,我就用Freemarker的API,编写了一个短信模版引擎用在系统当中。源程序如下:
/*
 * This file is part of the Frequent Passenger Service System
 * which was created by China Southern Airlines Hunan Branch
 * All Rights Reserved, Any organization or individual <b>must not</b>
 * modify or re-distribute all of or part of the software at any form without permission.
 *
 * IT Department of Hunan Branch, China Southern Airlines, Ltd.
 *
 * Author:Yi Can yican@cs-air.com alva.yi@gmail.com
 * 
 * Version: $Id: TemplateEngine.java 197 2007-06-01 09:40:14Z vulcan $
 */
package com.csair.hunan.pss.web.sms;
 
import java.io.StringReader;
import java.io.StringWriter;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
import freemarker.template.Configuration;
import freemarker.template.Template;
 
/**
 * render the template with filling the variables
 * based on the syntax of Freemarker
 * @author Alva alva.yi@gmail.com yican@cs-air.com
 *
 */
public class TemplateEngine {
 private static Configuration cfg = new Configuration();
 private static Log log = LogFactory.getLog(TemplateEngine.class);
 public static String render(Object varMap, SmsTemplate t) {
  //builder a reader and a writer for the FreeMarker template engine
  StringReader rd = new StringReader(t.getBody());
  StringWriter wt = new StringWriter();
  try {
   Template ft = new Template(t.getName(), rd, cfg);
   ft.process(varMap, wt);
  } catch (Exception e) {
   log.error("Cann't render Template for:" + t.getName());
   e.printStackTrace();
  }
  return wt.getBuffer().toString();
 }
}

2007年7月30日星期一

解决Webwork,tomcat5.x一起使用时GET方法乱码问题

项目中使用的Framework是Webwork,服务器用的是tomcat5.5.只要统一文件本身编码,charset编码还有webwork.properties中webwork.i18n.encoding=UTF-8的设置,通过表单POST方法提交的中文数据都没有问题,另外项目中间有一些请求是通过Ajax采用Get方法提交的。并且之前由于数据中中文输入项不多,那么我对于提交的数据都用new String(cname.getBytes("ISO-8859-1"), "UTF-8")进行转码,也可以使用。随着要转编码的项越来越多,开始对这种转码的方式感到厌烦,于是想到了从Webwork里面想办法解决。
在FilterDispather.java里找到了这样的一句:
// prepare the request no matter what - this ensures that the proper character encoding
// is used before invoking the mapper (see WW-9127)
DispatcherUtils du = DispatcherUtils.getInstance();
看到DispatcherUtils.java果然Webwork采用的方法和以前解决中文问题用Filter的方式其实一样,无非是先设置request的编码:
public void prepare(HttpServletRequest request, HttpServletResponse response) {
String encoding = null;
if (Configuration.isSet(WebWorkConstants.WEBWORK_I18N_ENCODING)) {
encoding = Configuration.getString(WebWorkConstants.WEBWORK_I18N_ENCODING);
}

Locale locale = null;
if (Configuration.isSet(WebWorkConstants.WEBWORK_LOCALE)) {
locale = LocalizedTextUtil.localeFromString(Configuration.getString(WebWorkConstants.WEBWORK_LOCALE), request.getLocale());
}

if (encoding != null) {
try {
request.setCharacterEncoding(encoding);
} catch (Exception e) {
LOG.error("Error setting character encoding to '" + encoding + "' - ignoring.", e);
}
}

if (locale != null) {
response.setLocale(locale);
}

if (paramsWorkaroundEnabled) {
request.getParameter("foo"); // simply read any parameter (existing or not) to "prime" the request
}
}
原来猜想是webwork会对参数做一些包装和处理,但是只是直接取得parameterMap:
public Map createContextMap(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping, ServletContext context) {
// request map wrapping the http request objects
Map requestMap = new RequestMap(request);

// parameters map wrapping the http paraneters.
Map params = null;
if (mapping != null) {
params = mapping.getParams();
}
Map requestParams = new HashMap(request.getParameterMap());
if (params != null) {
params.putAll(requestParams);
} else {
params = requestParams;
}

// session map wrapping the http session
Map session = new SessionMap(request);

// application map wrapping the ServletContext
Map application = new ApplicationMap(context);

return createContextMap(requestMap, params, session, application, request, response, context);
}
由此可以猜想Get的乱码并不是webwork的问题,很可能与tomcat有关。再google了一下发现了tomcat5对get和post方法分开处理,并且request.setCharacterEncoding对get方法没有作用,这需要设置server.xml可以从根本上解决QueryString中文乱码的问题了。具体方法是对Connector元素设置URIEncoding或者useBodyEncodingForURI=true。这样代码中的那些丑陋的转编码设置就可以去掉了。

2007年7月5日星期四

舍得与舍不得

为了舍不得,又必须舍得更多,很有哲理的问题不是吗?
记得有一篇网文叫做<人生的十个哲理故事>,其中第一个就是一家餐馆,东西不好吃,还有老鼠蟑螂,但就是离家近,你会总是去吗?很多人肯定会说,傻子,这肯定不会去,然而很多人自己面对时却迷茫了,我也一样.我迷茫的原因是这家餐馆曾经很好吃,很干净,而我似乎更愿意活在回忆中,也已经分不清过去还是现在是假象,也分不清是现在的不好吃了还是我自己口味变了,还是这是个社会潮流:换个餐馆也是白搭.

2007年6月24日星期日

An experience of Mac os x86

I hava installed the Jas Mac os x86 10.4.8 with ppf succefully in my Lenevo M4800 Desktop. The hardware list is as follow:
-Intel P4(Ht) 3.0 GHz
-Nvidia Fx 5200
-Realteak 8139
-AC 97, integrated sound card

Jas 10.4.8 is built with a Titian NV40 display card driver, but FX5200 is not belong to the NV40 serials, so when install, the NV40 driven should be excluded. The display card driver should be installed after enter the system. The Titian and Natit auto install package would be found in the http://wiki.osx86project.org/. The network and sound card work perfectly with the Mac OS x86 10.4.8. For the sound card, may be line connecting have to be changed to the line-out(line-in) socket, from the green one to the blue one. I have Fun Input Toy installed instead of the system default Chinese Input Method, it's really good. For the PS/2 keyboard, maybe you have to disable the USB keyboard support in the BIOS setting. And then, I got a real Mac OS!

2007年5月26日星期六

爱上傻丫头

今天睡到了10点才起床,最近还是一样的忙,项目、教学没有一样清闲的,能好好的睡个懒觉,真是奢侈的享受。睁开眼睛,看看熟悉而不一样的家:丫头走了,家里被丫头收拾得整整齐齐。昨天晚上送她坐车回去,只想紧紧的抱着不放开,发现自己突然好害怕分别。再把丫头写在我日记本上的文字读了一遍,不禁微笑:傻丫头,你不知道吗?你对我的好独一无二,这些便已足够,我看中的本来就是最本质的东西,我如何还会要求更多?

2007年5月8日星期二

新系统新生活

利用5.1假期,拥有奢侈的时间,升级了一把系统,ubuntu到7.04,音乐播放器改用audacious,发现现在除了gnome-dock之外又多了两个实用的dock(gdesklet不提了,和beryl配合不好)。avant-windows-navigator和kiba-dock,两个的效果都不错,但是个人更喜欢avant-windows-navigator,两个都挺不错的,各有千秋。个人更喜欢avant-windows-navigator,它比较简单,比如launcher的添加只要拖进图标和菜单就可以了。而kiba-dock,则把符号链接放到它的launcher文件夹中。kiba-dock也比较华丽,所以它似乎比avant-window-navigator耗资源。本来想利用5.1的时间装一个x86的MAC OS X,但是电炉好慢,想去淘宝买盘,最终还是没有了。也许自己没有时间去用它,并且用个PC机装这Mac OS总觉得怪怪的,而且是破解的。冲动的想装Mac也会为自己想买苹果电脑提取体验一把。现在用正版的XP和Ubuntu,ubuntu搞了个类苹果的Dock,不是非要模仿苹果,喜欢那样Dock的操作方式和毛玻璃般的效果。贴两张图。

2007年4月28日星期六

tomcat5.0.x的bug?

发现一个比较奇怪的问题,5.0.x版本的tomcat不能正确的处理baseUrl的问题,但是4.x系列和5.5.x的系列没有这个问题。比如网页里写了base url,其它地方写链接的时候,相对于该base URL并不起作用。把某个系统升级装到升级之后的Linux服务器上发现这个问题。在网上查不到相关的信息,猜可能是一个bug吧。

2007年4月25日星期三

vs-ftp和samba配合使用要注意的问题

公司的服务器装的是ubuntu-6.06,编码为en_US.UTF-8,为什么要用默认的英文编码呢?因为服务器都没有装图形界面,坐在监控设备前通过终端直接操作时当然不能显示中文了,如果设成通常的zh_CN.UTF-8,那么命令提示,报错都会不能显示;而通过SSH管理在Linux的终端连过去肯定没有问题,但是putty过去有麻烦,据说有解决办法,但是不想浪费时间,英文用着挺好。
有一台机器提供了文件服务器的功能,以前是提供ftp下载,但是后来发现有问题,如果想在线安装个软件啥的,ftp没有windows的文件共享好用,所以就需要装上samba了。默认samba的配置,如果服务器端的中文是UTF-8的编码,那么通过windows访问正确显示中文是不成问题的。但是如果这些中文的文件是通过ftp上传的,那么samba的配置要改一下。下面是相关charset的配置部分解释:
As of Samba-3, Samba can (and will) talk Unicode over the wire. Internally, Samba knows of three kinds of character sets:
unix charset

This is the charset used internally by your operating system. The default is UTF-8, which is fine for most systems and covers all characters in all languages. The default in previous Samba releases was to save filenames in the encoding of the clients for example, CP850 for Western European countries.

display charset

This is the charset Samba uses to print messages on your screen. It should generally be the same as the unix charset.

dos charset

This is the charset Samba uses when communicating with DOS and Windows 9x/Me clients. It will talk Unicode to all newer clients. The default depends on the charsets you have installed on your system. Run testparm -v | grep "dos charset" to see what the default is on your system.

既然服务器上/home/ftp/pub中的中文文件都是通过ftp从windows上传上去的,那么这些字符它实际上都是GB2312的,所以根据需要设置这三项:
display charset = gb2312
dos charset = cp936
unix charset = gb2312 #由服务器上文件名的实际编码定
这样的配置在服务器是看不到中文的,但是我这边不在乎,反正没有图形界面,不用看中文,要管理通过ftp走就好了。vs-ftpd如果不打补丁,好像不能解决中文上传的问题,比如由windows机器上传到linux自动转成服务器上的编码啥的,所以这样了。

2007年4月22日星期日

我的毕业设计论文

今天上午有位仁兄在我的Opera博客还有此博客上共留了10多条相同内容的评论,问关于Linux AVR之类的问题。说实话,我很不喜欢那样的方式,简直是在spam我的博客。我也是这么做毕业设计过来的,如果不多Google尝试自己去解决问题,一味的想依靠别人解决问题,是我所不喜欢的。我现在把我的毕业设计论文发在这,希望对各位研究Linux 环境下开发AVR的同学们有用吧,本来是想把其中相关的内容整理出来在加上一些AVR的开发内容格外写一本关于在Linux下开发AVR的指南,但是苦于没有时间。现在已经过了一年,学校的学位论文发出来,应该也不违反保密协定了。至于那位仁兄,放过我的博客,blogger上删除评论巨难,希望对你有用,其他的我爱莫能助,至于那些什么“用一辈子的时间来感谢”我啥的,承受不起。
下载:基于光电原理的五轮测速方法的研究
论文中主要包含下列内容:
  1. 光电鼠标原理(第二章)
  2. AVR单片机及其在Linux下的开发(第三章)
  3. PS/2协议及其AVR单片机上的C语言实现(第四章)

2007年4月19日星期四

BlogSpot终于又能访问了

很长时间用xxx.blogspot.com访问不了这个blog,但是今天偶然看了一下,发现又能打开了,照道理说Google应该是个很大的靠山才对,但是还是让我有点提心吊胆,所以才用MSN Live Space做这个空间的备份。不过还好,即使是不能访问的时候,还是可以通过邮件发东西上去。真的很喜欢Blogger,能否让我安心一点?昨天在考虑以后要不要把一些技术文章发到CSDN上去,如果写的东西不能对别人有用,以无所谓发出去的价值了,现在blogspot又能访问了,看来暂时不用了。

2007年4月10日星期二

有谁是你?

    我把泪水和欢笑留给你;我把梦和追求留给你;我把早晨和黄昏留给你;我把我的一半留给你。我知道这个世界上必有你的存在;必有你成为我的一半成为我的太阳;必有你容纳我并拥抱我的一切……虽然有时候我很孤独很寂寞,甚至忍不住想尽快寻觅你得到你,想向你倾吐我的思恋,想向你敞开我的情怀,想向你挥霍我的欢颜,但为了来日如期的温馨,我必须凝聚我的渴望,必须凝聚我的向往,必须凝聚我的热情。
  我知道你一定在的,一定在前方某个路口或者某个站台上等我。我知道你最终会出其不意地走过来,出其不意地和我相识并且相知。
  就这样,我很孤独、很快乐地走在这条路上,我的目光总是坚定不移总是向着前方。而且全然不顾荆榛如林、险壑遍地。
  我时常检查自己的脚步是否坚定,时常希望跨度大些再大些。我老是想像即将与你相会的日子,老是回味你。我甚至已经感觉到你的存在,感受到你的呼吸。我已经看到你在前面不远的地方正摇曳着一束鲜花,向我频频致意,频频呼唤……所有的阳光铺满这条道路,有一种充满魅力的幸福在牵引着我,与你相随我信心勃勃、步伐坚韧。
  就这么走向你,我满是尘土、满是疲惫。
  就这么奔向你,我泪流满面、笑容满面。
  纵然不知――现在有你是谁?究竟有谁是你?!
--------
4月1号到10号飞飞们去学CRM了,所以我也不用上课。难得像今天这样享受自己的周末。在网上逛着,去看了看笑笑姐的博客。在圈子里我很欣赏的一个女子,美丽,睿智,有思想,最重要的是从字里行间我所看到如同孩子一般的纯真,这鼓舞着我坚持自己的生活方式。工作忙,很久没有访问过了。
4月2号和女友分手,留给我的是遗憾和沉默。这种感觉莫可名状。如果不是当初那么电影情节般的相遇;如果不是当初从她眼里看到的孩子般的纯真,我想我都不会让这一段感情开始,虽然也老大不小了,但是婚姻还没有放入自己的计划之中。然而她的出现却彻底的打乱了我的计划。我也义无反顾的追求我认为对的东西,我是个相信缘分的人,如果我不把握,我想我也许我以后会后悔的。我相信她就是那个我要找的人,所以当分手来临时,我没有那么容易当作什么也没有发生过。
    分手的原因从来都没有在我的想象中出现过:我大学刚毕业,虽然说工作不错,然而毕竟是没有什么基础。理解父辈们的心情,都希望子女嫁得好或者娶得好,不过如此现实的要求还真的让我措手不及。原以为她会坚信我的能力,相信我一直会努力,那些东西很快会有的,很快会娶她的,可是她让我失望。
    在MSN Space上看到"清泉石上流"的一篇文章,写她和她丈夫从大学开始的感情,那样的爱情,是我懂得感情开始一直以来的期盼!所以我拒绝了多次别人介绍的相亲,一心想追求我认为完美的爱情。可什么时候才能遇到对的人呢?
    昨天晚上跟小小聊了很多,不是聊我的感情问题,而是工作,那让我感到很充实,没有时间去胡思乱想。今天看笑笑姐的博客,也让我鼓舞,自我一点,做好自己不也是一种幸福吗?等吧,相信那个纯真,睿智,美丽的女子在"前方不远的地方"。

2007年4月7日星期六

同步启用MSN Space和Blogger博客

yican.blogspot.com这个域名又访问不了了,挺烦的,所以准备启用MSN Space用做备份,利用两个博客的支持邮件发布的功能,达到两个博客自动同步的效果。

2007年4月3日星期二

意外开始又意外结束

风停了云知道
爱走了心自然明了
他来时躲不掉
他走的静悄悄

你不在我预料
扰乱我平静的步调
怕爱了找苦恼
怕不爱睡不着

她的出现是意料之外,然而我却坚定的为这段感情义无反顾;虽然分手似乎是意料之中,然而却发现难于接受突然的改变。记住她的笑,记住她曾经纯真的双眸,记住彼此美好的感觉,潇洒的为这一段感情划上句号。

2007年3月21日星期三

原谅别人的无知

今天随着搜索引擎的连接,不经意的走到了自己最开始的一个blog文章,那个blog我最近的更新是在一年多之前。而那篇文章更是古老,原本是自言自语并且自嘲的一篇blog,居然变成了某个人攻击的弱点。即便是我自己没有学好知识又如何?既没有骄傲过,又没有误导别人,何以成为攻击的地方?那个人最新的评论居然是2007年3月8日,用一个错误的英语句子告诉我让我提高英语水平。呵呵。想起了大学时代的一些事情。我原来想用做为我的团队辨白的文章在学校BBS里引起了轩然大波。不知道什么时候,我讨厌了争吵,喜欢了平静。如果没有这样的环境,那我就自言自语吧,希望我留下的某些东西对新来者有用。喜欢平静,这也是我远离国内技术社区的一个重要原因。把那些文章和评论全部清空了,我不是名人,钻牛角尖找我也没有价值。

2007年3月20日星期二

执子之手,与子偕老

这应该算是我们的第一次约会,我牵着她走在步行街上。谈到了彼此的梦想,我不经意地说其实我的根还没有落下,如果可以更好,如果没有人可以牵挂,那么我可能会选择离开这个城市,调往总部也许是第一个机会。"那我就跟着你去,无论到哪里,凭专业在哪也能养活自己",她抬起头看着我,坚定地说。那一刻,从她那明亮地眸子里,我看到了当初如我学生时代一样的纯真。把她的手攥得更紧了。其实有一句话一直让我向往:"执子之手,与子偕老"。我知道,从此之后,我的生命中多了一个人让我挂念。

2007年3月11日星期日

我想成为领导

老实讲,一直以来,我对于权力这个东西从来都不向往,甚至轻视(是很久以前,看起来很幼稚吧),在大学我对于社团干部,特别是类似于学生会这种非兴趣,学术,研究型社团都很抵触,一群无聊之人,跟着几个无聊之人,作些无聊之事。也许在有些人看来,在大学里面能在社团里面混个一官半职是对自己将来走上领导岗位的锻炼吧(冠冕堂皇的理由),所以有了那些看似正式的代表大会,选举,还有候选人之间貌似公正的角逐。

所以说,大学里面我几乎是个边缘人,与所谓的主流完全脱开的人,试验室,教室,工作室,图书馆,运动场,学习锻炼,简简单单。按我的想法,所谓的那些可以锻炼能力的活动,以致于后来上纲上线的课外活动加分是为那些从小心理有问题的,不善于交际的人准备的,有自己想法的人根本不用管那些。想来好笑,那个所谓的大学生素质拓展认证后来造成了一个什么样的状况呢,有些人为了多得分,疯狂的去认证,拿着胸卡到各个社团活动点现一下。以致于,某些学生社团都用素质拓展加分一项来吸引参加的学生。对于我而言,根本想不通,花如此多的时间在与自己无关的Topic之上,为什么不找到自己的追求?科研,兴趣,或者就只是学习而已。而某些人为自己加官晋爵的体制,所谓的仿照清华建立的体制,不是在害人是在干什么?至少,很多学生们为获得素质拓展加分连诚信都放弃!

讲得有点远了,虽然从学校毕业不到一年,但是很多学生时代的事情已经模糊了,我只记得我是我很"愤青",但是没有那么极端,守着自己的清规戒律过日子。"穷则独善其身,达则兼济天下",这是我很多年的座右铭。然而大多数的时间,我守在了前半句上面,最终能"达"吗,再说吧,为天下人而达,想来确实是一件很伟大的事情,所以我愿意为之付出。

记得大概是大三的时候,上计算机控制,张老师有一节课讲到,我们自动化出身的人,如果要当官,那么肯定都是将才。是啊,将才,我现在想成为的人才。当领导,对我最大的吸引力在于,"可以用一个团队的力量来达到一个目标"。一个人,太势单力薄。管人,应该也是一门科学,但是似乎是神乎其神的东西,做决断不能通过波特图来分析,我不知道我能否真正做好,但是就是想,很多很多的原因让我很想。

那天跟小小谈我的疑惑,她说当她那会参加工作的时候,她也想着能做出一番什么大事业,但是大多数人注定了选择平凡甚至是平庸的过这一生,过两年就好了,适应了就好了,国企就是这个样子。但是如果真是那么去适应,我想我也注定了平庸,然而我还年轻,如果这样那么我这一辈子都毁了。

2007年3月4日星期日

A Handsome wife

小小跟我在Skype上说她的学生居然有人讲出Handsome wife这样的句子来,快要把她逼疯了,我乐了,我说搭配也没有错,如果他们的Wife都像你一样就可以那么形容了,并且跟她解释了一通,handsome也可以用来形容女人,如果这个女人比较健壮就可以,而对于形容‘哪里都大的小小’,自然合适不过了。她威胁我要挂掉Skype。她说她叫那些学生都叫“大叔”,呵呵,她总是让人乐呵。


认识小小是在碧花园培训的最后一个星期,开始熟识的时候,却要分开了,相见恨晚。小小是乘务员,所以比较高,比我只矮一点,大概有170的样子。很爽快的一个女孩子,很“刷拉”,武汉话里面就是很麻利的意思。我打心眼里不喜欢说话做事拖泥带水的人。她还会弹钢琴,10级,这点很让我看不出来,怎么也不会想到such a big girl,会弹钢琴,怎么看也像运动型的 :)。记得那天早晨从客房里面出来去吃早餐的时候,不知道由于什么事情说到了这个,着实让我对走在旁边的这个big big girl 刮目相看。


上次去广州学RT的时候,碰到那边的教员,说起小小,他们介绍说小小叫学生们大叔的事情,原来还真有这事,我忍俊不禁。

2007年3月1日星期四

理解Hibernate SessionFactory.getCurrentSession

刚开始用Hibernate,之前的有些理解是错误的,今天又纠正一个;对于getCurrentSession虽然看了文档
Obtains the current session. The definition of what exactly "current" means controlled by the CurrentSessionContext impl configured for use
但是还是以为向操作普通session一样的去操作,结果造成程序运行出错。
通过getCurrentSession返回的session是commit之后自动关闭的,不能再调用session.close方法。如下面的代码是错误的:
 /* (non-Javadoc)
  * @see com.csair.hunan.pss.web.dao.UserManage#saveUser(com.csair.hunan.pss.web.dao.User)
  */
 public boolean saveUser(User user) {
  Session session = adapter.getSessionFactory().getCurrentSession();
  Transaction tx = null;
  try {
   tx = session.beginTransaction();
   session.saveOrUpdate(user);
   tx.commit();
   return true;
  } catch (HibernateException he) {
   if(tx != null) {
    tx.rollback();
   }
   return false;
  } finally {
   session.close(); 
  }
 }
解决的方法是把finally块的代码去掉,要么获取session的方式改为openSession();当然前者的优势明显。
仔细看了hibernate的参考文档:
The "current session" refers to a Hibernate Session bound by Hibernate behind the scenes, to the transaction scope. A Session is opened when getCurrentSession() is called for the first time and closed when the transaction ends. It is also flushed automatically before the transaction commits. You can call getCurrentSession() as often and anywhere you want as long as the transaction runs. To enable this strategy in your Hibernate configuration:
见:http://www.hibernate.org/42.html
我仍不确定我上面的代码写得是否正确,但是暂时来看执行是不成问题的,说是currentSession绑定到Java Thread,我单线程的程序呢,应该没有问题,参考文档中对于getCurrentSession的用法是这样的:
try {
    factory.getCurrentSession().beginTransaction();

    // Do some work
    factory.getCurrentSession().load(...);
    factory.getCurrentSession().persist(...);

    factory.getCurrentSession().getTransaction().commit();
}
catch (RuntimeException e) {
    factory.getCurrentSession().getTransaction().rollback();
    throw e; // or display error message
}
它在每一行代码都用getCurrentSession取得当前的session, 而我的代码中是在最开始取得这个session,现在疑惑的是如果是多线程的程序,那么通过我那样获得的currentSession是否还有效?

2007年2月25日星期日

怀念在碧花园的日子

按计划是明天要开课了,初五就回来开始备课。怎么说呢,毕竟是第一次上讲台,尽管当初培训的时候有Teaching Practice,然而面对真正的学生,而不是我们自己所熟悉的同学们,课程是否会真的那样的顺利:Set Context->Elicit->Target Lanuage->Practice(CP, LCP, FP),并且全英文,西式的教学环境是否真的会被大家接受,我现在仍然有些怀疑。然而,这样的教育理论是比我们传统的教学方式更加合适于语言教学,特别是以听说交流为侧重点的语言学习。

最近好忙,才备了刚够一周讲的内容;而手里的软件项目也压得紧,还有另外的一些琐事占用时间,老觉得时间不够用。今天看了看以前的照片,看到某些时会对着屏幕傻笑;开始怀念在碧花园和同学们一起接受培训的日子,尽管也忙,但是遇到了如此多的朋友们!现在他们是不是也在忙着呢,本职工作+兼职教员。

Posted by Picasa

2007年2月11日星期日

随便转了转,居然中招了

最近在Windows下工作,今天用上了Windows Live Message 8.1,跟着弹出的广告页上了MSN Space(当然用的是IE),好久没有上MSN Space了,突然想看看,以前有几个同学在上面开了空间。点开一篇热门的帖子,啊,不得了,下面得评论全部是广告,并且是色情广告信息。看到此,我非常庆幸自己没有在这里见开博客,否则不被烦死才怪。除此之外,我还不喜欢国内很多博客社区的气氛,很多人其实是为增加点击量而"博",居然还有"收费抢沙发",搞笑!还有很多所谓的名博,实际上都没有什么内容!
有一个热门的帖子讲的是关于现在据说很热门的一个记录片视频,跟着其中的链接进去,kao,发现诺顿弹出一个窗口,不动了,我感到不妙,连忙查看进程,发行多了好多jts.exe,xxs.exe的进程。赶快搜了下信息,看看中了什么了,然后启动到安全模式下处理掉。天了,其实用了这么多年电脑,中病毒的次数只有几次,除了大多数时候用的是linux之外,在windows下不怎么乱上网站,所以也不知道如何中招是啥滋味:)。我之前对于IE,windows所传言的不安全性没有概念。然而今天,几乎什么都不干,开个网页居然也能让病毒木马进来?呵,这次有概念了。看来以后还是保持好习惯吧,别用IE乱上网!

2007年2月10日星期六

对update-grub的理解

硬盘被重新Fdisk过,但是记得分隔分区的扇区位置,重新建立分区表并不会影响系统的运行,也就是说分区还是跟以前一样的。
但是这个过程/dev/hda的序号号变了。比如以前linux根分区是/dev/hda8, 现在变成了/dev/hda6, 尽管在物理硬盘中是同一块区域没有变。
但是之后却发现安装自己编译的内核包之后,自动配置的menu.lst还是把启动项中的root设为了/dev/hda8,而不是/dev/hda6,要手动改到/dev/hda6才是
正确的,才可以启动。用dpkg-reconfigure效果也一样。由于南方电信的网络访问gentoo源的问题,所以从gentoo转来使用ubuntu,对debian(ubuntu)
的这种自动配置的机制不了解,有什么办法能让自动设置正确吗?是否这个reconfigure有个模板一样的东西存在,在第一次安装好系统之后,这个东西就定
了?上午google了很久找不到,下午继续研究这一问题,得到了答案。
 
原来之前想错了方向,原来总想可能deb包中有一个脚本会根据某个设置的情况来做此设置,但是实际的情况是这个postinst调用的就是update-grub,
#/etc/kernel-img.conf
do_symlinks = yes
relative_links = yes
do_bootloader = no
do_bootfloppy = no
do_initrd = yes
link_in_boot = no
postinst_hook = /sbin/update-grub #调用update-grub
postrm_hook = /sbin/update-grub
 
也就是说直接运行update-grub就可以自动的更新menu.lst设置。
而update-grub是根据什么来自动生成menu.lst呢?
答案很简单,但是容易让人忽略,实际上就是/boot/menu.lst,当menu.lst文件不存在时,update-grub将会生成一个新的menu.lst,但是可能不正确。
有则直接根据之前的menu.lst模板生成新的实际的menu.lst,老的进行备份。
 
所以要解决我提出来的情况,就是修改menu.lst模板就可以了,然后重新运行update-grub即可。修改menu.lst如下:
59 ## default kernel options
60 ## default kernel options for automagic boot options
61 ## If you want special options for specific kernels use kopt_x_y_z
62 ## where x.y.z is kernel version. Minor versions can be omitted.
63 ## e.g. kopt=root=/dev/hda1 ro
64 ## kopt_2_6_8=root=/dev/hdc1 ro
65 ## kopt_2_6_8_2_686=root=/dev/hdc2 ro
66 # kopt=root=UUID=a764e67f-e242-4d6e-b874-3f5ffcf30bfc ro
67 # kopt_2_6=root=/dev/hda6 ro
68
69 ## default grub root device
70 ## e.g. groot=(hd0,0)
71 # groot=(hd0,5)
改变以单个#的行中间的值即可,比如我改为了 kopt_2_6=root=/dev/hda6, groot=(hd0,5)
引申开去,如果要给内核加其他的启动选项,也可以加到这个模板当中,那么下次安装内核时,那些选项就不会被去掉了,比如vga=792等等内核参数。具体
的,请建menu.lst中间的注释

2007年2月7日星期三

Ubuntu终于认出两个CPU了

今天又开始在Linux下工作了,可以我的ubuntu一直是跑在386的模式下,让我很不舒服;但是没有办法,如果用686(generic)的内核,键盘和鼠标会死掉,一直也不知道什么原因。今天决定再来研究一下这个问题。先找了ubuntu下怎么编译内核的方法,看样子也只有重新编译内核才有得救,不过以前没有在ubuntu下做过。gentoo下简单阿,一个emerge就可以了,从网上找到了相关的资料,照着做了一下,发现debian(ubuntu)的这种make-kpkg的机制其实也挺好的。很简单。不过要注意的是,从软件库里面用apt-get等直接下来的源代码,往往不能编译成功,最好是下载kernel.org的内核,上一次编译内核不成功,也是因为用了软件库中间的内核源码。如果是从pool中通过浏览器等下载的该发行版支持的内核版本,那么直接用make-dpkg编译也是不行的,源码术当中的debian/control要做修改,偷懒的办法是直接删掉debian那个文件夹,让其在make-dpkg时自动生成,这样不会有多于信息,不会提示说control文件当中有重复的条目。

两条命令就可以完成内核的编译:
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image
kernel_headers
之后完成内核的安装,用dpkg -i。

最后一个问题是nvidia的驱动,我安装好内核之后只能用xorg的nv驱动,效果不让人满意。不过能够用P4 CPU和SMP的选项编译成功,并且得到/proc/cpuinfo中有两个CPU的信息已经让我狂喜了。我一直担心这个问题。然而,看到一篇文章上直接用从nvidia网站上下来的驱动安装的方法,让我从执着于怎么从ubuntu的代码库中搞出能用的nvidia驱动的想法解脱了出来,我原来甚至想再编译一个和6.10默认内核版本相同的内核出来,以使用它的restricted-modules。说实话,从nvidia官方网站上下驱动来直接安装我之前都不知道!被gentoo宠坏了:).不过这个方法确实很简单,并且奏效。

至此,所有问题解决:Ubuntu 6.10用支持P4 smp的内核,用nvidia驱动,再没有
键盘鼠标不响应的情况了。

2007年1月28日星期日

Blogger的Mail-To-Blog测试

这样的功能就可以在不开WEB界面的基础上发布blog出去,这样是否和以前Gmail(gallina)来做的博客有异曲同工之妙?并且在gmail里面我还可以加上标签,把所有是博客形式发布的文章都应用过滤器贴上标签,便于归类,并且在blogger中可以指定把帖子转发到另外一个邮箱帐户中间去。这样就不担心某天不能访问丢失自己的博客文章了,这一点真是让我激动。以后好好写博客吧,已经很久没有动笔了,再不动都要秀豆了。

2007年1月27日星期六

在寂寞中追求完美

前些天整理办公桌的时候,发现一本以前坐这个桌子的同事留下来的一本书,是席慕容的《在寂寞中学会成长》,睡觉之前翻了翻,我觉得不错,让我开始觉得我一直以来的坚持是对的,并且还可以更好。序言中间有一段我很喜欢,是这样写的:

心理分析大师佛洛姆在他的畅销作“爱的艺术”中曾经申言,衡量一个人是否有爱的能力,端看他是否能够孤独自处而定。换句话说,能够抛开寂寞,安于孤独一人的处境,则反映了内在性格的健全和独立自主,这样的人才有能力去爱人,去和另一个个体分享生命中的悲欢和喜悦。

确实我们看到一般人的认定的爱的能力,指的都是如何吸引对方的魅力,和如何感动对方的耐力。然而吸引、感动后相处在一起,原初的新鲜感、魅力、耐力渐次消失,引领两个人去寻寻觅觅,相互探求的寂寞又冒了出来,于是爱的失落、爱的背叛。和相互的怨怒争执就浮现了。根植于消解寂寞、抚慰孤独的爱情,看似炽热红艳,但是如火柴棒的光焰,就如此灰飞烟灭,消逝无踪。


修为,我喜欢用这个词来鼓励自己,在生活和工作上追求完美被我称之为“修行”,所以我选择了现在这样的生活,也许经历过,也明白了一些事情,所以自己觉得也平常。

寻寻觅觅到这里

Opera的blog最近好慢,工作忙,网速慢就更没有心情发布新的post了,所以博客已经很久没有更新了。很想在国内找一个空间发布自己的blog,对于blog的服务商,我想我是挑剔的,我除了看访问速度,用户体验,界面是否简洁明快,还有blog社区。找啊找,最后由于163的邮箱给我的新的体验,而决定迁移。可以163终究没有吸引住我,163blog做商业宣传的色彩太明显,版面上到处都是网易的东西,感觉到很乱,自己定制的功能不强。之前感觉到舒服的Ajax技术应用,过了几天之后觉得就凭这个对我的吸引力不够大。从2004年写blog至今,先后换了3、4个blog,先后有敏思,CSDN,MSN Space,然而到了opera时才比较安定下来写些东西,其他的blog都因为感觉到不舒服而被下一个代替。opera的blog系统我是最欣赏的,至少很符合我的口味。若不是现在在国内的访问速度限制,也许还会一直在opera blog上呆下去。
之前也知道blogger,然而那时在国内访问不了,也许后来被google收购之后,google摆平了一些障碍,现在是终于能够访问了。很喜欢Google,更喜欢它的don't be evil的哲学。说到用户体验,我想google始终是走在前面的,而且现在凭google的实力,应该可以信赖,而不用担心自己发布的东西某一天都付诸东流了。好了,准备跟在这安家了。