Posted on 17-06-2011
Filed Under (商业) by waterlin

中国的老百姓们处于弱势地位,而中国的中文博主们,就更是弱势得无以复加了。放眼四海,针对英文博主们的活动数不胜数,而针对中文博主们的活动却寥寥无几。你可能会说中文圈子太小,可是全球有五分之一的人在使用中文;你可能会说中文缺乏全球性,但是在华人圈里中文的使用已经足够广泛了。

可是,我觉得这些都不是最主要的原因:中文博主们的互动太少了,中文博客太缺乏专注精神;相互之间没有关联的博客,就像一个一个的孤岛,只能孤芳自赏,永远走不出闭门造车的怪圈。

拿福能的千人挑战活动,却干了一件不同寻常的事情。它像是在各个孤岛博客的汪洋大海里,扔进了一个小石块,激起了一圈圈的涟漪,而正是这些涟漪,让信息在博客中间流动起来。恰如我一样,就是从其它人的博客里看到的这个活动广告。

为了能迅速提升拿福能在国内市场的知名度,他们开展了”将人民币50000元平分给1000名加入的每一位博主(每人50元)”的活动,活动链接 http://www.nuffnang.com.cn/blog/2011/05/23/challenge-1000 ,想了解详情的博主们不妨看下。

参加这个活动,倒不是为了这50元钱,而是为了更切身的实践商业活动,要是这个商业模式真有价值的话,我也算是早期参与者之一了。呵,各位博主战友们,机会不可错过。

参加这个活动,倒不是为了这区区50元钱,只是希望通过参加这个活动,能圈起更多的朋友,迈出闭门造车的窘境,让自己也能在忙于码字与被字码的时候,与世界有一个擦肩的机会。假如有人从我这里开始,加入到拿福能,我会觉得无比的满足,毕竟,我是有读者的。

参加这个活动,倒不是为了这个广告平台的50元钱,多少有点”反垄断”的味道。Google Adsense 以其卓越的表现给独立博主们带了一丝生存希望,但是前段时间的 Google 广告门事件,让人不禁担忧起仅仅依靠 Google Adsense 的下场。加入拿福能,多一个盟友,就多一份力量,从这个角度来看,我支持拿福能提供给博主们多一个的选择。

就像《魔兽世界》里的著名台词所说的一样,”为了联盟”,你也赶紧来加入拿福能的千人挑战活动吧!通过这种方式,让一个一个的博客孤岛,成为信息流动的媒介;通过这种异常的信息流动方式,链出一个完整的兴趣圈。

赶紧哦,仅有名额一千人!

(0) Comments    Read More   

最近被一个问题折磨了好几天,VC++2008 编译出来的 Debug 版本程序,拷到目标机器上,没有办法运行。我用 VC++2008 编译的文件在自己电脑上可以运行,可一放到别人电脑上就显示程序配置有问题,试了几台电脑都这样,拿到另一台装了 VC++2008 的电脑上又正常了。以前用 VC++6.0 的时候没这么多事,这是怎么回事呢?

类似这种情况下,按理说应该是少了某个动态链接库,但是我确定第三方的动态链接库都拷贝到目标机器上了。

在目标机器上安装 Microsoft Visual C++ 2008 Redistributable Package (x86) 后,程序依然不能运行。但是如果我装给目标机器装上 VS2008 ,程序就可以顺利执行。

这个问题和 Debug 版本有关吗?还是 VS2008 的问题?编译成 Release 版本能不能解决这个问题呢?

我用静态编译的方式,编译出的 release 版本就更奇怪了,在我自己的电脑上运行,都提示如下错误:

"无法启动程序,因为计算机中丢失 MSVCP90.dll。尝试重新安装该程序以解决此问题。

这个库我怎么可能会没有?

上 MSDN 仔细找了找原因,出现类似上面的问题,有以下几点需要注意:

  1. 按道理来说,编译成 release 版本后,只要在目标机器上安装相应版本的 vc_redist 就可以了;
  2. 对于 VS2008 版本,光把编译生成的可执行文件及 Dll 拷贝到目标机器上是不行的,要加上 manifest 文件;
  3. 动态链接的程序,需要在文件目录里复制 MFC90.dll, MSVCR90.dll 和 manifest 文件,不加上这个 manifest 是运行不了滴。

在寻找答案的过程中,也在 StackOverflow 里提问获得了帮助,原文是 Where is msvcp90d.dll supposed to come from?,笔记一下以备查阅。

如果需要检测程序依赖的动态链接库有哪些,可以使用 Dependency Walker 这个工具。

PS: 看来 Stackoverflow 里,问题的回答质量是相当高的,以后可以尝试多用。

