说说“碰撞”

No Comments

都是基于我自己的理解,有错误的话请不吝赐教。

  1. Hash碰撞:参考 http://en.wikipedia.org/wiki/Collision_%28computer_science%29 ,只不过是说不同的数据凑巧有相同的hash值而已,这是数学上就已经有了定论的肯定会出现的问题,参见Pigeonhole principle
  2. CSDN etc.密码门:事件中网络上大量充斥的“碰撞”——比如这篇里 http://www.enet.com.cn/article/2011/1228/A20111228952093.shtml (其实微博上更多,懒得搜了,省得好像针对谁一样),其实就是“撞大运”的撞,“撞衫”的撞,可是和“明文”、“加密”这种话题扯到一起,很容易让人觉得是和前面提到的hash碰撞有关,实际上远没有那么高科技啦,rainbow table随随便便就拿去破解百万级别用户的密码?呃,反正我很难想象,也说不好地下组织已经不难具备这个能力了,但说起来还是拖库加社工库要划算得多吧。这个实际上是很无聊的话题,不过也算是我写这篇很短的东西的起因,因为各方面的说辞都要把我搞晕了,虽然我有很入门很基础的网络安全修养,不过也不是专门搞安全和加密的,大家你也碰撞我也碰撞的,搞的我以为中国加密和密码学一下子已经超越美帝来着了。
  3. 更最近的影响范围很大的web服务器Hash碰撞攻击:参见Ars Technica的Huge portions of the Web vulnerable to hashing denial-of-service attack。这个更直白(直白但没有那么简单),就是针对各种语言平台和应用服务器的常见实现,提交一些预先制造的很容易在特定条件(比如文中提到的随机化不太好)下发生(multi-)hash碰撞的数据,导致HTTP服务器的一些常见的hashtable的操作异常耗费计算资源——O(n**2)哦。

好了,其实真没什么可说的。

我的饭 [2]

1 Comment

