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

前几天加入了一个叫做 TopLanguage [TL] 的技术交流圈子,实际上就是一个 Google Group,想要加入这个圈子需要审核,如果只想阅读的话订阅他们的 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

适合阅读的 Terminal.app 配色方案

记得很久以前在 Slashdot 看过的一篇关于颜色对比的文章和一些评论,有人建议浅黄色字体深蓝色背景是 terminal 的最好的配色方案,容易阅读而且不易疲劳。这种配色方案也适合程序员长时间使用编辑器阅读代码,或者系统管理员编辑系统配置文件。不过也有人说黑色字体浅黄色背景最容易阅读。建议多试几种,看看哪种配色方案最适合自己。

周末在网上闲逛的时候发现一个很不错的 Mac OSX 10.5 下的 Terminal 模版 giovanni_style,采用的就是浅黄色字体深蓝色背景方案,下载 giovanni_style 后打开 Terminal.app,在 Shell->Import… 导入即可。
giovanni style for mac os x terminal

Macbook Pro 升级到 Snow Leopard

终于有时间坐下来重装系统了,新购的 Mac OS X Snow Leopard 早就到了,一直放在桌上,每天看着它发痒就是没有时间装,电脑上的资料无所谓都有备份,主要是不想破坏开发环境,一些曾经很难装上修改了 n 个 Makefile 和 c 文件才编译通过的库、一些特殊的配置文件等要重新安装一想就很麻烦,还有一些软件、插件等也需要重新下载。不过这次 VPSee 不想升级安装了,打算彻底重装,Macbook Pro 用了三年多就没有重装过,中途只升级了一次系统,从 Tiger 升到 Leopard。系统上面大大小小改了很多东西,改的乱七八糟,就 Android SDK 就有3个版本。

mac osx snow leopard

Snow Leopard 被炒了很久,说实话刚装完系统启动一看很一般,甚至有点失望,和 Leopard 比较没有发现什么太大的变化,桌面图标小了一点, QuickTime X 做了全新的设计。用了一下发现,新系统对细节的考虑精细了,比如 Dock 上的 Stack 改了显示方式,Terminal 默认字体更好看了,Quicktime 现在可以录制屏幕了,做教程更方便了,自带的中文输入法好用多了,不用自己下载其他的输入法了,系统自带了 VNC,连接 Linux 桌面也不需要第三方工具了。Snow Leopard 安装体积比 Leopard 小了很多,性能也有很大提高。升级到 Snow Leopard 虽然没有从 Tiger 升级到 Leopard 那样强烈,但是感觉这次升级 Apple 对细节和性能的改进还是很多的。

Mac/Mac OS X 是最适合开发人员的工具,这次升级编程语言 C/C++/Java/Python/Perl/Ruby/PHP,函数库等都有更新,集成开发环境 Xcode 也升级了。这里有个误区,国内很多朋友都以为苹果是做图形设计的不相信苹果能搞开发 ,恰恰相反,自从苹果2001年发布 Mac OS X 10,完全抛弃老系统投靠 UNIX 和 Intel 阵营后(Mach + FreeBSD + Intel),立刻吸引了一大批新老 UNIX/Linux 用户,别忘了现在是2009年,现在纯 Windows 程序基本没什么人开发了,顶多维护维护历史遗留下来的 Windows 程序,主流开发已经转向 Web 和 手机了,这使得 Mac 成为目前最理想的开发平台,现在最火的 Web 开发是 Ruby 和 Python,最火的手机开发是 iPhone 和 Android ,这些开发环境都能很好的运行在 Mac 上。忘了说 Java,现在企业开发还主要是 Java 的天下,不过也不用担心,Mac 内置 Java 环境,如果一定要用 IDE,装个 Eclipse/Netbean 就可以了。还是不相信苹果能开发?那看看这些顶级互联网公司吧,看看他们的开发人员都在用什么电脑。

Yes, vpsee.com is made on a Mac.

Mac 下远程访问 Ubuntu 桌面

