行者无疆 始于足下 - 行走,思考,在路上

gcc main.h: Precompiled header

c语言的开发总会遇到各种各样的障碍,诸如字节顺序、换行符、文件编码,以及复杂的工程构建问题,等等;而时不时冒出来的似曾熟悉的新概念,也会让你由衷的感叹:"C语言,简约而不简单"。

给定两个文件main.h以及main.c:

#include <stdio.h>
#include "main.h"

int main(int argc, const char *argv[])
{
    printf("Hello, World\n");
    return 0;
}

地球人都知道,可以用gcc main.c来得到可执行文件:a.out。但是,如果是gcc main.h呢?

lox@lox-pad ~/tmp/precompiled_header % gcc main.c
lox@lox-pad ~/tmp/precompiled_header % time gcc main.h
gcc main.h  0.03s user 0.01s system 89% cpu 0.045 total
lox@lox-pad ~/tmp/precompiled_header % ls -lh
total 1.7M
-rwxrwxr-x 1 lox users 6.6K May 11 20:02 a.out*
-rw-rw-r-- 1 lox users  106 May 11 19:53 main.c
-rw-rw-r-- 1 lox users   19 May 11 19:53 main.h
-rw-rw-r-- 1 lox users 1.7M May 11 20:03 main.h.gch

我们得到了一个新的文件,main.h.gch,并且,这个文件竟然有1.7M这么大。这个文件,就是我们要谈到的预编译头文件(Precompiled header)。

这个预编译头文件究竟有何作用?为何我们要多此一举?这要从编译器的具体工作原理讲起。大体来讲,编译器的主要工作过程为:预处理-->词法分析-->语法分析-->语义分析-->代码生成与优化这几个过程。而对c语言来说,预处理的过程主要是处理源代码文件中的以"#"开始的预编译指令,诸如"#include","#define"等,这个过程包括(参考《程序员的自我修养》P39):

  • 删除"#define",展开所有的宏定义
  • 处理所有的条件编译指令
  • 处理"#include"指令,将被包含的文件插入到该预编译指令的位置(这个过程是递归的)
  • 删除所有的注释
  • 添加行号和文件名标识,用于调试信息
  • 保留所有的#pragma编译器指令

可以看出,对于巨型的头文件,诸如Windows系统的Windows.h和Mac系统的Cocoa.h,这个预处理的过程也是相当的耗费编译时间的,而这类的头文件都有一个特点,就是头文件的内容基本不会改变,但是每次编译都要重新分析这些头文件,无疑是一种巨大的浪费,所以gcc main.h做的工作就是,将main.h的预处理结果存储位main.h.gch文件,以后再用gcc main.c编译的时候,gcc会先搜索main.h.gch这样的预编译头文件,如果预编译头文件存在,那么gcc就省去了重新分析main.h的过程。对于大型的工程来讲,这样的策略带来的编译时间上的减少,还是相当可观的。

Visual Studio某些工程中常见的stdafx.h,以及Xcode中大部分工程默认带有的.pch文件,都是预编译头文件。

与预编译头文件相关的还有一个Prefix header的概念,我将它翻译成"预包含头文件",这种Prefix header不但会默认被预编译,而且会默认被每个源文件包含,目前我所知道的,只有Xcode才有这么邪恶的做法。

事实上我不太喜欢这种Xcode这种出于好意的做法,当然并不是所有的开发者都需要了解这么多,多数人只需要按照模版新建工程然后用Interface Builder拖拖拽拽就好,至于背后生成了哪些肮脏的代码,who cares。

真正了不起的程序员对自己的程序的每一个字节都了如指掌。

所以我还是喜欢开个终端,架上vim和emacs,搭好makefile,all from scratch。谈到这里,我们再稍微挖掘一下gcc的潜力:gcc -H main.h:

lox@lox-pad ~/tmp/precompiled_header % gcc -H main.h
. /usr/include/stdio.h
.. /usr/include/features.h
... /usr/include/sys/cdefs.h
.... /usr/include/bits/wordsize.h
... /usr/include/gnu/stubs.h
.... /usr/include/bits/wordsize.h
.... /usr/include/gnu/stubs-64.h
.. /usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include/stddef.h
.. /usr/include/bits/types.h
... /usr/include/bits/wordsize.h
... /usr/include/bits/typesizes.h
.. /usr/include/libio.h
... /usr/include/_G_config.h
.... /usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include/stddef.h
.... /usr/include/wchar.h
... /usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include/stdarg.h
.. /usr/include/bits/stdio_lim.h
.. /usr/include/bits/sys_errlist.h
Multiple include guards may be useful for:
/usr/include/bits/stdio_lim.h
/usr/include/bits/sys_errlist.h
/usr/include/bits/typesizes.h
/usr/include/gnu/stubs-64.h
/usr/include/gnu/stubs.h
/usr/include/wchar.h
lox@lox-pad ~/tmp/precompiled_header %   

看到了吧,gcc -H给出了一个头文件中递归包含的所有头文件。

事实上最近我在做毕业设计,一套Window Mobile代码向iOS的移植,常常会看到源代码中包含一些无用头文件,虽有使用了include guard,但是某些时候还是会引起定义冲突,比如我就碰到了源代码中typedef int Boolean和MacTypes.h中typedef unsigned char Boolean之间的冲突。我在想有没有这样一款工具,可以扫描整个工程中无用的头文件以及所有源代码中无用的#include,然后做自动的清理工作呢?gcc -H应该可以作为一个开端。

newline: line feed and carriage return

数学是神造科学,计算机是人造科学

所以在计算机的底层软件中,有着数不清的tricks,让人很无奈,但又无法避免。譬如Big-endian和Little-endian的问题,据说UNIX曾经移植到另外一台不同"endian"的机器上,结果系统启动显示的是NUXI而不是UNIX;再比如ASCII和Unicode,以及各种各样地方编码纠结的关系;连最简单的hello world,放到不同的平台上,生成的字符串也是不同的,考虑下面的程序:

#include <iostream>
using namespace std;
int main( int argc, char *argv[])
{
    cout << "Hello\nWorld";
}

这个程序如果在*nix平台下执行,生成的字符串的长度是11:

lox@lox-pad ~/tmp> clang++ main.cxx -o main
lox@lox-pad ~/tmp> ./main | wc -c
11
lox@lox-pad ~/tmp> ./main | od -c
0000000   H   e   l   l   o  \n   W   o   r   l   d
0000013
lox@lox-pad ~/tmp> 

但是如果放到windows上执行,那么程序生成的字符串的长度是12,字符串的值是"Hello\r\nWorld",so,what is '\r'?

