Archive for May, 2010
原文:http://www.newsmth.net/bbscon.php?bid=63&id=2359932 那天看老公邮箱里有一封信,标题是叫水协议,好奇,遂点进进入,然后HLL的被雷到了。。。 信是他们实验室一个人给大家的群发,信内容如下: 组里面已经有饮水机了,有两个水桶,希望大家看见一个桶喝完就叫水,这样可以保证水不断。叫水电话@@@@,水卡卡号AAAA,每次让他送一桶”矿泉水“就可以了,水票在饮水机下面的隔间里。为了保证大家不重复叫水,HW和我拍定了一个协议,就是水喝完了之后如果空桶是放在饮水机上的,就表示还没叫水,空桶是放在饮水机旁边的地上的,就表示已经叫水还没有送到。希望大家可以看到一个桶空了之后可以举手之劳,去叫个水,争取不要出现桶放在饮水机上面的情况,:) 以下是实验室中的众人回复信,看完了,真的要Orz一下了 ———————————— 这个协议有bug呀。如果实验室里非贵组的人发现水没了,没叫水就把空桶拿下来直接换了有水的桶,咱就都不知道了。。。 所以我觉得最自然的情况(饮水机上的桶是空的,或者空桶放在旁边的地上)都应该表示没叫过水,而用一种特殊的标记表示叫过水了。比如我们宿舍的方法是,拿一张水票放在空桶上表示叫过水(这样送水的来了也省的人给他找水票了)。 ————————————- 协议1.0还有一个问题是,如果叫水的时候不把另一桶水换上,会导致不断换同一桶水,而另一桶水百年不用。 ————————————- 这个问题我解释一下,我怀疑你可能不完全了解这个场景。我们现在有一个饮水机,两个水桶。初始时一个水桶在饮水机上,里面有水,另外一个在地上,是满的,这个状态记为状态*。目前的策略是当一桶喝完时换另一桶,同时叫一桶水。这样可以保证实验室始终有水可喝(这里假设送水延迟远远小于喝一桶水的时间)。当下一桶水到达时,送水的师傅会把原来换下的那个空桶带走,回到状态*。如此反复。 —————————————- 关键是把叫水和换筒做成原子操作。 —————————————— 万一有大队人马同时干光了两桶水,组里有大号水箱没?…… —————————————— 所以我觉得最自然的情况(饮水机上的桶是空的,或者空桶放在旁边的地上)都应该表示没叫过水,而用一种特殊的标记表示叫过水了。比如我们宿舍的方法是,拿一张水票放在空桶上表示叫过水(这样送水的来了也省的人给他找水票了)。 ——————————————— 的确如此,上面建议的这个patch抗干扰性要比v1.0好,建议打上这个patch。不过也有问题:如果水票被风吹掉了…… ———————————————- 如果这样的话,协议1.0的bug很容易修啊。把叫水和没叫水的两个状态换一下就可以了(假设空桶放在饮水机上比较不自然,叫过水的就把空桶放在饮水机上,没叫过就放在地上)。这样不明就里的人换水会选择自然把桶放在地上,就表示水没叫过。 ———————————————– 叫水成功 有空桶 —————> 把水票放空桶之上 | | 未叫水 | 或叫水失败 | 空桶,无水票 这样的协议才是fail-safe的,即不懂协议的人也能按协议正常执行。。。 ————————————————- 赞fail-safe的协议!话说咱们有过v2.0吗? 以上看完了,我崩溃了,不能写个牌子放在那里,正面已叫水,反面未叫水,挂在饮水机上,谁打过电话,翻动一下不就完了。。。 娃们,你们花点时间干别的吧。。。
嗯,最近哥喝原叶茶都喝疯了。而且奶茶MM要来我们学校了,到时候考虑去围观。
7月4日 新开这本日记,也为了督促自己下个学期多下些苦功。先要读完手边的莎士比亚的《亨利八世》…… 7月13日 打牌。 7月14日 打牌。 7月15日 打牌。 7月16日 胡适之啊胡适之!你怎么能如此堕落!先前订下的学习计划你都忘了吗? 子曰:“吾日三省吾身。”…不能再这样下去了! 7月17日 打牌。 7月18日 打牌。
这几天试了试Kubuntu 10.04,结果安装失败,永远的黑屏。怎么改内核启动参数都无济于事。 不得不抱怨ubuntu越做越差,界面越做越丑,硬件兼容越做越差,社区中高手越来越少。