又到了充数时间…

  1. 好多情况下只要诱导某企业的员工把一封收到的内部email——空白的都可以——另存成.msg格式就能拿到好多内网信息,比如各种服务器地址神马的。作为有个大概其就算是入门级安全素养的人来说,我对某些明目张胆自觉主动不用别人诱导就把内网IP这样的事情公布于众的事儿真是无话可说。2011-11-04 14:25
  2. 想提高productivity也不至于就去被洗脑吧?我是想换换脑子换换想法,可是这种玩意儿,一上来就要求我全身心去信任他,改变我的想法,我艹,你要不说你是方法论的话我还以为你是邪教了。有点儿越来越恶心了…2011-11-04 19:03
  3. 而且吧,对信任的要求有点儿过高。照我的理解,这个方法论敢于正视很多以往人们不愿正视的东西,可就不能正视一下人跟人很难完全互相信任的么?我要信任你这个方法论,管理层要信任团队,团队成员之间也要互相信任… 不得不说这样的话我怀疑整个系统太脆弱了。2011-11-04 19:06
  4. 我看着种种偏执狂一样的人的说法和做法,就不抱什么希望了。但愿这东西别最后跟ERP似的,“不上是等死,上是找死”。直觉上稍微有些不兼容的文化沉积的公司,最好慎重接受这个玩意儿。2011-11-04 19:08
  5. 每次老外一莅临我分厂做敏捷培训的时候,那感觉就跟我厂开人大一样。2011-11-08 10:49
  6. 这个sprint可是真的sprint了。不开笔记本了。2011-11-09 13:09
  7. 哎,需要有街旁、饭否、微博之外的娱乐项目啊… mIRC,乃的注册用户召唤你~2011-11-09 13:32
  8. 这是多少年了……debian和ubuntu总是盘踞Freenode在线人数最高屋子的头两把交椅。2011-11-09 13:59
  9. 好像Google就永远是正确的一样。除了这个粉就那个粉的,不粉点儿啥就跟找不着组织一样。没安全感么?2011-11-10 11:59
  10. “过了少年,失去青年,踏向中年,机灵,勤奋,困苦,无望,想活得更好,活得更不好,有理想,不敢想,想创业,怕失败,盼真爱,却已婚,恨特权,又敬畏,怨体制,但想做公务员,要买房房价涨,要买车油价涨,吃饱了勇敢,饿着了懦弱,遵纪守法,但眼看着胡作非为的一个个发家,想胡作非为,上路…2011-11-10 12:41
  11. 哎,力争做个差不多的REST风格API,挑挑拣拣了半天状态值。2011-11-10 19:15
  12. 哎,我可没干过文档截图里的某高亮的文本框里的输入和文档其他部分说明要输入的东西对不上的情况,顶多整个文档太过时了没更新。而且也没捧铁饭碗干这个。2011-11-11 02:13
  13. 下午的时候让某小朋友同事看他的ff版本号,然后让他猜最新版的大版本号是多少。结果这小朋友用的还是3.x… 虽然现在ff不是主力浏览器了,不过这5、6、7我都是装上还没捂热乎了下一个大版本更新就来了,真是太刺激了。2011-11-12 00:56
  14. Jxxxxx your YYYYY domain PASSWORD will expire in 9 day(s)! – 哎,总看着跟促销广告一样。早改域密码能来个邮箱quota大优惠么?2011-11-13 01:44
  15. 我去,O’Reilly这回是干啥嘛,看意思 Node: Up and Running 中英文版同步发布很有戏?看oreilly.com上Early release版本的评价不咋地么,都说太basic。哎,也不是门语言神马的,太basic确实没意义嘛。2011-11-13 22:00
  16. 我在环球置地广场:破地方,这个点儿了还堵成这样。然后两个车位都过窄打不开门,悻悻地下地库去了。 http://jie.pn/p_IE0–9IB 2011-11-14 11:20
  17. 好多不错的歌大抵最后都是因为让别人当了手机铃声完后还总不接电话而毁的。2011-11-14 16:02
  18. 看来这次迭代按时完成是没啥问题的,提前个3天左右也很可能,而且完成了比较麻烦的搭新架子阶段,还保证了主要逻辑都有单元测试。2011-11-15 18:56
  19. 哗!小饭盒儿有固件更新了!大姑娘上轿头一遭啊!可别给我升级出问题来…现在无线完全指望它了…2011-11-15 22:21
  20. 简直是… 算了算了,你们决定吧,决定好了告诉我。我是coder。2011-11-22 23:31
  21. 哟,公司HQ新地址,430 North Mary Avenue, Sunnyvale, CA,看起来还挺牛叉的,地图上还瞅见NASA Ames研究中心。刚还跟人说起Ames这个词,完全是看动漫认识的。2011-11-29 10:02
  22. 我觉着有些人也许还是离职换个地方的好,不是逃避,而是没有必要和一些偏见浪费时间。通常发生在某个在厂工作时间很长的人身上,可能因为种种原因,被些偏见阻挡,没法做到自己想做到的那一步。当然前提是自己主观上真想做好,光是想做做样子骗人的话就洗洗睡吧。2011-11-30 15:58
  23. 我在环球置地广场:去尼玛,不伺候了。挤兑死我就得了。 http://jie.pn/p_IE3vvPAB2011-12-01 16:39
  24. 总算搞定了……… 准备得可能太多了,哎,但是Web Worker、Web Socket的东西都没涉及。还是觉得Device Orientation API的例子最好玩 :-) 2011-12-02 19:09
  25. 买了本儿Sheldon写的书。2011-12-08 10:23
  26. 神马逻辑,预估得准是因为估的日子多,尼玛的。是不是都他妈党员然后又不好意思说出来?2011-12-08 12:18
  27. IconFactory坑爹啊… 以前买的Twitterrific Premium怪不得这么久不升级呢……!我都已经当丫是一先烈了结果丫赚钱赚得正high呢!2011-12-08 23:55
  28. 我在盈江西里:作为一名普通青年,不删掉iPod Touch里面装的musée du Louvre是有苦衷的。 http://jie.pn/p_IE0xCv4B2011-12-09 00:10
  29. @webto 我能回忆起来的是,某个或者某些冬天的10点来钟,刚睡醒,宿舍里没人,或者有几个货仍旧死死地睡着,反正很安静,然后阳光照进来,能看见空中的灰尘,外面刮着大风,树影都晃着。2011-12-13 22:56
  30. 哎,真懒得说,也不查查iTunes gift card的使用条款。2011-12-14 18:40
  31. 算了,本来也不是多social的人,装这networking的节点干啥哩。2011-12-16 01:23
  32. 好久不来聒噪了,今儿上来骂一句GFW。某小朋友调查bug,调查完了颇有心得地和我描述,我听完问,您了介不会就是撞墙了吧?一试验,果然,唉,耽误多少人的青春。以后同学们都再碰见这个都上网扎针去吧。2011-12-16 10:51
  33. 没coffeescript真是要没法活了。2011-12-17 01:43
  34. 我在盈江西里:总算看到了result=”success”,多线程也不用自己操心了。困扰了一天的问题是某size值少算了一个8bytes大的header… http://jie.pn/p_IE3vEQ8C2011-12-18 22:38
  35. 我厂的问题就在此。原有团队的人几乎都在原地踏步,似乎觉得新人来了可以直接拿来使唤。 转@qinyf 可以想像,一个企业或者团队经过几年发展,规模逐渐扩大。吸引的人才的 level 也会要求越来越高,对原有团队的人的 level 要求也水涨船高。每一个人都要不断成长才有戏。2011-12-19 11:36
  36. Want WorkFlowy on your iPhone, iPad or Android device? Just open workflowy.com in the browser. ——赞啊!厚道。虽然我觉得以后肯定有人做web版神马神马store,最起码现在是不要钱。2011-12-22 00:39
  37. 说到web版store的话,想必支付宝和paypal稍微做做就可以搞一个控制欲不太大的原型出来。2011-12-22 00:40
  38. 看到一个gem叫rubypython…真蛋疼…2011-12-22 22:20
  39. 这都是…神马啊!搜个“红旗路”三个字想查个邮编都TM能撞墙,MB的浑身G点啊?!2011-12-24 22:07
  40. 平安夜,爸妈还在海南happy,我跟媳妇儿宅了一天:她加班给自己和班组写总结,我在改个不知道以后能不能如愿以偿用上的程序。虽然听起来挺苦逼的,也还算是生活。2011-12-25 00:55
  41. 我在盈江西里。某个东西尘埃落定,好像也没激起什么反响,就不说什么超前、落伍的话了,太臭。好处是至少可以看本儿轻松一些的书然后早睡几天了。 http://t.cn/SMcA2v 2011-12-27 00:18
  42. del.icio.us总算不再那么萌化下去啦!近期唯一一处常用web服务方面的惊喜啊,除了github改了改导航和布局神马的以外。 2011-12-27 01:09
  43. 要命啊,推荐列表上第一个是Let Over Lambda,靠,这书就算真舍得那银子买回来,一礼拜能看明白2页就是胜利啊。2011-12-27 18:32
  44. 墙头草,360°倒。总有一天有那么几度上你会碰见所谓的行业壁垒吧,我倒希望是您现在抛弃的IT业。放着高附加值前景的不干,哎,不是我情何以堪的问题,就算我活到敲不动键盘的时候,能看见这个行业的腾飞,也能瞑目了。2011-12-28 10:14
  45. 行行出状元,干好了都不容易,所以不是我不尊敬其他行业,而是不理解,为什么上这么多年学、读这么多书,那么多个日夜守着枚56k猫挣扎着以一小时1MB的速度下载资料学习,那么多小时焦头烂额的除错、重构,才能安身立命的行业,就能让其他人这么不尊敬,甚至同行也觉得这行是坨屎的。 2011-12-28 10:12
  46. 总有些人一说话就跟让人传了-vv 一样。2011-12-28 18:28
  47. 哎,有啥可说的。这国家就是充斥着各种不知道锅是铁打的人,兴冲冲地跑国外去了,或移民或长期停留,然后郁闷了,回来说三道四。一句话:白长这么大。2011-12-28 18:46
  48. 哎,欧洲的书一本儿一本儿地买了看,看了买,反正不知道下次得啥时候了。屎一样的工作也得做,要不然就饿死。 1月4日15:44
  49. 好!一年为期!!! 1月4日20:56
  50. 哎哟,看意思星巴克跟我是真不对乎。母亲的。 1月5日12:22
  51. 一咬牙一跺脚,我把这电视节目戒了。 1月5日17:43
  52. IT这行儿是真强大,plot y=|sin(x)|, x=-pi/2 to pi/2 ,x轴是能力值,y轴是薪水。我姑且表示作为一个一瓶子不满半瓶子咣当的人压力真大。 1月5日18:28
  53. 说到底其实也就是政治而已,而我在那几个小时里还真就当真了,还难过了一个晚上。真尼玛该自己抽自己啊。2012-01-09 10:16
  54. 艹,看到jcp.org下面刺眼的Oracle大红标以及左边的“© 2012, Oracle Corporation and/or its affiliates.”,我是真不想再看什么Terms of Use和Privacy Policy了。2012-01-09 10:58
  55. 昨天team meeting后的内部技术研讨会上是我这辈子头一次想正面提一次微软的企业应用技术和产品线,后来想了想还是作罢了,差不多都给洗脑了,我要提微软的东西,估计能研讨到晚上7点钟去。我还得回家哩。  1月10日10:46