细究起来,我们发现,一个小小的newline字符也有如此多的故事,或者说,历史包袱。Wikipedia里面给出了完整的解释。简单来讲,'\n'和'\r'的概念来源于早期的打字机,'\n'代表"line feed",表示打字机打完一整行后相对纸面向下移动一整行的距离,而'\r'则代表"carriage return",就是控制打字机重新回到一行的行首,'\r\n'连在一起用才会使得打字机移动到新的一行的行首开始工作。而在后来的OS设计中,由于在TTY终端并没有实体的打印机控制操作,所以在设计上将'\r\n'进行了简化处理,只是不同的OS采取的策略不一样。我们仅以Windows、Linux、Mac这三种最流行的系统来做说明。

  • Windows: '\r\n'
  • Linux: '\n'
  • Mac: '\r'

所以Linux和Mac上的多行文本文件用Windows的Notepad打开,常常会出现多行并做一整行的现象,而Windows上的文本文件用Linux上的Vim或者Emacs等editor来访问,往往会看到奇怪的'^M'字符,事实上这个'^M'并不是'^'+'M'的组合,它就是Windows中的'\r'。在Linux终端中你可以通过输入Ctrl+V Ctrl+M来获得'\r'这个输入。

那么,我们怎样去掉这写讨厌的影响心情和版面美感的'\r'呢?方法有很多,最简单的,安装dos2unix这个小软件,然后直接dos2unix filename即可,archlinux可以通过"pacman -S hd2u"来获取dos2unix,反过来也有unix2dos这样的命令。

除了dos2unix,利用Linux本身的shell工具,也可以达到目的,比如:

  • sed 's/^M//g' filename
  • sed 's/\r//g' filename
  • cat filename | tr -d '\r' > newfile
  • vim: %s/^M//g

最后需要注意的是,C语言的标准库针对这种情况做了专门的规定,并针对性的规定了text mode和binary mode,这种小的trick平时不需要注意,但是没准某一天就会冒出来拷打一下你的耐心。

毕业大业

一场雨过后,午后阳光慷慨的洒下来,图书馆的空间溢满温暖,还有,春的味道。

半个上午以非常手段完成了《计算机网络》的6章作业后,内心已极其疲惫,就像一场长长的火车硬座长夜,一旦结束,想做的,无非就是找一张舒服的床,开一瓶美味的饮料,躺下来看一场轻松娱乐的电影。虽然内心里有一种声音在不断提醒我:“嘿,boy,计算机组成作业已经三次没交啦,数电过几天要补考啦,导师说下周要看你做的怎么样了哦……”。

累,很久没有感到这么累了。累到什么都不想做,想想要是生场大病就好了,这样就什么都不用管,躺在床上专心看书就好了。也不用像现在这样,上午看Objective-C,下午看C++设计模式,晚上去下载OpenGL红宝书,睡觉前还要想着八竿子打不到的时序逻辑电路;明天又要去看MIPS/ARM,还有拐弯抹角的LR(1)语法分析,以及900多页的《计算机网络》——Tanenbaum可真是能唠叨啊。

我以为我能搞得定,就像大一期末2天时间复习完《数学分析》那样,又或者像高三竞赛前夕一天复习完400页《基础有机化学》并且还能做几十页的笔记那样,但这次似乎有些不同。想毕业,我得:

  • 4.20 编译原理(考试)、数字电子技术(补考)
  • 4.22 毕业设计中期检查报告
  • 4.24 计算机组成期中考试
  • 5.13 数字电子技术毕业清考(如果补考不通过的话)
  • 5.16 电路原理(甲)I毕业清考
  • 5.30 毕业设计检查
  • 6.10 毕业设计答辩
  • 6.25-6.31 编译器设计、计算机网络、计算机组成、计算机体系结构考试

编译原理的期中考试混了下,作业用非常手段最后时段补齐了,LL(1)/LR(1)分析还模棱两可,两天时间希望能搞差不多吧;至于夏学期的编译器设计,8周,仅仅8周,你觉得8周来写一个编译器,这个Project如何?数字电子技术三进宫,一点没看,我就不明白了,我一个靠Linux/Script混饭吃的Programmer,干嘛非要去学什么狗屁触发器和时序电路?干嘛非要让我去学楼道灯开关的电路设计?我又不是Steve Wozniak。真的需要了解这方面的知识,一本《编码的奥秘》足矣;电路原理,不是我学不会,永远记住,这个世界上我学不会的课程不多,只是我不想学而已;计算机组成/计算机体系结构,MIPS,作为上个世纪80年代的恐龙,你还在不停地折磨你的学生,你好意思吗?计算机最重要的设计思想在于抽象、分层,我写我的C/Python/Bash,至于你CPU指令怎么流水怎么冲突,那是Intel/AMD工程师的爱好,和我无关。

至于毕业设计,在Windows上用VMware运行Mac OS X,里面开XCode用C++来封装Objective-C代码然后在狗日的慢的要死的iPhone/iPad Emulator上测试Win32-Style的C++程序,所有的一切让我想起来两个字:山寨。何苦如此呢。不是有Qt吗,干嘛要自己重新写一套,reinvent the wheel?怕开源,怕别人看到你的代码?可是为什么作为国内顶级学府的浙江大学的计算机学院,要用盗版的Visual Studio在盗版的Windows上写“版权保护”的程序呢?

至于Mac OS X,引用Linus的话,“简直是个十足的废物”,除了极致的工业设计,和Linux相比,简直一文不值。整个系统,图形界面自成一套,目录结构、命名风格和传统Unix的FHS完全不同;软件包管理系统,要么是Macports,要么是Homebrew,前者在系统中也是自成一套,往往会造成重复的程序库版本,后者的功能以及资源和众多Linux发行版相比相差太多;至于Mac产品设计的哲学和风格,我只能说,美观、人性,同时,霸道、专横、跋扈。怎么最大化一个Finder或者Safari窗口,让它布满全屏?不要告诉我这是苹果的哲学,以及对人性的关怀考虑,我所想到的,就是霸道,专横,自作主张。

