behind a MAC

虽然说计划很难有实现的时候,但每年人们还是欺骗自己作出一个看似圆满的计划。一年过去,看着从未实现的计划叹一口气,再列一个新的计划。(咦,我好像想起了谁)

在列计划的过程中,重新审视自己倒也是个不错的体验。不管能不能实现,下面是我的新年计划。

  • 开始写技术博客,养成把知识记录下来的习惯
  • 坚持每周锻炼三次
  • 每周一篇博客(我开始不相信自己了)
  • 更加深入地学习网站前端(HTML 5, CSS, javascript, jQuery, bootstrap, less/sass)和后端(django)的相关知识,完美地实现两到三个网站
  • 预习课程
  • 完成作业,不旷课

就这么多,这些是从列了一长串里面筛选出来的最重要也比较现实的几个。人成熟的一大标准是明白自己干不了什么,嗯。

2013还有几个小时就过去了,我在空荡的工业设计系的专教里面坐着,听着楼上一群人聚起来吃火锅的嬉笑声和远处文广上新年狂欢晚会的低音炮里发出的节奏声,再看看面前屏幕上平时看起来很亲切的代码,突然有一种很矫情的孤独感。大学新同学要吃喝玩乐的时候总有一群人,想说说话却很难找到一个愿意听的。不管了,有些话无论说给谁,说出来总是好的。

好吧,那就说说2013。

高考前的那段时间好像过去了很久很久,像是几年前的事情一样。虽然有人会说当时很辛苦但现在想想却很快乐之类的话,但我知道这只是人类自我保护的本能——我们倾向于忘掉过往经历中痛苦的情绪。这功能其实挺牛逼,否则人生苦短哪来那么多勇气支撑我们走下去。但准备高考的痛苦真真实实地被我用文字记录下来,再读起来还是能体会到当时的压力和无助,不想为它说任何好话。

六月份,高考,出成绩,准备香港三所大学的面试。老师们很不支持这个决定,但同学和家人还是站到了我这一边。在咖啡厅和嘎儿练习口语,用英语辩论奢侈品存在的意义,聊到科技话题时我一如既往的话唠;和大家讨论考后请饭事宜的开心;一个人出发去北京面试心里的小激动;傻逼了以后飞去深圳的慌张;遇到好心大叔的感动;全部被拒之后的失落。大部分乱七八糟的事儿都在七八月份涌出来,很值得回味。

去过北京很多次,但终于腾出一个假期的时间好好逛逛北京了。没计划,想到哪玩到哪的方式深得我心。可能是玩得太随便了一点也不上心,作为大学报道前的最后一个大型活动,这次旅行并没有给我留下很深的印象。

听着《新长征路上的摇滚》,糊里糊涂来到大学,瞬间生活丰富起来。选课选老师有极大的自由度,鼠标划过这些奇奇怪怪的课程时居然有当年在电脑城把脸贴着玻璃看最新出的电子产品的感觉。听说这门课很水?退掉。计算机类?选上。文学类,还是外语教学?这不点一个说不过去呀。……按着这个节奏跨了一些大类选了三十几个学分,想着大学真不错。

接着是组织纳新。学生组织是学校领导下的一些有名头的组织,我们这里比如有学生会,求是潮,勤创,青素。本来想加入最有技术含量的求是潮,但因为项目经验太少没有通过。现在看来真是塞翁失马,因为那里的工作强度会占用大部分课余时间,并且会做一些不是很有意义的工作。由于之前听到了太多关于学生会的负面消息,反倒让我更加感兴趣了,没经历过怎么批判?本着这样作死的想法进了校学生会。

一段时间后,我发现学生会的工作可以说对我没有任何吸引力。没有很多有技术含量的活儿,只是事无巨细地为每一个活动跑流程、跑物资、写策划。我觉得这一定是我自己的问题,不能先下判断呐,带着情绪工作多不好,于是加入了一个活动组。……嗯事后我发现跟自己过不去是不对的。基因这东西太牛逼了,根本不听你解释啊,「做活动可以锻炼一下这个组织大家的能力嘛...」「滚,老子不干!」「别这样,你看和大家团队合作搞定一件事情还是很快乐的呀...」「滚,老子不干!」「那把校会作为一个平台来看也可以认识很多有意思的人呐...」「滚,老子不干!」「好吧...」。嗯,屈服以后就渐渐淡出了学生会。

没了组织还有社团,微软技术俱乐部可以说是今年找到的最有归属感的一个地方了。大神云集,当年做过的题库网站的站长、ACM世界冠军队员、看得死去活来的算法书的作者竟然都在这里。想学东西的时候有对内的小课堂,想做东西的时候有项目派发。全邮件交流,一个项目从开始到结束可能大家都不会见一次面,群里时常讨论点前沿的技术,可以肆意说各种名词而不必担心看不懂的人的嘲讽。这种感觉就是——找到组织了。

