小妞10个月又一周

懒得更新blog。一个是windows live space都撤了,现在哪里还有什么人写blog?不过我认识的朋友里似乎也很少有人用微博,顶多有人上上开心网。看来实在还是赚钱要紧。 小妞转眼都10个多月了,也就是她还值得记录一下,给生活加点乐趣。 10个月的妞体重最近长的慢多了,维持21斤稍差一点,身高大概70多不到80cm。两个多月来爬已经练习的滚瓜烂熟,爬起来嗖嗖的。能扶着沙发、大人的腿站起来,还能迈上几步,不过还不敢自己走。妈妈的意思是,让她多爬爬,不着急走。 今天晚上小妞有点奇怪,一般八点就睡觉的,都9点多了还没睡,爬来爬去,很兴奋。她喜欢所有有button的东西,比如遥控器,电脑键盘,包括自己的纽扣。每次我们抱着笔记本的时候,她是一定会爬过来,使劲拍你的键盘的。妞妈今天晚上逗她,用手在她的铺在地上的被子上假装打字,她也飞速的爬过来,然后趴在边上,侧身仰头看着妈妈,一副”妈妈你没事吧,那是我的被子诶”的表情,把我们两给乐翻了。后来再用一本书什么的假装,她就上当了,冲过来抢过去把玩起来。 有时候看着她就觉得,她这段可爱的时间真的很短,不能跟她一起成长真的很可惜。希望老婆能有这个机会。。

十月 28, 2010 · Shawn Ma

路过Oracle Open World

偶然的机会,今天去了一趟三番的Oracle Open World + Java One。去年的Open World本来是可以去的,不过我换了公司,就没了。 本来是带着研究Coherence的任务去的,边上就是Tuxedo的booth,看到Todd Little胖墩墩的坐在那里,还觉得挺有趣的,一转身,Frank走了过来,颇有一种他乡遇故知的感觉,不过也有点不好意思,谁让咱跑了呢。互相寒暄了一下,今年中国也来了不少人,William Cai据说代表Security Team去了。不过转了一圈,Identity Management有好多柜台,却没有认识的。泱泱离去。 找到Coherence柜台,跟Brian Oliver聊了聊,这个组其实有好多以前的同事,比如高大为同学。一问,果然都认识。这个其实也就是一种Distributed Cache,听他讲了讲,似乎feature还不错,不过也没仔细比较跟memcached或者cassandra的区别(话说cassandra最近势头很不好,digg的VP Engineering因为用了这个做的不好走人了)。有空再研究吧。 下午正好赶上拉里埃里森的keynote,他看起来的确老了,都66岁了。没有听到开头,过去的时候已近开始讲Middleware和Fusion Application。讲到Fussion Application的时候人开始退场,到后来退场的人很多很多,看来对这个东西都不感兴趣,尤其是Larry下去,让其他几个人demo的时候。我在Oracle的时候就对这种从头做的应用抱有怀疑的态度,外加那个“做的很复杂以至于看不到明显的错误的ADF”,看来大家使用脚投票了。不知道这玩意前景如何。。。 Keynote会场的门口放了两套大机器,一个Full Rack Exadata,还有一套Exadata + Exalogic配合的东西,性能的确很强,不过价钱也很强,不是一般人消费的起的——1/4的Rack据说要1M$左右。在边上放了四个Iron Man的从旧到新的模型,上面的大屏幕还放着Iron Man 2的广告,我看来看去,觉得Iron Man就是Larry演的,而且Iron Man的性格也像极了Larry,很张扬。 其实也没啥具体的收获,开开眼界吧。

九月 23, 2010 · Shawn Ma

Ipad的蓝牙和地图

