阿龙的自留地

兼济天下则达 独善其身则穷

芋饺----别具风味的沙县小吃


身为版主,对于板块如此冷清需要负很大一部分责任,因为我太不勤快了。今天窝在家里,就写写酸不拉唧的文字,来增加这里的人气。

说到芋饺,很可能许多人还不知道是什么,因为在沙县小吃的菜单上并没有它,但对于沙县人就再熟悉不过了。沙县人一年到头在外面做小吃,每年春节回到家里,家家户户必做的小吃就是芋饺,即便是没有回家,有些嘴馋的人也会在小吃店里做芋饺吃,虽然没有在家里做的好吃。所以可以说,芋饺是在所有沙县小吃中最具特色沙县特色的。以至于正月初一时,常常挂在沙县人嘴边的一句话是,你家今天做芋饺了吗?如果哪家没有做芋饺,那么别人就会认为这家的家庭主妇太懒了。

下面来说说芋饺。从芋饺的名字可以看出,芋饺就是用芋子做的饺子,这是正确的,芋饺的确是用芋子做的饺子。那么全国各地几乎都有芋饺,沙县小吃的店里为什么就没有芋饺卖呢?我想,这主要还是因为原材料所限。做芋饺需要以下几种原料:芋子,木薯粉。对于芋子,要求淀粉含量很高,这样做出的芋饺才会有韧性,吃起来才会顺滑。当然光有芋子还必须有木薯粉,而木薯粉出了福建后并不多见,这也是为什么在其它地方很少有芋饺的缘故。光有原料还不行,还必须要会做芋饺。先将芋子煮熟,去皮,捣烂,再加木薯粉搅在一起,做成芋皮,木薯粉的份量非常难以掌握,即便是沙县人也马虎不得。太多和太少了,芋皮都会没有韧性,做出来的芋饺也自然没有韧性。因为木薯粉在外地实不多见,所以嘴馋的人只好以地瓜粉代替,但效果比不上木薯粉。

光有芋皮还不行,还要有馅。沙县人一般用竹笋做馅。福建多山,沙县也不例外,山中大多长有翠竹,每年春节,竹子就开始发芽,长出春笋,春笋极嫩,实在是不可多得的美味,再加入木耳或者香菇,有时也会加入猪油泡,加上炒功,美味的芋饺馅就做好了。每年春节包芋饺时,我都会忍不住吃上几勺馅,的确是太美味了。馅做好好,就剩下包芋饺了,芋饺一般包成三角形,不像蒸饺那样,何以如此,我亦不知。

美中不足的是,芋饺虽然好吃,但肠胃不好的人也不宜多吃,因为很容易造成胃酸。

追踪query too complex not enough stack错误


很早之前,在使用Sphinx搭建搜索服务时,遇到这个问题,到Sphinx for Chinese的群里请教,没有得到满意的答案,于是将sql_query_info 这个选项注释掉,就没有报错了。今天正好有时间,于是着手找到这个问题的症结,也算是为Sphinx做点贡献。

打开源代码,才发现用的是匈牙利命名法,看得不爽。也许因为没有Lucene那么出名,只有两个人在维护这个项目,代码里到处充斥这Fix Me,还好结构还算精良,要不然真不知道从和看起。本来想用GDB调试的,还不太熟练,于是就只好用最原始的printf输出。经过缩小范围,找到了一些蛛丝马迹, 在search.cpp中 的第331附近,主要的查询工作就在这里完成的,跳转过去之后

 if ( !pIndex->MultiQuery ( &tQuery, pResult, 1, &pTop, NULL ) )

锁定了到下面这个函数 在sphinx.cpp中 17301 if ( !sphCheckQueryHeight ( tParsed.m_pRoot, pResult->m_sError ) ) 继续跳转,到了下面这行 在sphinx.cpp中 16404 int64_t iQueryStack = sphGetStackUsed() + iHeight*SPH_EXTNODE_STACK_SIZE;输出之后,发现问题出在sphGetStackUsed这个函数里 在sphinxstd.cpp 中 1218行 int64_t sphGetStackUsed()

继续跳转,sphinxstd.cpp 中 1221行

BYTE cStack;
BYTE * pStackTop = (BYTE*)sphMyStack();

线程栈的使用大小就是上面两个值的差,继续查找 在sphinxstd.cpp return sphThreadGet ( g_tMyThreadStack );

