• iPad/iPhone与多任务

    最近很忙再加上新年,所以很久没有更新博客了,抱歉。

     

    苹果即将推出的iPad到底具有哪些功能,可谓是众说纷纭。我最为关心的问题是到底iPad是否支持多任务,种种迹象表明答案是否定的。这让许多开发者包括我自己十分失望。缺乏多任务支持使得许多简单的功能都无法实现。记得一位朋友问过我关于在iPhone上实现闹钟功能的问题,这实在是一个简单的程序,可是在没有破解的iPhone上却没办法实现。(准确地说,是无法完美实现。你当然可以写一个运行于前台的闹钟程序,不再运行其它程序,可是它有多实用呢?另外还可以用Push Notification技术,不过这实在有点“大炮打蚊子”了。)

     

    实际上,iPhone OS(iPad也采用iPhone OS)本身是支持多任务的。苹果的的官方解释是CPU,内存的限制以及安全性的考量,所以只支持单任务。但对我而言,这些解释是站不住脚的。举个可能不恰当的比喻,尽管大部分人在大部分时候都不能一心两用,但谁规定了人在看书写文章时就不能同时听音乐,就不能做运动,如果是这样,上帝造人时干脆弄个开关,让人只能做一件事情算了。说道安全性就更不靠谱,上网或运行别人的程序当然有风险,但与我得到的好处相比,我宁愿承担风险,或者说我宁愿自己进行风险评估。更何况App Store不就是用来帮助人们对安装程序进行检查以降低风险的吗?如果这点风险都不愿承受的话,那么人最好不要吃药甚至不用吃东西,因为再好的药物都有可能带来副作用,食物可能包含对人体有害的物质。

     

    下图是一些移动平台有关多任务的对比,其优劣大家自己判断:

     

    image

     

    不过,iPad还会提供一个新的机制可以有限度地支持多任务,那就是支持Dashboard widgets。或许我们可以编写一些运行在后台的widget,谁知道呢?

     
  • 新春快乐!

    新年将近,祝各位新春快乐,身体健康,万事如意!


    2008520211942659_2

     
  • iPhone是个“大嘴巴”

    newton-virus-objectsq

    TaranFx上有一篇文章介绍了一个名为SpyPhone的新的开源程序,它将当前iPhone SDK的“信息脆弱点”都完全曝光。下面是该文章的链接:


    SpyPhone程序从所有iPhone数据


    大家可能都听说过越狱iPhone用户可能遇到的一些问题。没有SDK的限制,许多用户的手机都被恶意程序通过默认的root密码劫持了。不像我们听说过的其它一些程序,SpyPhone仅利用公共API获取它显示的信息。它显示了:

    1. Email账户
    2. Wi-Fi 网络
    3. 电话使用信息及历史信息
    4. 位置信息
    5. Safari 搜索
    6. YouTube 搜索,历史和书签
    7. 照片
    8. 地址簿数据
    9. 键盘缓存


    在这里我们的目的并不是向大家大声抱怨安全,隐私问题,而是要看看到底该程序是怎样做的。SpyPhone的源代码可以在 git hub 下载,你可以自己看看到底它是怎样完成这些工作的。快速浏览了一下它的源代码,我们发现iPhone像 Macintosh电脑一样都包括一些文件夹,比如“Applications”, “Library”, “Root”等等。如果你安装了SDK,那么你可以在iPhone模拟器上找到这些文件夹。它们在:

    ~/Library/Application Support/iPhone Simulator/User


    这就是iPhone保存所有数据的地方。再看下SpyPhone的源代码,它的秘密就是利用这些文件夹和它们包含的文件。如果你再进一步,你会在iPhone模拟器的文件夹下发现:

    ~/Library/Application Support/iPhone Simulator/User/Library/Preferences/


    这里有许多 com.apple.SOMETHING.plist 文件。这些文件就是SpyPhone获取大部分数据的源头(其它数据可以通过SDK的其他部分,如地址簿访问,照片服务等)。它使用下面代码获取数据:

    
    NSString *path = @"/Library/Preferences/SystemConfiguration/com.apple.wifi.plist";
     
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
     
    if(!dict) return;
     
    NSArray *a = [dict valueForKey:@"List of known networks"];
     
    if(!a) return;

    NSString *path = @”/Library/Preferences/SystemConfiguration/com.apple.wifi.plist”;
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
    if(!dict) return;
    NSArray *a = [dict valueForKey:@"List of known networks"];

    if(!a) return;


    上面的代码获取程序运行其上的电话的网络信息,它包括在一个数组中。尽管有些担忧,但我认为它还并不是罪恶滔天。首先我知道Apple会拒绝这样的程序出现在App Store上。Apple对SDK可谓是了如指掌,所有它可以叫停所有的滥用其SDK的程序。


    但是该程序为神秘的App Store批准过程提出了一个挑战。令人难以置信的是获取进入世界上发展最快的软件市场的入场卷是如此的神秘。像SpyPhone这样截取“敏感”信息的代码随时可能发生而用户并不知情。虽然Apple可以监视对PLIST的访问,但我很容易就可以想像到某些程序具有绕过Apple检查的能力直到某天我们知道它出现在App Store上。


    例如,我有一个在线 XML 文档指定是否要运行截取用户信息的方法,在App Store审核期间将其设为NO而在获取批准后设为YES,开始收集用户数据。所以尽管Apple有很好的方法来防止恶意程序,但我确信有许多方法可以逃过Apple的检查。所以我产生了最后一个问题,大家是否宁愿程序不具有使用这些信息的能力?没有照片,没有地址簿,没有wifi侦测,程序mail限制。大部分这些使iPhone变得精彩的程序都被“安全隐患”包围着。大家怎么看?是否Apple应该至少关闭系统PLIST的访问?


    原文见:The iPhone is Bad at Keeping Secrets
     
  • iPad到底是什么?

    恕我孤陋寡闻,一直对Apple的平板电脑没有过多的关注,以为就是一台带触摸屏的Macbook。在我的Macbook Pro被盗后,还准备买一台进行iPhone的开发工作。但随着iPad新闻的发布,我发现iPad不过就是一台大号的iPod Touch。我觉得有下列弱点:


    • 不支持后台运行 – 这无疑是iPad的致命弱点。如果说iPod Touch和iPhone不支持多任务是为了最优化的用户体验,我还可以理解。但作为一台拥有如此先进的OS的电脑,我不知为何Apple一直抱定这个设计理念。简直让人觉得回到了DOS时代。
    • 不支持Flash – 仍然无法像使用普通浏览器一样访问Flash支持的网站。使其网络浏览功能大打折扣。
    • 不带摄像头 – 在视频聊天如此流行的今天,在这样一个高端的设备上,加上一个前置摄像头应该是必备的选择吧? 
    • 大尺寸的屏幕 – 这也是缺点?没错。虽然我觉得大屏幕确实有许多好处(特别是看电子书),但是如果它具有Laptop或Tablet的尺寸而仅仅具有掌上电脑的功能,这应该是缺点多过优点了。另外,试想一下,拿着这么个大家伙在地铁上摇头晃脑地玩着保龄或赛车游戏,是不是有那么点脑残?


    总而言之,我觉得iPad的设计理念互相矛盾,定位不明确,它不过是苹果公司另一个噱头,它的出现无非是进一步利用其极其成功的App Store模式,最大地获取利润的一种方式罢了,因此我并不看好它的前景,大家觉得呢?


     
  • 用户是上帝?

    这几天有朋友向我抱怨Apple Development Center循环登录问题(即输入用户名和密码后又进入登录页面,无任何错误提示),这让我回忆起去年在一段悲惨遭遇,有感而发。

     

    去年我在国内使用铁通网络,遇到过此问题,找ISP,人家一句话就打发我了,你其他网站都可以登录,那一定是Apple的网络问题了。我一想也是,至少Apple会知道在什么情况下会发生这种现象吧。于是乎赶紧联系Apple中国的客服,这一联系不要紧,接连三个月的拉锯战,让我深深体会了当年秋菊打官司的艰辛。说句实话,我并没打算Apple真能给我一个完美的解决方案(实际上我通过代理还是可以登录的,虽然十分之麻烦,而下载SDK此类的工作根本是无法进行的了),但他们每次email的回复都不竟让我怀疑他们是不是把每个客户当成了脑残(对不起,并非歧视残疾人)。通篇的废话,虚假的客套,每次都是诸如“请使用其他浏览器,请清除cache或重启电脑……”的回答,让我最后不得不放弃“讨个说法“的念头。实际上据我所知,这不光是Apple中国独有的问题,我在Apple开发者论坛上也看到一些老外遇到同样的问题,至今也无法解决。

     

    商场如战场,每个人特别是Steve Jobs这种商场中的精英更是深谙此理。那么,“用户是上帝”这句放之四海皆准的道理,为什么就被Apple置之脑后了呢?我想可能因为我们是开发者,而不是最终用户吧?当然,生活还要继续,如果我们还打算通过Apple Store赚钱的话,也只有忍下去了,谁让我们有五千年”谦和忍让“的文化熏陶呢?