ClamAV 项目领导人 Tomasz Kojm 离开该项目

今年是 ClamAV 10周年,不过该项目领导人 Tomasz Kojm 今天给所有 [clamav-users] 邮件列表发了 email 称将离开这个项目,邮件大概的意思是:

对我来说是时候做出改变了,ClamAV 现在已经是一个成熟的软件,我相信 Sourcefire 会成功的继续它的开发并维护其架构。 Matt Watchinski 已经领导 Sourcefire 的漏洞研究团队 10 年了,他将继续领导这个项目;Joel Esler 是公司开源社区经理,你可以从他这里获取建议和观点。

邮件全文请看:

http://markmail.org/thread/dvpc6xfif2oc7esn

花费148天终于破解278位密码

据日本媒体报道,被外界认为要花数十万年才能破解的新世代配对(Pairing)密码,被日本的研究团队花148天破解。破解278位数的密码,堪称达世界纪录。

日本读卖新闻、日本经济新闻等报道,由日本情报通讯研究机构、九州岛大学、富士通研究所专家所组成的团队利用21台计算机成功破解278位数的配对密码。在这之前破解最多位数的纪录是204位数。

被破解的是2001年设计出的配对密码,这被视为网络购物等电子商务的新世代技术。

但研究团队认为,配对密码比想象中的还容易被破解,如果要做为通讯数据加密钥匙的话,需更多位数才行。这次的研究成果有助于厘清安全密码或适当的加密钥匙交换期。

密码以当时最高级功能的超级计算机来解密,如果需要花约1年的时间才能破解的话,在实际运用上,安全性算是充分。

研究团队分析指出,如果配对密码是1011位数的话,在未来20年间可保安全性。

Twitter 周四出现大范围宕机 黑客称攻击所致

Twitter周四出现大范围宕机 黑客称攻击所致

国外媒体报道,Twitter当地时间周四下午中断了数小时。据Twitter页面跟踪网站Pingdom称,Twitter中断是从美国东部时间上午11:59开始。该服务在下午1点左右暂时恢复,但不到一个小时后,Twitter再次中断。

Twitter女发言人表示:“工程师们目前正在努力修复”。Twitter的状态更新博客在下午1:42表示,“问题已经解决,目前所有服务都可使用”,但到2:16时,Twitter又发布消息称:“问题还没解决”。

一小时后,Twitter大多数用户似乎都可使用。下午3:00后不久,Twitter公关页面发布推文称,问题是“我们基础设施部件之一出现故障造成 的”。此前一个黑客小组UGNazi向多家媒体声称,已对Twitter发动了分布式拒绝服务(DDoS)攻击。黑客汉纳·斯威特(Hannah Sweet)称,该黑客组织攻击Twitter原因是其支持《网络情报共享与保护法案》(Cyber Intelligence Sharing and Protection Act),这项法案允许联邦政府和民间企业共享有关可能存在的网络威胁的信息。

本次Twitter宕机是自去年10月出现长达一小时中断后,最长的一次服务中断。宕机是各网站的通病,但与几年前相比,Twitter要好得多,当时该网站常常出现大范围宕机。

ArduSat:利用开源硬件制造的微型卫星

拥有自己的太空卫星,这是一件多么酷的事!

位于美国加州的 NanoSatisfi 在 Kickstarter 为自己的开源卫星项目 ArduSat 筹资。他们打算利用开源硬件 Arduino,制作一个体积娇小,而且拥有基本探测功能的微型卫星。

ArduSat 的体积还不如一个鞋盒大,它的长宽高都只有 10 厘米;重量非常轻盈,在 1 千克左右。而小小的身躯内,却有 25 种传感器,包括 3 个摄像头、一个盖革计数器、分光仪、磁力计、GPS、二氧化碳探测器等等。 

ArduSat 的结构可以看以下视频。对比一般的卫星来说,它的结构不算复杂:一个十字偶极天线、几片太阳能电板、一个容纳元件的 CubeSat 结构、装载着 Arduino 和传感器的电路板、UHF 射频收发器、飞行控制计算机。

