用Python修改Mac OS X的地址簿
什么时候我们会需要 Programmatically 地修改地址簿呢?
一个比较典型的用途是jjgod的apn, 可以利用 Scripting Bridge 给地址簿的中文联系人都设置上相应的拼音。
当然你如果像我一样当初在导入地址簿的时候将大家的学号都导入到地址簿邮件一栏的话,给地址簿当中所有work mail为063020开头的项都加上个@fudan.edu.cn就是非常必要的
本文只是提供一个更为详细的操作AddressBook的例子,通过这个例子,想必大家可以很明显地注意到其实Scripting Bridge做的就是用Python调用一个个原生的Objective C API, 虽然大家不会想到会在Python中写 ABMutableMultiValue.alloc().init() 这样的代码,但这其实就是在调用Objective中的 [[ABMutableMultiValue alloc] init]。
最后,还是要提醒大家,不要去运行这个脚本, 这只是作为一个操作 Multivalue 属性的一个范例。当然为了安全起见,我把最后写入数据的 ab.save() 给注释了。
overboming :: 十二.01.2009 :: mac, python :: No Comments »
最近搭的两个AppEngine上的东西
一个是JTweet, 我觉着想给它加上OAuth的支持,将用户的头像图片也改为从AppEngine的在线代理取了, http://javabirdy.appspot.com/, 以后在教育网就一直用这个看推了。
还有一个是mirrorrr, http://particleparty.appspot.com/,用来fetch一些教育网范围外的东西不错,我得把它的url改为encode过的才能作为一个合格的在线代理
overboming :: 十二.01.2009 :: google, java, python :: No Comments »
要小要轻量,打造小巧可定制的 ftp server
pyftpdlib是目前实现ftp协议最完善的Python lib, 使用它能用很短的代码行数打造一个极富定制化的ftpserver。
下面是一个用pyftpdlib实现的用作校内23用途的例子,该库提供的high level interface很适合定制,作为一个大程序的组件也非常堪用。
overboming :: 十一.25.2009 :: programming, python :: No Comments »
User-Agent for GAE(Java) urlfetch service
No matter how hard you try, you will get
User-Agent: AppEngine-Google; (+http://code.google.com/appengine; appid: overboming-hello)
for the user-agent header put by the urlfetch service
Notice overboming-hello, is your app's id.
btw, according to this resolved issue, the user-agent problem is fixed for Python, but not Java. I have fired this issue here, star this issue to push Google to fix this ASAP.
overboming :: 十一.16.2009 :: google, java :: No Comments »
解决Torchlight的"Prior installation detected"问题
为了比较一下cider和vmware fusion运行DirectX游戏的性能差异,我选择了Torchlight这款最近比较流行的title。
在虚拟机种尝试安装的时候,因为第一次安装失败,而接着再次运行安装程序会报一个"Prior installation detected, please uninstall it then try again"的错误,在任务管理器中卸载之前的安装包以后任务依旧。解决办法是运行regedit, 删除HKEY_LOCAL_MACHINE/SOFTWARE/RUNIC相关的所有键值。
overboming :: 十一.10.2009 :: mac, windows :: No Comments »
下载在线视频网站的flv文件的Python脚本
使用前提: 安装了Python, wget(作为下载工具)
注意: 分析视频文件真实地址使用了 http://www.flvcd.com/的服务
像youku这样对视频文件分块的下载下载的将会是若干个段落,如果你的视频播放器支持只能根据文件名播放下一个文件的话这将不会影响观感。
下载最新的一级One Piece的效果如下
-rw-r--r-- 1 Malic staff 12M Nov 8 13:06 海贼王425_1.flv
-rw-r--r-- 1 Malic staff 12M Nov 8 13:06 海贼王425_2.flv
-rw-r--r-- 1 Malic staff 13M Nov 8 13:06 海贼王425_3.flv
-rw-r--r-- 1 Malic staff 4.8M Nov 8 13:06 海贼王425_4.flv

代码
到学校以后发现因为那个嗅探真实地址的服务在教育网免费范围之外,所以这个脚本暂时还不能满足我的需求。
等忙完这阵子以后,我会将探测真实地址的服务做到gtalkbotplus中, 并提供一个简单的接口,这样教育网就能用了:) 当然,对于tudou的服务,你可能得在下载的时候提供一个和App Engine一样的User Agent, 否则会被认为是盗链。
overboming :: 十一.09.2009 :: python :: No Comments »
From Python to Perl (4)
Notes for Learning Perl Chapter 11 to Chapter 13
- 文件检测操作
表 11-1 文件检测选项及其含义 检测选项 含义 -r 文件或目录对此(有效的)用户(effective user)或组是可读的 -w 文件或目录对此(有效的)用户或组是可写的 -x 文件或目录对此(有效的)用户或组是可执行的 -o 文件或目录由本(有效的)用户所有 -R 文件或目录对此用户(real user)或组是可读的 -W 文件或目录对此用户或组是可写的 -X 文件或目录对此用户或组是可执行的 -O 文件或目录由本用户所有 -e 文件或目录名存在 -z 文件存在,大小为 0(目录恒为 false) -s 文件或目录存在,大小大于 0(值为文件的大小,单位:字节) -f 为普通文本 -d 为目录 -l 为符号链接 -S 为 socket -p 为管道(Entry is a named pipe(a “fifo”)) -b 为 block-special 文件(如挂载磁盘) -c 为 character-special 文件(如 I/O 设备) -u setuid 的文件或目录 -g setgid 的文件或目录 -k File or directory has the sticky bit set -t 文件句柄为 TTY(系统函数 isatty()的返回结果;不能对文件名使用这个测试) -T 文件有些像“文本”文件 -B 文件有些像“二进制”文件 -M 修改的时间(单位:天) -A 访问的时间(单位:天) -C 索引节点修改时间(单位:天)
- 一个使用 -s 的例子
- glob, chdir
- 删除文件采用unlink
- 重命名文件用rename
- 创建和删除目录mkdir
- 修改权限chmod
- 修改所有者chown
- 修改时间戳utime
- 寻找字串位置
- 获得子串
- 自定义排序
overboming :: 十一.07.2009 :: programming, python :: No Comments »

