RSS 2.0 Feed
2005-09 Entries
摘要:Palm、Microsoft和Verizon在北京时间今天早上举行了联合新闻发布会,发布了新的Treo 700w手机,运营商是Verizon,操作系统是Windows Mobile 5.0。BillG代表Microsoft参加了新闻发布会,代表Palm的是Ed Colligan,不是Jeff Hawkins。 也就是短短两年多前的2003年6月,那时Palm收购了Handspring,Jeff Hawkins回到了他创建的Palm,人们纷纷将其与重回苹果的Steve Jobs相提并论。还记得Treo 600发布时候的轰动,在纽约的发布会上,Jeff Hawkins手里拿着Treo 600: 但自那以后,2004第一季度Pocket PC的出货量追平基于Palm OS的PDA,2004年底微软首次在手持设备市场上超越Palm占据最大份额,2005年初Sony宣布不再生产(基于Palm OS)的PDA,直到今天,Palm开始在自己的设备中使用微软的嵌入式操作系统,这在即便是一年前也是令人难以想象的。而曾几何时,Palm OS在九十年代末占据了超过50%的市场份额,拥有压倒性的优势。 微软已经可以把Palm从竞争对手名单中划掉了——正如以前Netscape、VisiCalc、WordPerfect一样——尽管这个名单不断的有新的加进来,例如Google、RIM。 Windows Mobile赢得对Palm的竞争是无可挑剔的,尽管Palm的用户始终嘲笑微软不懂的嵌入式系统,嘲笑微软用写PC操作系统的方式来写嵌入式的OS,嘲笑Pocket PC上的软件不如Palm多。没有人可以指责微软利用了垄断优势来排挤Palm:微软并没有在Windows XP里预装ActiveSync。尽管Palm的开发者和拥趸始终认为微软缺乏创新、缺乏技术、缺乏对市场的认识,但事实上,缺乏这些的是Palm——否则微软不可能赢得对Palm的竞争。终端用户市场里,用户是用脚投票的,掏不掏钱全在购买者;开发者社区中,程序员总是喜欢给更多的用户写软件,也总是喜欢在容易开发移植的平台上写软件;销售渠道中,零售商总是喜欢代理更好卖的产品,电信运营商也总是希望co-branding受欢迎的设备。 在移动和嵌入式领域,微软是一个后起的公司。后起的公司要取代已经取得成功的公司,一定要等到他们犯错误。李彦宏说Netscape犯了1.5个错误,那Palm呢? 我觉得Palm有点过于相信来自于早期成功的经验。 九十年代末,手持设备还处于黑白显示、内存只有2MB或更少的状态。当时的Palm OS能够螺蛳壳里做道场,在有限的硬件上实现了丰富的功能。但很多Palm的开发者和支持者就此相信,手持设备就是应该是简单的,不应该把台式机上的事情拿到手持设备上来做。 Palmer认为微软在Pocket PC上采用和desktop windows类似的编程模型(消息机制、API、动态链接库、TCP/IP等)是荒谬的,他们嘲笑微软不懂handheld device。没错,在当时的硬件上,类似桌面系统的编程模型会造成很大的负担。但Palmer没有看到硬件的发展,事实上,时至今日,PDA的内存已经达到64MB或者128MB,CPU的时钟频率已经和Pentium II时代的台式机CPU一样块,与此同时,同样的编程模型带来的好处逐渐显现出来——VC和eVC,以及.NET和.NET CF——桌面的程序员可以很轻易的转移到Windows Mobile上。别说我事后诸葛亮,其实2003年的时候我在hi-pda和人为此争得面红耳赤说的就是同样的话。 对于程序员来说,开发Palm的应用程序相对困难——仍然需要用C语言来写。这和桌面上的快速开发潮流是不相称的。在桌面上,九十年代末就已经是Delphi和Visual Basic大行其道了,到了二十一世纪初,Java也进入桌面,然后就是.NET。程序员总是愿意用更方便的方法来写程序。喜欢炫耀自己“能够修改内核”的毕竟是少数。Palm曾经可以搭上Java的班车。Java的确也有了一个Palm上的VM(叫做Personal Java),我在我当时的Palm Vx上用过,速度出奇的慢。原因也很简单:CPU不行,内存太小。 Palmer过于相信过去的成功经验,他们坚信Palm的哲学是正确的:handheld device上的程序就应该是短小、简洁的。当时,在Palm OS 3.1上,一个程序如果超过100k就会被认为是丑陋的;而如果一个程序小于20kb,就会得到很好的评价。Palmer嘲笑Pocket PC上的程序的体积庞大,动辄500k或更大。但事实上,程序短小带来的好处被闪存的迅速降价完全抵消了。 Palmer在很长的一段时间里认为Pocket PC的彩色是没有必要的,gray scale的Palm足够了。但事实上,没有人能抵挡彩色的诱惑:无论是彩色电视机,还是彩屏手机。Palmer一度还对Palm的电池寿命非常自豪。没错,当时gray scale的Palm的电池寿命至少是在10小时以上的,而Pocket PC的电池通常只能维持两个小时(的确如此,我当时用iPAQ 3630的时候每天都需要充电)。但Palmer并没有很正确地意识到导致Pocket PC的电池寿命过短的主要原因之一是彩色和带背光的屏幕。事实上,当Palm的PDA也用上彩屏以后(例如我曾经用过Palm Tungsten T),电池寿命和Pocket PC相差无几,优势荡然无存。 Palm犯过的错误还包括错过了网络,错过了多媒体,错过了中国市场。受到硬件和编程模型的限制,Palm上始终开发不出类似Pocket PC上的“招商银行掌上银行”的应用。Palmer曾经固执的认为在handheld devices上是不需要上网的(当然,Palm长期的160*160 pixels的分辨率也是无法上网的原因之一)。曾经一度,对于Palm上的音乐播放软件来说,可以后台播放也会成为亮点——而对于Pocket PC来说,完全是与生俱来的。 Palm最终还是进入中国了,大概在2003年的样子,不算太晚,但没有把销售和市场做好,失去了最后的机会。Apple在中国也一直没有做好应该做的事情。人们喜欢iPod,但却不知道去哪里能买到。 -- The posts on this weblog are provided "AS IS" with no warranties, and confer no rights. The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way....[阅读全文]

