0
Posted on 01:10:00 by Unknown and filed under

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

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

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

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

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

4
Posted on 01:39:00 by Unknown and filed under

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

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

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

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

0
Posted on 00:27:00 by Unknown 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 03:17:00 by Unknown 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 2008 和 Platform 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 00:01:00 by Unknown and filed under

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

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

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

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

3
Posted on 21:48:00 by Unknown and filed under

其一:显卡罢工

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

其二:萤火虫

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

0
Posted on 18:14:00 by Unknown and filed under

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

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

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

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

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