2008年1月17日星期四

更安全的原因所在

继续挑战Gregarius中积攒的未读feeds items,已经追到了2007年8月份,6666/17841条未读信息已经减少到3220/21258项:

吉利数字in my Gregarius

今天才看到fcicq的ActiveX 安全控件 = 不安全,不禁在想,到底什么原因导致ActiveX不安全呢?终于,我发现这并不能盲目归咎于微软产品质量不佳或者是ie的缺陷,也不能说是开发人员水平不行或者是不负责任,终极的原因,居然是小众和大众的区别。

简单说来,ActiveX是闭源的,那么真正了解它的完整工作机制的人必然是少数,每个人的智慧都有局限性,引申开来,每个团队也有考虑不到的地方,那么我们就可以认为,ActiveX必然存在着漏洞,并且小众之外的大众看不到、体会不到,甚至发现了一些端倪也无法判断原因出自何处,在无法得到充分、全面的用户检验的时候,维护团队仅靠一些自身质量控制和用户使用方面的反馈,也就有照顾不到的地方了。漏洞有了生存空间,安全性自然下降。更何况,ActiveX的运行平台,Windows以及ie,也具有类似性质,坏的效果往往不是累加而是乘积式的增长。

搞过一点软件开发的人都知道测试的重要性,初级一点的测试就是模仿用户操作,使用一些极限值、便捷值等来对软件进行检测,而高级一些的测试可不是谁都能作的工作,测试人员不仅要会"操作"软件,还要懂得软件实现的原理和机制,必要的时候要去翻文档、源码,来制定测试方案,这样才能找到一些深层次的问题。回到我们说的小众和大众的区别问题上来,当软件有了1000万用户时,可以把这1000万想像为初级测试用户,他们会反馈一些使用中遇到的问题,协助软件更改,这是闭源软件的方式,在开源软件的运作模式中,这些用户里可能会有万分之一的用户出于学习、好奇或进行改进的原因,去翻阅源码,在阅读过程中自然有一定的检查效果,其中的经验丰富精力充沛者还会进行测试、亲手修改,部分类似与高级测试人员的工作。只要施以得当的管理,让这些测试、修改的效果得以发挥,软件的质量及安全性自然会更高一些。

之所以会想到这些,是因为我记得以前微软还是谁在抨击开源软件的质量和安全性的时候提到过,闭源软件是由高素质的开发团队,有严谨的质量控制管理的情况下生产出来的,所以质量更好,安全性更优。我虽然不能全盘否定这一观点,但这么说太片面了。绝对的安全肯定是一个"无穷大"的数字,每一份努力都能够离这个"无穷大'更近一些。广大人民的力量是无穷的,更不要说为了薪水工作和为了理想信念干活的结果差异了。

其实,小众和大众的影响在其它很多方面有体现:我们在颁布法律或规章的时候,要开听证会,要征集意见,就是要把小众群体起草出来的东西,让大众去检查、补充、完善;我们要讲团队合作,要讲民主,就是要避免小众决策的片面,能力的局限;我们把重要建设项目的方案公开让大家讨论,也是在借助大众的智慧。人多力量大,众人拾柴火焰高,三个臭皮匠还抵个诸葛亮呢,如果谁坚持要说有限的团队就能够生产出完美的产品,我们大可一笑置之。

最后,小众和大众都是相对的概念,应用的范围要适度,服务器的管理员只设一人是不安全的,公司里人人都是管理员也不安全,监狱安防设计图自然也不能搞什么全民共享,那《越狱》就失去大卖点了 :)。真正安全的方式是要绝对经得起推敲、检验的,在这方面,非对称加密如pgp、gpg堪称典范,充分利用公开的机制达到了保密的目的。

Source: http://www.fwolf.com/blog/post/380

2008年1月14日星期一

[Mutt]用msmtp替代esmtp作发信代理

刚开始使用mutt的时候,由于也没有什么经验,在MDA选择方面抓了一个esmtp就用上了。说实话,esmtp也一直工作的很好,就是发信的时候需要傻傻等着(参见muttrc的sendmail_wait参数),如果不等待也可以,发送失败你就不知道了。虽然失败的情况比较少,一般都是邮件比较大或者网络不太好的情况才会发生,但我们外发的邮件往往都是比较重要的,真想有一种能够自动重试的发信代理,于是就查到了msmtp。

msmtpesmtp两个软件作者都不多,但msmtp确实更新频繁一些,而esmtp作者说 现在已经不需要怎么添加功能了,只是维护bug。在多账户配置方面,好像msmtp的配置方法要"聪明"一些,账号规则有一些"继承"的小把戏。在发信队列方面,esmtp在Features中明显声明不支持,而msmtp有一个msmtpqueue,国内用的人非常少,只看到cu blog 上提到了一点,smtpqueue能够把要外发的邮件集中在一起,单独发送,但没有说失败处理的事情;再到msmtp在sf.net上的cvs中查msmtpqueue的README文件,终于搞清楚了,和我的需要比较吻合。