posted @ | Feedback (34) | Filed Under [ Mobile ]

摘要:我们的日常生活中会用到很多数字键盘:通常有四行三列共十二个键组成,其中十个键代表从0到9的十个数字,其余两个键根据不同设备使用情况的需要而定。 有趣的是,数字键盘的排列有两种截然不同的方式:一种是1-2-3在自上而下的第一行,7-8-9在第三行;另一种,7-8-9在第一行,1-2-3在第三行。 使用前一种排列的设备包括:       手机 固定电话 DVD/电视遥控器       门禁系统 施乐复印机 使用后一种排列的设备包括:     计算器 计算机 很难说这些设备是根据什么规律来选择使用哪种排列的。或许是依循某种潜在的惯例?如果一定要找一些规律,或许可以认为那些和“计算”有关的都使用7-8-9在上的排列;和“计算”比较无关的使用1-2-3在上的排列。 ATM取款机的数字键盘是一个特例,不同银行的ATM机上的排列是不一样的,有些是1-2-3在上,有些是7-8-9在上,例如:     上海银行的ATM机 深发展的ATM机 这种不一致造成一些不大不小的不便:我不得不注视着键盘一个一个数字辨认,不能习惯性的“盲打”,否则有时候就会按错密码。...[阅读全文]

posted @ | Feedback (21) | Filed Under [ Cool Stuffs ]

