Archive for 2007

新年钟响寒山寺

凌晨0:00点,遥远的,寒山寺的钟声徐徐传来,伴随着来爆竹声,响彻苏城。

来苏州四年有余,很少有机会听到新年的钟声,今年是个例外。唯一缺憾的是没有亲临现场,不过子曾经曰过:机会总是有的。此时的电视里,CCTV News播放是领导人亲临民间的新闻报道,嘘寒问暖,皇恩浩荡,煞是好看。

希望新的一年,希望家人朋友,事事顺心,健康快乐。希望公司尽快盈利,新产品大卖特卖,希望同事各个加薪升职。

my new laptop

HP 6515b

HP 6515b,性价比比较高的一款机器,推荐!

Hibernate, SocketTimeOutException错误

项目中用到Hibernate,部署的时候发现,过了一段时间后,Hibernate就不能正常工作了,时间很有规律,通常是在部署后的若干个小时。错误日志如下:

** BEGIN NESTED EXCEPTION **

java.net.SocketTimeoutException
MESSAGE: Read timed out

STACKTRACE:

java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1392)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1539)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1930)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1168)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1279)
    at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1225)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2278)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2237)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2218)
    at com.mysql.jdbc.Connection.commit(Connection.java:1155)
    at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:139)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:115)
    at com.amd.BizB.test(BizB.java:27)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:109)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)

最后发现是由于配置文件Hibernate.cfg.xml没有写好,少加了若干的项(注意黑体部分)

<property name=”connection.autocommit”>true</property>

<property name=”connection.url”>jdbc:mysql://ssuzsws01:3306/foo?autoReconnect=true</property>

加了这些选项后,就正常了,希望对遇到类似问题的朋友有帮助。

天气冷了

- 终于又到了一年的末尾了,自己也长了一岁,回首看看这过去的一年,总的来说还是比较满意,新的环境,新的朋友,新的挑战。。。渐渐的自己的目标也开始明确起来,心态也开始慢慢的不难么浮躁了,做好每一天,做好每一件事情,最终你将收获的是应得的结果。

- Austin的几个同事完成了他们在苏州的任务,现在应该在回去的飞机上了,我也歇了一口气,每天都有N多会议要安排,N多的议题要讨论,有重要的,有不重要的,和自己相关的,和自己不相关的。几个朋友和我想象的中的不太一样,人很随和,风趣。可惜没有怎么带他们在苏州看看,下次来了,再安排吧,机会总是有的。

- 恒星的‘教授’总算要跳槽了,很佩服他的忍耐力,直到现在才开始行动。100人上下的公司,办公室里面没有几个人,其余的全部在外面漂荡着,几年前我也是其中的一分子,曾有新毕业的朋友咨询在这家公司能不能学到东西,在我看来,主要看自己,其实在任何一家公司都是这样,只是程度的多寡而已。很有趣的是,最近还和恒星打了一次交道,事情的起因是:调档案的过程的得知自己竟然还没有和恒星办理离职手续,真实够搞笑的,我已经离开这家公司多年了,还没办离职~~~。尤其让我意外的是老总的态度,之前在公司的时候,和和气气的,现在却是别样风景,人走茶凉大概就是这个意思。(我在新公司也见证了几个同事离职,几个supervisor郑重其事的召集了全部门的leader,给这个几个要走同事开了个欢送会,每个人都回忆一下这几个同事为公司做出的贡献,送出自己的祝福,公司还为这些同事准备了礼物,告诉他们无论将来走到那里,这里永远都是他们工作过的地方)

- 很久没有睡个好觉了,周末是我最期待的时刻,可以美美的睡个懒觉,窝在被窝的感觉很好,这个习惯从上大学开始,一直保持到现在。

Test Windows Live Writer

This entry is posted by Windows Live Writer.

汉语可以编程?

最近,针对”汉语编程”的争论,在网络闹的沸沸扬扬,一边是官方的汉语编程网,一边是”爱管闲事”的网友徽剑。so far,微剑已经针对汉语编程写了9篇评论了,引起众多网友的高度关注。其实,稍微有些编程知识的人,都能看的出来谁是谁非。在我看来,HYBC地地道道是个大骗子。闲来无事,就在他们的网站游览了一遍。顺便下了一个所谓的编译器:http://www.hybcw.com/down/by.rar 。蛮小巧的,2M不到的一个压缩包。想看看这个编译器到底有何与众不同,遂打开了Dependency Walker,把它的主文件WIN32CHP.exe拖到里面,我们可以看到 MFC42U.dll 赫然的列在一排modules中。这个难道就是汉语编程的编译器吗?为什么和”英语编程”(我们姑且认为有这种称法)势不两立的汉语编程会使用MFC42U.dll,这个可是微软MFC的东西啊,莫非汉语编程的编译器是用VC编写的,或者至少是用到了MFC?真的很难想象这么简单的骗局能欺骗那么多人达那么久。

