3
Posted on 下午11:40:00 by Fan Zhang and filed under , , ,

  在 cnBeta 上看到这组该死的视频后,我就觉得有种不发表下评论不痛快的感觉。

  不知道这组有关瑞星的视频是不是官方做的,如果是,那太侮辱观看者智商了,而且很黄很暴力。如果不是官方制作,而是瑞星支持者的作品,我只能感慨...

  如果读者中也有用瑞星的,请听我的劝,不要用了,尤其是那些本身就用盗版的,赶紧换一个吧...

  为了平复看到如此弱智视频的情绪,下面还有一个有趣的。(下面的视频与上文无关)

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

  我有一个程序需要在 Windows Mobile 上运行,一直使用的是 Windows Mobile 6 SDK 自带的模拟器来调试和测试。我有两个台式机,其中一台 CPU 是 AMD Athlon 3000+,另一台是 Intel Core2 2.33GHz。模拟器在这两台机器上运行的效率差别很大。这可能是因为我第一台 PC 本身就很慢。

  注意到在模拟器中查看 CPU,显示的是 ARM Intel 376Mhz。我以为当我的 PC 足够快的时候,程序在模拟器上运行的速度就等同于在同等真机上的速度。

  不过,今天我找了一个多普达的机器,CPU 是 Samsung SC32442 400Mhz,但是运行速度比我第二台 PC 的模拟器要慢 20%,差别很大。

  难道模拟器的 CPU 主频只是摆设,具体速度是由 PC 本身的 CPU 决定的?

5
Posted on 下午11:14:00 by Fan Zhang and filed under

  今天在 IT 八卦站 cnBeta 上看到一则消息,经确认属实:联想解答用户关于 NVIDIA 显卡 GPU 的问题

  NVIDIA公开的G84和G86系列笔记本显卡GPU问题主要与机器内部核心温度变化有关。联想笔记本产品具备良好的散热设计,经严格测试,Idle(空闲)状态的GPU温度远低于NVIDIA提供的危险温度69摄氏度。因此联想产品基本不受此问题影响,请您放心使用。

  别的厂商都承认有问题,比如 DELL 还发布了一个 BIOS 升级补丁,虽然是杯水车薪,但至少正面面对问题。

  你联想怎么这么牛啊,显卡质量问题一带而过(虽然不是你制造的),就开始吹嘘自己良好的散热设计了。最可笑的是"严格测试"了"空闲状态"下温度不高,废话,我不开机温度更低!

  而且问题不是出在高温上,温度的变化起伏更容易导致故障出现。

  联想的这个声明简直没过大脑,短短两句话就想把人打发。就算机器不会出现问题,这个声明也只能体现出与其知名企业不相称的劣质的公关水平!

3
Posted on 下午10:59:00 by Fan Zhang and filed under

  周六那天晚上,月光皎洁,我走在回宿舍的路上。

  月亮在云上散发着柔和而明亮的光芒,云彩随着风缓缓飘动,很久没有见到这样的景色了。

  快走到宿舍的时候,忽然看到前方天空凭空出现一股升腾的雾气,大概离地十米,高度约有三米。云雾还隐约散发出光芒。我当时就被吸引到了,还在猜测或许是某处探照灯灯光照射的结果。

  但是随着我走近,发现不是灯光,因为它是垂直向上翻腾,而且聚集在面积大概一平方米的区域。奇怪的是,雾气下面什么也没有,突然出现的样子就像是天空有一层透明的挡板。

  我快步走到近处想仔细观察,那股雾气像失去了支撑突然"落下",如同轻纱坠地,随即消失不见。

  我没想试图给它一个解释,就权当一个神奇的经历吧~

12
Posted on 下午11:24:00 by Fan Zhang and filed under

2008-12-17Up:

  此问题已修正。

  我在 Blogger 中设置了把评论发送到 Gmail,以便能即时看到并回复评论。可是从今天开始发送来的邮件标题都是乱码,比如:

[晓月] 对下列文章的最新评论 通过代理使用Zoundry Raven向Blogger发布文章.

  虽然我知道这是十进制表示的 Unicode 码,说明 Google 在向全面 Unicode 转变,是个好事情。不过也别这样显示啊...希望能尽快修正这个问题。

  附:E-mail乱码解码器

2
Posted on 下午11:34:00 by Fan Zhang and filed under ,

2008-08-18Up:

  哦,我错怪了有关部门,不是之前传闻的乱拔网线,而是"封的就是你"...

  CSDN关于恢复网站服务的公告:由于某个新注册网友在Blog中发表了多篇P2P方式的奥运直播,我们未及时清理违规内容,CSDN网站被停止服务了10天,对此给各位网友带来的不便,我们深表歉意。为了后续更好地为各位网友服务,请各位网友不要发表含有奥运版权的视频和相关信息。

  这几天我就发现 CSDN 即使用了代理也上不去,在月光博客上看到专业性技术网站CSDN被关闭才知道是有网站盗播奥运视频,机房遭封锁,csdn.net受牵连

  CSDN 在国内的影响力自不用说,这次被关对我也造成了不小的困扰。

  这些个部门凭什么这么粗暴?难道邻居犯罪,我也得挨枪?这简直没天理。这种事,说好听点就是一点都不和谐,说不好听就是蛮横粗暴、滥杀无辜,放在旧社会,这不是草菅人命吗?

  有那么多技术手段可以采用,别为了方便就直接拔网线。要是不会,也多学习学习!

  我也不指望有人能出来道歉,承认错误,赶紧把 CSDN 恢复了我就"知足常乐"了!

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

  从原来的 DirectX Summer 2004 换到 Windows SDK 以后,发现在 GraphEdit 中在 Filter 上点右键不能查看属性了。

  需要将 SDK 中的 proppage.dll 文件注册一下:regsvr32 ...\proppage.dll

7
Posted on 上午5:41:00 by Fan Zhang and filed under ,

  太热,换一个模板。

  从写写改改那里看到了这个 Wordpress Admin 模板,今天终于下决心换,改了好久,好多以前的技巧我都忘了。

  正好 Google Pages 也要倒了,图片什么的也换一个空间。Favicon 直接用 Base64 编码了,因为找不到可以存放 ico 的相册。

  另外,谁能告诉我 Google Sites 上传的附件为什么不能直接下载,但是去掉链接最后的 "?attredirects=0" 就可以下载。

3
Posted on 下午11:39:00 by Fan Zhang and filed under

  受到新主题的诱惑,把我的黑莓 8700 升级到了 4.5。一开始选择的版本比较低,结果中文很多都显示不出,都是些小方块。最后安装了东亚版的 4.5.0.52 解决了这个问题。

  注,所谓的 4.5.0.75 这个是运营商打包封装的版本号,应用程序的版本号是 4.5.0.52。下载需要用代理。

中文支持

  这个版本已经能够很好显示中文,可惜的是 8700 的版本仍然没有拼音输入法。不过有五笔划输入法,现在正在刻苦学习中。数字 12345 对应横竖撇捺折,头晕啊...

界面

  当初升级就是看上了新版本的主题,使用了一下,发现界面细节变化很多,漂亮了很多。自然,我感觉速度也慢了一点。主题的图标有很多效果,而且菜单也可以半透明。

Document to Go

  在黑莓上处理 Office 文件,有兴趣的可以看:黑莓专用Document to Go Premium安装包放出

问题

  我之前提到的一个 Bug:重新启动后,自动背光功能设置无效,必须重新设置。这个问题似乎没有解决。

  对于耗电量,我的经验是和开启的程序有关,比如看电子书的 AnyView,只要打开,电量就刷刷的掉。所以升级到 4.5 以后电池消耗的快我想也是正常,毕竟程序复杂了。但是,还没有 AnyView 那么夸张。

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

  今天重新配置了 Visual Studio 2008 + Windows SDK 6.1,编译 BaseClasses 很轻松通过。但是在编译之前写的一个程序的时候却提示:

