写给自己,也写给你们

[ ]

The content is recoverd from Wordpress Blog, for more details please check HERE

June 29, 2017

VOID001 Comments 52 comments

写给自己,也写给你们 The content is recoverd from Wordpress Blog, for more details please check HERE

TL; DR

这篇文章写出来的时候,VOID001 已经毕业了(虽然因为学分问题导致毕业证和学位证还拿不到,又因为嫌毕业文化衫太丑代码太挫没有照全专业的合影,还因为毕业这几天一直在和各个老师谈NEUOJ NEUOS的事情导致毕业典礼那天我用来休息和整理东西没有参加,但是我确确实实是毕业了。)。而公元二零一七年六月二十九日又恰好是 VOID001 的阴历生日,所以这篇文章就作为对自己大学生活以及自己这一年的一个总结一并涵盖了。本文中所有人和事都是真实存在且发生过的,文中将人名以本人最熟知的昵称+姓名的汉语拼音首字母标示,后续再次出现仅仅使用昵称。

夏娜(VOID001)的四年是在大家的支持和帮助下度过的,十分感谢那群帮助了夏娜的人,文中篇幅有限,如果你帮助过夏娜可是名字没有出现只是因为夏娜无法写下那么多内容,这里对那些帮助过我的你们表示感谢。因为有你们的存在夏娜才能坚持到现在

(鞠躬~)

这篇文章是夏娜的大学生活的纪实,同时也给后来的计算机学弟学妹们作为一个路线参考,夏娜大学四年期间踩过的坑,做的选择在本文中都有体现。

大一 — 凭着兴趣在迷茫中不断探索

结识

在得知自己被NEU考后自主招生录取之后,就加入了NEU的计算机新生群,当时我天真的以为大家都是对计算机感兴趣才选择的这个专业(其实也有考虑到有人是被调剂到这里或者根据热度选择的),就开始了在群里的卖萌+混脸熟之路,然后就结识了同样有代码基础的洋葱(WYL)还有一个聊得很投机的汤圆(JW)。我们还在群里组建了一个入学前编程学习小组,让大家通过VB来入门编程,渐渐地在群里一些人知道有一个很热爱写代码也会写代码的修罗(VOID001)存在,到了开学后又通过游戏王卡结识了猫猫(CHB)并且发现猫猫也很喜欢写代码((=w=)猫猫好棒),也很聊得来(还要感谢猫猫刚刚帮我做完的论文翻译www)。

先锋网

开学前我就想加入一个技术社团好好的提升自己,也能结识一群小伙伴,还有前辈们指导(后来发现其实没有人指导我2333)。经过和新生群里的学长打听得知 NEU Pioneer(原名东北大学先锋网,现名东北大学先锋网络中心)技术很强,什么先锋论坛,什么六维空间,都是他们做的,于是我开学就自己找上了先锋,和洋葱,YY(YY)等人一起,加入了先锋网技术部,该部门主要做 Web 开发相关工作,我们的任务是对主站进行改版,学长们让我们自己选择使用的语言,我选择了世界上最好的语言(PHP)并开始和小伙伴们一起学*习这门语言。

Accelercode & ACM

通过一个宣讲我了解到了算法竞赛的存在(ACM-ICPC 大学生程序设计竞赛)而且洋葱之前还搞过 NOIP 并且拿了奖,因而我们又一起报名了 ACM 班的考核,结果因为什么奇怪的原因我没考上他考上了,不过这个不影响自己练习,我依旧自己慢慢练习,这时磊神(XL)主动找到了我向我安利 ACM-ICPC 并给了我很多帮助,我凭借着自己的编程功底+刷了不少模拟题+学了一点STL在新星赛中获得了校二等奖的成绩(当时还很渣很渣)入选了 ACM 校队。

关于我的队友们,苗P(MXP)与坦兄(GST),我是在一节课上认识苗P的,然后我们很快就熟了起来,并一起学习算法,还记得那阵子我们一起学习了费马定理,简单动归等算法,因而我们在组队的时候(ACM组队老师不进行干预,自愿组队,3人一队)很自然就组在一起,我们本来想拉坦兄过来一起组队,结果还没等我们拉坦兄,坦兄找到我了,于是我们一拍即合组为了一个队伍,关于队名我们想起一个很有意义的名字,我甚至还找了高中的好友蛋蛋(ZC)来给我们起名字,最后我们的队名决定为 accelercode含义为虽然我们都是算法零基础,但是我们会努力加速,超过那些有基础的ww。这个队伍伴随了我们大学的三年生涯。

疲于竞赛

于此同时,苗P当时堪称竞赛狂魔,时不时就找到我问这个竞赛要不要一起参加一下,大创要不要试试看报一个,我也没有经得住诱惑,结果报了一堆比赛,然后就导致了每一个比赛都没有精力去准备,这时候我第一次亲自认证了人的精力是有限的这一句话的正确性。记得最惨的一次,一个创新项目比赛,我们匆匆花了一周的时间做了一个非常非常简陋的东西,用 VB 的 COM 组件调用 Matlab 绘制函数图像(当时我真是脑抽了这玩意儿竟然敢拿去比赛23333),然后看到人家做的比我们好很多,完整很多的东西一个个被评委打回去,我们连上台的勇气都没有就灰溜溜的走了。 之后我,苗P,广哥(CG)等人就商量出一个结论,不要搞太多的比赛,精力有限,搞好一个比赛就好。

