移动互联网时代的Linux来了 – HP将开源webOS

http://www.hp.com/hpinfo/newsroom/press/2011/111209xa.html?mtxs=rss-corp-news 这可真是个好消息,下面就看它用什么授权协议了。 Linux Kernel + GNU 形成了通常所谓的Linux操作系统,它借互联网兴起之机,在IBM的大力推动下,横扫服务器市场,并逐渐在桌面市场上占据一席之地。 而今移动终端市场上,webOS完全够格成为下一个“Linux操作系统”。webOS本身也是基于Linux kernel的,不过对于移动设备操作系统,还有很多特有的问题需要解决,特别是流畅、优雅的用户体验以及高效的管理电力消耗。传统Linux操作系统在桌面上的发展缓慢,在智能手机领域有很多尝试,但对实际市场影响甚微。而Android这么个粗糙的玩艺都能有这么大的声势,足见这个市场的潜力巨大。webOS在用户体验方面是目前唯一能跟iOS相提并论的系统,如果用一个较为宽松的授权开源,完全可以成为game changer。 回顾这个行业最近的波澜起伏,真是个大时代呀!   PS: http://www.precentral.net/open-source-plan HP是准备整个放出来的,最狠的在这: Considering the foundational mobile device patents that HP holds, such as”Integrated Handheld Computing and Telephony System and Services,” i.e. “smartphone”, HP shouldn’t have much difficulty defending webOS from the Apples, Samsungs, and Motorolas of the world. 靠,合着只要做智能手机都"侵犯"HP的专利!   关于硬件: HP说暂时没有为webOS生产新硬件的计划,不过如果将webOS装进打印机等的计划继续执行下去,至少先在TouchSmart上用起来,将会是webOS获得成功的最有力保障。如果授权协议许可,那么很快会有一批第三方厂商出设备的,除了国内一众的喜欢打自有知识产权旗号人家、国内外的山寨,一些大厂其实也有可能试试水的。

Google做Android SDK这帮人可真够烦的

