Chen Yangjian's Blog

Carpe diem - Seize the day

郇山隐修会和阴谋论

| Comments

百度百科都很负责任地告诉我,该协会的始作俑者不过是四个无聊的法国人,因其想法足够惊悚足够麻辣,不断被半记录半传奇性质地著书立说,才能成功在我初中的时候骗到我…

阴谋论一贯有其市场。9/11 是米国人自己的把戏;米国人从未上过月亮;隐匿在驴象背后的是一个神秘的公司,它决定了 JFK 的生死甚至 Kennedy 一家的接连灾祸等等。它们也不断地被拍成电影、写进小说,甚至以纪录片、实录等形式出现。在各种电影里头作为情节的孜然,更是被添加得不亦乐乎。比如安东尼·霍普金斯主演的《Nixon》,在尼克松第一次选举输给肯尼迪时,手下人有句很意味深长的“What if he (Kennedy) were dead?” 而以 JFK 刺杀案的调查作为剧本的《JFK》,更是讲刺杀案情的扑朔迷离颠来倒去讲了个遍,凯文·科斯特纳主演的 Jim Garrison 十足精彩。

再说回郇山隐修会,该秘密协会据说成立于公元1099年。千年以来,历任的 Grand Master 包括了各种各样的文艺复兴男(Sir Isaac Newton、Leonardo da Vinci、Jean CocteauSandro Botticelli)。其目的则是为了保存耶稣与他传说中的“妻子” Mary Madgalene 在人世留存的血脉。从 1956 年被法国人 Pierre Plantard 在法国某农村建立,经过欧洲各地人民的润色,经过两本著名畅销书(《The Holy Blood and the Holy Grail》和《The Da Vinci Code》)的丰富,郇山隐修会噱头十足。前者的三个作者之一,Michael Baigent 还说服了 BBC 制作了四集纪录片讲述此事;后者作者 Dan Brown,则煞有介事地在序言中宣称,本小说基于史实写就,无视学术界研究郇山隐修会的成果。

Sextonight?

| Comments

http://imgur.com/n61Fi.png

同学龟龟有次在 QQ 上很严肃地跟我说网络n大定理。其中之一是,所有的话题都会被色情化。如果还没有,那就是走在被色情化的康庄大道上。

有好事者教女朋友编程,尽心尽力,用的是自己编的教材。介绍条件语句 if 与循环控制 while 的时候,使用了题图。围观群众指出,此版本有显著 bug,修复如下

http://imgur.com/M8xke

程先生跟网络低俗搞到一起自然不是新闻,est 童鞋就曾经转帖过某个论述,称计算机科学与社会学算是紧邻。有人的地方自然就有性。所谓低俗本也是生活中笑点与活力的本源之一。就像 IMDB Top 250 木有了性和暴力,只怕会失色不止一点点。Andy 在肖申克的经历只是温吞水,典狱长也不可能是个腐败分子;教父三部曲根本就没得拍,Vito Corleone 要是老豆还在,哥哥尚存,妈妈也活得好好的,根本就不会逃离家乡嘛。

扯远了,再说到程先生的事情。sudo 是程先生的秘密武器,所以看到以下命令千万不要见怪。

$ sextonight
Access denied.

$ sudo sextonight
To proceed, enter your password, or type Ctrl-C to abort.

Password:

sextonight completed in 0m:42s

$

然后戴着有色眼镜再去看第一次使用 sudo 时它告诉你的 motto,就会觉得这三句话真是至理明言:

1. Respect the privacy of others.
2. Think before you type.
3. With great power comes great responsibility.

再说 Web Development

| Comments

比较讽刺的是,虽然看了许多前端的、后台的书,关注了许多 UED,订阅了 /r/web_design (这个 subreddit 其实没啥花头),做了一些 demo 网站,但是我从未正经做过牛鼻的。

不过应该不妨碍我在此大放厥词。道理是,我已经承认自己不要脸了,你们再调戏我也无用 XD。

今次要说的是,网站开发的时候遇到的种种麻烦事,算是对 两个 讨论 的总结。

第一个麻烦,是 Browser Support。主流浏览器,或者以渲染引擎作计数,有仨,Safari、Chrome 等所使用的 Webkit,Firefox 所用的 Gecko,IE、Maxthon、Green Browser、The World Browser 等等披着n种皮的 Trident,当然,还有 Opera (但是……你真的很小众,欧洲的情况应该好很多)。而网站开发的时候,先抛开后台,前端就已经有三种语言、四个浏览器、三种操作系统(不同平台上的浏览器行为可能会出现差别,最显著的是 OSX/IE 和 XP/IE),再加上各种语言的版本(JavaScript、CSS、HTML/XHTML)。以上,其实并非我的总结,只能说是对 YUI 某工程师的 PPT 的转述(Nate Koechley)。

不过,如今的情形其实已经没那么糟。XHTML 已经可以就义了,它为 HTML 5 和 HTML 4 Strict 做的备胎工作圆满完成。JavaScript 与 CSS 在桌面与膝上电脑上的浏览器支持已经越来越好,PPK 甚至因此觉得有点小失望

