0
Posted on 上午1:10:00 by Fan Zhang and filed under

今天终于有闲暇时间坐下来看 Code Geass,当看到连鲁路修都当 CEO 的时候,突然觉得有点想喝饮料...于是就去了自动售货机。

虽说这台破机器经常要么不认硬币,要么不认纸币,但在我两手准备下,依然吃进了我 3.5 元钱。我决定喝一瓶果粒橙,因为它的标签上写着:Cold, 夏天喝冷饮看动画多么享受啊。

结果这家伙竟然给我吐出一瓶热的!更神奇的是,它根本没有制热的功能,纯粹是机器内部的热量就达到如此神奇的功效,冬天怎么就没发现呢?

还是原来楼里的自动售货机好,虽然东西经常挂在上面掉不下来,但多买几个总会下来的。至少那台不会骗我,饮料是凉的。

哦,突然还想起,这台光吃饭不制冷的自动售货机还干过一件缺德事。那次我先扔进一元硬币,想了想还是不喝饮料了,于是就按了退币,结果竟然掉下一个一角的!难道它的机制不是我扔进什么还退出什么吗?而且,里面怎么会有一角的硬币呢?

4
Posted on 上午1:39:00 by Fan Zhang and filed under

原谅我恶俗的名字,其实就是介绍两个扩展。

我喜欢将一些常用的网站,脚本(如 iMacros ), Bookmarklet(一些 javascript)放在书签工具栏中,使用起来比较方便。因为它们很常用,所以不用显示文字,只是一个图标(Favicon)就行。另外,有些网站没有图标(自己写的脚本也没有),或者图标很难看,就需要手动修改。在 Firefox 2 的时候,书签就是一个 html 文件,修改起来比较方便。但在 Firefox 3 中,书签系统变得很智能,保存是用 SQLite 数据库文件,不太容易修改(一个笨的方法就是"导出HTML"->修改->"导入HTML")。而且,有一个致命的问题是,Firefox 会自动用网站本身的图标替换我修改后的图标,可能有设置能改,但是我不知道。

下面就来介绍两个扩展实现我的目的,非常好用。

  • Smart Bookmarks Bar:实现在工具栏中只显示图标。
  • Favicon Picker:可以自定义任何书签的图标,并且不会被网站默认的图标自动取代。

0
Posted on 上午12:27:00 by Fan Zhang and filed under

使用高版本的 Visual Studio 打开低版本创建的项目(工程、解决方案)文件时,会自动转化到高版本。但这个过程是不可逆的,即高版本创建的项目(解决方案)文件不能在低版本中打开。

因为新的版本会加入很多新的特性,所以项目文件不能向下兼容。如果不得不在低版本中打开高版本创建的项目文件时,可以尝试采用手动修改解决方案文件和项目文件。

对于不同版本的 Visual Studio 生成的项目(解决方案)文件所标记的版本号是不同的,如果强制修改,则可以跳过 Visual Studio 的检查,一般就可以打开了。只是如果使用了新版本的某些特性,则可能出现一些问题。用文本编辑器打开项目(解决方案)文件,你会发现含有如下的版本标记。

Product Name Product Version File Format
Visual Studio .Net
v7.0
7
Visual Studio .Net 2003
v7.1
8
Visual Studio 2005
v8.0
9
Visual Studio 2008
v9.0
10

下面示例中标记出来的部分就是需要修改的地方。

解决方案文件(.sln)


Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ProjectConverter", 
 "ProjectConverter.vbproj", "{B637ACFD-0AFC-4FBB-A8C0-602B5ABA62F0}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", 
 "{09667F41-0E35-4D40-A0A9-E71BA6740D93}"
EndProject
Global

 ....

EndGlobal

项目文件(.vbproj, .csproj, .vcproj)


<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

    <ProductVersion>9.0.21022</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{B637ACFD-0AFC-4FBB-A8C0-602B5ABA62F0}</ProjectGuid>
    <OutputType>WinExe</OutputType>

    <StartupObject>ProjectConverter.My.MyApplication</StartupObject>
    <RootNamespace>ProjectConverter</RootNamespace>
    <AssemblyName>ProjectConverter</AssemblyName>
    <FileAlignment>512</FileAlignment>

    <MyType>WindowsForms</MyType>
    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>

    ...