这里用到了线程私有数据,看到私有数据的设置还是很正常,所以依然不知道哪里出了问题。于是索性将int64_t iQueryStack = sphGetStackUsed() + iHeight*SPH_EXTNODE_STACK_SIZE;这行改成int64_t iQueryStack = iHeight*SPH_EXTNODE_STACK_SIZE;这样sql_query_info就可以使用了,也不会再报query too complex not enough stack错误。

可是这个自己查询得到的中文显示出来都是乱码,我认为是没有设置SET NAMES utf8的原因,但又无法在sql_query_info这里添加这句。虽然在sql_query_pre = SET NAMES utf8已经设置了,但是因为不是同一个查询连接,所以无效。

所以最终我得到解决这个错误的结论,那就是注释掉sql_query_info这个选项。最坑人的是,官方的示例中是开启这个选项的。

Sphinx使用一元分词


之前说过用Sphinx给同事搭建搜索服务,可是他提了一个要求,也就是文本中有牛皮癣这个词,搜牛皮时也要能搜到牛皮癣,这个要求在经过分词后是不可以完成的。于是只好去寻求一元分词和二元分词的办法。 在http://lutaf.com/157.htm这里看到,“ sphinx只要把min_word_len设置为1,并配置charset_table,默认就是单字切分 ”于是试着配置,结果不行。于是只好看文档,在文档中找到,默认情况下,Sphinx已经支持一元分词。 只需设置 charset_type = utf-8 , ngram_len = 1, ngram_chars = U+3000..U+2FA1F 这样,再次搜牛皮时,就可以搜到牛皮癣了。

2013年的阅读


看了一下日志,今年读的书还是挺少的,特别是工作之后,有好多事情要做,人也变懒了,幸好还有记日志的习惯,知道自己变懒了。

《学习PHP和MySQL》,以备不时之需。

《看见》写的还不错,从这本书中知道新闻工作者是不能带着态度去采访的。

《野火集》龙应台的这本书就像一把野火,点燃了人们心中对自由的追求。

《推荐系统实践》一本推荐系统方面的入门书,不推荐看。

《那些忧伤的年轻人》与许知远的大学生活相比,自己的大学实在过得小儿科了

《在路上》,写得没劲,只看了前面搭车那段,后面就不想看了。

《旅行,人生最有价值的投资》,不愧是罗杰斯,这本书不仅仅是一本旅行书,书中更透露着许多投资方面的知识。而作者这种旅行方式极其令人羡慕,一边旅行,一边投资。

《集体智慧编程》只看了一部分章节,写的很不错,实践性强。

《且听风吟》随意的写,也是随意的看的。

《1973年的弹子球》,就这样不断的追逐,也许是一个在其他人看来毫无意义的目标。

《独唱团》,几乎每一篇都值得一看,个人最喜欢的还是石康的《看啦,这人》,写的很透彻。

2014厦门马拉松纪实


犹豫要不要去参加,因为今年元旦只放一天,且不是周末,这意味着要请假了,可是又没有去过厦门,没有去过传说中的海上花园,最终还是去了。

1 月2日早上,5:50分起床,刷牙洗脸之后,吃了一半前天买的红枣,不免俗的吃了一根士力架,就出门往会展中心赶,因为参赛手册中说,7:30就停止入 场,也停止放包。打的到了会展中心,很多了也在奔跑中,于是和志容也跑了起来,会展里已经很多人了,因为这次报名人数达到了8万人。找到存包处时,已经 7:40了,还是可以存包的,手册上吓人而已。存好包,热身,准备8:00开跑。

因为人太多了,到我出发时已经过了十分钟,所以只好以自己的时间为准。这一路上的人真是太多了,根本都跑不动,稍微跑快一点,前面就会有人挡着,所以顿时没有了跑步的兴致,私底下还决定以后不来厦门跑马拉松。

33 分,才跑到第一个5公里,顿时非常泄气,这人真的是太多了。我是喜欢跑步,但不喜欢凑热闹,所以一直都没有加入跑步组织,因为在我看来,跑步是一件非常孤 独的事,没必要加入大部队。《重庆森林》中更是说到,跑步这么一件非常隐私的事,怎么能让别人看到。跑着跑着,前面某个人的手机里传来许巍的《蓝莲花》, 顿时心情大好,在此之后,我也发现了在人群中跑步的乐趣,那就是再人群中穿梭前进,也就是在跑的时候,一定要估计周围人群的速度,抓住机会超过前面那个 人,就这样,一个一个的超过去,这样来不会被人群的速度所限。

