批量更新MAC OS X的地址簿
MAC OS X比较赞的一点就是,很多信息都是存储在SQLite数据库中的。例如地址簿,出于某些原因,可能我们经常需要批量处理或者导出地址簿。一个简单的方法是用第三方的软件,比如著名的Bentoo。Bentoo 4支持Lion,可以批量将地址簿导出为Excel,处理后再导入,这对熟悉Excel的用户来说是比较便利的。但Bentoo也有短板,现在导入Excel后分组会丢。我现在的需求就很简单,在每个号码前加一个“+”号,用Bentoo固然可以达到目的,但是重新分二十来个组,那是相当头疼的。所以,到了发挥数据库专长的时候啦。
首先,我们要判断好你需要更新的地址簿究竟是在本地,还是iCloud同步的。网上现在能搜到的很多相关帖子都是叫你去找 /Users/ern/Library/Application\ Support/AddressBook/AddressBook-v22.abcddb,实际上在Lion中这是本地的地址簿。如果你和我一样已经开始用iCloud管理,那么正确的地方是/Users/ern/Library/Application\ Support/AddressBook/Sources/下还有一个27F75012-xxxx-xxxx-xxxx-5B1F8CDXXXXX这样的目录,这下面的AddressBook-v22.abcddb才是我们的修改对象。让我们把这个文件拷贝一份出来作为备份。
其次,打开终端,开始操作(注意要选择你自己的文件,别照抄哦)
sqlite3 /Users/ern/Library/Application\ Support/AddressBook/Sources/27F75012-xxxx-xxxx-xxxx-5B1F8CDXXXXX/AddressBook-v22.abcddb
.table –这个语句可以看到地址簿的结构,有哪些表,从表名就可以看到我们的电话号码就在ZABCDPHONENUMBER里
.schema ZABCDPHONENUMBER –这个语句同样没有实际用途,只是显示一下,这个表有哪些字段,我们现在需要的是其中ZFULLNUMBER,这个字段存放了实际的号码
update ZABCDPHONENUMBER set ZFULLNUMBER=”+”||ZFULLNUMBER where ZFULLNUMBER like ‘86%’; –这个语句是对86开头的号码前,加上一个加号。
.quit –退出SQLite
最后打开你的地址簿,在iCloud旁点击一下,应该就会开始自动同步啦。
相应的,也可以用类似的方法修改EMail地址(ZABCDEMAILADDRESS)等。SQL语句感觉和Oracle的语法类似,也比较灵活,各位尝试之前千万做好备份工作,SQLite没有commit一说哦,修改默认直接生效了,出错的话就只能靠Time Machine来恢复啦。
以上在MAC OS X 10.7.2下操作。
扩展Sparse Bundle磁盘映像的大小
两句话搞定:
1.MAC OS X的磁盘工具里有“调整映像大小”的功能,但是无效(诡异的是日志里提示正常),经搜索,似乎从10.6开始就如此(我的环境是10.7.1);
2.下面指令可以按照需要扩展Sparse Bundle映像的大小(下面的例子是10G):
hdiutil resize -size 10g 映像名称.sparsebundle
BTW:研究此问题时发现国外有网友反映Lion下Sparse Bundle映像打开时有卡住的情况,我没遇到,不过也没有解决方案。
为照片添加GPS信息
拍照加上地理信息,让照片告诉你拍摄地点,这个功能由来已久。只要你打开了定位功能,iPhone 4自己拍的照片都会自动记录,还会在Google地图上显示,非常直观。最近走了一下川藏南线,出发前就一直在研究这个功能。我的手机是iPhone,也有个诺基亚的GPS模块,但是相机是Canon 400D,没有办法外接GPS(也根本没有能直接外接的GPS模块)。经过测试,发现其实解决方法还是简单便宜的。看看我的成果吧:
总体思路:外出时记录GPS轨迹,回来处理照片时为“底片”加上GPS信息。