对于工行的网上支付,只能抱歉地说声再见. 曾经有人说,IE6在国内的流行是因为有着各大银行的支持. 之前并没有太多的想法. 如今,在体验过工行的网上支付之后,我同情并理解那些痛恨IE6的人. 技术的进步大多数时候都是将人类引向一个更美好的未来. 因为技术进步的本质需求,是要为为人类提供更好的便利生活. 但这里存在一个假设,便是技术会得到推广和支持,尤其是那些理应为推广新技术不遗余力的群体. 可惜的是历史总是存在着烧死哥白尼的时间. 不单愚昧在阻挠着人类的进步. 更多是是特殊的专权,在阻挠着人类的脚步. 中国有个掩耳盗铃的语言. 从古到今,每一个中国人都在嘲笑着那种虚妄的安全感. 但是,从古到今,都有人在努力地寻找,乃至制造这种安全感. 清末的天朝上国正式在鸦片烟雾里,作者朝待四方的白日梦. 甚至于再舰船礼炮破门之后,在刺刀的搁在脖子下的情形,也不忘摆大国姿态. 如同丧家犬般,穿着破烂不堪的绅士服,演着自以为是的宫廷贵族. 欺人并不可怕,可怕的是自欺. "有道之士"教育我们不要沉迷网络,因为网络里有洪水猛兽. 于是,翻墙之后,果然发现有洪水猛兽. 100年前,在闭关锁国里,相信已经有人懂得了如何翻墙. 于是才有了思想激荡的1,20年代. 才有了3,40年代流血革命道路. 历史总是在不停地上演着相似的桥段. 一边意淫着大国的梦,想要世界陪着一起意淫. 一边上身摆架子,下身要尾巴地,向友邦寻求施舍,一边将讨来的东西换个包装便是自主产权大国制造. 排斥拒绝着新的事物,得过且过地过着地主家儿子的生活. 这便是所谓跻身世界XX强企业的生活现状. 在没有了人事上的世袭制分封制之后. 却形成如形形色色的变相财产分封. 各家太子王爷们继承着家国天下的产业. 划江而治,互不侵犯. 一起把着国门的锁,将外来的妖魔鬼怪洪水猛兽据之门外. 保护着一群不明真相的群众. 于是,"从此大家一起过上了快乐的幸福生活". 如此和谐的童话故事.
2009-10-18
闭门写童话
所谓设计模式和架构
大致看了下关于bigtable和mapreduce的东西. 想想,其实是google对于搜索引擎数据结构的一个解决方案吧. 广泛一点说,是对于面向内容的分类的解决方案的. 对于搜索引擎来说,主要有两个基础的数据: 一是原始的抓取对象,表现为网页内容. 二是对原始材料的分类信息,表现为关键字. bigtable对于这样的数据的处理,引入的是column family的概念.以传统的RDBMS理解的话,就是在url 和content列之后,有了一个不定数目的列数. 仔细想想,换个方式理解,其实更简单. 对于column family,更喜欢将其理解为tagging. 因为搜索引擎本身承担着两种功能. 抓取和分析. 得到content之后,只要对其打上相应的tag便行了. 如果要以RDBMS实现的话,便是简单地对每个关键字建立个表,然后指向相应的content内容便可以. 而要依据诸多关键字定位page的话,也就是所谓的map reduce. 先分类,在处理. 也就是所谓的先map,然后再reduce. 这其实就是分类处理的思想. 而map很大程度上,跟集合有着天然的血缘关系. 而搜索的目的就是在集合里找到特定的子集. 于是,map > reduce > map > reduce... 于是,纯粹从思想的角度考虑,bigtable和mapreduce不过是google对于搜索引擎需求的一个建模描述,或者说是基于内容个tagging技术. 话说回来,有时候,所谓的架构或者模型确实是建立在需求之上的. 软件产品脱胎于需求. 而产品的架构,虽然某种程度上说跟需求无关. 因为有着这么一个说法,就是说好的架构必然具有良好的扩展性. 一种很理想主义的想法就是在设计出一个好的架构之后,无论需求如何变更,都能够适应. 现在想想,这其实是本末倒置的误区. 所谓的架构扩展性在于面对需求变更的时候,有良好的适应能力. 其实质是,对于需求的变更,都能保证其跟原有架构设计的一些假设不会冲突. 意思就是说,你的架构没有做过多的假设. 比如对于一个这样的需求,偷菜写个函数. 于是可能有这么些个实现: steal(vegetable) or steal(stealable) or operate(someting) or operate(onething,anotherthing) or operate( list onething , list anotherthing ) or operate( list paticipate_1 , list paticipate_2 , ... ) or getHandle(steal_vagetable).process() 实际哪个实现取决于你做了多少假设. 也就是说粒度细分到什么程度. 而此时所谓架构是否有良好的扩展性,就在于,新需求会将粒度缩放到哪个程度. 一旦细化的粒度小于当前架构的粒度,也就是架构不适应需求了. 所以,最好的架构其实是没有架构. 即不做任何假设. getHandle(steal_vagetable).process() 这其实又是一个螺旋式的回归.
数字的奴隶
看了麦兜响当当. 印象深刻的是麦子仲肥. 不和谐地联想到了高锟以及对诺贝尔奖的迷恋. 还有曾经挂在嘴边的四大发明. 网上流传着一句至理名言: 手淫伤身,意淫强国. 虚构的成本是很低的. 而攀亲戚的成本更低. 理论上,世界上所有人都互为亲戚. 在一大批人鄙视韩国拿来主义的时候,却不知道对自己的拿来主意如何看待. 还是说,抱着老子以前也富过的心态,继续在破庙里调戏小尼姑. 看了梁文道写高锟的文章. 其中有句很值得深思. 大致意思是从前在香港看到国内许多"大师"著书的速度赶得上畅销书作者了,便感叹香港学术的落后.知道去了内地之后,才恍悟,原来香港其实还不错. 想想,国人似乎对于数字式情有独钟的. 尤其是这是能够数字化衡量大多数成效的时代,数字更是让一些人痴迷. 在建国十几年的时间里,对于这种痴迷更是影响到了全国的实质生产里. 不可否认,数字确实是衡量某些东西的依据之一. 但不等于说有了数字,便能够反过来说明应有的东西. 毕竟有些东西不是数字所能衡量的. 但是,即便有过血的教训,但依然改不了对数字的迷恋. 某种程度上说,这是国人自卑的表现. 基于寻找能够证明自己的东西,来撇开诸如东亚病夫的牌子. 或者如一夜暴富的有钱人,需要开那么一两件东西来告诉别人自己富了. 说中华民族谦虚,也是是有点不准确. 至少,中华民族还很婉转. 想起很久以前看过的一篇文章. 大致是谈为什么有人会愿意高价卖一个QQ号. 这里面,也牵扯到国人对数字的一种病态迷恋. 也许,这可以归结为中国曾经引以为豪的封建制度. 以及其下的等级关系. 之前是用服饰用具来标榜身份. 当封建制度不在之后. 尤其是在提倡按劳分配的社会制度里,"统一性"成了实际的社会现状. 而且,现代贸易的发展,也将商品的流通彻底市场化. 纯粹的买卖关系,不在能够维持固有的阶级代言方式. 于是,需要寻找新的,独特且稀有的方式来区别各个阶级. 而这一种方式需要满足几个条件: 1是通用性.即能在最广泛的范围内找到这种阶级打分的凭据. 2是稀有性,即本身必须是稀有的且不可复制的独特的.不然,如果能够随意批量存在的话,也就失去了阶级性. 于是在流水线制造的社会里,编号成了这一个稀缺资源. 不管流水线有多长,特定规则的数字数量总是有限. 对于国家或者一个特定团体来说,也是如此. 需要一些特别的数字来装饰. 说到底,这是一种炫耀心里. 在深层一些来说,是希望得到别人的认同. 所不同的是,这种认同是别人对于自己进步的认同. 也就是说,对这种认同度的争取,其实是献媚心理. 直到别人说好了,才觉得自己好了. 不然总是惶惶不安. 生怕做奴隶而不可得.
2009-10-17
变节
终于有点时间,却忽然觉得无所是事. 游戏没玩了,书手头上也没有.于是只好找电影看. 顺手把豆瓣加了些tag,方便以后"被推荐"一些合口味的电影. <<变节>>,又一港产卧底片. 冲着黄秋生和曾志伟而去. 看完之后,感叹黄秋生的一句话:能把烂片演好的演员才是好演员. 而黄秋生确实做到了. 自从无间道成功之后,港产警匪片便重新找到了写作点. 从前的警匪片,卧底是配角,即便不是配角,也不是故事的主线. 无间道之后,卧底风光了. 也确实,关于正义与邪恶的内容被写烂之后,夹杂在黑与白之间的灰,能挖掘的地方自然会多一些. 当年的古惑仔也是如此. 说到底,还是灰色更接近于现实的色调. 也因此更容易让人有代入感和参与度. 人终究不是极端的. 过于正面的,也只能尊称为伪人了. 而穷凶极恶的,更是从来不存在的. 回顾整部片子. 尽管laughing哥出现在了片子的副标题,而且确确实实地,全篇大多数镜头都给了他. 但看完之后,总感觉一哥才应该是主角. 也许是个人喜好使然. 毕竟,看片也是冲着黄秋生看的. 入警队,当卧底. 回去之后受到歧视. 这是一哥的无奈. 如果不是冼sir给了他"两个选择",也许,他也只能继续过着里外不是人的生活. 正是冼sir那句话,将一哥送出了警队大门,将一个推向了洪兴. 做卧底的忍辱负重,非但没有获得别人的认同,反而处处受人怀疑. 与其继续等待被人的改观,不如讲错就错,走入黑道. 这是一哥无可奈何的选择. 不是一个不能忍,不能等,是这样做让一哥看不到价值的所在. 当laughing出事之后,面对座头的百般嘲弄挑衅,一哥都受了. 要给他知道,总有一天,座右会死在自己手里. 而冼sir的一番话,让一哥彻底地对未来失望. 既然冼sir说只有两条路走. 那么他只能往洪兴走去. 正如他自己所说,做蛊惑仔的好处在于,不用担心应该相信谁. 言外之意,在于讽刺卧底的生活窘况. 除了接头人,谁都信不过,也谁都不会信. 一哥的麻木不仁来源于他曾经的卧底现在的古惑仔身份. 某种程度上说,一哥仍然有着警队的某些特质. 之所以有laughing,也是一哥的某些仁慈所致. 做古惑仔,其实是被逼的. 但他没得选择. 他是个不属于黑道,也不属于白道的人. 不是一个隐于灰色地带的高人,而是一个只为自己生存而努力的人. 于是,他开始帮laughing. 因为他自己也曾经是个卧底,知道卧底的生活. 但是laughing始终还是倒向了警队. 他只能求自保. 只能设局除laughing,除座头. 一哥的悲剧性就在于此. 没得选择地成了二五仔,成了没人相信的人. 于是,他只相信自己. 只关心自己. 曾经,laughing的出现也许让一哥重新开始有了交朋友的感觉. 但是,laughing的警队特质,让一哥重又回到了六亲不认的地步. 影片最后的一段其实挺有意思. 一个卧底倒在了自己同胞的枪下. 尽管死前还表明了身份. 某种程度上说,这其实是一哥的结局. 想想,一哥是死在laughing枪下的. 而laughing曾经是一哥最相信的人. 甚至于在laughing用枪指着一哥的时候,一哥依然有自信laughing不会开枪. 因为他也曾经是卧底,知道laughing现在在想什么. 但结果是,laughing开枪了. 一哥带着愕然的眼神倒下. 他没想到. 尽管此时的他早已不再相信laughing. 但他不明白. 他不明白laughing为什么能够开枪. 为什么同为卧底,laughing会和自己不一样. 其实,这个结局也许是受限于laughing哥,受限于这是一部前传. 否则,死的应该是laughing. 一哥射杀laughing,然后一哥被射杀. 这样,两个卧底,两个不同心态的卧底都死了. 也更能让人去思考卧底存在的意义. 如同一哥所说,为什么正义的警队,却要教人做去欺骗去背叛. 为什么做了卧底,却在两边都不能立足. 这是一个关于"正义"的代价的命题.
2009-10-13
从开心农场谈起
传腾讯买断开心农场. 想想其实很符合腾讯既有的策略. 毕竟,QQ之于腾讯已经发展到了windows之于微软的地步. 而腾讯也很明显地,在发展的轨迹上跟微软是相似的. 平台为王的战略. 在陆续推出了几个好的软件和服务之后. 或者说在抄了几个号的软件和服务之后,QQ的平台做得更大了. 将现有的QQ用户导一部分到新的应用中,于是,这些应用从一开始就有了高的人气. 而人的猎奇心理也会带领相当部分QQ之外的人参与到这个应用中来. 而这个应用如果恰好又是跟QQ绑定的话,那么,腾讯的抄,其实是将其他类型的非QQ用户"抄"了过来. 于是,只要腾讯能做出来,就能将任何类型的用户整合进来,成为腾讯如何服务的用户资源储备. 这是一个良性的异常完美的循环. QQ用户为QQ新产品提供源源不断的用户群. 某种程度上说,只要腾讯做一个产品,就不愁没人用,不愁没有用户. 这便是平台的魅力. 所以,基于这一点,腾讯买断5分钟的开心农场很正常. 而且,有数据页显示开心农场的相当部分盈利来源于QQ农场. 说白了QQ农场的火爆,一个方面是产品设计确实完美,一方面也是有QQ用户这个几乎取之不尽用之不竭的用户来源. 因此,某个程度上来说,是QQ在养着农场,是QQ掀起全国的偷采风潮. 这样,腾讯自然会打小算盘. 毕竟,按照现在的趋势,只要运营农场就必然有源源不断的钱收,与其在这个由自己制造的风潮里让别人获益,不如自己独吞. 所以,买断农场也是可以理解的. 关键在于农场还能火多久. 想想农场为什么能火. 农场在游戏的玩法上给了人两条路走. 要么偷采,要么做老实农民. 从表现上看,这是似乎是个很简单的游戏,偷采种菜. 但是仔细想想,其实这是一个"开放"的游戏世界. 想想一些经典游戏,尤其是RPG游戏的共同之处. 那便是开放性.自由度. 让尽可能多的人投入到游戏所设定的情景里,这便是RPG的精髓,也是所有游戏应该追求达到的目的. 参与性,投入感,是游戏的首要准则. 而农场显然用了一个大巧若拙的形式,达到了这个目的. 想想偷菜对应的是什么. 人性里的阴暗面. 而种菜呢. 没错,是人性里积极的一面. "劳动最光荣" 通过劳动,可以得到各种各样的东西. 可以说,种菜和偷菜,就人性来说,已经囊括了所有类型的用户. 有时候,最复杂的东西就是最简单的东西. 因为其简单,所以不确定因素便多. 也就意味着结果也随着变得多样. WOW之所以受人推崇便在一其高自由度. 而这一切都是受益于wow的"松散"性. 没有过多的限制各种各样的东西,包括肢体动作伤害环境等. 一切都有着很好的扩张性,极力模仿着现实世界. 在物件的粒度上,尽可能地让所有东西都能够演算出来,而不是靠诸多的条件限制它. 不像一些游戏,到了悬崖边却发现其实是掉不下去的. 忽然想,其实所谓软件架构的灵活性,其实来源于需求的设计. 明确的需求是建立可扩展软件的基础. 因为需求的改变其实是不受限制或少收限制的. 而软件,或者说代码,毕竟是成文的. 改起来不是说说就完了的. 或许这也是设计模式存在的理由. 为了尽可能应付不同的需求变更所总结出来的best practice吧.
2009-10-09
一个基于交换密钥的安全会话模型
一个关于web环境里身份验证的模型.
基于交换密钥的设计.
基于一个假设,即password是client和server才知道的.
于是,在初始的时候,client生成一个随机变量,经过单向哈希之后成为一个定长字符my_key_client.在web环境,这个产生过程在本地进行.也就是说,除非能监听到本地动作,那么my_key_client对于client之外的所有人都是不可知的.
而如果能够被监听到,那么,也无所谓安全性,因为username和password也是可被监听的,也就不需要继续将安全性谈下去了.
将password单向散列为另一个定长字符串friend_key.而此friend_key,理论上只有client和server才知道.(password只有client和server才知道)
于是,将my_key_client以friend_key作为密钥做一个对称加密,同时,将一些需要加密的信息用my_key_client加密,传送到server,server就能够逆运算出my_key_client,进而逆运算出加密内容.从而使得client的发送是只有client和server才能解密的.
有个问题,如何保证server逆运算出来的my_key_client是正确的呢?
对于对称加密算法,不同密钥可能解除不同的内容,而在以上的条件下,无法判定解出的内容即是原始的内容.
即,如何判定解出的my_key_client是原本的my_key_client.
于是,我们需要一个checksum.
checksum一个由交换内容friend_key和my_key_client拼接后,利用单向哈希生成的一个定长摘要.
这样,理论上,这个摘要依赖于my_key_client(freind_key是对方已知的),所以,某种程度上,它也是唯一的.只要解出的my_key_client和接收到的exchange_key再做一次这样的摘要运算,如果两者符合,那么可以认为my_key_client是原始的my_key_client.(无数学证明)
这样,对于client来说,可以安全地与进行身份验证.
在验证完毕之后,server是拿到了my_key_client.
也就是说,此时server拿到了除了client和server之外,无人能知的key,所以,类似client,server也可以在本地生成一个随机密钥my_key_server,同时将my_key_client作为server端的friend_key,进行如上的操作,也能达到安全的通讯.
于是,client和server可以在每一次完整的会话之后,都改变密钥,且保证了会话的次序.
因为,即便某一次,会话被劫持了,被第三方伪造了一个假的加密内容,但是,由于第三方无法找到加密用的my_key,所以,伪造的内容无法在如何一方通过checksum的认证(因为checksum必然是不匹配的),那么,除了能够保证会话的安全性之外,一旦会话被劫持,整个会话也就失效(因为任何一方都不能再正确解密内容,前面说了,正确与否在于checksum是否匹配,而checksum必然是不匹配的).
所以,基于这个模型的会话,应该是比较安全的.
至少,不会被劫持,或者在传输过程中被偷窃如何东西.
伪代码流程如下:
client:
my_key = digest(random());
friend_key = digest(password);
exchange_key = xor( my_key , friend_key );
checksum = digest(my_key + friend_key);
save_local( my_key );
send( exchange_key , checksum);
server:
receive( exchange_key , checksum );
friend_key = digest(password);
my_key_client = xor( exchange_key , friend_key );
if( digest(my_key_client + friend_key ) == checksum )
pass secure check;
my_key = digest(random());
friend_key = my_key_client;
exchange_key = xor( my_key , friend_key );
checksum = digest(my_key + friend_key);
save_local( my_key );
send( exchange_key , checksum);
else
deny acess
end-if;
client:
receive( exchange_key , checksum );
friend_key = load_loacl();
my_key_server = xor( my_key , exchange_key );
if( digest(my_key_server + friend_key ) == checksum )
pass secure check;
my_key = digest(random());
friend_key = my_key_server;
exchange_key = xor( my_key , friend_key );
checksum = digest(my_key + friend_key);
save_local( my_key );
send( exchange_key , checksum);
else
session was broken;
end-if;
server
...
订阅:
博文 (Atom)
爽文
去看了好东西. 坦白说,多少是带着点挑刺的味道去的. 毕竟打着爱情神话和女性题材的气质,多多少少是热度为先了. 看完之后倒是有些新的想法. 某种程度上来说,现在的年轻人或者说声音就像小叶. 只要说点贴心的话就能哄好. 也是那种可以不用很努力了. 留在自己的舒适区避难所小圈子抱团就...
-
最近尝试了下海淘. 当然,方向上来说是从国内到新加坡. 先是买了个iPhone,算上运费和双重征税,到手比官方还是便宜个一两百新的. 换算回来也不多事10%的纯粹价格因素差异. 当然,之类有电商促销的因素. 也有比较基准是新加坡Apple Store售价的原因. 但如果同样比较A...
-
这两天看完了Netflix版的三体. 某种程度上来说,完成度还是不错的. 尽管开始的时候对于第一集片头有些争论,但整体如果带入当下去看的话,还是有些梗的. 比如三体对于地球科技的发展速率的担忧,由此衍生的智子. 以及现有力量对比上的压倒性优势. 如果带入中美关系以及各自的历史阶段...
-
前几天Sora出来后才仔细看了下diffusion,发觉确实算挺取巧的. 按照naive的intuition或者说不那么现代的方式的话,可能需要segmentaion为基础的composite的方式去生成图片,即使扯点deep learning/network的,可能也是类似一些...