(0) Comments    Read More   
Posted on 16-06-2011
Filed Under (文化) by waterlin

记得 mail.139.com 刚推出的时候,我是何等的倾倒于可以使用手机号码作为自己的邮箱名:从此以后,再也不用在电话里解释我的名字如何全拼,如何小心翼翼地叮嘱别人,带不带后鼻音、是不是卷舌之类的;给父母申请邮箱,也不用再考虑他们不熟悉英文这一窘境,直接上手机号码作为邮箱就好了。不管从哪方面来说,都是太爽了!

打这以后,QQ、163也纷纷推出手机号码邮箱,一时之间,手机号码邮箱,成了各大邮箱、门户竞争的一大法宝,是不是这样的?

可奇怪的是,远在大洋彼岸的美丽坚共和国,Google 却好像一直没有推出用手机号码作为 Gmail 邮箱别名,其它大邮箱厂商如 Hotmail、Yahoo 好像也没有听说类似的服务。我不禁在想,为什么会这样呢?

左想右想,在这里胡乱扯一通,给自己天天写代码的日子带来一点阳光好了。我猜想,老外用名字就蛮方便的,反正你不是叫 David 就是叫 Tom,姓也就那么几个,顶多后面再加几个数字。对他们来说,英文拼写只是一个家常便饭,你没看在美剧里,在打电话留言的时候,经常就要拼一下自己的姓名吗?在这种情况下,用手机号码作为邮箱别名,优势似乎并不明显。

而对大多数中国人来说就不同了,”高学历”如我一般的人,对英文的拼写也常常出错,也极其讨厌英文的拼写。而大多数中国人都有这样的烦恼,在注册帐号的时候用什么作为帐号呢?是用装13的英文名,还是用全拼,还是取一个和自己世界观相符的英文单词?游离于种种选择之间,于是邮箱别名机制在中国大行其道,作为手机号码这一独有的特性,便成了更加亮丽的选择。现在,你再也不用为在电话里报一长串英文邮箱名而烦恼了,用手机号码,一切纠结的口头英文交流,都成了过去式。

换位思考一下,如果你能用中文作为邮箱名,如果仅和中国人通邮件的话,你是不最更喜欢用中文呢?我喜欢,起码邮箱名一报大家就明白。

而对于电话而言,很多人都在说,数字号码是对古老电话的一种妥协,是为了便于人们更好地使用转盘电话,现今的技术完全可以改成用全英文作为键盘来拨号,也容易记;殊不知,这完全是洋大人的阴谋论,换成中国,难道要把几千个常用汉字全搬上去么?在中国,用英文号码来代替数字号码肯定是行不通的。

所以,用手机号码作为邮箱别名,算是一种符合中国国情的创举了吧?

(3) Comments    Read More   
Posted on 14-05-2011
Filed Under (技术) by waterlin

如何对笔记进行索引是个大问题,尤其是像 Emacs Org 这种对搜索支持得不太好的编辑器而言,笔记的搜索是个特别烦恼的问题。我之前也讨论过《Emacs 笔记本全文搜索方法介绍》,如果你用的是 Windows7 操作系统,则可以用 Windows7 的索引机制,来方便地检索你的笔记目录,具体的方法如下:

  1. 在某个文件夹上,点右键,选”包含到库中”即可把当前目录添加到某个索引库里;

    像我,就把 Emacs org 笔记、Onenote 笔记全拉进去了,这样搜索起来一点都不吃亏。

  2. 在”包含到库中”里,如果你要新建一个库来组织某一主题的文档,点击”新建库即可”。
  3. 以后你需要搜索你的笔记时,只要在这个库里进行搜索就可以得到你想要的东西,在文件浏览器的左边,会有一个”库”的文件夹类别,点它进行任何操作即可。

不知道 Windows7 在进行库搜索的时候,是否还支持一些基本的正则表达式、语义搜索之类的操作,比如说”TRACE + MFC”等。

Windows7 索引常见问题可以参看微软的官方文档,很全很强大。

(1) Comment    Read More   
Posted on 29-04-2011
Filed Under (软件) by waterlin

VirtualBox 是程序员做测试、模拟的好方式,它的连网方式总体来说有四种

Network Address Translation (NAT) 是最简单的方式,缺点是外面的机器找不到你这台机器。你可以把用这种方式上网的虚拟机,当作一个应用程序好了。

Bridged networking 的方式,可以让局域网里的其它机器访问你的虚拟机,它也可以访问你局域网里的其它机器,但是你的虚拟机却没有办法 ping 通你自己的宿主电脑或其它局域网里的机器。

Internal networking 的方式,和 Bridged networking 类似的方式,具体区别没有仔细研究。

Host-only Adapter,虚拟机只可以和主机通讯,主机里可以找到类似下面的内网IP地址:

