sshuttle:不需配置的 VPN

sshuttle 被其作者称为 “穷人的 VPN”(A poor man’s instant VPN),甚至不需要远端服务器的 root 权限就可以用(只需要一个普通 SSH 帐号),和在 Mac/Linux 客户端直接用 ssh -D 的方式有点类似。如果不想花钱买 VPN,又懒得自己在 VPS 上安装和设置复杂的 VPN 服务,又不想用 ssh -D 这么朴素的技巧的话可以试一下这个 sshuttle,按照作者的说法 sshuttle 比 sshd -D 的方式快一点,因为 It’s just data-over-TCP,而不是 TCP-over-TCP,TCP-over-TCP 的方式会带来不必要的性能问题,因为 TCP 本身就是可靠传输协议,保证了包的有序性和无差错,并确保包被接受,如果有包丢失的话 TCP 协议可以自己立即重传弥补,所以没必要两层都 TCP,一层 TCP 就比较安全了。

sshuttle 的用法很简单,在客户端下载和运行就可以了(需要有 Python 的支持),无需在服务器端做任何配置(但是需要一个 ssh 帐号和 Python 支持):

$ git clone git://github.com/apenwarr/sshuttle

$ ./sshuttle -r username@sshserver 0.0.0.0/0 -vv
Starting sshuttle proxy.
Binding: 12300
Listening on ('127.0.0.1', 12300).
[local sudo] Password:
firewall manager ready.
c : connecting to server...
...

成功运行 sshuttle 后会在 Terminal 上看到一些运行时 log:
sshuttle

同步管理多个 SSH 会话

当我们管理数十台或更多 Linux 服务器的时候,往往需要在每台服务器上执行同样的命令,比如我们想一次查看10台 Xen 服务器(node)上系统负载情况,或者想知道哪台 Xen 服务器有剩余内存可以分给新客户,又或者想执行 df 命令看看哪个服务器上还有多的硬盘空间等等,除了可以用脚本或工具统一收集这些信息外,我们还可以考虑使用一些同步管理多个 SSH 会话的小工具来帮助管理多台服务器,节省时间提高管理效率。在 Linux 上可以用 pdsh、ClusterSSH 和 mussh;在 Mac 上可以用 csshX.

使用 csshX 很简单,下载解压后就可以运行,如果要同时 ssh 到4个服务器的话:

$ ./csshX 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4

也可以把这些要 ssh 管理的 IP 写到一个文件里,然后加载这个文件:

$ vi xenhosts
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4

$ ./csshX --hosts xenhosts

csshX

在 Mac OS X Snow Leopard 上安装 Ruby 和 Rails

昨天刚发布的 Rails 3.0.6 包含重要的安全更新,所以刚好在升级 Rails 的时候顺便把 Ruby 也升级一下。Mac OS X Snow Leopard 默认的 Ruby 版本是 1.8.7 的,貌似直接源代码编译升级到 1.9.2 有一些问题(网上有不少人升级到 1.9.2 的时候出问题)。最好的办法是用 RVM (Ruby Version Manager),又简单又方便,而且不会替代系统自带的 Ruby 1.8.7,以后可以随时在 1.8.7 和 1.9.2 之间切换,适合开发和移植程序,Rails 3 也支持 Ruby 1.9.2 版本。

安装必要工具

安装前确定 Mac OS X 已经安装了最新的 Xcode 开发工具,至少是 3.2.1 版本。然后安装 git 工具:

$ xcodebuild -version
Xcode 3.2.6
Component versions: DevToolsCore-1809.0; DevToolsSupport-1806.0
BuildVersion: 10M2518

$ sudo port install git

安装 RVM

安装 RVM 的方法有点不同:

$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

如果有代理的话,用 -x 设置代理服务器:

$ bash < <( curl -x 192.168.0.1:3128 http://rvm.beginrescueend.com/releases/rvm-install-head )

配置 RVM:

$ vi ~/.bashrc
# This loads RVM into a shell session.
[[ -s "/Users/vpsee/.rvm/scripts/rvm" ]] && source "/Users/vpsee/.rvm/scripts/rvm"

关闭 Terminal 后重新打开以便 .bash_profile 文件生效,这个时候用下面命令可以验证 rvm 是否安装成功:

$ type rvm | head -n1
rvm is a function

安装 Ruby

安装最新的 Ruby 1.9.2-p180 稳定版本:

$ rvm install 1.9.2

系统上原来是 1.8.7 的,把系统默认的 ruby 解释器设置成 1.9.2:

$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
$ rvm --default 1.9.2
$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]