A year ago I already noticed that I became less and less interested in measuring the desktop browsers’ compatibility. Everybody just supports all the standards, even IE, and in my last round of desktop testing I did not encounter even one juicy new bug. Great for web development, boring for me.

他的主要工作已经转为手机浏览器的兼容性测试。

事情在往好的方向走,但是尚不足以认为可以以任一浏览器作基准开发 one fits all 的 webapp。有完美主义者总觉得各种各样的 hack 太让人讨厌,总因此认为这是不对的。我也算是其中一份子。不过事实摆在眼前,除了“Swallow my dignity, along with six tequila.” 确实暂时木有啥好办法。

第二个麻烦,也是最大的麻烦,就是客户。客户永远是小气的,对程先生们总是表示不理解。“我真搞不明白你们这些人,一天下来写三行代码。你们要做的就是打字而已诶”。详情请围观 clientsfromhell

Client: “This is absolutely wrong. Where’s all the HTML. We want the HTML?”

Me: “I don’t understand. All the files should be on the flash drive we gave you yesterday.”

Client: “Well… whats all this php jumbo-mumbo?”

Me: “PHP is just a language. It does all the work for your CMS. You can’t have CMS with only HTML files.

Client: “I get it. You just don’t understand. WEB-SITES-ARE-MADE-OF-H-T-M-L… or did you not learn that in whatever school you went to?”

Me: “I didn’t go to college.”

Client: “I’m working with a bunch of idiots.”

通常 freelance web development 的情节线路图都是这样的:

Profit |----------| Grief
                ^

博客搬家了

| Comments

http://www.dotnil.org

原本应该发到 http://dotnil.yo2.cn 的,可惜已经差不多将近4个星期上不去了。前些天改本地 DNS 解析,才终于又刷进后台去,把文章导了出来。

没想到已经写了将近300篇文章。

如果你看到本文,就把 dotnil.yo2.cn 忘记吧。如果你是使用 google reader 订阅本博客的(大家都在 RSS),请务必使用 feedburner 的地址,http://feeds.feedburner.com/dotnil 。因为如果下次我又得搬家了(God forbid),这样会方便点。

不会像这次,准备不足,都无法通知到原先的读者(我想,两位数的读者应该有的吧?XD)。

元旦结束,憋屈的娱乐活动

| Comments

昨天去K歌,朋友的女朋友是某艺校学声乐的;今天去台球,周老板太唬……

三天嗖一下就过去了,真快。09年末的时候,还说要想个2010年的计划,结果这三天啥也没想。倒是开玩笑地说过要在2010年买个数码单反相机,要把杭州所有的兰州拉面都吃并且拍一遍。囊中羞涩,先眼馋着吧。

古墩路上的沃尔玛开了,然而就开了一小半,绝大部分都尚在装修或者其他准备中,用广告围着。预计会很大很美帝国主义。

09年的最后一个晚上我和女朋友在四处晃,去港湾兜了一圈,去蓝田看ddmm们放孔明灯,找不到地方台球,找不到传说中的某某音乐吧。最后回家看电影,《浓情巧克力》。只可惜睿智的北风估计永远煽动不了我去游历,只能让我打些喷嚏,哈哈。Depp 帅得一如既往。顺便看到 Trinity。

10年,要做的事情应该如下:

  • 学车
  • 继续练吉他
  • 继续画画
  • 积极点 Freelancing
  • be nice play fair;不求让每个人高兴,只求自己不因人际关系而憋屈
  • 搬家
  • 看书,小说、技术、画册、传记,都行。多写点。
  • 继续保持博客更新

都不是目的性很强的事情,怎么方便怎么来吧。Carpe Diem。哈哈

Merry, Merry Christmas

| Comments

耶诞节,洋节庆,在国内的气氛一点不比外面逊色,搞得我很伤感。公司里好多人都休假了。yo2.cn 似乎也碰到公司注册之类的麻烦。我在家根本上不去,在公司里沿着海底电缆翻出墙外,又往墙里看,才能写这篇博客。2009 年也让人不顺畅,尤其是有个 TG 奶妈样盯着你的屁股告诉你说这里不和谐那个太低俗的时候。

不管怎么样,Merry Christmas 筒子们。耶诞节快乐。

Sheldon 说,耶稣其实是在夏天出生的,真正在 12 月 25 日出生的,其实是牛顿。懒得去考证,就此罗列一下,姑妄听之吧。

09 年小结

| Comments

2009 年快要过去了,店家纷纷打出“最后牛一把之类的广告”,不过牛年过去还早,还有一个多月嘛。

2009 年伊始,我买了魅族 M8 手机,而后找了张纸,记了几个 2009 年要做的事情, 如今看起来,算是任务达成。

做一个自己的项目。别一听“项目”就怕,未必需要是大东西,可以是 jQuery 的插件, 也可以是以前的豆箕的完善,也可以是 python 的学习成果。但是务求尽善尽美。

看掉两本书。精读。领域不限。

画上几幅画。可以临摹可以写生可以随便涂鸦,要求有始有终。

