MForever78's Blog
Jekyll
2020-10-07T11:34:36+08:00
https://blog.mforever78.com/
MForever78
https://blog.mforever78.com/
shunjian1128@gmail.com
https://blog.mforever78.com/2019-review
2020-01-01T00:00:00+08:00
2020-01-01T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="https://blog.mforever78.com/images/2019-review.png" alt="2019" /></p>
<p>2019 在它听起来还像一个新鲜的年份的时候,过去了。在各大 App 都在尝试为我的 2019 做总结的时候,我突然对好久不更新的博客心生愧疚。</p>
<p>2019 在各种意义上对我来说都是个转折点。经历了 18 年感情和事业上的失落,19 年我谨慎地做了一系列地改变。回望过去一年,虽然一直很忙很累,却也过得格外充实,也小有收获。</p>
<p>在生活上,最大的改变自然是和 Rain 同学生活在了一起。我们 18 年 7 月在各自情绪最低落的时候选择尝试在一起。协议是不告诉任何人的情况下尝试三个月的恋爱关系,如果没法持续下去,这段经历就作为秘密封存起来,当作没有发生过,两个人恢复到之前的朋友关系。互相的「试用期」过后,我们正式签订了长期稳定的合作关系。19 年 7 月, Rain 从 Royal College of Art 毕业,我飞去伦敦和她一起毕业旅行。我们在爱丁堡由一个当地的作家和画家带领着,听城市的历史和八卦,画古堡小巷和行人;在 High Land 徒步爬上 Tarmachan 山顶的时候突然被飘来的云海吞没。最后在整理了五大箱行李后,正式从伦敦和英国告别,开启了两个人在上海的生活。在一起生活的下半年里,我们不仅是生活上的伙伴,开发了可以组成一个小菜单的菜,更常常一起讨论有关工作,设计,和人生选择的问题。吃着自己做的菜,谈着未来的人生,经常能在这种环境下获得新的启发。这也是我在这段关系中最享受的部分。</p>
<p>和 Rain 一起,我们决定了接下来几年工作的发展方向。我已经熟悉并且厌倦了现在的工作,跟主管谈了几次后,觉得团队发展的方向和我个人想要追求的东西并不一致,在这里继续待下去可能对自己的成长并没有十分大的帮助。于是想要到总部接触更接近于核心并且在技术上有挑战性,影响力也相对更大的项目。Rain 想要通过设计帮助整个人类,借助 NGO 或者政府的力量改善人类的生活。而这在当前中国的环境下,实施起来是相对困难的。基于这种考虑,我们各自开始积极寻找去美国发展的机会。</p>
<p>在上半年的时间里,我开始利用各种机会和总部不同团队沟通交流,了解对方的项目,也认识更多的人。在一个机会下和其中的一个组进行了深度合作,在完成自己组的工作之余帮助对方的项目完成了一个重要的功能。在对方的一次小型团队重组时,出现了一个职位空缺。我立刻向对方的主管提出申请。因为之前的合作,我甚至没有经过面试就顺利得到了这个位置。这整个过程中运气实在不能说不重要,但如果没有中间一步步突破自己的舒适圈,主动了解和接触不同的团队和项目,机会也并不会出现。但回顾这段经历,整个过程中自己在作某些选择时有些盲目的坚持,如果不是机缘巧合,可能也并不会这么顺利。坚持可以被改变的东西,不作无用的努力在不能被改变的事情上,并且能清楚地区分两者,才不会事倍功半。</p>
<p>想到自己可能不久就要离开中国,家人便成了我心中最大的牵挂。父母的身体都各自查出小问题,虽然之后积极诊断和治疗已无大碍,但我深深感到他们慢慢老去,不再是我小时候认为的永远不会倒下的家里的支柱。从小把我看大的姥姥,更是得了眼疾,有一只眼接近失明,腿脚也逐渐不灵便,没法再走稍远一点的路。</p>
<p>虽然「父母在,不远游」这样的说法在当今已经不再成立,但在可能的情况下多陪陪他们还是应当。「十一」七天假期,我把姥姥,爸妈,姐一家人都接到了上海。租了一辆轮椅推着一辈子住在山西农村的姥姥逛逛这个中国最繁华的城市,在南京东路上和世贸天阶前巨大的乐高积木合影,在夜晚的外滩上看对面东方明珠和环球金融中心灯火辉煌。她看得目不暇接,想跟我说点什么,但也只能说说我并不在意的村里隔壁孩子不好好学习最终来上海周边打工的故事——这是她除了我之外和这座城市惟一的联系。这次行程让大家终于有机会在一个不错的环境聚在一起,没有过年时候的吵闹,只是爸妈还有我和姐互相说说自己的生活。行程中既要照顾不太能走路的姥姥,又要哄好小机灵塔塔,实在不易。但能让一家人一起来我在的城市看看,了解我的生活,同时当面谈谈那些在电话里很难说起的话题,还是非常值得的。</p>
<p>2020 在异国的工作和生活一定充满了挑战,但是我已经准备好了。写一点对今年的展望,希望明年回头看时,能在这些方面至少有所进展。</p>
<p>一是希望自己好好经营和 Rain 的关系。这段感情来之不易,像她说的,「我们当初因为爱选择分开,如今又因为爱选择在一起」。希望能驯服体内的怪兽,不让它伤害对方和自己。二是希望自己保持初心。选择去美国并不是想走什么捷径,也不是想过安逸的生活。希望自己的工作能力和领导能力都能通过新项目得到锻炼。三是希望自己认真生活。不知什么时候开始,我在独自一人的时候往往会茫然无措,丧失对生活本身的兴趣。希望能给不同的事物多一点机会,多尝试更多的事情,认识更多的人。</p>
<p>有人说, 2019 是过去十年中最差的一年,也是接下来十年中最好的一年。我希望和 Rain 一起,在无论怎样的趋势下,都始终能让自己和我们能影响到的世界变得更好。</p>
<p><a href="https://blog.mforever78.com/2019-review/">2019 回顾</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on January 01, 2020.</p>
https://blog.mforever78.com/to-ada
2017-01-04T00:00:00+08:00
2017-01-04T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="https://blog.mforever78.com/images/for_ada.jpg" alt="Ada" /></p>
<p>塔塔外甥女:</p>
<p>见信好。</p>
<p>我第一次见到你,是你出生一个月之后了。你和照片上相比看起来小了那么多,只用一只手就可以托起来。还只有简单的意识,饿了、难受了就哭,吃饱了、舒服了就睡。看世界还只有黑白两色。我拿着几张黑白卡通图片在你眼前晃动,你的眼睛就跟着我的手,往左往右。</p>
<p>你一哭,全家人都围上来,着急、喂奶、换尿布,再好一阵安抚。你睡着了,他们才敢轻轻地睡去。但时光总是很快的,我已经预料到,你可能会以令周围这些长辈们惊讶的速度成长,每次你见到其中一个,他们可能都会对你说,「我当时见你的时候,你还只有这么小一点」之类你不在意的话。我忍不住想,在这一代出生的你,将来会是什么样子?</p>
<p>我相信你会有自己精彩的人生。它或许轰轰烈烈,或许波澜不惊,但它一定是独一无二的,只属于你的。我仅仅希望在你的人生中能有三样东西:健康、独立、快乐。</p>
<p>健康是所有东西的基本,身体是父母授予你的最重要的东西。你在出生时一切健康,希望你可以珍惜,并且永远保护好这份礼物。你可能会面对很多诱惑,当它们与这一条相抵触的时候,你应该永远选择保护自己。</p>
<p>独立是作为一个完整的「人」的必要条件。家人有可能老去,朋友有可能疏远,伴侣甚至也可能分分合合,只有你自己可以永远支持你走完这一生。作为一个女孩,更应意识到独立的重要性,因为和很多人告诉你的相反,你不是任何一个人的依附,你就是一个独立的个体。不幸的是,在我们生活的这个时代,还有很多主流的声音认为女孩子最重要的事就是找个合适的人嫁掉,然后相夫教子,不应该追求事业,甚至都不应该读太高的学位。因为传统如此,所以这样的想法可能在很长一段时间都会存在,但希望你不会受到这些传统文化的糟粕的影响,做出正确的选择。</p>
<p>独立不是一件简单的事情。你要独立地生活,更要有独立的思想。随着年龄的增长,你可能发现老师教的不一定都是正确的,长辈说的有可能和事实相差甚远,你最崇拜的偶像——如果不是一个歌星的话,在某些问题上的看法和你截然相反,即使其他事情他的想法都是那么正确。这种时候,希望你别偷懒站队,自己好好想想事情的真相。有一段时间你可能觉得整个世界的运转都有大问题,然而最终你可能发现有些事情之所以变成现在的样子有它自己的道理。这个世界很奇妙,但很多人只能庸庸碌碌,人云亦云,行尸走肉般过着自己的人生。希望你能在思考中了解自己,了解这个世界。</p>
<p>最后一点,希望你能快乐。人生不可避免地会遇到困难和挫折,每个人都如此,它们是你成长的必经之路,但希望快乐是你的主旋律。人生大约只有百年之久,在漫长的时间长河里转瞬即逝,在这有限的时间里,让自己快乐是一件很重要的事。快乐比很多人看重的名和利都重要得多。在你追求其他东西时,希望快乐能常伴你左右。</p>
<p>这封信从青岛写到上海,从 16 年写到 17 年,想说的东西太多,又觉得不应该说太多。好像只想把世界上最好的东西给你,又害怕你最终看到真正的世界时无法应对。但该来的总会到来,等你真正能看懂这封信的时候,或许再说什么也都是多余。或许这信的惟一作用也只能表达我对你出生这件事的无比喜悦的心情吧。</p>
<p>于青岛、上海闵行、静安</p>
<p><a href="https://blog.mforever78.com/to-ada/">写给塔塔的</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on January 04, 2017.</p>
https://blog.mforever78.com/in-the-spring
2016-03-19T00:00:00+08:00
2016-03-19T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>说杭州只有夏冬两季是不公平的。在三四月份北方路面积了一冬天的冰终于开始慢慢融化的时候,杭州却正在经历剧烈的如四季般的温度变化。有人戏称杭州春如四季,只要在杭州生活过的人,听到这句话没有不会心一笑的。</p>
<p>每天在实验室写代码不被人打扰的生活虽然也是快乐,但有时候也应该犒劳一下怠慢已久的身体,比如春游。算起来大学三年无意间每年春天都出去玩过一次。今年这个时候正被一些事情困扰,不想参加各种团体组织的春游,于是挑了这个周末,和小乔两个人选了西递这个小村庄放松一下心情。</p>
<p>西递位于距黄山屯溪约 50 公里处,因此大巴是此行的交通工具。开始对大巴的期望值很低,但整个体验出人意料地舒适。全程可以网上订票,到车站用订单号和密码取票后可以直接上车。对号入座取代了大巴车传承已久的先到先得。下车即是景点,买票进入景区,入住预先订好的酒店,没有穷追不舍推销纪念品的村民,没有强拉硬拽强制消费的小店,整个体验很是不错。</p>
<p>西递村主要是徽派建筑,主要以木材和青石作为原料。清水顺着沟渠从路边流过,途径的墙面上就生出了青苔。民居之间的空隙铺上石板就成了小路,但和北方横平竖直的胡同不同,这里的小路往往交错起来,形成迷宫一样的地形。宽度也不相同,宽的地方容得下两辆车并排行驶,窄的「一线天」只能容一人通过。开始我只顾着看脚下的路,猛地一抬头,眼前的景像让我突然想到了高中时候读过的戴望舒的《雨巷》。那个悠长,悠长,又寂寥的雨巷,是我当时对南方小镇全部的想象。没想到如今在这里和记忆偶然相遇了。</p>
<p>顺着巷子的导游路线行走,两旁即是西递的主要景点,即大量的具有明清特色的古民居。走进其中,这些民居大多以木材作为内部结构的主要原料,家具也多是保留下来的木桌木椅。一进门一股年代感扑面而来。闻着这些年代已久的木头散发出来的霉味,观察着古装剧中才能看到的房间布局和传下来的老旧字画,更甚,看着仍然在这个民居里生活的人,很难不让人有一种穿越的感觉。这些居民就是这些房子的主人,我们在里面参观的时候,他们就在里面生火、做饭、看书或者只是默默地看着我们。你看到这些古董般的家具就是他们每天仍在正常使用的东西,这和去北京或者其他古城里看围栏后远远放着的那些展品时的感觉是完全不同的。</p>
<p><img src="//blog.mforever78.com/images/xidi_house.jpg" alt="House" /></p>
<p>另一个不能错过的景点就是这里的油菜花。我们来的正是时候,油菜花开得正盛。从村里的小路走出去,到一个小山坡上即能俯瞰整个村子,和周围成片成片的油菜地。在这里,不需要昂贵的设备,任何一个人按下快门就是一张值得炫耀的照片。</p>
<p><img src="//blog.mforever78.com/images/xidi_scene.jpg" alt="Scene" /></p>
<p><img src="//blog.mforever78.com/images/xidi_sun_shine.jpg" alt="Sun shine" /></p>
<p>住在古民居改造成的房间里,闻着木制家具散发出的特殊的香味,我想这次出行的记忆已经和这种气味牢牢地关联起来了。</p>
<p><a href="https://blog.mforever78.com/in-the-spring/">春风十里</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on March 19, 2016.</p>
https://blog.mforever78.com/its-easier-said-than-done
2015-03-15T00:00:00+08:00
2015-03-15T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="//blog.mforever78.com/images/dosomething.jpg" alt="revolution" /></p>
<p>上学期听到的一次演讲,加上和老师的一次深谈,让我完全清楚了为什么中国大学的课程教授得这么烂。但是好不容易碰到一个对教学还认真的老师,我不想放过这个难得的做出改变的机会,决定给老师当一次助教,从课程内容、课后练习、交流上都按照我的想法作出一些改变,看能不能让课程变得像国外的课程那样精彩。</p>
<p>在中国的大学里做这件事情,我觉得是吃力不讨好的。一般老师只是按照课程大纲按步就班地教学,很少人愿意作出改变,因为这样做非但没有动力,而且有不少阻力;一般学生只在乎绩点,给分高的就是好课程,不管讲得多么烂,不管自己究竟学到东西没有。对课程做出改变势必会让同学付出更大的努力来完成课程要求,这也是大部分学生所不愿意看到的。</p>
<p>但是我还是要做,并且把这件事当做 2015 年最重要的事情来做。中国大学这样的教育一定是失败的,总要有人尝试去改变。我深知自己力量的渺小,但既然是正确并且有意义的事情,我愿意把时间和精力投入进去。</p>
<p>目前正在进行的有三件事情:</p>
<ol>
<li>当《计算机组成》这门课的助教,在课前把实验中的问题整理反馈给老师,帮助实验课有困难的同学。</li>
<li>设计「轻松家园」课程网站,教学论坛,提供课后交流的环境。</li>
<li>设计明年《逻辑与计算机设计基础》课程的内容和实验,做好助教的工作。</li>
</ol>
<p>希望我不是最后一个有这种想法的人。</p>
<p><a href="https://blog.mforever78.com/its-easier-said-than-done/">做点什么</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on March 15, 2015.</p>
https://blog.mforever78.com/taiyuan-2015
2015-02-20T00:00:00+08:00
2015-02-20T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>好像从很小的时候,我对于过年就没有什么好的印象了。再小一点,过年可以放炮的喜悦会冲淡那些繁琐的规矩带来的不快乐,后来放炮也变成规矩中的一环的时候,我就对它完全丧失了兴趣。于是过年于我只剩下无尽的繁文缛节。在我去上大学的时候,老爸和我说,知道你这一走再想叫回来就难了,但是每年过年,必须回来。</p>
<p>我对中国人不明理由的传统一直是抱有敌意的,更别说像过年这样会严重限制自由的节日。一般来说,年前一周左右是大扫除时间,也就是在这段时间里,父母会从刚接到你的喜悦中恢复过来,渐渐进入狂躁模式。晚上太晚睡,早上太晚起,不帮忙干活,帮忙干活但手脚太笨,整天宅在家不出门,整天出门疯不知道好好待在家,不认识的亲戚来嫌不够热情,没有做出什么可以供家人吹嘘的成就,刚上大学就找对象,上了大学这么长时间了还没找对象,谈了这么长时间还不结婚,结婚这么多年还不要孩子,薪水没有是周围人的好几倍,孩子还不如别人家的聪明……这几天你是世界上问题最多的人。除夕帖对子,放鞭炮,吃年夜饭,看春晚,再放爆竹,不认识的亲戚来,说客套话,去不认识的亲戚家,说客套话,一套流程每步都不能出错。在我看来,上一辈人这样过了一辈子,不能接受任何对传统的侵犯。而对于年轻一代,过年已经成为一种负担。</p>
<p>说这么多,年还是得过。为了避免和长辈正面冲突,必要的流程还是免不了,但多在家待一时,就多一点发生摩擦的可能。也是今天,又被不明的原因嫌弃,眼不见为净,我正好出来看看两年没好好观察过的太原。</p>
<p>空气还是一如既往的差,回来两天鼻子就已经受不了了。天灰蒙蒙一片,空气中有烧焦东西的味道。一回来我就买了 3M 的口罩,戴上,出门。</p>
<p>一夜大雪,路面泥泞,黑的地方黑,白的地方也白。今天是初二,走亲访友的人还很多,街上热闹,我没坐公交车,走过几条街去电车站。小学时候看着盖起来的楼房现在已经旧得墙皮脱落,当年这里的售楼热线就刷在小区的围墙上,价格是 998 一平,现在这里出售的毛坏房也是几倍于这个价格了。往下走,另一个临街小区门口的烧烤摊还是烧烤摊,从中间穿过,隔着口罩还能闻到羊肉串、臭豆腐和其他不知道什么东西混合起来的味道。银行旁边以前因为不查身份证而最受欢迎的网吧已经消失踪影,入口变成了「学大教育」。最大的商场从唐久变成华联再变成唐人德,中间彻底关门过一阵子,后来把一层全部出租给小商铺,上层才存活下来。再走就到了标志性建筑,太钢总医院。从市区打出租车,问去哪,说苹果苑小区,不知道,再说去尖草坪,尖草坪哪里,太钢总医院,那就知道了。这招放在现在已经不好用了,去年年中太钢医院建了新址,大型设备都已经迁移过去,从地图上再搜太钢医院,第一个跳出来的已经不是这里了。从一个陡得不像话的大坡下去再往前走,就到了电车总站。</p>
<p>在杭州待过,坐哪里的公交都觉得是享受。车上不算人多,人人有座。可能是因为我戴着口罩,我旁边的座位空了一路。上来的人都是先看到我旁边的空座,然后又迅速看我一眼,然后不露声色地坐到后面或者其他地方去。于是我干脆放松下来,舒展腿脚,戴起耳机看着窗外。</p>
<p><img src="//blog.mforever78.com/images/taiyuan2014_0.jpg" alt="0" /></p>
<p>最大的变化是路。我上高三那年,太原市整个大修路,从学校到家里,辗转好几趟公交车,并且中间还要走路一段,前后要两三个小时才能回家。现在高架和环路修好,一路没有红绿灯,自己开车十几分钟就能到。路拓宽了,路边的店铺也换了一拨。只看商场已经不能确定车开到了哪,还好站牌并没有变。我看到途中另一个标志建筑,天主教堂,赶快拍下来,怕不知道什么时候这里也会大变模样。</p>
<p><img src="//blog.mforever78.com/images/taiyuan2014_1.jpg" alt="1" /></p>
<p>我要去的地方是一个站名叫宽银幕的地方。据老人说,这里是当年第一个可以看到宽银幕电影——相对于 35 毫米普通电影而言,的地方,后来人们就直接以宽银幕指代这里。一下车就是最大也最知名的书店,新华书店。小学时候每个周末坐公交来这里看书,挑书的过程最纠结,先看书名,再看封面,再看前两章,如果都没问题就找个地方坐下来,一下午就过去了。</p>
<p><img src="//blog.mforever78.com/images/taiyuan2014_3.jpg" alt="3" /></p>
<p>我舍不得存包放电脑,就进了旁边的咖啡厅。这间咖啡厅地理位置真好,从旁边的书店拿本书出来,转身进来点一杯咖啡体面点坐一下午也是不错。我进去的时候人已经很多,但还有座。轮到我点单,告诉我没有咖啡,我被营业员一句话噎得半天反应不过来。那就,奶茶?她在电脑前,却飞快在纸上记了起来。对不起,电脑坏了,人工收银。好,交钱。银子刚出钱包,咖啡店的灯闪了几闪,灭了——跳闸了。收起银子,出门。</p>
<p><img src="//blog.mforever78.com/images/taiyuan2014_2.jpg" alt="2" /></p>
<p>这里距离食品街不远,通过天桥就可以走到那里。街口是有名的担担面店,奶奶在回老家这么多年以后念念不忘的就是这里的担担面。家人说以前我和奶奶来,一人吃四碗。店还在那里,可惜我不是吃货,没什么兴趣,就往食品街里走去。</p>
<p>人真是不少。大部分是同学相跟出来玩。食品街一年还是两年前翻修过一次,门面风格统一,各种小吃大吃都有。印象中也开了一些奶茶店和咖啡店,我就是想找一个咖啡店坐进去待一下午。但是走到头,觉得不错的店人都太多,人少的店也确实少得有理由。拿出手机看了一下地图,嘿,好久没去柳巷了,就在前面。</p>
<p>柳巷可以说是太原城无人不晓的商业街。据说是当年常遇春在逃难时被这里的柳姓人氏所救,后承诺他们当战火来袭,只需在门口插上一根柳枝,明军就会尽心保护。果然不久明军攻入太原城,柳氏走家串户告诉邻里在门口插上柳枝就能免于战难洗劫。明军按照命令,见到插有柳枝的人家,尽心保护,秋毫无犯。邻居为了纪念和感谢柳氏,纷纷把门首的柳枝植于街畔。期年之后,小巷柳树成萌,得名「柳巷」。</p>
<p>我站在柳巷街头,这里的格局让我仿佛自己站在北京王府井大街。吃喝玩乐一应俱全,拥尽了全太原最盛的繁华。</p>
<p><img src="//blog.mforever78.com/images/taiyuan2014_5.jpg" alt="5" /></p>
<p>沿着步行街走,路过两个电影院,就能到达开业没多久的星巴克,我就会在那里点一杯咖啡,拿出电脑,待上一下午。</p>
<p><img src="//blog.mforever78.com/images/taiyuan2014_6.jpg" alt="6" /></p>
<p><a href="https://blog.mforever78.com/taiyuan-2015/">太原2015</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on February 20, 2015.</p>
https://blog.mforever78.com/DS-course-summary
2014-11-22T00:00:00+08:00
2014-11-22T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="https://blog.mforever78.com/images/ds.jpg" alt="Data Structure" /></p>
<p>今天(昨天) DS 考完试结课,第一次上姥姥的课有点感慨,晚上正好没有事情趁闲写一个总结。</p>
<p>高中从 OI 过来的同学应该都会不太重视 DS 以及接下来的 ADS 课程,因为这两门课里面学的数据结构以及算法在高中的时候已经被我们写得滚瓜烂熟了。但是结课后再想想,其实认真学与否真的存在很大差别。</p>
<h2 id="写程序时心态的变化">写程序时心态的变化</h2>
<p>栈、表、队列、堆,这些最基础的数据结构和 DFS、BFS 这种最基本的算法我们几乎已经熟悉到可以无视他们的地步了。但是他们是出于什么目的被设计出来的、其中有哪些需要注意的地方,是只学 OI 很难接触到的。看到作者在书上每一次 <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>malloc
</pre></td></tr></tbody></table></code>、 <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>pop
</pre></td></tr></tbody></table></code> 等都要检查内存溢出,每一个可能出现不可预知错误的地方都会加上处理,就突然明白这作者其实是在以软件开发的角度在教学,与单纯做题不是同一个等级。</p>
<p>我们用的这本教材给出了比较详细的代码实现。每个数据结构都会根据 ADT 先把所有的操作和结构定义在头文件中给出,然后再在实现文件中给出具体的代码。开始的时候按照这种方法写了栈和队列的实现,感觉比之前想用的时候直接在具体的程序中撸一个要优雅和靠谱许多。后来时间太紧张就没再继续,想想如果每个都坚持这样做,课程结束的时候就可以拥有一个自己写的库了。虽然不比成熟的库实现,但作为课程的一项成果也是蛮好的。</p>
<h2 id="代码风格的变化">代码风格的变化</h2>
<p>命名方面,书上的代码基本上所有的变量、函数都用了首字母大写的驼峰命名法,我在实现的时候感觉略微不科学。在 OOP 中,首字母大写通常表示类名,在 C 里完全没有必要这样做(而且按得好麻烦啊)。一般来说,使用 <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>typedef
</pre></td></tr></tbody></table></code> 声明的结构名,比如 <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>List
</pre></td></tr></tbody></table></code>、<code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>Heap
</pre></td></tr></tbody></table></code> 这样做有类似 OOP 中类的意思,是可以说通的,不过函数和普通变量感觉就没有必要了。</p>
<p>另一个印象比较深刻的地方就是指针的显式化命名,比如 <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>node
</pre></td></tr></tbody></table></code> 和 <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>typedef node *ptrToNode
</pre></td></tr></tbody></table></code> 避免了打很多星号,也在变量声明的时候就说明了含义。</p>
<h2 id="报告">报告</h2>
<p>姥姥对报告格式内容要求很严格,我觉得是很有道理的。平时很多同学写报告的时候不太注意格式,即使用 Word ,方式也不太正确。排版其实也是门学问,应该正确使用 Word 的模板定义功能,让文字处理软件知道这里的内容属于哪一部分,而不是通篇都使用正文,最后再手动逐个调字号字体。正式报告英文正文应该使用 Times New Roman ,代码使用等宽的 Courier New 应该都是最基本的常识(最起码不要用 Comic Sans)。不过写了这么多报告,还是觉得这些文字处理工具都多多少少的有点 buggy ,所以用了 LaTeX(这应该开一个新坑来讲)。这里不多说,总之排版是很重要的事情,能做 Best Report Writer 也是一件值得骄傲的事情。</p>
<h2 id="总结">总结</h2>
<p>姥姥上课是很认真地在讲课,连包袱都很认真地抛(虽然不好笑)。所以觉得选上姥姥的课但没认真上课的同学真的很可惜(后来快考试周我也没认真听,有点后悔)。对比学院其他专业课的老师,有的是科研型,科研做得很厉害但是对教学一点也不重视,上课就只是念 PPT ,还有的是虽然很认真,但逻辑真的很混乱,听课还不如自学。真正教学到姥姥这个水平的很少。我觉得如果学校能把教学重视起来,根本不会有那么多挂科的同学。我周围很多人挂科都是因为老师实在讲得太烂,上课听不进去,自学又不得法,最后只能放弃。暑假上的 Patt 的课和这学期上的姥姥的课让我感觉好老师真的还是很重要的,同时也是很少的。所以才要更努力去一个比较靠谱的学校吧。</p>
<p>冬学期要把每门课都跟上。</p>
<p><a href="https://blog.mforever78.com/DS-course-summary/">数据结构结课总结</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on November 22, 2014.</p>
https://blog.mforever78.com/go-on-a-picnic
2014-11-14T00:00:00+08:00
2014-11-14T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>入了大件之后,生活一直过得比较拮据,看电影和出去玩的次数也少了很多,某人一直很不开心。上次 MSTC 聚会后,发现野餐真是种既省钱又很小资的户外活动。反正只要有吃的,某人是不会拒绝的。计划订了好久一直拖来拖去,今天终于成功实施了。</p>
<p>前期最主要的工作是选址。其实这个季节出去野餐还挺尴尬的,想想两个人坐在寒风中冻得牙齿打颤还在顽强地吃着食物的画面,路人如果不是笑骂傻逼的话,估计会被我们的精神给打动吧。但杭州的天气到深秋才会表现出的早晚温差这个时候正好派上用场。中午太阳直射的时候,气温大概会到达一天中的顶峰,如果不是阴天,并且穿着深色衣服,其实还应该可以是蛮温暖的。于是完全被树木覆盖的公园肯定不行了,想来想去,还是西湖边上次聚会的地方比较合适。沿路有竹林和小溪,野餐点有一棵大树、草坪、阳光,游客比较少,还就在离玉泉不远的地方。</p>
<p><img src="https://blog.mforever78.com/images/picnic-food.jpg" alt="food" /></p>
<p>一大早上完课,各自乘校车到玉泉会师。买零食,出发。虽然提前觉得温度没问题,但我们两个还是都上了冬衣加围巾这种最强装备。到地方的时候,气温还算可以接受,就先选了一个树阴的地方,结果冷风吹来还是受不了。于是移到太阳地,一下暖和起来了。</p>
<p><img src="https://blog.mforever78.com/images/picnic-laptop.jpg" alt="laptop" /></p>
<p>铺在地上的单子就是普通的桌布,超市里不到十块钱一个,一次性用完即扔。零食一大袋。电脑、手机、平板、单反作为娱乐设备,野餐就正式开始了。开始用电脑建了一个热点,手机当手柄打 Bombsquad ,可惜电脑的屏幕在阳光直射下实在很难看清楚,只玩了一小会就受不了了。之后玩了一会单反。下午趁着暖和背靠背看了一会书。太阳下山之前我们就收拾东西打道回府了。</p>
<p><img src="https://blog.mforever78.com/images/picnic-canon.jpg" alt="canon" /></p>
<p>不得不提的是下午成群结对出现的在附近拍婚纱照的夫妇们。在这事儿上男士还真就是个道具,他们不停地被摄影师要求拍各种姿式,一遍不行再来一遍,还不能一点儿不耐烦。我在想要是我被这样摆弄一下午早就疯了,谁爱拍谁拍,老子才不伺候呢。后来冷静下来想了想,这样也不现实,其实折衷的方法是找一个假人啊模型之类的拍,然后再把自己后期上去,我觉得应该能实现,贵点不要紧,才不受这气。</p>
<p>回来问了问某人的意见,大体上还算满意。现在一想到出去玩,总是吃饭、唱歌、看电影这老几样,既花钱又没意思。想来还不如多点这样的户外活动(虽然我还是想带着电脑打游戏)。出门,走路,呼吸新鲜空气,这才是健康的娱乐方式吧。</p>
<p><img src="https://blog.mforever78.com/images/picnic-steps.png" alt="steps" /></p>
<p><a href="https://blog.mforever78.com/go-on-a-picnic/">野餐</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on November 14, 2014.</p>
https://blog.mforever78.com/ting-ji-wen-ti-xue-xi-bi-ji
2014-05-19T10:36:10+08:00
2014-05-19T10:36:10+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="https://blog.mforever78.com/images/turing_machine.jpg" alt="Turing Machine" /></p>
<p>前段时间看到 Scott H Young 那篇介绍费曼技巧<a href="#fn:1" id="fnref:1" title="see footnote" class="footnote">[1]</a>的文章,一下想到了程序员界流传甚广的小黄鸭调试法(Rubber Duck Debugging)<a href="#fn:2" id="fnref:2" title="see footnote" class="footnote">[2]</a>。几天前晚上散步的时候,聊天儿时提起了罗素悖论,让我联想到图灵对停机问题精妙的解法。想拿这个试试费曼技巧,讲到一半发现卡壳了,自己把自己绕了进去。我想到刘未鹏说过的那种状态,学习一个算法,初看觉得太牛逼了,然后花十分钟理解了人家花了十年才想出的成果,再花十天完全忘记,只能想起那个算法十分精妙,该不会的还是不会。所以应该由本溯源地学习数学和算法,并且写一个博客记录下学习的过程。于是这篇就作为费曼技巧和写作学习实践的第一篇。</p>
<p>在计算机科学领域,最广为人知的问题是关于 P 与 NP 问题的讨论,但不论 P 还是 NP,它们只是对解决问题效率的讨论。其实还有一类问题,它们难到计算机永远无法解出,这类问题被称作不可判定问题(Undecidable Problem)<a href="#fn:3" id="fnref:3" title="see footnote" class="footnote">[3]</a>,其中一个可能是最有名的问题就是停机问题。</p>
<p>停机问题提出了这样的疑问:是否存在一个程序,可以判定任何一个程序是否会停止。</p>
<p>要解决这个问题,我们先假设存在一个程序满足上述条件,比如:</p>
<figure class="highlight"><pre><code class="language-c" data-lang="c"><span class="kt">int</span> <span class="nf">yourBrilliantProgram</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span> <span class="n">program</span><span class="p">,</span> <span class="n">inputType</span> <span class="n">input</span><span class="p">){</span>
<span class="k">if</span> <span class="p">(</span><span class="n">program</span><span class="p">(</span><span class="n">input</span><span class="p">)</span> <span class="n">stops</span><span class="p">)</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">else</span> <span class="c1">//It loops forever</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p>其中,第一个 <code>if</code> 语句中的判断是人类智慧的结晶,它用了神奇的方法得知了 <code>program(input)</code> 是否停止。</p>
<p>接着我们就要进行破坏了,再来考虑这样一个程序:</p>
<figure class="highlight"><pre><code class="language-c" data-lang="c"><span class="kt">int</span> <span class="nf">myDisgustingProgram</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span> <span class="n">program</span><span class="p">){</span>
<span class="k">if</span> <span class="p">(</span><span class="n">yourBrilliantProgram</span><span class="p">(</span><span class="n">program</span><span class="p">,</span> <span class="n">program</span><span class="p">)){</span>
<span class="k">while</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="c1">//Never reaches here</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p>我的程序专门跟你作对,如果你说这个程序可以正常退出,那么我就作一个死循环;你说它是死循环的,我就正常退出给你返回一个<code>true</code>。</p>
<p>So far so good. 最精彩的地方来了,考虑 <code>yourBrilliantProgram(myDisgustingProgram, myDisgustingProgram)</code> 的返回值。这里有点绕,我们一步一步跟踪。</p>
<p>首先,进入 <code>yourBrilliantProgram</code> 的第一个判断语句,这里执行 <code>myDisgustingProgram(myDisgustingProgram)</code> ,进入 <code>if(yourBrilliantProgram(myDisgustingProgram, myDisgustingProgram))</code> 这一句。这里可能出现两个结果:</p>
<ul>
<li>返回 <code>1</code>,说明 <code>myDisgustingProgram(myDisgustingProgram)</code> 正常退出,那么当前程序进入死循环,此时上一层的 <code>yourBrilliantProgram()</code> 应该检测到这个死循环,并返回 <code>0</code>,说明 <code>myDisgustingProgram(myDisgustingProgram)</code> 是个死循环。矛盾。</li>
<li>返回 <code>0</code>,说明 <code>myDisgustingProgram(myDisgustingProgram)</code> 死循环,那么当前程序返回 <code>1</code> 并且正常退出,又证明 <code>myDisgustingProgram(myDisgustingProgram)</code> 不是死循环。矛盾。</li>
</ul>
<p>也就证明,根本不存在这样的程序可以判定任何一个程序是否停止。</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
<a href="http://select.yeeyan.org/view/94114/329073">Scott H Young 如何在十天内掌握线性代数</a> <a href="#fnref:1" title="return to article" class="reversefootnote"> ↩</a>
</li>
<li id="fn:2">
<a href="http://zh.wikipedia.org/wiki/小黄鸭调试法">小黄鸭调试法</a> <a href="#fnref:2" title="return to article" class="reversefootnote"> ↩</a>
</li>
<li id="fn:3">
<a href="http://zh.wikipedia.org/wiki/不可判定问题列表">不可判定问题列表</a> <a href="#fnref:3" title="return to article" class="reversefootnote"> ↩</a>
</li>
</ol>
</div>
<p><a href="https://blog.mforever78.com/ting-ji-wen-ti-xue-xi-bi-ji/">停机问题学习笔记</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on May 19, 2014.</p>
https://blog.mforever78.com/cai-shi-xiao-ying-yu-tuo-yan-zheng
2014-05-09T21:44:27+08:00
2014-05-09T21:44:27+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="https://blog.mforever78.com/images/deadline.jpg" alt="Deadline" title="Deadline" /></p>
<h2>蔡式效应</h2>
<p>蔡式效应又名蔡戈尼效应,大意是说人们对未完成的工作往往有很深的印象,换个好听一点的说法也可以表述为人们天生有种办事有始有终的驱动力。我在这学期的积极心理学课上接触到这个概念,蔡式效应被看作拖延症的成因之一。</p>
<h2>蔡式效应和拖延症</h2>
<p>这两者的联系在什么地方呢,其实原理也很简单。心理学认为,人们在全身心地执行一件事情的时候,需要消耗一定的意志力。而如果之前有未完成的工作积压,那么它们就会持续地占用一部分意志力。因此我们不能专注于当前的工作,导致低效,甚至无法开始,即对当前工作的拖延。这将变成一个恶性循环,最终只能要么放弃一部分工作,要么完成所有工作,但质量低下。</p>
<p>期中考试周的时候我就经历了一段这样的生活,几个课程论文的 Deadline 逼近,我还完全没有开始,却又要为了应付即将到来的考试而复习。我想先把论文的事情往后放放,就算过了死线也可以事后补交,先应付考试是要务。但结果是复习效率极低,从考试结果来看也差强人意。</p>
<p>平时我是很注重效率的,这样花了时间却没有收到成效的事情让我十分懊恼。积极心理学刚好讲到拖延症这一节,听完以后觉得收获很多。</p>
<h2>解决办法</h2>
<p>对于蔡式效应导致的拖延和低效,有一个简单的办法可以解决。先举个例子,你大概有这样的经历:在街上听到一家小店里传来一首口水歌的一个片段,然后接下来一整天你的脑子里一直萦绕着那一句单句循环。这其实也是蔡式效应的一个体现,解决办法是插上耳机,把那首歌从头到尾完完整整地听一遍。亲测有效,你可以试试。从这个例子可以看出来,抵御蔡式效应的办法就是把未完成的事情做完。那怎么解决像我上面提到的那种情况呢,论文是没写完,但我还有更重要的考试要准备啊,我总不能放下考试去写论文吧?当然不用。用老师的话讲,大脑「很傻很天真」,你其实不用真正地做完这件事,你要做的只是给它一个提示,告诉它「这件事情已经『处理』过了」。具体怎么操作呢?</p>
<h2>GTD</h2>
<p>GTD 是 Get Things Done 的简写,它是一种时间管理的方法。具体的内容可以参见 <em>Getting Things Done: The Art of Stress-Free Productivity</em> 这本书,中文译本是《尽管去做——无压工作的艺术》。它提供了一个有效的手段来对付蔡式效应,让人可以全身心的投入到当前的工作中。</p>
<p>它要求你首先把所有要做的事情罗列出来,称为「搜集」。然后按照任务的类别和特点进行处理归类:马上要做的事、委托别人做的事、要延期的事、要存档的事、要扔掉的事。注意归类这一步很关键,它对任务进行了一定的处理,让大脑认为我们已经完成了对这件事的操作,而其实我们本身并没有执行这件事。一件事情完结,蔡式效应失效,我们大脑中的工作台被清空,专注于执行当前要紧的事。</p>
<p>GTD 是一套完整的时间管理方案,我只是提取其中这一点来说,如果还想了解其他的话可以买本书来看看。另外,推荐这款最经典的 GTD 工具—— OmniFocus ,虽然贵了点,但至今没有任何其他相关工具可以超越它。</p>
<h2>GTD 的副作用</h2>
<p>用 GTD 的方法可以解决蔡式效应带来的问题,但就如同开头提到的,蔡式效应并不是完完全全不好的东西,它常常是人们办事有始有终的驱动力。GTD 解决了蔡式效应的副作用,但也要警惕它消除了蔡式效应给我们提供的驱动力。所以常常会有这样的事情发生,你信心满满地去作了一大堆计划,但作完计划后你就把它们抛诸脑后,再也没有理会过。原因就是大脑认为你「作计划」的这个动作已经把这些事情完成了。</p>
<h3>参考资料</h3>
<ol>
<li><a href="http://en.wikipedia.org/wiki/The_Zeigarnik_Effect">蔡式效应 (The Zeigarnik Effect)</a></li>
<li><a href="http://www.amazon.cn/%E6%84%8F%E5%BF%97%E5%8A%9B-%E5%85%B3%E4%BA%8E%E4%B8%93%E6%B3%A8-%E8%87%AA%E6%8E%A7%E4%B8%8E%E6%95%88%E7%8E%87%E7%9A%84%E5%BF%83%E7%90%86%E5%AD%A6-%E7%BD%97%E4%BC%8A%C2%B7%E9%B2%8D%E8%BF%88%E6%96%AF%E7%89%B9/dp/B00967YPDQ/ref=sr_1_1?ie=UTF8&qid=1399641663&sr=8-1&keywords=%E6%84%8F%E5%BF%97%E5%8A%9B&tag=chrome0a-23">罗伊•鲍迈斯特 意志力:关于专注、自控与效率的心理学</a></li>
<li><a href="http://www.amazon.cn/%E6%90%9E%E5%AE%9A1-%E6%97%A0%E5%8E%8B%E5%B7%A5%E4%BD%9C%E7%9A%84%E8%89%BA%E6%9C%AF-%E6%88%B4%E7%BB%B4%E2%80%A2%E8%89%BE%E4%BC%A6/dp/B00368C0FG/ref=sr_1_1?s=books&ie=UTF8&qid=1399641893&sr=1-1&tag=chrome0a-23">David Allen 无压工作的艺术</a></li>
</ol>
<p><a href="https://blog.mforever78.com/cai-shi-xiao-ying-yu-tuo-yan-zheng/">蔡式效应与拖延症</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on May 09, 2014.</p>
https://blog.mforever78.com/lun-li-fa-shi-de-bu-ke-gou-tong-xing
2014-04-05T01:11:16+08:00
2014-04-05T01:11:16+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="https://blog.mforever78.com/images/Hair.jpg" alt="Hair" /></p>
<p>为了吐一个漂亮的槽,我耗费了整整一下午的时间。</p>
<p>当我睡了一觉起床看完这一周的《生活大爆炸》,然后在调戏完群里的同学后又连着看了两集《暴走大事件》,最后把梁边妖大人的所有回答都仔仔细细地全部研读一遍而心情还是没有任何好转的时候,我就在思考如何才能吐好这个漂亮的槽了。</p>
<p>我这么高冷,我会对着大街喊「全天下的理发师全都是臭傻逼」这么屌丝的话么?我不会。</p>
<p>我这么不羁,我会仰望天空眼含泪水说「理发虽易,理好不易,且理且珍惜」这么矫情的话么?我不会。</p>
<p>我这么正直,我会做出从此以后努力学习黑掉他们的收银系统然后把所有人的帐户都清空这么没品的事么?我不会。</p>
<p>因为我知道,这一切都是注定了的。</p>
<p>我从不畏惧走进这家理发店,因为当洗头小哥按照惯例搭讪完在哪上学上几年级学校怎么样家在哪里住着为什么到这么远的地方上学北京有清华你咋不去呀这几个问题,准备正式进入主题,并且抛出那个看似转折平滑平淡无奇实则暗藏杀机危机四伏的问题「你,是不是我们这的会员呀?」的时候,我可以嘴角微微上扬,眼神里透露出一种似不屑非不屑的不屑,手不经意间地从钱包里掏出那张金黄色的卡在他面边不经意的晃一下然后迅速放回去,保持着嘴角的微扬慢慢的吐出那几个字「我,是会员。」一般这个时候,识相一点的都会被我强大的会员光环镇住就此闭嘴,我则可以安心地躺在躺椅上,等他安静地完成后续工作。</p>
<p>事情按照我预想的节奏有条不紊地发展着。直到遇到那个理发师,请大家记住他的编号,他是 10 号。十号只轻瞄我一眼,眼神就游离到了其他地方,象征性地问过我的意见之后,在我还没开口的时候就已经拿起剪刀剪了两剪子了。</p>
<p>卧槽,那你问我干什么呢?</p>
<p>我顿时心生畏意,这货之前不是玩摇滚的吧?带着 Fuck off 的精神来报复社会?想到这里又有些小激动,他会不会给我弄个麦扣杰克森出来呢?</p>
<p>摘下眼镜的世界,模糊,美好,充满诗意,也充满了对未来的不确定性。</p>
<p>再次戴上眼镜,眼前的这个人已经不再是我之前认识的那个人。我凝视了他五秒钟,然后对他做了个鬼脸,看到他也不客气地对我做了个鬼脸的时候,我深深地意识到,没错,这他妈的确是我。</p>
<p>洗头小哥再一次接手,他说「今天这个头理得真帅」的时候,我全身打了一个冷颤。我定睛看了看这位小哥的发型,我意识到了他审美下的「真帅」。</p>
<p>真帅。</p>
<p>接下来的事情记忆变得恍惚,我不知道怎么骑了车回到学校锁上车子打开楼门走上楼梯进入宿舍再坐到电脑前的,等我反应过来,我已经坐在电脑前了。</p>
<p>再起身,看一眼镜子。你们这些以发型取人的傻逼,你们以为我会在乎你们的看法吗?你们以为我会在意你们的指指点点和鄙夷的目光吗?我混了这么大,是靠头发混出来的吗?</p>
<p>有人说,没图你说个XX。</p>
<p>你傻吗?</p>
<p>要是敢放图,我他妈还用吭哧吭哧说这么一大堆骗你?</p>
<p><a href="https://blog.mforever78.com/lun-li-fa-shi-de-bu-ke-gou-tong-xing/">论理发师的不可沟通性</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on April 05, 2014.</p>
https://blog.mforever78.com/xin-nian-ji-hua
2014-02-20T20:35:23+08:00
2014-02-20T20:35:23+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="https://blog.mforever78.com/images/behind_a_MAC_tn.jpg" alt="behind a MAC" /></p>
<p>虽然说计划很难有实现的时候,但每年人们还是欺骗自己作出一个看似圆满的计划。一年过去,看着从未实现的计划叹一口气,再列一个新的计划。(咦,我好像想起了谁)</p>
<p>在列计划的过程中,重新审视自己倒也是个不错的体验。不管能不能实现,下面是我的新年计划。</p>
<ul>
<li>开始写<a href="http://MForever78.github.io">技术博客</a>,养成把知识记录下来的习惯</li>
<li>坚持每周锻炼三次</li>
<li>每周一篇博客(我开始不相信自己了)</li>
<li>更加深入地学习网站前端(HTML 5, CSS, javascript, jQuery, bootstrap, less/sass)和后端(django)的相关知识,完美地实现两到三个网站</li>
<li>预习课程</li>
<li>完成作业,不旷课</li>
</ul>
<p>就这么多,这些是从列了一长串里面筛选出来的最重要也比较现实的几个。人成熟的一大标准是明白自己干不了什么,嗯。</p>
<p><a href="https://blog.mforever78.com/xin-nian-ji-hua/">新年计划</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on February 20, 2014.</p>
https://blog.mforever78.com/hao-ba-na-jiu-shuo-shuo-2013
2014-01-01T02:35:21+08:00
2014-01-01T02:35:21+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>2013还有几个小时就过去了,我在空荡的工业设计系的专教里面坐着,听着楼上一群人聚起来吃火锅的嬉笑声和远处文广上新年狂欢晚会的低音炮里发出的节奏声,再看看面前屏幕上平时看起来很亲切的代码,突然有一种很矫情的孤独感。大学新同学要吃喝玩乐的时候总有一群人,想说说话却很难找到一个愿意听的。不管了,有些话无论说给谁,说出来总是好的。</p>
<p>好吧,那就说说2013。</p>
<p>高考前的那段时间好像过去了很久很久,像是几年前的事情一样。虽然有人会说当时很辛苦但现在想想却很快乐之类的话,但我知道这只是人类自我保护的本能——我们倾向于忘掉过往经历中痛苦的情绪。这功能其实挺牛逼,否则人生苦短哪来那么多勇气支撑我们走下去。但准备高考的痛苦真真实实地被我用文字记录下来,再读起来还是能体会到当时的压力和无助,不想为它说任何好话。</p>
<p>六月份,高考,出成绩,准备香港三所大学的面试。老师们很不支持这个决定,但同学和家人还是站到了我这一边。在咖啡厅和嘎儿练习口语,用英语辩论奢侈品存在的意义,聊到科技话题时我一如既往的话唠;和大家讨论考后请饭事宜的开心;一个人出发去北京面试心里的小激动;傻逼了以后飞去深圳的慌张;遇到好心大叔的感动;全部被拒之后的失落。大部分乱七八糟的事儿都在七八月份涌出来,很值得回味。</p>
<p>去过北京很多次,但终于腾出一个假期的时间好好逛逛北京了。没计划,想到哪玩到哪的方式深得我心。可能是玩得太随便了一点也不上心,作为大学报道前的最后一个大型活动,这次旅行并没有给我留下很深的印象。</p>
<p>听着《新长征路上的摇滚》,糊里糊涂来到大学,瞬间生活丰富起来。选课选老师有极大的自由度,鼠标划过这些奇奇怪怪的课程时居然有当年在电脑城把脸贴着玻璃看最新出的电子产品的感觉。听说这门课很水?退掉。计算机类?选上。文学类,还是外语教学?这不点一个说不过去呀。……按着这个节奏跨了一些大类选了三十几个学分,想着大学真不错。</p>
<p>接着是组织纳新。学生组织是学校领导下的一些有名头的组织,我们这里比如有学生会,求是潮,勤创,青素。本来想加入最有技术含量的求是潮,但因为项目经验太少没有通过。现在看来真是塞翁失马,因为那里的工作强度会占用大部分课余时间,并且会做一些不是很有意义的工作。由于之前听到了太多关于学生会的负面消息,反倒让我更加感兴趣了,没经历过怎么批判?本着这样作死的想法进了校学生会。</p>
<p>一段时间后,我发现学生会的工作可以说对我没有任何吸引力。没有很多有技术含量的活儿,只是事无巨细地为每一个活动跑流程、跑物资、写策划。我觉得这一定是我自己的问题,不能先下判断呐,带着情绪工作多不好,于是加入了一个活动组。……嗯事后我发现跟自己过不去是不对的。基因这东西太牛逼了,根本不听你解释啊,「做活动可以锻炼一下这个组织大家的能力嘛...」「滚,老子不干!」「别这样,你看和大家团队合作搞定一件事情还是很快乐的呀...」「滚,老子不干!」「那把校会作为一个平台来看也可以认识很多有意思的人呐...」「滚,老子不干!」「好吧...」。嗯,屈服以后就渐渐淡出了学生会。</p>
<p>没了组织还有社团,微软技术俱乐部可以说是今年找到的最有归属感的一个地方了。大神云集,当年做过的题库网站的站长、ACM世界冠军队员、看得死去活来的算法书的作者竟然都在这里。想学东西的时候有对内的小课堂,想做东西的时候有项目派发。全邮件交流,一个项目从开始到结束可能大家都不会见一次面,群里时常讨论点前沿的技术,可以肆意说各种名词而不必担心看不懂的人的嘲讽。这种感觉就是——找到组织了。</p>
<p>另一个要说的活动就是TEDxZJU,十一二月份的主要精力花在了这个上面。我进入志愿者团队后被分配到了线上宣传组,但其实外联、网站开发、运营和宣传的工作我都有参与。花了很多精力,但看着自己参与办的TEDx大会还是很有成就感的。收获的其实更多,技术上为了网站开发我自学了前端和PHP,更重要的是在一起筹办大会的时候认识的一群好玩和有才的人。注意,好玩,但必须有才。和工业设计系的学长学姐混得很熟,看他们做设计,听他们讲有关设计的理念,讨论技术和设计的关系,真的是学到了很多。TEDxZJU必须得是2013的一个亮点。</p>
<p>活动到这里就算告一段落了。投入大量精力在活动上面的副作用就是,学习落下了。三十几分的课程,没有足够的精力投入是很难收到良好成效的。虽然早有准备,但大学里的学习方式还是让我不适应了一下。老师根本不管,也没法管,学生的学习情况,上课只是按部就班地讲书,台下的学生是否理解了,是否跟得上,不去理会。这也情有可原,二百多个人的班,怎么管?直到现在我还是不适应这样的大课,到教室的时候前三分之二的座位已经被占满,坐在后排既看不清黑板,也听不清老师讲话,一段时间后就放弃努力了。高中向往和标榜的自学,突然以这种方式强加,一下子还是没接受了。</p>
<p>这篇文章从一三写到了一四,新年狂欢夜上传来被翻唱糟践了的《杀死那个石家庄人》让我整个人都不太好了。一三是转折和开始,我还是做得有些不好,百分制下我给自己打七十八分,但愿这不要是我的均绩。一四来了,新年里希望一切都好,但最好来点挑战,不要平庸地过去。</p>
<p>还有论文等着写,就这样吧。
</p>
<p><a href="https://blog.mforever78.com/hao-ba-na-jiu-shuo-shuo-2013/">好吧,那就说说2013</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on January 01, 2014.</p>
https://blog.mforever78.com/dang-wo-pao-bu-shi
2013-11-07T20:45:02+08:00
2013-11-07T20:45:02+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><a href="http://www.mforever78.com/blog/wp-content/uploads/2013/11/IMG_1535-e1383828165874.jpg"><img src="http://www.mforever78.com/blog/wp-content/uploads/2013/11/IMG_1535-e1383828165874.jpg" alt="2013杭州马拉松奖牌证书" class="aligncenter size-full wp-image-637" /></a></p>
<p>成功完成了人生中第一个半程马拉松,21.0975KM/2H10Min。有人问我这21公里是怎么坚持下来的,以及为什么我竟然会喜欢跑步?这其实是两个忧伤的故事。</p></p>
<p>先说第二个问题好了。我从小不爱出门,怕见生人,同龄生人都不行。于是自然而然没什么机会参加集体活动。等到上初中的时候,体育课上有人打篮球,有人踢足球,「准入门槛」已经产生了。意思就是说打得好的,踢的好的,是不和我们这群人一块玩儿的。于是我们几个弱菜聚在一起随便瞎玩,没有规则,没有技巧,只为打发时间,并没有什么乐趣。再后来高傲的我就不再和他们一起玩儿了,逢体育课我就在教室里写作业。</p>
<p>但是初中我遇上了一个极好的班主任,对像我这种经常无视学校规定的人极其厌恶。于是为了躲避见她,我常年以身体不适为由请病假。在我没在学校的日子里,她极尽讥讽之能事,说像我这样的学生学习再好也不会有好结果,说以后一定是药罐子,整天离了吊瓶就活不了,说罢还模仿霍金状。作为一个青春期的愣头青,我甚至想把这段录下来然后到教育局举报她,后来鉴于没有称手的设备才恨恨作罢。然后接下来就是一个励志的故事,我开始每天跑步,开始只能跑两圈,后来慢慢到三圈,五圈,七圈……一个人。开始是泄愤,后来慢慢变成了习惯,再后来就变成一种释放压力的方式。中考体育,她居然和其他老师放出狠话要看我的笑话,被我以满分扇了一记响亮的耳光。</p>
<p>有人跑步是在跟自己较劲,委屈了、心情不好了、失恋了什么的,到操场狂跑两圈,用尽力气是目的。我也是从这样的状态开始的,但当距离继续加大到3KM, 5KM的时候,跑步就变成了跟自己身体的对话。是抗争到妥协再到超跃的过程。过了第一次难受点之后,大脑可以完全放空,什么事情都不想,只关注到身体的每一个零件的感觉。长距离跑步可以有和冥想一样的效果。</p>
<p>跑步的故事讲完了。</p>
<p>在杭州跑步感觉身体变得很轻,就算很长时间不锻炼也直接就可以跑五圈以上。和着对马拉松的好奇和对自己极限的挑战心理,我和几个小伙伴一起报名了2013杭州马拉松。学校里面报6公里的最多,少部分人报了13公里,只有极少数人报了半程21公里或全程42公里。我想想,平时也就跑3、5公里的,现在挑战一下报个13公里得了。</p>
<p>第一个悲剧就是,不靠谱的小伙伴们在杭马前一周内都以各种理由告诉我说自己去不了了。这意味着我要一个人去,一个人跑完13公里,再一个人默默地挤公交回来。</p>
<p>好吧,这也没什么,本来就是自己作死拉别人一起也怪不好意思的。到了现场存好行李,等领导们讲完话,大军浩浩荡荡出发。我打开手机上的NIKE+,准备全程记录然后分享到常年不上的微博上臭屁一下,结果跑到7公里时手机很给力地没电自动关机了。这时候我已经注意到我已经超过了跑短程的大部分人,冲到了前面跑半程大军的队伍里,看周围全是老头老太太,我毫不客气地一个一个超过去,我觉得我真是太牛逼了。</p>
<p>一个人跑没有跟组织,并且主办方指引牌做得不给力的下场就是——我跟错队伍了。第一次生理极限大概是在八公里的时候,跑到八卦田附近肚子两边开始一起疼,腿也已经完全没劲。跑到一个饮水站的时候我停下来拿了瓶水开始沿着赛道快走,看着刚才被我超过去的大爷大妈们又嗨嗨皮皮地超过了我。扔掉水再继续跑,经过九公里里程牌,十公里里程牌...然后,没有里程牌了。我抬头看看周围,载黄色号码牌的同胞已经全不见了,我正在嘀咕,突然看到33公里的里程牌——fine...这跟到半程的赛道已经多久了啊!为什么没有引导人员告诉我啊!为什么没有指示牌啊!周围的人你们是什么心态啊!不要用看傻逼一样的眼光看我行不行啊!</p>
<p>在我意识到跟错队伍的接下来九公里,每公里都变成煎熬。到一个饮水处,拿起杯子喝一口马上扔掉继续跑,腿不能停,突然停下来反而会抽筋。而且一旦停下来,我很怀疑我还能不能再继续跑到终点。功能饮料在这个时候终于发挥了作用,平时喝红牛没有感觉,这个时候喝完再跑五百米,马上能感觉到肚子疼痛感减轻。哦对了,中途还吃了一管叫做能量胶的东西,粘粘的好像鼻涕一样,而且很难吃,但吃完这个立马欢蹦乱跳开始重新加速超过了老大爷们。</p>
<p>只剩四公里的时候志愿者就在旁边喊「加油加油马上就到了就在前面」,我一听开开心心地开始加速,发现被骗了的时候不知不觉又跑了两公里。这个时候身后一阵喧闹声,一辆警车开过去后紧接着是CCTV5的摄像车,我对着摄像张牙舞爪了半天才发现丫根本没在拍我,原来这个时候跑全程的专业选手从后面追上来了。他们在用我平常跑一千米的速度,跑,马,拉,松。反正我觉得这肯定是基因问题,嗯。</p>
<p>我开始大口喘气,眼镜片也被水打湿眼前模糊一片什么都看不清。我估计当时样子挺狼狈的吧,一个志愿者妹子看不下去了,在我经过她的时候跟我击了个掌说「加油,只剩六百米了!别放弃呀。」好!就冲妹子的这番鼓励,说什么我也得接着跑啊,况且还只剩六百米了,况且还有一个 Bikini 就在前方一百米处!不然加个速吧?</p>
<p>嗯,事实证明那妹子也是个骗纸。跑着跑着我看到41公里的里程牌了。还有一公里...路两旁的人渐渐多了起来,扛着长抢短炮的人也多了起来,前面还有音响声,这回真的是快到了。</p>
<p>最后一个分岔路从大路拐进辅道,两边挤满了人,闪光灯晃个不停,人们疯狂地喊着「加油」,最后一百米,冲刺,完成。看一眼记时牌,两小时十分钟零八秒。</p>
<p>志愿者很热心,虽然我的号码牌颜色和大家不一样,还是发给了我一个奖牌和毛毯。颁奖仪式已经开始,跑完的选手们在互相拍照留念,我手机没电。</p>
<p>由于短程和半程的终点不同,我还得回到起点取回行李。这时候我才意识到钱包也在行李里面,我连搭公交的钱都没有。去到问询处,热心的志愿者借给我四块钱,指点了一下路线,我一个人乘了一个小时的公交,回到起点。取回行李,拿出来钱包一看,发现取不取没什么区别,一分钱也没有,嗯,不带现金真是个好习惯。饭店一家一家挨着问过,「能刷卡么?」。终于在下午一点之前找到家饭店,稍作休息,再一个人乘公交车回港。</p>
<p>回到宿舍,舍友刚刚睡醒。凌乱中看了我一眼,「回来了?」「嗯。」</p>
<p>倒在床上,睡。故事完。
</p>
<p><a href="https://blog.mforever78.com/dang-wo-pao-bu-shi/">当我跑步时</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on November 07, 2013.</p>
https://blog.mforever78.com/gei-yi-nian-hou-zi-ji-de-yi-feng-xin
2013-10-09T20:03:37+08:00
2013-10-09T20:03:37+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>见信好。</p>
<p>想了半天不知道怎么称呼你,索性就直接进入正题。毕竟跟自己说话,太客气了显得矫情,你说是吧?</p>
<p>大学一年过去了,我猜你现在回头想想,肯定又觉得特别快。学文的老人们让我给你写这封信,据说目的是激励我和你中间的那段我们,让丫好好学习好好工作什么的,别把这一年颓过去。激励这事儿吧,我觉着不是很靠谱,洗脑啊、正能量啊这些东西咱又不吃这一套。而让我质问你这一年的经历、成果什么的,我又干不出来,何况你也不一定乐意说,我太了解你了,回忆什么的,不是咱的风格。</p>
<p>那写点什么呢?主要是把我现在的想法和你说说,你听听看有什么不靠谱的,以后别再往坑里跳就好。其实吧,现在我的学习和生活才刚刚稳定下来。开学的时候觉得什么都新鲜,什么都想尝试一下,每天日程安排得爆满。你一定还记得被 Google Calendar 用短信和邮件轰炸到想扔掉手机的那段时间吧。每天忙忙碌碌,赶这个演讲跑那个会议抢各种票看各种妹子,一星期下来却说不清自己到底干了些什么。我看着从太原背来的那一包书一本都没动过, KINDLE 关着 WIFI 闲置到关机都没有发现,忽然感觉我靠,现在的生活太不正常了。我们一直中意的那个社团没有进,在面试时候被问得像个傻逼一样的场景你还记得吧。那天晚上算是入学一个多月的低谷,我说按这个节奏走下去非废了不行。</p>
<p>然后就是转型期了,你得谢谢咱那几个好基友们,我最低谷的时候丫们几个风头正盛。我想我了个去,让你们几个虐死我那可还行?然后就整晚整晚在图书馆泡着,学习是一方面,终于有时间看书了。小伙伴这时候及时找到我要和我一起开发 APP (顺带问一句现在这事儿最后成没成啊?你丫做没做出个我现在想的那种高大上的应用啊?),然后终于开心地没日没夜地看看起来极高大上的英文原版专业书了。学习了一下掌控时间,给自己留点余地。既能每天看书,有时候也能写点东西,每天跑步健身,和周围人聊天儿,偶尔勾搭妹子,这特么才是大学啊你觉着呢?</p>
<p>我没对你期望太多,所以你应该不会让我失望,我现在很清楚自己要干什么,估计你也知道,咱们磨合了小二十年的默契我还是很有信心的。这封信的意义没那么深刻,如果你颓了(你特么居然颓了?!),它肯定也不能让你轻易回头;如果你风头正好,它也是博你一笑。就当咱俩聊聊天儿吧,挺不容易的。</p>
<p>听说大二很关键,你现在情况怎么样啊。我帮不了你什么,但对你百分之百的信任,选好路,别回头一直走下去,加油!</p>
<p><a href="https://blog.mforever78.com/gei-yi-nian-hou-zi-ji-de-yi-feng-xin/">给一年后自己的一封信</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on October 09, 2013.</p>
https://blog.mforever78.com/code-highlighting-post
2016-02-01T00:00:00-00:00
2013-08-16T00:00:00+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>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.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote">1</a></sup></p>
<h3 id="highlighted-code-blocks">Highlighted Code Blocks</h3>
<p>To modify styling and highlight colors edit <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>/_sass/_syntax.scss
</pre></td></tr></tbody></table></code>.</p>
<figure class="highlight"><pre><code class="language-css" data-lang="css"><span class="nf">#container</span> <span class="p">{</span>
<span class="nl">float</span><span class="p">:</span> <span class="nb">left</span><span class="p">;</span>
<span class="nl">margin</span><span class="p">:</span> <span class="m">0</span> <span class="m">-240px</span> <span class="m">0</span> <span class="m">0</span><span class="p">;</span>
<span class="nl">width</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt"><nav</span> <span class="na">class=</span><span class="s">"pagination"</span> <span class="na">role=</span><span class="s">"navigation"</span><span class="nt">></span>
{% if page.previous %}
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"{{ site.url }}{{ page.previous.url }}"</span> <span class="na">class=</span><span class="s">"btn"</span> <span class="na">title=</span><span class="s">"{{ page.previous.title }}"</span><span class="nt">></span>Previous article<span class="nt"></a></span>
{% endif %}
{% if page.next %}
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"{{ site.url }}{{ page.next.url }}"</span> <span class="na">class=</span><span class="s">"btn"</span> <span class="na">title=</span><span class="s">"{{ page.next.title }}"</span><span class="nt">></span>Next article<span class="nt"></a></span>
{% endif %}
<span class="nt"></nav></span><span class="c"><!-- /.pagination --></span></code></pre></figure>
<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="k">module</span> <span class="nn">Jekyll</span>
<span class="k">class</span> <span class="nc">TagIndex</span> <span class="o"><</span> <span class="no">Page</span>
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">site</span><span class="p">,</span> <span class="n">base</span><span class="p">,</span> <span class="n">dir</span><span class="p">,</span> <span class="n">tag</span><span class="p">)</span>
<span class="vi">@site</span> <span class="o">=</span> <span class="n">site</span>
<span class="vi">@base</span> <span class="o">=</span> <span class="n">base</span>
<span class="vi">@dir</span> <span class="o">=</span> <span class="n">dir</span>
<span class="vi">@name</span> <span class="o">=</span> <span class="s1">'index.html'</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">process</span><span class="p">(</span><span class="vi">@name</span><span class="p">)</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">read_yaml</span><span class="p">(</span><span class="no">File</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s1">'_layouts'</span><span class="p">),</span> <span class="s1">'tag_index.html'</span><span class="p">)</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">data</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="n">tag</span>
<span class="n">tag_title_prefix</span> <span class="o">=</span> <span class="n">site</span><span class="p">.</span><span class="nf">config</span><span class="p">[</span><span class="s1">'tag_title_prefix'</span><span class="p">]</span> <span class="o">||</span> <span class="s1">'Tagged: '</span>
<span class="n">tag_title_suffix</span> <span class="o">=</span> <span class="n">site</span><span class="p">.</span><span class="nf">config</span><span class="p">[</span><span class="s1">'tag_title_suffix'</span><span class="p">]</span> <span class="o">||</span> <span class="s1">'&#8211;'</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="si">#{</span><span class="n">tag_title_prefix</span><span class="si">}#{</span><span class="n">tag</span><span class="si">}</span><span class="s2">"</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">data</span><span class="p">[</span><span class="s1">'description'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"An archive of posts tagged </span><span class="si">#{</span><span class="n">tag</span><span class="si">}</span><span class="s2">."</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span></code></pre></figure>
<h3 id="standard-code-block">Standard Code Block</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="rouge-code"><pre><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 -->
</pre></td></tr></tbody></table></code></pre></div></div>
<h3 id="fenced-code-blocks">Fenced Code Blocks</h3>
<p>To modify styling and highlight colors edit <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>/_sass/_coderay.scss
</pre></td></tr></tbody></table></code>. Line numbers and a few other things can be modified in <code class="language-plaintext highlighter-rouge"><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>_config.yml
</pre></td></tr></tbody></table></code>. Consult <a href="http://jekyllrb.com/docs/configuration/">Jekyll’s documentation</a> for more information.</p>
<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="rouge-code"><pre><span class="nf">#container</span> <span class="p">{</span>
<span class="nl">float</span><span class="p">:</span> <span class="nb">left</span><span class="p">;</span>
<span class="nl">margin</span><span class="p">:</span> <span class="m">0</span> <span class="m">-240px</span> <span class="m">0</span> <span class="m">0</span><span class="p">;</span>
<span class="nl">width</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>
<span class="p">}</span>
</pre></td></tr></tbody></table></code></pre></div></div>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="rouge-code"><pre><span class="nt"><nav</span> <span class="na">class=</span><span class="s">"pagination"</span> <span class="na">role=</span><span class="s">"navigation"</span><span class="nt">></span>
{% if page.previous %}
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"{{ site.url }}{{ page.previous.url }}"</span> <span class="na">class=</span><span class="s">"btn"</span> <span class="na">title=</span><span class="s">"{{ page.previous.title }}"</span><span class="nt">></span>Previous article<span class="nt"></a></span>
{% endif %}
{% if page.next %}
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"{{ site.url }}{{ page.next.url }}"</span> <span class="na">class=</span><span class="s">"btn"</span> <span class="na">title=</span><span class="s">"{{ page.next.title }}"</span><span class="nt">></span>Next article<span class="nt"></a></span>
{% endif %}
<span class="nt"></nav></span><span class="c"><!-- /.pagination --></span>
</pre></td></tr></tbody></table></code></pre></div></div>
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="rouge-code"><pre><span class="k">module</span> <span class="nn">Jekyll</span>
<span class="k">class</span> <span class="nc">TagIndex</span> <span class="o"><</span> <span class="no">Page</span>
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">site</span><span class="p">,</span> <span class="n">base</span><span class="p">,</span> <span class="n">dir</span><span class="p">,</span> <span class="n">tag</span><span class="p">)</span>
<span class="vi">@site</span> <span class="o">=</span> <span class="n">site</span>
<span class="vi">@base</span> <span class="o">=</span> <span class="n">base</span>
<span class="vi">@dir</span> <span class="o">=</span> <span class="n">dir</span>
<span class="vi">@name</span> <span class="o">=</span> <span class="s1">'index.html'</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">process</span><span class="p">(</span><span class="vi">@name</span><span class="p">)</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">read_yaml</span><span class="p">(</span><span class="no">File</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="s1">'_layouts'</span><span class="p">),</span> <span class="s1">'tag_index.html'</span><span class="p">)</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">data</span><span class="p">[</span><span class="s1">'tag'</span><span class="p">]</span> <span class="o">=</span> <span class="n">tag</span>
<span class="n">tag_title_prefix</span> <span class="o">=</span> <span class="n">site</span><span class="p">.</span><span class="nf">config</span><span class="p">[</span><span class="s1">'tag_title_prefix'</span><span class="p">]</span> <span class="o">||</span> <span class="s1">'Tagged: '</span>
<span class="n">tag_title_suffix</span> <span class="o">=</span> <span class="n">site</span><span class="p">.</span><span class="nf">config</span><span class="p">[</span><span class="s1">'tag_title_suffix'</span><span class="p">]</span> <span class="o">||</span> <span class="s1">'&#8211;'</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="si">#{</span><span class="n">tag_title_prefix</span><span class="si">}#{</span><span class="n">tag</span><span class="si">}</span><span class="s2">"</span>
<span class="nb">self</span><span class="p">.</span><span class="nf">data</span><span class="p">[</span><span class="s1">'description'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"An archive of posts tagged </span><span class="si">#{</span><span class="n">tag</span><span class="si">}</span><span class="s2">."</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
</pre></td></tr></tbody></table></code></pre></div></div>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p><a href="http://en.wikipedia.org/wiki/Syntax_highlighting">http://en.wikipedia.org/wiki/Syntax_highlighting</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
<p><a href="https://blog.mforever78.com/code-highlighting-post/">Syntax Highlighting Post</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on August 16, 2013.</p>
https://blog.mforever78.com/yi-ge-xiao-nv-sheng-de-gu-shi
2013-06-13T13:06:37+08:00
2013-06-13T13:06:37+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>这个学校的座位安排很奇怪,三个人一排,坐在中间的那个人理所应当地比别人多享有一个同桌。但是三个人还是个奇怪的组合,尤其是他们三个。</p>
<p>可能是为了对称,这个长得有些肉嘟嘟的女孩儿坐在了中间。一边是和她坐了很久的同桌,另一边是一个新调来的同学。「这个人平时都不怎么说话,他大概是个闷葫芦吧。」女孩儿心里暗暗想。</p>
<p>「同学,你看这个题能不能这么想?」一个干净的男声。<br />
新同桌显然怔了一下,但马上恢复了往日的平静:「我看一下。」<br />
「不能吧,你看这里……」他对隔着女孩儿给他讲题还是有点不习惯。<br />
「你看,我说不能吧!你说的全是错的!」男生突然对女孩儿嬉皮笑脸手舞足蹈起来。<br />
「什么?我什么时候说了?!」<br />
「你就说了!」<br />
女孩儿停下来,半天没有说话,憋得脸通红。她显然是在寻找一个骂他的词。<br />
「你是猪八戒?!」</p>
<p>新同桌还是很少说话,不过他时常会像很熟的人一样直接拿起女孩儿桌子上手抄的课程表看一下。<br />
「你猜下节是不是化学课?」<br />
她低下头装做纠结的样子:「不是。」<br />
「猜错啦。」<br />
「啊?...那...那下节是什么课啊?」<br />
「你笨啊,我问你下节是不是化学课,你猜错了,然后……」<br />
「你才笨啦,我不是想配合你演完这出戏吗?」</p>
<p>考试完英语课代表总喜欢伴着大家的哀嚎声慢悠悠地把答案抄满黑板。<br />
女孩儿对着对着就撅起了嘴。<br />
男生却一副兴奋的样子。<br />
老师走过来关心一句,「你们都扣了几分呀?」<br />
女孩儿:「十分。」<br />
「啊?都上两位数啦?这可不应该啊。」<br />
男生脸上的表情突然冷下来了一点,低头。<br />
「你呢?」<br />
「我...也是十分。」<br />
「哦,那相当好了啊,不错不错,继续努力!」<br />
老师去别处了。男生一字一句:「士可杀,不,可,辱……」</p>
<p>马上就要考试了。<br />
这个时间往往很自由,大家都在自己看书。<br />
「诶,你看看这道题我怎么就解不出来啊?」<br />
「哎呀别烦我,自己看看不就行了。」男生嘟囔了一句,头也没抬。<br />
「你帮我看看就怎么了呀?」<br />
「拿来。」男生接过卷子看了一眼,迅速扭身向后桌,「老郭,快,她让你帮她讲道题。」<br />
「不~行~」女孩儿急了,把声调拖得长长的。<br />
她发现周围人都在看着她,脸一红。<br />
拿出答案解析,自己慢慢看了起来。<br />
「哼!」</p>
<p>高考终于结束了,接来是疯狂的时间。<br />
班里组织聚餐,他们三个当然都在其中。<br />
高中学生就是这样,座位自动按照男女生分开了。男女各两桌,他们三个分散在不同的三桌上。<br />
新同学拉了两个男生,突然冲到那个男生座位边,不由分说连拖带拽地把他揪到女生的那一桌。<br />
大家都明白过来是怎么回事,立刻围成一圈。女孩也被身旁的人推了出来。<br />
「不要闹了不要闹了,老师还在呢。」男生还是拼命想挣脱。<br />
「大家安静一下听我说。」老师站起来了,「我举双手赞成,你不要扭捏了。上了大学看你到哪儿再找这么好的姑娘!」<br />
欢呼声,起哄声。<br />
「我看这样吧,你们两个喝个交杯酒,今天所有人都是见证人怎么样?」一个男生站出来嘻嘻哈哈地说。<br />
「不行不行!」两个人几乎是同时喊出了声。<br />
「那...我就碰一下就好了。」男生知道一定是逃不掉了,不如妥协一下。<br />
「当!」清脆的一声。<br />
两个人的脸都红到了脖子根。男生放下酒杯飞快地冲出包间,留下满桌笑声。<br />
新同学混在人群里,和大家一起笑了。</p>
<p><a href="https://blog.mforever78.com/yi-ge-xiao-nv-sheng-de-gu-shi/">一个小女生的故事</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on June 13, 2013.</p>
https://blog.mforever78.com/qing-chun-jiu-shi-yong-lai-huai-nian-de
2013-05-02T13:10:36+08:00
2013-05-02T13:10:36+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p><img src="http://i1124.photobucket.com/albums/l569/shunjian1128/Website/p1948245873_zpsa74dc8c9.jpg" width="2986" height="1866" alt="《致我们终将逝去的青春》海报" class="aligncenter" /></p>
<p>我今年20岁。</p>
<p>高晓松去年出了一本书,名字叫《如丧》。如丧什么呢?如丧青春。封皮上有一行字:「我们终于老得可以谈谈未来。」同时也即「我们终于老得可以谈谈过去」。但我不想等到像他那样大腹便便时回首往事。我去看了《致青春》,未经世事,我也有话要说。</p>
<p>谈到回想青春,脑子里浮现出来的总是一群四十多岁的猥琐大叔叼着一支烟,在云雾缭绕中迷离了眼神,想着当年同桌的你,无限唏嘘。这部关于怀念青春的电影也必然少不了这悲伤的调调。</p>
<p>先从主角开始。</p>
<p>我不会喜欢郑薇,但却最喜欢这样的角色。整个电影只有她的青春最轰轰烈烈,她最敢爱敢恨,被伤害后也痛得最深。她没有做错什么,然而就是这样的设定使她注定只能成为一个悲剧。她把青春献给了一个自私的男人,被伤害之后的她不再能像当初那样全心地爱另一个人,却也不可能再原谅他。我不认为她和林静之间那叫爱,然而就算她最后又接受了陈孝正,爱已变质。她在影片中唱的那首《红日》:「命运就算颠沛流离,命运就曲折离奇,命运就算恐吓着你做人没趣味。别流泪心酸,更不应舍弃,我愿能一生永远陪伴你。」算是给她一生的注解,却也是一个大大的讽刺。</p>
<p>阮莞被塑造成了一个女神的形象。她漂亮,也善良,然而却爱上了一个极其懦弱的男人。爱情本没有对错,只能为她叹息,却不能怪她爱错了人。她最终离开了他。郑薇陪着她又开始相亲,那一刻我甚至觉得她才是最大的悲剧。好像能看到从此她不再拥有爱情,找到一个工作稳定的老实人组建一个家庭,只有感情,没有爱,在柴米油盐中慢慢老去。她的结局出人意料,我不为她唏嘘,我为她庆幸。从此只有她的青春永远定格不朽,她值得。</p>
<p>陈孝正是典型的中国式悲剧。他一生的大部分时间都没有为自己而活。母亲在他身上寄托太多,家庭和社会给了他太大的压力。像我们一样,他从小就被灌输价值观,什么是对的,什么是错的,什么是应该做的。在世俗观念里,他是成功的。然而在做人上一败涂地。分手时,他对郑薇说,人首先要爱自己,然后才能爱别人。他认为不辜负长辈的希望叫爱自己,得到社会的认可叫爱自己。全都错了。这些都是做给别人看的,他没有听从过自己内心的声音,如果真的爱自己,他反而应该选择留下来。我身边不乏陈孝天这样的人,一路背负着家长的期望,社会的期望,摇摇晃晃向前走,在别人眼里,他们或许走得很好,但有一天,他们会发现真正的自己早已死亡,世俗成功对他们毫无意义。陈孝天本身是这样的悲剧,郑薇选择他就更是悲剧。两个人在一起,三观相同固然最好,其中一个充当依赖角色没有三观也罢,然而三观不同者在一起,注定会是一场悲剧。</p>
<p>影片中没有一个人有完美的结局。以大学毕业为分界线,之前是青春,之后是现实。或许是青春太美好,或许是现实太残酷,我们只能站在现实怀念青春。而我想,之所以叫「终将逝去的青春」,因为可能本来就没有完美。假如两人在青春时相识,热恋,最后携手走进婚姻,一直到老,这叫做完美么?我认为不是的。青春终将逝去,我们终会在现实中磨平棱角,退却激情,看着当年心爱的人慢慢老去,心中不再有爱情,取而代之以责任,感情。提前预知这一切却无法改变,这难道不是注定的悲剧?</p>
<p>所以,你把青春当什么了?还妄想带走?记住,青春就是用来怀念的。</p>
<p><a href="https://blog.mforever78.com/qing-chun-jiu-shi-yong-lai-huai-nian-de/">青春就是用来怀念的</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on May 02, 2013.</p>
https://blog.mforever78.com/na-shi-zheng-jiu-ni-wo-de-12306
2013-01-22T21:33:36+08:00
2013-01-22T21:33:36+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>前几天和人聊天,他抱怨铁道部客票系统,说政府花了3个亿,就办出个这样的东西来。不用问,肯定在吐槽前不久12306因为机房空调坏掉而暂停运行的事件。后来越说越激动,说页面设计得多么丑,人一多就瘫痪,还花了两个亿,这钱一定是被谁吃了。我解释,花那么多钱搞出的这个东西确实是有问题,但也要考虑客观因素。比如高峰期日访问IP400W,PV1000W,服务器确实吃力。他说,那天猫双十一时候人不比这多啊,人家不照样运行得妥妥的。我说,那性质不一样,客票系统复杂得多,一个请求要多次查询数据库,车次,座位分配等等,关键还要实时和数据库同步,和其他订票系统协调才行。而如此大的需求量,对软硬件都有极变态的需求。百度阿里有十多年的软件经验和硬件基础,这个也比不了。其次12306是公开招标,太极科技中标,而且提供的都是价格几乎透明的硬件设备,我不觉得有什么问题。我总体上还是理解它的。</p>
<p>和你一样,他也听不下去了。他说,反正肯定有问题,一定有黑幕。</p>
<p>一旦出现「反正」这种字眼,讨论即告结束。</p>
<p>我不是在记录一个五毛的胜利。12306的这些问题我可能比更多人先注意到,但我没有就丢下一句「XXXX」而离开。我去查了12306当年招标的信息。出乎我意料的是,只有中标信息而没有公开招标的信息,而且铁道部还拒绝了一位律师关于公开这些信息的请求,两方正在打官司。这下看起来一切似乎很好解释了,是这样的么?</p>
<p>人们的不满主要集中在几个方面。一一来说。</p>
<p><strong>一个网站而已,为何要那么多钱?</strong></p>
<p>有些人惊呼,我靠一个网站你们就花了纳税人3.3个亿,你们拿这些钱干什么了?首先我想说,要建设一个完善的在线购票系统,这些钱不但不多,甚至是远远不够的。有些人听一些 so-called 程序员在网上叫嚣,就这样一个网站,最多3000W,而且我可以做得更好。这完全是一种不负责任的说法,你可以针对它所用的技术进行质疑(这点下文详细说),但这样无凭无据夸下海口只能说明你的不成熟,甚者,居心不良。3.3亿的中标金额全部给了两家硬件提供商,而从出现的问题来看,硬件方面并没有问题。而软件方面,铁道部砍掉IBM和易程科技的方案,选择了隶属于自己的铁科院。</p>
<p>把焦点转向软件后,新的质疑又出现了。为什么IBM的成熟方案没有中标?而已经做出成绩的易程科技(铁道部使用该公司的自动售票系统)还有清华大学Web与软件技术研究中心(这是国内海量事务高速处理方面研究的佼佼者)的方案为何输给了铁科院(无任何可查到的优势)?</p>
<p>IBM没有中标的原因是多方面的。首先铁路运输系统作为有关国计民生的命门,使用外国公司的技术,不放心。先不要嘲笑这种观点。美国众议院在经过一年的讨论,决定阻止华为和中兴在美国的扩张,建议企业停止使用两家中国公司的设备;中国许多省级地区电信公司逐渐弃用美国思科的设备。都是基于这样的考量。在铁道部这次招标上,不管占多大比例,这样的顾虑应该是存在的。而更重要的原因是,IBM给出的解决方案实在是太!贵!了!3亿你都舍不得,IBM给出的价格甚至超出了清华大学专家团的心理上界,而且是一口价不打折还不包邮(即,不提供硬件设备)!这样来看,现在一些观点说「要是当初用了IBM就……」更多恐怕是对现在12306的糟糕表现的不满罢了,这根本就是一个伪命题。「要是当初」解决不了任何问题。</p>
<p>易程科技和清华大学研究中心与铁科院竞标,这个相对就没有那么多考虑的因素了。在一些报道中,清华大学Web与软件技术研究中心的负责人还有些撒娇地向记者抱怨。甲方招标,中标的是甲方自己的公司,其他乙方除了骂娘还有什么好说的呢?我把这个解释作「中国特色」。(那位正在打官司的律师也是主要针对这里的不正当竞争)</p>
<p>12306上线不长时间后即多次瘫痪,来自民意的压力使得铁道部不能不捉急。后续又多次投资进行软件建设。现在已经陆续扔钱10-20亿。在我看来,这还远远不够。IBM为何敢报出那个惊人的数字,是有道理的。</p>
<p><strong>为什么表现那么差?</strong></p>
<p>既然上文说明了软件解决方案的中标者,这个问题就很好解释了。一句话就是,真的是实力不行。一没经验二没强大的技术支持。</p>
<p>上面也说到了,在巅峰时期对这个系统的需求是极其巨大的。软件解决不了的时候就只能靠硬件拼。这实在是下下策,极大浪费了硬件资源,出力不讨好。</p>
<p>这里要再次强调,在线订票系统属于海量事务高速处理系统,这和淘宝等电商是不同的。国内在这方面大部分是空白。换一个角度说,阿里等电商已经投资不止百亿。无论怎样,拿12306和淘宝去比,是不科学的。</p>
<p>这个没有经验的公司,甚至没有做好最基本的安全策略。第一,这样涉及个人信息的系统,信息传输居然是明文。也就是说,黑客们完全有能力拦截到这些数据,不废任何力气就得到了你的身份证号,手机号等等。第二,网站居然还在使用http,而不是https。在现在几乎所有的邮箱都使用https加密的时代,这种做法是不能理解的。第三,用户unfriendly,界面还是上个时代产品的样子。有些人说这叫「工程师气息」,省省吧。</p>
<p>至于前段出现的机房空调事件,没什么好说的,狠狠吐槽就是。</p>
<p><strong>网上订票,我为什么还是买不到票?</strong></p>
<p>登陆不上就不说了,页面好容易承受住了巨大流量,可在放票后10秒中内,票就卖光了。</p>
<p>如果你在抱怨这个,我建议你使用各种抢票插件。这不是一个网络购票系统就能解决的,涉及区域发展不平衡等很多问题。要解决这个,还有很长、很长的路要走。</p>
<p><hr /></p>
<p>在这个事件中,任何一个能正常思考的人都不会满意铁道部的做法。我说说自己看到的东西。</p>
<p>到现在,还不能说铁道部的招标确实有问题,但这绝不代表它就是清白的。不要作出一副无辜的样子。招标信息为何不公开?作为政府部门,不能要求人们以善意揣测自己,反而应当每时每刻作好应付最坏的猜疑。阳光是最好的防腐剂,我愿意相信你是清白的,但你要证明给我看。我们的政府这方面意识薄弱。我认为最根本的原因就是在他们眼中「人民是国家的主人」根本就是一句屁话。官员由上层任命,对上层负责,管理人民。主子干什么事情还要向奴才们汇报么?这种思想不清除,阳光,透明也怕只能流于表面。</p>
<p>到这里,我的话就说清楚了。不是不要质疑,而是要有根据。你的抱怨作为民意的体现,有积极的意义。但无端的揣测不可取。我最支持那位律师的做法,有问题,抱怨之后,去督促改正。如今的中国,这很难,但总要有人做,也总会有人做。我们还没到悲观的年纪,你我都去积极一点,这个社会才有希望。</p>
<p><a href="https://blog.mforever78.com/na-shi-zheng-jiu-ni-wo-de-12306/">拿什么拯救你,我的12306?</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on January 22, 2013.</p>
https://blog.mforever78.com/wo-de-zhi-hu
2013-01-10T22:59:03+08:00
2013-01-10T22:59:03+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p style="text-align: center;"><a href="http://www.mforever78.com/blog/articles/wo-de-zhi-hu/attachment/tong-xin-gang/" rel="attachment wp-att-572"><img class="size-full wp-image-572 aligncenter" alt="我的知乎" src="http://www.mforever78.com/blog/wp-content/uploads/2013/01/tong-xin-gang.jpg" width="403" height="3937" align="center" /></a></p>
<p><a href="https://blog.mforever78.com/wo-de-zhi-hu/">我的知乎・2012</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on January 10, 2013.</p>
https://blog.mforever78.com/nian-zhong-zong-jie-mo-ri-nian
2013-01-01T11:19:38+08:00
2013-01-01T11:19:38+08:00
MForever78
https://blog.mforever78.com
shunjian1128@gmail.com
<p>世界末日都过去了,我还活着。被折磨蹂躏了一年,还真不能就这样简简单单让它过去了。是总结,为纪念,为反思,为指导。</p>
<p>时间结构:</p>
<p><strong>高考・败</strong></p>
<p>前半年都过得很快,为高考作准备根本感觉不到时间的流逝。一晃就到一模了,考一特烂的分数,安慰自己没关系。复读生同桌告诉我说,一模考多少高考也就差不多考多少。心里骂一句去你丫的。之后的成绩进过前十进过倒十,终于在高考时达到低谷,连一模的分数都不到,复读。</p>
<p><strong>复读・唉</strong></p>
<p>相信我爹至今都认为复读这个决定是他替我作出的。我在百般反抗下选择了屈服。然而真实的情况是这个分数确实没什么好去的学校。我想干脆别读这个破大学了也不错,但考虑到爹娘的心理承受能力,作罢。我没有意识到这个决定会给我带来多大的转变,但既然已经决定就不会轻视。我不会傻到用一年时间来向我爹证明「看,你的决定是错误的」。感谢这个阶段帮助支持我的同学们。</p>
<p><strong>假期・玩</strong></p>
<p>虐心的事基本同一时间爆发。我急于离开这里出去走走。不知道怎么个情况组了一个奇怪的四人团就出发了。两个姑娘答应得特爽快,连去哪儿都不知道就同意了。四个人挑了一天去蓝哥家商量行程。蓝哥妈对我们在网上订机票表示惊奇,当下就把闺女放心地交给了我们。##有多不靠谱的人就有多不靠谱的家长##</p>
<p>旅行很适合放空自己,多出去走走有利于增强对计划生育基本国策的认同感。很认真地组织,效果好过了任何旅行团。具本内容写在游记里,寒假放出来,不多费话。</p>
<p>「流水帐结束,说点严肃的」</p>
<p>关键词结构:</p>
<p><strong>自卑</strong></p>
<p>如果你没察觉我这个弱点的话,那证明我的伪装还是很好的。高中三年一直被这个问题折磨,终于在2012将它扼死。自卑的人容易受打击,轻而易举就丧失信心。对周围成功的人有不健康的嫉妒心理,不是强化自己,而是想着「要是他能弱一点就好了」或者干脆自暴自弃。对别人的成功不屑一顾,借此满足自己打击别人的快感。嗯,这就是以前的我,你不知道我伪装得多么辛苦。这是性格使然,却能后天改进。老天花了很大功夫帮我修这个Bug,ta.</p>
<p>多说两句,自卑和自负并不是两种对立的品质。自卑的极端就是自负。这里有一部分是人性。如果你竟然读到这里,不妨也检视一下自己。举个例子,从前帮别人修电脑,我会不断强调自己的权威,举出无数的案例,不容别人一句质疑,不承认自己的错误。如果足够自信何必这样?再如,你是否喜欢看那些高考状元毕业却不如原来的普通学生出路好的新闻,你是否很喜欢听那些牛逼哄哄的成功人士被打倒的消息?(我可没有含沙射影骂方舟子,一切都是你歪歪的)失败者才喜欢看到高高在上的人摔到和自己一个高度时的惨样以寻求心理平衡。</p>
<p><strong>屌丝</strong></p>
<p>这个词无须多说。它流行起来很长一段时间都没有引起我任何兴趣,直到上了大学的一个女同学和我聊天时张口闭口「屌丝」时,我才意识到所谓「屌丝文化」的影响力。</p>
<p>讲个小故事。有个人生在7月23日,他偶然看到一个错误的星座日历,以为自己是巨蟹座的。于是他疯狂看各种关于巨蟹座的描述,越看越像自己,越像自己越朝着那个方向活着。终于有一天,他发现自己原来是狮子座,顿时面如土色,从此再也不相信爱情了。</p>
<p>贴标签是个很可笑的行为。对「屌丝」这样的标签更是要谨慎一点。这不是自嘲,而是给自己所有不思进取的行为找到了一个合理的解释。以前你会为每天打Dota,看AV感到羞愧,现在你可以拍着胸脯说:「我们屌丝就是这么活着的。」这才是这个词的可怕之处。你自认为是屌丝,可能一辈子也就是个屌丝了。</p>
<p>「全世界来作对的阻力,也比不上一个人固步自封的力量。」</p>
<p><strong>SNS</strong></p>
<p>社交网络的两种形式:Facebook(人人),Twitter(微博)。今年终于下定决心完全退出这些产品。我并不是否认它们的先进性,所以别跟我说「抗拒潮流就是你老了」之类的屁话。我可能是微博在国内最早的一批用户之一,也曾经是重度使用者。但大把的时间投入换来的是无价值的信息碎片,浮躁和浅思考或不思考。人人这样的社交网络上分享的是生活秀,吐槽贴。把时间花在这样的地方我实在看不出有什么意义。</p>
<p>人人很人性化,可以销号。微博戒起来有难度。我只好在手机和电脑的hosts文件里加入屏蔽,并且用路由器将其域名和IP完全过滤。硬手段。</p>
<p><strong>爱情</strong></p>
<p>相信这词儿在每个人心中都有很重的份量。但没事儿就挂在嘴边不但让它显得不那么庄重,反而轻浮和可笑。但在这我不能不说。这个东西能激发人全部的占有欲和控制欲。由喜欢变成占有的过程很可怕。我不愿回忆,却想把它作为人生重要一课。没有后悔,不会抗拒,「随心所欲」。这就是我的态度,嗯。</p>
<p>小王子有了他的玫瑰便不算遗憾。小狐狸没了小王子,看到再多的金色麦浪,也只会遗憾不是小王子金色的头发。愿你找到自己的王子。</p>
<p><strong>正能量</strong></p>
<p>本来一个很好的词却被网络生生毁掉了。泡了这么多年网络,看到感受到最多的是戾气。因为几乎不需要为言论负责,所以互联网充满民愤。自媒体出现后更是进化成粪坑。常在其中的人难免会受到污染。我离开SNS也有很大一部分原因在此。</p>
<p>我曾经一度认为只有远离互联网才能客观和远离戾气。其实不然。也是在接触知乎后,才发现网上还有这么一群人,乐观积极。再后来看到王自如的科技评测,几乎让我兴奋到手舞足蹈。这样健康向上,努力做事而不是整日抱怨的人,才能真的成事。这种激情和朝气是那群「屌丝」没有的,也是我向往的。</p>
<p>推进进步的力量绝非消极,抱怨。而正是这样的正能量。</p>
<p><strong>政治</strong></p>
<p>原谅我用这么大的一个词。这一年里我对政治的看法产生了很大的变化。好多人声称不问政治,那恐怕是还没理解这个词的含义。</p>
<p>摘几句刘瑜老师的话。</p>
<blockquote><p>
我说的「关心政治」,并不是指关心某领导人最近又亲切接见谁了,或者某美女到底与某领导是什么关系。我记得我上中学时,同学们写的思想汇报中常常有这么一句:我很关心国家大事,经常看某台某报……拜托,那不是关心政治,那是关心宣传。真正关心政治,不是关心领导人的起居和病历,而是关心普通人的日常生活;不是关心「事件」,是关心正义。</p>
<p>亚里士多德说:「人是天生的政治动物」。就是说,人类对公共生活的关心和参与是人类的本能和人性。政治并不比我们去春游野炊时大家自发讨论分配谁带水、谁做饭、谁洗碗、怎么分摊费用更高深或者更丑恶,但是,在今天,这种天然的、自发的人类本能成了「反熵行为」。就是说,在一定意义上,只有非理性的「神经病」才会关心政治。</p>
<p>这是一个无奈的现实,但是不断有人跳出来说:「我们凭什么要关心政治?就爱吃喝玩乐自己挣钱自己花怎么了?!」当然,享乐主义是人权,谁也无权干预。但是千万不要以为「政治冷漠」就是没有政治态度,冷漠就是你的态度。更重要的是,享乐主义得以存在,是有一系列公共制度的前提的,而这些前提是政治斗争的结果。以为私人生活与政治没有关系的人,忘记了私人领域从边界的界定到秩序的维护都是政治问题。难道60年代全中国人穿灰黑蓝和今天大家穿得花枝招展仅仅是「个人品位」的不同?今天的中国从房价、到学术腐败、到电话费、到你在医院要排多久的队、到奴、到孩子上学、到交通……哪一个归根结底不是「政治问题」?那些「我就是我,去他妈的政治」的说法,就像是「我就是我,去他妈的空气」一样,貌似充满个性,其实无比滑稽。我理解在一个关心政治成本太高、追求个人发展动力很大的时代里大多数人的政治冷漠,但是我不能理解为这种冷漠而感到的洋洋得意。</p></blockquote>
<p>所以,不要把政治和玩弄权术画上等号,有人的地方就有政治。我喜欢政治,喜欢的是七十二先贤建立起的美国这样的联邦政体,看到这样的大国在那个体制下精密地运转,看到自由和平等的博弈,看到分权制衡的精妙会兴奋不已;我喜欢的是自由地表达自己对于社会不公的看法,喜欢美国加州大学伯克利分校的人民公园,喜欢北大曾经的「三角地」,喜欢中大那块「教工禁碰」的大字报栏。</p>
<p>不要听到「中国」二字就露出不屑的笑。你站立的地方,正是你的中国。你怎么样,中国便怎么样。你是什么,中国便是什么。你有光明,中国便不黑暗。</p>
<p><strong>GTD/时间管理</strong></p>
<p>GTD即 Get Things Done. 这类管理时间的方法多被用在白领的工作中,作为高中生其实可借自己支配的时间很少(但绝不是没有),便也不妨拿来主义。我在过去一年里看了很多有关GTD的书,有些理论作基础,但并不能完全套用。学习 OmniFocus 这类软件需要成本,我还没能下定决心。但从大学同学那里反馈回来的信息来看,这是迟早的事情,深入了解 GTD,作为2013的目标之一。</p>
<p>顺便来说几个我认为很好的 Get Things Done 的方法。我是重度拖延病患者,自制力极差。「自觉」一词对我来说如同神话一般。首先信奉一点,一件事要么现在,马上就去做,要么就不做。不要说「明天再做吧」,我才不信明天的自己,丫比我不靠谱一万倍。第二,一次只做一件事情。这句话有两个意思,一是说不要边玩电脑边写作业,二是说不要计划好好学习的同时编程也不落下。所以我2013的计划是准备高考,其它扯淡的事情先搁一边去了。</p>
<p>然后有些人就会像我一样,不开电脑就百爪挠心。这个时候我的做法是切断诱惑源,背上书包图书馆麦当劳走起。我还可以带手机,你最好连手机也不要带,省得你手贱刷微博。</p>
<p><strong>大学</strong></p>
<p>经过高考这么一折腾,三观被彻底打碎回炉重造了一次。现在的我对大学的看法又回到了混沌状态。如果去年有人问我想考哪所大学,我会两眼放光地告诉他:「清华大学」。今年再问,你只能得到一个茫然的眼神。</p>
<p>我知道你又理解错了。我从没觉得任何一所大学有多么高不可攀,现在也是。只不过现在的看法更多是「I don't care」。为什么?你拿出什么让我care的东西了么?我苦读,高考,证明自己,你拿什么证明你自己呢?还在沿用的谭浩强《C语言编程》?《思想品德》?英语说得还不如我的老师? Gnnng 说(我自己了解到的情况也是这样的),大学里教的理论课大多都不靠谱,关键还是自学。浙大社团新生自己开发的云存储,内部多人协作平台,这才是我想看到的东西。</p>
<p>这么一说,我更想在大学里交到一群志同道合的朋友,而不是捧着政治课本在教室里打瞌睡。</p>
<p><strong>亲人们</strong></p>
<p>我越来越意识到,我下意识想的「亲人们」,不仅包括亲人们,还包括同学们。</p>
<p>这部分是要反思的。总是习惯对陌生人友好,对身边的亲人们反而疏远。仗着「不管怎么样,他们都是爱我的」这样的心态,做出了很多不好的事。冷眼,毒舌,给我带来了什么呢?是如何能坦然面对他们一次又一次的原谅?##你真是个人渣##</p>
<p>对不起。不会再有「因为和你熟所以没必要客气所以可以随便伤你」这样的混蛋逻辑了。</p>
<p><strong>目标</strong></p>
<p>清空了乱七八糟的想法,2013的目标很简单:找到适合自己的跳板,为自己向往的明天努力拼搏。</p>
<p><a href="https://blog.mforever78.com/nian-zhong-zong-jie-mo-ri-nian/">年终总结・末日年</a> was originally published by MForever78 at <a href="https://blog.mforever78.com">MForever78's Blog</a> on January 01, 2013.</p>