1:03,到了10公里的地方,这个5公里的速度提高了一些,看来这个策略还不错。到了这里,人群已经不再像之前那么挤了,可以跑的快一些。

1:32,到了15公里了,此时已经到了中山路,道路变得宽敞,厦门的民众也在这里给运动员加油,顿时兴致大增,开始加快速度,一方面想展示一下自己的实力,给加油的人群一点信心.

1:59, 到了20公里处,这个5公里的速度明显快了不少,这也是在情理之中,因为前面跑的还是挺慢的,体力正好也保存下来了。之后就到了演武大桥,此时11444 号超过了我,于是与他展开了争夺,看他的实力,肯定是在4小时以内的,如果可以和他一起跑,那绝对可以在4个小时内跑完了。

2:50,到了30公里处,11444号,跑在我前面50米,渐渐的我的体力跟不上了,被他甩开,只能远远的跟着他,越跟越远。

3:32 到了37公里处,只剩下5公里了,如果是最初的5公里,28分内跑完是没有问题的,可是这是最后的5公里,也顾不上周围的人,就按自己的能力去跑。

3:44 到了39公里处,膝盖有些疼,双腿也不听使唤了,因为这次跑步忘了带护膝了,平时训练时都是有带的。如果拼命的话,也许可以跑完,可是我不想这样。于是只好慢慢的跑,事实证明,之后的三公里真是异常的慢。

4:05 到了终点。

在 此之前的广马和深山马,30公里开始才是我爆发的时候,那时候是多么的意气风发,所么畅快。可是这次跑厦门,30公里开始就是我痛快的来临,也许是因为前 一天去厦大逛,爬南普陀寺,消耗了我的体力;也许是因为与高手较量,打乱了自己的节奏。最终还是没有在4小时内跑完,不过,这次比上次的深山马快了9分 钟,也算是有进步了,下次有机会再超越自己吧。

领证书时,还是要排队,这令我想起当初扬州半程马拉松时,证书是由组委会邮寄的,这样多好,一张证书经过千里的奔波。

跑马拉松还真有意思,一大群人,为了各自的理由,来到这里,长距离的奔跑,在痛苦中挣扎,不断超过自我,跑的更快,更远。

期待下个月的香港马拉松。

以后再也不参加暴饮暴食的活动


4月份的时候,因为混乱的生活,肠胃受到重创,阑尾炎和胃病接踵而至,吃了些药之后,慢慢调养才变好一些。工作之后,每天早上来不及去店里喝粥,于是重新习惯喝牛奶和面包的日子。每天早上,一瓶酸奶,一瓶鲜奶,两个面包,慢慢的,营养也跟上去了。通过锻炼身体,坚持跑步,肌肉更加结实,体能也有了质的飞跃,而肠胃的状况也变得相当健康。然而前几天公司的活动,让我知道,这点健康还是非常脆弱的。

圣诞节,于是公司搞了几个小游戏,其中一个游戏是暴饮暴食,也就是团队6个人要在最短的时间内吃完三个汉堡,喝完三听冰啤酒。经过分配,我义不容辞的担任起喝一听啤酒和半个汉堡的任务。老实说,自从那次胃病后,我一直都不敢喝冰的啤酒,然而这种时候还是得挺身而出。喝完啤酒后,等队友吃完半个汉堡,又接着往下吃汉堡,几乎没有咀嚼就吞下去了,这完全不是我的风格,要知道,我吃饭时都是细嚼慢咽的,这样我的胃才会消化。正因为这样,我的胃开始反抗了,腹泻,胃疼接继而来。而我花了5个多月建立起来的牛奶面包体系也付之一炬。直到今天,肠胃才舒服一些。

于是我开始怀疑参加这种活动的意义。也不知道是谁想出这样的活动,说是为了团队合作,可是我不禁要问,团队合作就是要靠摧残自己的身体来建立的?在我看来,团队合作的建立更应该是通过解决问题,大家集思广益,这样才会觉得有意义。而这种暴饮暴食的活动,除了伤害自己的身体,别无它用。也罢,以后自己不参加暴饮暴食的活动就是了。

用epoll提供telnet服务(续)