检查 gem 版本是 1.3.7 或以上,以及 sqlite3 版本是 3.6.12 或以上,然后使用 gem 安装 sqlite3-ruby:

$ gem -v
1.3.7

$ sqlite3 -version
3.7.5

$ gem install sqlite3-ruby
/Users/vpsee/.rvm/rubies/ruby-1.9.2-p180/bin/gem:4: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777

$ sudo chmod go-w /usr/local/bin
$ gem install sqlite3-ruby

安装 sqlite3-ruby 的时候出现目录权限警告, 修改一下 /usr/local/bin 的权限就好了。

安装 Rails

安装 Rails 3.0.6 版本:

$ gem install rails

$ rails -v
Rails 3.0.6

升级 Ruby 和 Rails 完毕后我们就在 Snow Leopard (Mac OS X 10.6.7) 上有了一个最新的 Ruby on Rails 开发环境。

在 PC 上安装 Mac OS X Snow Leopard

上周 MacBook Pro 莫名其妙点不亮屏幕了,症状是:黑屏但是系统可以正常运行,如果要使用的话只能接外接显示器来操作,没有屏幕非常方便,毕竟不是每个地方都有多余的显示器可以用。Google 了一下找到的一些重置 Mac 的技巧都不管用,后来发现 Apple 官方承认这款2007年产的部分 MacBook Pro 在某种情况下会出现屏幕问题(MacBook Pro: Distorted video or no video issues),原因出在 NVIDIA GeForce 8600M GT 显卡。还好 Apple 承诺过了质保期也可以免费维修:

Apple has determined that some MacBook Pro computers with the NVIDIA GeForce 8600M GT graphics processor may be affected. If the NVIDIA graphics processor in your MacBook Pro has failed, or fails within four years of the original date of purchase, a repair will be done free of charge, even if your MacBook Pro is out of warranty.

笔记本已经送到 Apple Store,第一次修 Mac 不太懂流程,老土了一把。昨天接到电话说是显卡和主板之间的问题,打算给我换一个主板,不过没有现成的主板,需要等一周时间,等就等吧,过了质保又是免费,还有什么可以抱怨的呢。VPSee 去年买的 Mac OS X Snow Leopard DVD 是含5个 license 的家庭套装版,MM 用了1个,自己用了2个,刚好还剩2个,别浪费了,昨晚手贱,把家里一台 PC 格了装苹果。

准备工作

  • Intel 处理器电脑(不过有人在 AMD 上安装成功过)
  • 一张空白 CD
  • Mac OS X Snow Leopard 安装光盘

设置 BIOS

BIOS 有几个地方比较重要,需要修改4个地方:

  • Advanced BIOS Features->First Boot Device,确认 CD-ROM 引导启动;
  • Integrated Peripherals->PCH SATA Control Mode,设置成 AHCI;
  • Integrated Peripherals->Onboard SATA/IDE Ctrl Mode,设置成 AHCI;
  • Power Management Setup->HPET Mode,设置成 64-bit model.

主板不同 BIOS 界面可能有差异,不过意思是一样的。

开始安装

先去 tonymacx86 下载 iBoot,解压后得到 iBoot.iso,刻盘,然后用盘启动系统就会得到如下界面:

Boot Hackintosh

换光盘,把 iBoot 光盘取出来,把 Mac OS X Snow Leopard 安装光盘放进去,等待10秒左右然后按 “F5” 就会看到界面上面的字变成 “Mac OS X Install DVD”,按 “Enter” 就进入 Mac OS X 的常规安装了。需要注意的地方可能就是记得先选择 Utilities > Disk Utility 工具分区和格式化硬盘为 Mac 格式:Mac OS Extended (Journaled) ,并且分区选择 Options->GUID Partition Table.

启动系统

安装完系统后,重启仍然需要 iBoot 光盘启动,进入 iBoot 后选择硬盘启动后就进入了 Mac OS X,每次都要用 iBoot 光盘先启动很麻烦,所以需要一个 Boot Loader,仍然到 tonymacx86 下载 MultiBeast,安装完毕后取出 iBoot 光盘就应该可以从硬盘直接引导了。

Troubleshooting

如果 PC 上用的不是 NVIDIA 的显卡一般会因为没有相应的显卡驱动导致屏幕分辨率停留在 1024×768 上不去,一种绕过的办法是(可能有效):

