qyb的博客

Firefox 2 已经是过去时,可以展望 Firefox 3 了

最新消息,Fx3/Gecko 1.9 将于 11 月发布一个版本,注意:这并不是 Alpha,"is meant to serve as a checkpoint from which we can track regressions when the other potentially destabilizing components land"

Firefox3 feature list 上看,主要工作离完成还差着十万八千里,因为大量的代码正在被重写。就我个人估计,alpha1 能在半年内发布就是幸运了。XULRunner platform 是个好东西,尤其是如果它随着 Fx3 一起发布就更让开发人员心动了。如果我有时间,说不定会利用它写一个客户端程序;顺便学习一下 C++ 和 Javascript/XUL。

Topic: 网络

你需要合伙人吗?

Paul Graham 和 Mike Tabler 是我订的三位英文 blogger 中的两位(另外一个是 Joel),最近几天他们就"Single Founder"展开了论战...

首先是 Mike Table 在他的 Startup Myths Debunked 里面列出的第三号神话:"Myth#3: I need a partner" . Paul 就在最近的 The 18 Mistakes That Kill Startups 里面的头条提出:"mistake #1: Single Founder". Mike 立刻写了一篇长文专门阐述这个问题,The Single Founder Myth

大家有兴趣最好自己去看原文,我这里简单翻译一下 Mike 的文章

首先 single founder 并非不可能成功,比如 Michael Dell 和 Thomas Siebel 就是单枪匹马干出来的,只不过比例非常少而已,这里真正的原因是:投资(funding)

因为投资人不喜欢把钱投给 single founder,自然 single founder 成功的就少,从统计上表现的便是成功企业大多有多个创始人... 然后开始恶性循环. hoho

因此,single-founder 不得不自己筹钱开始事业,幸运如 Siebel,他在自己创业之前,已经挣到了足够多的钱;而大多数,只能缓慢的去发展(让我想起了亿邮早期)。对于挣钱去支撑自己成长和烧钱成长的模式而言,Joel 的 Ben and Jerry's vs. Amazon 是很好的一篇补充读物。

Reasons You Might Wind Up Doing It Yourself

让我们看看 Paul 是怎么说 single founder 的:

"单一创始人首先说明信任问题。因为这意味着创始人无法说服他的任何朋友来加入这个公司,这是一个严重的信号,因为他的朋友是最了解他的"

这样看有些道理,但并不总是这样的。我可以想出半打理由来解释:

1) 对于早期运营来说,这个founder足够有钱了,因此他可以雇佣员工,而不是让他们变成自己的合伙人
2) 过去有不愉快的合伙经验,因此有心理障碍(这半句是我翻译加上的,xixi)
3) 该商业模式的回报足以让一个 founder 满意,但二个就不够了
4) 该 founder 对合伙不感兴趣,因为他压根也不想创建一个大企业
5) 该 founder 的所有的朋友和曾经同事过的人都不合适来一起创建这个公司
6) 由于竞业协议,这个 founder 不能主动吸引过去的同事来加入

事实上,除了第一条理由,所有的都适用于我自己以及 Moon River Software。我不能让我的技术朋友加入我的公司;我还有一个 MBA 朋友,我们俩在各自婚礼上都为对方当伴郎,但他没有软件领域的任何经验。

很少有人会是第一条理由,除非他继承财产或者是像 Thomas Siebel 那样能卖掉一个公司。第二条和第三条就是非常普遍的情况了。...第六项是所有那些刚从创业公司离职的人面临的问题...

Going it Alone

"就算是因为其朋友们都不合适做合伙人(即非信任问题),劣势仍显而易见:Starting a startup is too hard for one person;你需要有人一起头脑风暴,告诉你什么决策有错误,困境中可以互相鼓励."

....没错,的确是 it's really hard to do it yourself. 但 Paul 说的是 "Starting a startup is too hard for one person.",这就有误导嫌疑了...

Paul acknowledges that even if you could do all the work yourself, there are other reasons for needing co-founders. Some of the things he mentions may be true, but do you need a co-founder to provide them for you? You can brainstorm with friends without forking over equity in your company. You can hire salaried or contract employees to work for your company, thus providing you with brainstorming partners. If you talk to friends and take time to gather information before making decisions, you can help prevent stupid decisions. Just remeber that having more people involved in no way prevents people from making stupid decisions. I'll refrain from pointing to any number of failed companies *cough* Webvan *cough* as examples where an entire executive team blew spectacular amounts of money.

困境中互相鼓励可能是创业公司最重要的事情,也是 Paul 的论点中理由最充分的。但是只能从合伙人那里得到激励吗?作为一个程序员,解决问题是我们的天性,把信心问题当作一个困难去解决和 bugfix 没有本质区别。...

...

I hope that you're now convinced that it is not only possible, but reasonable to become a single founder of a startup and be successful at it.

***********************************************

我已经有了一个天然的 co-founder, qyt 同志;现在我已经把他的未来的房子称为"车库"了,hoho

原文 blog 有一个回复说:If you can't do it by yourself, you shouldn't be doing startup anyway.

另外有人指出:del.icio.us 也只有一个创始人

Topic: 商业