十一

买了无线上网卡,体验下Wireless的感觉,呵呵。

顺便发一张昨天在幼儿园门口拍的表扬稿,如下:

200710061.jpg

Install Trac On Your Windows

阅读本文前,请参考前面两篇文章:
SVN服务器的搭建 和 ViewVC的安装
注:由于WordPress的限制,下面有些路径的反斜杠使用正斜杠代替

1. Download & Install trac-0.10.4.win32.exe
2. Download & Install pysqlite-2.3.4.win32-py2.3.exe
3. Download & Install mod_python-3.3.1.win32-py2.3-Apache2.0.exe
4. Download & Install clearsilver-0.9.14.win32-py2.3.exe
5. Download & Install setuptools-0.6c7.win32-py2.3.exe

6. 在httpd.conf中增加配置如下:
 LoadModule python_module modules/mod_python.so 

<Location /trac>
  SetHandler mod_python 
  PythonHandler trac.web.modpython_frontend  
  PythonOption TracEnvParentDir c:/trac  
  PythonOption TracUriRoot /trac  
</Location>

7. C:/>mkdir trac
8. C:/Trac>python c:/Python23/Scripts/trac-admin oa initenv
系统提示如下:
—————————————————————–
Creating a new Trac environment at C:/Trac/oa
Trac will first ask a few questions about your environment in order to initalize and prepare the project database.Please enter the name of your project.This name will be used in page titles and descriptions.

Project Name [My Project]> OA

Please specify the connection string for the database to use. By default, a local SQLite database is created in the environment directory. It is also possible to use an already existing PostgreSQL database (check the Trac documentation for the exact connection string syntax).

Database connection string [sqlite:db/trac.db]>

Please specify the type of version control system, By default, it will be svn. If you don’t want to use Trac with version control integration, choose the default here and don’t specify a repository directory. in the next question.

Repository type [svn]>

Please specify the absolute path to the version control repository, or leave it blank to use Trac without a repository. You can also set the repository location later.

Path to repository [/path/to/repos]> c:/Repo/oa

Please enter location of Trac page templates. Default is the location of the site-wide templates installed with Trac.

Templates directory [C:/Python23/share/trac/templates]>
Creating and Initializing Project Installing default wiki pages
… …
—————————————————————–
9. 权限设置
<LocationMatch “/trac/[^/]+/login”> 
  AuthType Basic 
  AuthName “Trac”
  AuthUserFile c:/Repo/passwd.txt
  Require valid-user
</LocationMatch>

10. 管理

  • 下载WebAdmin

WebAdmin是一个对Trac进行权限控制的插件,安装完成后可以在Trac页面中直接对权限进行控制,其下载地址为http://trac.edgewall.org/wiki/WebAdmin,页面中有许多版本,根据自己需要下载即可(Trac 0.11以后的版本会自动集成WebAdmin,只有0.11之前的版本需要手动下载安装)。

  • 下载后得到一个压缩包,解压得到一个*.egg的文件夹
  • 拷贝刚才解压得到的*.egg文件夹,粘贴到你所要配置的Trac目录下的plugins目录,例如
C:/Trac/oa/plugins
  • 在控制台执行easy_install
C:/Python23/Scripts/easy_install.exe C:/Trac/oa/plugins/TracWebAdmin-0.1.2dev_r4240-py2.3.egg
  • 在Trac.ini文件中加上以下代码:
[components]
webadmin.* = enabled
  • 执行Trac-Admin的Upgrade命令
C:/Trac>python c:/Python23/Scripts/trac-admin update
  • 重启Apache
  • 完成,在控制台中输入

C:/Trac>python c:/Python23/Scripts/trac-admin c:/Trac/oa
Welcome to trac-admin 0.10.4 Interactive Trac administration console.
Copyright (c) 2003-2006 Edgewall Software
Type: ‘?’ or ‘help’ for help on commands.
Trac [c:/Trac/oa]>