用epoll提供telnet服务中说到,使用epoll提供telnet服务,用telnet登录后,然后输入命令,一切都很正常。只是由于一些原因,只能用nc命令,如echo stats | nc 192.168.168.128 9999,这个命令如果在这台机器上运行,还是会返回正确的结果,然而当这个命令在其它机器上运行时,则有时候会返回结果,有时又不返回。于是用样的命令去测试memcache,不论是在本机上还是其它机器上,都可以返回结果。暂时想不到memcache是如何做到的,于是先用echo stats | nc -i 1 192.168.168.128 9999来应付这个问题。可是这还不是最佳的解决办法,既然memcache能够做到,那么一定有解决的办法。

可喜的是,memcache是开源的,可以去看看它是如何解决这个问题的。打开memcached.c,文件不是一般的长,竟然有5000多行,慢慢找才知道memcache使用libevent,于是去了解libevent相关的知识,按照libevent官网和自带的示例程序,自己写了一个小例子运行,发现还是存在相同的问题。于是自己写了一个非常简单的单连接程序来取代epoll那一部分,可是还是存在相同的问题。问过同学之后,说是通过打印日志和tcpdump来查看网络包就一定可以找到。自己之前也用tcpdump查看过,客户端的确是有发数据的,服务端也收到了,可是为什么不显示收到的命令呢?依然没有解决我的问题,看来只有去《UNIX网络编程》中寻找问题的解答。

说实话,还真没有认认真真的看过《UNIX网络编程》这本书,因为之前对于网络编程总觉得异常繁琐,要调用socket,bind,listen,accept等函数才能建立一个链接,还要去填写sockaddr_in这个结构体,可是现在是工作,而且c就是这么底层,而网络编程也是很底层的,所以只好从头开始看起。此时对于TCP状态转换图才逐渐有些了解,没有想到啊,毕业5个多月后才知道这些,似乎有些晚了。难怪当初面试腾讯时,会被人鄙视说,许多工作的人都还能记得住这些转换图,你一个在校生怎么会不知道这些呢?其实当时很想和他说,这些都是工程实践很强的东西,没经常在这方面打滚,肯定不知道的,工作的人经常要接触这方面的东西,自然会记得住了。也罢,至少现在知道还不算晚。

看过书后,才知道有shutdown这样的东西,虽然以前看《UNIX环境编程》时,也看到过shutdown这个函数,可是没有写过实践代码,看过之后就忘记了。shudown的函数原型如下 #include int shutdown(int sockfd, int hoot); 返回:0--成功, -1--失败 该函数的行为依赖于howto参数的值。其中SHUT_WR选项,这个的意思是关闭连接写的这一半,当前留在套接口发送缓冲区的数据将被发送掉,后跟TCP的正常连接终止序列。用上这个,还是不行。

继续往下看,才知道有SO_LINGER这个选项,它使用linger结构体,如下:

struct linger {
int l_onoff; /* 0 = off, nozero = on <em>/
int l_linger; /</em> linger time */
}lin;

当l_onoff是1,且l_linger是0时,close某个连接时,TCP将会丢弃保留在套接口发送缓冲区的任何数据并发送一个RST给对端。于是我回头看代码,建立连接这一段,我用的是公司封装过的函数,发现代码中将l_onoff设置为1,l_linger设置为0,于是我认为是找到了解决的办法,将l_onoff改为0就可以了。试过之后,发现客户端还是收不到数据,看来还存在其它问题。

书上有一个poll函数的例子,于是认真看看。先胡扯一下,网上都说,当epoll工作在水平触发模式时,则是一个高效的poll,可是他们都不给出一个epoll使用水平触发的例子,只是在那里将epoll工作在边沿触发模式的程序抄来抄去的,非常令人失望。而《UNIX环境编程》也只是给出poll的介绍,没有给出例子,看了之后还是很无厘头。还好俊杰同学留下这本书,真得感谢他。用上这个例子,测试之后,发现客户端是可以收到数据的,将这段代码去代替epoll那部分代码,发现依然可以收到,于是问题的范围就缩小了。

打印日志,终于找到问题的所在。首先说明一点,在边沿触发模式下,程序一直在while循环中read客户端发过来的命令,当返回-1,且errno设置为EAGAIN;而当读到结束符,也就是客户端发送FIN包过来时,read返回0。看代码中的处理,原来在代码中,是检查最后read的结果,而不是检查最后读到的字节总数,如果返回0的话,则关闭socket,不再去处理命令,那这里有什么问题呢?通过打印日志,发现如果将命令在与服务端同一台机器上执行,则会输出

n 6 nread -1

n 0 read 0

因为是在同一台机器上,所以两个包是单独处理的,这样就会给客户端返回命令后再关闭连接。而如果不是在同一台机器上,则输出就会发生变化。有时它会收到

