分类:'活着真好,偶尔思考' 的所有文章

失败的设计 - 垃圾箱

(本文18x,请慎入)

以前我抱怨过北京的垃圾箱太少
最近开奥运会,总算改善了。

以前,我租的房子跟前的垃圾箱是这样的:
垃圾箱2号

看起来没什么问题是吧
有一天,我来到这里打算扔掉几个枣核:
半瓶墨水:怎么才能扔进去呢?
公孙欠扁:(喋喋不休) 知道怎么把大象关进冰箱吗,知道怎么把大象关进冰箱吗,知道吗?知道吗?
半瓶墨水:少废话
公孙欠扁:1. 掀开上面的活动盖板 2. 扔进去 3. 放手,哈哈哈,这么简单都不会,咳咳咳。。。
半瓶墨水:怎么掀开活动盖板呢?
公孙欠扁:当然是用手去掀啦,你不会吧剩下的枣子放到一个手里呀。哈哈,你知道pig是怎么死的吗?咳咳咳。。。
半瓶墨水:靠,这么脏,哇塞,这里还有口痰,掀了盖板以后还能吃枣吗?

好吧,故事很没劲,笑话很冷,总之,掀盖板的这种垃圾箱设计真的是名至实归:垃圾


奥运热钱进入大街小巷以后,垃圾桶终于焕然一新,变成了这样的:
垃圾桶3号

所谓更大更好更强,从单缸变成了双缸,单CPU变成了Core Duo,紧跟世界潮流。
但是,能不能告诉我,什么是才是可回收的
半瓶墨水:苹果核可回收吗?枣胡呢?
公孙欠扁:是啊…螺丝钉呢?破裤衩呢?套套呢?断掉的JJ呢?
呃,要求好像很苛刻,但是好歹给几个例子吧,只要能够覆盖80%的应用场景就OK了吧。

既然搞不清,也就瞎放放了
那么,这些可回收和不可回收的垃圾真的可以被分开处理吗?

这个问题在昨天豁然开朗
原来这个伟大的设计,已经把“中国特色”发扬到了令人发指的地步。

我昨天在扔垃圾的时候向里面看了一眼
顿时愕然
里面是不分隔间的
外面贴的,是做做样子的

就像是一个厕所的两个门,一个门上写“男”,一个上面写“女”
进去以后发现,总共只有一个坑

从前有一个国家,管理者们说:网络接入不能垄断,我们要竞争,这样吧,电信去南方,网通去北方
竞争开始了,人们发现:厕所里只有一个坑,厕所里只有一个坑,厕所里只有一个坑

PS:
我早就在想,公共厕所里,大家都是做完括约肌运动以后,直接去拧龙头冲水,会不会导致肛门疾病的交叉感染?
这次从天津回来路过北京南站,发现里面的厕所大便池是自动冲水的,有进步

更多内容参见:失败的设计系列

何时不再是吸气猛男?

毕业后
虽然没有锦衣
但进餐多为肉食
从猛男渐变成吸气猛男
身高体重比迅速增大
直到现在变成了一厘米一斤
走路的时候双腿摩擦
在冬天演变成处处的静电
真是恐怖

唉,何时不再是“吸气猛男”?
什么是“吸气猛男”?
参见:吸气猛男效果图
吸气猛男效果图

车厢调配问题 与 “谁在用”代码发芽网页面

目标:我想在 “谁在用”代码发芽网 页面采用表格布局,每行三个链接(也就是html里面的三个td)
问题:代码发芽网基于Django,其模板系统的语法很弱,不支持对循环因子的操作操作不容易实现
首先想到的解决方案: 考虑到有cycle,就这么做:

HTML+Django/Jinja语言: 临时自用代码@代码发芽网
<table>
{% for w in wum %}
  {% cycle '<tr>' '' '' %}
  <td>
  <span style="font-size:large"><a href="{{w.website}}">{{w.title}}</a></span><small>
  <a href="{{w.blog_url}}">:)</a></small>
  </td>
  {% cycle '' '' '</tr>' %}
{% endfor %}
</table>

紧跟着发现,这样做是有问题的:当链接数不是正好三个的时候就会出现”tr”标签开始和结束不是匹配的

真是个烦人的问题,虽然在Django的View里面很好解决,我却不想这么做。

无意之间想到了前几天看过的文章,那是Dijkstra大师关于火车调配实践的一段描述:

一个寓言

多年以前有一个铁路公司,它的一位领导(可能就是商务方面的头儿)有了这样一个
发现,如果只给百分之五十的车厢配备厕所的话,原始投资将会大大地减少。于是,
他们决定就这么做了。

公司执行这项措施之后不久,关于厕所的抱怨就接踵而至。经调查发现,实际情况是
尽管这家公司还很年轻,但它已经存在严重的内部沟通问题,因为上头关于厕所的决
定并没有传达给调度室,所有的车厢都得到了同等的对待,于是有时候一列车中几乎
没有一个厕所。

为了解决这个问题,给每个车厢都加上了一些信息,用于区别这个车厢上是否有厕所,
调度室则需要在列车编组的时候尽量保证两种车厢的数量是相等的。这对调度来说无
疑是个麻烦事,不过问题解决之后,负责调度过程的人们都为此而非常得意。