$ sudo vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
...
Graphics Mode
1280x1024x32
...

网上关于在 PC 上安装 Mac OS X 的资料很多,可以参考这篇:iBoot + MultiBeast: Install Mac OS X on any Intel-based PC.

延伸阅读:[TL] Re: [初级] 为何要选择 Mac?为什么国外程序员爱用 Mac?

在 Mac OS X 上安装 ns-3

Ns-3 网络模拟器(network simulator)看上去像 ns-2 的升级版本,其实不是,ns-3 是全新的一套网络模拟器,ns-3 的最终目标是替代 ns-2,虽然 ns-3 和 ns-2 都是用 C++ 写的,但是 ns-3 不兼容 ns-2 的 APIs,这就使得在 ns-2 下写的程序可能就需要一定的移植才能在 ns-3 下运行。对于已经熟悉 ns-2 的人来说,ns-3 和 ns-2 最大的区别可能就是脚本语言的不同,ns-2 使用 OTcl 而 ns-3 使用的是 Python. 虽然 ns-3 的 models 没有 ns-2 多,但是 ns-3 有些我们需要的新功能,比如更细致的 802.11 models 等。最近一直在忙 paper 和一些数据,模拟器的事情被搁到一边很长时间了,ns-3 软件包很绿色,下载完源代码后所有编译过程都在一个目录里进行,编译完就可以用,不需要安装,也不会到处放置一些杂乱的配置文件,所以 VPSee 决定在自己 Mac 上编译一个,省得每次都要远程登录到办公室的电脑上。

下载和编译 ns-3

在编译和安装 ns-3 之前先确认 Mac 上已经装有 Xcode 开发工具,Xcode 是 Mac 的开发工具套件,可以在 Mac OS X 的安装 CD 上找到,如果没有可以去苹果官方网站免费下载。有了 Xcode 后就可以开始编译 ns-3 了。这里使用的 Mac OS X 版本是 10.6.4:

$ wget http://www.nsnam.org/releases/ns-allinone-3.9.tar.bz2

$ tar jxvf ns-allinone-3.9.tar.bz2