以太网适配器 VirtualBox Host-Only Network:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::1153:7bdd:40c0:28dc%19
   IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

通过这个 IPv4 的地址就可以和虚拟机里的主机通讯。

如果你想让你的主机和虚拟机组成一个互通的网络机器来做测试,则需要使用 Host-only Adapter 的方式。

(1) Comment    Read More   
Posted on 29-04-2011
Filed Under (软件) by waterlin

以前都是用 SVN 在办公室的局域网里面架一个中心服务器,来保存备份自己的一些文档及代码。定期把笔记本里的内容提交到中心服务器里,通过这种方式,有效地备份文档,同时,也减少了大量文档、代码同步的麻烦。可是这样做有几点比较痛苦:

  1. 在出差的时候,没有办法提交代码,而 SVN 客户端也不方便做本地备份;
  2. 要是中心服务器坏了或是重装中心服务器了,又得重新配一下 SVN 服务器,比较麻烦,主要是时间上不一定有空;没有时间配置中心服务器,也就没有办法备份,导致内心极度不踏实。

最近尝试了用 Hg 来构建本地代码分支,还是蛮方便的,这种分布式的版本管理系统特别方便在不同的机器里同步文件。

使用 Hg 来做本地文档管理的主要步骤如下:

  1. 安装 TortoiseHg
  2. 创建本地分支
  3. 如需要拷贝到其它电脑的时候,在 TortoiseHg 里选择 Web Server(用命令的话是 $hg serve),默认地址为 http://localhost:8000
  4. 在其它机器上 clone http://your\_IP:8000 的文档下来即可。

这个方法简单易用,但是缺点也很明显:没有访问权限控制,没有办法控制访问用户的授权问题(即用户名和密码校验),所以,在不需要的时候,赶紧关掉服务功能,免得被别人误检文档出来。由于这个服务的特殊性,在不安全的局域网里,最好不要开启本服务。

用这个方法,也可以很方便地 clone 代码到移动硬盘里作为备份,比你全新拷贝一份要快捷多了。

(2) Comments    Read More   
Posted on 15-04-2011
Filed Under (技术) by waterlin

因为我用公司的 SVN ,最近改的代码比较多,但是还没有到能提交的地步,这么多问题的代码一提交估计别人都要发飚了。

但是辛辛苦苦写了几天的代码,还没提交或是备份,心里很不踏实;弄 SVN 分支也太麻烦了一些,于是就想用 Hg 在本地 clone 一个分支出来,弄个本地版本慢慢改,自己随时可以提交版本,要备份也只要到其它机器上 clone 一个。理想是美好的,操作是方便的!

上网找了找,安装 hgsubversion 插件后,可以从 SVN 里检出文档和代码,我用的是如下命令:

$ hg clone svn+https://xxxxxx  localtest

很奇怪的是,在检出历史版本信息后即提示获取文件已经完成,可是 localtest 目录下只有 .hg 目录,怎么会没有源代码目录呢?看来,过程是曲折嘀~~

是我漏掉了某一步没有做么?可是按照手册上的说明,我明明已经做完了所有的事情。

最后,反复 Google 及提问后,终于在 StackOverflow 上问到了答案

  • 原来 Hg 对 utf8 字符串的支持并不好,如果你的 SVN 目录里有中文文件名的话,则需要安装 fixutf8 插件来解决这个问题。

采用 Hg 的插件安装方法,即可安装 fixutf8 插件,不过要注意的是,在配置这个插件到 Hg 的配置文件时,一定要像下面这样写全引用 fixutf8.py 脚本的路径:

[extensions]
fixutf8 = D:\Program Files\TortoiseHgExtentions\hg-fixutf8\fixutf8.py

这样,你就可以把 SVN 里的文件全部导出,在本地建一个 Hg 分支,为所欲为了。

PS: Hg 怎么会不认得 utf-8 编码的文件名呢?都什么年代了,sign~~~因为这个问题,浪费了我差不多一下午的时间~~

(3) Comments    Read More   
Posted on 08-04-2011
Filed Under (技术) by waterlin

