Is Blogging Fun?

最近写博客的次数极大的减少,心中也有很多遗憾。

多数情况下,感觉随着年龄的增长,少了倾诉的欲望。少有几次有了感觉,甚至在心里打好了腹稿,但没有多少时间去写,好不容易想写了,又感觉没有了过去那种行云流水说写就写的感觉。除了不像过去那样有强烈的动力外,从客观上我没有找到 Windows 平台下的写作软件也有关系。

在 Mac 平台下,我用过几个专门写博客或者专门用来写作的软件。最早我尝试过 MarsEdit,用它写过不少。它最大的问题是对 WordPress 的 slug 功能支持不好,中文标题在 WordPress 里会被忽略,因此对几乎每一篇文章,我都要手动输入一个 slug。之前没有这个功能,后来有了,我也换了工具。之后我主要用 Ulysses 来写博客,它支持 Marddown,满足了我简易排版的需求。另外它对文章优秀的组织功能是我非常喜欢的。写博客不是它的全部功能,我用它也写过一些文章,有了发布功能,写博客不要太简单。

后来我因为对 Office 办公套件的需求,买了一台 Windows 笔记本,就把 MacBook Pro 给卖了。现在其实有点想念,卖它时它的质量还很棒,现在的 MacBook Pro,有了我还没有适应的 TouchBar 和蝶式键盘,让我有些望而却步。

Windows 笔记本在办公方面给了我很大的帮助,但对于工作以外其他的东西支持的并不是很完美。一个能用的 UNIX 环境,勉强配置的能用了,但写博客的软件我一直没找到。最接近的一个是 Typora,界面很美观,虽然没有发布的功能,但编辑完毕后复制到后台发布也可以。但相对于 Ulysses,Typora 缺少了文章管理功能,我的文章只能放在一个文件夹中。Ulysses 有 iPad 和 iPhone 客户端,我可以随地的编辑一篇文章,在 Typora 里就没法实现了。目前一切都在磨合之中。

现在我还没丢掉阅读 RSS 的习惯。Mac 和 iOS 系统上有 Reeder,安卓系统上没有很完美的,我目前一直在用 Inoreader 客户端,如果连这个也没了,不知道我还怎么用它。过去我喜欢读的一些作者都不再写了,让我觉得遗憾。有些转移到了微信写公众号,我一直都不适应。现在写的最多的是一些媒体,有了能盈利的模式,写起来的速度是嗖嗖的,特别有一家叫好奇心日报,老是被我骂“又臭又长”。过来的 Daring Fireball 还很高产,让我挺羡慕的。不羡慕他以此为职业,而是它的产量。

我不是媒体,不以写博客为职业,近两年来发布的文章数目渐渐到了个位,让我也比较苦恼。之前我不大愿意用 Day One 这样的日记软件,因为我觉得有些功能和博客比重复了。事实上,当我习惯了用 Day One 后,博客的发表数量便大大减少了。Day One 里的内容可以算是博客的超集,博客里不方便公开发表的,在 Day One 里写完全没关系。久而久之,我想不如干脆就在 Day One 里写吧。

当初为什么要写博客,我想有一部分原因是有趣。现在博客还有趣吗?我相信是有的。不过毕竟已经成家立业,不能由着自己的兴趣来做事情了。

试用了 Transmit

过去经常听 Mac 用户对为苹果系统开发的软件津津乐道,说是 Mac 下有太多的优秀软件,在质量上超出其它系统多少云云。其中我知道的最夸张的一条是:“很多程序员为了用 TextMate 而买了 Mac”。可惜的是,我到如今还没有完全适应这种说法。

我在 Mac 下也不是没有买过软件,有没有一款让我非常喜爱,经常使用的?现在仔细想想,应该也只有我现在正在使用的 MarsEdit ,和一直常驻系统的 LaunchBar 了吧。

MarsEdit 是一款毋庸置疑的好软件。我在用过它之后,便只用它来写 blog 了,毕竟浏览器里面编辑距离真正使用还有一段差距,而且还有可能会遇到各种可能性,一不小心之前敲的文字就付之东流,实在是让人恼火,而在本地的一款专门的编辑器中就让人放心多了。

LaunchBar 是在 QuickSilver 不再维护了之后开始用的。相对于 QuickSilver 来说,我更喜欢 LaunchBar 的界面,简洁明快。其它的类似软件我听说过 Alfred,我开始接触的时候属于开发的早期,有些功能还没有实现,那时候 LaunchBar 就已经相当成熟了。Google Quick Search Box 也出现过一阵子,现在应该还可以下载到,不过它还有没有人在维护,我持怀疑态度。

对了,还忘了 Transmission,虽然我不经常用,导致刚才把它给忘了,不过有时还真是缺不了这类软件。