———————————————————–

嘿,其实里面夹杂着微博的链接,因为某神嫌我乱同步,所以不得不把街旁的饭否同步给关了,以后再想写“我的饭”系列估计就麻烦了…

反正也没人看 :D

Murphy’s Law的一天

No Comments

2012年工作日头一天,结果悲剧收场,活生生验证了Murphy’s Law:Anything that can go wrong will go wrong. ——好像说法很多,不过大抵就是这个意思吧,凡是可能出错的事情都会出错。

这次是以前就标记成TODO的两个地方,其实也不是那么容易发生的,而且我也确实不想武断地找一个解决方法就干掉,于是就标个TODO,结果就是这两处我觉得不太可能发生的事情,就让QA MM一击必杀了…… 所以像今天这种处于sprint之交应该会比较闲的日子反倒过得很应接不暇。

诶,不像是啥好兆头哇~

就是某X人今天正式宣布去留了。

2012

No Comments

<EOB>

我的饭 [1]

No Comments

哇嘞,离上一篇 我的饭 [0] 距离2年多…
其实微博上互动更多一些了,因为熟人基本都不在饭否,不过也因此,饭否上面更纯净,也更适合集中发到blog里面。

  1. 避免再次被问,抢先贴出来。不是什么东西都可以拿价格比较的,何况两个分属不同子类型的东西,所以不能非觉得由于一个全自动的DeLonghi的价格能买将近3个Rancilio Silvia所以Silvia肯定不如这台Delonghi。上网搜DeLonghi vs Rancilio吧!2011-09-29 14:38
  2. 再说了,Rancilio Silvia可是专家@momotestversion 推荐的,要是Delonghi能争气点儿的话估计我都不会有机会知道Silvia了。2011-09-29 14:49
  3. 查了查地图,从爸妈家走沿海高速去北戴河也就259公里,多的那90公里在高速上真是屁都不算,看起来自驾一趟的可行性还是很高的啊。2011-10-02 21:22
  4. CEO又跟收件箱里面刷屏了…2011-10-05 21:11
  5. 看了《中国政治随想录》,解决了不少疑问。以前的某些想法确实分裂 :D  http://t.cn/adeawJ 2011-10-07 23:11
  6. 微博真是好东西啊。以前你觉得很不错的人,在微博上fo了一看,好像从来不认识过一样,又重新认识了一次,而且只有惊愕,没有惊喜。2011-10-08 14:18
  7. 10年的时间里有很多次机会可以改变很多事情,最后都因为太懒惰,忙着学习以后不知道用不用的上的东西,最后错过了,到了今天只剩下惊愕。当然我也从来不相信如果时光倒退回去现在就能更好,或者更坏,反正现状是很不赖,这就很幸运了。2011-10-08 14:23
  8. 昨天回家的路上,翻腾出初中时买的Aqua和高中时买的Backstreet Boys。虽然媳妇儿抗议不想听这种,也还是放了一路 :D 2011-10-08 16:48
  9. 神人今天显了一次灵,用一种在我看来非常暴力的方式把VPS的系统从9.10升到10.04,给我留下了大批的作业… 今天晚上估计要以啃这些收场了 T___T2011-10-08 18:23
  10. 哎,还有scponly这种玩意儿。虽然不是特别适合,也还可以凑合了,先上上。2011-10-08 20:53
  11. 哎,虽然神人力挺,还是没办法习惯cherokee-admin… 本想趁机往高层次走走,结果点来点去把自己点崩溃了…2011-10-08 22:51
  12. 我嘞个去,欲哭无泪… 折腾了2个多小时的rule,敢情人家Cherokee直接可以加一个wordpress用途的虚拟主机,然后rule就都建好了,不管后端到底是php-cgi还是php-fpm,我去,虽然很傻瓜化吧,可还是不爽哩……2011-10-09 01:32
  13. 强烈怀疑IT为了不让大家觉得套上VPN反而比他们自己精心打造出来的网络还快而禁了VPN。2011-10-09 11:13
  14. 总有人说过度设计的事情。过度了当然不是好事儿,最起码可以说是不经济的。不过太快了没设计也不是啥好事儿,比如我想改的这个东西,现在完全是狗啃刺猬无处下嘴,想改就是硬改。而且十分不好做mock来支援unit test。2011-10-10 23:32
  15. 以前朋友想全职炒股,我总说中国这股市太不透明了,最好别把宝都押它上面。其实现在想想,股市还算不错了,虽然XX总是有些下三烂的招数,不过一来有数据和数字的支持,有据可查,二来这帮也快黔驴技穷了。其他的路子也是各种的不透明,但是最后也不会摆到台面上,始终无迹可寻,只能心知肚明。2011-10-12 17:05
  16. term上站,发现Java版的备忘录还是当初折腾半天做的Java杯logo的ASCII art,真怀旧啊。还有当时得到了隐身权限的时候是迫不及待地隐了,现在是上站立刻取消隐身,生怕熟人没看到我…2011-10-12 21:14
  17. 娘的,怕啥来啥,就今天请假了,结果4单快递全TM今天送到,哪个快递公司都不看我留的备忘说别今天送货的… MLGBD…2011-10-13 16:03
  18. 不错,我遗忘某些破事儿的速度比我预料的要快很多,今天想起来查看的时候已经完全跟不上那破事儿的进度了。好,就这么忘了吧~2011-10-14 23:22
  19. 闹了半天还是这个mDNSResponder的问题。以前是无故占满一个核,换Lion之后蔫巴了,不去霍霍CPU,直接搞个所有DNS都不解析的症状。今天查了查资料才知道这个mDNSResponder不光是负责mDNS了,而是似乎所有的DNS都管,于是launchctl重启了丫的…2011-10-15 21:08
  20. 车停外面了。一旦不用抢小区里的车位的时候,我总有种强烈的想半夜出去飙车的冲动。要不然就挺到5点来钟去趟赵师傅?2011-10-16 01:07
  21. 臭不要脸的连win32 openssl都封。2011-10-17 14:01
  22. 最近八成是上凳次了,外面的咖啡完全喝不惯了,从麦当劳鲜煮到SB、Costa,加糖加奶也难受了,除了在家的时候冲SB的速溶。不知道真是凳次品味升级了,还是岁数大了不爱吃甜的了。2011-10-17 15:59
  23. 每次沟通最后都是无话可说,找机会quit吧。我们都是很实际的人,没法浪费这个时间。谁不想做个全知全能的人?谁不想一上来就高瞻远瞩掌握所有的设计和细节?可事实证明这经常是不可能的,尤其这么大一坨产品。从实际出发最后变成我们好像一群傻逼,天下唯一的一个全知全能的人在我们team。2011-10-17 18:31
  24. 我都懒得说有多少次编码时能推翻不少当初的设想了,只不过因为设想已经commit了,推翻的话很多人脸上会不好看。我承认不指出来是我的问题,当然看不出来也是更大的智力问题,甚至说如果看得出来但是因为当初自以为全知全能做了设想而不方便推翻,这就有点儿职业道德问题了。2011-10-17 18:36
  25. 某产品线强势而另外一条相比却弱势,这种情形不可能没理由的。早就听腻了各种胡扯解释了,就看当初的人员配置就够了。以往认为从头到尾都太被动,所以才会出现这种现状;现在感觉被动得已经深入这产品的基因了,所有为这产品工作的人都被动。2011-10-17 18:43
  26. 我真不知道这情形怎么形成的,可能是起主导作用的人们都太强大了,完全可以被派去竞争对手那里从内部瓦解敌人,因为搞破坏方面的属性值远大于建设。2011-10-17 18:44
  27. 临走补充一句:找台不错的机器,java开发可以体会不到那种沉重感,最起码IDE的重构功能都很便利,很方便在开发过程中迅速修改小设计和大设计。谁爱骂IDE谁骂,IDE和其他替代品都有各自的优势和适用性,总是有些牛人跳出来聒噪一通,力图让IDE用户总是有种智商上的屈辱感。2011-10-17 18:55
  28. 牛人都不需要重构,牛人都是画画UML图念念咒语就能生成一个跑个10年不出异常的系统。所谓可执行UML初级阶段。2011-10-17 19:00
  29. LinkedIn厚道诶,做了它的调查还真给奖励啊。选了“¥175 CNY Amazon.cn ® E-certificate”,不知道怎么个意思,应该最终会到卓越帐号里面吧,哇哈哈~2011-10-18 16:55
  30. 买早点回家时发现我住的那栋楼里款款走出口罩萌娘一枚。2011-10-19 12:46
  31. 怀疑俺们外教今天擦的是Six Gods,回头问问伊。2011-10-19 13:37
  32. 抽时间修炼下TeX,反正公司的活计也不涉及CJK的问题,刚入门也不怕涉及CJK玩不转。看能不能逼疯几位…2011-10-19 13:52
  33. 台北的机场/是一个分手的老地方/你的心情也和我一样/难过却无法去抵挡2011-10-19 22:44
  34. 买了4本书,其中3本是Objective-C和iOS开发的,一本儿是心仪但不急需的Debug Hacks,最终花费:人民币8元1角。哇哈哈!!!2011-10-20 16:50
  35. 麻痹的一到下午这网络就跟他妈要死一样。还TM软件公司了,一边儿软去吧。2011-10-21 15:34
  36. 预览.app,全屏模式,双页屏幕,看电子书真是享受哇。O-C的书还没到货,先来本儿pdf解馋。2011-10-21 22:25
  37. 我好像看出来了。似乎某人之所以回复了是因为另一个某人的这些问题都问在他的comfort zone里面?我觉得完全是扯皮的问题…这么主观的东西就这么来回扯皮,email穿梭不停,大家SB惜SB地惺惺相惜,好像做了很多事情一样。最后只留得在下一拍键盘,骂道:你们丫到底解决个屁问…2011-10-23 02:36
  38. 换了是我,如果这些破事儿每次都要发自内心地真诚地提一遍出来的话,日久天长,我就该有祥林嫂的本事了。可惜这似乎叫做proactive啊,妈的。2011-10-23 02:39
  39. 看看看看,你们圡了没:OWA的UI可以改theme…2011-10-23 02:41
  40. 书有明笔、暗笔、伏笔、顺笔、倒笔、忿笔、惊人笔。2011-10-23 16:47
  41. 哎,嘛都不说了,说了也多余。自己管好自己就完了,继续恪守我自己这么多年来不劝任何人的规矩。虽说不破不立,然而发现新立的快要变成被破除的了。2011-10-24 22:25
  42. http://is.gd/Izl8tf 明确说的是iTunes Store上买的礼品卡和cert只能是哪个国家的人买的就由哪个国家的人消费掉。所以,某大叔 :D 2011-10-25 16:52
  43. 这个行业真不该是这样一个可以让个小屁孩笑话的状态啊,残念。2011-10-25 17:57
  44. 看着O-C又让我想起来当年上学的时光,还想着要一辈子干C++(没有C…),绝对不碰Java这种让人鄙视的带垃圾回收的语言,程序员应该永远不嫌麻烦,云云。2011-10-26 22:20
  45. 不过眼下看的这本O-C的书,买它又重蹈了上次买PL/SQL书的覆辙,书评说太简单了有C基础的人不要买,我又本着从〇开始的初学者心态把它一并买了回来。确实讲C太多了,因为前一阵又恶补了C,所以基本上到目前还是一目十行这么看的,看到中括号才停顿一下。2011-10-26 22:23
  46. 水果家的开发者网站还挺玄乎,一会儿.php,一会儿web objects,一会儿疑似WebWork的带着jsessionid的链接。2011-10-26 23:14
  47. 立场不一样的人互相争吵是很正常不过的事,只有部分人真的是从内心觉得另外阵营的不同声音的存在不是没有意义的,更少的人能做到自己占优势地位的时候不会对其他阵营的人赶尽杀绝。2011-10-26 23:22
  48. 观有关敏捷的争吵有感。很多网上看似话语权很足的人,其实也都是普通人,普通人容易落进的俗套他们也免不了。还是自己力挺自己吧。2011-10-26 23:23
  49. 曾经对XCode最大的不适应就是……长的也忒像iTunes了啊……2011-10-26 23:29
  50. 我真是服了。好吧,我们都是偷懒的傻逼,你们都是三八红旗手一样的存在。2011-10-27 11:39
  51. 噢~敢情我没给layoff啊,只是椅子临时让人拿走了而已啊。白偷着乐了。2011-10-27 11:55
  52. 哎,国外这么多管理专家和过程专家都强调要正视的东西,我们一小同志都觉得可以忽略。潜台词都要呼之欲出了。不入党真是浪费了。2011-10-27 12:16
  53. 切,给人打tag是多容易的事情啊,从来都不屑于做。2011-10-27 13:35
  54. 不得不说,虽然QIM评价挺高的,可真是买完mac后买的比较失败的一个软件。刚开始用着确实挺好,大概2个月后开始,出现候选字浮动条消失的问题,没法选字…升级后解决了这个问题。然后最近3个月频频出现启动困难的问题,切换输入法切换到QIM的时候总是卡住一会儿,没法输入,编辑框所在…2011-10-27 16:10
  55. 正当我觉着差不多都可以忍了吧,最近出现词频和自定义词似乎被重置的现象,白训练丫这么久了,打开“用户词库”还能看见的词就是输入时不会出来了。我就不提刚付费完这东西就变成免费的这种丧气事儿了。哎,换Sun Pinyin吧。2011-10-27 16:12
  56. “Currently, no features of Objective-C 2 work with GCC.”,哎,可惜了,还真想操持操持,比C方便,又不像C++那么… 结果正宗GCC上的支持还是不到位。据说还是因为水果不回馈给FSF GCC。2011-10-28 00:32
  57. XD 外教来了,发现椅子也没了,they stole my chair?!2011-10-28 11:15
  58. 有日子没看GR了,先扫一下煎蛋吧!2011-10-28 12:48
  59. 真惊悚……都什么年代了,点个链接看门店列表,直接返回一张excel表格下载。2011-10-28 21:38
  60. 老了,老了。总觉得坐火箭一样成长的不光是计算机行业,可能还有伴着它的从业人员。行业也许可以一直这么疯长下去,人可能还是受不了的吧,尤其是不处于制定规则的那集团的人,总是疲于奔命的感觉。2011-10-29 02:04
  61. 介大爷还说以前自己是干开发的……………… 一点儿都没发觉像个做开发的人的样子………………2011-10-31 11:55
  62. 刚跟人说,2杯SB外带,晃悠着一路拿回来分赃,打开盖子,顶着一坨屎一样的是他的玛其朵,晃得跟稀屎一样的是我的拿铁………………………………2011-10-31 13:24
  63. resauce, sauce code, view sauce.2011-10-31 15:34
  64. 哟,不错,N年以前用的UrlRewriteFilter的license也彻底变成BSD了,以前还GPL加商业用途的双license了。行,这下好办多了。我厂的圡鳖律师们……2011-11-01 14:18
  65. 我在环球置地广场:签。阿娇大爷走人了,哎,让你看我头像不爽……………… http://jie.pn/p_IE1CybsB2011-11-01 14:23
  66. 从外面往家走,后面有个MM也回来,手机铃声刚好响起,是永远的超级玛丽那个音乐,我一听这个音乐就不由自主地一溜小跑起来…2011-11-01 23:31
  67. 这就是为啥越来越多的人都去创业型小公司。尼玛扯淡货。2011-11-02 15:50
  68. 嗬,公司介会议室配置太不够了,必须补贴我下午贡献出来笔记本然后大家才得以坐大厅里开会。话说以后可不能轻易拿出去了,回来一看上面喷的净是口水的痕迹,唇枪舌战啥的对防炫目屏幕太具杀伤力了,因为… 没法贴膜…2011-11-02 22:37
  69. Hmmmmmm….
