高考小记

不知不觉,已是高考结束的第四年了。当初一起参加高考的同学一个个都开始分享自己穿着学士服的毕业照。有些还认得出,有些已经换了个样子。大概知识的冲刷都让大家变得有了内涵。不过我们几个男生,不管讲究的还是不讲究的,从照片看上去还是一个样。倒也只能安慰自己,男性往往成熟得更晚一些。大二的时候还会看到有同学自信地穿着不合身的西装,似乎现在都意识到了,暗示自己是学生会干部,也不过是在朋友圈里多拿几个赞而已。

对于四年前那场考试及其前后的经过,记忆早就变得模糊,也不知道是身体机能在下降,还是时间真的可以抚平痕迹,不光是自己作留下的短暂伤痕。刚上大学那会,大概每隔个礼拜睡觉就会遇到「回去高考」的噩梦,有时候还附带走错考场这样的大礼。后来慢慢就没有了。直到最近,偶尔又开始陷入这个奇怪的梦境中难以脱身。联想自己最近的心理状态,我才意识到梦的逻辑未必那么简单。辛苦也好,不公平也好,高考都不是一场单纯的灾难,也不是压力的重点和释放的起点,十二年以来的课堂在我们心中种下了强烈而又时常不自知的暗示——高考是一场改变,或者说,革命,如果你愿意把人生看作一段历史的话。它可能将你带上高峰,也可能推你坠入深谷。安居乐业的人民是不会革命的。所以当自己不满现状的时候,高考之火又会在熟睡的深夜燎原。尽管高考早已结束,但它实在是和「改变命运」四个字形成了过于深刻乃至本能的心理关联。也因如此,许多人高考期间并不沉闷忧郁——大学能有高三苦吗?其实,中考前我也有过类似想法。

Continue reading “高考小记”

说说隐私

隐私很重要。每个人都知道。可什么才算隐私呢?小时候和同学课上传的小纸条、学期结束给老师的评语、自己拍摄的照片……给定一个事物,我们往往能对它属不属于隐私作出判断。但是对于「哪些是我们的隐私」,我们好像并不如「我家里都有哪些人」清楚。

好吧,按照惯例,先来看看隐私一词有无相对准确权威的定义。

任何人的私生活、家庭、住宅和通信不得任意干涉,他的荣誉和名誉不得加以攻击。 人人有权享受法律保护,以免受这种干涉或攻击。

此定义来自于《世界人权宣言》,亦算作是各国政府制定相关法律时需参考的材料。宣言起草于 1948 年,时值二战结束,各国都已承受过人权被肆意践踏的惨烈后果。然彼时尚无成体系的数字信息存储,更无如今社会无孔不入的网络通信。因此在数字时代,隐私的外延已经有了发展变化。而巨头和权威对个人数字化隐私的监视,也让更多的人重新思考如何用新的方法保护隐私。
Continue reading “说说隐私”

记2017年开源年会

说起来开源年会过去都已经两周了。写参加某项活动的经历似乎像是小学生写作文,不过还是有必要的,毕竟这也算一个自己一直以来向往的事情。每个人对于「开源」的认知都是不同的,这类活动也是,各取所需。说白了,也可以用这种观点来看待上课。现在的课程,一类已会,一类不会,到头来还是没什么长进。

会议的流程和其他技术会议类似,签到入场后门口一排赞助商在为自己的产品打广告。场内演讲的时间很紧凑。有些内容感兴趣,有些内容又有点鸡肋。噢,有送可乐的,很实在。

上午第一场报告是一个国内学者做的,大致讲了一下开源和云计算相关方面的趋势和问题。没有什么亮点,或者说没有本人的关注点,所以印象不深刻了。后面是 GNOME 基金会主席的演讲,跟技术无关,说了一下在当今桌面软件依然具有独到的重要性,以及鼓励大家能够多参与到像 GNOME 这样的项目当中去。当然,我是一个 KDE 爱好者。(如果就 Linux 的这群桌面系统而言)

Continue reading “记2017年开源年会”

我为什么讨厌狼人杀?

昨天早上在知乎上看见有朋友分享这个「你为什么讨厌狼人杀」的问题。点进去之后我非常惊讶——居然在政治、社会话题之外还有这样的让我感觉「解气」的问答。说大家是落井下石也好,不会玩也好,总之无法否认,这个风靡街头巷尾的游戏,是像任何一个明星一样,有不少人对此反感的。

我记得我最开始接触这个游戏的时候还是在初中。那时对杀人游戏和狼人傻傻分不清,印象里反正是那些认识很多朋友的外向同学出去玩的标配。玩得不多,「天黑请闭眼」还是记得住的。一直到刚上大学那会,每次玩这个游戏似乎大家都傻乎乎的,如果是陌生人那就随便票,如果是认识的一起玩,当然就是把大家最爱开玩笑的对象投死了。