n 6 read 0

此时已经从客户端读到命令的,同时也读到了结束符,在我的程序中就会直接关闭连接,这样就不会去处理命令,发送数据给客户端。而有时它会收到

n 6 nread -1

n 0 read 0

这时它就可以正常处理。这就可以解释为什么之前客户端有时可以收到反射,有时又收不到。而当在nc命令中加上-i 1后,客户端的FIN包将会在命令发送大约一秒钟后再发送,服务端就可以正常处理。

通过解决这个问题,了解许多网络的知识,受益良多。如果对于网络的知识不是很了解,调试的过程总不能得心应手,找不到合适的地方输出日志。如果当初能想到输出n和nread的值,也许就可以很快的找到问题的症结,只是没有想到这里。《UNIX网络编程》果然是本好书,在实践过程中来看这本书,才发现其中闪烁的真知见灼,都是来自于实践,有些怀念Richard Stevens了。另外tcpdump确实是个好东西,对于查看网络包,非常方便。

最终的代码见这里用epoll提供telnet服务的代码续

2013深圳盐田山地马拉松纪实


虽然从天气预报中得知15号这天会下雨,但还是来到了深圳。14号当天从广州南站坐高铁到深圳北站,之后坐地铁去皇冠体育中心领取衣物,之后就坐观光1号线去大梅沙。预订的酒店在中兴通讯学院,在山坡上,环境还不错。志容状态不好,要呆在酒店休息,于是我只好一个人在外面溜达。先去看看大梅沙,到了大梅沙,才知道冬天的海边是挺荒凉的,毫无生气。天空下起了小雨,于是回酒店,天色还早于是到酒店的后山走走,一个人在山上走,还是挺刺激的,太安静了,想起鬼故事,皮肤都起鸡皮疙瘩了。就这样漫无目的的往上走,想走到山顶,可是天空下起了中雨,考虑到明天还要跑马拉松,只好走到半路就会酒店了。晚上和志容吃过晚饭后,就呆在家里休息,准备明天的雨中奔跑。看志容的状态,估计明天是跑不了马拉松了。

定了5:50的闹钟,准点起床,打开窗,外面还下着雨。洗漱之后,开始吃早餐,昨天买了一袋红枣,一个士力架,还从广州带了几个苹果,吃过早餐后,换好衣服,做准备活动。志容也吃过早餐,但最终还是没有一起去。于是只好一个人带上装备,前往月亮广场。已经有很多人在海滨公园了,雨天也阻挡不了大家跑步的步伐。7:20放好包裹,到出发处集合。7:58分时开始跑步,提前两分钟跑了。刚开始时,大部分人都还穿着雨衣,到了一个长坡后,小雨停了,明显感觉到浑身发热,于是大家都脱了雨衣,有些人还将雨衣丢弃。

32分,到达第一个5公里,没有了广马时的羁绊,速度还行。一路上保安还是非常敬业的,冒着雨在那里站岗。此时已经到了山中,吹起了风,穿着长袖还觉得有些冷,而旁边有人却在说好爽。一个具备相当实力的女跑步爱好者说,好爽是真的,很冷是假的。怎么能这么说呢,每个人都是一个独立的个体,对于生活有自己的体会,怎么能随便否定别人的想法。于是我记住了她,心里暗下决心,一定要赶在她之前跑完马拉松。我知道,现在还不是时候,后面还有很长的路要跑。这个女的很快就跑到前面去了,知道3个小时候,我才再次见到她的身影。

1:02分,到达10公里处,考虑到这是山地跑,也算是正常速度了。此时偷懒一会,拍了一张海边的照片。天空中再次飘起了小雨,我只好把雨衣再次穿上,之后及不愿意脱了,因为太冷了。最冷的还是双手,一直迎着风。头发也是一个问题,一直淋湿着,头都感觉有些冷,于是把魔术头巾套在头上,很有型。

1:32分,到达15公里处,跟着主流队伍跑,速度还算是稳定,以这样的速度跑,4个半小时肯定可以跑完全程。

2:05分,到达20公里处,志愿者小美女们的声音好甜,加油加油的,加的人心里暖暖的。到了二十二公里处,就有深山马特有的鸡汤喝了,也许深山马最为人知的就是这个鸡汤了。喝了两杯后,肠胃顿时暖和了许多。这一个5公里的路程是极为困难的,坡度一个接着一个,有一个特别长的陡坡,很多人都只好走上去了。