Mac 下的软件有一些知名的,不过它们的价格比较吓人。尽管我已经接受了一部分,但有些我还是没有接受。比如 Coda,一款适合做网站的人用的编辑器,要价 99 美元,可能是我没有详细了解过它的原因,我不觉得一个编辑器值这个价。还有我最近听说的 PyCharm,一款适合做 Python 项目的编辑器,对我来说,无论它多么优秀,我也不会花 99 美元去买一份个人的许可。说到编辑器,我刚买 MacBook 的时候苦于对 Mac 系统不了解,不知道有好的程序编辑器,又有急用,于是就买了 TextMate(好在有学生折扣),结果用了几个月后,当我知道了怎么在 Mac 上跑 Emacs 后我就没用过它了。很多人都说它优秀,也许是我从来没有进入过状态吧。

前几天想把我的站点上的图片处理一下,因为转换了 blog 系统,两个系统的一些文件的存放位置不同导致了过去的图片都不能访问了,我于是有空就修改一下,昨天看到有问题的图片剩下的不多了,于是就准备一下子把它弄好。

我最常用的 ftp 客户端是 lftp,不过有的时候像处理很多零散的图片文件的话,我的机器上存了一份 CyberDuck。CyberDuck 是一款开源的跨平台图形化 ftp 客户端,除了 ftp 协议外,它还支持访问 Amazon 等公司提供的云存储服务。过去我遇到类似的情况下会用 CyberDuck,不过这次我突然想到我过去还没有用过 Transmit,这款被 Mac 用户广为称赞的商业 ftp 客户端。免费的试用版 Transmit 可以使用 7 天(不是过去常见的 30 天试用,小气 :)),正好我这次也看看这款著名软件究竟有什么好的。

结果其实是让我比较失望的。也许我的用法没有用到 Transmit 精通的地方,所以我感觉 Transmit 跟 CyberDuck 这样不要钱的软件没什么区别。

Transmit 的使用证书是 34 美元,我觉得对于一款 ftp 软件来说,有些贵了。如果没有其它选择,这个价格不是不能接受,可惜在有免费的软件的情况下,这个价格是不会考虑的。

越来越多的软件要求 Mac OS X 10.7+ 了

今天 Emacs 出了一点问题,很诡异,提示我找不到 org-strip-protective-commas 函数,产生了错误。我用 ack 来搜索我的 .emacs.d 目录,怎么也找不到什么地方调用了这个函数。我只不过通过 ELPA 安装了一个 RVM 包,然后重启了一下,就出现了这个问题。虽然说不是不能用,但是因为没有运行完我的设置代码,所以很多东西都没有,包括 Meta 键的映射,所以估计不会有人喜欢在这里面写程序。

而我正要用它来写程序,既然不能用,我就启动电脑上装着的备用的编辑器——TextMate。因为我平时使用 Emacs,所以我保留了一份 TextMate 2。结果没想到 TextMate 也没法启动。运行了之后出来一个图标在 Dock 上跳动个不停,然后 Activity Monitor 里显示 not responding。我以为是出了什么问题,于是就去网站上重新下载。TextMate 2 开源了,因此代码放在 Github 上。我进去一看,说明部分的开头就写了“a text editor for OS X 10.7+”,这简直让我眼前一黑,因为我的系统还是 10.6.8 Snow Leopard。我下载了预先编译好的版本,果然在我的机器上不能使用。

这些操作系统都有这样的升级不兼容的问题。本来我觉得 Mac OS X 会没有这类问题,结果还是出现了。更讨厌的是,10.7 版本的 Mac OS X 不支持我现在的硬件了,我这台 2008 年 4 月 1 日买的 MacBook 用到 Snow Leopard 就到头了。出了操作系统外,App Store 上的 XCode 4 也是这样,没有 10.7 就没法安装,我现在也只能运行系统自带的 XCode 3,虽然 gcc 编译器的版本已经到了 4.2。

虽然说升级换代是天经地义的,但遇到了这样的情况,都是挺让人郁闷的。免费软件倒也罢了,但对于收费的软件,我觉得作者应该尽量的让软件向下兼容。比如说 Ecoute,一款轻量的音乐播放软件,我从 App Store 上付费买了它,结果某一个版本开始就要求 10.7 以上的操作系统了。所以从那时我一直没有升级,平时也尽量不再用它,毕竟它已经是一个不再被支持的软件了。一个音乐播放软件,有什么功能是只有 10.7 版本的操作系统才能提供的啊?我不觉得是这样子的。我想很可能是软件的作者想给软件添加一些 10.7 才有的特色功能,比如全屏之类的,而维护功能不同的两个版本又太麻烦了,反正很多人都升级到了新版的系统(单纯升级 Mac OS X 费用是 20 美元,对美国人来说并不贵),于是就单纯的支持了新版本的操作系统。

刚才看了一下 Ecoute 作者的博客,发现去年作者把 Ecoute 免费了

