Shell's Home

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])) 完毕。

Apr 13, 2011 - 1 minute read - Comments

论不同系统和客户端的证书管理

上面刚说完x509证书链系统,现在我们说说各种系统和客户端下的证书管理吧。理论上说,系统只要保留一份根证书系统,其余的会自动进行计算。但是杯具的是,不同系统的不同应用,使用的是不同的数据库。这导致你的根证书导入之路漫漫而修远。 windows系统: 1.系统证书管理 在运行中输入certmgr.msc,就可以看到证书管理系统了。根证书管理在“受信任的根证书颁发机构->证书”下面。对证书文件进行查看,导入,然后导入到这个区域,就可以变成根证书了。要吊销一份证书,删除是不行的,因为会自动加回来。加入“不受信任的证书”好像也无效。我找到的比较实用的方法是右击看属性,“停用这个证书的所有目地”。再试试看?证书应当无效了。 2.firefox 火狐的证书系统是独立于系统证书的,因此在windows中做的修改对firefox无效。需要到“选项->高级->加密->查看证书”中(windows下在工具菜单下),在“证书机构”选项卡,导入证书,而后启用所有用途,让证书生效。如果要吊销,跑到同一个地方,删除证书,或者编辑,取消所有用途。需要注意的是,当你删除证书后,再次查看证书列表时,证书会回来。但是此时编辑证书,可以看到,所有用途都被取消了。 3.chrome chrome在windows下使用系统证书,因此不要用chrome自身的证书管理系统,直接修改系统证书就可以。 linux系统(debian): 1.系统证书管理 运行dpkg-reconfigure ca-certificates,会出现让你配置系统证书的界面。这是系统的证书数据库,自动配置的话好像不能添加,只能取消。你反选某个选项后,/etc/ca-certificates.conf中,对应这个选项的行在行首就会出现!。此时系统内就不再认可这份证书。因此推测,如果你需要自己加入一份证书,需要将证书添加到合适位置,编辑/etc/ca-certificates.conf,加入路径,再执行dpkg-reconfigure ca-certificates或者update-ca-certificates进行更新,此时程序会更新/etc/ssl的某些内容,证书就安装上去了。 2.firefox 同样是独立于系统的配置,基本操作和windows差不多,不过linux下面“选项”在“编辑”下面。 3.chrome linux下面的chrome可以在“首选项->高级->证书管理器”中,选择“授权中心”。导入后修改权限即加入。注意需要使用禁用,而非删除对应证书,来阻止某些证书。 这里面说的加入证书,基本是加入自己的证书。至于移除,基本说的是cnnic。cnnic证书有什么危害?目前没有。如果你相信中国的互联网是世界上最开放的互联网,那么下面一堆不看也罢。不过,如果你不相信中国政府颁发出的证书,还是移除的好。在系统内保留一个不受信任的根证书,可能受到证书替换钓鱼。简单来说,你访问一个安全网站的时候,这个网站的证书是如何颁发的,你留心过么?在地址栏网站logo那里右击,查看证书,再找到证书链,你就可以看到,这个证书属于谁,是谁颁发的,这样一个链条。想象一下,你在用gmail的时候,心血来潮看了看域名证书,发现颁发者是CNNIC SSL(google的颁发者是Thawte)。很明显,你访问的网站不是真的gmail,而是一个伪装的网站,将你的请求再转到gmail服务器上。这个网站没有gmail的证书,不过用CNNIC签了一个。于是你的所有请求,收到的邮件内容,发出去的内容,全部被公开了。你也不知道这个替换什么时候进行的,由于安全验证可以通过,系统也没有警告你。是不是有种看到日本恐怖片里面,贞子爬出屏幕的感觉? 当然,这个是一个特例,有点危言耸听。因为对于某些国外CA,证书也是乱发的。基本只要交钱,给一份材料复印件,一样可以通过审查,得到一本CA证书。然而,这种证书通常比较容易被发现,CA也会很快吊销这些证书。如果不是这样,这些CA往往也会被各种系统加入吊销名单。不过对于蓄意产生的CA证书么,就难说的很了。附上一个用于检测CNNIC证书的网站,https://www.enum.cn/。 另一个风险证书则是comodo,早些时候,这个公司被黑客入侵,导致黑客给自己签发了一堆证书。虽然目前这些证书已经被吊销,不过这种安全公司让人一点信任感都没有。最好果断删除。

Apr 11, 2011 - 1 minute read - Comments

说说x509证书链

