↓ Archives ↓

Archive → March, 2010

洗衣店

3月29日,凌晨。

突然想知道公司附近有没有洗衣店,打开 Google Map 便开始搜索;才发现,公司附近还是有好些洗衣店的,但自己没去留意,甚至从旁经过也浑然不知。

说到洗衣店,想起一部电影和一个画面。

先说画面:想起的是『恋爱写真』中,静流一个不慎把相机摔进了洗衣机的画面。毫无疑问诚人是个好男友,如果忽略掉他妒才乃至偏执的事实。若是我正欢快地写着代码,忽然给拔掉电源——不禁把等同重要程度的时间替换进去,把角色也替换进去,我会怎么处理?真是一个大问题。只是我现在用的是小黑 ThinkPad,我还来得及输入 :wq ,或者把 Vim 中的自动保存间距缩短,或者通过冗余来避免给盛怒之下的人给小黑砸上一铁锤……

电影是『爱我别走』,其实不翻译过来的『Laundry』会更合适。然而这故事,也只是由洗衣店开始,男主角后面便换了职业,是个专业放鸽子的。放鸽子专业户,听起来很好玩,但照顾鸽子估计也是一个枯燥痛苦的活儿;但哪个职业不是枯燥繁琐的呢,若是习惯了,做得更好了,这不就是所谓的专业了。不抱怨生活,这能让生活增添多少色彩。

从交换中获益的隐含条件

前文完事以后,还是有点不妥的感觉。

  1. 前文中我认为,例子中隐含的一个条件是“淡啤酒和黑啤酒的价格是相等的”。
  2. 在换值不等的情况下,原设中的机会成本变了。
  3. 我认为在换值不等的情况下,1加仑黑啤酒换1加仑淡啤酒并不是利益最大化的方案,这也致使这个例子无法解释如何“从专业化和交换中获益”

问题在于机会成本的计算。

书中对“机会成本”的定义(25页):

机会成本一次常被用于强调一项行为的成本是人们赋予次优机会的价值,人们在选择这一行为时以次优机会为代价。

Wikipedia 上的解释与书中的相近,更明确指出概念中的两个要点:

  • 机会必须是决策者可选择的项目。
  • 机会成本必须指放弃的机会中受益最高的一个项目。

然后对在换值不等时的机会成本进行计算。若琼斯选择生产5加仑黑啤酒,获利10元,那么他总的机会成本是10加仑淡啤酒 x 每加仑淡啤酒2元 = 10元;相反,生产10加仑淡啤酒,获利10元,总的机会成本是5加仑黑啤酒 x 每加仑黑啤酒2元 = 10元。总的机会成本相等,而每加仑黑啤酒的机会成本是1元(2加仑淡啤酒),每加仑淡啤酒的机会成本是1元(1/2加仑黑啤酒)。与换值相等时相同。

再看看布朗的情况。若选择生产4加仑黑啤酒,获利8元,那么他总的机会成本是3加仑淡啤酒 x 每加仑淡啤酒1元 = 3元;相反,生产3加仑淡啤酒,获利3元,那么他总的机会成本是4加仑黑啤酒 x 每加仑黑啤酒2元 = 8元。总的机会成本不等,每加仑黑啤酒的机会成本是3/8元(3/8加仑淡啤酒),每加仑淡啤酒的机会成本是8/3元(4/3加仑黑啤酒)。得下表:

酿酒商 每加仑黑啤酒的机会成本 每加仑淡啤酒的机会成本
琼斯 1元 2加仑淡啤酒 1元 1/2加仑黑啤酒
布朗 3/8元 3/8加仑淡啤酒 8/3元 4/3加仑黑啤酒

在这里引入价格(元)这个相对单位,是可以方便对比机会成本的。对于琼斯来说,不看价格只看生产量,生产1加仑黑啤酒比生产1加仑淡啤酒的机会成本要高,但折算为中间单位“元”后,可发现在换值不对等的情况下,两者的机会成本已经是一致的了,所以无论琼斯选择生产5加仑黑啤酒或者10加仑淡啤酒都是一样的。对于布朗来说,无论是只看生产量、或者是把换值也考虑进去后的相对单位“元”,生产淡啤酒的机会成本都比生产黑啤酒的机会成本要高,只生产黑啤酒明显地是一个更优的方案。

接下来可以对书中的例子补上隐含的限制条件。对于 2.5 中的例子来说,隐含条件是1加仑黑啤酒可以交换1加仑淡啤酒,而这一换值是相对恒等的。相对恒等这一限制条件用于保证并不会因为边际的影响而变动换值。

