Skip to content

最新文章

29

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的图覆盖之时候可能的。待有时间研究来……
24

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?

Read more from 折腾
19

小妞8个月

今天小妞八个月了。体重9.2kg,身高约72cm。

据说八个月应该会爬了,不过小妞还不会爬,趴在地上倒是可以用手的力量往后退,据说这是要开始爬的前奏。不过能爬了危险也就多了,楼下的小朋友据说到处乱爬,厕所,厨房都去,唯一不去的就是给他准备的垫子。家里就变成一个危险的场所了。

小妞说话也比以前多了一些,最开始发的音除了上次的“打打打”以外,当然就是“爸爸妈妈”了。不过基本还是无意识的,还不能理解这个音和它的含义。话说回来,似乎有些话她还是明白的,特别是晚上睡觉前,如果你跟她说“喝奶”,她即使在哭闹也能转头回来看着,甚至还能挤出一点笑容,很显然是明白了。有时候你要从她手里拿东西,跟她好好说,就没事,要是直接拿,她就嚷嚷了。看来以后说话要注意了,脏话要少说了。

小妞目前长了三颗牙。最先长的是下面的两个,上面两个很快也开始长,只是靠右的那一只一直没有出来,被牙龈挡住了,透过牙龈似乎隐约可以看到白色的牙——有时候真想把它给弄开,可惜不行,还要靠她自己磨。

最近夏天有些热,长了一些痱子,跟以前的湿疹有的一比。没办法,小朋友的体温调节系统还不够完善,27、8度的天气夜里我们觉得有点冷,她还呼呼的出汗,睡觉时总是把头弄的湿湿的,又不太敢给她吹风扇,只好给她多擦擦。夜里也总是热醒几次,不过喂点水就又睡了,大概是水分流失太多了吧!

跟以前一样,晚上睡觉前是她最难过的时候,总是爱哭。有一天抱着她坐在阳台上看外面的夜景,她跟我嬉戏,抓窗帘和我捉迷藏,最后累了趴在我的胸口睡着了,觉得真是特别的美妙:她那么全心全意的信任你,对你付出无条件的爱,你就觉得,也应该给她同样的回报才行,于是一切的辛苦就都抛到脑后了。

最后还有一点遗憾就是她的头发,剃了两次头以后似乎长的更慢了,到现在快两个月也才是一个板寸,不像小女孩,哎呀。有没有什么好办法?

8个月生日快乐,祎祎!

17

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

读“哀悼日合法性四辩”

哀悼日合法性四辩

这篇文章解释了我心中的一个问题。一直觉得这种一刀切的全国纪念日有点问题,但是又说不上来。不过看完了就似乎明白了一些。政府认为自己占据了道德高点,对不赞成这种观点加以处罚,(比如参加娱乐活动应该会被惩罚),但是其实它并没有权力这么做。虽然我觉得地震也好,泥石流也好,受害人都是很值得同情和纪念的,但是每个人都有权利选择自己的方式。上至国务院依然如此,建立法制国家依然任重而道远。

“当我们默认政府设定哀悼日的实证法合法性时,对哀悼日合法性的挑战将来自于更高的正当性要求,在现代宪政国家,这将是一个合宪性问题,即一个国家的政府,是否可以强制或可以用怎样的方式依据某种道德规范强制它的公民。

“……以及,也许是最重要的,国民还没有普遍形成宽容、互相尊重个人选择的人格。如果我们以其它事件来作为考察出发点,同样会发现诸多类似问题。实际上,我们不能指望中国在一天之日就实现完全的行政法治与宪政,但我们至少可期希望历史前进的步伐不会停滞。今天,公民的地位和中国的传统政治道德哲学因为哀悼日的设立而发生了颠覆性的变化。虽然置于历史长河来看,这只不过是历史前进的一小步而已,其中暴露出来的问题说明,中国实现法治与宪政之路还很长。