哎,充数的好方法,回头再考古9月份的去…

Lion经验两则

No Comments

最近经历的Lion下比较想记一笔的经验,凑个数吧。

  1. 无厘头的DNS无法解析问题。

    不知道为什么我总是碰见这个问题… 网上搜了搜似乎也不是很常见。

    症状很简单:DNS无法解析,重设DNS服务器地址、DHCP的话重新续租等等都没法解决。

    解决方法:重启mDNSResponder服务。

    似乎有些简单粗暴了,不过确实没找到其他方法。记得Lion之前,这个mDNSResponder服务就总给我找事儿,不过那时的症状很明显,一般是从休眠唤醒之后,mDNSResponder进程的CPU使用率异常高,占满一个CPU核心;升级到Lion之后就再也没遇到这个问题,当时还觉得这个升级的钱花的值得。结果,后来就时不时地遇见DNS无法解析的问题了,无论怎么修改DNS相关设置都没法解决,syslog、dmesg输出也没有任何异常信息。后来想起来mDNSResponder最近很是消停,就上网搜了搜,才知道原来这个服务不像名字暗示的那样只负责mDNS,而是负责所有解析了。也许咱家接触Mac太晚了,不知道这个服务的渊源,我只记得Ubuntu下关掉Avahi是不影响其他DNS解析的。

    于是老方法重启了mDNSResponder服务,问题解决。

    
    launchctl stop com.apple.mDNSResponder
    launchctl start com.apple.mDNSResponder
    

    果然咬人的狗不叫。

  2. 把用户追加到其他组。

    各种userxxx命令在Lion下都是没有地,只有万能的dscl。简短截说,一个例子:

    
    dscl localhost -append /Local/Default/Groups/wheel GroupMembership iusr
    

    其实刚开始也就是知道dscl这么个东西而已,不过好在有-list命令可以去遍历“/”下的各个节点,然后就比较简单了。需要注意的也就是不同版本的Mac OS X的本地目录(此目录非彼目录哇~)下的用户组的路径不太相同,本地目录作为数据源的名称也不同,这些不同之处基本上不带参数跑一下dscl也就看出来了,就不废话了。

    哦,网上有人说用水果官方的Server Admin Tools来做这个事儿,不过我试验了一下,类似wheel这种组是看不到的,dscl下反正是可以看见,命令行也简单直白,所以就不纠结Server Admin Tools了。

