Chen Yangjian's Blog

Carpe diem - Seize the day

程序员的择业标准

| Comments

面试的时候,面试官问完一系列问题,往往会问,你对我们公司有什么问题?初出象牙塔如我,往往很单纯,问点有的没的,用什么技术什么的,也就扮鹌鹑状曰没问题了。博客 Joel on Software 曾经写过 The Joel Test,列出了 12 大择业标准,来作为程序员考量一个公司的基本指标:

  • Do you use source control?
  • Can you make a build in one step?
  • Do you make daily builds?
  • Do you have a bug database?
  • Do you fix bugs before writing new code?
  • Do you have an up-to-date schedule?
  • Do you have a spec?
  • Do programmers have quiet working conditions?
  • Do you use the best tools money can buy?
  • Do you have testers?
  • Do new candidates write code during their interview?
  • Do you do hallway usability testing?

我有点入错行的意思,做 IT 多过做开发,经常是做些服务支持方面的工作,需要面对的开发环境也有点囧。例如,就不小心用过传说中的 SCCS (版本控制系统),必须用 csh 操作的 UNIX,将近 200 行的 SQL,比 SCCS 好些的 ClearCase 等等。不过静下心来细处之,还是都可以搞定的。

以上,作为给要找工作的程先生们的建议。祝工作顺利。

Google 的 DNS

| Comments

DNS 全名 Domain Name System,类似从“中国,浙江大学,玉泉校区”到“浙江省,杭州市,浙大路,38号”之类的解释服务。一般 ISP(Internet Service Provider)都会提供自己的域名解析服务,良莠不齐。也有独立的 DNS 公司,例如 OpenDNS。虽然它名字里头有个 Open,但是并不是指开放源代码什么的,而仅仅是对 DNS 的开放的一个诉求。OpenDNS 的很大一部分营收,来自于跟 ISP 提供的 DNS 做法相似的域名解析失败时的重定向。如果域名解析失败(找不到),就会重定向到 OpenDNS 自己的一个搜索页,获取广告利润。

所以当 Google 的 DNS 隆重推出,无他而专业解析域名,也不会做些强制重定向等恶心人的事情的时候,很多人包括我都认为 OpenDNS 就没啥花头了。而 OpenDNS 的创立者 David Ulevitch,则为此著文一篇,说 Google 会收集并滥用用户信息云云,搞一套 FUD 的东西吓唬小朋友。确实不是个好反应。

Google claims that this service is better because it has no ads or redirection. But you have to remember they are also the largest advertising and redirection company on the Internet. To think that Google’s DNS service is for the benefit of the Internet would be naive. They know there is value in controlling more of your Internet experience and I would expect them to explore that fully.

OpenDNS 贵在先行,但是要跟 Google 的技术竞争实在有难度,可以参考三个域名解析(Google、OpenDNS、4.2.2.2)的速度对比。因为木有贵国…… 就不贴数据了。

使用 Google DNS 的办法很简单,请参考 Google 官方文档

缓存控制

| Comments

最近在看一个《手把手教你在 Google App Engine Python 版上开发博客》,之前一篇博文中也提到了。开篇第一章,说到缓存控制。

需要考虑到的差不多就两种:静态文件,在客户端呆多久都行,其一;存储在数据中的大段数据,或者动态生成的其他内容,图片、压缩包等等,其二。参考 Yahoo 的最佳实践,对静态文件需要做的就是尽量减少 HTTP 请求数,弄些 Sprites、Gzip 掉数据,并在返回数据的时候在表头里加上 Expires 或者 Cache-Control。如:

Expires: Thu, 15 Apr 2010 20:00:00 GMT
Cache-Control: max-age=220752000; must-revalidate

格林尼治时间,max-age 的单位是毫秒。后边这个 must-revalidate 用来处理网站还在频繁更新、动态数据的情况。让浏览器请求数据时先向服务器确认数据有没有更新。校验的方式有两种:If-Modified-Since (HTTP 1.0)和 If-None-Match (HTTP 1.1)。如果确认数据没有变动,便会返回一个 HTTP 304。

服务器返回表头示例:

Last-Modified: Thu, 15 Apr 2009 20:00:00 GMT
Etag: "3e86-410-3596fbbc"

浏览器处理的时候就会记住这些,下次请求是,便把这些数据丢回服务器,看看有没有变动:

If-Modified-Since: Thu, 15 Apr 2009 20:00:00 GMT
If-None-Match: "3e86-410-3596fbbc"

如果变更日期较大(HTTP 1.0),Etag(Entity Tag,HTTP 1.1)不匹配,服务器就不再返回 304,而是返回 200 以及更新后的数据。