</Project>

一般来说,将这些版本号修改了就可以打开了。准备写本文的时候,搜索到一篇:Visual Studio 2005/2008 Interoperability,还提到了更多可以修改的地方,本文的示例就是我偷懒复制来的,而且还给出了一个小工具,有需要的可以下载试试。
4
Posted on 上午3:17:00 by Fan Zhang and filed under ,

对于刚刚接触 DirectShow 的人来说,安装配置是一个令人头疼的问题,经常出现的情况是最基本的 baseclass 就无法编译。

一开始我也为此费了很大的功夫,比如说修改代码、修改编译选项使其编译通过。因为大家 Visual Studio 的版本与 DirectShow 的版本各不相同,导致问题多种多样。网上的参考也不可尽信,往往花费了大量的时间和精力,程序仍没有编译通过,而丧失学习 DirectShow 的兴趣和信心。

我在 Visual Stdio 6.0,2003,2005,2008 都尝试过了配置 DirectShow,基本可以达到不需要修改代码就可以编译通过。经验就是,要配合 Visual Studio 的版本选择不同的 DirectShow 的版本。一般来说,要选取 比同时期的 Visual Studio 略晚发行的 DirectShow 版本。(我觉得,微软至少要对新发行的 DirectShow SDK 在当前主流的编译环境中测试才对,所以一般这种匹配都是很容易一下子编译通过。)

Visual C++ 6.0

陆其明老师的《DirectShow 开发指南》是一本不错的书,使用的环境就是 VC 6.0。按照我刚才的理论,几乎所有的 DirectShow 版本都可以容易的安装在 VC 6 上,因为它太古老了。不过,要是安装最新的 SDK 反而不行,因为 VC 6 的编译器问题很多,对标准支持得也不是很好,所以导致最新的 SDK 无法编译。

陆的书上所用的版本其实是 dx9sdk.exe (2002.12.19),我这里给出的是微软官方的链接(他们把所有的版本都保留了),需要正版验证才能下载(应该不成问题吧...)。

我建议使用 DirectX SDK Summer 2004 版本,这个版本是最后一个整合 DirectShow 的 DirectX SDK版本。

之后微软把 DirectShow 分离出来了,比如需要安装 DirectX SDK April 2005 版本再加上 DirectX SDK February 2005 Extras。也就是说,DirectX 已经不含 DirectShow,这个时候(2005年)它被包含在 Extras 里面。所以安装了 Extras 基本上就可以进行 DirectShow 开发了。

Visual Studio 2003

这个版本建议安装 Summer 2004 这个版本。Extras 也没问题。

Visual Studio 2005

这个版本我用的不是很多,印象中安装 Summer 2004 没问题,甚至更低的 9.0b 也没问题。安装很新的版本就会出现我说的那种太超前反而编译不了的现象。

大概到 2006 年,DirectShow 就被包含在了 Windows Platform SDK 中。不知道最新的 Platform SDK 对 VS2005 支持地如何,我没有去试。之前有一个版本需要修改一些代码才能编译。

Visual Studio 2008

非常简单,安装最新版的 DirectX SDK June 2008Platform SDK (2006.03.15) 即可。另外,Platform SDK 的后续版本似乎叫 Windows SDK,内含的 Media Foundation 似乎要取代 DirectShow。(Windows SDK for Windows Server 2008 and .NET Framework 3.5 2008.02.05)

进行环境配置

如果 DirectShow 的版本比 VS 要新,则相应的头文件和库文件就会自动配置,否则就要手动添加。

如果安装的 DirectShow 比较早,那么在 baseclasses 里面就会有相应的工程文件,打开编译即可。如果安装的是 Platform SDK 就会只有一个 makefile,注意到在安装完 Platform SDK 以后,开始菜单会有一些进入不同编译环境的快捷方式,选一个想编译的版本进入,然后在 baseclasses 下 输入 nmake,就会自动编译了。