以上~自行su/sudo。

安装gevent,Lion上

No Comments

不出所料,凡是带本地绑定的Python库,在Mac上多多少少都别扭一些。

今天是pip install gevent的时候出错:

In file included from gevent/core.c:225:
gevent/libevent.h:9:19: error: event.h: No such file or directory
gevent/libevent.h:38:20: error: evhttp.h: No such file or directory
gevent/libevent.h:39:19: error: evdns.h: No such file or directory

……

gevent/core.c: At top level:
gevent/core.c:21272: error: expected ‘)’ before ‘val’
lipo: can’t figure out the architecture type of: /var/tmp//cceaLjtd.out
error: Setup script exited with error: command ‘gcc-4.2′ failed with exit status 1

没仔细看pip怎么传-I、-L的参数去,环境变量也烦得慌,反正直接python setup.py可以接受这两个参数就好了。

直接下载gevent的源代码包,然后

sudo python setup.py install -I /usr/local/include/ -L /usr/local/lib

即可。因为/usr/local 是给brew指定的默认PREFIX,libevent也是通过brew安装来的。

 

抢回域名

No Comments

好久没写点什么了,今天也只是为了纪念一件事情:抢回丢了5年的域名,iusr.net。

先上一张最后一次仍然显示pendingDelete状态的whois截图:

Whois @ internic.net

这还是昨天在笔记本上查询时的结果,一直没关这个窗口,因为自从这个域名进入了RedemptionPeriod以后我就天天刷新它的状态N次,都记不清过了多少天了…当时就是天天祈祷丫们那些个投机主义者可千万不要续费啊。

看到THIS-DOMAIN-FOR-SALE.COM的字样了吧,NND。我还真想过发笔小财以后给赎回来,结果去他们网站一看,靠,卖到$4000,我得发成什么样才会花2、3万人民币买个域名啊…不过也没办法,当时这个域名因为刚毕业参加工作的时候太忙活给忘了续费了,想起来的时候也进入了RedemptionPeriod了,记得当时赎回的价格也老贵了,就放弃了。这帮投机主义者也算折本了,5年的钱虽说不多吧,反正最后是最起码没赚回来 :D ——这么说起来,这些人是不是都是5年为一轮投机周期的?记得其他地方也见过5年的这个说法,很多人丢了域名跟着扼腕来着。

言归正传,今天上班的路上,一坐上出租车就用手机又刷了一次状态,结果就显示没有这个域名了!当时兴奋啊!就决定到了公司就第一时间抢!转念一想…还是直接在手机上抢了就省心了!好在GoDaddy还真有个移动设备版的网站,拿着信用卡就很容易地注册好了,这次一咬牙一跺脚买了5年的!整个过程都是在出租车里完成的,异常顺利!——就是没注意出租车司机走错了路兜了个圈子………………