因而我就坚持在了 ACM 比赛的路上,同时学着 Web 开发,还因为对黑客技术感兴趣开始了对 Linux 的学习。

另外,大一的时候我每一科都认真听课记笔记,并认真复习考试,却发现线代考试全考计算题,不考证明,而我又没背老师发的模板题(我觉得这种东西是对考试的侮辱)+我的计算能力不是很好,结果栽在了线代上,没有拿到专业内一等奖学金。

大二 — 痛苦中坚持以及领导网络部

开始进行 ACM 的集训之后,我的大学假期变得十分的短(因为有很多集训),因而大二的到来比我想象中快很多,我只记得在那个短短的假期中不断给我的高中母校的学弟学妹安利 NEU 计算机专业和 NEUP 技术部,真的吸引来了一批学弟学妹进入计算机/软件专业(当然学弟更多x这个不算)。然后他们其中基本上全部加入了技术部(虽然后来基本全退了2333)。

网络部诞生

这时我已经能够使用 PHP 进行后端的开发了,不过我还不会 MVC Framework 如 Laravel CakePHP 等,用 PHP 为先锋网硬件部写了一个微信预约维修的公众号。而这时候我已经感觉到先锋的混乱和逐渐走下坡路,前辈们都在说:因为贴吧火起来了,没人水论坛了,论坛没人气了,以前先锋之夜还有很多论坛的人来进行交流呢之乎者也。同时他们甚至在先锋的办公室做饭,煮饺子,办公室经常脏的让人不想进,而且同期和我一起加入的小伙伴们没有留下几个,应该只剩下我和洋葱(如果我记错了欢迎小伙伴指正)了。

好在先锋开始了交接,因为我的代码能力突出,我大一下就是技术部副部长了,而到了大二,新的站长提出先锋网技术部要进行组织变更,变更为先锋网络中心,下设网络部,运维部,硬件部等部门,我成功的竞选为先锋网络部部长,洋葱被我拉来作为副部长,从此开始了我的部长之路(这也是为啥有人说我是垂帘听政2333),作为部长我第一个组织的活动就是招新宣讲,在准备的时候我深刻体会到了各个部门之间的执行力的差距,很多部门的人我联系起来十分困难,最后基本上除了视频是硬件部来做,其他所有包括会场包括幻灯片包括内容安排都是我一个人完成的,这对我是一个难得的锻炼,也更加坚定了我要搞活整个先锋的信念,我准备先从我的部门,网络部开始。

宣讲十分成功,有很多学弟学妹对我们讲的技术感兴趣报名加入我们,然后我第一次体验到面试他人的感受,这一次一改上一届面试时的西装革履大家坐一排轮流问问题,我和洋葱等人很随意的和各位学弟学妹聊天,并给他们安排相应的考核,如编程任务,或者给没有基础的人安排学习能力的考核(如现场学会HTML基础并编写一个表单),我们招到了很多人,如目前已经在公司实习的(MA),学习能力很强但是沟通能力较弱的(ZYW),尝试在校内搞起LUG的(XYW),还有一个我不想提的但是数学很强的(LZ),以及后来的先锋站长钱狗(QXY)。然后我开始了对他们的培训,我和洋葱制定了第一期的培养方案,通过在线讲授 + 项目作业提交Github验收等方式,将大家的整体实力带了起来,网络部第一次具有能够开发 web 项目的能力,同期我通过HY学长(CHY)的推荐,学习了 Larvel 这个 PHP 的框架。

人生第一次低迷期

同一期间,我的 ACM 进入到了瓶颈期,我发现无论我怎么刷专题,到了校内比赛 / 比赛的时候,看不到我刷的那个类型的题,给我一种算法知识好零碎,而且好庞大的感觉,然后一次因为一个问题不知道卡了我多久,我忍不住了去查答案,发现博客上的博主一个 “显然” 就给出了其中很重要的一步骤的结论,我顿时感觉到自己菜爆了。再加上我们 ACM 队伍的教练(LXF)对我们队完全放养,只关心那些有基础的队伍,我们也没有通过老师那里得到很好的指导,这个阶段磊神给了我很多帮助。但是因为自我不认同+心情低迷+压力较大各种因素,导致了我出现了人生以来没有过的低谷,是 汤圆(JW)还有K酱 (LQL) 帮我度过了这次低谷,真的十分十分感谢他们!!!之后我调整了训练策略, accelercode 队伍开始每周一次比赛,或者kuangbin专题,或者是省赛套题,渐渐地我找回了自信。

从大创到开源

在低迷期过后,我考虑了我应该从哪些方面来提高自己,最后选定的方向是找一个我喜欢的方向参加大创进行深入研究,并且同时学习 Web 开发作为兴趣,以及加强 ACM 的学习,同时要对计算机的原理知识进行学习,大一并没有机会接触太多这方面的东西,这是我选择计算机 专业而不是软件专业的初衷,因而现在要开始学习了。