对于 TextMate 的操作系统限制,我还是可以理解的。和音乐播放器不同的是,文字编辑器需要一些系统提供的函数,如果限制操作系统,也是没办法的事情。而且现在 TextMate 2 已经是开源软件了,如果没有还在坚持用旧操作系统的贡献者,那对旧系统的支持自然就不好了。虽然我在很久之前就买了 TextMate 的注册码,甚至还在买这台 MacBook 之前,但自从 TextMate 不再是商业软件,作者的支持也就不再有了。

好在目前我遇到的这些需要新操作系统的软件都不是我必须要使用的,它们都有替代品,所以我还可以继续用这台电脑。在我最终对硬件进行升级换代之前,我都是希望更多的软件可以做到向下兼容。

BusySync 无用了

3 月 7 日收到一封来自 BusyMac 的邮件,是一封要我继续购买它们的软件的广告。因为我过去买了 BusySync,因此我在买最新的版本时会有折扣云云。虽然我对这个一点兴趣都没有,但它却让我回忆起了五年前的日子。

我搜索了一下过去的邮箱,发现我是 2008 年 9 月 5 日购买的 BusySync,现在还能找到当时的收据。

购买 BusySync 时的收据。
购买 BusySync 时的收据。

当时我买了这台 MacBook 已经五个月了,中间因为看了一些 GTD 之类的东西,还有 Apple 的 Leopard 宣传视频,我开始用 iCal 来管理我每天的行程,并用 iSync 跟我的手机同步。后来需要让 iCal 和 Google Calendar 可以同步,我找不到免费的方法,或者能找到的都是非常复杂的办法,所以我买了 BusySync。

我用到的其实只是 BusySync 的一部分功能,也就是和 Google 同步的功能。在设置里面添加我的 Google 帐号,选择要同步哪个日历就行了,非常方便。

后来 BusyMac 又推出了 BusyCal,是把 BusySync 和 iCal 合并了的软件,作用其实不大。我作为 BusySync 的注册用户,可以享受 10 美元购买的优惠(原价 40),我也没有兴趣。

在我买了 BusySync 几个月后,Google 推出了 calaboration,是开源软件,作用就是双向同步本地的 iCal 和远程的 Google Calendar,这让我有点后悔买了 BusySync。

再后来,Google 也不再支持 calaboration 了,因为 iCal 里可以添加 Google 帐号了。不需要第三方软件,iCal 自己就可以跟 Google Calendar 同步了,毕竟平台开放是互联网的一大趋势啊。这下 BusySync 就彻底的没有了用武之地。

现在 BusyCal 发布了 2.0 版,告诉我在三月底之前购买会有 40% 的折扣,实际上有谁会关心它呢?这类软件,我想应该是没有市场了吧。

我现在没有了使用 Calendar 软件的兴趣,无论是 iCal 还是 Google Calendar 都是如此。Google Calendar 还好,因为它跟我的 Android 同步,所以我有少数需要记录的事件的话,会在上面记一笔,而 iCal 就彻底的没有启动过了。它的图标还在我的 Dock 中,不过作用是用来扫一眼看看今天是多少号而已。日程软件只有在日程很多的时候才有使用的价值,现在的我还没有到达这个境界。

Emacs 24.3 全屏和奇怪的 NEWS

Emacs 24.3 比 Emacs 24.2 好了多少?其实我说不清。Emacs 主要是在 Linux 环境下开发的,到了 Mac 平台能增色多少功能,其实很少。但从源代码编译安装习惯了之后,我常常看到有了新版本就忍不住要更新,这其实是一个不好的习惯,可惜改起来挺困难啊。

当然用新版本的软件并不总是愉快的,因为你经常会遇到没有被修改的问题。比如我前几天安装了当时代码库中最新的代码,发现平时好好的 CJK 支持居然没了,中文都成了小方框,最后只好用回了稳定版本。再就是 Emacs24 Starter Kit 如果在最新代码的 Emacs 中,会因为不能自动载入 org 所以找不到 org-babel-load-file,导致整个的配置都失效了(因为所有的配置都是用 Org-Babel 实现的文学化编程)。

Emacs 24.3 对 Mac OS X 的全屏模式有了改进。过去没有实现这个功能,我们安装的时候是使用了 typester 的全屏补丁,所以有了 ns-toggle-fullscreen 函数。我这些年一直是这么用的,Homebrew 里也集成了这个补丁,安装的时候会自动打上这个补丁。后来有消息说 24.3 开始集成了原生的 Mac 平台下的全屏功能。我看了之后,就想试一试。

等安装完了之后,我发现全屏功能失效了。不仅如此,过去 typester 的全屏补丁也很源代码冲突了。所以我只好用回了 24.2。Mac 的全屏我到现在还没有弄清楚到底是哪一种全屏。因为很多文件中都提到 Emacs 支持了 Mountain Lion 的全屏,而 Mountain Lion 本身弄了一个全屏,也就是窗口右上角多了一个按钮,点一下就进入了全屏模式。而 24.3 如果用的是这种全屏,那我在 Snow Leopard 下是不是就没法用了呢?还是 Emacs 24.3 实际上支持的是过去那种给我门提供 ns-toggle-fullscreen 函数的那种全屏模式呢?

