首个派上用场的Python脚本

Python

最初看到Python,是在七、八年前,当时它是跟着Linux一起来的,我跟它只是打了个照面,没有言语。后来,我又在一期《程序员》杂志上看到过它,我还记得当时的标题是《动态语言 隔岸观火》,也就是那一次,上下打量了Python/Ruby一番。

工作以后,整天的Java来Java去,虽然Linux还是时不时看到,shell也能说上话,就是不见Python。直到最近,决定要好好地认识认识它,从语法到API,从纸质图书到电子文档,自我感觉算是着了道,就是在工作上遇不到应用场景,这一番本领成了屠龙之技。

[ Read More » ]

use MacPorts with Subversion by HTTP

Apple

此前在Debian上习惯了apt/aptitude,有了它们,安装、卸载、依赖,这些繁琐的事情一下子简化了许多。切换到Mac OS X上以后,自然而然想到了MacPorts,虽然用法和apt/aptitude不同,但总觉得有些面熟。

今天在公司网络环境下,执行port selfupdate,竟然失败了,提示Couldn’t sync the ports tree。一番探究后明白,MacPorts默认使用rsync来同步数据,但是公司网络关闭了对外网873端口的访问,而这一端口正是rsync的默认端口。

[ Read More » ]

Learn Android Market Licensing Service: Part 2(FINISH)

Android

上文介绍了LVL的简易使用方式,本篇文档介绍复杂使用方式,这种方法比建议之前的方式多了三个环节:第一,实现自定义的 Police;第二,实现自定义的 Obfuscator;第三,实现自定义的 DeviceLimiter

在Android Market Licensing Service中,Licensing Server 只会返回适用于当前用户的 License,并不会决定用户是否可以使用,它把决策权留给了开发者。开发者要行使这个权利,需要通过一个叫做 Policy 的 interface。API 文档是这样描述 Policy 的:used by LicenseChecker to determine whether a user should be have access to the application。其共定义了两个方法:allowAccess()processServerResponse()

[ Read More » ]

Learn Android Market Licensing Service: Part 1

Android

在 Android 发布早期,官方的 Android Market 颇为开发者诟病,原因之一就是版权保护机制的欠缺,诸如像从 Android Market 上下载的应用不能安装在有 root 访问权限的设备上,也不能安装到 SD 卡上等限制的版权保护能力实在太弱。后期,国内各家 Android 软件商店竞争进入白热化,场面一度精彩万分。凭借着本土化优势,这些第三方商店也一度吸引了部分国内开发者发布应用。但是,据我观察,它们在版权保护方面依旧乏善可陈,开发者们对版权保护的愿望照样落空。

这样的局面一直维持到2010年7月28日,这一天 Google 发布了 Licensing Service。这项标榜 “simple” 和 “free” 的服务提供了 “secure mechanism” 来管理对付费应用的访问,它的发布也昭示着原来的 “copy-protection mechanism” 将很快被废弃。虽然此后有消息称这套机制也可以被破解,但是眼下开发者如果想要赚钱,除了广告,尚没有清晰的第三条道路。因此,Google Licensing Service 对于开发者来说,还是非常有帮助的。–这里不得不说前几日看到有关 Android 吸费陷阱的报道,做恶的是不法 SP,无辜的是 Android,作为平台,Android 是不俱备扣费能力的。

[ Read More » ]

Location in Android: Part 3 (FINISH)

Android

前文中所提到的Cell-ID和WI-FI定位方法,在Android官方文档《Obtaining User Location》中并入Network Location Provider一类,与GPS地位等同。前文中介绍的方法虽然可行,但是需要开发者处理比较多的数据。实际上,不必这么麻烦,还有更简单的方法,android.location中的LocationManager封装了地理位置信息的接口,提供了GPS_PROVIDER和NETWORK_PROVIDER等。

如果开发的应用需要高精确性,那么可使用GPS_PROVIDER,但这也意味着应用无法在室内使用,待机时间缩短,响应时间稍长等问题;如果开发的应用需要快速反应,对精度要求不怎么高,并且要尽可能节省电量,那么使用NETWORK_PROVIDER是不错的选择。这里提一下,还有一个PASSIVE_PROVIDER,在实际应用中较少使用。

[ Read More » ]