刚到GoDaddy把IP都指向VPS了,应该差不多已经生效了,回头抽空再把iusr.me下挂靠的服务都301到iusr.net下面去。加之昨天在神人的授意下,把VPS从加州Fremont机房迁入東京机房,访问速度提升了很多。又让我有了折腾的欲望了:)

有关并发

4 Comments

最近那个靠谱的小朋友开始看OpenJDK 6的源代码,相比之下真是让我汗颜,我机器里的代码都扔在那儿很久了。

不知道这个小朋友是不是也从main()开始看,还是为了搞明白一些问题而有针对性地去看。反正最近跟我讨论了一些并发、多线程方面的事情,很多概念和算法都是上学时就学了的,但是不出意料我也已经都忘了。于是,呃,现在看来最方便的查资料方式莫过于wikipedia.org了,也不知道会不会出些纰漏,不过英文版比中文版要好很多,内容多,引用和批注看起来也比较充实,暂且相信这么多人的劳动成果吧。摘录一些基本概念:

Critical Section:

临界区。本质上是段代码,其中包含一定需要确保同时只能被一个执行这段代码的线程访问的资源。临界区本身来说并不是实现对资源互斥访问的算法或者机制,一般都需要借用互斥量、信号量之类的结构来确保这种多个线程对这个资源的互斥访问。

Mutex:

mutual exclusion,互斥量,互斥体,互斥锁,whatever,基本带上“互斥”就行,也很常见。最简单的用来确保临街区并发安全的算法或者机制,同时也是用来指代负责在多个线程中协调互斥操作的那个数据结构,我想后面这个用途应该更常见,一般说进入了某个mutex保护的临界区以内为 “持有/获得了某个mutex” 。

Mutex有硬件和软件的实现。硬件实现方面,单处理器机器上一般就是临时禁掉中断和上下文切换,多处理器机上一般用原子的test-and-set操作让几个线程通过一个共享的标志变量做busy-wait,也叫做“自旋锁”(spinlock);软件实现就太多了:Dekker算法,Peterson算法,还有发明Paxos的大神Lamport的面包店算法,以及最近才知道的一个Szymanski算法。这几个算法应该都是lock-free的 (???)。

Semaphore:

信号量有一个初始值用来控制进入临界区的进程/线程数量,从而将并发访问的进程/线程数目控制在初始值限定的数量以下。说到信号量,其实这倒是一个可以从互斥量延展开的概念:互斥量可以看做初始值为1的信号量,而且有些实现里信号量和互斥量的也很类似。信号量有两种操作:P和V,P操作用来将限制并发访问的数值减1,V操作相反。所以一般情况下使用信号量访问共享的资源/数据的时候以P操作开始而以V操作结束,而进行P操作的时候如果信号量的用来控制并发访问的值已经降为0的话,调用P操作的进程/线程就没办法进入临界区而要等待其他进程/线程做完V操作。有的情景中也会把P操作叫做wait,V操作叫做signal。

Monitor:

监视器,对于Java程序员来说这是最熟悉的并发控制单元和概念。简单来说,监视器类似mutex加上wait+signal操作:排他,而且支持不同的线程彼此通过wait和signal操作进行通信。多个线程彼此之间需要协作和某种意义上的通信也算是个可以理解的需求,而无论是获取mutex还是semaphore的P/V操作,都没办法满足多个线程在临界区以内互相协调,所以如果真的遇到了这种需求,只好想方法变通去。监视器正是可以支持多个线程在临界区内进行一些更细粒度的协作——通过wait和signal操作,而且必须保证多个线程在临界区内执行的排他特性。