至于XCode,和VS、Eclipse相比,简直是处在史前时代:没有代码补全、多窗口设计、无法调整窗口布局;Interface Builder,对于一个初学者来说,用Interface Builder拖来拖去,最后到底生成了怎样的代码?不知道——因为Interface Builder不生成代码,生成的是一个二进制的nib文件,序列化的Object。什么叫序列化?I don't know。对于一个拿了Baidu Offer的人,尚且不知道什么叫做对象序列化,Interface Builder的存在,是不是背离了最初“让开发变得简单”的目标,适得其反了?总而言之,我觉得用Interface Builder来写程序,就像用Dreamweaver来写html代码一样,甚至比那还糟糕,最起码在Dreamweaver里面你还可以看到底层的html代码,但是在Interface Builder里面,你什么都看不到;Objective-C,当所有的类要靠NS-、CF-等前缀来避免命名冲突,和C++的namespace相比,是不是有些原始和不雅观?Why Objective-C?除了一个专横霸道的Mac,还有永远也不会成熟的GNUStep,Objective-C几乎毫无用处。

吐槽归吐槽,连日来的压抑也让我开始明确自己的未来之路:

  • 我不适合搞学术:没有天赋、本科阶段也没有良好的基础
  • 我讨厌写Paper:就像我不会为了谈恋爱而谈恋爱一样,我也不会为了写Paper而写Paper。有人说学术研究就是“大牛挖坑,大众灌水”,为了发Paper去搞学术,有了Paper才能升职,不可否认,在没有找到一个更好的评比办法之前,量化评比就像中国的高考一样,确实是最经济最有效相对最公平的方式了,但是,我不喜欢,也不想去适应;
  • 我讨厌Deadline:我始终认为好的东西是雕琢出来的。Deadline压身,往往会分散人的精力,给人施加很大的压力,进而又会影响人的发挥
  • 我讨厌别人在后面催着赶着我去做事:那感觉就像一头牛被鞭子抽着闷头耕地一样。

还有三个月。三个月后,无论能否毕业,我要开始做一个差生。在也不为了一些名头上的东西,强迫自己做自己不喜欢的事情。即便是没有了Vi/Emacs,没有了Linux/C++,没有了[tex]\TeX[/tex],生活也可以是美好和令人期待的。不是吗?

有天来到桃花岛

有天来到桃花岛,看见雪莲花在洗澡,白白的屁股黑黑的毛, 胸前还有两个枣,呵呵,真是满园春色关不住,两条火腿出裙来”                                                                                                                                         ——我也搞个题记

2月底办理了百度实习的离职手续,半年的奔波即将告一段落。简单收拾了下行李,请北京的几个朋友吃了顿饭,高铁到天津,飞上海看妞。天津的火车站建的很没有规划,找机场大巴,最开始走错了方向,到了相反的广场,一路打听,却碰上好多司机,非要缠着我——“你给15块钱,我就给你送过去”,但是就是不告诉你该怎么走。折腾了几个来回,大半个小时,终于找到了机场大巴,人烟稀少,一小时一班,怕来不及,无奈拼了个车到机场,碰巧赶上飞机晚点,白花了几十大洋的打车钱。

8点左右到上海,七宝古镇,与妞相会,填了填肚子,然后去了一个KTV,见妞的几个朋友,唱了一首歌,再次印证“狂欢是一群人的孤单”——这种KTV我以后再也不会去了。

妞在筹划着找一份新工作,逃离上海那片鸟不拉屎的城郊破地,还有那个“私企经营国企作风”的鸟不拉屎的公司。于是在3月1号,周二的早晨,我和妞起了个大早,高铁回杭州——妞来一家公司应聘面试;我呢,回学校,上课,毕业。

新公司的地理位置很好,中河南路,西湖边上的一个小院子里,不高的小楼,明亮宽敞的办公环境,从这点上来说就很符合景观设计行业的定位。当然,为了寻找这家小公司,我们也付出了打的两辆、步行一公里、手机欠费顶着寒风哆嗦充值的代价。幸运的是,妞谈的结果还不错,很有希望。我和妞简单吃了个饭,简单告了个别,我看着妞的背景,被xxx路公交带走。

再然后呢,我回到玉泉,还是像以前一样,给自己列了一个长长的Todo list,大概有三十多项,一项一项的消灭。有些事情非常琐碎,比如注册学生证、打印课表、领校车票、3月18号x时x分在紫金港xx教室补拍毕业照、申请毕业清考、送书送发票、注销掉不用的银行卡等等等等。我发现,很多时候,这些看似毫不起眼的小事,却往往是你工作效率,甚至美好心情的一大杀手。往往是做事的过程中,思路偶尔岔开,然后就想到,“哦,自己的补选还没有确认呢”、“对,学生证要注册下,校车票不要忘了领,昨天去领了,老师不在,再不抓紧,校车票要没有了”,等等诸如此类,会让人的心境非常的烦躁。我也尝试过一些GTD软件,还有手机记事提醒,试来试去还是觉得一个随身携带的小本子加上一个Todo list最管用。做完一项就用笔划掉一项,重重地划,把这件事情从你的心底永远地剥离。以前摘抄过一片Emacs org-mode GTD的总结文章,也曾尝试着融入,但是发现用这种GTD方式,自己规划的时候往往会将客观情况想的尽善尽美,而将目标无形的定高一点,从而给自己造成一定的压力;而来这种方式讲究定时定点,事件等级分明,对于喜欢旅行散漫惯了的我来说,这实在是一种煎熬。

Anyway,除了一些乱七八糟的小事情,整个3月还是办了一些实事。

第一件大事,是实现了两年前暑假许下的一个诺言。那还是在大一的暑假,一个人走在朝藏的路上,早晨告别“炉霍欢迎你”、夜晚还有民警查房的县城旅馆,一路颠簸赶往甘孜、德格。路上有一个红衣藏人大叔,骑着辆摩托,在后面跟了我好久。我不知是友是歹,心想就算是歹,一对一我也未必会输,于是就一味闷头往前骑。快到中午的时候,大叔终于开口搭话,问我饿不饿,是否需要午饭。我戒心未定,说还好,一会儿到前面饭店吃。大叔提醒到,说前面几十公里没有饭店,不如你到我家简单吃点吧。我自然是甩口推脱,不过最终还是禁不住大叔的软磨硬泡,从了大叔,跟了那辆摩托,赶往大叔的家。摩托毕竟是摩托,大叔骑在前面,我在后面吃力地闷头跟着,大叔不时地回头看我一眼,生怕我跟不上,“丢了我这个外乡贵客”。

很快到了大叔家,典型的藏式民居,二层木房,一层用来做仓库,还可以防潮,二层用来居住。大叔家并没有太多“美味佳肴”,招待我的还是传统的藏粑、青稞、牛奶。不过这对一个从杭州走来,一路风雨,朝藏而来的行者来言,这,就是“美味佳肴”。享受完这顿“大餐”,我掏了掏口袋,大叔看明白了我的意思,说着半通顺的普通话,结合手势告诉我不用给钱。我也没再推脱,下了楼,看见两个孩子正围着我的“宝马”好奇地打转,转念一想:“要不给大叔拍张照片吧,等回到杭州后邮寄给大叔”。大叔一听要拍照,还是有点兴奋的,主动找来了身份证,好给我留下回寄地址。