发现2008年写了一个对新笔记本的希望,没想到今年买了一个ipad,还真挺符合我的要求的。稍微有这么一点差异: ARM CPU vs ATOM CPU。ARM应该也还好了,好像很多便携设备都用ARM。没有仔细比较过。 没有windows系统。很多网银是用不了的。这个没啥办法。。。 不要内置的GPS还被我说中了-_-“”。不过这个问题还好,我有Holux M-241,加上roqy bt这个软件,GPS基本解决。 价钱基本上说对了,499美元。不过加税就超过500美元了。 不过ipad也有两个超出期望地方:多点触摸和重力感应。这两个东西带来的有意思的东西还是蛮多的,很多游戏只能用这两个东西来玩,很有趣。 嗯。说回到地图的问题。其实这有两个问题,一个是希望有offline map,另外一个是希望有导航,或者最基本的,能用GPS在地图上显示我目前的位置和方向(就像手机版本的google map一样)。上个礼拜研究了一下还是有所进展的。 蓝牙问题 ipad是带蓝牙的,不过它的蓝牙很“封闭”,比如蓝牙的GPS的SPP Slave模式就不支持。你要上大街上买个蓝牙键盘,也不支持,只能买苹果的蓝牙键盘,唯一支持的就是蓝牙耳机。还好我们可以越狱,目前方案有两种,一个叫roqy GPS,这个可以替换掉ipad内置的蓝牙stack,就可以连上GPS了。不过这个只支持GPS,想要接蓝牙键盘,不行。Cydia可以下载到,定价8欧元。不过在weiphone可以搞到破解版。另外一种叫btstack,本身是开源的,不过如果想要支持GPS,请掏5美元(还是affordable的,我差点就买了)。如果想要支持keyboard,另外交一点。不过,btstack keyboard在tgbus也有破解版,没有试过……(PS, 蓝牙键盘看起来也很不错,尤其是那种可以折叠的Nokia的键盘。只是要300元,似乎不是很值) 地图问题 蓝牙GPS问题解决了,Google Map显示我就是一个点了。MotionX GPS也可以工作了。从Hackluous可以下载到tomtom的国外的导航(北美、欧洲),从weiphone可以下载到某国产的中国导航软件,这样 导航的问题也还ok,但是这两个软件都是iphone的(超小),而且不是地图软件——导航的软件跟地图还是挺不一样的,导航的往往只能显示眼前的地图, 没有全局观,很不爽。 研究了一下,离线地图大概有这么几种解决方案。 iphoneofflinemap,一个台湾人搞的。原理是利用现有的苹果maps应用,把所有的离线地图放在它的缓存里面。不过在3.2.x似乎有点问题,貌似maps在联网的情况下会写入这个文件,似乎会导致这个文件的不一致(删地图?)。我倒是想了一个狠招,因为maps是以普通用户身份运行的的,把那个缓存文件用root写入并且设置其他人只读,应该能解决这个问题。不过总之觉得这个不是狠靠谱,也不喜欢那个map生成器。。。 Offmaps. iphone应用,在ipad不能全屏。下载地图只支持openstreetmap,没什么兴趣研究。等它出ipad版本再搞它。。 MotionX GPS HD。这个倒是全屏,而且支持GPS,支持tracking。最重要的是,它也支持下载地图,当然,只能下载openstreetmap的地图,不过这个地图怎么看怎么难过,不知到是对比的问题还是怎么样,总之很不清楚。北京的地图更是不可用了。所以需要想办法用Google或者是bing的地图覆盖之。稍微研究了一下,他的下载之后的地图就是直接放在一个目录下(后缀.data,其实就是png),然后有一个sqllite的小数据库做索引,记录某个文件是对应哪一块,哪天下载的等等。为了省空间他对重复下载的块只是增加引用计数 -_-。所以,理论上用Google的图覆盖之时候可能的。待有时间研究来……

八月 29, 2010 · Shawn Ma

Hacking ipad (4)

啊,居然写了一个4。 因为我发现了一个有趣的事情。一直在找一个能offline使用map的应用,不过都不太好。OffMaps这个软件本身就收费,用的地图也是openstreetmap的地图——中国部分极差。有人做了一个ipad自带的map的离线方法,不过在新版里很不好用,因为它是通过改map的sqllite缓存数据库来实现的。考虑到用j2me写过一个简单的地图程序,开始琢磨是不是可以在ipad上自己写个小程序。但是苹果要求首先要有一只mac,而我并没有买一只的打算,只好另求他法。 首先想的是是不是有交叉编译的办法,一查,还真有,有一个项目叫iphone gcc,就是用gcc来交叉编译objective-C,然后把iphone的root文件系统,以及iphone sdk里面头文件、连接库搞到一台Linux上,就可以开发了。听起来很不错,不过看了Saurik的guide之后,就放弃了这个想法。网上说有人做了一些vmware的image,不过没有找到link,不然倒是挺好的一个选择。 后来在网上找到一个帖子,又想起来Cydia里面有一个iphone-gcc,决定试一下用ipad直接来开发。用apt-get安装iphone-gcc, make, ldid等等,还是要用VPN解决一下Cydia的cache的问题。还下载了180M的头文件。试了一个tab demo,cc1出问题:bus error,直接去/usr/libexec/…去执行cc1,报告说:cannot allocate memory。分特。杀掉mail,safari,还是不够,奇怪的很。最后发现,我装的iphone-gcc来自tgbus的源,版本是2009xxxx,而saurik的iphone-gcc版本(以及libgcc的版本)还是2008xxxx,删掉tgbus的源,重装,make,make install,哇哈哈,安装成功! 接下来有空得学习一下objective-C了。这个东西真的语法很诡异。没有GC的软件写起来也很痛苦。我怎么知道什么时候release/autorelease?