摘要:I have noticed for a long while that: people (either inside my company or across the whole software industry) think if a people is a C++ expert, it could be easy (and likely) for him to be an expert of other not-that-hard-to-be-expert-of things (such as, VB, SQL, Web, Script or even C#); however, people tend to believe (more or less) that an expert of those not-that-hard-to-be-expert-of things are less likely to be a C++ or Operation System expert. I think such kind of viewpoint is popular, but not of truth. //shrug...[阅读全文]

posted @ | Feedback (20) | Filed Under [ Cool Stuffs ]

摘要:(摘自我所在的产品组的"Coding Guidelines for SQL code") In a lot of places, cursors are used to traverse through a recordset. However, a lot of cursors are defined like this:DECLARE @myCursor CURSOR FOR SELECT … FROM TABLE OPEN @myCursor -- do something CLOSE @myCursor DEALLOCATE @myCursor The above code has several problems: The CURSOR is defined as a GLOBAL cursor, meaning that several sessions can access the same cursor. If two sessions happen to execute the same proc at the same time, one of them will fail with 'CURSOR ALREADY EXISTS' error. If an exception is raised, the CLOSE/DEALLOCATE is never called, causing a......[阅读全文]

posted @ | Feedback (17) | Filed Under [ Dot NET ]

摘要:微软在八月份发布了MSN Messenger for Mac 5.0,界面修改成了铝拉丝的风格(和Finder、iTunes、Safari一样的风格),增加了对display picture的支持,还可以支持公司帐号(即Office Live Communication Server)。但仍然不支持Windows上的MSN Messenger 7.5的很多功能,例如自定义emocation(Mac上只能显示别人发送来的custom emotion,但无法编辑自己的)、与MSN Spaces集成、Winks、游戏等。 截图1: 截图2: 截图3: 虽然功能不如Windows上那么多,但也够用了。希望这个版本的messenger不会像4.0那样那么容易断线。 Btw,Mac OS X 10.4已经可以轻松的安装在PC机上了,网上有很详细的教程,条件是CPU支持SSE2(例如Pentium-M和Pentium 4),然后只需要一块空硬盘,把网上下载的image导上去了就可以了。昨天在小高那里就看见他已经装了一台,玩了一把,P4 1.8Hz上的速度和iBook 1G的差不多。 这个世界变化快啊。...[阅读全文]

posted @ | Feedback (9) | Filed Under [ Cool Stuffs ]

摘要:用惠普官方提供的中文版WM2003的ROM是无法将英文的iPAQ 2210刷成中文的,因为ROM更新程序gwupgradeut会检查新旧版本的语言,如果不一致就无法继续安装下去。网上目前可以查找到的解决方案有两种:一是用UltraEdit修改英文ROM的NBF文件,把文件头上的CHS改成ENG,然后再运行GWUpgradeUt;二是用romupdate把备份到CF卡上的中文ROM回刷回去。前一种方法疑似不可行,因为修改以后gwupgradeut会报告checksum出错;后一种方法需要一个中文的ROM和CF卡,有时候一时很难找到。实在不行,就只好拿到电脑城里的PDA店里去刷,刷一刷要100块钱。 我的team有一个很geek的Dev Lead也有一个英文的2210要刷成中文的,他不愿意花那冤枉钱,就用windbg运行gwupgradeut,找到了gwupgradeut调用CompareStringA检查新旧版本的语言的地方,修改参数所在的位置的值,使检查通过,就顺利的把中文的ROM刷到了英文的2210上了。 他操作的具体步骤如下: download ROMUpdate from http://h18007.www1.hp.com/support/files/HandheldiPAQ/us/download/20498.html; extract file to a directory, say c:\ipaq; install windbg if you don't have it; run windbg gwupgradeut.exe from c:\ipaq; hit "f5" to start gwupgradeut.exe, follow the instruction until to the first screen which shows version info; break into debugger; search for "ENG" string in memory by s 0x350000 L100000 'E' 'N' 'G' and found the address containing 'E' 'N' 'G' '\0' '\0' '\0', likely it is 0x4185c0; set break point to ensure this address is used for LOCALE check: ba r4 0x4185c0 and hit "f5" to continue; if you hit breakpoint 0, run dc 0x4185a0......[阅读全文]

posted @ | Feedback (12) | Filed Under [ Mobile Cool Stuffs ]

摘要:WiX(Windows Installer XML)是Rob Mensching(Windows组的一个SDE)写的一个用来编写MSI安装包的工具集,已经被微软内部的很多产品组采用,例如Office组,以及我所在的MSN组,等等。 下面是WiX的一个简单例子(相当于高级的Hello World!的级别),在这个例子中编写了一个SimpleCopy.msi。安装SimpleCopy.msi将能够: 创建C:\Program Files\SimpleCopy目录并拷贝一系列文件; 创建HKEY_LOCAL_MACHINE\SOFTWARE\MPG Lab注册表键,该键下的DestPath变量存储了一个文件路径,DestPath可以在msiexec命令行中用DESTPATH来指定; 创建名为SimplyCopy的Scheduled Task,该任务每小时运行一次,执行C:\Program Files\SimpleCopy\SimpleCopy.exe,将该目录下data\source.xml拷贝到DestPath中指定的目录; Uninstall时,安装时拷贝的文件、创建的注册表键和Scheduled Task都将被删除。 下面就是用WiX编写SimpleCopy.msi的步骤: 1. 从http://sourceforge.net/projects/wix下载wix的2.0.3220.0版本并解压到硬盘,将candle.exe所在的路径添加到Path环境变量中;2. 用C#编写SimpleCopy.cs并用csc.exe在同一目录下编译成SimpleCopy.exe:using System; using System.IO; using System.Reflection; using Microsoft.Win32; namespace SimpleCopy ...{ internal class Application ...{ [STAThread] private static void Main(string[] args) ...{ string sourcexml = GetExecutableLocation() + @"\data\source.xml"; if (File.Exists(sourcexml))...{ ......[阅读全文]

posted @ | Feedback (4) | Filed Under [ Dot NET ]

摘要:想加入微软亚洲工程院吗? 现在就投简历到msatcjob@microsoft.com! 今年微软亚洲工程院主要招聘:招聘规模:100多人招聘对象:研究生、博士生、本科生都可以招聘职位:Software Design Engineer( 软件开发工程师)Software Design Engineer in Testing(软件开发测试工程师)Program Manager(项目经理) 今年微软公司还会有一系列的宣传活动: 系列活动之一 -- 校园宣讲会(面向全国23所高校)时间:  9月3日 -- 10月12日地点:  全国12个城市参与方法:  欢迎应届毕业生和在校学生参加宣讲会,当场询问有关招聘职位相关信息简历投递:  9月5日以前请将您的简历发送到:微软亚洲工程院-招聘邮箱 msatcjob@microsoft.com。9月5日以后请登陆中华英才网(ChinaHR)微软2005年秋季校园招聘主页:http://campus.chinahr.com/microsoft/。 系列活动之二 -- 在线宣讲会第一次时间:2005年10月9日 (周日) 19:00~21:00第二次时间:2005年11月1日 (周二) 19:00~21:00参与方法  :登陆中华英才网(www.chinahr.com),首页即有在线宣讲会登陆办法和网页链接。 系列活动之三 -- 全国11大城市第一轮招聘笔试时间:2005年10月16日(周日)下午 系列活动之四 -- 全国11大城市第二轮招聘笔试时间:2005年11月13日(周日)下午 备注:申请人在线投递个人简历后,通过首轮挑选的申请人将收到被邀请参加笔试的邀请函,整个笔试活动将分为十月和十一月两场进行,为了汇聚全国的优秀人才,两场笔试均将在全国几十所高校同时进行。...[阅读全文]

posted @ | Feedback (10) | Filed Under [ Cool Stuffs ]

摘要:I just get an internal notice saying that www.microsoft.com production servers are scheduled for upgrade to ASP.NET 2.0 by September 8, 2005. Wow, I think they are crazy of moving to ASP.NET 2.0 while it's still in Beta stage, thought it must be a cool showcase of ASP.NET 2.0....[阅读全文]

posted @ | Feedback (7) | Filed Under [ Dot NET ]