2:41分,到达25公里。这5公里跑的不容易。在这里的时候,已经看到有人从折返点回来了。这些家伙还是挺厉害的。接下来的路程里下起了中雨,幸好雨衣加身,还没被淋着。不过全身已经湿透了,裤子一直往下掉,因为穿着运动长裤,好麻烦。到达28公里的折返点后,一路上就非常畅快了。跑在我前面的是一个和我一样穿雨衣的壮实中年人,因为是下坡,他跑得很快,于是我想,跑着他跑,速度一定可以保证。于是跟着他的速度,一路上超过了许多人。跑完广马的经历告诉我,25公里到30公里是一个转折点,在这里超过别人的话,他就很难再超过你,事实证明的确如此。

3:14分,到达31公里处,速度上比上一个5公里快了很多。继续跑着,到了3小时25分时,看到了那个相当实力的女跑步者,于是超过她就成了我的目标。很快我就超过她了,但不久又被她超过去了。事实上,跑到这里的人,大家水平都差不多,就看谁能坚持下去。因为这一段路很滑,而我一直都不是下坡能手。于是就一直去追她。

3:55分,到了39公里处,再次超过了她,一定要在她前面跑完马拉松,谁让她随便否定别人的意见。估计他也看出我的心思,还是把我超过去了。可我也是一个不服输的人,于是再次超过她,并且把目标指向前面一个年轻人。就这样一直跑在她前面。最后400米时,一个女的把我超过去了,可是我实在无力,已经到了担心抽筋的地步了。最后20米是,那个女的竟然就在我旁边了,于是使出最后的力气跟她拼了,最终还是在她前面跑完了全程。

时间4小时14分,可是后来官网上给的结果是4小时22分,差太多了。跑完之后,去领补给。然后去打印证书,没想到要1个小时后才可以打印,非常不解。也罢,回酒店洗个热水澡,相当痛快。

这次马拉松虽然是在雨中跑步,有些地方非常湿滑,但速度还是挺快的,比广马的还快,也算是有进步了。更快,更高,更强才是体育精神,而不是安于现状。

壹基金举办的马拉松还是不错的,参加这个比赛也算是为灾区儿童做点贡献,虽然最后没有完赛奖金。一路上有许多开心的是,有给你拿水的小朋友,有为你加油的小美女,有一起鼓励的跑步爱好者,相信明年如果再来深圳参加马拉松的话,还是要报名深山马。

这次跑步我才真正意识到,跑步是自己的事情。每个人都有自己的追求,也无需强求别人和你一样的价值观。对于我来说,只有在速度上不断提高才有意义,不断根据路况和自己的体能做出变化,否则只能是一个无思想的跑步者。

写在深圳山地马拉松之前


明天就要去深圳参加15号举行的深圳山地马拉松了,此刻显得异常的平静,一个人呆在家里发呆,无聊,也不想和朋友联系,只是等待明天的到来。看天气预报, 后天是要下雨的,而且下的不小,后天的气温也很低,这意味着后天的马拉松将异常艰难。而我还是愿意奔赴深圳,去参加这次雨中的马拉松。

不 去多想这么做有什么意义,跑步本身就是一件很无聊的事情,只有很无聊的人才会去参加这么无聊的运动,而我本身恰好是一个很无聊的人。马拉松距离之长,对于 平时缺少训练的人来说,要跑完全程是一件很困难的事,上次广马的经历也说明了这一点。即使准备充分了,意外也会发生。跑马拉松也是一件相当违背人的本性的 一件事,人天生害怕吃苦,而跑马拉松就是要让你吃苦。在我看来,跑马拉松以来,最有意义的一点是回头看看以前的自己,那个对一千米就无比畏惧的自己,发现 自己成长了,此时心情有种别样的喜悦。而这次冒雨跑马拉松,本身是毫无必要的,何苦这么折磨自己呢?志荣说,如果下中雨的话,就放弃跑了,可我不愿意,真 心不愿意。跑马拉松是一种挑战,在恶劣条件下跑马拉松更是一种挑战,而人生本来就是一个不断超越自我,挑战自我的过程,怎么能这么轻易放弃呢?

想 想那个去参加环勃朗峰极限耐力赛的杨家根,正不断的超越自我,向世界证明,中国人的耐力也是可以的。在和志容说到,明年的目标是跑的更快,将速度提高到4 个小时跑完全程,志容说还是不要了,没必要跑那么快。我不禁想,是我还年轻,还是志容已经老了。也罢,每个人都有自己的生活追求,有自己的人生观,也不强 求别人非得认同自己的观点。跑步是这么一件孤独的是,就让自己孤独的去完成。