其实我真的也不知道狼人游戏是怎么在不长的时间内转变成现在这个样子的,就像我不知道如今微博上一个小有名气的明星转发评论赞数都能上万了一样。狼人和狼人杀有什么区别我不清楚,不过我猜想这名字或多或少都得跟三国杀有关系。说起来,随便一家小的桌游吧藏有的游戏都能摆满一整个柜子,可是大多数人出去玩能想到的恐怕还真只有三国杀和狼人。UNO的话,其实真不太想跟不熟的人玩这个。跟前两者比起来,这个游戏的标准规则存在感实在是太弱,变种又太多,有冲突就挺尴尬的。不过好在它节奏快,而且各自为战,运气成分强,玩起来还是算轻松愉快的。

Continue reading “我为什么讨厌狼人杀?”

关于大学老师上课的一些看法

好像很长的时间都没有好好写过文章了,也不知道放在这里会不会有人发现。之前约定自己,每天或者每周更新这个博客,可惜这件事到现在并没有做到。说实话,其实就是自己懒,未能规划好时间。说到这里,的确是有点羡慕那些平日上课按部就班的同学了。也许他们的实际「水平」不如另外一些人,不过每天跟着老师的进度走,自己完成作业,也按时交,不怕点名,感觉大概是很棒的。这个学期期末的时候要交数据结构的课程设计,那些作业本可以很早以前就写完然后上交的,然而总是觉得这不对那不对。题目只要求用命令行的界面,但是怎么看怎么觉得有点不太能上台面;但是用GUI做吧,用什么库呢?好像也不好看,带个东西也臃肿得很,要求叫可执行文件,还得麻烦一下用Windows的同学。所以就一直拖着。一直到Deadline前,才意识到这个东西实在不能再拖下去了,于是就赶紧三下五除二赶好。你别说,赶作业那段时间虽然时间紧,但是感觉还挺好的。之前的C语言大作业、Cocos的游戏作业,都是这样的,有别人推着走的感觉会很稳。不像自己学东西,没有什么自制力,说好的自己要写编译器,拖拖延延到现在还是没个头。

不过呢,这次去北京参加大型主机的比赛,整个过程中开了不少的会,也在北京玩了一把,收获确实是不少的。每天或者每几天review一次的感觉相当麻烦,不过真的可以保证某个项目的稳定推进。之前想的是,对自己制定一个完整的规划,自己照着这个规划来,每一步完成一个什么。但是一个可行的规划就必须要求制订者对这个项目和工作效率有基本的认识,多数时候这就是意味着丰富的经验。对于个人学习的项目来说,这种做法多半是不可行的。所以不如「走一步看一步」,但是要求一定得强硬,这比较适合假期一个人的时候学习。又说回这个编译器的想法,该写的是一定要写的。可以不忙着设计语言,就照着C11的标准来就行。实现语言的话,可以用Ruby可以用C++,乃至OCaml。我还计划大三的时候开门课讲编译原理呢,估计那时候就真的得用C++来搞了。说来也是惭愧,这学期选了门编译原理,结果好像就没听几次课(老师懂肯定是懂的,但是上课真的无比蛋疼),下周就要考试了还不知道做了多少准备。

Continue reading “关于大学老师上课的一些看法”

Ruby on Rails开发入门手记

上个月的博文里说过,由于要开发同济权益的二手书管理系统,所以用PHP写过这样的代码。第一个版本是纯PHP撸成的,没有用到任何的外部框架,路由也是纯手写.htaccess文件实现的,一共就四个文件,负责分发请求,最后交给处理数据库的文件来输出对应的JSON信息。现在看来,这大概叫强行RESTful吧,哈哈。话说回来呢,当时写的时候,甚至还有点基本的ORM思想,不过觉得太麻烦就没着手完成这个。后来才知道这个模型有个高大上的英文缩写叫做ORM。当然,这个版本的代码,模块性一点都不好。五百多行,基本没法维护。

后来寒假的时候,确实是觉得这个太不行了,需要找个框架重写,顺便学习一个。用哪个框架呢?知乎搜索了一下,就用CodeIgniter吧,相对轻量,又确实有用。这个框架是MVC架构的,但是也没有实现完整的关系对象模型,仅仅是封装了方便的数据库查询器而已。这个版本,自我感觉代码结构好多了,不过好像和前端交互的API还是没有改。

Continue reading “Ruby on Rails开发入门手记”

不受待见的程序员

