Vim? Emacs!
十一月 3rd, 2007
我: Hmmm,你的 Emacs 编辑 Rails 项目明显没有偶的 Vim 爽嘛,连 RHTML 里的 Ruby 代码都没法语法高亮。
W 君: (看了偶演示 Vim + rails.vim 后)确实不太方便。
我: 那何不转过来用 Vim?反正 Vim 你也经常用(W 是 Linux 系统管理员)。
W 君: 不行,我用 Emacs 是有很特殊的原因地。
我: ?
W 君: ……
我: ……?
W 君: …… 因为 Emacs 的图标是牛啊。(同事 W 君是股民 -_-b)
我: …… 狂晕!
Tags: Emacs, Funny 搞笑, Personal 个人, Software 软件, Vim修改已处于 SVN 版本控制下的项目的版本库布局
十一月 1st, 2007
按照《使用 Subversion 进行版本控制》 书中的建议,项目在被 import 到版本库前,最好能在项目根目录下建立 trunk、branches、tags 等目录,并将项目源代码存放在 trunk 子目录下,这将有利于工作中对相对稳定的项目做较大修改时创建分支。
但是一些历史项目,或者我们自己在对 Subversion 不够熟悉的情况下创建的项目,可能是直接把项目源代码存放在项目根目录里的,这种情况下要修改版本库布局,将所有文件移动到 trunk 子目录下就比较麻烦了。设想过使用 svn mv 命令应该可以做到,但是它会产生一个整个项目所有文件被移动的 revision,不但很不优雅,也不便于以后查看历史记录以及回溯到旧版本。
这种情况下我们可以这样做:
- 将整个项目的版本库导出为一个 dump 文件(它是一个可编辑的文本/二进制混合文件,其中包含了所有的 revision 记录)。
- 在 dump 文件中所有的路径前加上 trunk/ 前缀,使它们处于 trunk 子目录下。
- 在 dump 文件中 revision 1 里直接加入 trunk 等目录的创建。
- 删掉项目的版本库并重建新版本库,然后导入我们修改后的 dump 文件。
进行这样的操作后,项目的版本库状态就是从 revision 1 开始所有的文件就存在于 trunk 目录下了。
具体操作步骤,以在 Linux 命令行下为例:
svnadmin dump /path_to_svn_repos/your_project > your_project.svn_dump vim -b your_project.svn_dump # 以下为 Vim 命令 :%s/^Node-path:\s\+/\0trunk\//ge :%s/^Node-copyfrom-path:\s\+/\0trunk\//ge # Vim 命令结束 # 添加 trunk 等目录的创建,见后文详述 rm -rf /path_to_svn_repos/your_project svnadmin create /path_to_svn_repos/your_project svnadmin load /path_to_svn_repos/your_project < your_project.svn_dump
注意一定要用 -b 参数启动 Vim,这样可以避免 Vim 在没有配置好多字节文件支持的选项时对 dump 文件可能的破坏。添加 trunk 等目录的方法是在 Revsion-number: 1 那一行后的第一个 PROPS-END 行后插入以下蓝色的代码。注意那些空行,有些是空一行有些是空两行,我是严格按照已有的目录的格式来写的,在没有看到这个 dump 文件的规格文档前最好连空行也照原样复制。
... Revision-number: 0 Prop-content-length: 56 Content-length: 56 K 8 svn:date V 27 2007-10-11T14:15:09.781135Z PROPS-END Revision-number: 1 Prop-content-length: 100 Content-length: 100 K 7 svn:log V 0 K 10 svn:author V 6 rainux K 8 svn:date V 27 2007-10-11T14:15:48.344335Z PROPS-END
Node-path: trunk Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: branches Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: tags Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END
Tags: GNU/Linux, Software 软件, SubversionNode-path: trunk/README Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 8001 Text-content-md5: 2ffe7715fd6ba5509508a29022c22a17 Content-length: 8011 PROPS-END == Welcome to Rails ...
见到 Debian GNU/Linux 创始人 Ian Murdock 了
十月 22nd, 2007
四个小时前,在上海紫金山大酒店四楼的会场见到了自由软件社区的大哥级人物 Ian Murdock。一身白色 T shirt 的他看上去比活动宣传照上更年轻。
虽然了解、使用和喜爱 Debian 已经有四年了,但对于创始人 Ian Murdock 却没有太多的了解,只知道他现在为 Sun 工作,Debian 这个词源自他当时的女友(现在的妻子)Debra 和他自己名字的组合。很浪漫的命名方式,如果有机会,我也希望能做这样的事。 :) 看到活动的介绍后,才知道 Ian 还是 Linux Foundation 的 CTO,Linux Standard Base 的 Chief。
今天活动的主要内容是 Ian 的个人演讲和跟现场的 Linux 用户交流。给我的印象是 Ian 比较健谈,对大家提出的大多数问题都聊了很多。可惜,可惜,最大的遗憾是,他说的话有 95% 我都没听懂……-_-b 平时自诩流畅阅读英文技术文档的我,听力实在是太差了。(以后一定要经常对照字幕看原版电影来练习听力!)
晚上九点左右,活动结束后,Ian 还坐在舞台的一角为大家签名,跟大家合影。我也有幸跟他合影了一张(感谢好友 AKAI 帮助拍摄!),本来想说 “I’ve loved and enjoyed Debian for several years and will continue, many thanks to your hard work!”,不过没好意思说出口。-_-b
这次活动到会的粗略估计大概有四五百人,应该是超出了报名人数不少,以致于主办方准备的简单晚餐在还有很多人排队时就已经被“洗劫一空”了。
PS: 发现到会的 Geek 中 MM 还挺多的。