我因为这次失败,所以看了一下 etc/NEWS 文件里的描述。发现在它的 Changes in Emacs 24.4 on Non-Free Operating Systems 一节里提到了这么一段:

** Improved fullscreen support on Mac OS X.
Both native (>= OSX 10.7) and “old style” fullscreen are supported. Customize `ns-use-native-fullscreen’ to change style. For >= 10.7 native is the default.

也就是说,在 24.4 中,Mountain Lion 的那种全屏和过去我们用的这种全屏都支持了。这是一个好消息。

然后我开始寻找 24.4,发现代码中最新的还只是 24.3,难道 24.4 还没有开始实现?或者说这个 NEWS 文件实际上记录的是 TODO 的内容?这让我很困惑了。

不过,至少它给了我一个希望,到了 24.4,我们就有 Mac 下比较完美的全屏了。

我不大喜欢 OS X Mountain Lion

前天我打开 Apple 的网页的时候,看到了页面右下角有下一代操作系统 Mountain Lion 的介绍。后来从网上一查,发现这个介绍已经发布了有一阵了,我现在打开 RSS 阅读器的次数少了,看来有点跟不上时代了。

我看了一下这个介绍页面,越往下看,觉得越没有升级的兴趣了。等到看完了,我开始思考原因,发现 Apple 对于操作系统走在了一个与其它开发者非常不同的道路,在我的意料之外,但确是情理之中。

从当前的 Lion 开始,一直到将要发布的 Mountain Lion,Apple 走的大方向是把 iPhone/iPad 平台的产品与经验放在 Mac 平台上。我不喜欢。

我的理解是,当 Apple 开发完毕了自己的 Mac OS 操作系统之后,computer 这个外来词语大概就可以翻译成“电器”了,而不再是我们今天说的“电脑”了。“电器”和“电脑”的区别就在于“器”与“脑”,“器”是“器具”,是工具;而“脑”显然比工具更灵活。作为一个计算机爱好者,计算机系的学生,我当然喜欢“电脑”甚于“电器”。当然,喜欢钻研一个产品的人们不喜欢被束缚住。喜欢钻研移动平台的人肯定愿意给 iPhone 越狱,因为这样他们可以更自由的做更多的事。

虽然我喜欢自由的操纵电脑,但可惜从“电脑”到“电器”演化,是电脑普及的必然趋势。比尔盖茨当年的豪言“让每一台桌子上都摆上 PC 机”,要做的就是把电脑“电器化”。好比一台电视机,在今天的中国,一个老太太都会操作,找到自己喜欢的节目来看;但让一个老太太来操作电脑,绝大多数学习起来肯定有困难。为什么?因为电脑比电视复杂的多。比尔盖茨要推广电脑,要做的就是让电脑操作起来更容易,因此 Windows 的出现,用图形界面来大大简化了电脑的操作,为电脑的普及立下了盖世之功。

电脑在今天还没有完成电器化,但电话方面却是已经完成了。早期的黑客可以用某种特殊的口哨,对着话筒吹出特殊频率的声波,然后可以免费的打电话。电影《地心末日》中有这么一个情节,黑客“老鼠先生”抢过了男主角的手机,用口香糖纸包着嚼黏的口香糖,做成一个小哨子,在男主角的手机上拨几个号码,对着麦克风吹一声,男主角的手机就可以免费的拨打全球的电话了。这当然是电影的情节,今天没有任何一家电信公司的手机可以做到这个,因为这些当年的漏洞早就已经被封锁了。电话已经成为了走进千家万户的家用电器,而不再是打电话比发传真还贵的奢侈品。

手机平台上的系统也是如此。Symbian v3 系统上安装第三方软件很麻烦,我记得当时还要下载个软件自己给手机软件加认证才可以安装,这种封锁就是把智能手机电器化的手段。结果诺基亚没有 Apple 那样的设计意识,生生的把这个模式做的保守诟病。iOS 虽然是从电脑上的操作系统移植过来的,但用更好的方式封锁了很多用户活动,原因就是让智能手机更简单。当你只能在 app store 里安装程序时,自然不需要考虑第三方软件的安装位置、是否安全、是否太过耗电等问题,因为 app store 的审核流程都帮你筛选过一遍了。

自然,不是所有人都喜欢这样,所以有了越狱。而且电器化确实牺牲了很多自由,这是必然的。自由操作这种东西当然需要有一定的知识与时间、耐心才能驾驭的了,就好比 Windows 用户玩不来 Linux 一样。我身边有同学买了 iPhone 之后到处找人帮忙给越狱,这样其实是相当危险与麻烦的,手机容易出问题,出了问题就只能再找好人去修。既要便利,又要自由,哪有那么多的好事?

再说会桌面计算机领域。继微软之后,Apple 开始把电脑的电器化更加推进了一步。因为 Apple 比微软有优势,就是它比微软多了硬件业务。其实从根本上来说,Mac OS 就是 Apple 买硬件的附带产品。Apple 因此也不需要考虑操作系统的兼容性等问题,只要把操作系统做的更简单就好了。怎么让操作更简单?电器化!因此,在 Mountain Lion 中,我们已经可以看出这种趋势来了。很多 iOS 上的软件都被移植到了 Mac 上,为的就是简化操作。

手机上这么做我不反对,反而赞成,因为我觉得手机是日常的电器,我对 hack 手机也没有什么兴趣,所以我对手机的要求就是便利、安全,因此如果我手中有了 iPhone 之后我应该不会去越狱,而是老老实实的在 app store 下载免费的或购买我承担的起的软件。但在桌面电脑上这么搞,我就有些抗拒了。有了键盘,我就想着可以更加自由的操纵电脑。现在我用的 Snow Leopard 我就已经能感觉到限制了,在操作系统方面我到今天仍然很怀念我过去用的 Gentoo。Mountain Lion 的这些新特性,很显然把电脑的自由度给剥夺了一部分。虽然对普通用户这样更方便,也更安全,但作为玩家的我来说,这样少了更多的乐趣。

而且,Apple 的操作系统发展到现在,其实仍然还在往电脑电器化的方向摸索。Mountain Lion 还没有到只靠这些就可以完成大部分工作的地步,所以很多东西都似是而非,要做到 Apple 演示的那样便利,必须所有软件都用 Apple 的,中间换一个软件就好比锁链少了一个扣,就完不成了。除非 Apple 能保证 Mac 上只运行他们自家的软件。

另外,不知道是不是因为这几年 Apple 的口碑太好了,我看到 Apple 这么一步一步的发展操作系统,就不免考虑到 Mac 到最后会不会发展成一个完完全全封闭的操作系统,所有软件都只能从 app store 购买,第三方软件都不准安装,甚至在电脑上必须要越狱才能安装第三方软件。Richard Stallman 写过一篇文章,名为《The Right To Read》,里面构想了一种所有版权产品都必须要通过跟电脑认证才能合法使用,违反者会受到残酷的惩罚。当时我觉得 Richard 肯定会影射微软,但现在看看也许 Apple 更有机会做到这么一步。:)

今天早上我看到了一篇文章,是一篇对 Linus Torvalds 的采访,里面提到了 Linus 买了一台 11′ 的 MacBook Air。Linus 喜欢这台 MBA 因为它的硬件设计的非常好,其它的厂商都没有做到这种地步。我也是持相同的观点。在我看来,Apple 的电脑让人欲罢不能的不是所谓的华丽的界面,而是它那几乎完美的硬件设计。我很难想象我这台 MacBook 报废了之后我要用到一台 DELL 那种丑陋的笔记本,而我也非常愿意在我的 MacBook 上跑 Gentoo。我在 2008 年暑假的时候尝试过安装 Gentoo,但 MacBook 的特殊键盘和触摸板让我配置起来很麻烦,最后放弃了。

这篇文章种相关的部分没有提到 Linus 在这台 MBA 上运行什么软件,会不会也是 Mac OS X?我猜测的是不会,但不能确定。后来我找到了另一篇文章,里面有一张图片,虽然不是很大,但可以看到那台 MBA 运行的桌面不是 Mac OS X,倒是很像 KDE,这个我就不能确定了。

最后,介绍 Mountain Lion 的文章的最后一部分,“All-new features for China”很有意思,新的操作系统对于中国的一些山寨产品,包括新浪微博、QQ 等专门进行了支持,看来中国的 Mac 用户数量也足以让 Apple 做出一些相关决策了啊。

OS X 10.6 的 AppleScript 中文 bug

前几天一个偶然的机会我发现了 Shawn Blanc 的 blog。这个 blog 包含了一些时尚科技的评论,更新速度比较高。作者 Shawn Blanc 目前是专职维护这个 blog,blog 本身有收费会员订阅的项目,每月花 3 美元就可以阅读一些更多的内容。但免费的内容已经非常丰富了,作者有这个底气征收付款,在中文 blog 圈子中应该是比较难以想象的吧。

我从这个 blog 中看到一篇 MarsEdit 的评论,因为我自己也在用 MarsEdit,它是我的计算机上的几个花钱购买的商业软件之一,于是我就花了点之间仔细看了一下作者的评论,从中知道了我之前一直以为不存在的字数统计功能,竟然在脚本菜单下面。我知道自己还不是一个比较资深的 Mac 用户,比如像 mac script menu 这样的菜单我从来没有点过。这次知道在 MarsEdit 这个菜单下面,就有对文章的统计功能。于是我点了统计功能后,MarsEdit 的 CPU 占用率马上飙倒了 99%。最后只能把这个进程给杀掉。杀死进程后 MarsEdit 有崩溃报告功能,我就顺便把这个 bug 给报告了。

Apple 本身也有这种功能,不过可能用户量太大,Apple 应该只把它当作一个记录统计的作用。而 MarsEdit 的开发公司 Red Sweater 这种规模不大的公司,收到这种报告的次数可能不多吧,反正我第二天就收到了 Red Sweater 的回信,请我帮助他们 debug。我把造成问题的那篇文章发送了过去,因为我的文章是中文的,我以为 MarsEdit 可能对多语言支持的不够完善,就提了一句是不是 Unicode 方面的问题。

之后对方发来邮件,包含了一个另一个版本的字数统计脚本的附件,让我用这个脚本来试试。我试了一下,仍然有问题。脚本是用 AppleScript 写的,我从来没有学过这门语言,但据说它非常简单,脚本本身也不长,我看了几眼就大体上知道是怎么回事了。稍微研究一下,我想找出来是我的文章的哪个部分让这个程序的哪一行卡住了。于是排除了一下,发现造成问题的原因比较古怪,也不是所有中文都通不过,我发现的一种情况是只有字符串中包含一个汉字,跟上一个空格,再加上一个数字的时候,words of inputString 就会卡住。inputString 就是输入的字符串,脚本中用了 number of words of inputString 来获得字符串中包含的字符或汉字。我的那篇文章中正好有这种情况。实际上,我从几年前写文章就习惯再汉字跟数字及英文字母之间加上空格,这样更清晰一些,所以我的 blog 中一定会出现很多这种情况,我的大部分的文章都没办法用这种办法来统计字数。

我把我的发现发给了 Red Sweater,对方回信告诉我说这个问题在 OS X Lion 中不存在,因此似乎是 Mac 系统本身的问题。出问题的代码仅仅是调用了系统给的函数,因此也不好解决。对方说他们会想别的办法来获得字数统计功能。

另外,我还询问了对方能不能加上一个实时的字数统计功能,在编辑窗口中显示。结果对方告诉我目前 MarsEdit 已经有这个功能了,在状态栏里有显示。只是默认情况下状态栏是隐藏的,但对方担心他们做的统计功能可能不适合中文,因此他们也询问了我对于中文字数统计的要求。我看了对方的说法,他们或许是因为英文统计的是单词而不是字母的关系,所以考虑做中文分词,统计文章中出现的中文词组。我一看这可差老鼻子远了,中文分词本身就发展的不怎么样,还让老外来做这个,猴年马月才能弄出来啊,更何况中国人看字数统计也不管里面用了多少词组啊。所以我赶紧发邮件说别搞这个了,我们关心的仅仅是字数。

之后,不知道什么时候可以解决这个 bug。老外对于中国语言,大概从文化上就和西方语言有差异吧,我用过一些编辑器,里面也有字数统计的功能,但对中文来说都是没法用,因为它们全部是针对英文的单词设计的,字符之前没有空格就认为是一个单词,比如说这篇文章写到这里,MarsEdit 告诉我一共有 173 个 words,这就差的相当远了。不知道是不是所有写软件的老外都有类似的误会,考虑做什么分词,要能统一的给他们纠正过来就好了。

TextMate 2.0 出来了

Textmate2 icon这个月初,我偶然去了 TextMate 的官方 blog,看到了 TextMate 2.0 要在圣诞节前推出测试版的消息。昨天我又看了一下它的 blog,看到 2.0 Alpha 几天前就已经放出来了。我马上下载下来试了一下,发现中文字体可以正常显示了,之后就把它束之高阁了,因为我发现我没有学会用它。

在 2008 年年初的时候,我当时的室友买了一台 MacBook 玩。之后我的那台 DELL 笔记本显卡坏掉了,我室友就把 MacBook 借给我用。那时快到了要交作业的时候了,我发现那台 Mac 没有一个代码编辑器。在那之前我没有接触过 Mac 系统,因此对它的常用软件一点都不了解。那阵子正好 Rails 流行,带着 Mac 下的 TextMate 编辑器火起来了。我于是就下载了它来用。TextMate 里有很多 bundles 被人们津津乐道,不过对于我当时写的 Java 程序帮助不大,我也没有花功夫去学那些 bundles 的用法。除了这个,TextMate 真的是一个比较朴实的编辑器,没有花哨的工具条,很多功能都弄到快捷键上了,剩下的就是它的一些配色很好看。我忘了我第一次用它来写 Java 作业的时候是什么感觉了,似乎是发现在里面可以用 Emacs 的快捷键来移动光标,让我稍微兴奋了一下,后来我发现很多 Mac 程序都这样。其它的感觉,我现在真的记不清了。

TextMate 是商业软件,使用版本只给用 30 天。30 天之后我买了一个 license,有学生折扣,然后 TextMate 陪了我挺长时间。除了我的编程课的作业,我之后写作课的论文我也是用它来编辑的 TeX 文件,TextMate 都很好的完成了任务。

2.0 之前的 TextMate 不支持双字节字符,像是中文之类的要占用两个格子的文字,TextMate 只给它分配一个格子,这样导致 TextMate 根本没法编辑中文。有人弄出了一个凑合的方法,弄一个字体文件把中文弄窄,这样中文就不会重叠了,不过实在是太难看了,我受不了。为了有一个可以编辑中文的编辑器,我开始时用 TextEdit 凑合一下,后来我对于 Mac 的软件了解的多了,也开始在机器里放一个 MacVim 来备用。

Emacs icon后来我知道了有 Carbon Emacs 这个软件包,里面集成了很多功能,不用配置就可以很好的显示中文,是当时在 Mac 上跑的最好的 Emacs 了(其它的比如 Aquamacs 都有各种各样的问题)。我用了一阵子 Carbon Emacs,马上就投降了,把它设定为我的主要的编辑器。我恢复了我之前用 Linux 的习惯:写程序或文档的时候用 Emacs,打开文档的时候用 Vim。至于 TextMate,已经没有用了,只是可惜了我买的那个 License。

我发现 Carbon Emacs 的版本只到 22,查了一下资料发现 Emacs 23 版本后就不支持 Carbon 了,改为了 Cocoa。官方就可以在 Mac 下编译和正常使用。为了使用一些新功能,我从那时候就开始自己编译 Emacs 24 用。尽管有全屏等问题,到后来也已经一一解决了,我现在使用的很舒服。

也许是因为有了 Emacs,我没有下功夫去学习 TextMate 的用法,因此到现在我只能像普通的编辑器一样来用 TextMate。关键是我太习惯 Emacs 的快捷键了,尽管 Mac 程序支持一部分快捷键(比如 C-npfb),但支持的不全,我就不大习惯,比如我想删除光标后面的一个单词,按 option-d 后却输入了一个怪字符,这让我十分不爽。

TextMate 2.0 出来后我下载了一份,替换了原先的 1.5。我原先的 License 还可以用,这让我比较欣慰。但也只有如此了,我是不可能用它来替换 Emacs 的,不过我倒是准备用它来替换 Vim 的位置。查了一下我之前的 blog 文章,我发现我在 2009 年 4 月份还在期待 TextMate 2.0,之后估计我就放弃了。也许 2.0 版本早出来一点,或者早一点支持国际语言,我就会一直使用 TextMate?

Emacs 我现在是离不开了,除了日常要写一些东西外,我还用它来收发电子邮件。Mails.app 在邮件多了之后实在是太慢了,我已经放弃了它。Emacs 的 Gnus 就好多了,虽然不是图形界面,但电子邮件能有多复杂的功能?最多我在 Wiki 的 Emacs 笔记里记录了保存和添加附件的命令来备忘。

更换终端程序

在买了 MacBook 之后,我的终端程序一直用的是系统自带的 Terminal.app。总体感觉来说还不错,虽然默认的配置看起来丑了些,但把风格切换成 Pro 的,字体弄成平滑的,用起来也算舒心了。

其实丑不丑倒是没关系,这方面我不是很挑剔,但最让我不习惯的是无法使用 Bash 中的快捷键。比方说,向左移动一个单词,过去我在 Linux 下可以按 Alt+b 来完成,这在命令行中特别有用。有时要调整某个参数,没有这个快捷键,用方向键或 Ctrl+b 来一个字符一个字符来移动的,就特别麻烦。我观察了一阵子,发现最主要的问题在于 Terminal.app 是个 Mac 程序,因此很多系统快捷键都需要用 command 键来调用。而 command 左边的 alt 键,则是用于输入一些特殊的符号,比如 ∫(是数学里的积分符号,我不知道能不能正常显式)。所以我在习惯之前一直非常苦恼。

对我来说,终端程序基本上是日常必备的软件。每次重启之后我要首先打开的几个程序中,就有终端程序。很多人觉得命令行难,但是一旦习惯了 UNIX shell 的那种工作方式,就感觉一直离不开了,因为有些程序实在是太赞了。所以我就很怀念过去我自己配置的 fvwm 桌面,我把 Alt+F1 快捷键绑定到“打开一个 urxvt 窗口”。我在启动脚本里面加上了运行 urxvt 的服务进程的指令,所以开机后就会在后台有个进程来先载入 rxvt 的一部分,所以我的快捷键只是打开一个新的窗口,因此速度非常快,基本上是随用随调。另外,我的 Alt+F2 绑定的是运行 gmrun,从里面可以运行任何命令,我一般用它来打开某个程序,就像 Quicksilver 一样用。

所以在 Mac 下,我也希望弄到这个效果。不过一来很少有软件会用到 C-S 架构,二来我对 Mac 本身的快捷键也不熟悉。在 fvwm 里所有的快捷键都是我从头自己设计的,不会有冲突问题;在 Mac 中会不会有冲突问题,发生冲突时以谁为主,我都不清楚,也没有什么时间研究了。所以就一直迟迟没有弄成这个功能,只是在某个 space 里面固定放一个 Terminal.app 窗口,等需要的时候就过去那个 space 就好了。

后来我好像是在课堂上,看到坐在我前面几排中有人一样用 MacBook,他的系统有一种功能,就是把一个终端窗口弄的和屏幕一样宽,高度大概有十公分多一些,所到屏幕的最上方。用的时候,终端窗口会从上方滑下来,用完了之后又滑了上去。我过去在用 fvwm 的前期,曾经也用这种方式做过。启动的时候运行一个 aterm,在屏幕上方缩成一条线。等我鼠标顶到屏幕最上方的时候,aterm 窗口会滑下来。开始的时候我觉得这个功能挺有意思,后来觉得有点添乱,所以在有了新的方法之后,就没有再用这个。我当时觉得这个样子应该会解决一些问题,于是就回家研究,发现了 SIMBL 这个插件,然后需要做一些设定,绑定到一个快捷键上,就完成了这个效果。我印象里好像是绑定到了 command+F2 上,当我按这个快捷键时,Terminal.app 会从上方滑下来,占据几乎整个桌面(除了 Dock 部分),用完了之后,再按一次 command+F2,窗口就回去了。

当时我就一直这么用着,Terminal.app 可以建立多个标签页,因此有多个终端可以同时使用,用起来也够了。可是当我把系统升级到 Snow Leopard 后,好像 SIMBL 不能用了,大概是 32 位和 64 位兼容的问题。那时我每次运行 Terminal.app 之后,Dock 上会出现它的图标,然后过几秒钟之后,图标就没了。当时我搜索过一些网页,好像没有什么解决办法,于是就干脆放弃 Terminal.app,改用我之前就用过的 iTerm。关于这个 iTerm,我是在一些文章上看到的,之前也用过。好像是在过去,Mac 自带的 Terminal.app 功能还不大够的时候,人们会用 iTerm 代替。我试用的时候感觉 iTerm 功能也就那个样子,于是还是用系统自带的终端。这会 Terminal.app 不能运行了,我就用 iTerm 来代替。

iTerm 我用起来也还不错的。我没有对显示效果做任何的调校,因为默认的界面就已经不错了。其中我最喜欢的功能是按 command+return 会把 iTerm 整个全屏,这样在终端上工作就可以不受打扰了,而且终端更宽了之后显式的东西也多,读起来也更方便了。iTerm 同样支持标签页,但它的标签页切换方式不是系统默认的 command+shift+[ 和 command+shift+],而是 command+数字键。这在开始让我很不习惯,我经常按原先的切换标签,得到的确实“嘟嘟”的错误提示音。不过后来习惯了之后,反而觉得这种方法能一下子跳到想去的标签,感觉也不错。而且现在 Google Chrome 也兼容这种切换的方式,我接触这种方式的机会多了,也就更习惯了。想比较而言,还有第三种切换标签页的方法,一直为我所不齿,就是 command+左右方向键,Adium 就是用的这种方法。这种方法最大的问题是,切换标签的时候,右手要从主要的区域挪到方向键区域,很麻烦的,要让我每天都要这样移动,一定会疯掉。后来在一些小的部件升级之后,Terminal.app 可以使用了,不过那时我已经习惯了 iTerm,所以就一直这么用着。

iTerm 还是有一个问题,就是一些细节上的地方还是太过靠近与 Mac,而不是 UNIX。主要就是向左向右移动一个单词的问题。我在按 command+b 的时候出现的是 iTerm 的标签;我在按 option+b 的时候出现的还是积分符号。而我在前几天看了一个视频,让我回到了 Terminal.app 的怀抱。我看的那个视频是教给我们如何在 Terminal.app 中使用 UNIX 那种移动光标的方法,原来就是在设定里面的 keyboard 标签下面,选中 “Use option as meta key”,就可以通过 option+b 之类的快捷键来快速移动光标了。

知道了这一点之后,我又翻了一下 iTerm 的设定,没有找到有相关的设定。于是我立刻决定回到 Terminal.app 的怀抱。之前的 Pro 主题的一些具体参数因为升级系统而丢掉了,二来也确实有了一些审美疲劳,于是就换了一个 Novel 主题,感觉米黄色的底色加上黑色的字符,既明显又不刺眼,十分舒服。

换回 Teriminal.app 之后,我有几点不习惯。首先是现在我经常用 command+数字键 来切换标签,而在 Terminal.app 程序里这个快捷键的作用是切换不同的 Terminal.app 窗口。我一般只开一个窗口,并在那个窗口里开多个标签,所以按这个快捷键时会经常发出“嘟嘟”的提示音。二是我在用 command+tab 切换程序的时候,脑子里想的还是 iTerm 的图标,等半天后才反应过来应该找 Terminal.app 的图标才对。