就这样,我饱腹而去,还带着一个留下的承诺,或许还有大叔的期盼。而这一句承诺,随着我坐了五千公里的火车回到杭州后,就疲惫不堪,一直躺在我的心底,睡了两年半。其实完成这件事请很简单,无非就是找几张照片,冲印下封个信封帖张邮票,然后去玉泉正门吃饭的时候随手投到路边的邮箱,就好了。但是这件事请就这样一直拖着,拖到我再也没有拖下去的耐心,终于决定“抽出半天时间,把这件事情办掉!”。

亚马次里

第二件事也是源于一个承诺,好在这个承诺并没有沉睡得太久。细说起来又让我回想起大二暑假贵州支教的日子。一个非常可爱的徒弟,或者说可以是我的粉丝,在我走后一直和我保持联系,咨询中考、选校、文理分科等,当然,我很乐意做一些“指导”,或者没准,我内心深处也邪恶地享受这这种被崇拜的感觉。去年的十一月份,乖徒弟告诉我她要生日了,希望能收到我的礼物。我随口答应,也确实将这件事情写在了我的Todo list上面,但是随后的申请实习、考试等杂事,让这个承诺逐渐下沉,沉到心底,直到十二月底的某一天,晚上,迎着寒风走回住处的路上,平静的心忽然起了一片涟漪,呀,徒弟的生日已经过了好久了!!

怎么办?索性,既然已经过了,就拖一拖吧,等到了春节,连同生日礼物和春节礼物一起送过去,到也可以圆了这个承诺。就这样拖着,过了春节,过了一个月,直到我再次回到杭州,玉泉,我才终于下定决心:“明天一定要把这事儿给办了!!”

我买了支钢笔,抽出了书架上的一本书,《生命如一泓清水》,写了两页的书信,到邮局装了箱,翻开Todo list的本子,找到那行藏在角落里的徒弟的学校的地址,终于,完成了这份大业,又圆了一个承诺。

为什么会这样?为什么本来很简单的事情,要拖这么久?为什么本来应该是美好、幸福、期盼的事情,到最后反而有点“任务、deadline、莫大的决心”,这样的很不相称的感觉??我不知道,我想不明白。我唯一感觉到的是,在这个信息爆炸而又信息匮乏的时代,在这个知识廉价而又无价的时代,以前的很多东西,比如“写一封书信、在一个路灯下等女朋友、拍一个卷然后满心期盼地去冲洗照片”,这些诸如此类的事情,对我们这些生活在Web 2.0的人类来说,仿佛成了遥不可及的重体力活。

第三件事,如果细究,也可以算一个承诺,或者说,是一个承诺的售后服务。大三伊始的时候,我写了一份《行者无疆新手入门FAQ》,主要说明了一些旅行者社团的历史、户外运动的一些入门知识、以及布袋事件的一些解释说明,作为我一年会长工作的一个总结。写完后觉得还凑合,因此就发布了1.0版——x.y版,这大概是程序员的一个习惯吧,呵呵。而程序员的另一个习惯,就是1.0后还会有2.0、3.0、x.0……所以我也一直想找个时间完善下这份文档。只是由于我的大意,原先的Emacs org-mode的底稿文件被我弄没了,而想同时维护tex、doc和html三份格式的文档,还得重新写org文件,重新排版,这是个有点浩大的工程。所以这件事请也一直在拖。专业点的说法,就是吹了个号角,却一直在跳票。终于在3月中旬的一个周末,我“下定了决心”,抽出来两天的时间,对1.0文档进行了全面的修缮,重新排版,并丰富了部分章节,作为2.0版本。这应该是我毕业之前的最终版本了。

第四件事情,有关毕业设计开题。我最开始选的题目是《海量高性能空间数据的引擎研究》,我相信这个题目和我日后在百度Hadoop的工作有很大的相关性,无奈项目组需要,我又被发配回去,做一个嵌入式GUI框架在iPhone上的移植工作。其实我挺讨厌这个项目的。去年四月份做了一个月的苦力,恶心的要死。作为一名不算合格的Open Source理念的Programmer来说,对国内这种山寨小公司毫无版权意识、盗版横行、Ad hoc化的软件开发和学习,实在是深恶痛绝。如前面的日志所说,在Windows平台上用Vmware虚拟Mac系统跑iPhone模拟器来测试Win32-style源码的GUI程序,怎么想怎么别扭。

写作开题报告的过程也是一波三折。首先是论文资料下载的问题,我能找到的主要的中文资料都在万方,可是偏偏万方的论文都是加密分卷而且扫描入库质量极差极损伤眼睛的那种,索性抽出了一个晚上的时间,折腾出来了一个万方学位论文pdf合并脚本;其次是学院通知的凌乱和山寨的论文模版。且不说没有统一官方权威的论文开题要求通知,导致同学之前互相猜疑询问还是搞不清楚开题的很多问题,就连给出的[tex]\TeX[/tex]论文模版也是bug百出,从而导致cc98论坛学院论坛板块上诞生了各种各样的改良hack版本。作为国内top5今年又被武书连排到状元位置的威武的浙江大学,连一套像样的[tex]\TeX[/tex]论文模版都给不出来,还要靠自己的学生hack一下才能符合格式要求,真是让人啼笑皆非;再往深说,校内各种网站IE-only的霸道特性、校园网络VPN的Windows-only的特性、还有用盗版软件计算出来模拟出来的知识和论文的产权,这一切的一切似乎在告诉我们:浙大是主流,所以就要做主流之事——Linux/Mac非主流,所以我的校园网络反向接入不需要考虑Linux/Mac;国人盗版软件是主流,所以即使我浙作为国内顶级学府,自然也要有国内顶级的盗版软件资源(校内各种ftp、软件站),加上各种对盗版习以为常的21世纪的大学生。吐槽了这么多,Word还是要装,但是写文章还是要[tex]\TeX[/tex],所以我在Google Code上建了一个xecjk-template,提供了一个xeCJK日常应用的模版,并对各种*nix系统[tex]\TeX[/tex]的配置提供一些安装配置脚本,还有一些文档自动编译的Makefile、各种编辑器配置等等,刚刚开始做,希望能坚持下去。最后一个让我无法忍受的是毕业论文的外文翻译。必须感激Google Translate的存在,让我的外文翻译环节节省了很多时间,但是我始终想不明白的是,为什么我们写中文的毕业学术论文,要来一篇几千字的狗屁外文翻译呢?是为了告诉导师和评审团,“瞧,我可是看得懂英文,并且会翻译的喏”,无聊透顶。