...\directshow\baseclasses\refclock.h(80) :
                        error C2061: 语法错误 : 标识符"CAMSchedule"      
...\directshow\baseclasses\refclock.h(139) : 
                        error C2143: 语法错误 : 缺少";"(在"*"的前面)   

之类的错误。

  问题出在 refclock.h 引用的 Schedule.h 文件在 Include 和 BaseClasses 重复出现了,而且内容不一致。所以需要在引用路径的时候把 BaseClasses 的路径提前。

3
Posted on 下午10:54:00 by Fan Zhang and filed under

  如果不是因为有事,我才不愿意在北京待着。

  今天上公交竟然查我的包,虽然我的包里只装了一卷卫生纸。

  而且,笔记本电脑也不准带上公交,826、690 已证实,说是"上面通知"。已经刷卡的会被直接退现金。听说 328 好点,会和蔼地提醒你把电池卸下来单独放,防止爆炸。

  我想知道,要真是什么危险品,售票员认得出来吗?

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

  这个问题已经有好多文章讨论,我再写一遍只是想表达一下我对微软的不满...

  问题描述:安装 Visual Studio 2008 进行到 Visual Studio Web 创作组件 (Visual Studio Authoring Component) 时提示安装失败。

  问题原因:这个组件安装需要使用 Office 2007 的安装文件,如果当时 Office 安装完毕后把 MSOCache 文件夹删除就会出现这个问题。事实上,所需的文件 Visual Studio 自己也有,只不过因为先装了 Office,安装程序就只能找 Office 相应的文件(依靠签名识别)。

  解决方法:重新找到 Office 安装光盘,修复下 Office(这时候 MSOCache 就回来了), 重新安装 Visual Studio 即可。

0
Posted on 下午10:51:00 by Fan Zhang and filed under ,

  我在使用 TortoiseSVN 管理个人文档代码中介绍了开源的版本控制软件 Subversion。对个人用户来说使用 TortoiseSVN 就足够了,但对团队开发来说,需要一台服务器保存版本库,以便开发人员访问,所以需要安装 Subversion(不过 TortoiseSVN 仍然可以安装,不冲突)。另外,还需要一个缺陷跟踪系统来管理 Bug,我选择了 Trac。当然,Trac 并不是唯一的选择,能与 SVN 集成的缺陷跟踪系统也有不少,而且 Trac 的 Bug 管理功能有待提高,不过经过对比,我觉得 Trac 是一个不错的选择。

准备工作

  因为版本的更新,我列出的都是当前的下载链接,肯定将来会失效,那个时候就从官方网站进入找到相应的版本即可,同时注意版本要协调一致。

  从 SVN 网站:http://subversion.tigris.org/ 下载 SVN 相关程序:

  从 Python 网站:http://www.python.org/ 下载:

  从 Trac 网站:http://www.edgewall.org/ 下载:

安装

  • 解压缩 svn-win32 到目录 C:\SVN15。
  • 安装 Python:一路 next 即可,我是安装到了 C:\Python25。
  • 安装 svn-python,setuptools,Genshi,trac 这些都会自动识别 Python 目录。

  安装结束后,可以将 SVN 下的 bin 目录,以及 Python 下的 Scripts 目录加入到系统 PATH,方便后面的命令行输入。最好重启一下,有一些动态链接库可能需要重启后加载。

配置 Trac 环境

  因为我们要把 Trac 与 SVN 整合,因此首先需要有一个 SVN 的版本库,比如 D:\MySVN。假设我们希望在 D:\MyTrac 保存 Trac 的数据,输入:

D:\Python25\Scripts\trac-admin D:\MyTrac initenv

  这就开始了一个配置向导,其中红色部分是我的输入,[Enter]表示直接回车:

# 项目名称
Project Name [My Project]> [Enter]