自从给项目组每个人开了一个 Xen VPS 后麻烦就不断,一会儿要求加硬盘,一会儿要求加内存,还有人想在上面跑图形桌面,完全不顾 VPSee 的业余时间:(,昨晚简单测了一下多个 Ubuntu 9.04 桌面系统同时运行在一个服务器上(用 Xen 虚拟化)的情况,速度还可以,比想像的要好。主要时间都浪费在配置上,比如配置 FreeNX、VNC 等,网上教程都不全,用了不少时间排错。这里介绍 Mac 通过网络远程访问 Ubuntu 桌面的常用三种方法,最好的方法应该是用 FreeNX,安全而且速度快:

X11

这是最简单最方便的方法,不需要在 Ubuntu 端做任何配置,不过在 Mac 端必须已装有 X11,在 Terminal 上敲(把 ubuntu 换成对应的服务器 IP 地址或域名):

$ Xnest -geometry 1280x800 :1 & DISPLAY=:1 ssh -X ubuntu  gnome-session

mac x11 forwarding

FreeNX

上面用 X11 forwarding 的方法虽然很简单,在局域网内用用还可以,如果想在 Internet 上连一个远程桌面的话就不合适了,速度很慢。FreeNX 有安全、速度快、功能强等优点,尤其适应网络环境恶劣的情况。按照 Ubuntu 的一篇帮助文档:FreeNX执行如下步骤:

$ sudo vi /etc/apt/sources.list
deb http://ppa.launchpad.net/freenx-team/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/freenx-team/ppa/ubuntu jaunty main

$ sudo apt-key adv --recv-keys \
--keyserver keyserver.ubuntu.com 2a8e3034d018a4ce

$ sudo apt-get update

$ sudo aptitude install freenx

$ sudo /usr/lib/nx/nxsetup --install 

下载一个 Mac NX 客户端连接服务器报错,查看日志后发现 authenticate 没通过,怀疑是 SSH keys 问题:

The NX service is not available or the NX access was disabled on host 172.X.X.X.

在 NX 服务器端修改 sshd_config 文件:

$ sudo vi /etc/ssh/sshd_config
AuthorizedKeysFile      /var/lib/nxserver/home/.ssh/authorized_keys2

$ sudo /etc/init.d/ssh restart

在 NX 客户端把 /var/lib/nxserver/home/.ssh/client.id_dsa.key 文件拷贝到客户端后,用 NX 客户端工具导入。NX 客户端再次连接 FreeNX Server,依然报错,不过错误信息变了:

NX> 103 Welcome to: ubuntu user: root
NX> 105 listsession –user=”root” –status=”suspended,running” –geometry=”1440x900x32+render” –type=”unix-gnome”
mktemp: cannot create temp file /tmp/nxserver_tmp.rQAHzfLbK: Permission denied
/usr/bin/nxserver: line 273: $TMPFILE: ambiguous redirect

显然是 /tmp 权限问题,这个问题很容易解决:

$ sudo chmod 777 /tmp

再次连接,终于看到了 Ubuntu 桌面,如果你不需要太高的安全性,到这里就可以结束了,enjoy it.

上面的连接使用的是默认的 SSH Keys,会带来安全隐患,如果需要更高的安全性可以用自己定制的 SSH Keys,重新配置:

$ sudo dpkg-reconfigure freenx-server

上面命令会弹出对话框,选择 ”Create new custom keys” 后,会在 /var/lib/nxserver/home/custom_keys/ 下创建一个 client.id_dsa.key 文件,把这个文件拷贝到 NX 客户端,然后在客户端导入这个 Key 文件就可以正常连接 FreeNX 服务了。如果 key 通过了认证,可以在服务器端和客户端删除这个 key 文件。

VNC

还有一种古老的方法就是使用 VNC,和 FreeNX 相比VNC 速度较慢,因为 FreeNX 是将 X Window 的数据压缩后传输到远程客户端显示,而 VNC 则是直接截取屏幕后传输过去,在较差的网络中这种延迟和速度差异很明显。先在 Ubuntu 上装一个 VNC Server:

$ sudo apt-get install vnc4server
$ vncserver :1 -geometry 1024x768 -depth 16

然后在 Mac 上装一个 VNC Viewer(推荐 Chicken of the VNC)就可以连上 Ubuntu,不过这个时候看到的是 X Window 界面,不是 Ubuntu 桌面,在 X Window 中手动启动 Ubuntu 桌面:

$ gnome-session &

如果不想每次都手动的话,在当前用户目录根目录下修改 ~/.vnc/xstartup:

$ vi ~/.vnc/xstartup
# twm &
gnome-session &

$ sudo shutdown -r now

$ vncserver :1 -geometry 1024x768 -depth 16

重新启动 Ubuntu 并打开 VNC Server 服务,用 VNC 客户端连接就可以看到 Ubuntu 图形桌面了。

Mac 通过代理服务器 ssh

在学校、公司大多时候都需要通过代理服务器上网,想在 Mac 下通过代理服务器 ssh 的话可以使用 Corkscrew 小工具。Corkscrew 也支持 Linux。

下载 corkscrew-2.0.tar.gz 后解压编译,然后拷贝编译生成的 corkscrew 到用户的主目录下的 .ssh 中:

$ tar zxvf corkscrew-2.0.tar.gz
$ cd corkscrew-2.0
$ ./configure --host=apple
$ make
$ cp corkscrew $HOME/.ssh/

打开 .ssh/config,增加以下几行:

$ vi .ssh/config

Host vpsee.com 67.203.229.22
ProxyCommand /Users/vpsee/.ssh/corkscrew proxy.server.address 3128 %h %p
TCPKeepAlive yes
ServerAliveInterval 5

注意:把上面的 vpsee.com 67.203.229.22 换成要 ssh 的服务器地址(可以有多个,可以是域名也可以是 IP 地址);把 proxy.server.address 3128 换成相应的代理服务器地址和端口号;TCPKeepAlive 用来与 ssh 服务器保持连接。

ssh 服务器为了安全考虑发现客户端长时间闲置的话会主动断开 ssh 连接,如果不想 ssh 自动断开,ssh 客户端需要打开 TCPKeepAlive 选项定时给服务器发 TCP 包来欺骗服务器,让 ssh 服务器感觉客户端还在 “活动” 中。同时 ssh 服务器端也需要打开 TCPKeepAlive 选项(也就是说,ssh 客户端配置和 ssh 服务器端配置都要打开 TCPKeepAlive):

# vi /etc/ssh/sshd_config

TCPKeepAlive yes

Mac 下批量修改图片尺寸

整理了一堆照片打算放到网上去,都是 3072 x 2304 大小,需要改小。网上可以搜到一堆批量修改的工具可以用,免费的只有一个叫 iResize 的工具,而且不好用,居然不能识别 JPG,只能识别 jpg 后缀。在 Mac 里能不能不借助外部工具来批量修改图片尺寸大小呢?

打开 /Applications/Automator.app,如图:
automator

1、把要改尺寸的图片全部拖到界面就会在右边出现 “Get Specifed Finder Items” 一栏;(需要修改哪些文件?)
2、在 ”Copy Finder Items” 选项里选择要把修改后的图片存在哪个地方;(把修改后的文件存到哪个地方?)
3、选择 “Photos->Scale Images”,双击 “Scale Images”,会在右边出现 “Scale Images” 选项,选择想改变的尺寸大小或者百分比,最后点击右上角的 “Run”。(开始修改)

分享一个记笔记的好工具:Evernote

平时都用 Mac 自带的 Stickies 记些小便条很方便,不过有时候要记录有丰富内容的文档就不行了,比如带字体、格式的笔记。而且有时候用 Mac 记的东西很想能自动同步到 iPhone 上,不需要 USB 连线什么的。后来用 Google Docs 记东西,每次都要登录而且不能自动同步,所以决定找个能自动保持同步的记笔记的工具。Evernote 可能是类似工具中最好的了,免费、支持 Mac/iPhone/Windows,操作方便,同步速度快,而且支持音频、视频记录,说几句话录下来省得打字。刚开始不会觉得 Evernot 很方便,当便条积累多了以后,就能体现出来自动同步的好处了。使用 Evernote 需要注册,拥有一个帐户以后就可以同步了,每个月可以免费使用40MB,用来写 notes 足够了。

evernote

为什么国外程序员爱用 Mac?

macispopular

Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:

1、Mac OS X 是基于 Unix 的。这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 windows 开发人员,我想你会在 windows 上装一套cygwin 环境吧?你不用 flex/yacc,grep,screen,ssh,make?好多 open source 的项目只提供cygwin/gcc/make 的编译环境。Mac 就是基于 BSD Unix 的,所有这些都是 built in 的。

2、开发环境。c/c++/java/perl/python/php/ruby/lisp,各种 shell,应有尽有,直接支持,非常方便。你要在 windows 上开发 C++,要装个 Visual Studio 编译器吧?或者其他的 C++ 编译器;你要开发 Java,你要下载 Java SDK 吧,说不定还要一个 Elipse 或者 Netbean;你要用 Perl,要安装一个 Perl 解释器吧,Active Perl?你要 python/php/ruby,你要安装……?开发程序需要库,图像处理,视频处理,人工智能之类大部分库都是只支持 Unix/Linux 的。Mac 基于 Unix,所以这些通通都和 Mac 能很好和睦相处。

3、编辑器 Vi/Emac。作为 程序员/IT 人员一个好用的编辑器太重要了,因为写程序/改系统配置都需要编辑器。我在 Mac 上差不多1/2的时间是 browser/email,另外1/2时间差不多就是 Vi 了。

4、没有病毒/木马。用了5年多的 Mac 就没看到病毒长成什么样,我还看不到 Mac 上装杀毒软件的需要。

5、不需要维护。Mac 买来就直接用,磁盘碎片整理?不需要。装驱动?Mac 装好了,驱动就好了。重装系统?我5年没有重装过一次(期间换了几次不同的 Mac)。

6、简洁。Mac 上所有的操作都简洁到了极致,尽量避免干扰用户,增加了程序员的生产力。比如切换无线网功能,在 Mac 上切换只需要1次鼠标点击就可以完成,在 windows 上需要点击多次鼠标(包括一些很愚蠢的确认对话框);再比如卸载 USB 盘,Mac 只需要1次鼠标点击,windows 至少需要点击右下角图标、停止设备、确认对话框等多次点击。

7、多窗口切换。这个很方便管理打开的程序/文档。我经常要在多个虚拟窗口切换,比如看浏览网页/邮件一个窗口,写程序/文档一个窗口。

8、程序员文化。国外程序员是以 Unix 为主流成长起来的。这一点和国内不同,中国程序员/开发人员大都是从90年代的 DOS 开始的,随着 Windows 的壮大,成长了一批使用 Microsoft 工具的程序员。这也解释了为什么自从 Mac 切换到 Unix 阵营后,Mac 会发展这么快。基于 Unix 的 Mac 一经推出后,迅速赢得了一大批老 Unix hacker 和新 Web 2.0/Linux hacker 的关注,正是因为这些忠实的 fans 影响了他们的人际网络,圈子,博客,从而影响了整个程序员文化。有点像 Ruby on Rails,开始是一小部分人(精英人士)试用,这些人感觉不错就在博客,研讨会等各种场合鼓吹,从而在 Web 开发领域刮起一阵 Ruby 风。

9、苹果很酷。每台电脑,每个系列都设计完美,从包装盒,宣传册,广告,电源线,电脑内部,电脑外观,电脑软件都精心设计,风格统一。甚至微小到螺丝,看过苹果机箱上的螺丝,机箱里面的数据线吗?那个也是设计。每个 Mac 上都标记着:Designed by Apple in California,而不是 Desgined in USA,苹果就是这么酷,“我们是一家加州公司”。苹果的保密措施可以说做到了极致,产品官方不发售就在市场上看不到踪影。

10、企业家精神。苹果的传奇经历吸引了大批硅谷创业者,Apple/Google/Microsoft/Amazon/eBay/Yahoo 代表了创新,进取的企业家精神。这不是一个大原因,但可以看作是 Mac 在国外,尤其是在美国,尤其是在硅谷,尤其是在大学这么流行的一个小原因吧。据调查2007年美国大学 Mac 市场占有率第一,这些大学精英们毕业以后走上工作岗位,走上社会,再过几年其中一部分走入中层,走进高层,他们会如何影响 Mac 呢?

如果对于类似讨论有兴趣可以看看 VPSee 在 Top Language 讨论组上的回复:[TL] Re: [初级] 为何要选择 Mac?对了,你如果还是对上面那张图片有所怀疑的话,可以看看下面这张图片,来自最近的 TechCrunch Hacker 大会

hackathon

Again, yes, vpsee.com is made on a Mac.

新 Mac 到了

上周订的新 MacBook Pro 终于到了,第一眼看到的就是包装盒,Mac 的包装盒和 Mac 电脑一样设计得很美观。新款包装盒比我正在用的老 MacBook Pro 更小更紧凑。图片如下,上面白色包装是新款的,下面黑色是老款。

macbookpro

虽然两个都是15寸的,但是新款老款放在一起感觉新款可视面积要大一点点,厚薄程度都差不多,新款键盘做得更加细致,明显比老款要精致一些。新款开机按钮变小了。老款键盘上的触摸板一个是触摸控制鼠标一个是按键点击的,分开的;新款两个合在一起了,更加简洁。苹果的设计就是极致简单,多余的东西不要。看图:左边是新款,右边是老款。

macbookpro