程序员正在遭受来自这个社会的,同对医生一样的误解。为什么大众会误解医生呢?或者说,为什么医生与患者间的关系开始变糟了呢?行医救人的职业古已有之,尽管那时尚无「白衣天使」这种搪塞个人追求的名字。然而工业时代来袭,全世界的居民都接受了经过塑造的现代生活方式、谋生手段,且几百年而不绝,这种改变仍在快速进行之中。物资丰富、日新月异的年代,每个人都有权获得更好的生活。为了区分这个先后缓急,才有了资本、技术、劳动作为收入分配的依据。医术自古即是一门技术,但那时技术还算不得资本,更何况是「士农工商」的年代?

现今的人不能理解社会系统、国家机器运作的复杂性和脆弱性,他们仍习惯于以小农时代的思维模式打量这个世界的运转。也正由于此我们能够时常看到身边人关于社会管理、国际关系等的的种种呓语。正如和你大谈高层秘辛的出租车司机不必深究汽车原理便可参与营运一样,现代社会允许其成员未曾窥过其逻辑即可自由地享受生活。简言之,现时的医生早已不同于古代,就医过程的参与者也不仅是患者与医者双方。用想当然的逻辑思考规整化的医疗体系,自然是会出问题的。

程序员就更可怜了。如果说医者的职业目的大众还算心中有数的话,对程序员,就真算一片空白了。「开发软件」?软件是什么?即使是日常用到软件的人,也不清楚这些司空见惯的程序的复杂程度(「2000块给我做个淘宝」)——从这个角度讲,社会和软件倒有相似之处。须知,大多数人对职业的认识几乎完全是从个人经验出发的——比如律师就是耍嘴皮子,设计就是随便画画。在建筑行业整体遭冷的今天,仍有不少的重庆人相信搞桥梁是最好的职业之一,因为他们一辈子见得最多的就是桥。更何况,在风口可以吹猪上天的今天,程序员引来了诸多行业的羡慕与嫉妒。又有大批对计算机几无敬畏与热爱的人入行以工程师自居。这些拿着半吊子水平的Java就大谈而谈各路本质论的人继续伤害着程序员在大众眼中的观感,误解自此不可避免。

Continue reading “不受待见的程序员”

cJSON源码分析-实现

好了好了,这篇文章拖了真久啊,活活三个月。不过之前承诺要经常更新博客的,所以先把这个烂尾的坑给填了。

之前提到了cJSON这个C语言写成的JSON解析库的接口,也就是头文件里的内容。这一次我们来分析一下实现。上车吧。

还是按照源代码的逻辑走。我们发现cJSON最开始有一个全局的字符指针ep,以及一个用以返回ep的函数。可以看出,这个ep是用来存储错误信息的。这种实现是C语言的常用手法,即把一些状态用static的方式隐藏在单个文件中,并实现一些函数当作接口。

下面是一个大小写无关的字符串比较函数。看后面的源码可以发现这个函数用在了JSON对象名的查找当中。实现没有什么特别的难点,所以就不提了。顺便说一句,在C++里要实现这个大小写无关比较,可以用STL里的一个方法叫做lexicographical_compare,搭配lambda表达式可以轻松达到目的。

作者把负责动态内存分配和释放的函数直接「填」成了标准库的malloc和free,像C++的allocator一样。如果担心内存碎片的问题,可以自己再当个二道贩子,实现一个内存池,不过那有点背离本文的主题了。作者自己实现了一个版本的strdup,里面也是用这个用户可以更换的cJSON_malloc进行内存分配的。

Continue reading “cJSON源码分析-实现”

夏夜怨记

大概真的有很久没有认真写过一篇日志了。

拖延症想来真是可怕的一件事,从高考、到生日、到搬嘉定,一直想记录下这些时刻,然而最后都因为各种原因忘掉了。

本来说,这次回家,要好好看书,复习物理,认真把之前没做的事情做完。可没想到睡着睡着这暑假就睡过快一半了。从现在开始大概还来得及,但是真的有机会让我意思到「快来不及」吗?

从去年七月底学籍变更开始算起,转到软件学院基本上算整整一年了。说没学到什么东西,那是假的。但是能不能合上当初对于大一的预期呢?恐怕这里不是个问号,甚至都应该是感叹号了。

大一开学第一门课好似一记闷锤,重重地把暑假群里的欢声笑语打得不知所踪。我本是个好为人师的人,也因此,有不少人认识了我。虽说常常觉得会有人因为此对我颇有微词,但是更多的时候笑一笑,只是觉得帮助别人挺好的,足矣。

说Deadline是第一生产力,这话我同意一半。Deadline只能带来产品,带不来作品。除了紧迫感以外,要创造出作品必须的还有一种「渴望」。这样的「渴望」是发自内心的,但对于常人而言,要利用它创造作品,恐怕这期限得是无穷远加上一个epsilon,所以它和期限交织在一起,就是促发我们为作品拼命的动力。

既然半年混一混就过去了,那再来半年似乎就更不是问题了。下半个学期过得更加无趣和无所事事。Cocos已经足够不能带给人成就感了,更何况一个拖了许久需求一删再删的半成品游戏。年级群也在变得越发沉闷,只有俱乐部还能带给人些许慰藉。

其实说到底,这些问题都是自己没有规划没有坚持造成的。规划是简单的,大不了发现有问题再改。难的是坚持。你说每天写一篇日志容不容易?好像也不难。但是甫一打开后台,脑子里各种毛病就来了。觉得浪费时间也好,质量不高也好,一天天就混吃等死推过去了。吹牛的时候我老喜欢提自己初中就学编程的事,然而到今天有太大正面影响吗?还真的没啥。

这并不需什么天才,那个年纪就是能自学那种程度的知识和技能。问题是环境是否容许,例如放学后去办公室搞到午夜才回家,同时学业成绩不能太差。

在知乎上看见Milo谈小孩子学编程的时候说的话,深以为然。如果时间能够给我再一次机会,我真的会做出不一样的选择吗?

在软件这一年,有收获,有遗憾,但这段经历比不上大一一年带来的震撼。回头看自己一直以来的读书经历,好像也能总结出一个道理:

永远不要试图框定自己的界限。否则,你总会发现外面还有所遗漏。

汶川地震八年记

看见今天各大新闻的头条,不知不觉,那场地震已经过去八年了。

尽管身为离四川很近的重庆人,然而每次跟别人聊起地震的时候,我都无比确信我那个时候真的毫无震感。而一切的记忆都是那么清晰而真切,虽说不上就像在昨日发生一般,却也成了生命光影里深深定格的镜头。那个时候刚刚上美术课,被我们调侃过无数次的美术老师让我去隔壁的办公室拿一盒彩色粉笔。还没等我走到办公室门口,就见到人们一窝蜂冲了出去往楼下跑。我当时并不知道怎么回事,也确未感知到地震的来临,所以满脸不解的表情,甚至还以为是马蜂来袭,同学们集体外撤。大概等到人已经冲出一半了,我才听见有人喊到一声「地震了」。此刻的我虽然紧张却更不愿往下跑了——老师不是教育过我们,地震来临要躲在桌子下面吗?不过几乎所有人都跑出去了,外加城乡结合部小学的建筑质量确实也不太能让人信赖,我还是跟着下楼,成了最后出去的人。

可能我对事故的嗅觉从来都是人群里最迟钝的那一类,地震是,外滩踩踏亦是。大家都下撤到教学楼下的操场以后,老师开始点名,看有没有遗漏的人。(尽管我一直觉得,如果地震真的把那教学楼震踏了,我们在球场上根本不能幸免)点名完毕后就组织回家,联系家长。我走出学校,径直走向家附近的一家商店,将近十个中老年人围着一个电视机说着什么。我也凑上去看,才知道刚刚是四川汶川地震了。电视台一次又一次修正地震的震级,不过对当时的我来说,就是知道那很厉害而已了,而对于震源地的死亡,也实在没有概念。

我清楚地记得那天的一切,记得我回去还玩了一把无双大蛇,还看了一集记单词教程。还有工人们坐在路边的聊天。我都记得。不过,对于不幸的朋友而言,可能所有的记忆到那一刻就完全停止了。一个小学生大概真的不太容易明白如此巨大地震的后果。意识到这是一件会打破正常学校生活秩序的大事以后,心里反而有些许奇怪的兴奋感。当然,那段时间的电视新闻永远只有这一个主题。无数的故事,生离死别,当时的我不太能体会这种沉重,但对失去亲人的悲怆,我也有具体的想象。

重庆人都喜欢开玩笑说重庆是一个安全的地方,水火不侵。不过一当有传言曰大余震要来了,市民们也紧张得很。那天晚上社区的家家户户都收拾睡具到球场上过了一夜。我睡不着,于是夜游,那经历甚是有趣。当然夜游的经历不只这一次,不过每次,似乎都跟死亡有那么点点关联。

再然后就是全国哀悼日了。那几天网游什么的都是不能玩的。唔,不过我也没有什么兴趣。小伙伴在楼下唤我出来,做什么我忘了,大概也是吹牛吧。毕竟那是一个放学之后到同学家门口就能吹一个小时的年纪啊。

说了这么多,似乎都是无病呻吟,没什么实在的意义。是。只是借此回忆一下,回忆一下那时那个对初中生活还有充分幻想的我自己。毕竟这个时间节点实在是太特殊。当然,许多无辜的生命,就突然停止在那个时刻,他们的故事再也没有机会被续写。活着的人呢,也许素不相识,因为一场地震而相遇。人生实在是太神奇。地震灾后的修复也许早已完成,但它的回音,似乎远未结束。

谁也不知道未来会发生什么。