另一个要说的活动就是TEDxZJU,十一二月份的主要精力花在了这个上面。我进入志愿者团队后被分配到了线上宣传组,但其实外联、网站开发、运营和宣传的工作我都有参与。花了很多精力,但看着自己参与办的TEDx大会还是很有成就感的。收获的其实更多,技术上为了网站开发我自学了前端和PHP,更重要的是在一起筹办大会的时候认识的一群好玩和有才的人。注意,好玩,但必须有才。和工业设计系的学长学姐混得很熟,看他们做设计,听他们讲有关设计的理念,讨论技术和设计的关系,真的是学到了很多。TEDxZJU必须得是2013的一个亮点。

活动到这里就算告一段落了。投入大量精力在活动上面的副作用就是,学习落下了。三十几分的课程,没有足够的精力投入是很难收到良好成效的。虽然早有准备,但大学里的学习方式还是让我不适应了一下。老师根本不管,也没法管,学生的学习情况,上课只是按部就班地讲书,台下的学生是否理解了,是否跟得上,不去理会。这也情有可原,二百多个人的班,怎么管?直到现在我还是不适应这样的大课,到教室的时候前三分之二的座位已经被占满,坐在后排既看不清黑板,也听不清老师讲话,一段时间后就放弃努力了。高中向往和标榜的自学,突然以这种方式强加,一下子还是没接受了。

这篇文章从一三写到了一四,新年狂欢夜上传来被翻唱糟践了的《杀死那个石家庄人》让我整个人都不太好了。一三是转折和开始,我还是做得有些不好,百分制下我给自己打七十八分,但愿这不要是我的均绩。一四来了,新年里希望一切都好,但最好来点挑战,不要平庸地过去。

还有论文等着写,就这样吧。

2013杭州马拉松奖牌证书

成功完成了人生中第一个半程马拉松,21.0975KM/2H10Min。有人问我这21公里是怎么坚持下来的,以及为什么我竟然会喜欢跑步?这其实是两个忧伤的故事。</p>

先说第二个问题好了。我从小不爱出门,怕见生人,同龄生人都不行。于是自然而然没什么机会参加集体活动。等到上初中的时候,体育课上有人打篮球,有人踢足球,「准入门槛」已经产生了。意思就是说打得好的,踢的好的,是不和我们这群人一块玩儿的。于是我们几个弱菜聚在一起随便瞎玩,没有规则,没有技巧,只为打发时间,并没有什么乐趣。再后来高傲的我就不再和他们一起玩儿了,逢体育课我就在教室里写作业。

但是初中我遇上了一个极好的班主任,对像我这种经常无视学校规定的人极其厌恶。于是为了躲避见她,我常年以身体不适为由请病假。在我没在学校的日子里,她极尽讥讽之能事,说像我这样的学生学习再好也不会有好结果,说以后一定是药罐子,整天离了吊瓶就活不了,说罢还模仿霍金状。作为一个青春期的愣头青,我甚至想把这段录下来然后到教育局举报她,后来鉴于没有称手的设备才恨恨作罢。然后接下来就是一个励志的故事,我开始每天跑步,开始只能跑两圈,后来慢慢到三圈,五圈,七圈……一个人。开始是泄愤,后来慢慢变成了习惯,再后来就变成一种释放压力的方式。中考体育,她居然和其他老师放出狠话要看我的笑话,被我以满分扇了一记响亮的耳光。

有人跑步是在跟自己较劲,委屈了、心情不好了、失恋了什么的,到操场狂跑两圈,用尽力气是目的。我也是从这样的状态开始的,但当距离继续加大到3KM, 5KM的时候,跑步就变成了跟自己身体的对话。是抗争到妥协再到超跃的过程。过了第一次难受点之后,大脑可以完全放空,什么事情都不想,只关注到身体的每一个零件的感觉。长距离跑步可以有和冥想一样的效果。

跑步的故事讲完了。

在杭州跑步感觉身体变得很轻,就算很长时间不锻炼也直接就可以跑五圈以上。和着对马拉松的好奇和对自己极限的挑战心理,我和几个小伙伴一起报名了2013杭州马拉松。学校里面报6公里的最多,少部分人报了13公里,只有极少数人报了半程21公里或全程42公里。我想想,平时也就跑3、5公里的,现在挑战一下报个13公里得了。

第一个悲剧就是,不靠谱的小伙伴们在杭马前一周内都以各种理由告诉我说自己去不了了。这意味着我要一个人去,一个人跑完13公里,再一个人默默地挤公交回来。