如果可以,让风雨来得更猛烈些。

毕业旅行


临毕业前,做了一次短暂的毕业旅行,一直想以文字记录下来,可是一直都太懒了,今天正好有这个心情,于是记下它,免得以后忘记了。

这次旅 行的最主要目的地是福州,去看望初中时的数学老师陈治平。今年他已经71岁了,我担心现在不去看他,以后就没有机会在见到他。虽然陈老师只教过一年,但他 对我的影响还是很深远的。初一的时候,在上尺规作图时,陈老师给我们展示了如何画正五角星,正是这次作图,让我知道了数学的魅力。后来我也去计算过,正五 角星中到处充满着黄金分割比。因为他,数学一直以来是我喜欢的一门课,以至于后来高考填报志愿时,会选择了数学系。本来打算去看看饼干的,她说不想见我, 于是只好放弃。沿途,还要去看看泉州的堂姐,福清的舅舅。

6月21日,从广州东站出发,坐火车到龙岩。就要去福州了,心情有些激动,仔细 算算,已经13年没去福州了。于是在微博里写到“对于大多数沙县小吃从业者来说 福州是一座有特殊意义的城市 正是从这里出发 他们走向全国各地 13年后 再次踏上去往福州的火车 有种难以言状的心情”。虽然我不是沙县小吃从业者,但作为从业者的子女,每年暑假都会去与父母相聚,也算是走南闯北了,自然明白福州的意义。

6 月22日,到龙岩。在龙岩中转时,本打算先去福清的,看了地图才知道,要先到泉州,之后才到福清,于是先去泉州堂姐家。想不到的是,龙岩已经通动车了,极 为方便,可是当我在火车站上厕所时,才知道这里的配套设施如此差劲,于是又写到“龙岩火车站的洗手间真是烂的可以 这样怎么能提高城市的形象 吸引游客呢 哎 可惜了动车组”。做动车就是舒服,环境舒适,不拥挤,列车不晃动,速度快。于是狂发微博,“暂定计划 泉州 福清 福州 杭州”,“漳州的房子很有特色 来到闽南地区了”,“呀 到厦门了 这次时间不允许 下次再来逛逛”,“闽南地区果然富庶”,很快就到泉州了。之后就去堂姐小珠家里。吃过午饭后,就和小珠,还有大外甥去上乐高的培训课,之后又去上小外甥的 早教课。这时我才知道,小珠这些中产阶级们在小孩教育上真是不遗余力,可是我还是不赞同这中做法。儿童的天性就是玩,只要与同龄人在一起玩,玩玩泥巴都够 了,何必要上那么多的培训课。

6月23日,上午去黎明大学,找外甥女,只过了一年,变得成熟许多,大学还是没有白上。下午就坐动车去福清 了。15年前曾来过福清,于是又在微博里写到“15年后再到福清 风一直吹”。在福清时,爸妈还是受过不少苦,因为这里的人很不讲理,有些人还会来闹事。晚上和舅舅聊天,才发现舅舅变老了许多,主要还是因为要考虑的事情 太多了。沙县的房价贵的惊人,这样一个小县城竟然均价就要7、8千了,太离谱了。开小吃虽然赚了点钱,但那都是血汗钱啊。舅舅也当了房奴,每个月要交 4000。舅妈和外甥女、外甥去学校了,晚上学校有晚会,外甥女要去表演民族舞。老实说,还是不喜欢外甥女去上民族舞培训课,还是多读点书好一些。

6 月24日,外甥所在小学开家长后,去当了一次家长,发现小学老师还是极为负责的。反倒是许多家长虽然口中说很重视小孩教育,但在行为上却大相径庭。就拿我 舅舅来说,他一直说,自己没什么文化,三年级之后的内容他就没办法教外甥女了,现在外甥女成绩很差,自己也没有办法。其实在我看来,更重要的不是教会孩子 什么,而是要给孩子不断学习的理念。像舅舅现在,有空的时候不是看书,学习,而是看别人打牌,这对孩子的影响是极为不好的。反倒是舅妈非常勤劳,以前一直 认为像舅妈这种喜欢保养自己的女人,一般不会很勤劳,没想到我错了。于是写到”没有不勤劳的母亲“。