# 数据库
Database connection string [sqlite:db/trac.db]> [Enter]

# 版本库类型
Repository type [svn]> [Enter]

# 版本库地址
Path to repository [/path/to/repos]> D:\MySVN

  这个时候,D:\MyTrac 就建立好了 Trac 的环境数据。如果这一步出现了错误,比如提示缺少 ssleay32.dll,重启一下再进行这步即可。

  启动 Trac 服务,输入:

D:\Python25\Scripts\tracd.exe --port 8000 D:\MyTrac

  在浏览器中输入:http://127.0.0.1:8000/MyTrac,就可以访问建立好的 Trac 页面了。

创建 Trac 密码文件

  在上述浏览页面,点击 Login 会提示 Authentication information not available. 因为我们没有使用 Apache,所以需要使用一个 Python 脚本来生成密码文件,这个脚本在 Trac 的官方 Wiki 上:Trac Standalone。这里原文复制,将下面的代码保存为genpsw.py:

from optparse import OptionParser
# The md5 module is deprecated in Python 2.5
try:
    from hashlib import md5
except ImportError:
    from md5 import md5

# build the options
usage = "usage: %prog [options]"
parser = OptionParser(usage=usage)
parser.add_option("-u", "--username",action="store", dest="username", type = "string",
                  help="the username for whom to generate a password")
parser.add_option("-p", "--password",action="store", dest="password", type = "string",
                  help="the password to use")
(options, args) = parser.parse_args()

# check options
if (options.username is None) or (options.password is None):
   parser.error("You must supply both the username and password")
   
# Generate the string to enter into the htdigest file
realm = 'trac'
kd = lambda x: md5(':'.join(x)).hexdigest()
print ':'.join((options.username, realm, kd([options.username, realm, options.password])))

  注意红色部分的 trac 这个要与下面命令行输入的红色 trac 保持一致。

# 生成密码
genpsw.py -u admin -p admin >> D:\MyTrac\password.txt

# 加入 admin 用户
trac-admin D:\MyTrac permission add admin TRAC_ADMIN

# 启动服务
tracd --port 8000 --auth *,D:\MyTrac\password.txt,trac D:\MyTrac

  这个时候,就可以用 admin : admin 登陆了。如果希望生成多个用户名和密码,则需要多次运行上述 Python 脚本,其中">>"的含义是追加到文件。这步本质上就是将密码的 md5 保存到本地,之后就用这个进行校验。而上面用到的 "TRAC_ADMIN" 是指管理员权限,这是 Trac 默认设置的一个权限,可以使用 trac-admin D:\MyTrac permission list 列出当前的用户和权限。在使用管理员账号登陆以后,可以方便的修改这些。

将 SVN 与 Trac 作为服务启动

  在 Windows 环境下,总是有一个命令行窗口是很碍事的事情,我们希望能把 SVN 与 Trac 作为系统的一个服务,开机就能自动启动。
  我们使用一个 Windows 自带的服务配置程序:sc,只要在命令行中输入:

sc create svnserve binPath= "\"C:\SVN15\bin\svnserve.exe\" --service --root D:\MySVN" displayname= "Subversion Repository" depend= Tcpip start= auto

sc create tracserve binPath= "\"C:\Python25\Scripts\tracd.exe\" --port 8000 --auth *,D:\MyTrac\password.txt,trac D:\MyTrac" displayname= "Trac" depend= Tcpip start= auto

  然后在服务中开启新加入的两项服务,重启就会发现它们都启动了。删除服务使用:

sc delete svnserve

  注:sc 的参数 binPath 要求用双引号括起来,如果路径还有空格,使用转义字符:\",sc 的详细使用可以看帮助。"--auth *" 表示所有项目用相同的账户登陆。"D:\MyTrac" 表示要启动的项目,如果有多个项目用逗号分开即可。

一些高级设置

  在 SVN 版本库 D:\MySVN\conf\svnserve.conf,可以设置代码的基本使用权限:

