Shell's Home

May 4, 2011 - 1 minute read - Comments

地铁和保安

我没说反对保安,当然,我也不赞同。 我只是说,要么把保安撤了,省的浪费我们的钱,站着还碍眼。要么通过程序,地铁强制安检。 目前的体系,我们花了钱花了时间,但是真想危害公共安全的人,一点也不困难的可以混进来。 坑爹阿。

May 3, 2011 - 1 minute read - Comments

常用电池的分类和养护

概念讲解1.电极电位差电池的材料决定电极电位差,因此,材料固定了,电池的电压就固定了。电池型号大不一定代表电压高,只是代表电量有差异。电池在使用中有电压下降是因为电池的内阻升高。 2.电量单位常见单位有两种,mAh和J。前者是常用单位,后者是理论热功单位。换算关系是,1V* 1A = 1W,1W * 1s =1J。所以电池的电压乘以Ah(注意不是mAh,差1000倍)为Wh。1Wh = 3.6KJ。 通常只有UPS的大功率电池或者少量笔记本才用KW和KJ的单位,其他地方,厂家写出这种单位的,让他换成mAh。 电池分类介绍1.干电池通常电池指的就是这个,也叫碱性电池,不可充电。主要电极是锌,电极电位差1.5V左右。常见分一号,五号,七号三种型号,长度和电压一致,粗细和电量有差别。后两个型号也叫AA电池和AAA电池。 通常说是不能充电,但是个人经验,拿老式充电器还是可以冲一下。新式的因为设定了截止电压,所以充不进去。不过充电后的稳定性和耐久性都很差,跑跑电筒钟表什么的凑合一下还行,正式用就形同废物了。 2.镍氢电池普通的充电电池,电极材料是镍,电极电位差大约是1.2V,比干电池略低。常见五号电池大小,主要用于数码相机上。以前的手机也有用到,但是近几年很少见了。 镍氢电池的养护比较特殊,因为电池有记忆效应。一但某次冲放不完全,电池总容量就会受到影响。因此需要在买入后放电完全再充电完全进行激活,并且使用的时候必须冲放完全。如果发生记忆效应,可以通过深度充放电部分恢复,不过不是普通电池管理设备能做到的。 3.锂电池最常用的充电电池,电极材料是锂,电压通常是3V以上,最高可达3.7V,比能容非常高。有各种封装形态,通常我们说的笔记本三芯电池,指的就是22000mAh/3.7V的一节高能电池三节串联,组成22000mAh/11.1V的电池组。六芯电池指的是两个这种电池串联组成的44000mAh/11.1V电池组。 锂电池没有记忆性,但是开始使用的时候还是最好激活一下。根据IBM的资料,锂电池最佳使用方法是保持低温,维持电力在15%-85%之间。也就是说,如果使用锂电池的手机和笔记本,不用等到电耗尽,在20%的时候开始充电最为合适。至于截止电压,IBM可以管理充电到85%,但是其他电源管理就只能一直充电。如果不用的话,充电到60%-70%,然后放入冰箱保存。 4.铅酸电池常用于汽车或是中小型UPS,电极材料是铅,电极电位大约是2V。通常都叫铅酸免维护电池,不过实际使用非常麻烦。电解液有干涸和冻结的可能,所以在寒冷的地带,往往有蓄电池冻结导致汽车无法发动的案例。不过通常寒冷地带的汽车往往也会在电池电解液中加入抗冻液,而且通常电解液在有电状态下凝点比较低。通常会发生这种问题的车都是温带开过去的,或者是车上电池耗尽。 铅酸电池的比能容和电压都不很好,而且很不环保,对环境污染很大。但是成本便宜,可以做的很大,而且没有记忆效应。如果同等能量的电池换为锂电池驱动,汽车价格就会飙到普通人无法承受的地步。

Apr 29, 2011 - 1 minute read - Comments

中国的版权问题一讲