效果如何,可以参考 Yahoo 的一篇实践测试,也可以试用鹿木;具体在 App Engine 里头如何做,使用自带的 webapp 框架的话,可以看文首提到的教程,用 django 的话,可以看在下的(serve 函数便是了)……

第三方评论系统

| Comments

今天在 reddit 上看都有人宣传自己的用 App Engine 开发博客教程(Python),提到博客的评论功能时说,自己做的东西再怎么折腾也比不过人专业做这个的,不如偷懒,现成的拿来直接用,便推荐了 DISQUS Comments

昨天则遇到个让屏幕自动调节色温以使对眼睛更和谐的 F.lux,自动根据乃的经纬度判断日出日落从而调节屏幕色温,昨天试用了一下下,好像是有好睡觉那么一点… 该网站也用了一个第三方的评论系统,叫做 JS-Kit Echo。长得像 Twitter,也可以直接像 Twitter 那样聊天,也跟 Twitter 一样是 Infinite Scroll。收年费12刀……

上面这两个评论系统,做得事情其实也简单。提供评论相关的服务;使用 JavaScript 来实现大部分功能因而十分易用;评论功能做足,可以回复、顶贴、菊爆举报,以方便馆里猿管理;接受 OpenID 等,免去再注册。

小型的工作室(视觉设计、建筑设计、美术作品、摄影展示)、学校实验室、研究所、希望通过建立自己的网站而不是贴贴牛皮癣以将广告做到网上的商业机构,对网络解决方案的要求并不会复杂,以后有谁找到我,一律考虑用 Stacey 快速建立、到处乱插评论系统做用户回馈,同时提供个邮箱,连数据库都免了,整个世界一片和谐清净。

比 Chrome OS 早十年的 MSN Companion

| Comments

MSN Companion 想法跟 Chrome OS 一样,极简化的硬件设备,极低调的宿主操作系统(Window CE),和最新的浏览器(Internet Explorer 4),为用户提供最快速的网络解决方案。MSN、Hotmail、最早于 1999 年的 11 月份宣布,2000 年中的时候开始生产,然而市场反应并不好,2003 年十月就不再支持了。

杰克的鹿木

| Comments

又是一个奇奇怪怪的名字……

开门见山,网站在此:Jake’s Lomoo

原本的立意是,做个展示型的网站,让诸位都可以分享自己的家乡;而时间、能力所限,目前还只能做成一个相册。评论功能原想山寨 reddit.com,似乎目标太高,有点搞不掂。目前的效果都很简单,许多交互的部分也只是服务端动态页面来做,而非用 JavaScript 来淫荡。效果可以看我的 flickr 相册,这里贴一张截图:

学校放假了

平台是 App Engine,用的开发框架是 django,语言自然是 Python。从现在我自己都懒得去用的 gainorspend (-_____-b),到这个不知道多久以后会失宠的相册,自认为学到了些东西,稍微成熟些了…… 但是离调戏 django 以及其他各色 Python 的框架啦、库拉 (sqlalchemy, web2py 什么的) 还很远诶……

扯远了,扮文青比扮 Geek 容易许多,所以,对我老家鹿木乡有什么想法的,请不吝评论,我都会去看的。规划中的功能是评论与图片的 Karma 计算,以及首页的亮点评论汇集。像虎扑的步行街,就有个功能叫做“亮了”,有点意思。但是不得不说传统列表、分页形式的论坛是在是太浪费人的时间了,注意力全部分散到发帖人的头像、签名档、和不停地去滚动去了。

悟空、唐僧和妖精

| Comments

【第一天】唐僧:悟空,你變成套套吧,今天為師要親自收拾這個女妖精。

【第二天】唐僧:悟空,你變成偉哥吧,今天為師要親自收拾這個女妖精,直到她跪地求饒。

【第三天】唐僧:今天好無聊…悟空…你變成女妖精吧…

【第四天】唐僧: 悟空,為師已經厭倦這種生活了…你把我變成女妖精吧…

【第五天】唐僧: 悟空,你今天變成為師吧!

【第六天】唐僧: 悟空,你今天不用變了…

ms 很老了。via

新的 GPL

| Comments

彪蹄党一回,这里说的 GPL 是指 The Go Programming Language, Google 新搞出来的一个语言。三个主要开发者里头,Ken Thompson 是唯一我认识的。 他倒有趣,很较真地把 CREATE 写对了这次

Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: “I’d spell creat with an e.”

不过,这语言现在还并不成熟,尚未到可以大规模应用的阶段。而且,去看了一些 示例代码,语法有点淫荡…

语言名字(Go)还不小心 跟别人重复了……