第五件事情,整车。三月的杭州几乎一片阴霾,少见太阳,春天的太阳如同姑娘十八,羞羞答答,遮遮掩掩。连日的寒冷多雨,让我的膝盖坡感不适。甚是怀念大一周末骑车喝酒比赛吃包子的畅快岁月:


踏星而去,踏月归来——再上天荒坪(申精^_^)
  啊,zhengzheng告诉我说他这两天精神状态不错,于是我们去爬天荒坪吧。我说好呀,那我们去两上两下吧。zhengzheng真不愧为“浙大第一体力男”,痛痛快快地答应了。后来事实证明zhengzheng无愧于此称号,超赞,我服了。
    昨天下午一直在擦车,一直擦到晚上十一点,后来上网简单看看路线,十二点睡觉,半点才睡着。早晨三点四十起床,四点收拾好,到楼下,却发现门襟系统坏了,后来折腾了一下,搞不定了,于是就从侧门跳了出去。四点十分,正式出发。皓月当空,雾气连天,好在zhengzheng的卤素前灯亮得和汽车前灯有一拼。临安城外,无尽的黑暗中忽现一包子店,于是...包子店惨遭洗劫————我和zhengzheng两个人总共吃了二十一个包子,三碗豆浆,还带走了五个作为路上补充。话说此行一大失误就是走的时候包子带少了——这包子的效果比压缩饼干好多了此时已经六点半左右。中途经过青山湖,只是雾气茫茫,匆匆拍照留念,继续前行。临安城内遇见一壮观的老年人车队,临安的,几乎都为菜的变速车,据说上个月从杭州到北京骑了十七天,真牛!从临安城转向太湖源方向骑行,路上风景真好,红叶满地,红树分列两边,秋意正浓,我们骑得十分欢畅啊。中途遇见一神山,跟雪山一样,只露出山顶,山腰被雾气蒙住了。太湖源后有一个十公里左右的上坡,啊爬得令人崩溃,这还没到thp呢,先消耗了你一半的体力,中途巧遇两战斗力超强的旺财,没想到这两个旺财竟然还结成了统一战线,tnnd,这个没有追上我,另外一个又从上面杀将下,搞得我当时信心百倍,战斗了猛增,噌噌噌呼呼地蹬了几圈,就取得了对旺财的阶段性胜利。只是两个旺财还不甘心,又对zhengzheng虎视眈眈,zhengzheng不愧为浙大第一体力男,两眼一瞪,旺财立马蔫了,撒腿就跑了。
    到中午十一点半,我们已经走了一百余公里,可是还没有到thp脚下,于是我们决定先找家饭店补充能量,恢复体力。午饭三菜,二十六块大洋。一点继续前进!骑了五公里,终于到了天荒坪脚下,简单调整一下,开始爬坡。话说饭后爬坡就是有动力呀,十二公里的坡,我们只用了64分钟就上去了,而且中间没有休息!zhengzheng真的是猛男啊,超赞!有他的陪伴,我才能爬得这么快。在坡顶休息,zhengzheng去大便,话说这大便真是zhengzheng爬坡的功臣啊,要不是他的催促,zhengzheng也不会这么快的。脱了鞋,晒太阳,zhengzheng去找人拍照,没想到人品巨差,连找了五个人,未果,巨大的失败感笼罩在zhengzheng的心头...
    四点左右冲坡冲到天荒坪镇,其实原本打算要两上两下的,只是上午thp前的一段坡实在是大耗体力,因此放弃,回来时为了赶时间也抄近路返回,走的是04省道和104国道。也不是一帆风顺,中途大大小小的坡不断,天黑得时候我们大概离杭州还有五十公里。我在前面骑,天太黑没看清竟然还撞到了护栏上,ft!中途休息三次左右,每次十分钟左右。奇怪的是我今天不怎么喝水,尿却不断,路上肥了不少花草树木,为祖国绿化作出了卓越的贡献...后来zhengzheng总结出一段比较ws的话“你今天尿多,我今天屎多”,我又补充一句“屁一般多!”话说好男人三大标准:第一、大口喝酒;第二、大块吃肉;第三、大声放屁——别装B!一路骑行,至八点半终于赶到温州村,啊啊啊啊啊,累毙了,彻底疲软了,连吃饭的力气都没有了——话说我们虽然饿得不行,饭却没吃多少,主要是太困又太累,这次真的是zn到了极点了。累到极点就剩下爽了。月白风清,歌声嘹亮,两个老男人,灯光一点,就一句:真tm的爽!


翻翻这段大一时的稚嫩文字,再低头瞧瞧现在积灰一年半的山地车,抬头望望书架上一箩箩的计算机书和望不到边际的有关计算机技术的细枝末节的海洋,心里琢磨着“Fuck,你的人生能不能不要这么扯!”。趁着自己还有俩闲钱,花了一千多大洋,去淘宝上买了一批配件,然后在一个午后,逃离了公司压抑的环境,驱车去杭州Giant总店车行,换了全新的Giant ATX Pro天蓝色19色车架、全新的SRAM PG970飞轮、BB7线碟和刹把、全新的SRAM X7无视窗版指拨。换下的配件虽然很多征战千里,但是基本还能用,因此特地在hzbike上发了个帖子,希望能卖个好价钱。

第六件事情,泡妞。准确的说,是这个月的某一天,我和妞的三周年纪念日。我买了两个Sigg水壶,一个天蓝,一个殷红,蓝的给妞,红的自留,因为我更喜欢蓝色,而妞应该更喜欢红色。希望我们的感情能像这种水壶一样,简约,但,经典、耐用、永存。妞在这一个月也收获颇丰,3月1号来杭州面试新的公司;3月7号考研成绩出来,过了分数线,果断辞掉了上海的鸟公司;3月中旬奋战考研复试;3月底收到北大录取电话通知,Congratulations!对于我来说,这确实是一个十分完满的结果。月末,妞回杭州,碰巧海南大学的一个发小哥们来浙大复试(最终也录取了),几人聚首,把酒言欢,甚是畅快。

lovely bear