而对于 2.6 的例子来说,由于也沿用 2.5 的限制条件,所以也有1加仑黑啤酒可以交换1加仑淡啤酒这一隐含条件。将这一隐含条件转化为以相对单位进行描述,就是每加仑黑啤酒和每加仑淡啤酒的价格相等,假设是1元。在两个酿酒商协定等量3加仑的交换时,对琼斯来说,1加仑黑啤酒的机会成本是2加仑淡啤酒,换算成中间单位后,则对琼斯来说,1加仑黑啤酒的机会成本是2元,1加仑淡啤酒的机会成本是1元,以3加仑黑啤酒换取3加仑淡啤酒也即等于用每加仑1元的换值取得3加仑黑啤酒,每加仑黑啤酒在交换中的成本是1加仑淡啤酒、即1元,比机会成本低,所以是获益了的。对布朗来说,1加仑淡啤酒的机会成本是4/3加仑黑啤酒,换算成中间单位,1加仑淡啤酒的机会成本是4/3元,1加仑黑啤酒的机会成本是3/4元,每加仑淡啤酒的换值是1元,低于1加仑淡啤酒的机会成本而高于1加仑黑啤酒的机会成本,也是获益了的。也可见,补上换值这一隐含条件后,再引入一个相对单位“价格(元)”后,是否获益就显得更清晰了。

再看1加仑黑啤酒换值为2加仑淡啤酒时的情况,以相对单位来说即是1加仑黑啤酒2元,1加仑淡啤酒1元。对于琼斯来说,1加仑淡啤酒换1加仑黑啤酒时明显获益了,因为以相对单位来衡来那个,1加仑黑啤酒是2元,以3元交换得6元——获益了。以此类推,对于布朗来说,他不能在交换中获益,因为换值(以每加仑2元的价格获取每加仑机会成本是3/8元的淡啤酒)低于他的机会成本了。可见 2.6 的例子必须加入限制条件,1加仑黑啤酒可以交换1加仑淡啤酒,这时,双方才能从交换中获益。没有这个限制条件,或者说,在设定换值不等的情况下,交换是否获益,真的需要的重新计算了。例如我假设1加仑黑啤酒换值是2加仑的淡啤酒,这个换值下是无法达到在交换中获益的——对于布朗来说,最低是8/3元、或者说8/3加仑淡啤酒才能等到对等的黑啤酒,换值就必须高于8/3元,但对于琼斯来说,每加仑8/3元的黑啤酒高于他的机会成本。双方是无法通过交换获益的。

另:前文标题『机会成本』有点不妥,其实用本文的这个标题更好的。

机会成本

琼斯住在榆树街,他生产两种啤酒:淡啤酒和黑啤酒。每个季度他能生产10加仑优质淡啤酒或5加仑优质黑啤酒,或二者的任意线性组合。……

布朗住在橡树街,他也生产淡啤酒和黑啤酒。按照他的资源和技术,每个季度只能生产3加仑优质淡啤酒或4加仑优质黑啤酒,或者这二者的任意线性组合。……假定琼斯的淡啤酒的口感和布朗的淡啤酒一样好,黑啤酒一样。

酿酒商 黑啤酒(加仑) 淡啤酒(加仑) 黑啤酒的机会成本 淡啤酒的机会成本
琼斯 5 10 2加仑淡啤酒 1/2加仑黑啤酒
布朗 4 3 3/4加仑淡啤酒 4/3加仑黑啤酒

假设琼斯在城里的家庭啤酒作坊供货商那儿遇见了布朗,并交流了酿酒经验。一番商谈之后,他们达成了如下协议:琼斯只生产淡啤酒,布朗只生产黑啤酒,然后进行一对一的交换。琼斯将会用3加仑的淡啤酒向布朗换取3加仑的黑啤酒。

……当他们完成3加仑淡啤酒对3加仑黑啤酒的贸易后,双方享有的啤酒组合都超出了原先的边界。琼斯得到了更多他想要的东西,他的财富增加了,现在他有7加仑的淡啤酒和3加仑黑啤酒,原先他自己做不到这一点。布朗的财富也增加了,他现在有3加仑淡啤酒和1加仑黑啤酒,原先她自己也做不到这一点。

在『经济学的思维方式(11e)』中,2.6 使用了上面的这个例子说明“从专业化和交换中获益”,而这一例子是在 2.5 的例子上进行深化。这一例子中模型的限制条件,我已将原文相关的文字摘录在上,现在说说没有被提及的限制条件,价值。没有提及的是,淡啤酒和黑啤酒的价格,在例子中假设是一样的。