八月 24, 2010 · Shawn Ma

小妞8个月

今天小妞八个月了。体重9.2kg,身高约72cm。 据说八个月应该会爬了,不过小妞还不会爬,趴在地上倒是可以用手的力量往后退,据说这是要开始爬的前奏。不过能爬了危险也就多了,楼下的小朋友据说到处乱爬,厕所,厨房都去,唯一不去的就是给他准备的垫子。家里就变成一个危险的场所了。 小妞说话也比以前多了一些,最开始发的音除了上次的“打打打”以外,当然就是“爸爸妈妈”了。不过基本还是无意识的,还不能理解这个音和它的含义。话说回来,似乎有些话她还是明白的,特别是晚上睡觉前,如果你跟她说“喝奶”,她即使在哭闹也能转头回来看着,甚至还能挤出一点笑容,很显然是明白了。有时候你要从她手里拿东西,跟她好好说,就没事,要是直接拿,她就嚷嚷了。看来以后说话要注意了,脏话要少说了。 小妞目前长了三颗牙。最先长的是下面的两个,上面两个很快也开始长,只是靠右的那一只一直没有出来,被牙龈挡住了,透过牙龈似乎隐约可以看到白色的牙——有时候真想把它给弄开,可惜不行,还要靠她自己磨。 最近夏天有些热,长了一些痱子,跟以前的湿疹有的一比。没办法,小朋友的体温调节系统还不够完善,27、8度的天气夜里我们觉得有点冷,她还呼呼的出汗,睡觉时总是把头弄的湿湿的,又不太敢给她吹风扇,只好给她多擦擦。夜里也总是热醒几次,不过喂点水就又睡了,大概是水分流失太多了吧! 跟以前一样,晚上睡觉前是她最难过的时候,总是爱哭。有一天抱着她坐在阳台上看外面的夜景,她跟我嬉戏,抓窗帘和我捉迷藏,最后累了趴在我的胸口睡着了,觉得真是特别的美妙:她那么全心全意的信任你,对你付出无条件的爱,你就觉得,也应该给她同样的回报才行,于是一切的辛苦就都抛到脑后了。 最后还有一点遗憾就是她的头发,剃了两次头以后似乎长的更慢了,到现在快两个月也才是一个板寸,不像小女孩,哎呀。有没有什么好办法? 8个月生日快乐,祎祎!

八月 19, 2010 · Shawn Ma

Hacking ipad (3)

Step 3. Installous 和 AppSync 前两天在weiphone看到了这个帖子,发现我做的这些别人都做过了,要是早点看到这个帖子就省好多事情了。weiphone看来是现在讨论苹果很火的地方,ipad软件板一天有一千多个帖子。 不过还是简述一下我的过程。Cydia里面可以找到Installous这个软件,装上之后就是一个软件列表,有点类似itunes,不过可以想象,这就是一个盗版的集合。我试着装了两个,结果安装的时候告诉我,Invalid IPA文件。IPA是苹果ipad软件的发布包,其实就是一个zip。搞了半天都不成功。又从weiphone当来别人的ipa,用iTunes导入,也不行。Google之,发现原来还要额外的破解。这就是AppSync这个破解,它在cydia.hackulo.us这个源可以找到。有趣的是Cydia还会警告说,这个网站含有盗版的内容…… AppSync其实就是覆盖现有的installd这一个文件,让他在安装软件的时候不检查数字签名。然后世界各地的同志们就用另外一些软件,把从app store买来的软件rip成IPA,就可以下载安装了。 很好,很强大。

八月 17, 2010 · Shawn Ma

读“哀悼日合法性四辩”