好吧,这也没什么,本来就是自己作死拉别人一起也怪不好意思的。到了现场存好行李,等领导们讲完话,大军浩浩荡荡出发。我打开手机上的NIKE+,准备全程记录然后分享到常年不上的微博上臭屁一下,结果跑到7公里时手机很给力地没电自动关机了。这时候我已经注意到我已经超过了跑短程的大部分人,冲到了前面跑半程大军的队伍里,看周围全是老头老太太,我毫不客气地一个一个超过去,我觉得我真是太牛逼了。

一个人跑没有跟组织,并且主办方指引牌做得不给力的下场就是——我跟错队伍了。第一次生理极限大概是在八公里的时候,跑到八卦田附近肚子两边开始一起疼,腿也已经完全没劲。跑到一个饮水站的时候我停下来拿了瓶水开始沿着赛道快走,看着刚才被我超过去的大爷大妈们又嗨嗨皮皮地超过了我。扔掉水再继续跑,经过九公里里程牌,十公里里程牌...然后,没有里程牌了。我抬头看看周围,载黄色号码牌的同胞已经全不见了,我正在嘀咕,突然看到33公里的里程牌——fine...这跟到半程的赛道已经多久了啊!为什么没有引导人员告诉我啊!为什么没有指示牌啊!周围的人你们是什么心态啊!不要用看傻逼一样的眼光看我行不行啊!

在我意识到跟错队伍的接下来九公里,每公里都变成煎熬。到一个饮水处,拿起杯子喝一口马上扔掉继续跑,腿不能停,突然停下来反而会抽筋。而且一旦停下来,我很怀疑我还能不能再继续跑到终点。功能饮料在这个时候终于发挥了作用,平时喝红牛没有感觉,这个时候喝完再跑五百米,马上能感觉到肚子疼痛感减轻。哦对了,中途还吃了一管叫做能量胶的东西,粘粘的好像鼻涕一样,而且很难吃,但吃完这个立马欢蹦乱跳开始重新加速超过了老大爷们。

只剩四公里的时候志愿者就在旁边喊「加油加油马上就到了就在前面」,我一听开开心心地开始加速,发现被骗了的时候不知不觉又跑了两公里。这个时候身后一阵喧闹声,一辆警车开过去后紧接着是CCTV5的摄像车,我对着摄像张牙舞爪了半天才发现丫根本没在拍我,原来这个时候跑全程的专业选手从后面追上来了。他们在用我平常跑一千米的速度,跑,马,拉,松。反正我觉得这肯定是基因问题,嗯。

我开始大口喘气,眼镜片也被水打湿眼前模糊一片什么都看不清。我估计当时样子挺狼狈的吧,一个志愿者妹子看不下去了,在我经过她的时候跟我击了个掌说「加油,只剩六百米了!别放弃呀。」好!就冲妹子的这番鼓励,说什么我也得接着跑啊,况且还只剩六百米了,况且还有一个 Bikini 就在前方一百米处!不然加个速吧?

嗯,事实证明那妹子也是个骗纸。跑着跑着我看到41公里的里程牌了。还有一公里...路两旁的人渐渐多了起来,扛着长抢短炮的人也多了起来,前面还有音响声,这回真的是快到了。

最后一个分岔路从大路拐进辅道,两边挤满了人,闪光灯晃个不停,人们疯狂地喊着「加油」,最后一百米,冲刺,完成。看一眼记时牌,两小时十分钟零八秒。

志愿者很热心,虽然我的号码牌颜色和大家不一样,还是发给了我一个奖牌和毛毯。颁奖仪式已经开始,跑完的选手们在互相拍照留念,我手机没电。

由于短程和半程的终点不同,我还得回到起点取回行李。这时候我才意识到钱包也在行李里面,我连搭公交的钱都没有。去到问询处,热心的志愿者借给我四块钱,指点了一下路线,我一个人乘了一个小时的公交,回到起点。取回行李,拿出来钱包一看,发现取不取没什么区别,一分钱也没有,嗯,不带现金真是个好习惯。饭店一家一家挨着问过,「能刷卡么?」。终于在下午一点之前找到家饭店,稍作休息,再一个人乘公交车回港。

回到宿舍,舍友刚刚睡醒。凌乱中看了我一眼,「回来了?」「嗯。」

倒在床上,睡。故事完。

见信好。

想了半天不知道怎么称呼你,索性就直接进入正题。毕竟跟自己说话,太客气了显得矫情,你说是吧?

大学一年过去了,我猜你现在回头想想,肯定又觉得特别快。学文的老人们让我给你写这封信,据说目的是激励我和你中间的那段我们,让丫好好学习好好工作什么的,别把这一年颓过去。激励这事儿吧,我觉着不是很靠谱,洗脑啊、正能量啊这些东西咱又不吃这一套。而让我质问你这一年的经历、成果什么的,我又干不出来,何况你也不一定乐意说,我太了解你了,回忆什么的,不是咱的风格。