第七件事情,nikon D80。百度回来之后就一直琢磨着搞一架单反,相中的是nikon D90+nikkor 16-85小牛头,可是8千多的报价还是让我的荷包感到了莫大的压力。想想离毕业还有四个月,而自己已经承诺不再向家里要钱,D90的想法索性作罢。幸运的是,月底在zju88论坛上淘到了一套nikon D80,4300次快门,两块电池,4G卡,加上一个腾龙a14 18-200的旅游头和nikkor 50/1.8的标准头,全套只要4250。好机好价,看完帖子就毫不犹豫的拍了下来。前几天终于拿到了相机,非常开心。夜里都想抱着相机睡觉,搞得妞怨声载道,太没出息了。

第八件事情,学习。还是学习,无非就是那么几门课程。到了这个节骨眼上,我也终于学的乖了一点,虽然上课依然不多,不过已经开始在意平时成绩和作业的问题,也提早下了各科的PPT,了解课程要求和平时quiz的时间,做到心中有数。4月下旬两门、5月上旬两门、6月底四门,加上一个天天被人催被人赶的毕业设计,怎么想来,这半年也不会太轻松。人说“大四不考研,天天像过年”,我却没有一丝过年的感觉,每天早起的感觉就是今天又有一堆事情要做。还有3个月不到,剩下的时间抓紧泡图书馆,享受午后的太阳,至于公司毕设,看心情吧。大不了挨几句骂呗。人为什么总是要为了虚幻无实的所谓“美好未来”、“等俺有钱了”,来强迫当下的自己做很多自己不愿意做的事情呢?

除了以上种种,整个三月也看了不少书籍电影。书籍包括

电影有:

  • 《社交网络》
  • 《遁入虚无》
  • 《抢救切尔诺贝利》
  • 《野性非洲》

电影都看完了,书籍,除了三毛《撒哈拉的故事》,其余几本都只开了几百页的头,没办法,琐碎事情太多了,容不得你奢侈得拿出一个月的时间,啃一本书,啃透;甚至一本书还没焐热,还没读懂,又要去上课毕设写作业去了。

我几乎从来不打游戏,也很少参加一些无聊的聚会、三国杀等等,有朋友对我学计算机却不打游戏感到很好奇:“那你平时都有什么娱乐活动?”

我想了想:“骑车、看书、看电影吧,或者再不济就去youku上看看《搭车去柏林》、或者重温下《亮剑》,诸如此类。”

最后的最后,昨晚接到导师的电话,大概就是说我松松垮垮,毕设不给力云云。至此我也彻底断了留国内继续深造的念想。我讨厌Deadline,好酒是酿出来的,不是Deadline逼出来的。如果说以后的工作也要忍受各种各样的Deadline,那还不如辞职,去过过闲云野鹤的生活。呵。

行者无疆cn小传——人生在于有目的地折腾

2009/10/13 2:38:18写的文章,现在回头看看,真是感慨万千,再过4个月,我也要成为校友了,岁月如梭……

--------------------

户外也是一种经历。

最近沉迷于技术。一来大三了,课比较重,30个学分的专业课程实在是有点吃 不消,所以对版面关注也少了很多,承诺的小网站一直在拖,本来打算8月底完工,后来做的过程中对几种技术犹豫不绝,趁着开学前还有时间,就找了一堆的书开 始鼓捣。好不容易鼓捣出来个比较美观的界面,系统崩了。顺便全盘换血,从ubuntu迁移到archlinux。linux一大特点就是折腾。配个舒服的 环境又花了两三天的时间。开学了,课业比想象中的重,大三计算机的课不是盖的。本打算十一集中火力,结果来了两拨同学,耗了我近一周的时间。汗……

目前内容已经完工30%。历史和技术类已经完成。界面没什么变化。代码维护已经想到新的办法。我还想有时间加个论坛模块。不过这个暂时还比较遥远。至少这半年不行。

说来说去,是自己没事找事。总之是对自己两年工作的一个交代和总结吧。

行者无疆目前定位于一个浙大同学户外交流活动的平台。既然是平台,理论上没有任何的活动限制。但是作为一种义务服务,我们还是会做出一些善意的提醒。安全永远是第一位的。

很 多人,特别是新来到这里的人,会看到旅行者这三个字。是的,这三个字曾经是一个辉煌的存在,现在是辉煌的历史了。行者无疆和旅行者并没有官方上的联系,只 是旅行者的人鬼蛇神们经常在这个版块混,占领了这个版块罢了。向现在的三界总管,竹青,海妖,fly,都是旅行者的人,他们会成为旅行者阴魂不散的夜鬼 的。

仿佛人到大三,一下子就“老“了很多。在我看来,玉泉和紫金港的最大区别,就是紫金港依然是个象牙塔,玉泉却是个走向社会的跳板。玉 泉里面有各种各样的招聘会,有各种各样的实验室,有各种各样奔波的忙人,活着盲人、茫人。来到这里,走在玉泉的梧桐树下,昏黄的灯光,寂静的路,自然会令 人想到自己的前途问题。研?现在看来,我不适合在实验室。我没有很高的学术天赋,也没有太大的兴趣。同样,我也不会出国。成绩不行,加上家里没钱,加上我 实在没有想明白为什么要出国。唯一的选择就是工作了。

很早就定下毕业后直接找工作。成绩不行(老实说我在ckc后30%的),靠什么来体 现自己的价值呢?这个我也很早就在考虑了。抛开户外,我是在拿不出太出彩的东西(如acm金牌或者**比赛*名之类的)。想到的,一是提高英语能力,争取 去考个口译证书。虽然大学没怎么学过英语,但是专业特殊性,熏了两年的双语课程和英文原版教材,英语还是有一定基础的。二是搞好大三成绩。事实上大二最低 迷的时期曾经想过休学,身体有病,挂了一坨的课程。所以大三还要补很多的课程。前三周的课程成绩应该还不过。平均的作业成绩应该有90了。还有篇100分 的操作系统小论文。三是提高技术能力。尽量多看一些书籍。虽然课业很重,但是课外的东西依旧占了我50%的学习时间。linux,latex,很多这些看 起来学业无关的东西,真正学通,既能提高平时系统应用效率,又能在必要的时候令你独占鳌头。所以还想去考个linux的认证,每极2600米,两级 5200米。四是增加一些项目经验,就是传说中的实验室了。我刚进,还不是很熟悉。导师给的第一个题目还没搞定。五是扩大人际交往面,多认识一些牛人,从 而提高自己。很不幸的是前天的MSTC面试悲剧了。呼……六是实习。不过这是大三下的任务了。

基于以上,最近的忙碌也就是理所当然的了。所以爱车也闲了下来,偶尔闷骚,骑驴去杨公堤转转。最大用途在于做代步工具去hjc看momo了。还是很方便的,基本半个小时左右,比公交快,还能省2块钱。