做一个证明:黑啤酒的价格是每加仑2元,淡啤酒的价格是每加仑1元。市场价格是稳定不变的。在交换并不发生以前,琼斯只生产淡啤酒或黑啤酒都可卖得10元;布朗只生产淡啤酒可以获得3元,只生产黑啤酒可得8元。若交换成立,双方只专注生产一项产品(琼斯生产淡啤酒,布朗只生产黑啤酒)而进行对等数量的交换:3加仑的黑啤酒交换3加仑的淡啤酒。交换以后,琼斯可以卖得13元(3加仑黑啤酒+7加仑淡啤酒),布朗可以卖得5元(1加仑黑啤酒+3加仑淡啤酒)。对于布朗来说,这并不是利益最大化的方案。

再进而推算,对于琼斯来说,机会成本还是不变的,但对于布朗来说,机会成本变了,生产黑啤酒的机会成本明显低于生产淡啤酒;而实际上,并不需要使用机会成本来衡量,单纯计算价格和产量的乘积,就知道在上面提及的限制条件下,只生产黑啤酒就能获得最大的利润,那么布朗还需要使用机会成本这一概念来权衡吗?

Buggy IE6, maybe a new IE6 bug

Did you see the buggy ie6 screenshot?

If you hadn’t see the screenshot above, get it here: http://img.ly/FAv.

In the screenshot, from top to bottom: IE6 and IE7 on the left, IE8 and Chromium on the right.

I’m not sure someone else had been mention this bug before or not.

Telling whole story may take many hours. In short, I working in a project and I make a layout with Faux Absolute Positioning. I need lightbox effect for photos and I choose jQuery Lightbox plugin. Than the bug occurs. When I click the photo, the overlay is out, but no photo there.

Let me show you an example: /files/buggy-ie6/buggy.html.

You can test the page above, it show up correctly under IE 7, IE 8, and Firefox 3.6, Chromium 5.0.355.0 (41601), and Opera 10.50. ONLY IE 6 rendering it in incorrect way. I’m use same photo here and use it twice.

I got two solution later on. First one, remove float property for .row, but this one maybe broke up Faux Absolute Positioning. The second one it, do float element cleaning before rendering the element in absolute position.

I’m poor in language, and here show you my two solutions: solution one, solution two.

That’s not whole story. In my case, I fixed this problem by add an CSS rule for .box: width: auto !important. I don’t know why and time limit, I can’t do test deeply and find out why.

人工的计算

吃早饭 花费的时间也换算成可计算的成本,会不会有点算死草的感觉?还记得『少林足球』里面三师兄所说的那句“我一秒鐘幾十萬上落”?

另一方面来看,人的效率不可能无止境地增长,大致会是、大致在一个时间段内不断攀升,然后趋向平稳,最后再下降。这段描述没有任何事实根据,实在有点虚。不过就如文中所说,“这顿饭最大的成本是人工”,只是在如何计算人工这点上有点疑问而已。

以成功学作为案例的群体如何影响个人的研究报告

如果把『异类』褪去故事的外衣,那么就是在阐述成功人士为什么会成功的:

  • 他们所处于的年代和时间给予他们成功的机会。
  • 他们在成功以前,对某一技能的练习和锻炼超过 100000 小时。
  • 他们所在的家庭环境给予他们优势。
  • 他们所在的群体或种族对他们性格的影响。

若是祈求在看了这书以后会得到如何成功的启示,恐怕最后只有失望了。再假设你因为这样的原因感到失望,怕是也与成功无缘了。

上述说了一番成功学,实在很老土。对我来说,在看这书之前的不久才读完『乌合之众』,隐隐有这两书都在研究社会群体的感觉。

特别是第二部分,“传承”。

例如『乌合之众』中有一个观点,“影响群众的意见与信念的间接因素,最重要的是民族,此外还有传统、时间、政治和社会制度、以及教育”,而这个观点在『异类』中也隐约可见:“丹麦人和比利时人共同分享欧洲广阔的自由民主贸易,但是他们却有着不同的历史,不同的政治体系,不同的宗教传统以及不同的语言、食物、建筑和文学——这要回溯到几万年以前。以上所有的差异导致在特定的情况下,丹麦人面对风险与不确定性时的反应,与比利时人完全不同。”

这书摘录下来的句子数量远不及『乌合之众』,原因之一为,后者是偏向纯理论的书,而 Gladwell 像是在讲故事——这一观点我就不再重复了。

如果看这书,请当作是社科类的研究报告,这是对群体是否会对个人发展有影响的案例研究。若是当作成功学的书籍,倒不如扎扎实实地花 100000 小时专注锻炼一个技能好了。

利用 Expression 开展设计

文中以门铃为例,给出了两个不同的表达式描述:

「从门外被启动后,这个设计物能够在屋内的任何地方展示某个特定程式的执行结果。」

「当我接近某人住家时,能启动让屋内任何地方展示特定运算成果,并且等待屋主启动另一个运算。」