哀悼日合法性四辩 这篇文章解释了我心中的一个问题。一直觉得这种一刀切的全国纪念日有点问题,但是又说不上来。不过看完了就似乎明白了一些。政府认为自己占据了道德高点,对不赞成这种观点加以处罚,(比如参加娱乐活动应该会被惩罚),但是其实它并没有权力这么做。虽然我觉得地震也好,泥石流也好,受害人都是很值得同情和纪念的,但是每个人都有权利选择自己的方式。上至国务院依然如此,建立法制国家依然任重而道远。 “当我们默认政府设定哀悼日的实证法合法性时,对哀悼日合法性的挑战将来自于更高的正当性要求,在现代宪政国家,这将是一个合宪性问题,即一个国家的政府,是否可以强制或可以用怎样的方式依据某种道德规范强制它的公民。 “……以及,也许是最重要的,国民还没有普遍形成宽容、互相尊重个人选择的人格。如果我们以其它事件来作为考察出发点,同样会发现诸多类似问题。实际上,我们不能指望中国在一天之日就实现完全的行政法治与宪政,但我们至少可期希望历史前进的步伐不会停滞。今天,公民的地位和中国的传统政治道德哲学因为哀悼日的设立而发生了颠覆性的变化。虽然置于历史长河来看,这只不过是历史前进的一小步而已,其中暴露出来的问题说明,中国实现法治与宪政之路还很长。

八月 17, 2010 · Shawn Ma

Hacking ipad (2)

Step 2. Cydia和SSH 上回说道,装了一个Cydia。他默认带了一些安装库的列表,大概有什么三四个,国内有两个还不错的source,一个是tgbus的,一个是weiphone的,tgbus的似乎还更加全一些。如下: http://iphone._tgbus_.com/_cydia_/ http://app._weiphone_.com/_cydia_/ 怎么使用Cydia很容易搞明白,那么几个按钮按按就出来了。第一个打算装的就是OpenSSH,可是很快就发现,这个Cydia有问题,总是报:cache failed, host unreachable之类的,即使我从tgbus安装也是如此。根据“你不可能是第一个”的原则,搜了一下,weiphone上有人提出了一个解决方案,就是替换Cydia的一个官方source。可是我现在又没有shell,又没有iFile之类的,怎么去编辑那个文件呢?最后还是在iPad里设上Proxy,连过去,就好了,有点奇怪,不知道Cydia为什么要这么做。Proxy的log显示,装Open SSH的时候访问了这些文件: http://cache.cydia.saurik.com/api/package/openssh http://iphone.tgbus.com/cydia/.//debs/cydia-3.7//openssl_0.9.8k-9_iphoneos-arm.deb http://iphone.tgbus.com/cydia/.//debs/cydia-3.7//openssh_5.2p1-8_iphoneos-arm.deb http://cache.cydia.saurik.com/api/package/openssh 不知道它为什么在安装前后要访问cache那个站点。而且我直接访问那个文件现在似乎又是通的了(不是host unreachable了),不过总是返回403 forbidden。很奇怪。有功夫再研究一下。 SSH装了之后好像是自动启动的,不过还不知道是在哪个脚本或者配置里,不过已经可以登录了。root的密码是alpine,苹果默认的。我给机器指定了一个wifi的IP地址,就可以连上了!不过,比较诡异的事情是,Cydia默认安装的那些东西里居然没有ps这个命令,ps在adv-cmds这个包里,需要新安装!没有ps,失去了很多窥探的乐趣。 好了,装上了,来窥探一下到底跑着哪些进程: sma-mato-iPad:/usr/bin root# ps -ef UID TIME CMD 0 0:03.80 /sbin/launchd 65 0:01.23 /usr/sbin/mDNSResponder -launchd 0 0:06.18 /usr/sbin/notifyd 0 0:00.87 /usr/sbin/syslogd 0 0:27.02 /usr/libexec/configd 501 0:00.11 /usr/sbin/BTServer 501 12:39.09 /System/Library/CoreServices/SpringBoard.app/SpringBoard 0 0:00.26 /System/Library/PrivateFrameworks/CoreTelephony.framework/Support/CommCenter 0 0:10.09 /usr/libexec/lockdownd 0 0:02.79 /usr/sbin/fairplayd 0 0:00.02 /System/Library/CoreServices/MobileStorageMounter.app/MobileStorageMounter 0 0:05.22 /usr/libexec/locationd 501 0:01.05 /System/Library/PrivateFrameworks/DataAccess.framework/Support/dataaccessd 501 0:01.04 /usr/sbin/accessoryd 501 0:02.70 /usr/libexec/lsd 501 0:00.08 /System/Library/SystemConfiguration/EAPOLController.bundle/eapolclient -i en0 -u 501 -g 501 0 0:06.54 /usr/sbin/sshd -i 501 0:10.90 /usr/sbin/mediaserverd 501 0:40.64 /Applications/Installous.app/Installous 0 0:28.12 /usr/sbin/sshd -i 0 0:03.36 /usr/libexec/sftp-server 0 0:00.04 /System/Library/Frameworks/SystemConfiguration.framework/SCHelper 501 0:01.23 /usr/libexec/installd -t 30 0 0:00.48 -sh 0 0:00.01 ps -ef 其中,lanuchd大概相当于传统Unix的init,是所有进程的爸爸进程。 mDNSResponder据说是Bonjour 的一个组件,提供multicast DNS(DNS multicast? 啥意思?)服务,可能只是一个DNS解析器吧?好像没有看到Bonjour 的进程诶。 SpringBoard就是iPad的主界面。有Hacker们对这个进程也做了手脚,搞了一些WinterBoard,SummerBoard来改变默认的屏幕,挺有意思。。 eapolclient是无线网的客户端吧,大概相当于wpa_supplicant? Installous和installd是我正在搞的事情,下回再说。 ...