anon-access = read # 设置匿名只有读权限
auth-access = write # 设置登陆用户有写权限
authz-db = authz # 使用 authz 文件中的权限设置

  在 Trac 环境设置 D:\MyTrac\conf\trac.ini 中,可以把代码浏览的权限与 SVN 绑定:

authz_file = D:\MySVN\conf\authz

  注意到,这个权限绑定和 SVN 目录下面的 svnserve.conf 无关,也就是说,如果在 svnserve.conf 设置了匿名权限为 none,但是在 SVN 下的 authz 文件却没有体现这一点,则 Trac 中的代码浏览可能会允许匿名浏览。

  同样在 trac.ini 中,设置字符集可以解决中文显示问题(我设置成 UTF-8 就在浏览代码中的文本时时出现乱码):

default_charset = GBK

  如果发现有权限的用户登陆后浏览 SVN 库中的代码(即 Browse Source),会得到 "Insufficient permissions to access" 提示。这时,就要检查 trac.ini 文件里 "authz_file= " 如果设置了例如 D:\MySVN\FirstProj\conf\authz 这样的值,那么就要保证 authz_module_name 的值与 authz 这个文件里的值一致。比如在 authz 文件里作了这样的设置:[FirstProj:/],那么 authz_module_name 就应该等于 FirstProj。

附:参考

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

什么是 TortoiseSVN?

  SVN 全名是 Subversion,它是一个开源的版本控制软件,与它类似的软件有 CVS,VSS,ClearCase。只要接触过团队开发,对这类软件肯定不会陌生。而 SVN 作为一个跨平台的开源软件,具有很强的活力,目前也已经相当成熟,很多开源项目都用它来管理文档或是代码。

  更为重要的是,不仅仅是团队开发,作为个人独立开发的项目(或者个人想维护的文档)也可以用 SVN 进行管理,而不需要另外一台服务器。

  TortoiseSVN 是 SVN 的一个 Windows 外壳扩展应用,它可以帮助用户直观的进行 SVN 的各种操作,而不需要使用命令行。作为个人用户,只要安装 TortoiseSVN 即可,而不用再去安装配置 SVN。 

TortoiseSVN 快速入门

  下面我就来对 TortoiseSVN 从安装到第一个代码库的建立和使用做一个最简单的介绍。即使对 TortoiseSVN 一无所知,通过下面的操作,也可以初步领略 SVN 管理代码的乐趣。

  一,安装

  TortoiseSVN 的官方主页:http://tortoisesvn.net,首先下载当前版本的 TortoiseSVN,希望能有中文界面的还可以选择语言包下载。同时在语言包旁边,你还可以看到中文的使用手册。

  安装 TortoiseSVN 非常简单,在结束后会提示重启,这是因为 TortoiseSVN 与资源管理器整合,它的图标功能需要重启后才能使用,所以建议这里重启一下。

  这个时候,在任何一个文件夹点右键,就会出现如下的菜单:

TortoiseSVN_menu_settings.png

  如果是英文界面,那么在 TortoiseSVN --> Settings 中可以选择语言。TortoiseSVN 的所有操作都是通过右键菜单来完成的。

  二,创建版本库

  首先,我们要新建一个文件夹来保存 SVN 的数据,比如我们建立了一个空文件夹:"D:\MySVN"。在这个文件夹图标上点击右键,在菜单中选择:在此创建版本库,很快就会提示建立完成。