最近给女儿看 MJ 的 Moonwalker

不晓得是好是坏,当然不可能全看,只给她看小孩表演的《BAD》

动画《Speed Daemon》+《Leave Me Alone》

还有就是最精彩的《Smooth Criminal》

偶在青年时代可是很迷 Michael 的呢.. hoho

Topic: 生活

七年之痒


MSN 上挂着 "The Seven Year Itch" 的名字很长时间了。不知不觉,和亿邮这个团队一起走完了 7 年的旅程。虽然在这里获得了很高的成就,但近半年来感觉工作已经无法给我带来任何乐趣,可能确实是"日久生痒"了,hoho

因为前几个月正值占座融资的关键时期,所以一直没有利用 blog 这个渠道去找新工作,甚至就是有了意向也不能去公开谈,呵呵,这算是我为亿邮做的最后的事情吧。

随着公司内陆续开始有人知道这个消息,我也可以公开在这里宣布,现在是离开的时候了。新的去向基本已经定下来,还是互联网企业。当然,要是你能提供给我更好的职位选择,我乐意去认真考虑。另外,至少有两个业内人士建议我创业... 如果你愿意投资我(不管是人力还是金钱),欢迎和我联系。

我的个人简历可以在这里看到。

BTW:已经把我以前 team 上值得保留的文章搬到了 http://www.dup2.org/qyb/eyouteam

Topic: 生活

解压缩 Install Shield 打包的 .cab 文件

Install Shield 会把原始文件打包成 data1.cab, data2.cab 这样的文件名.. 恶心的是这东西虽然后缀叫 .cab,但不是微软的 cab 格式,用 7-Zip 等是无法解压的。

开源项目SynCE 推出了一个 UNIX 下的工具 unshield 来解压这种格式。在 Win32 平台上,目前似乎只有一个命令行工具 i6comp 来解压。

Topic: 技术

恢复 Ubuntu 6.06 的 grub 菜单

重装 Windows 后,grub 引导菜单会被覆盖掉。对于别的操作系统都好说,但 Ubuntu 6.06 的安装 CD 是没有 rescue 选项的,这个就让事情变得稍微有点恶心。

在我上周的分区表灾难恢复后,我就开始头疼怎么来恢复我的 grub。最后方法如下:

1. 从 Ubuntu CD 引导
2. 手工 Mount 原来的 / 分区
3. 执行 chroot,到那个目录
4. 执行 /sbin/grub-install /dev/hda
... 什么"无此设备". 这是因为 /dev 目录下的设备现在都是在启动过程中内核去自动加载
5. 打开另外一个窗口,ls -l /dev/hda 看看这个块设备的 major/minor 是多少,然后在 chroot 环境里用 mknod 去手工创建块设备
6. 最后 /sbin/grub-install /dev/hda 执行成功了!
7. 删除刚刚创建的设备文件,退出 chroot 环境,重启系统,一切都恢复了,阿门

Topic: 技术

介绍一个 GPL 的分区表修复工具 TestDisk

其实大约一年前,我就用过一次 TestDisk,当时是恢复了 FreeBSD 上的分区,感觉很牛,不过由于 Win32 下类似的软件相当多,所以这次我的分区出问题,一开始并没有考虑用它来做恢复。

事情的起因是这样的:
Thinkpad 上随机会附带一个隐藏分区,用来做系统恢复用。前不久我在安装 ubuntu 的时候,用自带的 gparted 分区工具把它喀嚓掉了,分成两个 primary 分区,一个 ext3,一个 swap,来安装我的 ubuntu。顺便把原来那个 30 多G 的 C 盘划了一个 extended 分区出来,然后在上面创建了 1个 FAT32 和 2 个 NTFS 分区。
上周一我决定重新安装 XP,但 grub 似乎无法认出新安装 XP 的引导记录,一怒之下用 FreeDOS 启动,"fdisk /mbr" 重写了主引导记录。麻烦来了,安装完 XP 后,我发现3个逻辑分区里丢了两个。
于是开始找分区表修复工具,"Partition Table Doctor"到是很容易的发现了我丢失的两个分区,于是执行 recover —— 那两个分区没有被恢复,反而硬盘最后的两个 linux 分区也没有了!!!

我几乎都要崩溃了,开始去搜索 Linux 分区的恢复工具,就这样又找到了 TestDisk。它不像 Win32 下常见恢复工具那样带有漂亮的图形界面以及向导模式,只是提供一个 DOS-提示符窗口,显示对磁道扫描的情况,以及所有可能的分区布局。扫描完成后选择那些正确的布局方案就好了。最终我找回了所有的分区。

鉴于 TestDisk 已经成功两次挽救回我的分区,所以我这里强烈推荐这个软件,作为分区表恢复的第一选择。

使用提示:缺省扫描中,TestDisk 可能并不是扫描所有的扇区,未必能找全潜在的正确分区布局,在完成普通扫描结果后,屏幕底部会有一个"[Search! ]"的选项,执行它就是扫描所有扇区。我的分区表就是这么恢复的。