最 近又陷入了一年一次的迷茫期。我时常在想,人这一辈子有多少时间是为自己而活的呢?人该为自己而活吗?如若不该,又该为谁而活呢?活着,人活着就是活着, 不为了谁。这也使我想到了户外的一些经历。事实上,刚开始玩户外是非常兴奋的,碧水蓝天,炉头锅具,矿泉水加紫菜,芬达刷牙,车辙划过中国地图。各种各样 的快乐。有一种快乐,叫做释放。无拘无束的ws,无拘无束的zn,无拘无束的fb。在别的地方很少找到这种感觉。最吸引我的,旅行者四周年庆,大家一起抢 蛋糕,盘子分没了,直接用手去接,有人蛋糕吃光了,把手舔舔干净,佯装着继续要蛋糕。然后大家一起高歌,西区草坪,《假行僧》,“我要从南走到北,我还要 从白走到黑……假如你看我有点累,请你给我倒碗水,假如你已经爱上我,就请你吻我的嘴……”我从来没有看过这样的一个团体,互相之间可以如此的肆无忌惮。 这是旅行者最吸引我,也是旅行者很特别的一个地方。

后来的径山比赛,布袋不小心翻下山崖,触目惊心,而我当时还在现场,第一时间和消防员 赶去营救。这件事情对我产生了极大的震撼。我现在想到这件事还是忍不住心中一痛。当然,事情已经发生,该面对的必须面对,该承担的,还是会有人去承担。无 论是布袋,布袋的父母,我们曾经的旅行者俱乐部,团委,党委,浙大往事,88,98,生命之重!所以各位在去户外寻求刺激、寻求释放的时候,一定要记住两 个字,珍重!顺便告诉大家一个好消息,布袋现在已经可以借助器械直立行走12米了

07年暑假,我一个人从丹阳宿舍门口骑行1938km,沧州到天津搭车,骑到河北宽城老家的门口。耗时21天,耗费800元。十九岁的青春,汗水挥洒了一路。

07 开学初,我被赶鸭子上架,做了外联部长。中途还小有成就的去扫街拉赞助拉来了300元钱。那半年的事情其实很杂,9月布袋爱心笔会,国庆温州骑行,十一月 的烟花大会和社团文化节定向越野活动,以及我自己去过的莫干山、天荒平,还有即将起步的奥运五环骑行活动,整个大一上,都在激情澎湃的做活动,总结,做活 动,总结。成果是,爱心笔会我们邀请了三十几位画家在西湖保处路茗仁茶馆,募捐到三十几幅名人名家书法绘画作品,不过后来由于某些原因,这些画目前还没有 拍卖出去;国庆骑行,结识了zhengzheng、momo,前者成了我大学里最铁的哥们,后者成了我现在的女朋友;烟花大会,一片狼藉,痛苦反思,也是 一种成长;定向越野,虽然我现在觉得很无聊,但当时做的很辛苦,耗费了几乎两周的时间,拉了三百的赞助,也是为数不多的面向全校的活动。

08 年上半年还是比较忙的。协助哇哈哈搞奥运五环的活动到四月,最后夭折,惋惜,不过也是由于我们当时高估了自己的实力。协助巫婆做会刊,后来因两人都没时间 继续搞下去,人手又不够,夭折,惋惜。带队去了绩溪参加比赛,比赛比较水,所以成绩还凑合,第四。还和玛雅去了宁海,不过由于自己不会轮滑,在全县父老乡 亲面前丢尽了脸面。每周二、四抽时间去参加天择户外公司的领队培训,直到暑假告吹,由于个人原因没有继续下去。五一带队去了青海湖,私人活动。当然要感谢 zhengzheng,帮了我很多忙,其实主要是他带的,即是领骑又是财务,嘎辛苦的。momo也去了,两人之间种种,不再详述。课程是34个学分,竟然 没有挂课,平均80左右,让我很是意外。不过这34个学分绝大多数都比较水了。和大三的不是一个级别的。对了,那半年刚好开始谈恋爱,每周两人草坪时间还 有若干。

现在想想08上半年还是挺丰富的。丰富的连自己都有点不相信了。唯一的缺憾就是学术原地踏步,计算机也是。唯一的进步,印象中的,可能是学会用word自动生成目录了。学了点indesign和photoshop的皮毛。

08 暑假去了西藏。单车三千公里不到。耗时43天。杭州走的。走到波密顿悟,搭车到萨,火车回杭。耗费4000-5000之间。基本是家里的钱。很惭愧。本来 开学想好好写一番,一来自己文笔烂俗,二来开学当了会长,各种社团流程、团委闻讯、资料整理忙的不可开交。国庆去参加了青年旅舍华东区的年会,说白了就是 去玩了。240米,三天,黄山。十月份的时候旅行者走到了关口,各种困惑、各种讨论、各种小剧场会议、各种团委交涉、各种校区奔波,又是一片忙碌。到十月 下旬,宣告失败。从此开始了长达半年的病痛生涯。痒疹,耗时半年,3000米,口罩若干。省下半年水果、鱼腥,长了半身疙瘩。到09年5月接近痊愈。据说 伤疤是男人的勋章,自此我的身上多了十几个小勋章。不再赘述。

整个半年我最好的两个朋友在闹分手,要死要活。搞的我也纠结到死,夹在中间 的味道真是不怎么滴。大二一开始的课程还是挺难的。一时不适应,加上乱七八糟的诸如晨跑之类的破事,直接导致我状态的极端低迷,每天靠youku笑傲江 湖、狼毒花度日。头脑里充斥着各种乱七八糟的想法,诸如休学出去旅行,找时间泡图书馆看红楼,决定搞acm等等一干不切实际的想法。最后考试彻底悲剧,挂 课挂了一半……nnd,老师也太不给面子……那段时间自己几乎从人间蒸发。行者无疆版上也见不到自己的身影,课也不怎么去上,很多人见到我都是一份极其诧 异的表情。几乎处于一种自闭、痛苦、迷茫的状态,还要时不时的抽时间去安慰别人,让他们想开,不要轻生云云。汗。不过,轻生我到还不至于。

寒假是在一片病痛与苦闷中度过的。思考了很多,也看清了很多。万事到最后总会有个结果,不行就顺其自然。现在,我的病好了,两位好朋友和平分手了,各自过的还不错;旅行者不在了,朋友还在,行者无疆的人气还是赞的。不过,这是后话了。