还需要注意的就是一些库的引用、编译链接的选项等等,在出现问题的时候搜索就行,一般不是大问题。

2008-07-29 Up:
有一篇文章可以在遇到编译错误的时候参考:Some DirectShow Samples Break in Visual Studio 2005

2
Posted on 上午12:01:00 by Fan Zhang and filed under

我一直在 NOD32 和 AntiVir 之间犹豫,前者我有正版 ID,后者用免费版,所以需要考虑的是杀毒能力和资源占用。因为我的机器基本不中毒和木马,所以资源占用我更看重一些。

我在几台机器上都分别用过这两个软件,感觉 NOD32 有的时候会卡,比如播放视频文件(即使我设置 avi 文件不扫描) ,比如在打开一个目录的时候。这点让我很难忍受,因为我经常要进行大量的文件操作,这让我感觉我的机器很慢,很不舒服。

AntiVir 感觉就很快,而且它的警报也多(虽然基本都是误报,但有些也是边缘化的软件,或者涉及密码的网页、脚本),让我感觉它在起作用。唯一的问题就是升级需要连国际网,每次升级有广告,不过是免费软件,这点可以接受。

既然两者测评的结果差不多,我决定还是换成 AntiVir,因为小红伞的图标也很可爱。

3
Posted on 下午9:48:00 by Fan Zhang and filed under

其一:显卡罢工

昨日深夜,代码正写得兴高采烈,突然显示器不亮了,显示找不到信号。查遍原因,原来是因为灰尘太多,风扇不转了,导致显卡罢工。我刚换的风扇没多久啊...这地方真是灰大。

其二:萤火虫

今天在校园里跑步的时候,发现了两只萤火虫。第一只我还以为是幻觉,因为正当我准备前去观察的时候,后面一辆车经过,突然变得很亮,然后我就看不到了。我就继续走,结果在草丛中发现了第二只,看了半天...很小很小,不知道古人是如何那它来看书的。我是第一次亲眼见到萤火虫,很激动...

0
Posted on 下午6:14:00 by Fan Zhang and filed under

我昨天使用 Google Docs 的时候还在想什么时候可以提供模板来创建比如项目规划、日程安排、报告等具有一定格式的文档,今天就发现新增了这个功能。

点击 Google Docs Templates 可以浏览所有的模板,有很多非常好看。可以预览或者使用模板新建文档。在文档主页也可以选择使用模板新建。

不过 Google Docs 还有很多缺点,比如速度不快,文档列表编辑后不能自动刷新,编辑功能不够强大。

模板似乎只有300余个,希望以后能自己编辑模板上传。

刚才在使用 Google Docs 的时候,右上角出现一个调查问卷,我还认真答了一番。

2
Posted on 下午4:49:00 by Fan Zhang and filed under , , ,

信息过载问题越来越被重视,订阅了这么多 RSS Feed,并不是每篇文章都值得认真阅读。AideRSS 就是通过给每篇文章计算 PostRank 值来评价其重要性。简单的说,就是通过综合考虑文章的反向链接、评论数、Digg 、Del.icio.us 收藏等等来给出一个评分,AideRSS 依照这个分数可以重新过滤并输出一个新的 RSS,这样就可以只订阅评分高的文章了。

现在 AideRSS 推出了一个 AideRSS + GoogleReader Firefox 扩展,其实是一个 Greasemonkey 脚本,可以直接从网站上安装脚本。它会在 Google Reader 的每篇文章之前显示一个 PostRank 值,还提供了一个选单可以过滤不同等级的文章。

还有两个键盘操作(List View 模式下):

  • x:切换被过滤的条目显示的显示方式,隐藏或者淡化。
  • c:用不同颜色表示不用的来源。
2
Posted on 下午8:20:00 by Fan Zhang and filed under

我有一台 Sony MD MZ-N10,是好多年前买的,后来因为著名的 PC-MD 问题修理了两次,大大打击了我对 MD 的喜爱。前年,又因为 MD 出现了待机状态耗电太快的问题,我就把它闲置了。