msmtpqueue会"冒充"成一个MDA,当mutt发信时,它接收外发邮件并返回成功信息,而实际上只是把信件保存在QUEUEDIR里了,当调用msmtp-runqueue.sh的时候,再进行实际的发送处理。发送成功一封信,就会从QUEUEDIR中删除,发送失败就继续保持不动,下次再调用msmtp-runqueue.sh的时候自然又会处理(相当于重发)了。比起mutt中的邮件失败重发还会多生成一个邮件副本(我设定了发信的同时record在当前目录)应该是好多了。

Mails sent successfully will be deleted from the queue directory. Mails whose delivery failed will be left untouched; you may want to edit them, delete them by hand or simply run msmtp-runqueue.sh at a later time. 

工作开始,首先通过apt安装msmtp,很小的,加上TLS/SSL所需的libgsasl7,一共才182k。然后配置账号文件~/.msmtprc,格式和~/.esmtprc比较类似:

# Default value for all following accounts defaults #      tls on     tls_trust_file /etc/ssl/certs/ca-certificates.crt     keepbcc on     logfile ~/log/msmtp.log  # Gmail account gmail     host smtp.gmail.com     port 587     auth on     tls on  account mailbox@gmail.com : gmail     from mailbox@gmail.com     user "mailbox@gmail.com"     password "secret"  # Another mail service account another_mailbox@domain.com     host smtp.domain.com     auth on     from another_mailbox@domain.com     user "another_mailbox"     password "another_secret"  # Default account account default : mailbox@gmail.com 

Copy自官方文档,语法很简单,最开始的defaults是默认设置,然后的account就是各个账号的设置了,账号名称最好和邮件中的From:对应,这样msmtp就能知道调用哪个账号了。最有意思的是,account可以用冒号 :来"继承"其它已定义账号的设置,使用这个机制,就为所有gmail邮箱指定了host、port、auth、tls四个属性,然后在具体的账号设置中,只要再设定from、user、password就可以了,很方便,"继承"多个账号的话用逗号隔开。最后默认发信账号(匹配寻找account失败时使用)default可以直接"继承"某个账号的设置过来。

然后设置~/.muttrc,用msmtp来发信:

set sendmail="/path/to/msmtp" set use_from=yes set from="Fwolf " set envelope_from=yes set sendmail_wait=0 

测试一下,发信正常,现在可以让msmtpqueue出场了。由于msmtpqueue只是在"转达"msmtp发信的命令,所以需要先把msmtp调试好以后再配置。

msmtpqueue已经随msmtp安装上了,放在/usr/share/doc/msmtp/examples下,按照这里README文件的说明,把msmtp-enqueue.shmsmtp-runqueue.sh两个文件加上执行属性,然后ln到$HOME/.mutt下,再在这里创建一个新目录msmtpqueue ,ln成~/.msmtpqueue(两个脚本默认的QUEUEDIR),最后修改muttrc中的sendmail:

set sendmail = "~/.mutt/msmtp-enqueue.sh" 

好了,现在再来发信,是不是瞬间就完成了?再看~/.mutt/msmtpqueue目录下,也多了两个文件,分别以.mail.msmtp结尾,他们分别包含了刚才所发信件的信件内容和发送命令。现在运行msmtp-runqueue.sh

~/.mutt$ ./msmtp-runqueue.sh *** Sending 2008-01-12-23.03.52.mail... 2008-01-12-23.03.52.mail sent successfully 

邮件就这样顺利的发出去了。

工作到这里基本就都完成了,发信时按y嗖一下就完成的感觉真不错,为了更方便的发送邮件,还可以在mutt中定义启动邮件发送程序的快捷键:

macro generic S "!~/.mutt/msmtp-runqueue.sh\n" 

ubuntu的包里没有,但svn上还有一个msmtp-listqueue.sh脚本,列出当前QUEUEDIR中信件的From/To/主题,凑合能用,但用RFC2047编码方式的中文标题自然是不能正常显示的了。

Source: http://www.fwolf.com/blog/post/379

2008年1月12日星期六

侠盗猎车·圣安得列斯 on Cedega

忙得要发疯,赶紧找个游戏发泄一下,于是,用mldonkey抓了个我的最爱,侠盗猎车·圣安得列斯,幸运的是,虽然Vice City无法在Cedega下模拟,San Andreas却表现良好。不浪费大家的时间,安装(可以用wine)之后,cedega如下配置就可以了(最近不愿贴图,文字描述好了):

General设置

  • Winver: winxp,用win98也行
  • Engine Version: 6.0.2,我只装了这个
  • XVidMode: on
  • DXGrab: off,这个即使关掉了,鼠标也跑不出gta窗口,不过用Alt+Tab可以切换出来,但鼠标一跑到gta窗口(哪怕窗口并非聚焦)就又被抓回去了。
  • Managed: on
  • Mozilla Control: on
  • Scheduler: Default
  • Use Pthreads: default
  • Desktop: 1024×768(这个选no的话就是全屏运行了)
  • Path to Browser: (empty)
  • FreeType and XRender: on
  • Activate TransGaming HUD: off

