Uses this

2013-02-06 18:45

想必很多人知道usesthis.com这个网站, 不同职业的人在这个网站介绍自己所使用的工具, 包括他/她常用的电子设备以及电脑里常用的软件等等. 我刚开始用Mac时从这儿取得了很多灵感. 这个网站似乎没有中文版, 也没见过类似的国内克隆, 于是我就在这儿写写我常用的东西, 以奏抛砖引玉之效.

iPod Nano 4

我很庆幸能够在iPod Nano 5上市前购买了这款经典的iPod Nano 4. 在这款iPod之后, iPod Nano 5添加了毫无必要且惹人生厌的摄像头功能. 而iPod Nano 5的后续作品的设计思路一直很混乱. 我在这一年来一直希望能够用一个设备来升级这个小的Nano, 但是一直没遇到让我心动的设备.

iPhone 4

手上这台iPhone 4是iPhone 4s发布时顺带发布的低价8G版. 常用的app包括导航类的百度地铁和广州地铁; 游戏是sodoku2; 阅读类的包括虎扑的app, iBooks, 商业阅读, QQ阅读和Kindle; 用苹果自带的相机来摄影, 用Snapseed来修图; 其他常用的工具还有剑桥高阶字典, LastPass和微信. 所有这些app都放在一个屏幕下, 所以显然我的手机的空间是够用的. 事实上, 为了不那么'浪费'这些空间我还放了3G左右的音乐到手机里. 即使按照每首30M的大小来说, 能放下的歌曲也有一百首了, 足够满足我正常的听歌需求.

手机早已是我们生活的一部分, 于我而言, 手机已是精神领域的一部分延伸. 就像有了搜索引擎后, 你会更注重选择需要记住的东西一样. 如果说类似Google这样的搜索引擎能够把你需要的东西带到你眼前, 那么手机(加上3G/4G网络)就真的把这些你需要的东西带到了你身边.

MacBook Pro

如果说iPhone是每天要打交道的设备, 那么正在用来写博客的这台MBP是每天使用时间最长的设备了. 我主要的工作和娱乐都在这台电脑上进行.

先说硬件吧, 这台是2012年中高配的13寸MBP, 2.9GHz i7的CPU, 8G 1600MHz的内存, Intel HD4000的显卡, 750G的硬盘. 原本想拆下光驱换上一块256G左右的SSD硬盘, 不过由于拖延症作祟, 直到现在我都还没去实施这个工程, 也正好等SSD进一步降价了. 之前我把买这台笔记本的缘由写到了一篇博客里, 这儿给出链接, 方便你去跟踪.

先说比较大众化的东西吧. 我用BusiCal来管理自己的日程(仅简单替换系统自带的iCal, 没重度使用), 用Cappuccino来收取RSS, 用Dropbox和自带的iCloud来进行云备份, 用iPhoto来管理自己的照片库, 用iTunes来听歌和管理自己的多媒体文件, 用Parallels Desktop来运行Windows虚拟机以应付一些比较2的需求, 用uTorrent来下BT, 用Mail.app来收发邮件. 这儿所列出的, 除了BusiCal外基本都算是正常人都会接触到的软件.

接下来说工作中的需求们, 我使用iTerm 2来控制自己的电脑. 这个app全面超越了系统自带的终端, 可以推荐给每个Mac下严肃的程序员使用. 我对这个app进行了相应的配置, 不过都不算太深入. 值得一提的是沈工曾在Linux下向我推荐用Alt+Q/Alt+W来进行Konsole中左右标签页的切换, 在iTerm 2中由于快捷键冲突我换到了Alt-A/Alt-S. 另外, 我所做过的iTerm的最深入的一个配置是实现标签页重命名的AppleScript. 我在Konsole下曾有一个脚本来通过dbus编程来切换当前标签页的编码, 可惜在iTerm 2中暂时无法实现这个功能, 作者目前能承诺在iTerm 3中提供实现这个需求的API, 不过谁也说不清那需要多久了.

我对我的bash环境进行了很多配置. 其中比较重要的有下面这几点:

下面是刚才那段阐述的代码说明, 首先是我在~下的软链接们:

[xiaket@rondo:~]ls -al | grep "^l"
lrwxr-xr-x   1 xiaket staff   19 Jul  3  2012 .Apache -> .xiaket/share/sites
lrwxr-xr-x   1 xiaket staff   36 Dec 25 10:52 .Blog -> .xiaket/share/Dropbox/mercurial/blog
lrwxr-xr-x   1 xiaket staff   31 Dec 25 10:59 .Hg -> .xiaket/share/Dropbox/mercurial
lrwxr-xr-x   1 xiaket staff   24 Jun 18  2012 .List -> .xiaket/share/serverlist
lrwxr-xr-x   1 xiaket staff   19 Jun 19  2012 .Repos -> .xiaket/share/repos
lrwxr-xr-x   1 xiaket staff   18 Jun 18  2012 .bashrc -> .xiaket/etc/bashrc
lrwxr-xr-x   1 xiaket staff   16 Jun 18  2012 .hgrc -> .xiaket/etc/hgrc
lrwxr-xr-x   1 xiaket staff   34 Jul 30  2012 .pylintrc -> /Users/xiaket/.xiaket/etc/pylintrc
lrwxr-xr-x   1 xiaket staff   17 Jun 18  2012 .ssh -> .xiaket/share/ssh
lrwxr-xr-x   1 xiaket staff   28 Dec 29 14:30 .supervisord.conf -> .xiaket/etc/supervisord.conf
lrwxr-xr-x   1 xiaket staff   31 Dec 25 11:31 .vim -> /Users/xiaket/.xiaket/share/vim
lrwxr-xr-x   1 xiaket staff   17 Jun 18  2012 .vimrc -> .xiaket/etc/vimrc
lrwxr-xr-x   1 xiaket staff   25 Sep  3 17:42 django -> .xiaket/python/django_140

我自定义的DIR_COLORS

# excerpt from dir_colors file
# fav scripts are highlighted:
.py 00;35
.pyc 01;30
.sh 00;33
.htm 00;35
.html 00;35
.xml 00;35
.tex 00;35
.doc 00;32
.ppt 00;32
.xls 00;32
.css 00;31
.js 00;36

我的几个bash_alias

alias reweb='clear && sudo /usr/sbin/httpd -k restart && date'
alias randport='python -c "import random; print random.randint(1025, 65535)"'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias clera='clear'
alias mkae='make'
alias ls='myls'

一个脚本的例子, 为了不让我在~下执行ls时看到太多不相干的东西, 我写了这段简单的逻辑:

[xiaket@rondo:~/.xiaket/bin]cat myls
#!/bin/sh
# Hide certain directories in my home.

cwd=`pwd`

if [ "$cwd" = "/Users/xiaket" ]
then
    gls $LS_OPTIONS -h --hide="Applications*" --hide="Books" --hide="Desktop" --hide="Library" --hide="Music" --hide="Movies" --hide="Pictures" --hide="Public" --hide="Documents" $*
else
    gls $LS_OPTIONS -h $*
fi

最后是一个用来管理Django项目的Makefile:

[xiaket@rondo:~/.Hg/Hudson]cat Makefile
# Makefile for easy project management.
# @ was used to suppress repeating of raw command.

redb:
    @rm Hudson.sqlite3
    @python manage.py syncdb --noinput && python manage.py importdata data.json

shell:
    @python manage.py shell

clean:
    @touch empty.pyc && find . -type f -name "*.pyc" -print | xargs rm

接下来说多媒体文件. 我的图片文件更新大都来自自己用iPhone和RX100的拍摄, 我用iPhoto来收集和管理这些图片, 用Adobe Lightroom 4.2来对图片进行修饰. 由于LightRoom太过昂贵, 于是我必须很羞愧地承认这儿的LightRoom使用了盗版. 由于RX100还能拍摄视频, 所以我还使用MTS Converter来处理视频文件, 另外ffmpeg显然也是不可缺少的一个强大工具.

前面说了, 我用iTunes来管理我的音频文件们. 我一般通过utorrent等方式来在网上下载(显然是盗版)无损音乐. 然后用XLD来实现由wav/flac/ape等格式到苹果的无损格式的转变, 用Tagger这个app来批量改变文件的tag. 如果下载到的文件里没有专辑封面而XLD由没能自动抓到, 我通过Google搜索来找合适的封面图片, 这使得我的媒体库里绝大部分文件都是有专辑封面的. 如果你和我一样有收集整理癖, 那么你会和我一样, 在打开iTunes有种满足感.

我个人比较热衷于收集有声书, 网上能下载到的(盗版)有声书往往是mp3格式的, 被分割成了多个小文件. 我用mp3wrap这个Linux命令来把它合并成少数几个mp3文件, 再用ffmpeg或iTunes将其转换成m4b文件, 熟悉有声书的同学应该不需要我详细介绍这个文件是啥了.

用iTunes来管理音乐有个潜在的好处在于它具有的智能列表的功能. 这还多亏@aaronike向我推荐这个功能. 现在我习惯对喜欢的歌曲进行评分, 并根据评分来创建这种列表, 让我实现类似"我最喜欢的Ludovico Einaudi的那几首歌", "我平常很少听的那些不是最喜欢但听上去还不错的歌"的功能.

最后说下小工具们:

Sony RX100

这台相机是我去年年底的采购. 一方面是为了年后去柬埔寨时能够留点好看的影像, 另一方面也是因为身边缺少一个这样的设备来严肃地记录所见所闻. 毕竟, 在这个图片为王的时代, 谨守着文字传统实在是有些螳臂当车. A picture paints a thousand words, so use a camera to save your word.

挺喜欢这台机器的, 真的可以放在裤袋里而看不出来, 需要时能够拿出来拍照而且又足够强大.