2007年08月28日

这个暑假的一部分的精力放在一个Web项目上。从开始到现在规模已经比预想的要膨胀许多,使用到的东西从HTML、CSS、Javascript 直到后来的 PHP、Smarty,紧迫性的任务让我体验了快速应用一种从前没有接触过的编程语言快速投入开发的经历,得益于自己对于编程的不成章法的基础知识,结果也还算是比较满意。作为一个技术外包来做一个完整的项目,最让我头疼的还不是程序,而是UI。自己暗暗决定如果以后还做的话,无论怎样也要把UI再包出去才好。(也希望有感兴趣的朋友联系我)随后的任务就是把Stage1阶段的成果做成一个Bundle给用户做展示,需要施展三寸不烂之舌的功夫、极大的耐性、以及接受客户狂批的准备才行。
以上的事情占去了不少时间。而结果通常都不算非常令人满意:客户需要在某个门户网站的页面上做链接,如果该门户网站不同意(很有可能),那么整个项目也可能就废弃了…… 重大的技术难关克服以后,居然要面对这样的问题。自己努力目标能否实现居然取决于门户网站上的一个链接,些许讽刺。我想这或许也就是大权力对小命运的影响映射在周遭生活中的一个写照吧。然而影响更大的事情都很多,不是么?(参考阅读

剩下的一部分时间,交给自己:去看了几乎所有能在网络上找到免费电影专场,这些欧洲国家资助的文化活动的确能让别人对他们的文化和语言产生不少兴趣;在看电影回来的路上走遍那些还不熟悉的大街小巷并全部记住它们;用Python写能帮助自己生活的程序;一张一张得看那些已经堆得好高的没看的DVD;读从图书馆借的小说;虽然看来时间比较紧凑,还是抽空学了些英语,不让自己留遗憾。

最后一个暑假,就这样吧。我知足了。

2007年08月22日

由于好久好久没有去买盘,卖盘的老板都不认识我了,仔细打量许久,还是一脸狐疑。还好后台的老板还认识我:“好久没来了,得有一年半了吧……”


高一高二那阵几乎每隔一天放学的时候都会骑着自行车往碟商那处跑,书包里装满了能淘到的各种类型的电影。然后在家里慢慢欣赏。现在,看电影需要 预先筹划,对着半年甚至一年前买的高高的一摞盘中挑出一张自己喜欢的,然后抓紧时间看,像完成一件任务一样。观影方式变了,但我觉得快乐还没变,或许 时间少了但那种激情还在,我想这也就够了。

上次(2月份)买的盘到现在只看了两张,今天买的这些再加上更久以前买的,足够我看一阵子了。或者说这些看不完的电影的存在,也是一种生活方式吧。

2007年08月18日

走在街上时想到,为什么自己的那些小程序要开源?那些小程序,本可以自己默默使用的,为什么要开源?

从个人的原因来讲,我想不外乎以下两点:

  • 展示,任何通过自己的努力所创造出来的东西,相信每个人都会有展示的愿望。
  • 分享,自己创造的好东西,也没有理由不分享给大家。

然而把自己所些的小软件开源,也让我有些莫名其妙的顾虑。它们的代码是不漂亮:变量名、函数名不漂亮;对于OO的不完全甚至可说是很糟糕的理解;甚至对于 所使用的编程语言的应用也比较生疏。这样不漂亮的代码,惭愧地觉得使之开源有些脸红。再者,众多开源项目的最主要的目的是为了团结有技术的程序员,使更多 的智慧可以通过组织,贡献给这个开源软件,使之进化。而不漂亮乃至丑陋的代码,好似天生就把这种进化的可能扼杀掉了。

听起来似乎有些消沉。但,开源从实质上,是有这样的一个终极理由的。那就是,开源是一种精神。或许自己的小程序本身并不能影响什么,但是这些“小程序”们 不也曾经是如今庞大复杂的开源软件的始祖么?即使自己的程序别人用不上、修改也麻烦,但是至少,开源的理念被传播了,人们知道了原来软件还可以是这样免 费、自由的。这就是对私有软件最沉重的打击,这才是(至少)让(计算机)世界变得更美好的一个有效方法。

Sparkle 会在完善些之后开源。

2007年08月11日

John Carmack 在Quake III发行之前说过:“如果Quake III的销量是我们以前产品最好销量的两倍,我将建立一个持久稳定的网上动作游戏世界。” (自《永远的雷神》 ,英文原文不可考)

八年之后,当年Quake III的引擎id Tech 3已经是GPL协议之下的开源软件,Quake III游戏本身则是一切其它竞技类FPS的标准。在QuakeCon 2007上,John公布了Quake Zero,即通过Web Browser启动的、广告赞助的、永久性免费在线Quake III世界。我突然就想到了文章开始的那句话。这个八年的承诺,着实非常有份量。id做的事情,为什么会有那么多人膜拜?因为这些都是非常伟大的事情,不 仅推动了游戏业的发展,而且惠及开源社区、计算机图形科技的进步。业界里,恐怕也只有id有这样的份量吧。

突然想起了大宇,显然现在的大宇已经不是我玩游戏那个时代的大宇了,但还是希望它一切都好。

参考阅读:
New Quake Games and More – About next Quake Games.
Quake Zero Coming to a Web Browser Near You – About Quake Zero

2007年08月10日

终于基本实现了我一直以来十分需要的,一个可以帮助自己记忆单词的软件。

Sparkle

web端服务使用Karrigell,数据库使用Karrigell内置的buzhug数据库

screenshot of sparkle

我需要这个工具的原因,是因为我一直以来是一个忠实的《词汇大爆炸》用户(该软件已经停止开发),自从2004年以来已经累计使用它背了几百个小时的单词,从中获益菲浅。可以说《词汇大爆炸》是使用ubuntu之后,要使用Windows的唯一理由。

我曾经的计划是做一个《词汇大爆炸》的clone,发现自己水平可能比较难做到。在这种类别的开源软件里面,我还没有找到比较像《词汇大爆炸》这样的(惭愧,还没有用过黑客背单词)。后来觉得只要有一个可以基本帮助自己背不熟悉的单词的东西也就可以满足了。于是在开发tarsusa的同时,这个东西其实已经在着手准备,只是自己一直都没有下定决心一口气做出来。

前一阵想把台式机上面许久不用的Windows重新安装一下,没想到安装过程中CPU过热会导致频繁关机,并且由于安装程序重写了主引导区,我还需要费时恢复GRUB…… 这促成了我和Windows说拜拜并且写完sparkle的原因。具体到架构如何实现、使用什么界面形式这些问题在我脑海中已经构想了许久,所以大约两个晚上就写了出来。

sparkle总体的结构:一个单词数据库记录平时遇到的不认识的单词(我已经积攒了一段时间了),然后像词汇大爆炸那样,依据用户对单词的熟悉程度,随机抽取单词和解释,由用户进行选择形式的做答,用户较熟悉的单词会较少出现,不熟悉的单词会经常出现,以此达到学习的目的。

当然这个程序还远没有《词汇大爆炸》那种规模,没有应用艾宾浩斯记忆曲线原理,也没有针对用户行为的、更细致的词义混淆等等,还只是一个简单的小程序。目前通过web界面来实现,但事实上并不局限于web界面,实际上任何连入网络能够执行Python程序的平台都有可能实现。比如可以执行Xbox Media Center的破解版Xbox,甚至是Symbian S60 Smartphone。我希望能够有时间、有精力、有技术来实现以上那些功能。

去年的这个时候,也是使用同样的工具完成了自己需要的日程管理软件tarsusa,若问我用最好的语言Python完成这些简单的工具是什么感觉,那只有简单的一个字,爽。

参考阅读:
    《tarsusa Release RC》