TortoiseSVN_menu_Repository.png

  这个时候,你会发现这个文件夹里面会增加好多文件,它将保存你的用户权限的设置以及所有的代码信息。现在不用管它,按照默认设置就可以很好工作。以后如果要在另外一台机器上修改代码,或者希望别人也能使用你的代码库,只要把这个文件夹复制过去就行。备份也是如此。

  注:从网上看早期的教程,那些文章在这一步会提到选择 Berkeley 数据库(BDB)或者本地文件系统(FSFS)。但是从 SVN 1.5 版本开始,已经取消了 BDB 的选择,直接默认的就是 FSFS。

  注:为了避免因为多字节字符造成的种种问题,建议把版本库的路径和名字不要含有中文或者空格。这个问题虽然可能随着软件的升级得到解决,不过目前看来,有时还会出问题。不过这个问题仅限于版本库,受管理的代码和目录可以任意取名。

  三,检出到工作目录

  完成上一步后,我们已经建立了一个代码仓库,下面就是要设置工作目录。工作目录一般来讲,就是存放了当前最新版本的代码,程序的编写和修改都在这个目录完成。比如我们在桌面选择一个文件夹,名叫 Project。在这个文件夹图标上,点击右键,选择:SVN 检出。

TortoiseSVN_menu_checkout.png

  然后在版本库 URL 中选择刚才创建的版本库:file:///D:/MySVN,点击确定,就开始从版本库中获取代码了。

TortoiseSVN_checkout.png

  自然,因为我们版本库是空的,所有什么代码也没有。如果你打开隐藏文件显示,会发现多了一个 .svn 的文件夹,它存放的是本地文件版本控制的信息,不要删除或者修改它,以后工作目录的每层路径都会有 .svn 文件夹。为了防止误删这个文件夹,我们不显示隐藏文件。

  刷新一下桌面,会发现我们的 Project 文件的图标左下角会多出一个绿色的对号,这表明它已经纳入了版本控制。

  注:你可以在任何地方多次检出。

  四,提交入库

  第一次向版本库中加入代码可以使用导入的功能,不过我还是喜欢直接添加文件。比如我向 Project 中复制了几个目录和文件。因为这些文件是新增的,所以自动会用问号来标记。

TortoiseSVN_addfile.png

  然后我希望把这些文件存放到代码仓库中,这个时候,在 Project 文件夹内点击右键,选择:SVN 提交,然后勾选"全选",把新增的所有文件都纳入版本控制,点击确定。

TortoiseSVN_commit.png

  五,版本管理

   我们开始工作,比如新增文件、修改文件、删除文件,你会发现所有修改过的文件都会有一个红色叹号来标记。当觉得工作进行到一定阶段,有必要保存一下的时候,我们可以再次进行提交。因为现在讲解的是一个人使用,所以很少会再次检出或者进行更新,但这在团队开发中很常用。

  如果你发现你这次的修改有问题,想恢复版本库中最新的版本,只要把这个文件删除,并选择更新即可。

  在某种情况下,要恢复一个很久之前的版本,这个时候只要点击右键,选择:显示日志,在想复原的版本上点右键,选择:复原到此版本。

TortoiseSVN_revert.png

  通过上面简单的介绍,希望能带大家入门。更多的操作可以参考官方的文档,非常详细。

20
Posted on 上午12:07:00 by Fan Zhang and filed under ,

  Blogger 虽然解封可以访问,但是它与发布有关的 API 却被封了多时。因此这一段时间我都只能使用 Blogger 的后台发表文章,Windows Live Writer 和 Zoundey Raven 都不能用了。

  我曾经尝试过使用代理,不过始终不太稳定,虽然成功过,但却多数情况下仍然会出错。我的想法就是使用 Blogger 的 SSL 链接再加上 HTTP 代理(比如使用 Tor)来访问,但之前的文章也提到,当时的 Raven 还有些问题。

  今天我不死心,继续去官方论坛看,发现 0.9.363 版本发布了,它解决了通过普通的 HTTP 代理访问 Blogger 的 HTTPS API 的问题。

  于是,我使用 Tor + Privoxy 设置代理如下:

  • 在 Zoundry Raven 的工具-->偏好设置-->常规-->代理中设置:127.0.0.1:8118,这个是使用 Privoxy 的默认端口。如果使用别的代理,理论上可行,不过我没有多试验。
  • 在 Blog 的设置-->API 信息中,将原本的 http://www.blogger.com/feeds/default/blogs 中的 http 改为 https。

  这样就可以使用了。