那写点什么呢?主要是把我现在的想法和你说说,你听听看有什么不靠谱的,以后别再往坑里跳就好。其实吧,现在我的学习和生活才刚刚稳定下来。开学的时候觉得什么都新鲜,什么都想尝试一下,每天日程安排得爆满。你一定还记得被 Google Calendar 用短信和邮件轰炸到想扔掉手机的那段时间吧。每天忙忙碌碌,赶这个演讲跑那个会议抢各种票看各种妹子,一星期下来却说不清自己到底干了些什么。我看着从太原背来的那一包书一本都没动过, KINDLE 关着 WIFI 闲置到关机都没有发现,忽然感觉我靠,现在的生活太不正常了。我们一直中意的那个社团没有进,在面试时候被问得像个傻逼一样的场景你还记得吧。那天晚上算是入学一个多月的低谷,我说按这个节奏走下去非废了不行。

然后就是转型期了,你得谢谢咱那几个好基友们,我最低谷的时候丫们几个风头正盛。我想我了个去,让你们几个虐死我那可还行?然后就整晚整晚在图书馆泡着,学习是一方面,终于有时间看书了。小伙伴这时候及时找到我要和我一起开发 APP (顺带问一句现在这事儿最后成没成啊?你丫做没做出个我现在想的那种高大上的应用啊?),然后终于开心地没日没夜地看看起来极高大上的英文原版专业书了。学习了一下掌控时间,给自己留点余地。既能每天看书,有时候也能写点东西,每天跑步健身,和周围人聊天儿,偶尔勾搭妹子,这特么才是大学啊你觉着呢?

我没对你期望太多,所以你应该不会让我失望,我现在很清楚自己要干什么,估计你也知道,咱们磨合了小二十年的默契我还是很有信心的。这封信的意义没那么深刻,如果你颓了(你特么居然颓了?!),它肯定也不能让你轻易回头;如果你风头正好,它也是博你一笑。就当咱俩聊聊天儿吧,挺不容易的。

听说大二很关键,你现在情况怎么样啊。我帮不了你什么,但对你百分之百的信任,选好路,别回头一直走下去,加油!

Syntax Highlighting Post

Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.1

Highlighted Code Blocks

To modify styling and highlight colors edit

1
/_sass/_syntax.scss
.

#container {
    float: left;
    margin: 0 -240px 0 0;
    width: 100%;
}
<nav class="pagination" role="navigation">
    {% if page.previous %}
        <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
    {% endif %}
    {% if page.next %}
        <a href="{{ site.url }}{{ page.next.url }}" class="btn" title="{{ page.next.title }}">Next article</a>
    {% endif %}
</nav><!-- /.pagination -->
module Jekyll
  class TagIndex < Page
    def initialize(site, base, dir, tag)
      @site = site
      @base = base
      @dir = dir
      @name = 'index.html'
      self.process(@name)
      self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')
      self.data['tag'] = tag
      tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: '
      tag_title_suffix = site.config['tag_title_suffix'] || '&#8211;'
      self.data['title'] = "#{tag_title_prefix}#{tag}"
      self.data['description'] = "An archive of posts tagged #{tag}."
    end
  end
end

Standard Code Block

1
2
3
4
5
6
7
8
<nav class="pagination" role="navigation">
    {% if page.previous %}
        <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
    {% endif %}
    {% if page.next %}
        <a href="{{ site.url }}{{ page.next.url }}" class="btn" title="{{ page.next.title }}">Next article</a>
    {% endif %}
</nav><!-- /.pagination -->

Fenced Code Blocks

To modify styling and highlight colors edit

1
/_sass/_coderay.scss
. Line numbers and a few other things can be modified in
1
_config.yml
. Consult Jekyll’s documentation for more information.

1
2
3
4
5
#container {
    float: left;
    margin: 0 -240px 0 0;
    width: 100%;
}
1
2
3
4
5
6
7
8
<nav class="pagination" role="navigation">
    {% if page.previous %}
        <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
    {% endif %}
    {% if page.next %}
        <a href="{{ site.url }}{{ page.next.url }}" class="btn" title="{{ page.next.title }}">Next article</a>
    {% endif %}
</nav><!-- /.pagination -->
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Jekyll
  class TagIndex < Page
    def initialize(site, base, dir, tag)
      @site = site
      @base = base
      @dir = dir
      @name = 'index.html'
      self.process(@name)
      self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')
      self.data['tag'] = tag
      tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: '
      tag_title_suffix = site.config['tag_title_suffix'] || '&#8211;'
      self.data['title'] = "#{tag_title_prefix}#{tag}"
      self.data['description'] = "An archive of posts tagged #{tag}."
    end
  end
end