如何用 expression 開展設計, jazzliang’s thinking

作为练习,我也写了两个描述:

「当我给出任意时间段或某一时刻的时候,能在恰当的位置展示这个时间段内所有相关事务,并等待我改变这一事务的状态。」

「在信息接收到更新后,会按照预设的模式进行重新计算,然后在特定区域内汇报节略结果,并等待用户操作在另一个区域内显示完整结果。」

是否合适的描述没有绝对的判定标准,应该不断反思和修改描述中的词句为好。

z3n: web based checklist

early Sreenshot of z3n

z3n 是什么呢?

z3n 是一个可以用作 checklist / to-do list 的小工具。它需要 PHP 5.3.0 或以上版本才能运行。对于 Windows 用户来说,下载一个 WAMP5,再进行一些简单的设置即可运行。这个小工具并不建议于公共空间中运行——因为这是仅是一个小工具,没有任何对校验用户身份的代码。

z3n 的安装十分简单,在 MySQL 中创建一个数据库,然后在导入 z3n.init.sql 进行数据库的初始化;这些操作你都可以通过 PHPMyAdmin 完成。然后把 core 目录下的 config.example.php 重命名为 config.php,然后填写相应项进行设置。对于本地运行、例如利用 WAMP5 简单快速部署 z3n 的朋友,只需设置 Z3N_MYSQL_USERNAME,Z3N_MYSQL_PASSWORD,Z3N_MYSQL_SCHEMATA 这三个值就可以了。如果你觉得页面显示 Leechael 的这样的文字很碍眼,你可以把 Z3N_USERNAME 更改为你想要的字眼,例如 “Simpson” 或者 “Mr. Potatohead”;中文也是可以的,只要记得该文件是使用 UTF-8 编码格式保存即可。另一个设置是 Z3N_BACKGROUND_IMAGE,我在压缩包里面放了四张背景图片,根据喜好把图片名字替换 Z3N_BACKGROUND_IMAGE 的值即可。

输入条目时,可以通过按下 enter 保存;如果按下的是 ctrl + enter,则是在保存当前条目的同时创建一个新的条目,以保证你整个输入流程是连续的。

Z3N 是基于 BSD 协议发布,请随意使用。下载地址:http://yan-yan.info/files/z3n.tar.gz

Z3N 的原型是 @Livid 旧作 Project-Babel 中的 zen,一个很好用的小工具,但我们并不需要 Project-Babel 完整的功能,所以, Z3N 诞生了。

这是一个利用空余时间制作的小东西,没有进行严谨的调试,如果你在使用中出现莫名其妙的情况,请留言告知。

对了,你需要一个多人可协作版本的 Z3N 吗? ;-)

我怎么才能不做这件事

很多程序员都有“Eating One’s Own Dog Food”的习惯, 这事并无好坏,做自己趁手的工具,也算是乐在其中的事儿。

对于我来说,想编写一个自己趁手的网志系统是一直以来的想法,可这几年下来,代码删了又删,最后垮在了自己的完美主义之下。看 WordPress,也越来越好使了。说有什么不好,一是我对输出的 HTML 有洁癖,WYSIWYG 编辑器一直不喜欢,手写 HTML 代码才是王道;其次我觉得,对于网址系统来说,实在没有输出动态页面的必要。或者动态页面,只能说是为了 SEO 的必要。

最后一次折腾是在这一年的春节:利用 Python 写命令行工具,储存用的是 buzhug,一个在小型系统开发中挺实用的类库,然后自定义编辑器——我选择了 Vim —— 在键盘上敲 th add 就打开 Vim,然后啪啦啪啦一阵敲打,:wq 就自动保存起来,标题、分类、标签什么的,都不需要。东西是出来了,我却没有激情写一个输出页面的脚本,而且自那段时间始、到最近的这几天,一直都在忙,勉强写了一个脚本输出 RSS2 的 Feed 了事,然后挂上新域名,找个免费的静态页面空间——挂上去了就完事。那真是无与伦比的简陋。

总得有一个网志,我想存放点笔记,写点随笔。所以,现在这个基于 WordPress 的网志出来了。

废话似乎说多了。而实际上我想去避免“重写一个网志系统”的事情,那么可以做的,只能是选择现有的网志系统进行改造,不喜欢的地方改掉。

最后放一段最近在 Twitter 上看到的话:

培養一種“我怎麼才能不做這件事”的心態,而不是“我怎麼做這件事”。這並不是什麼壞事,如果你知道你想要投入時間來做的事情是什麼,其他的所有事情你就應該想想怎麼來回避。 ~Fergus O’Connell, Work Less Archive More
maisonchen

对了,原来的域名 leechael.org 作废,新域名 yan-yan.info,作废原因和我们伟大的党有关。