x509证书一般会用到三类文件,key,csr,crt。key是私用密钥,openssl格式,通常是rsa算法,爱咋用咋用的。csr是证书请求文件,用于申请证书。在申请的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。crt是证书文件(windows下面的csr,其实是crt),是签署人用自己的key给你签署的凭证。通常签名证书的时候都需要一个序列号,避免两个证书重复,当指明序列文件后,被签名证书会使用这个文件,并且文件会发生变化。另外一个额外说明的东西是dh参数,做openvpn的时候需要这个东西,大致是什么算法的初始参数,在下面有生成方法。 key的生成方法: openssl genrsa -des3 -out in.key 2048 这样是生成rsa私钥,des3算法,openssl格式,2048位强度。ca.key是文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法去除。 openssl rsa -in in.key -out out.key 输入密钥后,out.key就是没有密码的版本了。 csr的生成方法: openssl req -new -key server.key -out server.csr 需要依次输入国家,地区,组织,email。最重要的是,有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。 crt生成方法: openssl x509 -md5 -days 3560 -req -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl -in server.csr -out server.crt 输入key的密钥后,完成证书生成。-CA选项指明用于签名的ca证书,-CAkey选项指明用于签名的密钥。-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成。 openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 这个是用于生成自签名证书的。 dh参数生成方法: openssl dhparam -out dh1024.pem 1024是位数,一般1024已经够了。 x509的证书链是这样的。crt上有证书持有人的信息,持有人的公钥,签署者的签名。当你安装了一个证书后,就信任了这份证书。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。 在系统开始的时候,会自动安装信任一些证书机构,这些被称为根证书机构(CA)。根证书机构会为其他公司颁发证书,用于各种用途。当然,被签署的证书也可能是一份“可签署证书”,这样就要检查对方的资质。这样逐层签署,就会形成一个叫做“证书链”的东西。从拓扑结构上来说,其实应该是森林结构。

Apr 8, 2011 - 1 minute read - Comments

为什么我觉得拿版权较真的人都在扯淡

重申一遍,我不反对版权,我只反对使用版权牟取暴利。 什么叫暴利?我是个程序员,我做一个软件出来,我希望用我软件的人能给我点钱,对得起我的工作。或者最起码,不要拿着我的软件改的面目全非,在里面安放病毒什么的。这就是我对知识产权/版权的全部诉求——我希望得到收益,这个是一种尊重,也会激励我更好的做别的软件。 然而今天,我们往往碰到这么一个情况。在校的时候,我们看到漫天的,学XX语言吧。同学老师都在讨论XX技术,彷佛美好的未来向自己招手。等到了工作时,发现,原来XX技术是XXX公司的专利,以此技术为核心构架程序,尤其是企业级程序必须向XXX公司交费。好吧,用东西付钱天经地义,哥回头也做个值钱的东西出来。做着做着,XXX公司又往往会三天两头变来变去,做一些你觉得技术上说不通的,很恶心的变更。当然,人家的东西,人家说了算。等自己做了很久后,发现自己用心做出的XXXX技术压根无人问津,因为XXX公司又推出了和这个技术相近的XXXX技术。他们曾经开出一个天价——天下最低的价——来购买你的技术的全部权利,并且宣称,自己的收购价这么低而权利费这么高,是因为在策划,宣传,包装,完善上花费了巨额投入的原因。这时你才发现,原来当初在学校里面,还有OOO语言可以选择。一切都是免费的,你不需要付钱来用别人的技术,当然产品多数也是免费给别人使用的,通常也只能收服务费。一切都和你想的差不多,只是——你当时根本不知道。 宣传,策划,包装,完善到底要花多少钱呢?这个和中国移动到底从我们的手机账单中支出多少到基础设备建设,支出多少到服务一样,是个很难揣测的概念。然而我们可以知道另一个东西——他们的资产回报比——一般是多高。一切拿着策划,宣传,包装,需要花费巨额费用来说事,但是自己却有超高资产回报比的公司,哥都认为是在扯淡。 更不提因为XXX技术和OOO技术针对的客户群接近,就无视两者根本没有血亲的事实,打官司指控OOO技术抄袭XXX技术,企图将松散的社区送上死路的动作。这其实不是为了给程序员更高的回报,而是出于资本的贪婪。版权/著作权应当保护作者的利益,而不是资本的利益。这就是我对版权/著作权的态度。 夸张?松茸叔叔说过一个很有趣的内容,因为是豆瓣广播,链接不好找,我就不贴了。“从前有群人喜欢吃狗不理包子,他们搞了个狗不理包子同好会。后来有天来个人说,我是狗不理新老板,你们借用狗不理的名字,这是亲,呃,侵了我的权,你们得散了。于是他们只好改名为包子同好会。好笑吗?如果JavaEye没说谎,这就是Oracle对他们干的事情。”