根据《程序员修炼之道》的建议,今年收获很多,嗯。
一直坚持使用 Ubuntu Linux 作为操作系统,坚持使用 Vim 作为主要开发的编辑器。经过一年的实践,对 Linux 的认识又有所提高,对 Vim 编辑器已经比较熟练。在 Linux 平台上作开发,效率比在 Win 平台上高出很多,主要是因为强大的开源工具集。
年初,读了《Learning Perl》,对 Perl 语言进行了初步的学习,之后写了几个小脚本,主要用于自动化方面,例如解析 CSV 文件、Excel 文档,自动处理电子邮件,以及系统管理等,并在实践中有所提高。对 Perl 的学习,是我走向 LAMP 的导火线。
由于目前国内 Java 和企业级开发环境的恶劣1,以及自身兴趣所在,决定转向 LAMP 方向。
利用出差那段时间的空闲,读了《PHP5 权威编程》,并接触了 WordPress。因为我的 Linux 和编程基础较好,所以转向 LAMP 的路很通畅。目前在一家互联网公司做 WebGame 的开发。
今年还读了不少好书,包括《精通正则表达式》、《JavaScript 权威指南》、《构建可扩展的Web站点》、《高性能网站建设指南》、《时间管理——给系统管理员》等等。
由于结合了 Web 方面的开发实践,效果很好。对 Web 站点的建设,有个最佳实践作为指导,对前端优化,也有个最佳实践作为指南,在实际开发中项目受益和个人收获都很大。尤其是对 Javascript 的深入学习和实践,理解并掌握了最核心的闭包、函数作用域链和函数调用对象的概念2。同时,掌握了命名空间,模块化开发等较高级的 Javascript 技巧。在 LAMP 开发过程中,也逐步认识到了开发符合标准 HTML/XHTML,CSS 的好处。
在项目开发中,对时间管理的概念有了初步的认识,并结合项目管理,体会到了注重时效3的重要性。
阅读全文 »
CSS+DIV不是标准布局。
标准倡导的是用有意义的标签,而不是div这种无意义的标签的滥用。
其实tabel和div都是标准HTML的标签,按照标准的建议,应该将table用在数据表格展现的地方,也只有用table才能最好地展现表格数据。如果用div来表现表格数据,那将和用table来做页面布局一样,使web页面设计陷入标签和内容不统一的局面。这不是标准所建议的。
国内最近一两年一直高呼div+css,其实会对大家造成一种误导,让大家对标准产生误解。
再强调一下,css+div并不是web的一切,就像table一样。我们应该使用有意义的标签,和内容统一的标签,这才是符合标准的精神。
用有意义的标签加CSS的布局才是最佳的布局。

如果自己开公司给员工培训的话,朋友的观点是要给程序员培训算法。
我认为第一个要讲的就是这本书的内容,第二个就是时间管理。其实在程序员修炼之道里,就有很多关于时间管理的内容,它们是相互补充的。比如程序员的美德——懒惰,就是要提高效率,就是要节约时间。
为什么不是培训算法呢?
我的理由大概是这样的:
1、作为程序员,算法思想应该是基础,算法经验应该是在实践中培养。如果连基本的算法都不懂,他不会通过初面的。
2、如果我开公司,应该是做高层应用,这方面,一般是用OO思想来设计,大部分用到的算法都封装好了,要自己写算法的机会不多。更重要的,应该是程序员的效率,包括运用各种自动化和高效的工具。当然,这里的程序员是符合第一点的。
3、至于高深的算法,我想我自己更应该先去接受培训。
阅读全文 »
(读《时间管理——给系统管理员》有感)
我认为,加班对个人来说是个不好的习惯,对企业来说是个不好的作风。
工作 != 生活
健康的生活,包括社交,运动,自愿者活动,学习,等等。
阅读全文 »
从决定辞职到新的岗位上岗,已经过去3个多月了,这里该更新了。
还记得当时我提交了辞职申请的时候正是金融危机开始之时,那个时候,包括家人,朋友,同事在内的很多人都问我同一个问题:“为什么不等找到下一家后再辞职”。甚至有人说我傻,怎么不拿了年终奖再走。对于他们的疑问,我都只是简单地回答他们是因为做得不爽。我当然不是在应付关心我的人,我说的是实话,确实做得不爽,只不过这只是其中的一个原因,并不是最重要的原因。
简单得说,最重要的原因是不适合,双方都不适合。
阅读全文 »
我们经常发送中文的电子邮件,而电子邮件的编码写web不大一样。我们一般用base64的编码来处理邮件头中非ascii字符。而现在UTF-8是web上最通用的编码。
$smtp->datasend("Content-Type:text/plain;charset=UTF-8\n"); #这里设置邮件内容的编码
$smtp->datasend("Subject:=?UTF-8?B?".encode_base64($title, '')."?=\n\n"); #encode_base64是MIME::Base64模块中的函数,$title为UTF-8编码过的
$smtp->datasend($mail_body." \n"); #$mail_body为UTF-8编码过的
其中=?UTF-8?B?为前缀,?=为后缀,B表示Base64编码。在邮件头的标题中,必须先用utf-8编码,然后再用base64编码,而邮件体就可以直接采用UTF-8的编码。
这样发出的邮件,就不会出现中文乱码的问题。
阅读全文 »
之前说过用perl发送邮件,在perl中,Net::SMTP是最底层的模块。这个模块不包含auth验证和TLS验证。比如我们如果想利用163/126的smtp服务器发送邮件,就得用到auth验证;如果我们要用gmail的smtp服务器发送邮件,就要用到auth和TLS。
在perl中,可以用Net::SMTP_auth模块来利用像163/126这样的需要auth验证的SMTP服务器来发送邮件。
可以用Net::SMTP::TLS模块来处理与gmail的SMTP服务器的交互。
这两个模块的API与Net::SMTP模块的基本上一样,所以用起来也很方便。
实际上我们可以利用封装性更好的模块,例如Mail::Sender,这样的模块很多,当然也可以根据自己的需要编写适合自己的模块。
阅读全文 »
2008戊子年中秋节刚过,刚看了TVB的《家好月圆》,很好看的片。
打算接下来学习手语,一来,符合程序员每年至少学一门新的语言,二来手语很好玩,最重要的是学会手语以后可以更好得帮助需要帮助的人。