回弹完整的一首歌。吉他,不是简简单单的单音,用来伴奏的扫弦不算。所以,最接近的目标就是书上的《Yesterday》。

每个星期至少写一篇博客。未必是技术,就当高一时候的周记。

2009 年里头,牛鼻项目一个没做,小打小闹倒也折腾不少。Python 有关的,都丢在 Google App Engine 上, 有记账的,有算命的, 有AA的,有传图的。 jQuery 的东西,倒是一个没做过,有个n久以前的插件,叫做 columnfilter,代码十足丑陋,就不贴了。

至于之前说的豆萁,正研究着做牛鼻点。

画画倒是断断续续一直有去做,只是大多是小打小闹性质。30分钟到半个时辰的素描,都 不是很拿得出手, 往往拍了照片到电脑上处理的时候,会花更多的时间让它变得妈都不认识。

吉他曲子,《Yesterday》现在看来还是有难度,弹了首《Scarborough Fair》(毕业生主题曲), 凑合一下吧…

有许多事情是当初没想过的,比如认识了 Jessie,比如成了月光房奴,比如搞个人主页,比如第一次 freelance web dev

元旦过后,再去想 2010 年要去做啥。

最近二三事

| Comments

最近要做 flex,对此表示不熟。

看了几部电影,第九区、我在伊朗长大,都很不错。

买了几部小说,看掉了几本。王小波的《黄金时代》、《三十而立》、给李银河的情书《爱你就像爱生命》、以及与《爱你就像爱生命》印在一块的《绿毛水怪》。有些其实高中的时候都看过,那时候是高中语文老师那里借来,某出版社策划的时代系列《黄金时代》、《白银时代》、《青铜时代》、《黑铁时代》什么的。他的小说看起来真是舒服。记得那时还看《红拂夜奔》,述说大城市长安的往事。

此外,正在看《我们台湾这些年》,原来大家的经历也都相差无几,唯一感慨人家可以畅所欲言说好多政治以及他们的政治好乱糟糟(民主改革初期估计都这样吧)。

吉他都没怎么练。练了这么久,瓶颈了好多次,考虑是不是再去找老师学习。

注册了个域名

| Comments

http://www.lomoo.org/

就是先前说过的 Jake’s Lomoo,这个域名是9月份的时候在万网注册的,贵。

后台跑的正是 Google App Engine,根据 Stackoverflow 上提供的域名解析的办法搞的,但是因为 ghs.google.com 可能被墙,墙内访问情况时好时坏。这两天又可以了,所以就贴了出来。

国内的域名注册公司做的都不太好,子域名数目还会做限制,对域名在注册商之间迁移什么的也不友好。不像国外的,会直接把转移域名时的授权码直接告诉你。像万网,居然还要书面申请、提供叉叉证明、交10块钱手续费…… 瓦哥说万网就是骗骗小白的,此话真不假。

十一月份还注册了 Dreamhost 一个主机,然而就只丢了一个主页在那边,还顺便把赠送的域名浪费掉了,无奈又注册了一个域名。

目前 Dreamhost 的主机基本属于闲置,想不好要拿来做什么。这俩月打水漂了好多钱。该主机空间与流量尚有许多,有兴趣并且认识我的家伙不妨联系我,可以给你整个主页什么的。

Django 模板里头的递归

| Comments

有的时候,特别是实现类似 reddit.com 的回帖形式,想要树形显示数据,可以用递归的话就会很方便。然而 Django 模板系统的设计方针之一,就是抽离程序内部逻辑,结果抽离得好彻底,直接搞了一个标签(Tag)与过滤(Filter)的解释系统,让程序员们自己玩。

一般情况下,用用系统自带的也就够了,简化的模板系统确实对设计师会更为友好一些。但是牵扯到递归之类的实现,就麻烦了。第一次做的时候,可能想把模块拆出来,递归地去 include,像这样:

{# filename: list.html #}

{% for post in thread %}
   - {{ post.title }}
   {% if post.relies %}
   {% include list.html %}
   {% endif %}
{% endfor %}

但是这样是不行的,因为 Django 的模板解析有两个过程,编译(Compilation)与渲染(Render)。在编译的时候,post 到底有没有 relies 是无从知道的,递归也就无法开始或者结束。解决方式是:

{# filename: list.html #}

{% for post in thread %}
  - {{ post.title }}
  {% with "list.html" as filename %}
  {% with post.replies as thread %}
  {% include list.html %}
  {% endwith %}
  {% endwith %}
{% endfor %}

就差不多了。这个办法,来自 elsdoerfer.name

但是介绍此办法的作者对此也表示担忧,认为产品级的应用不应该使用这样的奇技淫巧,因为需要考量性能方面的问题(重复访问同一个文件)。按照作者的建议,也可以将数据前期在 view 里头准备好,再用模板显示出来。也有人觉得费时,认为还不如实现个 recurse 标签来得爽快。

Django 模板的标签与过滤开发规范写得很详细,可惜我愚钝,只会写点简单的 filter,复杂如 recurse 的标签,一直偷懒没去仔细研究,所以在 lomoo 里头,还是用的第一个办法凑合。先记到这里,回头再去搞吧。