豆知识

上周末修自己的电脑,获得了一些非常无聊的心得体会,为了防止帕金森所以记在这里。

1、安装VS2011的时候,电脑过热非正常关机,然后安装中断且重新安装不能。

其实是因为自己在和同事联机打《left 4 dead 2》,这个游戏不错哦,推荐一下!好吧,扯远了,我本以为是msi安装包又傲娇了,自己把自己锁住了。经过一番折腾,手动卸载了几十个VS2011残留组件之后,仍然无法安装。后来换装VS2010,结果.NET Framework 4仍然安装不上。报错0xC8000247,显示某个安装包无法pause windows update。搜索之后发现这篇帖子:http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_update/error-code-0xc8000247-cant-install-updates/198166df-9549-e011-8dfc-68b599b31bf5

里面有个哥们儿提到Intel Rapid Storage Technology Driver的旧版本会导致windows update在西数的硬盘上无法正常工作。我的三星本本确实装过“英特尔快速储存技术”这个驱动,虽然不知道这驱动是干什么的但买来就装着。然后我去下了最新版的驱动,更新后再次开始VS2010的安装,一切正常。

所以问题的根本原因并不是突然关机,而是因为前几天我换了一块西数的硬盘……WTF!!!

2、储存在“我的图片”文件夹中的图片,在拷贝到别的文件夹之后,文件内容被修改。

这一点让我非常恼怒,因为这个修改是随机的,有时候发生有时候没事。导致的结果就是我的游戏截图文件不能按照时间排序,所有的图片都乱套了。经过一番探索,结论是图片被某种神秘程序加了一段内容,因为不仅是日期,实际连文件大小都发生了变化。

经过搜索发现有人称是Windows Media Center这个服务搞的鬼,为了管理图片什么的。所以不要把文件储存在My Pictures目录中,避免WMC来接管你的图片。http://www.sevenforums.com/music-pictures-video/218692-windows-7-keeps-changing-my-pictures-filesize-modified-date.html

然后我又很想恢复文件到修改前的状态,所以研究了下添加的东西。其实WMC给文件添加了一些metadata,包括jpg和png都会被添加日期之类的信息。使用.NET Framework的BitmapDecoder可以读取或者修改这些metadata,也就是所谓的RDF (Resource Description Framework)信息。我很蛋疼的写了一小段程序,发现win7会给jpg添加”/xmp/MicrosoftPhoto:DateAcquired”字段的信息,会给png添加”/tExt/{str=Creation Time}”字段的信息。真是令人讨厌设计啊,我又默默的诅咒了一位微软的PM。

嗯嗯,就是这么两件事情,果然是数据洁癖么= =b

开源软件和商业编译器

因为手头某个开源软件是用Borland公司的IDE开发的,重度使用了VCL,只好很郁闷的折腾了半天BCB的东西,终于了解到世界上还有比微软更加热爱分版本的公司。

请问Borland Developer Studio 2006,Borland C++ Builder 2006,Borland Turbo C++ 2006,到底它们之间是肿么样一个关系呢?答案是这样的:BCB是BDS的C++部分,而TC是BCB的免费版,但是它昙花一现已经不提供下载了。并且TC2006要比BDS2006中包含的C++ Builder版本高,因为虽然是免费版,但是发布的晚。这一切混乱的根源大概都是因为2006年Borland自己也很混乱吧……

我花了大半个月的业余时间终于搞清楚他们之间的关系之后,发现免费的Turbo C++ 2006没法编译这个开源软件。原因很简单,他引用了BCB的某个sample代码,而这部分是商业软件。

最终又可耻的下载了海贼版终于编译出了可执行文件。然后发现引用的部分非常简单,只是一个用来选择工作目录的树形对话框。于是乎删掉这部分代码,终于可以用免费的编译器编译了。

经过这么一出,我深刻理解了为啥开源软件很少用VS来做。毕竟你不能强迫用户搞一套VS不是么?另外,MFC和VCL都是邪恶的东西,做UI还是要用Qt啊。