6月25日,上午告别二舅一家,去福 州。到了福州,心情更加激动了,再次狂发微博,“久违了 福州”,“福州的公交车司机这般服务态度 比广州的公交司机差了不知几条街了”,“福州果然在大兴土木建地铁 我觉得先提高公交的服务更重要”,“很早就知道福州别称榕城 因为榕树多 只是不知道有这么多榕树 现在才见识到”,“公交的广播能不能别那么无聊 用福州话就算了 还要教别人学福州话”,“没想到20路公交只需要1元钱 亏了”,“白天坐公交就是好 可以左看看 右看看 现在才发现坐公交有时也是一种旅行方式”。见到陈老师才知道,老家伙还非常有活力,一头黑发,他母亲97了,身体还依然健朗,于是写到"老师71岁 依然一头黑发 他母亲97岁 依然有许多黑发 真是特殊的一家人 据老师说他们家基因就是这样",在异地见到恩师,还是非常高兴的一件事。陈老退休之后,还是干了许多事,其实以他的状态,完全可以多教几年书的,只是政策 不允许。之后离开老师,写到“告别了初中的数学老师 没想到老师71岁了还如此健朗 不出意外 20年之后还可以见面”,虽说来过福州多次,但还是不熟悉,于是写到“对福州不熟悉 只好别了老师就奔向耗子窝 连师大都没看上几眼 可惜了”。到了大学城,耗子还没下班,于是逛了一下大学城的菜地,这里好多菜。晚上在耗子家住,耗子还混的不错,住的是教师公寓。

6月 26日,买了下午2点的高铁去杭州,时间还早,饼干又不让去找她,于是只好在福州城里溜达,"没有想到福州也会堵车 长见识了",“福州的公交司机都偏年轻 这可能是他们服务态度差的原因之一 再加上福州市民的忍耐力 司机更加肆无忌惮了”,想起以前去过的西禅寺,报恩塔,于是决定去看看,可是”冲着报恩塔来的 竟然不让进 这叫人情何以堪啊“,于是只好到旁边的罗汉塔看看,”500罗汉神态各异 与卢沟桥的狮子相比 毫不逊色 表情丰富 仿佛在诉说着众生百态“,”500罗汉中唯一的女罗汉原来就是观世音“,”买了两斤多的荔枝 一个人在车站啃 荔枝的味道比起寺里偷摘的要好一些 可是其中的滋味要逊色不少“,很快就离开福州,踏上开往杭州的动车,于是写下"别了 福州 对于福州 作为一个匆匆过客 并没有太多的发言权 只好从公交这一点来说 应该说 福州的公交线路很全 转一次车 基本上没有到不了的地方 价格便宜 不拥挤 空调很有力 只是司机的态度相对较差 令人不爽 广播很无聊 多用福州话 太狭隘了 希望在这方面能有所改变"。在高铁上,不喜欢坐对面的女生,可是对于饼干,虽然素未蒙面,却有种相见恨晚的感觉,于是写下”人就是很奇怪 有些人 你看第一眼就很讨厌 而有些人即使没见过也很喜欢“,高铁就是舒服,沿途景色亦不赖,于是狂发微博,”高铁就是牛 上个洗手间也有大珠小珠落玉盘的感觉“,”宁德果然有优秀的渔港 有机会一定要去“。”许多人将普通铁路的习惯带上高铁 一上车就睡觉 其实这是非常浪费的 高铁沿途的景色很不错 就像刚刚的宁德的水港“,”在福建坐火车 隧道就是多“,”坐高铁出行有旅行的感觉 期待高铁横贯全国那一天“。晚上7点到大舅的小吃店,没有想到大舅也当了房奴,同样每个月要交4000。

6月27日,舅妈做了土豆饺子,吃了好多之后,道别舅舅一家,去爸妈的小吃店,老妈已经累的不行,闪到腰了,都不能蹲下了,好无赖啊,自己现在又没办法养着她。

6月28日,道别爸妈,踏上开往广州的火车。

为期7天的毕业旅行就结束了,这样短暂的旅行还是有许多收获的,通过比较,可以发现每个城市的不足以及吸引人的地方,如果每年都有这么一次旅行那该多好。在 旅途中,还带了一本书,那就是林丹写的《世界尽头》,这让我看到一个真是的林丹,一个有想法的林丹,于是写下“没有想到林丹在对待奥运金牌上会有如此见地 佩服 许多人确实粗暴地把国家荣誉和运动员的价值绑在最后的那块金牌上”,“没想到林丹在爱情 生活 体育上都有如此见解 折服”。