新的调度过程实施之后,关于厕所的抱怨却依然没有平息。新的调查发现,尽管在一
列车中确实有一半的车厢有厕所,但有时候却把所有的厕所都编组在了列车的一头。
为了对此加以补救,上头又有了新的措施,规定带厕所的车厢和不带厕所的车厢应该
交替编组。这个方法的复杂度对于调度人员来说实在是太恐怖了,不过在最初的一番
唧唧崴崴之后,他们最终还是搞定了。

然而,抱怨仍在继续。调查出来的原因是,对于那些有厕所的车厢来说,厕所都位于
车厢的一头,列车中两个相邻厕所的距离仍然可能会有三个车厢的长度。对于那些有
紧急需要的抱小孩儿的妈咪们——尤其是过道上充塞着行李箱的时候——就会导致灾
难性的后果。结果是,给那些带厕所的车厢又加上了一点信息,将它们变成了带方向
的物体,新的规定是,在每个列车中,所有带厕所的车厢都必须是同向的。这一次,
调度人员收到新的指示的时候就差没疯掉了,因为调车转台的数目刚刚够用,如果要
完全公正地说的话,我们必须得承认,按照任何合情合理的标准,调车转台的数目是
不够用的,调度人员必须发挥极大的创造力才能勉强搞定。

等到所有的厕所都均匀地分布在列车中之后,公司有理由确信所有的事情都OK了,不
过乘客们依然在抱怨:尽管没有乘客离最近的厕所会超过一节车厢,乘客们(尤其是
有紧急需要的)不知道该向过道的那个方向开始他们的冲刺!为了解决这个问题,
写有“TOILET”的箭头被固定在了过道上。这就让另一半的车厢也变成了带方向的物
体,调度过程也必须对它们的方向进行正确地排列。

收到新的指令之后,调度室里充斥着绝望和反抗的情绪:这是不可能的!在这个关键
时刻,有个人站了出来,他的名字已经被遗忘了,而且也无从查证,他做出了以下的
分析。当每节带厕所的车厢都在它的有厕所的一头和另一节没有厕所的车厢配好对之
后,调度室根本无需再为N个两种类型的带方向的车厢而烦恼了,因为他们面对的将
是N/2个同样的单元,不管从哪个方面说,这些单元都可以被认为是对称的。这个分析
搞定了所有的调度问题,不过稍微有点代价,首先是每次只能向列车上加挂偶数个
的车厢——由此而增加的少量车厢可以从商务头目最初省下的那笔钱里面报销!——
其次,假定所有厕所的尺寸都是相同的。不过,谁会在乎那最后的三英尺呢?

尽管在发生这个故事的时候人类还没有计算机,但发现解决方案的那位匿名人物可以
当之无愧地被视为全世界第一个合格的程序员。

呵呵,然后呢,我就想,把<tr>和</tr>强制扭到一起不就行了?
所以得到了现在用的方案:

HTML+Django/Jinja语言: 临时自用代码@代码发芽网
<table style="border-spacing:20px;text-align:center;"><tr>
{% for w in wum %}
  {% cycle '</tr><tr>' '' '' %}
  <td>
  <span style="font-size:large"><a href="{{w.website}}">{{w.title}}</a></span><small>
  <a href="{{w.blog_url}}">:)</a></small>
  </td>
{% endfor %}
</tr></table>
</center>


代码发芽网: http://www.fayaa.com/code/ (无需插件在blog上贴语法高亮的代码,百种语言,多种配色)

决定周五“避运”

太危险了
太拥挤了
怕怕
周四晚就离开北京
过了开幕式再回来

汽车与山羊(Car and Goat / Monty Hall problem)

刚刚看到joyloft写的“汽车与山羊”,来掺和一下。

很多人听到过这样类似的题目:(来源

在一个类似于开心词典的节目中,挑战者突破重重难关终于来到了奖品面前。可是在他和奖品之间还隔一扇大门。他必须从三扇大门之中选择一扇打开,其中只有一扇大门通往大奖。挑战者随意选择了一扇,并且说任意一扇的概率都是33.3%。这个时候,已经知道答案的主持人决定帮他一把,主持人从剩下的两扇门中打开了一扇Goat的门,告诉挑战者可以更改他的选择。挑战者立即要求换到另一扇没有打开的门,并声称其概率是66.7%。

这里不说为什么这个结果是对的,这是概率论的问题。
这个题目的比较完整的资料在维基百科上

我当初听到这个问题不是完整版,没有关键的这句话:“已经知道答案的主持人决定帮他一把”。
所以我当时觉得不一定是66.7%,还专门跟当时的概率论老师争论,写了一篇类似小论文的东西。很失望的是,当时的概率论老师完全无视这篇文章,直接说:就是66.7%,你回去好好体会体会。

现在换一些情况来说一下,为什么这句话很关键(wikipedia上也有详细讨论):

情况0. 主持人知道答案,并且总会打开没有奖的门,那么选择者更换的结果就是2/3的机会中奖

情况1. 主持人知道答案,并且只在挑战者选择了有奖品的门的情况下提供重选机会,那么更换选择就是100%挂掉

情况2. 如果主持人知道答案,并且只在挑战者选择了有奖品的门的情况下提供重选机会,更换选择就会100%中奖

情况3. 如果主持人也不知道答案,纯粹瞎蒙蒙找到了一个没奖的门,这时换不换都是50%

情况4. 如果主持人在日期为单号的时候按情况1处理,在日期为双号的时候按情况2处理,那么。。。。。。

大家看出来了吧,概率论很重要,体会主持人的意思更关键:D

下一页 »