事后我试图找出灾难的原因,以及为什么普通的恢复工具反而导致更大的灾难。感觉可能是 Windows 和 Ubuntu(或许包括 FreeDOS) 对硬盘磁道参数识别不一致导致的。Windows 认为硬盘是 240 Heads,但 Ubuntu 说只有 16 Heads。最后我是在 Ubuntu 下执行的 TestDisk 搞定的。

Topic: 技术

Win32 下的蓝牙——开发事项、外设购买

作为项目 MobileSync 的一部分,我计划增加对蓝牙通信的支持。结果经过一段时间的尝试,我发现 Win32 平台上针对蓝牙开发简直太让人郁闷了。

红外的支持看 MSDN 的文档下很容易就完成了,所以我也首先去参考 MSDN 上蓝牙相关的部分,结果在创建一个 BTH 的套接字的时候返回了 10047 错误——"Address family not supported by protocol family"。接下来从网上搜索得知这是因为我的机器上还没有安装本机协议栈(native bluetooth stack)的缘故。太奇怪了,我明明已经安装了驱动并可以传送文件啊,为什么说我不支持蓝牙?

再进一步查找,这才知道在 Windows XP SP1 之前,微软是不支持蓝牙的。直到 SP2,native stack 也仅仅支持少数的几种设备。可以想象蓝牙刚刚问世的时候,微软的反应是:“谁知道这项技术会不会最终成功,俺先等等看吧”。于是后来 IVTWidcomm先后开发了自己的协议栈和管理应用程序,来配合蓝牙外设在 Win32 平台上的使用。而我的蓝牙适配器的问题就是,它可以在 IVT 下工作,但 SP2 不支持(ISSC 芯片)。

对于蓝牙软件开发商来说,问题就很棘手。市场上有三种协议栈,最好是全都支持以适应最大可能的应用范围。我现在才明白为什么我的 Nokia 3650 的 PC 同步程序无法用蓝牙通信,这是因为它用的 mRouter 协议层只支持 Widcomm 和 Native,不支持设备附带的 IVT 驱动。

后来还找到 Jon Cellini 的一篇文章,描述如何让并没有被 MS 官方支持的设备在 native 协议栈下工作的。虽然有人报告他的 ISSC 设备可以如法炮制,但我的适配器却不能这样去工作。

为了能继续我的开发工作,我只好重新买了一个 CSR 芯片的适配器。很便宜,不过 50 元(加上快递费),芯片版本还是 BlueCore4-ROM,似乎能支持蓝牙 2.0。它很顺利就在 XP 下自动检测出来了,同时"Control Panel"里面多了一个"Bluetooth Devices"的控件。然后我就发现微软缺省的管理程序比 IVT 差太多了,很明显 Microsoft Native Stack 将是未来开发的主流,但要想得到用户的广泛应用,还差一套完善的设备管理程序。不知道未来是 Vista 去改进,还是独立的第三方厂商做开发。

故事讲完了,如果你计划购买蓝牙适配器,我建议还是选择一个 SP2 官方支持的,比如 CSR 就挺好。市场上的主流好像是 ISSC,它的确更便宜一些,但我不敢保证 SP3 或者 Vista 就一定会支持..

最后要说的是,从这个事例里面看到,微软对外设的支持也就那么回事情,Linux 的 BlueZ 栈好像在 2.4.x 时代就确定了主流地位,是不是未来对新型硬件的支持以后 Linux 的优势会越来越明显?

Topic: 技术

怎样结束一封英文信件?

你是不是厌烦了千篇一律的 "Regards"? 今天从 BBC Learning English 上看到如下技巧:

Best Wishes (OK for someone you don't know and in a fairly formal situation)
Kind Regards ( OK for someone you don't know and in a fairly informal situation)
Fondest regards (OK for someone you know but not intimately)

下面是泡外国 MM 或 GG 的时候用的

With love*
Thinking of you*
Lots of love*
Love and kisses*

* These are a bit intimate 

另,学习到一个好玩的单词:smog,smoke + fog,知道它确切的意思了吧。走召弓虽

Topic: 生活

用免费的 Microsoft Visual C++ Toolkit 2003 编译 Python 2.4 模块

本来这个方法是从别人的 blog 那里看到的,我只是加了我的书签。但今天想查的时候发现这个 blog 访问不了,Tor 今天好像也用不了,寻觅半天,从 MSN Search Cache 里面找到了。贴在这里转载一下。

在这个方法之前,有人说需要 hack distutils 才能使用 Microsoft Visual C++ Toolkit 2003;但现在这个天才发现修改一下注册表就 OK 了,牛!

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC\VC_OBJECTS_PLATFORM_INFO]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC\VC_OBJECTS_PLATFORM_INFO\Win32]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directories]
"Path Dirs"="C:\\Program Files\\Microsoft Visual C++ Toolkit 2003\\bin;
C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\bin"

"Library Dirs"="C:\\Program Files\\Microsoft Visual C++ Toolkit 2003\\lib;
C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib;
C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\lib"

"Include Dirs"="C:\\Program Files\\Microsoft Visual C++ Toolkit 2003\\include;
C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include"

Python 2.5 也应该是用 VC 7.1 编译

Topic: 技术
订阅 RSS - qyb的博客