我们都知道,中国这里有很严重的版权问题。最有名的就是腾讯的段子,一直在抄袭,从未被起诉。 多严重,我们来数数,一个正常人一天,要侵犯多少版权。 OK,A同学早上起来穿上一双蜡笔小新拖鞋去刷——等等,这鞋有日方授权么?OK,A同学早起先侵了蜡笔小新的权。 A同学刷好牙,带上自己的android手机去上班。当然,android手机是没啥版权问题的。但是——她背景放了一首青花瓷,打开软件追最新的小说看。背景的音乐侵犯音乐版权所有人的权,这里就是周杰伦所在唱片公司。追小说的软件连上盗版,侵盛大的权。严格说起来,音乐播放器还下载了封面和歌词,再侵了一遍周董唱片公司的权。 到了公司,打开电脑——盗版windows。微软这事一提再提,我们虽然麻木,但也知道手里的东西都叫做盗版。打开office——又是盗版——开始写文件。没灵感,上网找了一篇样例——这里要区分样例是原始有版权,还是无版权。是版权人自愿贴出到公共领域并放弃版权,还是被其他人贴出。由于情况太复杂,我们暂时定为版权状况不清。 下班了,路上A同学没看小说,改看漫画——由于漫画电子授权还没实行,因此毫无疑问的,又侵了漫画公司的权。 到家,A同学也不看电视了。这年头除了几个台,剩下的都是老爷爷看的东西。她打开土豆,挑了一部日剧慢慢看——毫无疑问,又是侵权。 至于周末在家不出去,连续下片看这种事情,更是提都别提。 实际上,在中国,没几个人版权是干净的。有多少人能不用windows,或者用正版的?不少,主要是手提电脑自带了不少的授权。但是有几个用正版office,或者不用微软office的?这就不多了。至于我们硬盘里面放的照片,歌曲,电影——你觉得还有多少人能昂首挺胸说,我用正版我自豪? 分类来说,中国侵权主要分几种情况。 一个是,我知道在侵权,但是我就是不想付钱,太贵了。例如中国的windows,office,还有各种软件。我们都知道这是盗版,但是都买不起正版。用的时候就只好偷偷摸摸,被抓出来就颇有几分孔乙己“窃书不算偷”的尴尬。 一个是,我知道我在侵权,我也想付钱,可我没法付钱。例如上面的盗版漫画,花个几块买个漫画看,我们也算比较习惯的。只是很多漫画的版权都没有引入,因此想付钱都没地方付。类似的还有美剧,A片,日剧等。很多人真的是想付钱的。看越狱,帅不帅?这时候你问她,这电视给不给钱?怕是头都会点断掉。可就是没地方付。 一个是,我知道我在侵权,我可以付钱,可是习惯不付钱。例如盗版小说。这年头都习惯看盗版了,压根没人看正版。 还有一个是,我压根不知道我侵权了。蜡笔小新的拖鞋有版权问题?我iPod里面放个周董的mp3算盗版? 最后一个是,我不知道这个版权是什么状态。例如刚刚说的,从网络上找的样例。如果是比较简单的样例,好像是不受版权法保护的。复杂到一定程度后,就是有保护的。如果作者本人没有明确放弃版权贴出,无论是本人贴出还是他人贴出,你拿来用就属于侵权。但是多数时候我们可能不会关心这个,想关心也找不到地方。 其实很多时候,不是谁手上都是版权干净的。你当有多少老美分的清楚“有授权的吉祥物”和“没有授权的吉祥物”?你当日本那么多同人作者,个个都是原作者授权的?但是无论怎么说,人家的版权市场分而弥细。很多人可能不知道,linux的几个logo,例如debian,ubuntu,都是有版权的。所以我拿debian的logo做头像,严格来说是侵权。不过facebook上的debian组和ubuntu组用这个logo,想必没人较真(当然,更可能是事先和版权所有人联系过了)。shlug曾经讨论过印logo什么的,后来发现都有版权问题,要去申请(其实写一封信去,多数就会被授权,好弄的很)。 然而中国这里就全不是这么回事。分的清分不清的,搞不清楚版权的我们就先都不说了,想付钱但是没渠道的也算你有这个心思吧。我们单说“觉得自己付不起”和“我就是习惯不想付”这两种。如果说,前者还带着几分羞愧,后者就是完全死不要脸了。用了别人的劳动,有两分感激之心,想法给人找补一下的。其行为不论,心里还懂个是非。用了半天人家劳动,理直气壮的上门骂人说——喂,混蛋,做的什么破烂玩意阿——的这种,就属于是非不分了。 遗憾的是,在中国,是非不分的还不在少数,更多的是连自己是不是是非不分都不知道,乃至不愿意知道的人。