和信号量的P/V操作——有些时候也会被叫做wait/signal——不同,监视器的wait和signal操作可以让当前线程暂时释放掉已经持有的监视器,当然,因为这个时候当前线程已经进入临界区,所以暂时释放掉监视器以后就不能再继续执行了;然后在其他线程执行同一监视器上的signal方法后,这个暂时释放掉监视器的线程就可以在调用signal的线程离开临界区以后继续从上次调用wait的地方执行。其实对于signal调用后具体应该要决定哪个线程该继续执行也是有两种争论:一是把调用signal的线程挂起,把原来在wait的线程唤起;另一种正相反,调用完signal的线程继续跑,离开临界区之后才轮到原来在wait的线程继续执行。Java应该是后面一种。

 

基本上应该就这些了吧,没涉及到分布式条件下的互斥和同步。没有太仔细看所以出错了的话还望斧正。

解决一个JCC编译构建问题

2 Comments

首先是环境:


iusr-mbp:~ iusr$ uname -a
Darwin iusr-mbp 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386

iusr-mbp:~ iusr$ python -V
Python 2.7

JCC是最新的pylucene-3.1.0-1里面的那份儿。

起因是想做个小东西,预计要用到Lucene。别看我不怎么用它,可我还真嫌java干起来太麻烦…虽然做这个也想为了方便工作时用,可也算业余时间折腾吧,实在懒得一本正经地Java。所以选择了PyLucene,自然,以前也没接触过。

按照http://lucene.apache.org/pylucene/jcc/documentation/install.html上的说明,看起来不难,可惜,果不其然,到了我这里就出问题了,诶。

出问题时的输出:


iusr-mbp:jcc iusr$ python setup.py build
running build
running build_py
writing /private/tmp/pylucene-3.1.0-1/jcc/jcc/config.py
copying jcc/config.py -> build/lib.macosx-10.5-fat3-2.7/jcc
copying jcc/classes/org/apache/jcc/PythonVM.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
copying jcc/classes/org/apache/jcc/PythonException.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
running build_ext
building 'jcc' extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch ppc -arch x86_64 -g -O2 -DNDEBUG -g -O3 -dynamiclib -D_jcc_lib -DJCC_VER="2.8" -I/System/Library/Frameworks/JavaVM.framework/Headers -I_jcc -Ijcc/sources -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c jcc/sources/jcc.cpp -o build/temp.macosx-10.5-fat3-2.7/jcc/sources/jcc.o -DPYTHON -fno-strict-aliasing -Wno-write-strings
/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64
/usr/bin/../libexec/gcc/darwin/i386/as for architecture i386
lipo: can't open input file: /var/folders/Gy/Gyqx+dxCGlGc5LULCWn6Zk+++TI/-Tmp-//ccr6jC50.out (No such file or directory)
error: command 'gcc-4.0' failed with exit status 1

也不知道是不是因为XCode刚更新过,给PPC的as明明是在 /usr/libexec/gcc/powerpc-apple-darwin10/4.0.1/as ,好吧,ln -s 一下到/usr/local/libexec/gcc/darwin/ppc/as 下面。结果还是不行…换了个错误:


iusr-mbp:jcc iusr$ python setup.py build
running build
running build_py
writing /private/tmp/pylucene-3.1.0-1/jcc/jcc/config.py
copying jcc/config.py -> build/lib.macosx-10.5-fat3-2.7/jcc
copying jcc/classes/org/apache/jcc/PythonVM.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
copying jcc/classes/org/apache/jcc/PythonException.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
running build_ext
building 'jcc' extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch ppc -arch x86_64 -g -O2 -DNDEBUG -g -O3 -dynamiclib -D_jcc_lib -DJCC_VER="2.8" -I/System/Library/Frameworks/JavaVM.framework/Headers -I_jcc -Ijcc/sources -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c jcc/sources/jcc.cpp -o build/temp.macosx-10.5-fat3-2.7/jcc/sources/jcc.o -DPYTHON -fno-strict-aliasing -Wno-write-strings
/usr/bin/../local/libexec/gcc/darwin/ppc/as: can't fork a new process to execute: /usr/bin/../local/libexec/gcc/darwin/ppc/as (Resource temporarily unavailable)
lipo: can't open input file: /var/folders/Gy/Gyqx+dxCGlGc5LULCWn6Zk+++TI/-Tmp-//ccNXEZps.out (No such file or directory)
error: command 'gcc-4.0' failed with exit status 1

郁闷了。折腾来折腾去都不行,直接cp过去给PPC的as也是不行,而且,真想不通为啥去为PPC编译,反正只是本地自己用。然后只好用python -v setup.py build 看了下输出,查到了编译前要调到distutils.unixcompiler.py,于是看了看源代码,看到有个_darwin_compiler_fixup方法很是可疑——敢情,这方法是会考虑ARCHFLAGS这个环境变量的——是啊!当初折腾编译、make时要折腾的若干叉叉叉FLAGS环境变量之一啊!看来后来一直都是被各种自动化工具养得白痴了,看来生命还是在于折腾。

于是乎,


iusr-mbp:jcc iusr$ export ARCHFLAGS="-arch x86_64 -arch i386"

x86_64和i386怎么都够我用了~然后再python setup.py build以及python setup.py install,成功。这一来就不用考虑诸如Xapian这样的东西了,长的跟“下片儿”似的。

P.S.,distutils.unixcompiler._darwin_compiler_fixup前面的一段注释挺好玩,as usual。

Older Entries