September 25th, 2008 by 张磊
前些日子还在培训中的时候,曾写过一篇企业级web开发,java的遮羞布。这篇文章后面有不少反对的声音,大家都表示“支持程立”,可我并没反对程立的观点,只是觉得,java也只剩下所谓企业级的花头了。特别是有人说java是“因为严谨,所以麻烦”,我实在不敢苟同。
后来就看到了javaeye上面的一个帖子,标题是“我怎么就觉得rails适合做大型应用”。我花了一个多小时从头到尾看完了所有回帖,大家一开始争论比较激烈,但后来发现那个力挺Java的Itian原来是个跳梁小丑,讨论到最后意见也都一致了。对rails在大型应用上的认可盖过了怀疑。这个帖子中的很多论点很精彩,当然伪命题也不少,很推荐大家看看:http://www.javaeye.com/topic/232415
BTW,在alexa流量排名前10的网站中,可没有一家是用java搭台子的。
February 4th, 2008 by 张磊
题外话:这年头的招聘,都扑朔迷离的
—————————————————————————————
我们 有 平等、独立 的 精悍团队。
我们 有 和谐、紧密 的 伙伴关系。
我们 有 严谨、宽松 的 工作氛围。
以下关键词代表我们对开发的方向和追求:
PHP MySQL Nginx jQuery Lucene Performance
Subversion Slackware Memcached AJAX Suhosin
Imagick Varnish Firebug YSlow FastCGI XDebug
Scalability Availability Framework XCache
我们正在开发中的网站方向在以下的关键词中:
Community SNS Productbase Webgame E-Commerce PDA UGC Blogzine Wiki CMS
我们寻找以下人才:
1、精通 Linux 下的 PHP5 + MySQL5 的开发,对面向对象、三层结构开发方式有深入的理解。
2、逻辑思维能力清晰,有良好的自我管理能力和团队工作心态,乐于沟通、分享和共同成长。
3、有 XHTML+CSS+Javascript 前端能力者更佳。有 Java、C 或者开源软件开发经验者更佳。
我们能带给您的将不止以下这几点:
1、位于网站开发技术前沿,构建面向广泛用户群的应用。
2、千万甚至更高级别的网站架构设计与开发工作的挑战。
3、全身心地融入团队之中向目标而奋斗并共同分享成果。
4、不低于业界的薪酬待遇和作为团队成员的由衷的尊重。
有兴趣者,请发简历与 zhanghe4(at)163.com 联系。工作地点:北京 东北三环。
注:本信息长期有效。
December 20th, 2007 by 张磊
很多年以前家里给我买了这本书,记得当时这本书非常畅销。那时我还在上四年级,对书里的很多东西都看得一知半解,但是还是觉得非常新颖。后来听到了一些批评的声音,说里面的一些学习方法不大适合国内的学生使用。不过已经是很久以后了。
很小的时候,不会质疑,看什么都觉得别人对。现在觉得自己牛气了,啥都不服,总想挑出点刺来。
谈这本书只是个引子。最近需要学很多东西,比如rails,比如一些javascript的库(dojo、scriptaculous等等),而这样的学习,和以前的方式,区别太大了。
首先就是告别了书本。不是没有书,只是在这个迅猛发展的领域,当一本书出来的时候,已经陈旧了。Rails最新的版本是2.0,是前些日子出来的。而我昨天下单购买的《Web 开发敏捷之道》是市面上最新的介绍rails开发的书,用的是rails1.8。更别说我手里那本拿过Jolt震撼大奖的《应用rails进行敏捷Web开发》,是2006年出版的书,谈的是更早的版本。
同样的例子也发生在我要学的dojo上。我手里的一本介绍几个JS框架的书讲的dojo是0.36版的,而现在的dojo已经出到了1.01。script.aculo.us也是这样。
一个好用的东西(不管是新的技术还是框架或者别的)X被人们最初接触,然后有睿智的人想为它写本书,熟悉和深入理解的过程怎么也得2、3个月。而不管书有多薄,写一本书花的时间不会少于4个月。等到出版,至少已经离X出世有半年了。而这时的书,一般还是英文的。我们国内的精英们虽然写不出什么畅销的书,可是至少还会翻译啊。一翻译,又一个季度没了。等到翻译出来的书被广大读者推荐,更多的人认识到它的价值开始关注,算下来,X就该一岁了。谭浩强讲C语言编程的书可能10年都不会过时,但在一个迅猛发展的领域,一年,世界可能早就翻天覆地了。
我们应该做好准备拥抱这一场革命,这也是场学习的革命。互联网依然在不停地改变着我们,对新事物应保持足够的敏感,同时也该学好英文——这个和什么民族感情一点关系也没有。不要总在思考之前就去提问,自己的学习往往收获更多,更别说可能周围没有人能回答你的问题。多用互联网,多去搜索多去提问,当然,也要多贡献。再新的图书也没有4天前的技术文章来得新 ,再全的纸质手册也比不上一个大家贡献内容的Wiki。
December 17th, 2007 by 张磊
最近用ruby on rails做东西,但也不指望能用啥IDE了,找个趁手的文本编辑器就够了。因为在ubuntu下,默认的是gedit,可这东西有一个不好,就是每次我改了一个文件,它都会自作聪明地做一个备份。这导致我目录里几乎每个文件都有两份,删掉又会再来,好不麻烦。
于是就找有没东西可以替代。Kate和Kedit就算了,在我用的Gnome上不太好使。komodo edit貌似是免费的,可也太大了,下载都得好久。后来居然找到一个叫做Scribes的,被交口称赞,于是装来用用。安装很简单:
apt-get install scribes
装好打开一看,怎么这么简陋。连菜单栏都没有,只有个工具栏。但实际的使用中才感觉到它的强大。作为一个text editor,Scribes居然有代码提示、自动完成的功能,这可是一般放在IDE中才有的。于是写起ruby来也更有感觉了。当然,它是没有语法错误提示的,这个需要开发者细心一点了。
December 17th, 2007 by 张磊
最近看rails如痴如醉阿,上一篇写过两点收获,今天又有很多。感觉之前看书就像听老师讲课,很系统地领会了一次。而现在动手做的过程,无疑更刺激。
用render :partial生成小块(部分)内容
在做软件工程作业时,需要在里面加一个搜索框。首页需要一个,搜索结果页面也需要放一个。当然可以分别在两个地方写一次,也没多少。可是敏感的人们一定能感觉到,这个违背了rails所提倡的DRY的精神。没关系,rails早就想到了。可以用render :partial来生成小部分内容。(坦白说,若不是rails,我也不会这么积极地寻找能遵守DRY原则的方法)
需要用这样的形式来使用:render :partial => ‘path/filename’。应当注意的是,相应的模板(.rhtml)文件该保存为“_”开头的。比如我的模板文件在app/views/book/_search_form.rhtml,若在BookController的方法中调用时,直接用
render :partial => ’search_form’
若在别的控制器中,则需要
render :partial => ‘book/search_form’
用content_for()填充预留块
同样是部分内容。在有的情况下,可能不同页面的同一部分需要不同的内容,比如侧边栏在不同的页面上需要体现不同内容,这时可以用yield先预留一个位置:
<div id=”sidebar”>
<% yield :sidebar %>
</div>
然后在具体页面上可以这样做:
<% content_for :sidebar %>
sidebar content
<% end %>
这样就能把中间“sidebar content”输出到刚才预留的位置。
懒得装那些用于代码高亮的插件了,用简单的缩进也能描述清楚。先写这两个吧,其实还有很多,慢慢写
December 15th, 2007 by 张磊
起了个大早,7点。昨天吃的火锅让我继续拉肚子。和Alone交流,感叹不管自己生日还是别人生日,都是我们出血。8点多吃过饭就开始折腾那个C#的作业,一直到中午11点才做好,同时也摸清楚了C#操作数据库的这些东西,DataSet、DataAdapter、DataGrid之类的。
PHP/Python这些东西和C#的区别还是很大的,习惯了用SQL语句轻松地解决问题。而在用c#时,我几乎是被强制着用封装之后的那些“便捷”的办法来操作数据,加上不熟悉那些内置的类们,让我为一个C#作业折腾了两天。要是用PHP,做一样的东西估计只消一小时。但现在的Web开发框架们也普遍可以将数据库的操作封装起来,原来一句话可以搞定的东西,现在得写好多句。
话说回来,这也未必不好。少用SQL语句能避免不少人为的小错误,程序看起来也更干净些。Rails就这么做的。开始折腾Rails,是为了能尽快搞定软件工程课的作业。这个学期的软件工程课觉得有点垃圾,因为老师讲来讲去,就是要把我们教会用瀑布模型。大型的软件自然要这么磨蹭地做,可是在现在的互联网上跑得慢了就会被人干掉,别指着十年磨一剑了。最近事情太多,所以希望能用Rails赶紧搞定软件工程的作业。Rails带动了一大批框架的发展,以前我看的CakePHP,就是采用了Rails的思想。
《应用Rails进行敏捷Web开发》这本书我已经读了有段时间,感觉很不错。在卓越亚马逊看到出来了第二版。终于要开始实践了。在Ubuntu上安装Rails还是比较容易的,直接用apt-get就可以。之后我把数据库也做了些调整——一路上不管装rails还是改数据库或者建Controller都用shell,真的很爽。用scaffold顺利地搭了一个台子。
有点浅薄的经验,先记录一下,以后入门的朋友们能容易点。
项目的网站根目录是public,一开始访问localhost:3000会被定向到index.html,最好把这个文件改个名,要不自己定义的首页控制器会不起作用。
用scaffold后,都是/controller/action/…这样的地址结构,而请求“/”会出错(如果做了第一步的话)。需要编辑config/routes.rb,加入一行:
map.connect “”,”:controller=>welcome”
这样请求“/”时会去welcome这个控制器里面找index方法(默认)。编辑routes.rb这个文件可以有更多玩法,不只是能指定个首页这么简单——好好发现吧。
如果页面之间有共用的部分(相信一般都有的吧),就让application layout或者partial layout帮忙吧。这个我查了好久终于找到了,可以看看这篇和这篇文章。
推荐看看这个专栏:每天一剂Rails良药
推荐的两本书:《Web开发敏捷之道》 《Programming Ruby》
总感觉只有真正做一次,才能有深刻的领会。只是不为自己而做为完成作业而做,有点不甘。虽然看了很久的书,我依然是个初学者。
August 30th, 2007 by 张磊
今天在做Camel的时候,对ZF中的Cache的一些初始化选项觉得有些疑惑,于是找来了官方的文档看了看。不看不知道,一看之下才发觉自己之前对ZendCache的使用简直太浅薄了。现在的ZendCache可以对页面某一部分做Cache,也可以对整个页面进行Cache,Cache的保存方式也多种多样,真的很强大。之前我自己对Cache的思考,和他们所做的工作比起来,可以说是微不足道了。
所以牛扑还需要更大的改动。今天我一度动摇,想用Python来重写牛扑,但很快就打消了这个念头。牛扑的架构需要进行更改,我打算大量地使用ZF框架中的组件。这个假期还有些遗憾就是,没有把足够的时间花在看Lucene上。智勇说牛扑啥都搜不出来,这是因为没用全文检索阿。记得那时Tiny还说要送我一个他们在这方面的产品,可那我也得会用阿。
不过,现在做Web开发会觉得顺手很多,因为网络上流行的框架有一大堆,总能找到适合你的一款。若不,说明你已经高超到该自己去写框架了。牛扑几乎所有的方面都需要改进,用户界面、全文检索、缓存算法、数据库结构……回头看自己之前的项目总会觉得千疮百孔。不过,一个一个来吧,我打算把这个拿来做我的毕业设计。
晚上还花了十来分钟,给机器人在互联网的某个角落,安了一个小小的开关。以后机器人掉线,就不需要爬上服务器去改了。只要对那个开关说一个暗语,机器人就会被重新打开。想着你说机器人不见了时可爱的表情,我忍不住就把这个秘密泄漏给了你。
August 26th, 2007 by 张磊
注:这篇文章是应计算机学院吴书记的号召,以思想报告的形式写一下我对现阶段培养同学们学习氛围的一些思考。完全原创。
盗用这个大大的标题,自己有点汗颜,但是实在想不到别的可以贴合这篇文章的主题了。坦白地说,杭电计算机学院的学习氛围真的需要提高,我自己作为一个计算机学院的学生,目睹了周围人太多的堕落和迷茫。今天写的东西希望能对大家起到些作用。
1、实践是提高水平的唯一途径
在我们这样的专业,所学的东西只有亲自实践过了,成功了,才能算是吃到了肚子里。大一时学C++,看着不少人都拿着小本子拼了命抄老师在PPT上展示的程序。抄是抄来了,自己敲进电脑里面貌似也能跑起来,可是原理没弄懂。
很多时候,要做个东西,之前踌躇满志,可真正到了设计的时候,却发现涩涩的。某些关键地方的技术是自己所不知道的──相信很多人都有过这样的感觉。这其实 是缺少实践导致的。可能你去借了一本”Teach Yourself Java 2 in 21 Days”勤奋地从头读到尾,但真正到了做东西的时候,还是发现好多东西写不出来。没关系,勇于面对自己的无知就好了,在这个互联网及其发达的时代, Google就是最好的老师。我前段时间突发奇想,自己开始写一个聊天机器人,基于Jabber协议的,但是我对Jabber一点都不了解。全靠 Google,只要有了问题,马上搜一下。最终我的机器人只花了几天时间就做出来了,我还在自己的技术blog上写了一个系列的文章来分享心得(请看这 里:http://www.googlecto.com/2007/08/16/all-the-about-xmpppy-in-action-4/ )。
雅虎的工程师车东在 自己的blog上说,建议计算机专业的大学生在sorceforge上找一些小的项目自己练习一下。实践,是我们每个人都比不可少,而且要坚持做下去的事 情。而且,实践获得的乐趣也远远比往笔记本上抄程序大得多。同时,做ACM真的是一个可以锻炼人动手能力的东西,我虽然现在难得写C的程序,可还是从以前 做ACM中获得了不少宝贵的经验。我觉得我们学院把ACM做得太功利了,诚然,在领导们所关注的浙江高校之间的PK中,HDU不能落了后。但是看见那么多 人把身心都投在了ACM上,背负着很大的压力。不如把ACM当做一个锻炼自己的地方,来得轻松。
2、我们不仅应当有专业的知识,也应当有行业的眼光
IT是一个高速发展的行业。也正因为这一点,这个行业才产生了这么多年轻的富豪。如果一个计算机专业的只是投身于写程序、做东西,可能会成为一个顶级的 Coder,但永远也不配被称为IT人。前些日子接触了一个学院的同学,在QQ群里说要接活做网站。和他聊了一下,他说做网站也很苦,我就建议他给自己 做。可是他不知道该给自己做什么,说没有需求。一个只会做东西不去想东西的人,难成大气。
我们应该关心一下我们将来要投身的行业,技术只是这个行业里一个部分。IT涉及了太多东西,潜力之大也超乎我们想像。而我们现在需要做的,也只是在学好专 业知识的同时,培养一下行业的眼光。比如多关注一些IT新闻,多看一些IT人的blog,把花在游戏上的时间腾出来一点点,相信会有很大的收获。我在05 年加入了一个创业的团队担任CTO,之后就参加了大大小小很多类型的IT聚会,从中获益匪浅。
我曾经建议过学院里可以做一个长期的规划,在将来开一门选修的IT文化方面的课程。如果有对这个比较了解的老师,那是最好。
3、锻炼表述的能力
相信每个人都有这样的经历:在别人的要求下到某个公众场合,面对着下面很多只眼睛,讲话。不管普通话有多好,不管对要讲的内容有多熟悉,大部分人的第一次,总是会很紧张,哪怕下面都是自己的熟人,也会觉得不自然。这其实是能力的问题。
表述的能力是所有学生都需要的。把一样东西学到脑子里和把它清晰地讲给别人听是两个水平,而在那么多人面前,还能说得清楚、讲得明白,其实不是一件容易的 事。而学计算机的同学们在这点上分外欠缺。可能是我们长年都和电脑这种“冷兵器”打交道,我们用啥指令它给啥反馈,习惯了这样无声的交流。特别是那些传说 中的“牛人”,更是被“神化”为,深藏不露、沉默寡言的人。不仅是我们学校,我接触的一些浙江大学学计算机的同学也有一样的问题,虽然他们都是在这个领域 出色的学生,但在众人面前讲点东西的时候总会忍不住抓抓头发或是把眼望向别处。
我自己也比较注重这方面的锻炼。在上个学期,我和一些朋友们一起做了一个分享性质的沙龙。每次会有一个专题小演讲,加上讨论,沙龙一般会持续两个小时── 这样的事情对我真的很是考验,但是慢慢习惯之后,开始可以把自己的东西条理出来,讲清楚,大家也可以进行很好的交流。所以,我建议同学们应该多找说话的机 会,多锻炼表达的能力。这样的能力在将来对我们也是很有臂助的。
4、别让语言成了障碍
曾经和朋友开玩笑,说我们学校的“牛人”普遍特点就是英文很差。而我在浙大接触到的“牛人”一个个都能讲一口流利的英文。英文的重要性我也不用多强调了, 而在我们专业上来看,实际上英文有特别的用处。首先很多网上的技术文档都是英文,譬如一些现成的库和框架。面对大段大段的英文文档,如果没有好的英文功 底,实在难以对付。当然,总会有好心的人把英文翻译过来,但未必你要的翻译真就能找到,就算找到了,翻译的质量也实在不知道好不好。
我建议计算机专业的同学们可以尝试着大胆地买一些原版或是影印版的专业书籍来看,在学其中技术的同时也可以熟悉一下那些惯用的术语。我自己大学两年就读了 不少英文的专业和非专业书籍,明显感觉到英文的水平有了提高。现在,我自己开通了一个专门写技术备忘的英文blog:http://www.googlecto.com ,坚持写英文的技术文章,对自己也算鞭策吧。
5、和周围人一起
做小事可以自己搞定,而做大事是需要一个团队的。这里“和周围的人一起”,不是说一起下网吧一起打游戏,而是一起学习,一起做共同爱好的事,一起进步。我 住在一个学习氛围很浓的寝室,大二第一学期的期末成绩出来,软件工程05级年级前10名有3个人在我们寝室。第二学期最终结果还没出来,但是我们的成绩也 很不错。我们寝室里现在还有两个预备党员。我们共同的名字叫Yellow。而这一切,都是我们一起做的。让周围的寝室,都很羡慕。
我们从来不自习,也许这不是个好习惯。但因为我自己曾从事IT,所以可以有一些不错的资源。外校有活动,我们也是一起参加,这样也给我积累了在校内做活动 的经验。后来也我们一起做刚才提到的沙龙。上个学期,在繁忙学习之余,我们出资在加利福尼亚租用了一台服务器,然后每个人开始做自己的小项目。同时,每个 人都有一个独立域名的blog。下面这些就是我们自己的项目:
blogkid: http://www.blogkid.net http://www.googlecto.com http://www.edianping.net http://www.niupu.com http://www.itwuzi.cn http://www.wodushu.cnhttp://www.inhdu.cn
Alone: http://www.v2sports.cn http://www.yu1986.cn
Popo: http://blog.paopub.cn http://bbs.paopub.cn
小优: http://blog.town26.cn http://www.town26.cn(现已停运)
我们很少打游戏,把时间都花到了自己喜欢而且有意义的事情上。我也自感很幸运能和这样一群人住在一起,让我们有学不完的东西做不完的事。在我担任学生会科 技部长时,曾经很希望把科协做起来,然后同学们可以组建自己的团队,一起研究,一起做事。可惜最终因为各种原因没能如愿,但如果有一群人和你一起,一定比 一个人的战争更来劲。
6、善于记录,乐于分享
我从2005年开始坚持写blog,至今已经有将近1000篇文章。文章大多写的是大学的生活以及IT方面的评论,我曾经是个很喜欢文学的人,也许没接触 [...]
April 9th, 2007 by 张磊
今天晚上有三个会,不过时间重合在一起了,只能去一个——这样正好,哈哈。开会的时候呢,我就顺便看了一下今天借来的《应用Rails进行敏捷Web开发》。
以前也借过ROR方面的书,比如这个。但是觉得讲得太过死板,看不进去。今天看着这本书,看着作者用相当生动的语言,描述着他轻而易举创建一个不小的应用,让我一下觉得ruby拉近了很多。
我回来之后就把书递给Alone,希望他能从中间学到一点东西。不过话又说回来,rails提高了开发的效率隐藏了更多底层的细节。所以如果你对HTML不熟悉,对基本的cookie这些不熟悉,还是选择PHP这种语言补一下的好。
晓光告诉我尝试了AJAX,觉得效果很好。但我自己还没有做好足够的准备去尝试做一个Ruby的应用。开发习惯迁移的代价是巨大的,而且我坚持认为Rails框架只有在熟练掌握ruby语言和框架特性的时候才可以被很好地发挥(比如test这些内容,虽然不影响开发,但绝对会在后期升级起到作用)。不知道rails的学习可不可以和开发一样,进行“需求->开发”的循环,哈哈。
V2Read的数据库里还没有《应用Rails进行敏捷Web开发》,要不可以把这篇东西当作书评了。
V2Read第一天,注册用户6人,其中3人来自Yellow,还有2位是我的朋友,剩下的是一位很和蔼的老师。最近的一次技术沙龙,我想就PHP进行整站系统的设计,以ProjectZLLP为例,谈一下。
April 9th, 2007 by 张磊
http://www.v2read.cn/q/Rails/
今天去借来一本《应用Rails进行敏捷Web开发》,感觉不错。回来就想在我的V2Read上面搜一下看。没搜到,但是在joyo是可以搜到的。
现在V2Read.cn上的图书数据已经有25W+条,还在不断地增加。但是如何把这些数据呈现出来,实在是个问题。
在V2Read搜索Rails你能搜到两本书:
也许确实应该求助于长尾。呵呵,要不是晓光同学提醒,差点就忘了V2Read上面用户自己还不能修改密码呢。
To do list : http://www.v2read.cn/group/topic/1/