Apr 28, 2011 - 1 minute read - Comments

出来玩碰到的问题

最近公司组织出来玩,选择跑到朱家角的大千庄园,就在上次贝壳徒步的线路旁边。上午刚到,中午就碰到一个有趣的问题。 按照我们和园方的协议,我们是在园内游玩两天,包两顿午餐一顿晚餐。流程包括射箭,漂流,骑马什么的,部分是付费项目。上午到了不久,我们就参观了藏獒园,然后吃午饭。午饭吃的很不错,吃完我们商定,下午去漂流,漂流是免费项目。到了漂流园,一个人都没有。我们晃晃悠悠半天,自己穿上安全衣,跳上了竹筏。竹筏漂流到一半,一帮外行搞不定,中途找个地方停船了。另外公司的球掉到池塘里,另一帮上了旁边的电动船去捞球,结果搁浅在池塘里,费劲半天才出来。 下面就是有意思的地方,搁浅的船折腾半天,总算来了一个人。不过不是帮我们折腾出来,是找我们要钱的,开口就是200。我们一群人莫名其妙,不是免费漂流么?不过想想,好像电动船也不像漂流。有人跑出去看了看,电动船的却是收费项目,不过却不标识在我们入园的地方,而是在另一条路上。而且标志牌上没有200的收费标志,只有小船40的项目。 那么我们就莫名其妙了,怎么要我们200呢?租船的人也非常生气,他们和庄园没有从属关系,只是承包租船而已。今天不开门,所以没有来看着,结果就有人乱动船,搞坏了怎么办?然后我们下船的时候就有船主跳上来,把船开往停船的地方,我们的两个员工在上面下不来,下面又有一个船主跟我们要钱。这算不算扣着人质?一时间大家都很火大。 双方僵持了一会,船主还是把船开到了原始的码头。我们的员工下来后,船主追着我们要钱。我们就提出要去前台。首先,我们并不知道这个项目是不是真的要钱,要多少钱。其次,我们也不确认来的人是否真的是庄园的合作方。要是附近居民抄小道进来敲竹杠,我们冤不冤呢?所以我们要求,去前台把事情搞明白。船主也同意这个说法,和我们一起去前台。 前台我没跟去,具体说了什么我并不确定。不过结论是,园方这部分承包费用就不收了,我们付给船主100就好。 事情并不算太复杂,不过有几点教训,听听就好。首先是,在度假庄园,不要随便动项目,哪怕你觉得项目是免费的。一方面是私自动东西,说不清。要是你拿个坏的部件,对方咬定东西原来是好的,扯起来扯不清楚。再说还有人的安全问题。不说后面要钱的问题,要是前面私开的竹筏出了问题,算谁的呢?所以,联系前台,让前台帮你搞定所有问题。前台不来,是园方问题,回头去投诉去。开心不开心,人是安全的。 其次,如果你去度假庄园,又不是费用全包,就不要指望没有后续费用。园方全指望你们进来玩这个玩那个创收呢,收费是正常的,免费是奇怪的。 第三,在你觉得度假庄园物美价廉的时候,多数这个庄园的管理会有问题。像这次的庄园,管理漂流的人说,运行时电瓶船都有人跟着,平时是锁起来,要管理员来开门的。而今天一时大意,没有上锁,搞出的问题。而我们觉得更有问题的是,我们在吃饭的时候是明确说了下面要去漂流的,饭厅的工作人员居然没有帮我们联系漂流的管理员(照理说我们应该进不去的),也没有提醒我们应该是进不去的。说起来饭厅的工作人员也不能算过失,但是管理上让人不是很舒服。 最后,出来玩碰到这种问题,不要激动,心平气和的找来所有关系人,搞清楚问题再发火或者下结论。不要因为自己人生地不熟就气虚,对方要价多少就着急给多少。也不要硬着脖子不管三七二十一和对方僵持。先搞清楚问题发生在哪里,谁的过失,各方主张如何。主张的时候条件要高,谈判的时候姿态要低。主张低,往往在谈的时候会被对方咬住,没有退缩的空间而吃大亏。谈判的时候咬着不肯放,不说当地人好歹是地头蛇,自己损失时间精力也影响心情。 另外也说一个上次徒步时候的事例,问题也发生在朱家角,不知道是不是八字犯冲。当时两个女生走不动了,准备打车到集合点,一个叫商榻的小镇,休息一下等后面的队伍。我考虑了一下,两个女生不大安全,就陪她们一起坐车。我们等车半天不到,就坐小车倒开三四站路,到大车站看看,是坐公交车还是打车过去。当时公交刚刚开走,下一班要半个到一个小时。打车的话,黑车开价30,正规出租开价40,我们就上了辆黑车走了。 走到一半,我觉得方位不对,不过青浦地方我不熟,所以也不知道有没有问题。到地方,司机问我们停哪里,我们说超市前面,司机说这里没超市阿。我猛然觉得不对,问,这里是商榻么?结果不是,师傅把我们拉到不知道哪里去了。我们说我们从上车就说的是商榻,我们是没有什么过错的。师傅说开到商榻他要亏的,死活不肯,要我们坐公交去商榻。照我说我也不肯。不过我倒是肯多出10块让师傅拉过去的。后面两个女生坚持己见,坐着不动。 其实这个时候,千万不能下车,或者因为人生地不熟盲目央求师傅拉你到目的地。不下车,师傅拿我们也没办法。两个女生一个男生,不是硬来能搞的定的。一旦下车,才真的是人生地不熟了。等你发现这里没有去商榻的车,再上车的时候,师傅早就跑没了。那时候才真的是没办法处理了。人生地不熟盲目要求师傅拉你的目的地,而不谈清楚价格,倒了地方师傅再收一笔,你一点办法都没有。 僵持一阵,师傅也没办法,说,实在不行我送你们去商榻吧,不过你们能不能多加一点车钱。我对此倒是没什么意见,从我们上车的地方到商榻最多40,给10块也不算亏。后面两个女生坚持不肯,师傅说不动,最后心不甘情不愿的送我们到了目的地。后来我们分析,从我们上车的地方到商榻,大概15-20的成本,出租车运费通常会高出油费成本一倍以上。师傅本来拉我们到商榻也不亏,但是他不知道为什么,先拉我们到了别处,再过去的话最多做平,所以他很不情愿。但是事情是他自己搞错的,他又是黑车运营,我们坐着不走他又不能叫警察,相持下去又吃亏。所以本着息事宁人的想法,拉到目的地算了。