文件结构和ant脚本库天天改个没完。之前整理好的build.xml又不认了,必须要 “android update project –path .”一下,然后告诉我不能合并修改,faint。 想想现在ProGuard集成的很好了,就把之前直接写在build.xml里的任务趁机移出来了,然后死活都有错,一看: [proguard] Reading program jar [bin/proguard/original.jar] [proguard] Reading program jar [libs/AdWhirlSDK_Android.jar] [proguard] Reading program jar [libs/GoogleAdView.jar] [proguard] Reading program jar [libs/admob-sdk-android.jar]   倒,后三个是第三方的库嘛,各种can’t find referenced。加了-libraryjars也不认,仔细一看: ~android-sdk/tools/ant/build.xml -injars       ${project.jars} … <path id=”project.jars.ref”> <pathelement location=”${preobfuscate.jar.file}” /> <path refid=”jar.libs.ref” /> </path>   丫就不能不自做聪明?<!– path refid=”jar.libs.ref” / –>,自己加-libraryjars就爽了,不过改SDK系统文件,很不方便切换机器以及团队合作唉。   注:光改这一出不够,否则后面dex阶段不会把libs/*.jar打包进去。…

沟通人与机器

临睡前看到“Android之父抨击Siri:和人沟通而非机器 http://mobile.csdn.net/a/20111021/306190.html”,又来了感觉。查了下,9to5mac.com/2011/10/19/andy-rubin-talks-apple-after-steve-jobs-siri-and-the-competition/  这里有详细背景,他是在AllThingsD Asia上说到这个的,有录相 http://allthingsd.com/20111019/andy-rubin-video-highlights-from-asiad-video/ 。   原话: “To some degree it is natural for you to talk to your phone,” Rubin said, but historically that has meant talking to another person. As for talking to your phone without actually trying to connect to another person, Rubin says he’s not so sure. “We’ll see how pervasive it…

Thanks, Steve Jobs!

  我用过的第一台电脑是Apple II,也有可能是Apple I,实在搞不清楚了。那是高一,不知什么原因,我们年级居然开了Basic普及课程,整个课程只有一次上机的机会。不过那个课上完,我们绝大多数,如果不是全部,什么也没学会,然后生活在高考的阴影下继续。虽然有这么点接触,我对计算机的真正了解却是是上大学之后,正赶上电脑普及的热潮,从IBM PC XT+286、MS DOS、PC TOOLS、WPS、五笔字型开始的,虽然Machintosh和Power Mac也偶尔见到,不过更象一个传说,整个真实世界都属于Dos/Wintel。 对于Apple世界的感情,直到2005年WWDC之后,Developer Transition Kits 里的Mac OS X Tiger 10.4.1 Developer preview泄漏,黑苹果成为可能之后才一点一滴建立起来。其实之前ppc模拟器就可以在x86机器上把OS X PPC跑得很好了,只是性能实在太差,折腾过很短一段之后就放弃了。那个时候我跟Holly一起做为离岸团队为华尔街的一间证券公司开发证券交易策略平台,我整理脚本语言并制作编译器,Holly定义字节码并实现虚拟机,承蒙老板William关照,在啃完几本主要的编译器书之余还有足够的时间关注和尝试新鲜玩艺。 初步使用之后,我决定把家里的PC换上OS X Tiger,运气还不错,除了那块Via Rhine芯片的网卡其它东西都能正常驱动,正好社区里有人号称正在做这个驱动,于是我整了一块RTL8139先用着。不过那台PC挂的硬件比较多,已经接近电源的上限,所以总觉得多插个网卡不爽,还是掂记着那个驱动。这个担心并非多余,后来那台机器因为供电不足,损坏了一块显卡,最后主板也烧了。话说约半年后,项目终止团队解散,我在家休息了几个月,看那帮老外半年也不出东西,闲着也是闲着,还是自己写一个得了。这是我的第一个Mac OS X程序,也是做为一个程序员被Apple震撼的开始。由于发给Via要datasheet的email石沉大海,我只能从Linux driver源码里分析资料,为此花了差不多一个月从PCI到Linux网络子系统整个看了一遍,然后开始着手写I/O Kit驱动。然后我发现,要理解I/O Kit实在太容易了!写这个驱动,只要实现一个IOEthernetController子类就行,整个底层原语libkern已经封装好了,数据队列现成的,一行搞定: IOGatedOutputQueue::withTarget( this, getWorkLoop() ); (当然这个最简单的队列性能并不好,也有足够的基础类可以实现不同性能的数据收发,不过都要多处理不少细节) 原来写驱动也可以面向对象呀!原来底层结构也可以这么优美!在折腾过WDM、又刚跟Linux死磕了一阵子之后,那感觉大约只有翻身农奴把歌唱能形容了。好吧,OS X不仅是unix+优美的图形界面,更是一个充满思考、精心设计、优雅到骨子里的编程平台。 不过,Mac OS X平台开发的工作机会似乎不存在,后来还是找了个Java开发的工作上班去了。不过,没过太久,iPhone横空出世。之前的智能手机世界属于Symbian和Windows Mobile,当时WM上升势头很好,我确信它会象IE干掉Netscape一样成功,花了不少时间来学习,先后买了Dell的X5和X51v来玩,写了一些东西放在play3d.net (顺便要跟play3d的读者说声抱歉,后来搞不定域名备案网站停掉了,域名到期后也就没有续费,当初那些文件还在 http://www.pinxue.net/play3d/ 不过没来得及写的那些估计永远不会再写了)。当iPhone 1.02软解方案出来以后,在Holly同学的煽动下,找人从美国带回来两台iPhone (Thanks Karl Chen!)。这个手机从外观到功能,无一不酷。然后,我在办公室就当起了iPhone的义务推销员,见人就说:这才是我想要的智能手机,这才是我想要的手机上网,比我想的还要好、还要舒服。不久头头去美国出差回来,行礼是帮大家带的8个iPhone。 iPhone改变了我对手机的看法和用法,以前用Nokia时基本就只打电话,连短信都极少发,第一部没有中文输入法,第二部那个T9也实在消受不来,而在iPhone上可以用最习惯的五笔;更别说上网了,偶尔用它的浏览器去gmail看个邮件,恨不得能花10分钟。用PDA的时候也主要是看书和记事,因为那个电池表现实在是不堪。但是自从用了iPhone,我就喜欢上发短信了,在路上也有gtalk的感觉了,也习惯于用手机随时查东西了,因为不需要再忍受跟别人嚼过的甘蔗差不多的wap或完全乱套的互联网页面了。以前也很少拍照片,因为用的手机都没这功能,有这功能的智能手机印象里比一台电脑还贵,用iPhone以后极其喜欢随手拍,不久就把数码相机送给家里人玩了。近来有了iPhone4以后,连配件一起花了7K的DV也闲置了。 iPhone 1代对我来说是完美的,在用了一年G1和数月EVO之后,又拿到iPhone 1代来用,仍旧有一种舒服到感动的感觉。当然它也是有缺陷的,有一些还好克服,比如通信录不能按汉字拼音排序,电话号码显示的格式不适应国内的号码等;有一些就很难办,比如不支持彩信,不过我至今仍极少用彩信,戴着运营商的镣铐跳舞总是别扭,发email或直接上传到网上才符合互联网的习性。最要命的是没有中文输入法,很快也就有第三方的短信程序自带中文输入法了,不过别的应用还是没法输入;也有人搞定了替换系统日文词库来当中文输入法用,只是第一个字总是日文,着实碍眼。好在社区已经整理出toolchain,在Holly精湛技艺之下,不到一个月,我们就有能用的单字拼音输入法了,而且速度飞快。因为总在港汇二楼台阶上的Costa碰头,我们给这个输入法取名为iCosta。不过我习惯用五笔,于是不久我们加上了五笔支持。别小看了这个五笔输入支持,它彻底释放了我在手机上的表达能力,也改变了我不在手机上聊天的习惯。 简单点说,iPhone改变了我对智能手机和移动互联网的认识,并如此迅速的让我依赖上了移动互联网。但是它改变我的,并不仅于此。在折腾iCosta的时候,我开始学习ARM汇编,ARMEABI函数调用的效率令人惊叹;开始学习Objective-C,它在完全兼容C的前提下提供了令人惊叹的面象对象能力,并对两者的混用几乎没有任何人为限制,而面象对象语法的设计也充满了智慧,分明在无声的说,这门语言是为人设计的,不是为了机器或者形式语义设计的;分明在强调,程序是由人写的,也是给人看的。更令人震惊的是Objective-C生成的汇编代码极易看懂,完全不象X86平台上一般程序那样难搞,虽然系统很多部分并无源码,但对于想要理解iPhone OS内部机制的人来说,一切就平铺直叙的写在眼前,即使是C编译生成的代码也要好读得多。这可太舒服了! 后来,iPhone SDK终于出了。我的iPhone终于摔坏了,我决定追逐一下有硬键盘的G1的浪潮。对于少许Android玩家来说,因此而很快拥有了可用的五笔输入法,而对我来说,由此而领会了什么叫做可用性,什么叫做用户体验。这不是说Android不好,Android有非常好的地方,比如它提供IMF并且可以通过Android Market发行IME,你几乎可以修改系统任何一个方面,只要你愿意努力。这可能是整个iOS平台永远也无法满足的需求,我猜想Jobs和苹果公司认为:想做这些事情的话请加入苹果。 用惯iPhone之后,时不时会拿手指点电脑屏幕,然后才想起来不支持触摸。于是开始盼望触屏版的MacBook,不过至今还没有盼到.苹果推出的是iPad,而且便宜的出乎意料。很快我的iPad就被小Nemo独霸了,好在后来又第一时间买了iPad2,不过装上PPTV/PPS/奇艺等可以看电视剧的app之后,有被Nemo妈抢走的危险了。如果不写代码,我已经习惯用iPad替代电脑。…

帮Holly Bull晒一晒汇编

这是大牛某天折腾黑苹果时不爽,花了半天工夫自己炮制的,主要时间都花在挑选指令上了,字节数太多的指令不能用,也不能写太多指令。能看出来是啥吗? ; ; For extended disk access: 1int 13h ah = 42h ; struc extended_disk_access_block sizeof_block: resb 1 reserved: resb 1 number_of_sectors: resw 1 buffer_offset: resw 1 buffer_seg: resw 1 start_sector_number: resq 1 endstruc ; extended_disk_access_block ; ; Partition table entry format ; struc partition_table_entry boot_flag: resb 1 begin_cylin: resb 1 begin_head: resb 1 begin_sector:…