即可进行管理,但这里的管理是基于命令行的

也可以:

C:/>python c:/Python23/Scripts/trac-admin c:/Trac/oa permission add charry TRAC_ADMIN

这样的话,就可以用charry这个账户登陆到web页面进行管理了,只是没有命令行的管理界面强大。

ViewVC的安装

步骤如下: 

  • 下载ViewVC,并解压到:C:\viewvc-1.0.4
  • 下载 Python-2.3.5.exe 并安装
  • 下载 pywin32-210.win32-py2.3.exe 并安装
  • 下载 svn-python-1.4.4.win32-py2.3.exe 并安装
  • 在ViewVC的目录下执行 python viewvc-install,会提示:

C:viewvc-1.0.4>python viewvc-install This is the ViewVC 1.0.4 installer. It will allow you to choose the install path for ViewVC. You will now be asked some installation questions. Defaults are given in square bra Just hit [Enter] if a default is okay. Installation path [C:Program Filesviewvc-1.0.4]: C:viewvc-1.0.4 DESTDIR path (generally only used by package maintainers) []:

  • 打开viewvc.conf,修改如下:
    将cvs_roots = cvs: /home/cvsroot注释掉,改为:svn_roots = svn: c:\Repo\oa(这里的oa是我先前建立的Repository),再将 default_root = cvs注释掉.
  • 注意:svn_path最好也要填写,比如:svn_path = C:/Subversion/bin,否则annotate的时候会出错

在apache的httpd.conf加入:

ScriptAlias /codeview/ “C:/viewvc-1.0.4/bin/cgi/” <Directory “C:/viewvc-1.0.4/bin/cgi/”> AllowOverride None Options None Order allow,deny Allow from all </Directory>


加入diff支持

DiffUtils, enscript, libintl, libiconv, sed将他们分别解压,然后保存在 C:/ViewVCUtil下,并将 C:/ViewVCUtil 加入到 %PATH% 中

  • 打开viewvc.conf,将use_enscript = 0改成1,重新启动standalone.py(如果是以apache+DAV的方式运行,则不需要执行standalone.py)
  • 如果遇到

error: (2, ‘CreateProcess’, ‘The system cannot find the file specified.’)

的错误,请检查,C:/ViewVCUtil是否在%PATH%中,如果还是不行,请把C:/ViewVCUtil下的文件copy到C:/Windows/System32下,也可以。

SVN服务器的搭建

下面为单独配置SVN协议的方法,也就是说,SVN的Client端只能通过形如:svn://localhost/repo 的方法访问你的服务器

1:下载 svn-win32-1.4.5.zip 并解压到 c:/Subversion
2:C:\Subversion\bin\svnadmin create c:/Repo/foobar,创建容器
3:修改 C:\Repo\foobar\conf 下的配置文件,注意配置项要靠齐第一列

svnserve.conf 的文件内容如下: [general] anon-access = read auth-access = write password-db = passwd realm = My First Repository

passwd 的文件内容如下: [users] # harry = harryssecret # sally = sallyssecret charry = 123

可以看见,这里的密码是明文,注意安全。 

4:下载 svnservice-1.0.0.msi 并安装,它可以让svn的以服务的形式运行起来,设置很简单。设置好Repository Path 和svnserve的path,执行start即可。
5:Done!


下面为Apache的DAV配置方法,这样的配置,可以通过浏览器来访问我们的仓库,通过SVN Client访问的形式为:http://localhost/repo1:下载 svn-win32-1.4.4.zip, 解压到 C:/Subversion
2:下载 apache_2.0.59-win32-x86-no_ssl.msi,安装到 c:/Apache
3:将C:/Subversion/Bin 下的所有的dll文件copy到C:/Apache/Apache2/bin下
4:将C:/Subversion/Bin 下的两个.so 文件copy到C:/Apache/Apache2/modules 下
5:修改apache的httpd.conf,加入:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
6:在httpd.conf的最后加入

<Location /svn> DAV svn SVNParentPath C:/Repo AuthType Basic AuthName “Subversion Repository” AuthUserFile c:/Repo/passwd.txt Require valid-user </Location>

7:生成用户密码
c:/>htpasswd -bc passwd.txt charry 123

以后新增用户只要 c:/>htpasswd passwd.txt fred 即可

Page 1 of 612345...Last »