Apr 26, 2011 - 1 minute read - Comments

“谈谈书价”评

我先看了这篇blog:(http://www.ruanyifeng.com/blog/2011/04/on_book_price.html),作者阮一峰是技术书籍译者。他所说的很多问,我的另几个朋友也有说过。包括纸质书完蛋了,电子书是下一代阅读媒介。不过我的想法是,电子书在中国还不成熟。 首先,是电子书的渠道和标准问题。纸质书可以有多种渠道,但是只有一种标准,无论是哪家出版社,最终出来的都是一本书,一堆纸。然而电子书就包含了数个渠道,kindle是一个,bambook是一个,iBook也是一个,androidmarket还是一个。电子书的渠道不同不仅仅是书的出售者的问题,还是一个本质的标准问题。上述四个渠道,无论哪个都不能保证打开其他渠道获得的内容。如果作者只在特定渠道出售内容,会造成如果我买了android手机,而一本书只有bambook有,我还得买一个bambook?一本纸质书才30-50,一年我大约看10-20本书,买四个设备大约要10年才能值回成本。如果作者分别在多个渠道上出售,各家渠道不会有意见? 更麻烦的是,现在的书籍,都是将来的素材和史料。如果我们开一家数字图书馆,这个问题就更加复杂和明显。可以想象一下,图书馆中有某本书,2012年出版,bambook格式。一个史学研究者很高兴的在数字图书馆里找到了他要的东西,但是却发现,这本书必须用2010年产的bambook阅读。这个设备现在只有历史博物馆里面有一台样机,而且预约已经到了一年多后…… 商业战争造成的不共通的格式和渠道是内容的大敌。不过这类问题在最终解决上倒是不难,只要有原始格式,把一种电子书格式转换成另一种并不困难。最终的形态可能是一个行业平台,让一个自然人对一本书只付给作者一次费用。当然,渠道的成本还是要付的。例如,假定一本书5美元,作者收3.5美元,渠道1.5。更换一个渠道,再支付1.5美元。大概这个概念,唯一的问题是各家渠道有没有动力做这个联合。 另外,最重要的一点,和阮一峰的担忧相同,电子媒介的盗版成本太低了。现在的电子书盗版,甚至可以做到扫描纸质书来进行盗版的地步。为什么现在都不发行pdf?其实pdf有很好的防盗机制,只是pdf是可以用pc阅读的,而pc有非常好的模拟能力,能够模拟翻页和截屏。再通过OCR,就变成了可用的电子版。同样,所有能够截屏的渠道,都有类似问题。kindle,bambook,iPad都是不能截屏的,但是android可以在虚拟机中截屏,所以android上做内容防盗就别考虑了。 而倒过来说,也不要以为kindle,bambook,iPad有多安全。无论如何,硬扫描屏幕总是一个可行的方案。当然,更好的方案是使用特制的设备替换这些设备的显示器。技术上来说,这些设备的显示设备也是开放接口的,直接编程读取数据对于专业玩家不是问题。 更可虑的是内容收费模式。内容是否值钱是一个市场问题,往往来说,内容的复制难度越高,内容的价格就越高。因此我们可以看到耗资不菲的报纸只买一块钱,甚至上海地铁不要钱的派报纸。因为报纸上的新闻复制起来难度极低,甚至从某种意义上说,地铁里的新闻,对于常在网上挂着的人来说,应当都不是一个新闻。我们原本卖书的模式,源自于一个事实,书的复制成本太高。无论是抄还是复印,都没有成功的把复制成本降低到和一本书的原始成本接近的地步。因此,作者完全可以收两者间的差价,即所谓的利润。以博客中的例子为例,复印大约是一张0.15元,230页复印成本34.5,原始书籍36.5,相差无几。当然具体情况又略有不同,要经常读的书主要面临复印竞争,看过就算的书主要面临借阅竞争。而我根据阮一峰的数据,算出一本书的各项成本大约是,书店成本7.1,纸张成本11.76,流通渠道11.76,作者收入5.87,大约是这么一个数字。也就是说,同样弄一本书出来,批量印刷和管理大约要占15-20元左右,和34.5之间的差价就是作者,出版商,书店的毛利润。当然,还要去掉一些宣传之类的费用。 类推,我们大约也能知道商业的,成建制的盗版书能存在的理由。盗版书使用原始书的印刷成本(甚至,由于批量上升,还更便宜)进行出售,和复印级价格竞争,当然有吸引力。所以打击的大头往往也在这里,真的需要的人去复印店印个两张,是不会对书本销售造成打击的,因为成本根本划不来。 但是在电子媒介时代,情况就发生了本质变化。无论使用何种技术,即使是替换显示器,或者硬扫描屏幕,首次复制一本电子书籍的成本就是数元(当然,前提是需要批量的复制上百甚至上千本书籍)。复制成功后,传播成本基本为零。一年上百万次的下载,也只需要租用一台很便宜的服务器,合每次下载成本为分级。这个对于传统书业的打击才是毁灭性的。事实上,这种情况已经出现了。目前网络上盛传的扫描电子书,爱好者个人扫描,抓不着。利用p2p传播,撤不走。大量书籍的扫描版的传播对于传统出版业的打击是非常严重的。在这种复制无成本的年代,内容收费模式是否能够继续,这才是最关键的问题。 目前经过技术上的努力,包括加密和打击。在中国,以电子出版而论,看一本盗版书的成本基本是0,而一本正版的成本也是0。结论是任何不能免费出现的内容(或者叫有价格内容)都无法生存,只有免费内容才能生存,例如博客。如此看来,最终会归于两种结局,一种是有价格内容通过其他手段转换为无价格内容,例如行间植入广告(好恶心的想法)。一种是增加打击,使得盗版书的观看成本增加到元这个级别。

Apr 21, 2011 - 1 minute read - Comments

快递先验货还是先签字TMD有那么难么?

最近看到一堆快递公司的投诉文,其中最关键一点就是,先签字再验收还是先验收再签字。国家规定是先验收,但是快递公司公然规定,先签字才能验收。客户不签字算拒收,问题在客户。说起这个问题的时候,快递还很无辜的说,有用户拆开不签字,抢走货物的情况。问题是,现在更多的是签字后快递员不认帐,货物有问题的情况。公司规定就能公然对抗国家法规么?我看这国家也到头了。 关于签字还是验收的问题,可以百分百的说,是快递公司完全没意思改进的产物。从管理角度讲,业务不行改流程。快递验收流程可以分为两步,一步是“货物送达”。在第一步,快递送达后,收货人先要看见货物存在(这是废话),而且没有明显损坏(就是客户不接过货物,仅凭快递员手里的外观评判)。当确认这两点后,签收“货物送达”部分。然后收件人拿到货物,拆开检验。如果没问题,签收“验收无误”这项。 当快递员送货到后,只要真的有货,客户没道理拒绝第一次签收,除非这个客户蓄意找茬。如果是蓄意找茬,原本的流程也无法解决问题。在第一次签收时,货物在送货人手里,也没有抢走货物的可能。当第一次签收完成后,最低限度的证明了,送货员曾经携带疑似货物的物品到达目标地点。而后是验货。如果一切顺利,验货完成,流程就完成了。如果不顺利,问题就集中在,客户看到了疑似货物的东西,但是却不能通过验收。那么就是送货方查找为什么了。这个流程,送货人也不用担心收件人抢走货物(因为确认了到达),收货人也不用担心货物有问题。 作为一个外行,我能够想到,我相信快递公司应该也能够想到这个方案。之所以不实施,是因为快递公司秉持的态度是“给你什么你就签什么,不要给我找麻烦“的黑社会思路。 作为一个买家,我无力纠正整个快递行业。但是我可以明确的公告所有卖东西给我的人,如果你不承诺先验货后签收,我是不会买的。而你一旦承诺,要求我先验货后签收,我就不管快递是什么态度,我会视快递为你的代理人。如果快递告诉我,必须签字,否则算我拒收。我理所当然的会拒收,因为你很明确的承诺了。至于你无辜不无辜,那不关我的事情。选择不靠谱的快递,是你的错误,也是你要背负的东西。如果不想因为快递纠纷而背负莫名的指责,就不要选择不靠谱的快递公司。圆通中通,北京到上海都是15,最起码隔日到达。联邦的隔日到达只要16.5,保证隔日能到。你可以增加快递费,但是不能对货物不负责。 同理,如果一个买家,因为快递便宜而选择了不承诺先验货后签收的卖家,那么就不要为了快递的事情恼火,这也是你自己的选择。 中国的一个买卖习惯是,先挑便宜的,然后再谈一堆条件。实际上,条件是价格的一部分。如果不给服务好的快递一点空间,那么我们真的,只有用不能验货的快递的选择了。

Apr 20, 2011 - 1 minute read - Comments

vmware-workstation 7.1.2 source for linux-image 2.6.38

I’m running a vmware-workstation under debian testing. Last week I update kernel from 2.6.32 to 2.6.38, then vmware don’t work. Searching for patch with kernel modules, finally I got those. http://blog.shell909090.org/vmware-source.tar.gz http://blog.shell909090.org/vmware-7.1.2-2.6.38-1-generic.patch.gz Source is tested under debian testing, but should work for all dist which use 2.6.38 as kernel. Patch is not tested. Here is how to make it. #cd /usr/lib/vmware/modules/source #for file in *; do tar xvf \$file; done

Apr 19, 2011 - 1 minute read - Comments

编程语言的一点想法

最早高级语言出现的时候,编程是面对过程式的。当你需要喝水时,你需要判断是否有热水,没有烧。有热水之后倒,倒好了喝掉。和我们日常过日子的思路差不多。 后来,我们出现了OO,即面对对象编程。OO的好处是,当你处理某个对象的某个动作时,是无须关心外部世界的。这将问题切割成了很多细节动作来完成,非常有利于多个程序员协作。 但是C++和Java在OO的实现上有些问题,主要问题是接口。C++必须先定义函数才能调用,Java也至少需要接口定义才能抽象调用。接口的存在妨碍了对象处理繁杂的动作。例如,我定义了一个抽象的人。可以吃饭,可以喝水。然后具体的把自己实现出来,于是我可以实现自己的吃饭和喝水了。但是,我脾气比较暴躁,看到不顺眼的就会骂人,看到驴蛋就抽丫的,偏偏人这个抽象接口没有定义骂人这个函数。 一种做法是修改抽象接口。这往往导致定义混乱,接口三天两头修改。 另一种做法是,将动作抽象成算子,应用Command模式。于是增加新的动作出来的时候,只需要产生新的算子,抽象的把动作传进去,然后,bing,事情就做好了。从某种意义上说,你可以把Command模式当作python中的bound function。 然而,你不觉得很繁琐么?明明我是支持骂人的,你直接骂就好了。使用Command模式需要为每个动作产生一个新类,内部机制无比繁琐。偏偏OO中有些人为了抽象而抽象,绕这么大一个圈子还沾沾自喜,我会用这么复杂的设计模式了。。。 更大的问题是,Factory模式之类简单模式还好说,Command等复杂模式,和人类的先天思考并不吻合。这导致严重的心智负担,并且只有经过严格培训的人才能进行编程。这是训练人以适应机器的做法,很不人道。 objective c在解决这个问题上就漂亮多了,objective c采用的是消息传递风格,想要什么自己拿好了。python也应用了类似的机制。 C++中之所以设计接口,是因为C++主要面向效率,因而当时采用的是虚函数设计。C++要求编译期决定调用哪个函数,多态的时候用虚函数表来确定。但是在目前,一方面是CPU速度已经没有紧张到这个地步,另一方面,objective c经过改善,效率也接近了C++。所以无论从哪个方面说,都不要再写一堆接口了。

Apr 18, 2011 - 1 minute read - Comments

一个老段子,房价是什么

人生就是一场PK,我们出生后就是这么被教育的。你们需要通过PK,来赢得人生,朋友,女人,孩子…. 现在我们开始第一轮的PK,本轮考试优胜者将得到100分的奖励,而且可以在第二轮PK中获得更有利的条件…. 现在我们开始第二轮PK,本轮优胜者将获得200分的奖励,并且可以在第三轮PK中获得更有利条件…. 现在我们开始第三轮PK,这是你们努力12年的目标,本轮优胜者将得到1000分的奖励,1000分! 我们还有额外复活赛环节,参加复活赛的可以继续PK,赢得额外的500分满分奖励…. 好了,最后,我们进入场外互动环节。我们将随机抽取,给予每人1-100W分的随机奖励分………………………

Apr 14, 2011 - 1 minute read - Comments

python解0-1背包问题

女朋友的单位需要解一个背包问题,说白了就是算票。通过有限的票,凑出最接近一个数字的组合来。 这个是经典问题,不过票数比较多,我本来用随机划分,然后一次优化一步的随机算法,凑出一个接近的数字。这样算法比较快,不过不是很准。 女朋友领导发话了,时间长点可以接受,但是最好准点。 照做吧,幸好这个算法算100张票子也就是10秒不到,这还是mini-itx。 下面上算法,具体算法猛击这里(http://www.oiers.cn/pack/Index.html )和这里(http://zh.wikipedia.org/wiki/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98 )。输入是数字列表和目标,输出是组合和误差。f[i]是目前为止,最大代价为i所能获得的最高收益,以及组合方式。numlist是二维数组,分别是代价和收益。 def resolv_dym(numlist, target): f = [[0, []] for i in range(0, target + 1)] for c, w in numlist: for v in range(target, c - 1, -1): if f[v - c][0] + w > f[v][0]: f[v][0] = f[v - c][0] + w f[v][1] = f[v - c][1] + [(c, w), ] return f[target][1], float(abs(target - f[target][0])) 当然,在这个特例里面,代价和收益相等,所以下面是真实代码。 def resolv_dym(numlist, target): f = [[0, []] for i in range(0, target + 1)] for i in numlist: for v in range(target, i - 1, -1): if f[v - i][0] + i > f[v][0]: f[v][0] = f[v - i][0] + i f[v][1] = f[v - i][1] + [i, ] return f[target][1], float(abs(target - f[target][0])) 完毕。