Categories

Calendar

March 2009
M T W T F S S
« Feb   Apr »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

法喜寺斋饭之旅

本来已经睡了,但是似乎太饿了,睡不着,看来吃斋饭果然容易饿呀,所以还是决定起床来写一下今天去法喜寺吃斋饭的旅程(以及一堆乱七八糟的东西)吧。

路线如右图所示,在 mnxheng 的怂恿下,今天 GIP 之后大家就出发去爬山了,从玉泉校区老和山出发,目的地是去法喜寺吃斋饭。据 mnxheng 说斋饭巨好吃无比,而且只要四块钱,能吃到撑死。

GIP 结束之后,大家在办公室聊天等了一下 ZJG 过来的一些人,然后几位拿到了交流项目的同学到留食去 BG 了大家午饭,就出发上山了。哦,出发之前大家还去教超买了水,我也买了一瓶,不过最后我一直走到法喜寺也滴水未进,后来把水分给 xiaoyaya 和 prada 了。其实在吃斋饭的时候还是觉得非常口干的,不过有时候确实会有那么一些个奇怪的理由让你去坚持做一些奇怪的事。

for vs. each

虽然这个问题我是在 Python 里遇到的,但是用 Ruby 解释起来比较容易一些。在 Ruby 里,遍历一个数组可以有很多种方法,最常用的两种无非是 for 和 each:

arr = [’a’, ‘b’, ‘c’]
 
arr.each { |e|
puts e
}
 
for e in arr
puts e
end

通常我比较喜欢后者,似乎因为写起来比较好看,不过从效率上来说前者应该会稍微快一点,因为后者实际上是在遍历的过程中对每个元素都调用一个 lambda 函数来做的,虽然一般情况下并不明显,不过设置上下文并调用函数确实是有开销的,特别是在动态语言里面(不考虑 JIT 内联优化的话)。不过这次的问题并不是性能。然而确实跟“ each 对每个元素都会新建一个 scope 而 for 则不是”有关。

真·天气预报签名档

之前做了一个天气预报签名档,实际上只是显示了即时天气,这两天终于晴朗起来了(或者说,至少不下雨了),于是心情好更新了一下,顺便从 Yahoo Weather 上把未来五天的天气情况也抓下来放到图片里。总算对得起天气预报这个词了。

效果如右图所示。代码没有什么大的变化,只是实验室网络不知道为什么最近奇慢无比,由于新版本现在要下载不少图标,所以我加了本地缓存。缓存的办法很简单,就是把图标保存到一个本地文件中,要找出 URL 和本地文件的对应关系最简单的办法就是用 URL 作为本地文件名,不过通常 URL 并不是一个合法的文件名,因此,为了避免冲突,平时大家用得最多的办法就是对 URL 取一个 hash digest (比如,用 MD5 或者 SHA-1 之类的)来得到文件名。这个在 Python 中也是很容易的事,因为相关的库已经可以直接拿来用了。

上帝与新物理学

我想说的是:这无疑是一本非常不错的书,至少对于我这样需要被科普的人来说。

起因是程序员的十层楼 10层(下)这篇文章。且不论这文章原本是要说什么的,文中提到的宿命论的观点却是我一直都相信的,因为我自己之前偶尔也想过,我就觉得世界就应该是有一些绝对的真理,如果把整个宇宙看成一个大的系统的话,给它一个初始状态,它就能全自动地按照预定的规则精确地运行下去——也就是说,一切都是决定好了的。

不过即时如此,我们人却也不能完全地对世界的运行进行预测。不过我并不是从原文的“测不准原理”那里来想的,我只是觉得,我们人类现在所有处理问题的方式,都有一个归纳的过程,而归纳就代表着近视。类比到机器学习中的话,我们的算法要有一个归纳偏执,对于一个完全没有归纳偏执的算法来说,很容易就 overfit 到训练数据中去了—— overfitting 的结果就是在未知的数据上表现不佳,因此我们通过增强归纳偏执,用降低模型复杂度的代价来避免 overfitting ,这里就是一个近视——用相对简单的模型去近视原本比较复杂的模型。这里总有一个平衡的问题,bias 减小了,variance 就会增大,反之亦然。然而有一种情况可以完全避免 overfitting:那就是我们已知了所有数据的时候。(Over)fit 到所有数据上,这不正是我们说希望的吗?可是人的问题在于无法获取所有的数据,因此只能采取折衷的办法进行近视,做到在一定的时间或空间范围内近视地预测,受制于蝴蝶效应。

天气预报签名档

也不知道有多久了,从接近开学一直到现在,杭州天天都在下雨,估计至少有二十天了吧。实在是一件让人非常郁闷的事。之前看到寒仔在 cc98 上的签名档图片是根据时间动态生成的,觉得很好玩,于是也决定弄一个动态的签名档玩玩,正好就做天气预报好了。

首先要选定一个天气来源。之前听说 iGoogle 里面的天气预报小工具预报得非常不准,除了“Current”里的天气情况和目前室外的情况差不多之外,预报的结果似乎完全不可信。 ^_^bb 其实我也完全没有看天气预报的习惯,反正我天天都带着伞的。那么我也干脆弄一个“即时”天气好了,显示当前天气,可以“足不出户,知窗外天气”——关键是要做得漂亮些。但是我又懒得去找那些天气相关的图片素材,最后随便挑选了几个天气来源,就直接选了 Yahoo Weather 。

Why Open Source? Just for Fun!

其实一直也在想这个问题,当然我并不是在想开源的战略价值或者商机之类的,只是想弄清楚自己为何会走进这个世界,以及这里吸引我和让我感到无奈的一些地方。

Just for Fun 来自于那本写 Linus Torvalds 的书 Just for Fun: The Story of an Accidental Revolutionary 的标题。最初看这本书的时候其实也是刚刚接触到 Open Source ,也正好是对 Open Source 最狂热的时候,事实上那个时候根本没有思考过这个问题,只是既然这句话由开源世界里大神级别的人物 Linus 说出来,也就当喊口号一样拿过来就用了。不过后来仔细回想,觉得其实是个相当贴切的词。

如同其他许多人一样,我接触开源也是从 Linux 开始的,Debian 呀、Emacs 之类的,一开始也是觉得好玩吧,后来才慢慢接触到一些概念上的东西,诸如 Free as in Free Speech 于 Free as in Free Beer 的区别、Open Source 的概念还有 GPL 之类的东西。显然,我用这些开源的东西并不是为了想要保持我的系统里没有一个商业(或盗版)软件。那是有其他什么目的吗?也不是,一开始只是好玩而已,那时刚从高中毕业的我,一点也没有意识到应该开始为自己将来的人生做打算了。