昨天因为要给那个 Sony 小本找光驱,又把它翻出来了。因为这东西还挺贵的,用的时候很小心,所以还是95新,就又摆弄了一番,而且把待机耗电的问题也解决了。

感觉音质还是不错,比我那个 Benq 的华而不实的 MP3 要强...

附,我遇见的 Sony MD N10 的问题:

  1. PC-MD 问题:PC-MD 状态显示不正常。这个问题是主板设计的时候没有充分考虑到浪涌问题,导致主板某地方被击穿。送修吧,一般也要好几百。
  2. 主机耗电:不开机放置一段时间后电量自动消耗。首先查看设置里面的 power mode 是否设置在 quick 模式,只要调到 normal 即可;否则可能是电路电源管理 ic 故障,送修吧。

附:官方相关下载

1
Posted on 下午5:25:00 by Fan Zhang and filed under ,

我有一个 Sony 的小本,曾经通过硬盘安装了 Ubuntu。现在我想重装系统,一不小心(或者说手贱)把 Ubuntu 的分区先给删除了,然后 GRUB 就无法启动,显示 Error 17。

本机无软驱、无光驱、无法USB启动,几乎无法使用非 Sony 的外设启动(比如非原装的 USB 光驱),现在又无法通过硬盘启动,好在通过 BIOS 设置,可以从网络启动。首先列举需要的装备:

  1. 作为 PXE 服务器的主机。
  2. 路由器+网络环境。
  3. 客户机,带有支持 PXE 启动的网卡。

重点就是如何搭建 PXE 服务器环境(可以理解为 DHCP Server + TFTP Server),如果主机是 Windows Server 可以通过安装 RIS(远程安装服务)来配置,但是我的主机是 Windows XP,所以我选用了第三方软件来实现,绿色免安装,而且不用重启,非常方便!如果主机是 Linux 或者其他系统,只要配置好 DHCP 和 TFTP 服务,应该就可以了。

说了这么多,下面给出操作步骤,非常简单:

  1. 下载 Tftpd32,解压缩即可。
  2. 运行 Tftpd32,设置启动文件存放的目录(什么是启动文件?下面介绍),和 DHCP 选项卡的内容,我的主机是 192.168.1.100,下面的设置:
    ->IP pool starting address:192.168.1.101
    ->Size of pool:100
    ->Boot File:刚才设置的目录下的启动文件
    ->Mask:255.255.255.0
    其他不用改,点 Save 保存。
  3. 开启客户机,就会自动搜索网络,自动下载启动文件,就启动了。

还有一个要解决的问题:启动文件哪里找?这个要启动不同的系统需要的文件是不一样的,比如启动 WinPE 需要:startrom.n12,ntldr,ntdetect.com,winnt.sif,WinPE 映像文件,把这些文件都复制到 Tftpd32 设置的目录,然后配置好 winnt.sif 即可。详细可以查看这篇:PXE服务器架设指南及PXE启动WinPE(含PE2.0)解决方案总结

如果你觉得文件不太好找,还有更方便的方法,去 MouseDos 下载一个 WinPE 超级网克工具箱 PXE 版,什么都有了,只是注意,这个工具箱里面的 WinPE 启动以后回自动 Ghost 硬盘,所以在填写 GHO 文件的时候随便写一个假的即可,找不到文件回自动退回到 WinPE,这个时候就可以进行分区之类的操作了。

相关文章(有的我没有仔细看):

0
Posted on 下午11:05:00 by Fan Zhang and filed under , ,

软件作者是否应该听取用户的要求?我想任何人都会认为答案是肯定的。

不谈无理的需求,如果这个需求可要可不要,如果这是一个免费或者开源软件,作者维护一个软件已经很辛苦了,是否有必要精益求精呢?

如果是我,我是会尽可能满足用户的合理需求,即使暂时不能满足,也会给出可信服的解释或者给出时间表。

以上感慨是在浏览 Tab Mix Plus 的官方论坛时想到的。