这个时期窝结识了 Yonghao(HYH) 并进行了很多的交流,得知了 GSoC 的存在。我当时选择的大创课题是《基于智能算法的云资源调度问题的研究》因为我想更了解云计算,也想了解一下我一直很感兴趣的人工智能(后来我发现智能算法和那个基本上没关系X),导师是一个很不靠谱的人(YY),我当时非常正式的写了我的各项技能来介绍自己,并拉来了洋葱(又是他没错2333),(WJ),目前拿到CMU的Offer的(KWY)等人来一起搞这个项目,自认为声势浩大,然后广哥坦兄也报了一个大创课题,和我们是同一个指导老师。苗 P 的指导老师是他们的 C++ 老师也是我的毕业设计指导老师(ZTC)。

结果这个非常不靠谱的导师甚至不给我们安排科研计划,学习路线,研究方向,把我的热情一盆冷水都浇灭了,这时我又知道 Yonghao 在搞 wine 开源开发,并且提交了被上游接受的 patch,因而我放弃了大创项目,转而搞开源项目 wine。在这个期间我结识了 Qian Hong, 肥猫(Feilx Yan, Archlinux 社区dev,全世界打包最多的男人(大雾))等人,开始了  Full Stack on Wine 的学习和实践, Qian Hong 带着我和其他几个人学习了开源社区的规范workflow,邮件礼仪,并带领我们了解了 wine 这个项目,给我安排了入门任务,十分感谢 Qian Hong 在这个阶段给我的各种帮助,在这个阶段我给 wine 提交了若干个 patch 并有 2 个合并到了 mainlne, 4个合并到了staging,这个经历对我之后的应聘十分有帮助。并让我对底层原理的兴趣更加浓厚了。因为有一个很不靠谱的老师导致我在底层方面有了更好的发展,从这个层面上这个老师也是值得感谢的呢(笑)。

同时大二认识了 K酱,一个我十分欣赏的人,我们大二一直保持着持续的联系。