由于 Arduino 是开源硬件,因此 ArduSat 的优点之一,是拥有强大的自定义性,你可以为自己的卫星编写程序,让 ArduSat 飞上太空之后,按照自己的指令去行动。你不必为自己的代码出错而担心,代码都先由开发 ArduSat 的 NanoSatisfi 进行测试,找出其中是否有 Bug。

当 ArduSat 被送上太空后,它将那里逗留 6 到 8 个月,直到它坠入大气层被焚毁为止。不过,它所收集到的收据,将经由 GENSO 网络来发送到地面——你可以保留这些数据,不论是图片,还是二氧化碳浓度的记录。

通过 Kickstarter, ArduSat 目前筹集到资金为 40713 美元,超过当初 35000 的目标,看来不少人喜欢这个主意——拥有自己的卫星,代替自己在太空探索。

无垠的宇宙,的确令人向往。

关于编程的胡扯

一年一度的高中毕业生填简历的日子即将就要到了,又有很多人问计算机专业的事情。其实我从心底里觉得,高考后才来问这个,已经完了一大半了。当然另一小半十分有前途的人可以在大学四年赶上来,不过估计他们还是要读个研究生,才能把自己训练成能用的码农。

    编程是一件很难的事情。当然我的意思跟那篇著名的《编程是一件很难的事情》不一样。想把代码写好,本来就是一件非常困难的事情。我大三的时候训练一个大一 的老乡,就光是C++,长达四年后她还搞不清楚模板元编程究竟是什么。而且还有C语言学会了转C++会把坏习惯带进来啦,C++的人转做C#之后发现很多 C++的好技巧到了C#都只会让程序变得更慢啦,很多写动态语言的人不理解类型的好处还在那里胡扯啦,还有C#和javascript明明放着大好的函数 式风格不用,非要把代码写的超长(本来光是这样没什么问题的,只是有某些人不肯学习新知识)。可见,就算把自己训练了好多年,最终进入了工作岗位,想把代 码写好,也是一件非常困难的事情。

    当然有些人说,如今只有产品做得好才能赚钱,代码写的好有个屁用。这只能是人各有志,有些人就不喜欢钻研代码,这本来也没什么。但是这些人老是跳出来忽悠 别人,也只会让编程变得更难。只是幸好,我的单位并不会跟某些单位一样说一些“把代码写得那么好有什么用,搞到我们还非得学东西才能看你的代码,赶紧做点 新feature啦”的这种话,我已经觉得很好了。

    写得好这个东西还是比较抽象。我认为其中一条就是代码要好维护。我一直以为,只有代码写得好维护,好改,清晰易懂,这样加新的功能才会容易,不出事情,顺 利发布软件。后来我发现我错了,腾讯不也是QQ一版一版的发吗,原来加班也是一种方法,啊哈哈哈。如果在一个单位里面,不加班别人就会找你麻烦的话,我相 信你也不会花心思把代码写好的,反正都要加班。

    不过对于志向就是写代码的那一些人,最好还是不要受到这些外来信息的干扰。最近跟我们组里的一个test manager聊天,他是一个菲律宾人,说是从纸带时代开始就写代码了(不过看起来好年轻……),工作的时候还觉得C语言是一个崭新的语言。后来他跟我 说,如果一个人有志向与,代码一条路走到黑,最好就去学习一下怎么当architect。他说道,Architect的知识架构是由各种pattern组 成的,然后就说了自己年轻的时候的很多故事来作证这个道理。然后还讲了微软的其中一个创始人到现在还坚持一线写代码的事情,不过没告诉我是谁。

    在这之前,刚好MSR的Daan Leijen因为来北京参加programming language相关的conference,就来我们这里参观了一下。后来我看他做过GUI,做过parser combinator,发明实现过语言,就前去搭讪,结果发现他读书的时候的导师竟然是Erik Meijer。按照他的话说,“then we are connected”,如果说成中文,就是有缘分吧。接着就跟他讨论了一些parser combinator和类型系统之类的东西。我说我之前也搞过这些东西,最后还贡献了一部分给公司,换了个组之后还开了讲座什么的。他讲到他读书的时候, 也是学校没教自己自学的这些东西,后来周围也没什么人做,但是并没有让他丧失动力。然后就说了一句话让我印象很深刻:“原来你也做这些东西啊,我应该可以 看到为什么你要从产品组跳到MSRA来了。”他直到今天,头发都基本上掉光了,还在那里继续研究programming language的东西,还给了我几篇论文。我觉得很好,人就该像他那样。

    有些时候,人就得有那个信念,才能把可行但是难度大的东西,也最终搞出来。我自己写了11年的程序,其实并没有接触过十分广泛的东西,因为很多时间都花在 重写我的一些idea上面了。譬如说编译器就写了五六个,GUI库就写了八遍,还有些杂七杂八的。不过从这个过程之中,可以明显感觉到自己什么时候比以前 更进一步。这种signal有很多,譬如说当你决定要添加一个比较复杂的功能,也可以迅速知道怎么做而不用动到架构啦;譬如说你觉得你的代码越来越顺眼 啦;譬如说你因为架构不行决定重写的时候,你发现前一个版本的代码可以捡起来继续用的部分越来越多啦。

    写到这里,我想起很多人都问过我,程序要怎么写才能写得好,或者说设计模式要怎么写,之类的问题。如果把学习编程花费的精神代价做标准的话,捷径是没有 的。但是如果仅仅把时间作为标准的话,捷径显然是有的。怎样才能加速你学习的过程呢?答案就是,先写再看书。对于像编译原理这种略微高深的知识,总要自己 写过几遍,吃了一些苦头,才能知道为什么书里非要把算法那么设计结构那么安排。对于像设计模式这种需要大量经验才可以领悟到的知识,如果你从来没独立写过 一个上万行的程序,你觉得你能理解设计模式在讲什么吗?我觉得这种时候能做的也就是背下来,理解什么的都是扯淡。诸如此类,学习程序,如果要加速那个过 程,肯定要花大量的时间写代码。当你把项目做得越大、越复杂、算法越扭曲、界面越华丽、尺寸已经大到你觉得不学习新的方法论就肯定会让代码失控的时候,这 个时候你来看设计模式的书,保证是每看到一个模式都觉得人家说到你心坎里去了。那你不仅可以迅速理解,而且以后还可以不由自主的想起来使用它。

    当然,如果你不是一个喜欢写代码的人,那这个方法肯定没有用,因为中途放弃什么的太多了。这种时候,只能怪你没缘分,设计模式不渡你了。如果你最后撑下来 了,虽然你自己觉得你也花费了相当的努力,但是别人反正是看不到你的努力的,就会开始觉得你有捷径了。为什么呢?因为效率高啊,时间花得短啊。

    光写代码也是没用的。同人于野一篇讲成年人还能不能进步的博客说得很好,知识分为舒适区,学习区和恐慌区。舒适区的意思就是,你很容易就可以做完。学习区 的意思就是,你需要花费大量的智力才可以做完。恐慌区的意思就是,你根本不知道如何下手。当你在为了练习编写大量的代码的时候,你要尽量把题目都安排在学 习区这里,这样才能让你进步快的同时,还不会被问题打倒,可以继续积累成就感了。

    学生做这个最方便了,工作之后,如果刚好遇上个黑心公司要你天天加班,你反而没时间做学习区的内容了,公司给你的肯定是舒适区的苦力活。

    说到这里,如果你还有时间练习的话,千万不要去想:“我每一个程序都要跨平台”,“我只做这个语言”等等。反正将来,语言你都要会,平台的差异你都要知 道,为什么要断送自己了解这些东西的机会呢?你真的以为不知道垃圾收集的原理,和一些底层的可以通过C++的练习而得到的的操作,你真的可以在某些关键时 刻操纵好C#吗?当然有些人会觉得,我估计一辈子不会遇到这些问题的,所以我还是不管他了。人各有志嘛,C#不渡你,也是你自己的事情。如果你真的可以一 辈子都在一个平台上用一种语言做同一种程序做到退休,那真是幸福的生活啊。

    胡扯到这里也差不多了,这就是月经贴,时不时,总是要发一下的。