links for 2007-10-05
十月 5th, 2007
-
Exerb is the software which converts scripts/extension-libraries of the object oriented language Ruby into a Windows executable file which can execute alone and independently.
Exerb——将 Ruby 脚本转换成 Windows 下的可执行(.exe)文件!
十月 4th, 2007
自从关注并使用 Ruby on Rails 以来,也对 Ruby 语言本身很感兴趣,并经常尝试用它写一些日常使用的小工具脚本。虽然自己使用很方便,但要分享给不用 Ruby 的朋友就比较麻烦了。
但是在 JavaEye 的某个帖子里知道 Exerb 后,事情就变得简单了。Exerb 是一个可以把 Ruby 脚本以及其依赖的 Ruby 扩展库转换成 Windows 下的单个的可独立运行的可执行文件的工具(这么长的一句话读起来是不是很有想扁我的冲动?:p),到 Exerb Project 的主页 下载安装包解开并执行里面的 setup.rb 即可完成安装。
用法也很简单,先执行 mkexy your_script.rb,让 mkexy 启动你的脚本并运行,这期间它会自动探测出 your_script.rb 所依赖的类库文件以及扩展库文件,并在 your_script.rb 结束运行后创建一份清单 your_script.exy,然后执行命令 exerb your_script.exy 即可生成 your_script.exe。OK,现在可以轻松地把你的 Ruby 脚本分享给朋友们了。(注1)
看到这里,也许你会跟我一样想,哇哈哈哈,有了这个工具,用 Ruby 来做 GUI 的小工具就变得有意义了啊。没错,对依赖 fxruby、wxruby 的 Ruby GUI 脚本也能正常的使用 Exerb 完成转换 (注2) (注3)。但是,由于 Exerb 会把 fxruby/wxruby 的运行库嵌入到 .exe 文件里,生成的 .exe 文件都非常大,fxruby 的在 9MB 左右,wxruby 的 11MB 左右。对于一个功能简单的小工具来说,这个程度的体积显然是很多人不能接受的。
事实上,已经有了一个 GUI toolkit 运行库很小,VisualuRuby,虽然它是 Windows Only 的,虽然它现在在 Vista 上还有点小问题。不过这又是另外一个话题了,我会在下一篇 blog 里继续聊。
注1: 在这之前也许你需要用 upx 压缩一下生成的 .exe 文件,因为它确实比较大,一个最简单的 Hello world 也有 1.4MB 左右。
注2: Tk/Gtk/FLTK 我没有试过,对 Tk 不感兴趣,Gtk 在 Windows 下的运行库太过庞大,FLTK 则是因为找到的 ruby-fltk 在 Windows 下的二进制发行版依赖的 Ruby 版本太老,源代码发行版还没来得及尝试自己编译。
注3: 对于 GUI 脚本,使用 exerb -c gui your_script.exy 可以避免生成的可执行文件运行时带有 Windows 命令行窗口。