Graphics设置

  • Video RAM(MB): Default
  • AGP Vertex Data(MB): Default
  • Pixel Shaders: off
  • Vertex Shaders: on, 2.0
  • NV_VAR Extension: on
  • ARB_VBO Extension: on
  • Dynamic VBO: off
  • Index VBO: off
  • Fixed Program: Auto
  • Fragment Offset: Auto
  • Non Power of Two Textures: Auto
  • Clip Space Fix: on
  • Anisotropic Filtering: on
  • Framebuffer Objects: on
  • Float Textures: on
  • GL Shading Language: on
  • Occlusion Queries: off

我的显卡是ATI X600,人物都是白影,把Occlusion QueriesPixel Shaders选项去掉,贴图就正常了。左下角的地图和右上角的状态经常会呈现反白状态,把Framebuffer ObjectsFloat Textures都选上,就ok了。

我下的这个版本有一点缺陷,开始新游戏的时候,骑自行车到自己家,然后进屋再出屋,和胖子开车走,进行到sweet & kendl动画的时候,就死住不往下进行了,只能在cedega中结束。载入别人的全开存档都比较正常。好在我还保存有2005年的存档,可以继续玩,只是怕前面干了啥了都不记得了。说起来,我下载这个游戏的时候,确实还没回忆清楚自己到底玩没玩过呢,呵呵。

如果嫌这个比较大的话,Gta2现在已经免费了,可以自行下载安装,在wine下能玩,用cedega反倒不行。这个不如圣安得列斯模拟得好,经常只有屏幕下半截有图像(另外一半在显示器外),由于是用wine模拟的,异常关闭后桌面的分辨率就乱套了,最讨厌的是游戏本身,不仅开枪没法瞄准,存盘还要花5万大洋,额滴神哪~~,不过无聊的时候还是可以打发些时间的。

Source: http://www.fwolf.com/blog/post/378

你最希望在哪里看到TIPS?

最近比较忙,疏于更新,已经是2008年了,总结畅想也过了季了,简单冒个泡,以示活着。

很多软件在启动时,都会显示一个tips提示,也有叫每日一xx的,内容嘛,有些是一些操作技巧,有些则是轻松的提示、笑话什么的,比如我以前也玩过(现在还在用)的fortune

问题是,我们最希望在哪里看到tips呢?换个说法,tips在哪里出现,才会让我们觉得不讨厌呢?我先扔点砖吧,希望能砌成"5000个最希望tips出现的地方",2008年终总结就指望它了!

  1. Windows或者Gnome、Kde启动的时候来一条吧,我的机器很慢,足够让我看清楚了。
  2. Firefox启动的时候最好能先快速弹出一个tips窗口,然后再后台处理启动任务,这玩意儿虽然好用,启动确实慢了些,tips内容最好就是firefox加速技巧或节省内存占用的技巧。
  3. 图片啊图片,大图片还没加载的时候别显示alt了,来点tips吧,如果图片放在flickr上,tips内容当然是那些忍者之术最好不过了。此招数对在线视频应该更加适用。
  4. ADSL猫的灯也别总是有数据传输的时候就闪,把tips转换成摩尔斯电码,di-di-di-DAH-DAH-DAH-di-di-dit,此方法对所有网络设备led灯有效。
  5. 程序编译出错时,除了错误信息,也来一条tips吧,内容就是300条良好的编程习惯。
  6. 马路上等红灯的时候,多无聊啊,如果旁边有一显示屏,来点路况tips或者笑话来解闷就好了。
  7. 安装进度条,好像大部分软件都没有聪明到让用户狂等待的时候再给他们灌输点啥,windows都白装了么,多好的一个例子啊,还是现在都用深度什么的ghost直接装了?
  8. 说到ghost,那个灰蓝的界面上,有太多的空地儿可以显示tips了。
  9. 说到安装,apt dist-upgrade的时候能来点tips解闷么?以前安装linux的时候还有俄罗斯方块玩咧。
  10. 用随机的tips作im的状态签名、邮件签名、论坛签名,虽不算新鲜,也不是谁都能搞出来的。
  11. 用语音tips来作闹钟铃声,天天被一种声音闹醒,真怕被训练成条件反射。
  12. xx或bb的时候,tips出现在目光自然聚焦的地方,这个已经有人做了,不过广告居多。
  13. im机器人,每天放出一条tips,不知道会不会有无聊的人加这种好友,但再怎么着总比qq尾巴好吧。
  14. 老是用枯燥的数字来作产品序列号太没劲了,用tips吧,哪天Windows的序列号就会变成"30+ Basic Linux Commands"才好玩呢。
  15. 在名片上印点tips效果肯定不错。

大家继续,解放思想,tips是无处不在滴~

Source: http://www.fwolf.com/blog/post/377