Reloaded

把机器弄到新的VPS server——没办法,搬家过程中,没有网络,只能租一个地方来放点东西。便宜倒是挺便宜,只是OpenVZ做的VPS不够稳定,有一次稀里糊涂的硬盘空间就没了,还有长达半个月的时间里,php fastcgi的进程总是莫名其妙的被kill -9。今天灵光一闪,搞来php-fpm,才算稳定下来。另外有时候还一顿一顿的,就像java VM里面的GC一样。内存只有512M,没有swap(也不能有,OpenVZ的限制),Sun的java虚拟机根本启动不了,没有足够的内存。好在我们还有JRockit。加上jetty(还试过winstone,不过也没啥太好的效果),内存70M左右。。。总之,所谓便宜没好货,还是Xen的好一点。

又回到美国,跟10年前的感觉还是不一样的。有空跟大家八卦八卦……

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

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?

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,就可以下载安装了。

很好,很强大。