哦对了,记不清是大三上还是大二下我为东北大学举办亚洲区域赛提供了技术支持,那一次很酸爽,明明都调试好的东西到了热身赛那天出了问题,之后我一晚上没有睡觉,把问题能解决的解决,不能解决的就使用退化方案,算是平安度过了那次比赛,没有在知乎上出现什么“如何评价东北大学亚洲区域赛”太多的负面差评带节奏的答案(还认识了复旦的学长 (LH) 等人

大三 — NEUOJ,实习和出国失败

NEUOJ的诞生和发展

大三我们 accelercode 队伍完成了最终的两场亚洲区域赛,北京赛区和长春赛区,可惜的是没有一个赛区拿到了金奖,长春赛区和金奖擦肩而过,北京赛区老牌强校特别多,不过我们还是拿到了一个银奖(甚至还被Cisco的小姐姐搭讪了(不对))。比赛之后,我想要为 ACM 贡献自己的一份力量,正好我们的教练想要搞一套自己的测评系统,当时因为个人对他那种不关心不管理我们队伍的态度十分恼火,我准备自己写不管他,结果我的队友们(苗P,坦兄)都很想参与,那么我就没办法不参与了,因为我在 Web 开发方面有了之前的经验并且用 Laravel 写过一点小东西,因而我就主动的承担起带两个队友学开发的任务,并且主导开发,这里面的核心是测评机,当时我没有写过这种东西,因而用了推荐的 domjudge, 大概花了两周的时间搞懂 domjudge 的接口协议,期间同时在撸 NEUOJ 的 web 后端,大概用了一个半月左右的时间,我们搞出了第一个能用的 NEUOJ 版本,并用在了新人的圣诞大战比赛上~ 期间除了一些小问题,加上刚开始网页加载很卡(ranklist也卡)之外,没有什么其他的问题(众人:这TM还不算很多问题么XXX&……×)。这是我开发的系统第一次被大家使用上,当时很开心也有些紧张~。

之后因为苗P要考虑保研问题,就退出了开发组,我就把洋葱又给拉进来了(2333),顺便还在先锋招了其他的开发者黑猫(LHX),然后黑猫给前端进行了大改版(加入了当时还是实验特性的 Paper Button 导致我们的代码库突然间从 PHP 项目变成了 JS 项目),同时我们还在校内召开了 NEUOJ 的发布会(介绍了NEUOJ的技术特性,以及招募新的开发者,但是因为宣传不够没来太多人QwQ),征集到了新的一批的开发者的加入,我和洋葱开始了对新的开发者的培训,然后他们成为后续某一阶段 NEUOJ 开发的主力。之后 NEUOJ 举办了一些省内的比赛,以及更大规模的网络赛,每一次大型比赛都让我提心吊胆,逐渐的把那些不稳定的因素一一修复之后,NEUOJ 总算趋于稳定了一些。另外在大四的时候 NEUOJ 已经成功推广到计算机专业的 C++ 课程实验+作业安排中。后来学了 golang + docker 之后我重新写了一个测评机 D-judge 可是因为一个 bug 迟迟没有修复导致这个测评机还没有上线(x 这里感谢把 NEUOJ 主动推广到教学上的教学院长(BYB)和C++老师也是苗P的大创导师(ZTC)没有他们的推动我自己的力量是无法达到目前这个效果的。对了我还给 NEUOJ 搞了自动化的测试平台 Drone CI,那个东西调了8个小时才能用。

实习

因为各种自己拖延症+忙+规划问题,我错过了当年参加 GSoC 的机会,然后就一直在搞 NEUOJ, 不过期间有深度的人通过知乎找到了我联系我要不要去那里做全职 wine 开发,我想着我还要在大学继续学习而不是去工作于是就婉拒了这个邀请(甚至连面试都没有开始)。不过这时候我在某个 Linux 群认识的小伙伴腊鸡帅帅(ZS)突然问我要不要来阿里实习,我想了一下感觉这种大公司(后来发现我太天真了)应该能接触到很多有趣的东西,于是就答应了,然后投递了简历(简历里有校内中型项目经历+开源项目经历真的很有帮助呢),开始了面试。而且我认为面试这种东西不应该花时间去准备只要能力到了就没问题(其实后来想想如果花时间准备一下没准效果就更好了QAQ)

面试的第一轮是我的师兄,花名仇恕,Apache 的 commiter,问了我一些基本问题之后,针对我对 ELF, Linux 等的理解深入的进行了提问,不过我倒是觉得还是很轻松的,就算是有不太懂的地方也进行了合理的推断,之后师兄对窝搞过的wine进行了详细的提问,并且不断补充问题,我想应该是师兄对这个东西也有一定的兴趣想要借助我去了解吧hhh,第一面很愉快的结束了,我对自己和面试官都很满意。第二面的面试官有点冷漠(因为NEUOJ有一个比赛需要技术支持,我和他商量更换面试时间的时候他直接说:你这么忙还能来实习么给我吓了一跳)不过问题并没有太多卡到我的地方,一直进行到第五轮面试,我被更深层次的 ELF 协议, Linux 的原理问题给卡住了,止步于第五轮交叉面试,没有能继续进行后续的交叉面。

不过还是顺利拿到了实习机会,实习的第一个项目很有趣,在实习之前我和腊鸡帅帅都学习了 golang (因为面试官告诉我我们会用这个写后端,用 Angular 写前端,对前端不感冒的我果断选了 golang),第一个项目是内部的一个日志分析平台,具体细节略去,我在完成这个项目的时候对 Google 的 Protobuf 有了了解,并解读了他的编码模式,还学习了 lua 语言的内部机制如函数调用, lua 的栈机等,使用 C 为 lua 的函数调用系统进行了功能添加,学习了 CMake 的使用,并对 golang 有了一定的了解。同时也学到了一个系统架构的设计是如何进行的~(顺便还感受到了公司里的内部系统多难用)然而后续师兄因为一些原因离开了公司,这个部门真正喜欢技术的人又不是很多,好在还有一个花名荣旸的同事对技术有追求,很快我就跟他聊了很多技术方面的东西,然后发现很合得来就又聊了很多甚至一起开了分布式文件系统的坑(只不过因为各种原因弃坑了 QAQ 没错我就是开坑+弃坑狂魔)

因为在公司实习的阶段干得太爽了结果忘记准备英语了(x 于是出国失败。

另外因为我大三下出去实习,学校那边没有任何减免学分的政策,结果这边弄得很辛苦,幸好大三下没有挂科(结果大四挂了2科还有一个很难办的,下面我会讲)

同时,先锋的新鲜血液源源不断的涌入, 我收了一批能力不错的学弟学妹,有搞 NOIP 的黑猫,对技术十分感兴趣&接受力很强的Yuki(ZJ),写C#写了很多年而且两个人从初中开始就一直”在一起“写代码的王酷乐组合(ZZQ LJH),他们成为了后续先锋网络部的主力人员。然后我此时已经不参与先锋的开发工作了,我只会给大家一些可以做的事情,比如后面的先锋市场,比如主站改版,洋葱带着大家将先锋网多少年没有改掉的老版本主站,成功改换为新版本的主站。(虽然对我们来说没什么用不过那帮老头老太太还是很开心的)同时我给出了先锋市场的初稿设计文案。

大四 — NEUOS,先锋市场以及拿不到的毕业证(滑稽

大四这一年,可以说是麻烦和痛苦最多,也是收获最多的一年,可能这里篇幅会长一些(

挂科危机

大四上我对校内的课程已经不抱有太大信心了,自从开始搞 wine 开源  & NEUOJ 之后我对学分看的就越来越淡了,不是因为我想舍弃学分,而是要想好好学习那些技术的话不得不舍弃学分。(我觉得这也是因为学校的考试内容安排不合理的原因导致的)然后我对成绩就渐渐不在乎了,大四上一学期我全都在公司实习(感觉学校里没意思),结果发生了很可怕的事情,大四有一个课群叫做新知识课群,我因为有一科没有及时提交线下的作业,导致老师给我挂了科,后来我发现我的学分不!够!毕!业!了!而且更坑爹的是,大四下可以补选的课中,不存在新知识课群的课!而我们要求每一个课群都修满要求的学分才能毕业,所以顿时进入到了很慌的状态(x。

方的不行的我赶紧联系了我的导员鞠姐--一个在和她QQ聊天的时候很萌很萌的导员(于是我也禁不住发了萌图给她(JYN)。说明了我的情况,导员表示不要着急,总会有解决办法的,然后导员就开始帮我收集各种信息,如何能够将这个学分修上,帮我和教学办的李诺老师(他给我很不好说话的感觉)打好了招呼,这让我能够和李诺老师正常联系,最终大四下的前几个月我在学校终于解决掉了挂科的问题(通过补选文本智能处理 + 参加补考两个手段把学分给捡了回来)。真的十分感谢鞠老师这段时间内对我的帮助,没有老师的帮助我可能真的就没有办法毕业了(同时感谢院长给我的帮助)

目前最难解决的科目学分已经有了,还差一个科目老师还没上成绩(所以我虽然毕业了但是还没拿到毕业证233333333)

先锋市场

自从我给出了先锋市场的设计初稿之后,我就再没有对其进行进一步的开发,不过我给了部员们一个任务就是在跳蚤市场的时候将先锋市场上线,不过在我在实习的过程中一直关注着先锋市场开发的讨论组,感觉开发的执行力很不够,时不时的我也会去查看目前的进度如何,进度让我有些失望,当时我觉得可能我毕业之前都没有办法上线了。甚至有一阵感觉大家的热情度十分不够,没有把自己的精力投入到先锋市场的开发中,差一点我就点击了 Delete Repository ,最后我还是没有下得去手,留住了先锋市场的代码库,幸好当时我收住了怒火没有删掉它,不然现在先锋市场很可能不存在了。然后我在讨论组里,和大家开了个十分严肃的会,让大家去分析为什么先锋市场会做成这个情况,从执行力,管理问题,新人培养等多个方面进行了分析,并要求大家把紧急且重要的功能提前实现好不要拖到最后。然后在跳蚤市场那一天,先锋市场很突然的上线公测了~ 。我很意外也很开心,这是我培养出来的团队第一次不用我的完全管理和介入编写代码完成了一个较为完整的 Web 项目~这不同于我之前带团队完成项目,我要参与到开发中且要完全管理这个团队才能完成任务。因而我的幸福感爆棚~ 感谢 Yuki,黑猫,王酷乐组合,五番(MBY)等全部开发组成员,感谢猫猫老师(WWX)为我们提供的 SSO 接入支持以及六维邀请码(600多个呢!)

不过因为先锋市场上线过于突然,先锋网络中心其他部门包括先锋的新任站长Aeroman(HT)被我们打了一个措手不及,这时我的毕设已经进入到了改论文的阶段,我就承担起了网络部的突然上线导致的宣传策划不充分,人员动员不充分的问题,同时 Aero 虽然见我们上线的如此匆忙,但还是尽可能的联系了他能想到的各种校内媒体来宣传,因而我更要担起这个搞活先锋的担子,这是我从大一开始就想要完成的一个目标,现在有了完成的机会。起初还是像之前一样,各个部门动员起来十分困难,让我又有一种“啊,想搞活先锋好难啊“的无奈感,这时我的一个学妹(YYT)和我说她的室友(也是先锋策划部的一员)转告我她会在能力范围之内尽可能帮助我的,然后在站长的动员下,各个部门的部长(除了编辑部)都动员了起来,我们一起探讨了宣传的方案,以及宣传海报的制作,传单的制作,并由我亲自监督大家的执行。将宣传工作推上了正轨,这个时候正是大家复习考试的时期,这些可爱的学弟学妹们能够抽出很多时间来为先锋做宣传,还有网络部的孩子们,甚至翘课宣传,翘课写代码(我提倡大家翘掉那些不重要而且不会点名的课,但是考试课不要翘),然后我和六维空间的创始人猫猫老师要到了用来作为奖品发放的六维邀请码,老师很慷慨的和我说:邀请码有的是,不够就和他说~ 。开展了宣传活动,多亏了大家和老师,先锋市场的知名度在逐渐提高~ 而且因为先锋市场具有完全校内的特点,相比于咸鱼这种开放的平台,先锋市场更安全可靠,只有持有校园卡的人才能注册并完全实名。我预测先锋市场会在校内(明年)发展起来~。

ArchlinuxCN的小伙伴们

在大二的时候一个偶然的机会我进入了 ArchlinuxCN 的 IRC,当时看到大家在开心的交流技术同时还在愉快的聊着日常和卖萌(w,感觉这个群体很棒~ 而且基本没有我讨厌的撕逼和装逼还有伸手党存在,于是就加入了 ArchlinuxCN 的 Telegram 群一直围观。大三下的时候因为在写操作系统课设的时候遇到了一些问题,就经常在 Tg 群里进行提问,渐渐地和社区里的大家就熟了起来。在大四的时候我正在学习如何入门 kernel develop 跟随了一个 Eudyptula Challenge 做了一阵子,有一天社区里的百合喵突然提到写一个 /dev/horo 设备(Horo是萌狼,是ArchlinuxCN社区里的小伙伴,同时萌狼的文章帮助了很多人入坑Archlinux),窝刚好学到如何写一个简易的 Kernel Driver ,于是我就顺手写了一个 Char Device,然后社区里就有小伙伴对这个东西感兴趣~ 并且一起开了一个新的群叫做 dev-horo 讨论开发一个有趣的 Device, 就是我们的 Dev.Horo 可惜因为大家的空闲时间没法match,我又很快有毕设的任务要完成,再加上一些外在因素,导致这个坑目前在搁置play中 QAQ,和我一起开坑的小伙伴们有萌狼,五黄鼠(B站知名Up主 大雾),夏狼(Sherlock-Holo),还有 剑锋(Swordfeng), Alan Tian 等人~ 我当时没有想到能有这么多人和我一起来做这个小东西~ 十分开心,在做这个的过程中内核相关的问题都是请教的剑锋,有一次我们谈到在内核态实现网络通信,我觉得很有趣很有挑战性,这个时候剑锋给我推荐了一个叫做苦力怕(David Gao)的生物(大雾),剑锋表明苦力怕对操作系统的理解比较深,而且对 Linux 也有一定的研究。

然后苦力怕就被拉入了 dev-horo 的群 \w/ 聊着聊着就和苦力怕成为了朋友~ (那么萌而且还有共同爱好的小伙伴当然很容易做朋友啦)。然后这时窝在写 DevHoro 的设备驱动部分,黄鼠和我一起写 Server 端代码,使用的还是世界上最好的语言(没错还是PHP),萌狼负责 wiki 的制作还有项目介绍网站的开发~ 苦力怕给我提供了很多很多的建议,很快我们在私聊的时候都会聊很多了~(甚至还知道了一些苦力怕的私事(划掉))

毕设 — NEUOS

在大四上的时候我就一直为毕设要搞一个什么而苦恼,想要做内核相关的东西,但是内核难度可能又太大了,不知道如何选题的情况下我向苦力怕咨询了毕设的选题,苦力怕给出了很多让我很有兴趣的选题~ 最后窝选择了做一个 cross loader (例如 wine 那种的,我想做 MachO 到 Linux 的 crossload)因为这个认识了 df 酱~ (df 酱经常要带窝开坑,窝开不动qwq)。

而到了真正选题的时候,窝想要做的 crossloader 没有一个导师感兴趣,问了 Linux 操作系统原理课的老师,他给了我一个也很有趣的课题,将 Linux 0.11(最初是 Linux 0.01 后来我修改为了 0.11) 分解为一步步的实现,并给每一个步骤加上实验。 初步听起来感觉就是把 Linux 0.11 的代码拆分开,打上 Git commit 然后给出 Git log 就可以了,大概难度就是阅读 Linux 0.11 的源码,因而我就接下来了(我还记得苦力怕强烈建议我不要将操作系统设计作为毕设),而实际编写的时候发现,难度远比想象的大(必须对 Linux 0.11 的代码进行重写才能满足课题的要求),不禁觉得苦力怕说的很对OAO,不过我很想在毕业之前写出一个操作系统,操作系统课设只写了很少的一部分,而我还是一个很容易弃坑的人,就把写一个操作系统作为强制完成的任务,毕竟我不能毕设弃坑对吧~。于是我开了一个新的 Tg 群 Linux 0.11 毕设交流群,并在里面同步毕设的进度,以及和大家探讨 Linux 0.11 , 内核, 操作系统等开发的问题~ 当然之前的小伙伴都被我拉入了群www,顺便还给洋葱拉进来了(笑)。

然后在毕设期间,窝通过 teeworlds 结识了 LA(SilverRainZ), 然后 LA 就也加入了群里(LA刚进来就认出了苦力怕的真身2333) ~ 群里真的聚集了很多能讨论操作系统开发的人,大家一边讨论开发,一边聊着日常,我很享受这个氛围!(这个群目前就算是毕设结束了,大家也在愉快的聊天和谈论技术,而且还能坦诚的指出各自的问题,而且很多小伙伴每天上来第一句话是”终于翻完了所有的聊天记录” www)

结果刚开始就遇到了很多问题,不止一次被卡住一周左右,给我一种可能不能完成毕设的感觉,而且我在毕设的期间第一个月在学校处理挂科的事情,之后我就去了公司,一边工作一边做毕设,每天工作完就已经很晚了,有的时候回到住所根本不想写代码了,好在坚持着每天睡到零点,然后熬夜写,然后早上睡到中午去上班(x 这种节奏,在缓慢的推进着,而在那时我遇到了一个非常非常诡异的问题, 我写的 fork 不能正常工作 QwQ, 无论我怎么调试,怎么排查问题,都没有办法,这时候苦力怕拿出一个晚上的时间和我一起来调试这个代码,在苦力怕的帮助和指点下,窝终于定位到了问题的所在~ 竟然是因为一个函数调用写成了取函数地址,而 C 语言的类型系统认为他俩都是空指针类型,连警告都没有给出,根本不知道这里写错了(

在编写终端的时候,对于如何处理终端的输入,窝和 LA 在 Google Doc 上探讨了很久,LA 给出了很多建议,随着探讨的推进最终窝确定了终端的实现方法~ 把 Linux 0.11 的终端完全重写了一遍,让它更适合学生阅读和使用。

论文 + PPT 大概用了两周的时间(准确说12天)来完成,答辩效果很不错,顺利进入到二轮答辩,并拿到了校级优秀论文的奖励~ 这个期间感谢给我各种帮助的 Linux 0.11 的那群小伙伴们, 以及默默支持我的三次元朋友们如洋葱,裙助手(YYT),Yuki,K酱等人~ 因为大家的存在我才能坚持并把毕设完成(其实完成度仅仅有85%,还有很多没有实现)。以及助教学弟们 Dragon Ren (RZB) lzw429(SYH) 还有喵兔(NyanRabbit),同时洋葱也被我给拉来一起搞 NEUOS 开发了(hhhhh)

答辩结束后我和老师探讨了教学操作系统的继续使用,出于兴趣+造福学弟学妹的考量, NEUOS 我会持续支持并继续开发,直到他在教学上能够真正很方便的使用,我希望能通过 NEUOS 让学计算机的孩子们了解到操作系统是如何构建出来的,顺序是什么样的,每一步需要做什么,对这些有一个深切的体会,通过实现一个自己的小操作系统培养他们的兴趣,以及丰富他们的知识。

 

在这个期间还参与了诗音 (KazamaSion) 的 Tg 中文群组翻译计划(还把猫猫拉来一起做),结识了同在阿里工作的 kk 聚聚(kk 送了我好几个游戏了QwQ),还有很多很多社区的小伙伴~ 我的技术人生,有着大家的支持和帮助,才能走的开心以及顺利。

 

之后呢~ 虽然毕业,但是联系和羁绊还在,甚至还在一起线上开坑,所以夏娜对毕业的感触倒不是很深,但是作为结束语,还是说: 毕业快乐~ 生日快乐吧 OwO

Keep VOID


杂七杂八


Historical Comments

  1. yuangezhizao says: June 29, 2017 at 12:42 am 加油!

    1. VOID001 says: June 29, 2017 at 8:21 am 嗯呢w
  2. says: June 29, 2017 at 1:21 am 感谢大一遇见夏娜,我才能见到这么多新鲜有趣的东西。自己算是大学从零开始吧,很幸运地在开始时就遇见了夏娜。

    1. VOID001 says: June 29, 2017 at 8:23 am 希望你能把我带给你们的东西,带给你们的下一届的学弟学妹,并且让他们也保持着这个传承,这样一届届传下去,我们 NEU 的计算机专业就会越来越强~
  3. 李家豪 says: June 29, 2017 at 8:20 am 生日快乐=w=

    1. VOID001 says: June 29, 2017 at 8:21 am 蟹蟹家豪w
  4. FiveYellowMice says: June 29, 2017 at 8:42 am 肥猫不是 TU 啦,肥猫是 dev 。

  5. FiveYellowMice says: June 29, 2017 at 8:44 am 肥猫不是 TU 啦,肥猫是 dev 呢。

    1. VOID001 says: June 29, 2017 at 10:04 am 恩恩,窝一会儿修改

      1. VOID001 says: June 29, 2017 at 4:33 pm 修正啦
  6. kookxiang says: June 29, 2017 at 10:19 am 摸摸夏娜,生快~

    1. VOID001 says: June 29, 2017 at 10:22 am kk酱 \w/
      摸摸kk~
      蟹蟹 kk 送夏娜的游戏w
  7. zwindl says: June 29, 2017 at 12:45 pm 夏娜生快!感谢夏娜茫茫多的技术分享?

    1. VOID001 says: June 29, 2017 at 1:54 pm 蟹蟹abc的祝福~~~ \w/
      abc加油~
  8. TJM says: June 29, 2017 at 2:23 pm 生日快乐~~
    夏娜不考虑一下UoT么?
    可以尝试一遍工作一边申请哦

    1. VOID001 says: June 29, 2017 at 3:08 pm 好哒窝查查看~~~
      蟹蟹天价萌!!
      天价萌加油 =w//
  9. dalao says: June 29, 2017 at 3:16 pm 祝前程!
    有空回来打音游啊~

    1. VOID001 says: June 29, 2017 at 4:23 pm 蟹蟹w 要的要的~ 大佬有没有掌机设备来联机 PSV / 3Ds 呀~~~
  10. VOID001 says: June 29, 2017 at 11:17 pm 之后呢~ 也就是现在
    夏娜准备和 LA 还有学弟学妹们开坑学习网络协议
    并继续完善我的 NEUOS
    同时按照自己的计划一步步走下去 !EOF.

  11. SilverRainZ says: June 29, 2017 at 11:22 pm 生日快乐~

    1. VOID001 says: June 30, 2017 at 9:20 am 蟹蟹LA~~~
      LA 工作加油\w/,希望LA很快能回归社区啦~
  12. Alan Tian says: June 30, 2017 at 1:49 pm 生日快樂!看起來故事的豐富程度,和前程的閃亮程度,都是很高的啊(

    1. VOID001 says: June 30, 2017 at 4:59 pm 蟹蟹 Alan! ~ DevHoro 的坑等我有时间了计划好就继续捡回来大家一起开发~
      Alan 谬赞了~ 实习(工作)加油哦~
  13. ZackBee says: July 1, 2017 at 11:02 pm 就很好奇为啥qxy叫钱狗,有啥梗么@[email protected]

    1. VOID001 says: July 2, 2017 at 9:14 am 大概木有?(忘记是谁第一个叫的然后感觉很顺嘴就一直这么称呼了(逃

      1. ZackBee says: July 2, 2017 at 12:16 pm hhhhhhhh
  14. YongHao says: July 4, 2017 at 1:43 pm 写的很好,祝以后能毫无代价写最幸福的代码。

    1. VOID001 says: July 4, 2017 at 3:06 pm www 这真的是最好的祝福啦,也祝yonghao能够一直写自己喜欢的代码
  15. Dunn says: July 14, 2017 at 7:24 pm 非常厉害,加油!请问您对heka有一定了解吗?

    1. VOID001 says: August 15, 2017 at 11:38 pm 不好意思,之前回复过您不过不知道为什么没回复上
      曾经的工作和 heka 有关,不过目前 mozilla 官方已经不维护 heka 这个项目了,而且 heka 本身的很多限制也导致他无法应用于很大规模的集群的日志采集
      因而目前没有使用了
  16. 李家豪 says: July 16, 2017 at 1:25 pm 似乎突然明白了分布式版本管理的巨大意义了……

    1. VOID001 says: July 16, 2017 at 2:03 pm 喵喵喵?? 怎么啦
  17. 云淇 says: August 6, 2017 at 1:44 am 凌晨一点过看完惹www最后问一句,夏娜是男孩纸还是女孩纸【捂脸我真的很迷惑啊】

    1. VOID001 says: August 6, 2017 at 12:42 pm 哇好感动OwO
      夏娜 当然是女生啦~(参考 《灼眼的夏娜》 小说or动漫
      VOID001 是男生啦ww
  18. 郑朋龙 says: August 8, 2017 at 10:13 pm 自己零零碎碎的学了些编程知识,感觉在你面前还是小学生,向大神膜拜。希望以后在你的博客还能看到新的东西,不断向你学习!
    –zapple,一个计算机小白

    1. VOID001 says: August 12, 2017 at 9:52 pm 谬赞了, 窝离大神还有很远的
      文章对大家有帮助就好~
  19. Cyf says: November 9, 2017 at 7:08 pm 无意中发现了这个blog,很有意思。已Mark

  20. ArielHyc says: December 29, 2017 at 10:23 pm 我也是学计算机的 目前大三 在为OSlab的作业找资料 偶然点进这里 感觉学姐的大学生活真是充满亮点呢 我对编程不太有天赋qwq 也没有那么多闪亮的成绩 希望以后能一步步找到适合自己的路吧。。
    祝学姐新年快乐~!

    1. VOID001 says: January 1, 2018 at 10:26 pm 蟹蟹呢~ 也祝Ariel新年快乐~
  21. 潜心做事 says: January 21, 2018 at 9:50 am 完整看完了,大学的经历很棒啊,实在佩服,目前大三,在一个普通二本院校,好在我们也有一个团队,三月软件工作室,今年暑假出去实习。另“我还记得苦力怕强烈建议我不要将操作系统涉及作为毕设”一句中“涉及”疑为“设计”

    1. VOID001 says: January 26, 2018 at 1:07 pm 不敢当OwO
      谢谢指明~ 已经修正啦
  22. 南浦月 says: February 24, 2018 at 12:02 pm 夏娜好棒,夏娜的小伙伴们也好棒!

  23. AlynxZhou says: September 27, 2018 at 3:21 pm 看了一遍觉得自己真是太失败了2333好像什么都会一点点但是什么都不会的样子。

    1. VOID001 says: September 27, 2018 at 4:33 pm QAQ 窝很多东西也仅仅会皮毛了,最近还被准备 GRE 考试弄的没时间干其他事情
  24. packy says: September 30, 2018 at 10:47 am 夏娜好厉害啊,作为18级网络部mengxin要像夏娜学习(当然不是旷课那部分

  25. 老肥 says: January 8, 2019 at 3:55 pm 身为同届毕业,但是不是neu的啦,自愧不如。。。

  26. mafia says: February 9, 2019 at 10:07 pm 好羡慕你有这么精彩的大学生活,有这么多兴趣相投的小伙伴

  27. 张善俊 says: April 29, 2019 at 9:35 am 大学四年过的很充实,大赞!
    我最近也在学习linux 0.11的源代码,可以提供一些学习的建议和学习的材料吗?提前表示感谢

    1. VOID001 says: April 29, 2019 at 9:44 am 欢迎 OS lover 😛
      我在研究 linux-0.11 的源代码的时候参考了 赵炯的 《Linux 内核完全注释》http://www.oldlinux.org/download/clk011c-3.0.pdf 左边是一个在网上可以找到的版本
      另外我在开发 OS 的时候也参考了 osdev IRC 频道以及他们的 wiki https://wiki.osdev.org/
      同时还有 Intel IA-32 Software Development Manual Volume 3A 这个在 Intel 官网可以找到在线的 PDF
      我的博客内也有一些 Linux 0.11 相关的文章,通常他们的标题开头为 [Linux 0.11] ,也许也能提供一定的参考作用
      希望以上内容能帮到你~

      1. 张善俊 says: April 29, 2019 at 9:49 am 哈哈,非常感谢,提供的建议和材料很有用!
        博主回复也太快了233
  28. Neboer says: July 13, 2019 at 9:14 am 非常厉害的博主写的非常有技术感的大学经历www谢谢你让我再一次感受到了代码的力量以及它对人生的影响,也谢谢你指导我装Arch?,谢谢!

  29. Rayfalling says: October 17, 2019 at 1:34 pm 夏娜学长tql

  30. Rayfalling says: October 17, 2019 at 1:34 pm 夏娜学长tql

Back