09 年开学,自己重新调整状态,找回了原来的自己,从新走上了正道。专业上开始折腾linux,几乎本着一周两本书的速度在提高自己linux的知识。课程有 5门左右是80+的。两门70左右的。体育因为晨跑挂了。专业课挂了一门。相比较大二上,补考过了一门,已然是一个进步了。令我生厌的是我们学院的辅导员 居然给我父母电话通报我挂课的事情。搞的我极其郁闷。我又不是小孩子了。用得着这些吗……

旅行者方面,自己摆正了心态,也重新开始做一些 积极的事情。首先是接手了装备间,半年结余进1400元,都给了布袋。发起卖书活动,主要是若男组织的,特此感谢,卖了将近1000,也给了布袋。搞了两 次新手入门讲座,在白沙的草坪。虽然第二次只有四个人。不过还是有一定效果的。向现在的scoole,那西,都是我一手培养的啊。五一突发奇想,虽然只有 三天,还是去了躺神农架骑行,带了jiayao和leeetion,中途车架悲剧断掉。后来耗费我280米。jiayao现在是装备间的主管,暑假去内蒙 古骑行,爬坡能力超赞的。五一回来后带了三次活动,长乐,绍兴,天目山。人数还算不少,平均每次6、7个左右。人气当然比不过破船了。对于车队骑行,我也 只能做这么多了。除了这些,还搞过一次奶茶会,一次图书馆的见面会。图书馆那次以教主的身份给与会的各位洗脑了。抱歉抱歉。真的是对旅行者感情太深了。那 次还小小的给scoole、老包们布置了09-10学年旅行者的工作任务,到目前为止,完成状况不甚乐观,处男大人不甚满意哦。不过开玩笑的了。旅行者已 经成为历史。

09年的暑假,我上了两门课,4个学分,80,半个月的时间去贵州湄潭支教,看了5、6本技术书籍,并着手做旅行者小网站。直到开学,新的学期,新的思考。

旅 行者给了我很多。户外的体验,人生的思考,社团的经验,还有爱情的甜蜜。我和momo,两个初恋的傻孩子,一起享受过启真湖的月亮,牵手逃票去闻过太子湾 的郁金香,青海湖边的拥抱,东极岛激动人心的日出,南浔古镇的小吃,成都的龙抄手火车站的不舍,神农架的风吹雨林,一起走过的图书馆的日日夜夜。还有那点 点滴滴,一件一件的礼物。

天边夕阳再次映上我的脸庞 
再次映着我那不安的心
这是什么地方依然是如此的荒凉 
那无尽的旅程如此漫长
我是永远向着远方独行的浪子
你是茫茫人海之中我的女人
在异乡的路上每一个寒冷的夜晚
这思念它如刀让我伤痛 
总是在梦里我看到你无助的双眼 
我的心又一次被唤醒 
我站在这里想起和你曾经离别情景
你站在人群中间那么孤单  
那是你破碎的心 
我的心却那么狂野

你在我的心里永远是故乡 
你总为我独自守候沉默等待 
在异乡的路上每一个寒冷的夜晚
这思念它如刀让我伤痛  
总是在梦里我看到你无助的双眼 
我的心又一次被唤醒 
我站在这里想起和你曾经离别情景 
你站在人群中间那么孤单
那是你破碎的心 
我的心却那么狂野  
总是在梦里我看到你无助的双眼 
我的心又一次被唤醒 
总是在梦里看到自己走在归乡路上
你站在夕阳下面容颜娇艳 
那是你衣裙漫飞 
那是你温柔如水

这首歌,杭州到拉萨,我哼了一路。

两年了。不知不觉人已大三,成了玉泉工科男。现在想想这两年的生活,基本上还是蛮丰富的,滋润谈不上,离我的标准还有一定的距离。技术上从对电脑一窍不通到linux现在的应用自如;社团就不说了,两年的大起大落,大悲大喜;两人之间还是挺好挺和谐的。

最大的感悟在于,人生的意义在于折腾。是有目的有意义的折腾,而不是瞎折腾。人这一辈子就这么几十年,多一些经历,成功也好,失败也罢,都在延长自己的生命。最重要的是,当你决定去做一件事情时,一定要想明白,为什么去做?这个问题比怎样去做更加重要。

为什么出国?为什么考研?

很多人出国是为了赶时髦吧?很多人考研是为了一种逃避吧——怕能力不够,无法适应社会,在学校在蛰伏两年?

当 你忘记所有你学到的知识,剩下的那一部分,就是教育的真谛。很多时候,技术,或者说,学习,成绩,并不能决定一个人将来能够走多高,走多远。 魄力,魅力,毅力,意志力,领导力,沟通能力,英语能力,这些更虚无、更飘渺的东西,才是人生的要诀所在。拿我自身来说,我觉得,恋爱让我学会了将心比 心,学会了关心;社团让我学会了基本的人际交往和识别能力,那些人是可以深交的,那些人是不能用的,那些人是负责的,那些人是有事就拍拍屁股走人的;户 外,更让我享受到了生命的怒放——

曾经多少次跌倒在路上
曾经多少次折断过翅膀
如今我已不再感到彷徨
我想超越这平凡的生活
我想要怒放的生命
就象飞翔在辽阔天空
就象穿行在无边的旷野
拥有挣脱一切的力量
曾经多少次失去了方向
曾经多少次扑灭了梦想
如今我已不再感到迷茫
我要我的生命得到解放
我想要怒放的生命
就象飞翔在辽阔天空
就象穿行在无边的旷野
拥有挣脱一切的力量
我想要怒放的生命
就象矗立在彩虹之颠
就象穿行璀璨的星河
拥有超越平凡的力量
曾经多少次失去了方向
曾经多少次扑灭了梦想
如今我已不再感到迷茫
我要我的生命得到解放
我想要怒放的生命
就象飞翔在辽阔天空
就象穿行在无边的旷野
拥有挣脱一切的力量
我想要怒放的生命
就象矗立在彩虹之颠
就象穿行璀璨的星河
拥有超越平凡的力量
我想要怒放的生命
就象飞翔在辽阔天空
就象穿行在无边的旷野
拥有挣脱一切的力量
我想要怒放的生命
就象矗立在彩虹之颠
就象穿行璀璨的星河
拥有超越平凡的力量

差 不多了。一个不会写文章的我,竟然也能罗嗦到如此的份儿上。不管我今后怎样,工作怎样,cc98-个性生活-行者无疆,我会默默的在这里潜水的。旅行者不 会消失,正如户外一样。但是安全问题也不会消失,也如户外一样。大家在自我激情自我释放之前,先想想你的父母,想想布袋。

Ranwu Lake

同样的三个字,送给行者和momo。

晚安。




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee