‘编程随想’ 分类的存档
这两个框架应该是我最为熟悉的两个WEB开发框架,分属Python和PHP两个阵营的两个具有代表性的开发框架。不过近一段时间主要是在用Cake。性能方面一直是我比较关心的,今天无意中挖掘到一篇各大开发框架的评测文章,这里放一下最后的结果: 从上面的图表比较而言,Django还是很NB的,CakePHP有点惨不忍睹,不过对于WEB项目来说,在没有达到一定量的时候,语言往往不是瓶颈,还是要把力气用在刀刃上面,片面追求开发框架的效率也是不行的。 附上相关文章的地址: http://www.alrond.com/en/2007/jan/25/performance-test-of-6-leading-frameworks/ http://www.alrond.com/en/2007/feb/04/in-addition-to-the-test-of-mvc-frameworks/
上次KNSS团队内部交流,分享了一下自己的知识获取思路、方法以及相关工具,大家的反映还不错,但是当时分享的时候思路比较混乱,只是临时写了个提纲,所以一直想将这些东西整理一下,无奈前段时间考试、课程设计等等一堆事情。这两天整理了一下思路,写一下。同时欢迎大家评论补充分享自己的知识管理的方法。 背景 从我的角度来说,对于知识的获取,总是在遵循着“自我补全”的这一原则,对于自己感兴趣的领域,希望自己能够有一个全方位的了解,不一定要全部都深入的了解,但是当需要的时候,自己能够快速地找到相关知识,这是很有必要的。但是,知识的零散促使我们需要知识管理工具来进行记录和组织,当然根据知识的来源、类型等等,我们需要用不同的工具来进行记录组织。 过程 纯粹自己的总结:分析 – 提炼 – 挖掘 – 记录 分析 首先要分析自己需要什么知识,这个遵循上面提到的“自我补全”的原则,比如对于我自己来说,我对WEB应用有着相当浓厚的兴趣,在未进大学之前,略学过一点网页设计(HTML)和Linux,那么我进大学之后急需的就是加强对HTML以及相关的动态网页开发能力,还有就是对WEB服务器的实际操作部署等等。 提炼 提炼,当然就是根据上面的分析结果,提炼出自己最为需要知道的,将他们简化为一个个问题,将这些问题解决,那么就完成了提炼的工作了。在我开始学PHP的时候,最为迫切的肯定是要去了解网页是怎么由PHP生成的,WEB应用的开发流程是怎样的,怎么让自己写的应用跑起来,需要什么服务器环境。 挖掘 仅仅是解决问题还是不够的,举一反三,深入挖掘才能知道一些有趣的东西(经常是更加有用的东西),停留在表层只会让自己更加肤浅。同样类似与上面的问题,我们深入挖掘一下,比如“怎么让应用跑起来?”我们可以深究为“怎么让应用在多台服务器上面跑起来?如何做负载均衡?如果应用有错,如何回滚?怎么样快速将应用部署到多台服务器上面”,看似简单的问题,深究一下,会有更多有挑战性的问题可以去思考。 记录 “好记性不如烂笔头”,将自己获取的知识记录下来,是很有用的,这不仅仅只是方便到以后查找的方便,在记录整理知识的过程,本身就是一个回归思考的过程,可以让自己的思路更加清晰。对于自己的心得或者想法,博客是一个不二的选择,写博客不是为了追求什么知名度啊之类的,想想你写的东西会让别人看到,你就会更加负责人去整理自己的思路。总而言之:“一件事情,如果你不能说清楚,十有八九你就做不好” 工具 列举一下一些有用的工具以及自己的心得: Evernote – 随时随地的笔记 官方网站:http://www.evernote.com 更加详细介绍看善用佳软:http://xbeta.info/tag/evernote Evernote是一个很好的笔记型软件,标签、全文搜索,用来管理知识是相当方便的,最重要的是提供了很多手机客户端(iPhone,Android,BlackBerry…)不过由于我大部分时间用教育网,同步起来不方便,使用这个软件并不是很长时间,所以不做过多评论,纯粹力荐。 Scrapbook – 收集网页、离线阅读 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/427/ 相当好用的Firefox扩展,用来收集网页上面的知识(特别是多级页面)非常方便,我现在使用的组合就是Scrapbook + Vimwiki的组合。因为经常需要到网上找一些手册之类的,大部分都是在线版本,对于这钟,用Scrapbook下载到本地,然后慢慢阅读,相当惬意。 Vim Wiki – 个人知识管理 (适用vim控 ) 项目地址:http://code.google.com/p/vimwiki/ 善用佳软的教程:http://xbeta.info/vimwiki.htm 这个就不多说了,由于对VIM有强烈的依赖,所以这个VIM插件当仁不让成了我的首要个人笔记工具。 Calibre – 电子书、文献管理 官方网站:http://calibre-ebook.com/ 开源,跨平台的电子书管理软件,星级、分类、搜索、标签应有尽有,对于经常下电子书,硬盘里面电子书一大堆的来说这个软件相当方便,另外一个特点就是可以将PDF转成mobi格式,跟电子书阅读器结合得很紧密。强烈推荐给使用Kindle或者其他电子书阅读器的同学。 日常积累 对于自己关注的领域,日常的积累相当重要,特别是对于IT行业,相信大家也明白这个道理,需要不断更新自己的知识,才能跟得上。总的来说,以RSS为中心,订阅相关的博客、标签到Google Reader。基本上就可以解决日常的知识积累问题。 两个好推荐 1. Delicious 在很多人眼里,Delicious大概只是一个网上书签而已,事实上,Delicious完全可以帮助我们获取到我们需要的知识,想想看,对于相关标签里面的条目的推荐,基本上可以是对这个表情所在领域最新动态的一个体现。因此,想了解哪个领域,就去订阅哪个标签吧,对于页面重构工程师,CSS和HTML标签是一定要订阅了 [...]
由于博客所在IDC的种种原因,这一篇本来应该在2009年12月31号的博文到现在才发。 小结了一下,2009年那一年: 4月份: 离开了百步梯,这是一个新的开始。 7月份~11月份: 加入到某创业公司的主站研发,很惭愧,技术是我主导的,虽然最后网站做出来了,但是充斥着随心所欲更改需求的伤痕。最后,公司由于各种原因在2009年最后一天清算,看着自己几个月的心血就这样没了,我和我的同伴们都感到很伤感。 12月份: 借着参加某国内高校开源创新大赛的契机(最后得了个二等奖,有点不服,呵呵^^,不过本来就不大重要),我们几个人利用了期末考试时间的晚上时间(3个星期的晚上),做了一个山寨Basecamp。当然,现在还是相当粗糙的,我们的本意是能够用脑图来辅助进行项目管理和规划,但是完全实现还是需要一定的时间。 项目地址:http://code.google.com/p/itaskit 关于这个项目的详细情况,另写博文介绍。 另外,参加了一次广州技术沙龙,收获颇多,感谢开源的人们。借着上面的项目,我们也希望能够奉献点微博之力。 2010年,大概有这么几件事要做: 1.把itaskit这个开源项目完善了 2.利用空余时间做点小东西(具体保密^^) 3.暑假找一份好的实习(大三下了,是该找实习了) 4.最后,当然是在2010年找到自己喜欢的工作
说到对前端的优化,不得不提到Yahoo 的 Exceptional Performance Team,他们的努力,为我们提供了34条优化建议,并且提供了Firefox下面进行前端分析的扩展YSlow,根据 YSlow对网站的分析报告,逐条进行优化即可。下面只是总结一下我在优化我们网站时针对YSlow分析生成的报告中需要配置服务器端的部分: 1.Add Expires headers 在HTTP/1.1中,Expires headers出现在Caching in HTTP中,用户通过浏览器第一次访问我们的网站时,会请求很多静态文件(css,js,图片等),我们可以通过添加Expires headers来缓存这些文件,以Apache为例: 先注释掉httpd.conf里面的 LoadModule headers_module modules/mod_headers.so 在文件末尾添加上: ExpiresActive On ExpiresDefault "access plus 1 year" 这里我将文件的有效时间设置为1年。 关于Apache mod_headers的文档,查看这里 2.Compress components with gzip 用gzip压缩服务器端和浏览器端传输的数据,可以大大减少流量,按照YSlow中的说法:“Approximately 90% of today’s Internet traffic travels through browsers that claim to support gzip”,所以我们大可启用gzip压缩来减少流量。也是以Apache为例: 注释掉http.conf里面的 LoadModule deflate_module modules/mod_deflate.so 添加 DeflateCompressionLevel 6 AddOutputFilterByType [...]
平台进入了整合阶段,开始看之前做前端的同志们的成果,发现了不少问题,其中最严重的问题莫过于标签的滥用了。比如下面的标签滥用: <h3><label>XXX</label></h3> 而事实上我们完全可以用 <h3>XXX</h3> 就可以达到目的。 看似很简单的一句,两种方法达到的效果是一样的,但是显然第二种根据有可读性,也更符合HTML这种标记性语言的定义,在Wkipedia中,对于 HTML的描述是这样的: 超文本置标语言(英文:HyperText Markup Language,简称为HTML)是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种置标语言。HTML被用来结构化信息——例如标题、段落 和列表等等,也可用来在一定程度上描述文档的外观和语义。 我们编写代码,达到预定的功能是远远不够的,写出既达到预定功能,又遵循该语言的特性,规范,可读性高,优雅的代码才是最终目标。特别是多人合作进 行项目开发的时候,显得尤为重要。 什么才算是可读性高,优雅的代码。命名规范,代码规范,这一些在《代码大全》的第11章“变量名的力量”中有很详细的探讨。林锐博士的《高质量 C++/C编程指南》也是应该好好阅读的。 另外一个我觉得很重要的就是要写出符合语言特性的代码,最简单的例子,把C当成面向对象的语言来对待,去构造一堆结构来满足自己“OO”的欲望,这 是编程的大忌! 根据语言的特性,以及类库是否能够满足我们要完成的功能目标来选择语言,而不是用语言来束缚自己,最终画地为牢,限制了自己的发展而已。譬如要用到 面向对象的方法来设计,那么完全可以选择C++或者Java,完全没有必要抱着C的大腿不放,刻意用C去模拟面向对象方法,或许最终可以到达预想的功能, 但是之间付出的代价却是比选择一门面向对象语言要多得多。
上次同学介绍帮忙做商业项目,赚了一点钱,一直想买个相机,刚好有钱了就买了。本来看好的是柯达的 Z1015IS,不过当下决定要入手的时候。京东、新蛋相继没货,淘宝上的商家也是基本没货。后来看中了奥林巴斯 SP-565UZ,20倍光学变焦,比Z1015IS只好不坏,除了不支持高清摄像,不过这个无所谓。周五的时候跟女朋友一起抱着逛逛的心态去天河电脑城逛逛,随便问了一家,没想到居然有港行的,讨价还价一番,最终买了。 相机(全套配件)+三脚架+充电套装+屏幕膜+镜头布+宇瞻4G TF卡+奥林巴斯原装相机包,花了俺1910大洋。暑假回去给俺老爸老妈还有俺奶奶拍拍。。难得发展了除计算机之外的爱好。 这是俺小试身手:
《小强升职记》里面提到了关于时间黑洞的问题,对于现在的大学生来说,更多的是“网络时间黑洞”,很多人打开电脑,看看电影,玩玩游戏,泡泡论坛,收收邮件,看看新闻…刚才想做的事情早抛到脑后去了。 要摆脱“网络时间黑洞”,我觉得应该从使用网络的习惯开始。 武装好浏览工具 很多网站,为了增加浏览者的点击次数和浏览时间,都会增加很多吸引用户眼球的模块,比如在各大门户网站浏览新闻时,侧边栏会有”八卦新闻”,或者其他很吸引眼球的新闻。很多时候,我们会这样跌入网络的海洋,不停的跳转跳转。所以,屏蔽这些分身的信息是很重要的手段。我以Firefox浏览器为例子来说,通过Adblock Plus 这个扩展,我们可以屏蔽掉这些干扰信息.如果仅仅是通过Adblock Plus提供的过滤列表来过滤广告的话,还不能达到我们所要的效果 , 感谢 Adblock-chinalist为我们提供了另外两个过滤列表,综合起来用,效果极佳。 1. Adblock-NoSex-NoEnt 说明 2. Adblock-Strict 说明 如果你已经安装了Adblock Plus,那么直接点击下面两个链接就可以订阅过滤列表: 1. Adblock-NoSex-NoEnt 2. Adblock-Strict 养成良好的阅读习惯 接下来,就是浏览方式的习惯了,很多人还是习惯于打开网站,浏览网页来获取信息,这样不仅效率低,而且容易丢失自己的初始目的,完全可以通过RSS阅读器来聚合信息,通过RSS阅读器不仅阅读效率高,还有就可以避免“标题党”的烦恼,同时,对于自己所要了解的信息也能够及时掌握,而不至于迷失在网络的海洋。这类阅读器很多,国外有Google Reader,国内有抓虾,鲜果,有道。。。 我用的是Google Reader,因为它与Firefox另外一个扩展:Google Reader Watcher 相搭配,可以实现对信息的更新和把握的平衡,设置好提示时间,Google Reader Watcher会自动获取你Google Reader里面的未读订阅数目。 RSS阅读器虽好,但是滥用了之后也会产生很大的麻烦,浪费很多时间,我曾经就有一段时间患上了“RSS强迫症”,不把Google Reader里面的所有未读项清空,就不罢休,后来调整了一下订阅策略还有阅读习惯,效率大大提高。具体我是这样做的: 1.提高Google Reader Watcher 的更新时间,提高到30分钟以上,并每天规划出一段时间来消灭未读项,比如饭后休憩。 2.对订阅项进行清理、分类。Google Reader提供了(Trends)可以让我们来分析自己的阅读时间和阅读程度,根据这个报表,退订某些重复的,然后我做了以下工作: 把一些精彩文章频出,更新较慢的博客归类到一起,对待他们,仔细阅读; 把信息量大的,诸如cnBeta之流归在独立一类,对待这些更新,以较快速度浏览; 把更新较多,但是信息量不大的,归为一类,快速浏览。 把最重要的放在最显眼的地方 使用GTD的原则来管理自己的日常安排,我使用的是Remember The Milk,将它设置为浏览器首页,这样可以尽可能提示自己该做什么,而不至于迷茫在网络中。 “隔离”通讯工具 在学习或者工作的时候,关闭QQ,MSN, 邮件到达提示等诸多提示功能,避免受到干扰。现在微型博客也是很流行,当Follow的人多了之后,更新的信息总是会打断真正做的事情,我采用的也是延长更新时间的方法。尽量调整到30分钟以上,如果需要全身心投入去做事,那么还是全部关掉吧。 说了这么多,其实归咎起来就是一个原则“屏蔽无谓的干扰源,专注于有用的信息”。 如果你有什么好的方法,欢迎留言分享或者EMAIL跟我交流。 — END [...]
最近确实比较烦心,不知道自己应该向广度或者深度进行学习,刚好在TopLanguage上面看到相关讨论,由此看到了Joel1的另外一篇文章:《给计算机系学生的建议》,之前已经看过他的一篇文章《Java语言学校的危险性》收益颇深,现在已经有人在翻译他的一本书《Joel on Software》,强烈期待,强烈推荐!现在全文转发《给计算机系学生的建议》,大家一起共勉: 给计算机系学生的建议 作者: 周思博 (Joel Spolsky) 译: Chen Bin 2005年1月2日 虽然大概一两年前我还在夸夸其谈桌面应用程序是将来的潮流,大学生们现在还是偶尔向我请教职业发展的问题。所以我把我的建议写下来。以供学生们阅读,嘲笑,忽略。 大多数锐气十足的学生从来不向前辈征求意见。在计算机科学领域,这样做是正确的。因为前辈们很可能说些“在2010年前,市场对于那些只会敲击键盘的代码工人的需求将会超过一亿(因此前景是乐观的)”,或者诸如“Lisp语言现在真的很热门”。 我 和那些前辈也差不多,当我给别人建议时,实际上我不知道自己在说些什么。我是如此的落后于时尚,以至于连AIM也搞不明白,而不得不使用 email(恐龙时代的产品,在那个时代,音乐是刻在扁扁的的圆圆的盒子上,噢,那种盒子叫cd)。(译者按:我认为祖儿这里在说反话,后文很多地方作者 都在说反话,读者尽量理解这种美国式幽默吧。) 所以你最好不要理睬我将要说的,你应该立刻去制作某种在线交友软件。 然而, 如 果你喜欢编程,那就感谢上帝吧:你属于幸运的少数人,这些人喜欢工作,他们的工作可以保证他们能过上舒适的生活。大多数人没有这么幸运。对大多数人来说, 工作是不愉快的,忍受工作的目的攒钱,是为了在年满65岁退休后能过上自己想过的生活。如果他们想过的生活不需要灵活的膝盖,明亮的眼镜,轻盈的脚步的 话。 现在让我回到主题,我将提供一些建议。 好了,不罗嗦了,下面就是Joel给计算机系学生们七条免费的建议: 毕业前学会写作 毕业前学会C语言 毕业前学习微观经济学(microeconomics) 不要因为某些非计算机课程枯燥无趣就敬而远之 学习有大量编程实践的课程 不要担心工作都跑到印度去了 好好做夏季毕业实习 让 我逐条解释这些建议。但解释之前我要说明一下,如果因为这些建议是Joel的建议你就打算无条件地接受,以至于连我的理由都想跳过,那么你就太单纯,太容 易被别人骗了。如果你是那种单纯的人,我还要给你第八条建议,找心理医生咨询一下如何培养自信(self-esteem)。 毕业前学会写作 如果Linus Torvalds不懂如何布道的话,Linux会成功吗? 正象每一个黑客,Linus精通写作,他知道如何准确地在email和邮件讨论组中使用书面英语表达自己的思想,所以他能够从全世界召集大量志愿者为Linux工作。 你听说过最近风靡全世界的极限编程(Extreme Programming)吗? 即使你不懂什么是极限编程,你至少听说过这个词。为什么?因为宣传极限编程的人都是天才的作者和演说家。 就看看你身边的那些小型的软件开发组织吧,最有权力和影响力的人是那些可以用自信,准确,舒适的英语交流的人。好吧,我承认这些人也许言过其实,但是你无可奈何。 一个合格的程序员和一个伟大的程序员的区别不在于知道多少种编程语言,不在于他们是喜欢Python或者Java,而是在于他们是否擅长表达。他们能够说服,所以他们获得权力。他们能够写清楚明白的评论和接口文档,所以他们使得别人不用重写, 而可以重用他们的代码,否则他们的代码就是毫无用处的。他们也能够写出清晰的用户手册,于是最终用户可以理解他们的代码是做什么用的,明白了他们的工作的 价值。sourceforge埋葬着许多精美的代码,这些已死的代码无人使用,因为代码的作者很少写(或者根本不写)用户手册。 我不会雇佣一个不懂写作的程序员。如果你擅长写,你就很容易找到工作,紧接着你就会被要求写技术规格文档,这意味着你已经被管理层注意到了。 大学里有一些课程,要求你做很多的写作练习,不要犹豫,赶快参加这些课程。不要错过任何要求你每周或者每天练习写作的课程。 给自己建立一个网络日志(weblog)。在上面写的越多,你会写地越容易。写地越容易,你就写地越多,这是一个正向地循环激励。 毕业前学会C语言 我 可没有说是C++。虽然现在用C的工作不多,但是掌握各种编程语言的程序员事实上用C来交流(lingua franca);更重要的是,C比某些“现代”语言更接近机器语言。我不管现在大学里在教什么流行的垃圾语言(trendy junk),你至少得花一个学期接近机器。否则,你不可能使用高级语言写出高效的代码。这意味这你不会有机会写编译器或者操作系统,也许这是更好的编程工作;别人不会相信你能够为大项目设计架构。无论你知道多少高级的控制结构,知道如何进行错误处理,如果你不能解释为什么while [...]
引用自维基百科:地球时刻 地球時刻(英语:Earth Hour)是一個全球性節能活動,於3月29日本地時間晚上8時至9時,家庭及商界用戶於該時段內關上電燈及不必要的耗電產品一小時。藉此活動希望能推動電源管理,減少二氧化碳的排放量,並減少過量電燈所引起的光污染問題。與此同時,當天亦是美國國家暗天週2008的開始。 該活動由環保團體世界自然基金會澳洲及悉尼晨鋒報(Sydney Morning Herald)合作發起,並於澳洲悉尼當地時間2007年3月31日,晚上7:30至8:30期間舉行了第一次活動。地球時刻2007有近二百二十萬人參與,相信節省了當天悉尼市市電電源的2.2%至10.2%。踏入2008年,該活動被推廣到世界各地,全球40多個城市,近380個城鎮接力執行該活動。 网易专题:“地球一小时” “地球时刻”在中国是28日晚上20:30,到时候大家一起行动。