$ cd ns-allinone-3.9
$ ./build.py
...
Waf: Leaving directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
'build' finished successfully (22m12.303s)
Leaving directory `./ns-3.9'

测试 ns-3

22分钟后编译完成,在 Mac 上安装比在 Linux 上安装 ns-2 还简单,没有 trouble shooting,没有 workaround,编译完就可以用,难道 ns-3 的开发人员也在用 Mac?编译成功后,用测试用例测试一下:

$ cd ns-allinone-3.9/ns-3.9
$ ./test.py
...
145 of 145 tests passed (145 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)

运行第一个例子程序

没有问题后就可以开始自己的第一个程序了,拷贝一个例子程序,然后编译运行:

$ cd ns-allinone-3.9/ns-3.9

$ cp examples/tutorial/first.cc scratch/myfirst.cc

$ ./waf
Waf: Entering directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
[1160/1308] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_2.o
[1161/1308] cxx: scratch/simple.cc -> build/debug/scratch/simple_3.o
[1305/1308] cxx_link: build/debug/scratch/myfirst_2.o -> build/debug/scratch/myfirst
[1306/1308] cxx_link: build/debug/scratch/simple_3.o -> build/debug/scratch/simple
Waf: Leaving directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
'build' finished successfully (5.995s)

$ ./waf --run scratch/myfirst
Waf: Entering directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
Waf: Leaving directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
'build' finished successfully (0.848s)
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

Apple 和 Steven Jobs 关于系统平台最正确的决定可能就是选择和迁移到了 Unix 平台(x86),使得大量的基于 Unix/Linux 的研究和开源项目可以很容易的运行在 Mac 上,这样吸引了大批 Unix/Linux 程序员、系统管理员、研究人员投靠 Mac 阵营

分享一个截网页的好工具:Paparazzi!

写博客的时候经常会对网页截图,比如对 VPS 服务商的官方网站首页进行截图等。Mac 自带的截图工具非常棒,截对话框、窗口、桌面都非常方便,可惜抓取网页的时候不能捕捉到完整的页面,现在的网页动不动就需要拖动很长的滚动条,如果整个页面不能在屏幕上显示出来的话就不能被完整抓到,Mac 自带的抓图工具只能抓 “看得见” 的部分。Paparazzi! 是 Mac OS X 上的一款开源(当然也免费)的抓图工具,可以方便截取长度超过一个屏幕的网页,只要输入网址,调整要抓图的大小和截取的大小就能拔一张完整的页面下来,非常好用。

paparazzi!

Mac 和 Windows 的中文字体显示效果

本来这篇和上面的 “把简单的事情做好就是不简单” 是一篇,后来加了更多的对比图片导致文章太长,而且内容不怎么相关,所以分成了两篇。

周末在修改了网站的 CSS、测试浏览器兼容性的时候发现一个问题,中文大字体在 IE 上显示发虚。每次使用 Windows 都会觉得不爽,这次是因为 IE 和字体的问题。朋友去度假看世界杯了,留下一台 Sony VGN-Z12GN,不错的机器,超轻、双核、4GB 内存,可是在 Windows 7 上启动一个 IE 的空白页面就不明白为什么鼠标在那里转啊转,转了十几秒才进入 IE,输入博客地址后发现大字体在 IE 上发虚、很难看,多次调整 IE 里面的字体选项也没用,我不清楚在 Windows 上有没有其他的方法和技巧可以绕过这个问题,在我看来这么基本的问题还需要用户手工调整的话本身就是问题,这种事情发生在 Linux 上是可以原谅的,我们可以找理由说 Linux 是免费的、开源的,需要自己加好看的字体(事实上以前大部分人用 Linux 桌面的时候都会从 Windows 那里 “偷” 中文字体),但是发生在久经考验的商业版 Windows 上就说不过去了。很惊讶 Microsoft 为什么没人解决这个基本的问题:字体,拜托,现在是2010年,字体在我的 iPhone HTC Android 上显示都没有问题。下面两张图分别取自 Mac OS X 10.6.4 + Safari 5.0 和 Windows 7 + IE 8.0,很明显 Safari 上的字体(第一张图片)要饱和好看得多:

font on mac

font on windows

更新:下面有位匿名网友在评论里指出可能和 Win 默认语言 or IE 默认语言 or 字体设置有关,我朋友这台 Sony 是英文版 Windows 7,不知道怎么会出来中日文混合字体(日文渲染,缺的字用中文补?),也许曾经在上面装过日语环境吧。重新让其他朋友在 “Windows XP + IE 8.0 + 新宋体” 截了个图,应该是标准宋体:

font on windows

再次得到下面匿名网友的建议,加上 “Windows XP + IE 8.0 + 微软黑体” 的显示效果:

font on windows

感谢 “匿了” 网友的截图,加上 “IE + 雅黑” 的显示效果:

font on windows

评论里又现一位热心网友 hivpn 的截图,“Windows + 雅黑 + MacTypeTray” 的效果:

font on windows

对比上面6张图片,大家喜欢哪个显示效果呢?抛开技术不谈,个人还是喜欢 Mac 上的效果。90%的用户每天90%的时间里都用电脑来处理文字,字体是如此重要,为什么 Microsoft 视而不见呢?字体真的不算高科技。

[TL] Re: [初级] 为何要选择 Mac?

前几天加入了一个叫做 TopLanguage [TL] 的技术交流圈子,实际上就是一个 Google Group,网上很多论坛/讨论组/圈子基本上都是转载一些文章或者问一些莫名其妙的问题,不过 VPSee 通过这几天的阅读发现这个 TopLanguage 圈子质量不错,大家讨论的话题和回复质量都较高,可以交流和学习到很多有趣有用的东西,而且上面可以找到一些技术牛人、翻到一些高质量的原创博客并且可以和作者交流,很值得看看。想要加入这个圈子需要审核,如果只想阅读他们的帖子而不想回复的话只订阅他们的 RSS 就可以了。

很巧的是在加入 TopLanguage 后看到有人问 “为何要选择 Mac?”,并且发现自己的一篇博客(为什么国外程序员爱用 Mac?)“被” 讨论了,有很多回复,这样的讨论怎么能缺少原作者(VPSee)呢?呵呵~~,我的回复很长,所以把它拿来当作一篇博客吧,大家也可以在 TopLanguage 上看到这篇帖子的讨论和回复

我也觉得Mac贵了,MacPro要1500美元啊。。。。

VPSee 回复:Mac 比一般电脑贵,这是事实,问题是,你愿意在电脑上做多少投资?电脑对于你来说有多重要?我每天有1/4的时间在床上,所以我给自己买了最好的床;我每天有1/2的时间和电脑在一起,所以我给自己买了最好的笔记本(MacBook Pro)和显示器。你以后要靠电脑吃饭吗?那为什么不用最好的设备?1500美金简直太便宜了(如果你考虑到下半辈子有一半以上时间都和电脑在一起的话)。TL 上大多都是靠电脑吃饭的人士,所以,对自己好点,get a mac,生命只有一次:)

补一句:也就是关于第七点,也就是WM那一点,如果是多窗口切换的话那么jump-or-exec和下面两句(fvwm版本)似乎可以满足需求。
DestroyFunc SwitchWindow
AddToFunc SwitchWindow
+ I $0 ($[w.class]) EWMHActivateWindowFunc
####在同类窗口间切换
DestroyFunc SwitchGroup
AddToFunc SwitchGroup
+ I $0 (!$[w.class]) EWMHActivateWindowFunc

VPSee 回复:嗯,说的很对,在 Linux “加上上面几句话” 完全可以满足需求,问题就出在 “加上上面几句话”,为什么每次都要 “加上上面几句话” 呢?,谁能记住上面几句话,在没有 google 没有网络的情况下谁能在安装完 linux 后不看资料不翻书 “加上上面几句话”。产品就是应该为用户着想的,如果 Google 的每次搜索都要求登录以后才能搜索,那是不是很麻烦?同样的,每次安装完 Linux 都去配置这些 X windows/WM 之类的东西是不是很烦?

我觉得大学时候使用macbook也不合适,原因有点无奈,如果你有macbook,又在一个非自由环境(大学就是),你一定会发现macbook做不了的事情 (老师讲课使用vs,作业提交word,提交表格excel….这不是mac得错,使我们的错)

VPSee 回复:印象当中只有某某培训学校才用 vs 讲课,我不清楚为什么大学要用 vs,中国大学用 word/excel 可以理解,都是这样子的,别忘了,Mac 上也有 Microsoft Office.

要夸就夸Mac OS X或者苹果硬件的外观吧。我就很不明白为啥说一定要和硬件一起使用。为啥黑苹果就没有感觉。

VPSee 回复:嗯,很多人都不明白,这种感觉只有用多了才会有:),这种感觉就好像在奇瑞汽车里装上宝马的发动机,就好像编程的时候用中文注释,就像 kiss 别人的 mm:) 感觉很别扭。你知道的,每个人的感觉都是不同的。

而且下面的的12345678等等等,把苹果替换成Unix或者Linux也完全成立。苹果在这里只是作为一个Unix存在 那为什么我们不歌颂一下Linux或者Unix而硬要把它套在OS X上呢?

VPSee 回复:作为 linux 重度用户和靠 linux 吃饭的人,我很想歌颂 Linux,问题是我们在讨论 Mac,不是吗?拿当前最好的 linux 发行版本 Ubuntu 的桌面系统和 Mac OS X 比较,他们还不在一个档次上,比如显卡、无线网络、莫名其妙的打印机等,而且桌面 Gnome/KDE/XFCE/FVWM/Fluxbox/whatever 都有很多 bug,有时候导致无辜退出 X,有时候导致屏幕 frozen,当然,你完全可以折腾 Linux,找到一些折衷的办法,通过修改一些配置来解决 bug,问题是,我们没有时间,我们要完成工作,我们为什么要把时间浪费在这些没有生产力的东西上面呢?解决技术问题、编写程序、修改自己的 bug、让自己的工作精益求精已经耗费了大量精力,为什么还要去做那些安装图形界面、安装某某无线网卡驱动、配置 X window 这种基础事情呢?Fix linux 桌面这种事情让其他聪明的人去做吧,我们还有更多的事情等着呢:)

最大的理由——我用的好好的,干嘛离开。 如果mac有好的,相信microsoft也看得到,它也会模仿的

VPSee 回复:你不必离开,干嘛要离开呢?不要告诉我作为 IT 人士的你现在只能选择和使用1台电脑,除了学生以外现在 TL 上大部分人都有2台以上。你可以大部分时间使用 mac,只有需要的时候,比如网银等需要开动虚拟机上的 windows. Microsoft 没有 taste,会模仿但是没有品味,奇瑞瑞虎模仿了宝马 X5,但是你想开宝马 X5 还是奇瑞瑞虎?幸运的是,Mac 和 PC 的价格没有宝马 X5 和奇瑞瑞虎的差别大,你可以同时拥有 Mac 和 PC.

不过,我也离不开Windows。事实上,我觉得最重要的原因是软件兼容性。

VPSee 回复:不知道到了2010年为什么还会提到软件兼容性,你可能因为要用某种变态、特殊、不可替代的行业软件需要用到 windows,就一般用户和程序员来说,mac os x 和 windows 上的软件可以替代,平时无非就是编编程序、看看网页/RSS、邮件、MSN/GTalk/QQ/Skype,照片处理,看看电影、听听音乐吗?有这么复杂吗?你需要把行业软件安装到自己的家用电脑上吗?

你机器的 Geekbench 是多少?

大家玩 VPS 都喜欢用 unixbench 测试一下 VPS 的性能、玩电脑都想知道自己机器的性能,这里介绍另一个不是很专业的测试工具 Geekbench,Geekbench 支持 Mac OS X, Linux 和 Window 等多种平台,是 Mac 上较常用的测试工具,主要测试 CPU 和内存系统的性能。Geekbench 的64位版本是收费的,可免费使用32位版本测试。如果对自己机器比较有信心可以把结果提交到 Geekbench 网站上,看看能不能进入 Top 100,目前最高分数是 26267,由一个 Six-Core @ 2.81 GHz 4 processors, 24 cores, Solaris x86 的机器创造的。不过 unixbench 和 geekbench 的分数玩玩可以,不用太当真,现实中的服务器性能评测很复杂,取决于多种因素和具体的应用,不能简单拿这个分数作比较,这个测试充其量就只能拿来看看不同 CPU 的运算能力。透露一下 VPSee 的 MacBook Pro 15″ 的硬件配置和 Geekbench 分数(少得可怜):

my mac sys info

my mac geekbench score

在 Mac 上使用 LaTeX

斯坦福大学终身教授、计算机科学界的巨牛 Donald E. Knuth 教授写书的时候发现当时的排版技术非常粗糙,严重影响了他正在写的计算机算法巨著 《The Art of Computer Programming》,于是他老人家花了10年的时间写了一个叫做 Tex 的功能强大的排版软件,到目前为止 Tex/Latex 依然是学术排版领域的老大,在学术界十分流行,尤其在数学、物理和计算机科学领域。由于 Tex 太难用了,另外一个计算机科学家 Leslie Lamport 在 Tex 的基础上开发出了 LaTeX,利用这种格式,大大简化了使用 Tex 的难度,使很多没有专业排版和程序设计的人也可以充分发挥 TeX 提供的强大功能,轻松排版出精美的文本,所以 LaTeX 逐渐流行起来。

为什么不用 Microsoft Word?VPSee 对 Word 这些大型软件天生有一种恐惧,软件大了 bug 就多。有个朋友写了一篇300多页的博士毕业论文,然后在交论文前一个月发现一个用来管理 reference 的 word 插件坏了,结果丢了所有的 reference,花了几个通宵才整理好,写过论文的人都知道管理和保持所有 reference 一致是一件很麻烦的事情,尤其是论文写到最后,改一个地方就要牵动所有关联地方。博士朋友还碰到一个问题就是 Word 打开300多页文章后发现打印出来的格式和看到的格式不一致、表格错到下一页、有地方没有对齐等。以前还有一些朋友抱怨 Word 宏病毒,不知道现在还有没有。还有 Windows 本身很容易感染病毒,感染后或者杀毒后一些 Word 文档打不开,LaTeX 都是纯文本保存,不会有这类问题。用 Word 还有一个问题就是一些国外的导师、教授拒绝 Word,如果你想把文章发过去让他们修改、看看给点建议的话就不方便,让他们在百忙之中抽时间出来给你找台带 Word 的 Windows 机器,然后再帮你看 paper/thesis 是件很过分的事情,所以要么你发 PDF 格式的,要么发 LaTeX 源文件。

Q: “If you were young again, would you start writing TeX again or would you use Microsoft Word, or another word processor?”
A: “I hope to die before I have to use Microsoft Word.”
Harald König asking Donald Knuth, Tübingen, 2 Oct 2001.

以前在 Mac 上装 Tex/LaTeX 很麻烦,现在容易多了,只需要下载单个软件包 MacTeX.mpkg.zip 即可,安装后会在 Applications 下生成一个 Tex 目录,Tex/LaTeX 编辑器 TeXShop,reference 工具 BibDesk,拼写检查工具 Excalibur 等都在这个目录下。打开 TeXShop 后点击 Typeset 就可以自动编译 LaTeX 源码并生成 PDF 文件:

texshop

用 BibDesk 添加一个 reference:

bibdesk