TMP 是一个很有名的 Firefox 扩展,我觉得即使在 Firefox 3 下,这个扩展也是很有用的(今天我看到一个文章说 Firefox 3 内建的标签管理器已经够好,我很不同意)。但是,Mozilla 的官方网站上这个插件竟然一年多没有更新了!

在官方论坛,可以下载到 dev 版的 TMP,使用起来没有问题,最新的版本是080416。有用户要求更新 Mozilla 官方网站,提供 release 版,但是这个要求被作者拒绝。理由是:一,即使有正式版也跟现在的版本一样,所以不需要提供。二,能来到这个论坛的,自然可以下载到最新版本,所以不需要更新官网。

我觉得,作者说这番话挺幼稚的,这不是说非要怎样的问题,而是一个态度的问题。能给用户提供方便为什么要拒绝呢?况且,如果更新官方网站,能带来很多用户,这不是作者希望的吗?

1
Posted on 下午4:22:00 by Fan Zhang and filed under

便携版本的软件非常好用,因为它可以保存在U盘上,也可以在不同机器上方便地转移,而不需要重新设置。PortableApps.com 上有很多常用的便携版本的软件,我的 Firefox Porable 就是这里下载的。

这个网站上提供的软件都是用一种方式制作打包的,有源代码可以看,也有很多其它便携软件使用了这种方式,比如 GVim Portable。我们希望可以隐藏开始的启动画面。

方法很简单,只要在启动目录下添加一个 ini 文件来说明设置即可,不仅可以实现不显示启动画面,还可以给启动的程序加上运行参数,更改设置保存的目录等等。

一般来说,启动程序的目录下没有这个 ini 文件,可以从 Other/Source 目录下找到相应的 ini 文件,复制到启动程序的目录下,这个 ini 文件就起作用了。

有关启动画面的选项是:

DisableSplashScreen=true

其他选项可以查看 Source 目录下的 Readme.txt 文件,里面有较详细的说明。

1
Posted on 下午2:38:00 by Fan Zhang and filed under

叛逆的鲁路修终于又死人啦!夏莉竟然被弄死了,太可怜了,死的和尤菲米娅一样莫名其妙!

不要说我剧透,都已经播放超过15小时了。

从第二部开始,Geass 的力量就不怎么好使了,先是橘子先生有了消除 Geass 的能力,这话鲁路修对夏莉连使了三遍“不要死”,最后还是死了(侧面反应朱雀的体力比较强)。看来 Geass 只能对付小怪,Boss 都免疫了。

橘子先生在第一部里面是个杂碎级别的人物,想不到第二部登场又这么华丽,不过很快又成了鲁路修一派的人物,这个世界真是变化快啊。

说起被笼络的人,罗洛这回出风头了,把夏莉给捅了(这是剧情诱导出的结论,没准不是他捅的)。

此外,剧情又开始扯淡了,说是皇帝的目的是杀死让人争斗的神,太高尚了,这就是所谓的为了和平大杀四方的典型啊。

btw,我感觉 R2 非常女性化,这是 CLAMP 的功劳啊!

0
Posted on 下午7:49:00 by Fan Zhang and filed under

今天我在上网看文章的时候,发现有一个 Blog 的链接让我感到很不快。这个 Blog 主要是介绍软件的,我常常看。

我有一个习惯,在看到一款新软件的时候,我希望能去软件的官方主页看看。因为我对软件的要求有一项就是可持续性,如果软件作者是一个充满热情和精力的人,我会认真对待这个软件,即使它可能还不太完善。

可是这个 Blog 的文章充满了无意义的链接,比如我点击软件名称,希望能带我到官方主页,谁想链接却指向文章本身,这个设定让我莫名其妙。而且在文章中充满了指向各个标签的链接,这种指向是毫无意义的,因为我在看这个具体软件的帖子的时候,我是不会点击“软件”这个标签的。如上种种,让我怀疑作者写下这个词只是为了加入这个链接指向自己的网站。

我知道这些知名的 Blog 作者都面临一个被剽窃成果,被恶意转载的问题,所以在文章字里行间加入了自己的标记,不过我觉得多考虑一下读者的感受可能更重要。