八月 6, 2010 · Shawn Ma

Hacking ipad (1)

搞了一个ipad,第3次入手苹果的产品(前两个是ipod)。 从设计上来说的确很不错,132 DPI的IPS屏幕很亮丽,虽然没有iphone 4的Retina那么厉害,但是显示也是很细腻。苹果的A4处理器内置了GPU,各种动画效果也没有什么停滞感。但是缺点也是很明显,第一条就是不能多任务,主要是一些MSN QQ之类的东西每次打开必须重新登录,就很麻烦。第二是,在我们家的网络里,wifi很不好,从路由器ping过去,有30%的丢包,后来据说多频段路由器就会有这个问题,就改成了G only,还是不行。我也升级了据说解决这个问题的3.2.1的固件,依然没有起色。不过今天在公司的表现不错,355个包一个没丢。可能是公司的路由器比较好吧。 苹果最有趣的当然就是它的app store了,不过app store里的免费软件大多很无聊,稍微像样一点的就要收费,而且有的比如keynote就实在太贵了,咳咳,只能hack一下了。这篇(系列)文章就记录一下这个过程里面的有趣的事情;另外hack一个系统本身就是一件很有趣的事情,有时候这个过程比真正的目标比如keynote还要有趣。不过为了让自己的同行有口饭吃,尊重别人的劳动,有些便宜的软件还是打算去买一下的。 Step 1, 越狱(Jail Break) 简而言之,越狱的目标是让ipad可以装任何的软件,给它撕开一个口子让我们可以进去,装一些比如像ssh和GNU那套东西。以前ipad的越狱软件是叫Spirit,不过可能在我的新固件上用不了,所幸就在前两天,一个叫jailbreakme的网站发布了,直接访问这个网站就可以越狱了,试了了一下,真的很方便。看了一下它的源码,没太搞明白,中间有很多计算的脚本,还用一个pdf文件创建了一个Image的javascript对象,倒是让我觉得ipad的浏览器是不是有什么严重的漏洞,是不是很不安全? 越狱的结果就是安装了一个叫Cydia的程序。这个程序用类似Debian Linux的方式来安装程序,通过package好的deb包就可以把应用装进系统了,这个主要是用来装一些第三方的应用,比如ssh。越狱的过程还会默认给你安装好一些简单的命令行工具,比如GNU Core Utils,bash,apt,diff等等。不过比较搞笑的是,虽然安装了这些程序,但是并没有办法使用它们,因为我没有办法获得一个shell!接下来还是要装个ssh,这样就可以登录到ipad上去了。可是用Cydia装ssh并不是那么简单——得感谢我们的伟大的长城。 PS,Ipad的浏览器Agent字符串是: Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B405 Safari/531.21.10 待续。

八月 5, 2010 · Shawn Ma

学说话

小妞最近爱说火星话,就是叽里咕噜的也不知道说什么,大概只有她自己才懂。这两天特别爱发“打”这个音,所以听起来就是打打打。。。为什么先学会的不是巴巴爸爸呢? PS, 昨晚一共打死了20只左右的蚊子,疯了……我活在怎样的一个世界里。 ▼有图有真相

七月 20, 2010 · Shawn Ma