6

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是我正在搞的事情,下回再说。

另外,有时候能看到ipod的播放器(MediaPlayer之类的)和邮件程序在后台运行,似乎就这两个是后台运行的。在年底升级iOS4之前,似乎有些什么办法可以让iPad运行多任务的,不过还没仔细研究,似乎很麻烦……

再说说ipad上面的shell。不是什么时候都有另外一台电脑可以远程登录的,所以就找点直接可以打开shell的程序,一开始看MobileTerminal,不过这个不支持ipad(只是iphone那么大小),而且在我的机器上根本弹不出来,窗口一闪就不见了,不知道什么缘故。后来找了一个iSSH的程序,这个东西就是一个ssh client,然后用SSH连到本机就好了。不过这个家伙万恶的不支持gbk字符集,不然就可以用来telnet上水木了。

待续。

5

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
待续。

Read more from 折腾
20

学说话

小妞最近爱说火星话,就是叽里咕噜的也不知道说什么,大概只有她自己才懂。这两天特别爱发“打”这个音,所以听起来就是打打打。。。为什么先学会的不是巴巴爸爸呢?

PS, 昨晚一共打死了20只左右的蚊子,疯了……我活在怎样的一个世界里。

▼有图有真相

Read more from 小妞
18

小妞病好了

很奇怪,用了两次美林,两次泰诺林,在发烧后的第27小时左右就停止发烧了,第二天就跟没事人似的,该乐乐,该吃吃。第三天脑袋上似乎起了一些疹子,但是跟传说的婴儿急疹似乎也不太一样,而且基本只在脑袋上,身上、四肢都没有。不知道到底是怎么回事。不管怎么样,恢复了就好了~谢谢大家的bless!

▼ 生病的小妞好可粘。。。

Read more from 小妞
16

小妞病了

6个月26天,小妞第一次生大病。病起的很突然,7点开始我们觉得她发烧,8点体温就是39度以上了。赶紧给贴上退热贴,出去买了美林和泰诺林,并且给她喝了3ml的美林。买来的药上其实并没有6个月儿童的药量,最少一岁的,我就自作主张,根据体重换算了一下。

还是不放心,决定去查一下血常规,看看是不是细菌感染(按理说发热起的这么急一般应该是病毒性的)。小妞虽然很热很难受,但是居然没哭,只是不停的哼哼唧唧,表示她的不舒服,我们哄哄她,也不那么闹。去到社区医院,没有儿科急诊,打发我们去儿童医院。还好离儿研所不远,15分钟就到了。那人叫一个多,而且90%以上都是发烧去的(我们走的时候候诊的居然有近60个人)。护士直接就给开了一个验血的单子去二楼抽血。这时候我家小妞又表现出她神奇的一面,扎指血的时候她只是皱了皱眉头,即使医生后来使劲挤她的手指头都没哭一声。回想起来这几次打针之类的,她大概就哭过一回,大概是痛觉神经比较粗大。(不不,这个说法不好,我家妞多勇敢啊!)抽血之前我摸了一下她,发现已经不是那么烫了,布洛芬的药效还真不错!而且她的精神也好了很多,开始玩耍起来。

抽血了等了结果又等了快一小时才看上医生,这基本可以称为门诊而不是急诊。医生的诊断是。。。不知道,回去退烧观察。谈及吃药的事情,医生听说我们给了3ml,说,太多了!心里很忐忑不安,难怪烧退的那么快,会不会吃坏了啊!医生说,那是大孩子吃的,你还是应该吃小剂量的,于是给开了一个小瓶的泰诺,医嘱每次0.7ml——乖乖,这可比3ml少多了,更加难过起来。回家仔细一看,这两种大小的药居然浓度不一样,换算起来,小瓶的0.7ml大概相当于大瓶的1.5-2ml,我给的3ml也不算那么离谱,心中甚慰。

希望小妞今晚睡个好觉,过几天就好起来!

Read more from 小妞