用 Emacs Org 和 Muse 记了一大堆的笔记,分散在很多目录及很多文件里,当要找一个以前的笔记时,怎么样才能快速、有效地搜索到目标文件呢?下面就探讨一下几种常用的方法:

  1. 利用 Emacs 本身的搜索功能进行搜索

    在 agenda 里用 M-x org-agenda RET s 进行搜索;

    当然,也可以直接用 Org 的 occur-tree 功能;

    如果你想使用原生态的 Emacs 搜索功能,可以进入 dired 模式到你待搜索的目录里,用命令 M-x grep-find RET 进行本地全文搜索。

  2. Windows7 自带的搜索功能

    Windows7 自带的搜索功能,也有预先进行检索收录的功能,所以,如果是对文本文件或是 html 文件进行本地搜索,也是想当的方便的。

  3. Google 桌面搜索

    下载一个 Google 桌面搜索,可以把你的 Org 或是 Muse 笔记的发布路径添加进去,从而对这部分内容进行快速检索。

    并且这个产品的好处,是通过浏览器访问,像我们这种用 org 建工程写了一大堆 html 笔记的人,只要轻轻一点链接,就可以在浏览器里打开相应的笔记,真方便!

    我习惯于让 Google Desktop 只检索我的笔记目录,整个硬盘都开放给第三方软件搜索,感觉实在不太爽。

  4. 百度本地搜索

    百度也有类似 Google Desktop 的搜索工具,使用方法类似,百度桌面搜索安装后,可以通过以下网址来访问本地的搜索页面:

    http://127.0.0.1:7887/&s=200566888

    这基本上是唯一让我觉得满意的百度产品,也基本上唯一是我还可能会用的百度产品。

  5. 利用其它文本编辑器进行本地搜索

    其它文本编辑器基本上都有从目录里搜索的功能,你可以利用这种方法对你的笔记目录进行搜索。当然,并不推荐使用这种方法,吃力不讨好,看起来还特山寨~~

还有其它更好的方法吗?欢迎大家补充。

(2) Comments    Read More   
Posted on 05-04-2011
Filed Under (生活) by waterlin

记得以前很想体验一下《魔兽世界》这个大名鼎鼎的网游,看看这个风靡全球的游戏,魅力究竟在哪里!

以前没有跑得起的电脑,今年过年的时候家里有了新电脑,在家里想下载下来玩,可是直接连在网易的服务器上,下载速度太慢了,起码得下三天三夜。于是放弃,这个游戏的门槛就这么高,哈?

呵,现在公司给配了新电脑,又碰上清明三天假期(平时只有一天休息,这三天显得特别长),真是想再试一下。经过好几次的下载与折腾,浏忙绪绪我终于摸索出一个《魔兽世界》新手装机的法则。

最好的方法,当然是拿硬盘去朋友那里拷。如果不具备这个条件,自己安装的话,步骤如下:

  1. 从新浪或是腾讯下载离线版的 3.2.2 安装包,下载后直接解压即可;千万不要直接从网易的在线服务器上下载,那样太慢了。
  2. 运行 Launcher.exe,按提示进行升级操作,我一看,要下载七百多M的东西,要下到什么时候了?别急,我们还有办法可以用,即离线下载升级包,VISTA/WIN7 系统默认设置下,把补丁放到
    C盘根目录 ==> 用户 ==> 公用 ==> 公用文档 ==> Blizzard Entertainment ==> World of Warcraft ==> Updates
    

    文件夹下。Windows XP系统下,补丁将存放在魔兽世界文件夹下的 Updates 文件夹中。

  3. 再次打开 Launcher.exe,会自动安装升级包,安装完后即可玩这个大作了。

如果你下载前面十几G的压缩包的时候,碰到了解压后文件损坏等情况,可以在魔兽目录下运行 Repair.exe 来进行修复,修复程序会自动下载更新你缺失或是损坏的文件。

简单试玩了一下,暂时对这个游戏还没有太多感觉,以后有啥心得我还会再发上来。教育网的用户们辛苦了,不管用啥服务,都需要用 VPN 代理,就这样只让学生们上国内的垃圾网站,中国的工业水平怎么提高?

另外,现在招行推出了《魔兽世界》联名信用卡,刷卡积分可以换取魔兽世界的点卡,呵,发烧友可以试一下,反正信用卡积分也没有什么其它太大用处。

(0) Comments    Read More   
Posted on 04-04-2011
Filed Under (技术) by waterlin

今天早上碰到一个很奇怪的事情,昨天明明还能在 Visual Studio 2008 里顺利编译的代码,今天编译的时候,就提示如下错误:

错误    171     错误的结果 -1073741819 (从"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe"返回)。   项目

用英文版的 Visual Studio 2008 应该是显示类似如下的错误信息:

Project : error PRJ0002 : Error result 31 returned from 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe'.

这是怎么回事呢?原因我不是很清楚,但是可以用下面的方法来解决:

右键点击工程,选”属性”==>”配置属性”==>”链接器”==>”清单文件”==>”生成清单”==>设为”否”

英文版的 Visual Studio 2008 应该是如下路径:

Properties ==> Configuration Properties ==> Linker ==> Manifest File, set Generate Manifest to No.

知其然更要知其所以然,有谁知道原因的?

(0) Comments    Read More