2013年春季学期总结

再过几天就要开始研究生的新学期了,趁着还有点时间赶紧把大四下学期回顾一下。话说回来我是把暑假也算入这个学期里头了,因此现在来回顾还不算晚。都说大四的毕业生除了混毕业论文之外,过得是最清闲最快乐的,但现在看来,这学期恰恰是我本科生涯最长的一个学期——由于暑期做某个项目而调假,我从二月初到八月底超过半年没有回过家,真心是破纪录了。这学期远远没有普遍大四毕业生过得那么潇洒,其中也发生了不少事情,现在就来把一些重要的事梳理一遍。

还是关于实验室

过完了短暂的两周的寒假,我们实验室在约定好的二月份全员到齐,开始新学期的工作。虽然是大四下学期,不过既然是保研进来的,我也得开始按正式研究生的时间开始了周一到周五“朝九晚五”,周末休息的“上班”生活了。关于“上班”时间实验室还是比较人道的,只要求早上九点准时到,其他时间都不做要求,中午休息的时间亦有了一定保障。当然,“上班”则意味着规律的生活,以及更少的自由时间,还有偶尔的晚上或周末加班,这也算是提前适应未来真正的上班生活吧。

首个正式Android项目——欢喜淘

到二月底的时候,向来Idea超多的老师某一天突然提出了开发一个针对学生的校园二手市场APP的想法,并展开了一系列调研。从最开始提出这个产品的概念到最后确定产品的定义,也就花了不到两周的时间,期间开了N次会议讨论诸如“学生到底需要什么样的二手市场”“能吸引学生使用的亮点”之类的问题。最后确定下来的这个APP叫做“欢喜淘”,大概就是主要面向本校的学生,特别是我们这群即将毕业的大四学生,在毕业季的时候会有很多东西要甩卖,这个时候推出肯定能吸引很多学生使用,让学生淘得欢喜。再加上一个所谓的创新亮点——赠送抽奖功能——可以通过使用这个APP来赠送那些不想要又不舍得丢的东西,其他人可以向这件赠送品投入金币(下注),最后就开奖以决定谁可以获得这件赠送品。通过这种游戏的互动,使用户参与度更高。

作为一个专注于技术开发的人,我对产品本身没有太大的兴趣,即使它的潜在用户是我这种毕业生。既然老师如此上心,我只要乖乖照着干就是了。我们的开发团队有一位靠谱的产品经理LYY学长,一位靠谱的UI设计师学姐,一位靠谱的技术大神松老师,再加上还是Android开发新手的我,阵容也还不错。像这种普通的APP,编码人员维持在一两个的水平是比较稳妥的。

这个项目算是我第一次接触真正的Android APP应用开发(以前做的那些都不能算是实际意义上的APP),一开始摸索还是有一定难度的。为了搞这个还特地换了个Android的手机。从开发测试环境的熟悉,到各种XML布局的掌握,再到基本的Java后台看,花了大概两周时间去适应。中间还好几次遇到技术瓶颈,比如菜单下拉刷新啊,侧滑栏菜单什么的,虽然网上有很多范例但实际用起来就是很不顺手,项目越做就越觉得Android开发让人蛋疼(以前两度接触Android开发到现在感觉依旧不变)。所幸有技术大神松老师罩着,项目的进展还算比较顺利。产品经历了几轮的迭代,实际工期总是要比预期长,在经历了连续一个多月没日没夜的加班和赶工之后,产品总算达到可以发布初版的状态。

本来这个产品预定是要在毕业季大约六月份的时候推出,但后来出于某些原因,为了不让产品在刚推出的时候就夭折,老师选择了不推出产品,这个项目也就不了了之了。反正我对这个产品兴趣也不大,结果如何我也无所谓,倒是这期间整套Android的基本开发都被啃下来了,也算是不小的收获。总之,这蛋疼的Android我已经扯得够多了,也不想多说什么,现在APP的开发者实在是泛滥,除了蛋疼还是蛋疼。

“发现杯”软件大奖赛

大概四月初的时候,在我忙开发欢喜淘忙得焦头烂额的时候,突然接到达内公司的一个通知——我当选了“发现杯”软件大奖赛的全国十强选手,让我赴杭州一星期去参加决赛,而且全国十强已经有了保底的奖金,路费各种报销,若能进总决赛还会有更大的奖励。我之前做的模仿Doodle Jump的挫得一逼的游戏Suwako Jump居然也能进决赛,再加上达内这个培训机构名气不是很大,一度让我对这个比赛是否是骗局产生了顾虑。由于手头有欢喜淘的任务,我一开始也不太想去,后来和老师商量之后,老师同意放我去参加这个比赛,毕竟是一次长见识的机会,并叮嘱我做好万全的心理准备,出门小心。于是老夫便买了赴杭的软卧,独自上路。

第一次独自出远门去一个陌生的城市,心里还是比较忐忑的。达内似乎为了拿出诚意和打消我们选手的疑虑,带队老师也是一路给我们各种报销和解决各种生活上的难题,各个选手之间相处还是比较和谐的。从第二天开始老师就把我们拉到杭州下沙开发区一座新盖好的大楼做封闭培训。第一轮选手轮流展示各自的作品之后,大家对彼此也就知根知底了。11组选手均来自全国各地,一本二本三本乃至大专各个阶层都有,年级多集中于大四到毕业一年。看过其他人的作品之后,我才发现我做的那款破游戏那生动活泼的场面还算是比较有吸引力的。说到底这个比赛因为是第一届,提交的作品确实是比较水(这个主办方后来也承认了),不是我夸张,只要提交一个可以运行的不崩溃的Android程序,基本就可以进决赛拿到至少5Q的奖金。所以说我们第一届算是幸运儿,后面这比赛估计就不是那么水了。

为期七天的决赛大概分两个阶段,前两天在11组中选出了6组参加最后的总决赛,剩下的人就和前6名的选手组为一队,给他们提供帮助。后面剩余的时间就是前6名不断地改善作品的UI界面,锻炼演讲能力,做PPT,因为总决赛的时候是前6名在各个老总和杭州的媒体前展示作品。具体的准备过程在此就不赘述了,以后有机会的话我再考虑放出那一段时间的日记记录。总而言之,这七天啥都没搞,就锻炼了presentation的能力,还有认识了一帮人。整个过程我都显得比较仙脚,因为打一开始就对这个比赛有潜在的抵触心理,尤其是得知可以进入总决赛后,就更加地不上心。别人都是拼了老命在练习和修改,我还有闲心在外地继续做欢喜淘的项目。

最后的结果也还算是比较满意,拿了第三名。这里不得不提一点就是决赛的前一晚我们大概排练到11点左右,带队老师给我们每人发了一份协议,我一看就知道尼玛达内这一手果然非常狠,比赛最后拿奖需要签一份协议。协议的具体内容这里不便透露,后来也是花了好大的功夫才把这个事搞定,如果有兴趣的话可以私底下找我了解。

毕业课设与论文

从杭州回来后本应该开始准备毕业设计的事,但是老师一直让我参与很多杂项目所以基本上没怎么动。毕设这个项目本应由我和另一个学长共同完成的,由于各种杂事缠身所以我也没怎么参与。6月8日答辩,老师要求我们6月1日才开始写论文,记得我当时答辩完发了一条状态“七天之内论文、开题报告、翻译、日记、答辩一条龙= =|”,这就是本科终极一战的实况。当然论文要求1W5字最后飚了2W4也是蛮爽的,论文的题目还是很老套很装逼的套路,叫《在线聚类分析及可视化系统的设计与实现》,说白了就是一个吓唬行外人的战五渣。。。

毕业季

答辩完后实验室给放了两周的毕业季假,一学期紧绷的神经总算得以放松。接下来就是各种休闲活动啊班级聚餐啊晚会啊。比较值得一提的有一场说走就走的旅行——去恩施班级旅行,和室友天天打求生之路三国杀愉快地度过最后的本科时光,还有经历华科的传统毕业泼水节等等。其他的,倒也没太多可讲。

贯穿整个学期的坑——Heatmap项目

这个项目就是我之前说的“生物信息组”提出的项目,从上学期末就在开始做计划,一直持续到现在,这也是我放假没有回去的原因。如果说我的本科毕业设计完成的是Heatmap 1.0——完成了用户信息和工程管理,上传基因数据文件,在线聚类分析,聚类结果可视化(太懒直接贴论文摘要了= =|),那么暑假要攻关的就是2.0(目前已基本完工),然后还有即将要动工的正在等待设计的大型工程3.0。

Heatmap 2.0的目标依旧是为论文服务,所完成的工作大概就是在1.0的功能基础上,增加了在线房间聊天互动,在大图heatmap上做各种标记(pin和mark)等功能,并且对UI界面进行了大幅的重设计,整个项目基本上持续了八月份一整个月。由于之前的1.0完全是为了实现而实现,所以代码写得比较混乱。而Heatmap 3.0是准备作为一款大型社交产品发布的,为了让2.0顺利过渡到3.0,在2.0上我们团队都比较谨慎地设计了架构。在八月前两个星期,我和YYS童鞋对整个Heatmap项目进行了代码重构,他负责后台我负责前端。最后整个项目被部署到了实验室新搞的专门用于生物信息的服务器上,并采用了PHP框架CodeIgniter,前端的JS代码采用了require.js和模块化写法。除了负责部分的前端代码之外,我还负责了在线聊天的模块,用了Node.js和Socket.io,感觉效果还不错。一直到现在,Heatmap 2.0基本上算是告一段落,项目本身没什么感觉,倒是在前端技术上有了一定的飞跃。

3.0的话目前正在紧锣密鼓地筹备中,貌似是要引入社交元素,并打造一个国外的大型图片在线协作的社交平台,预测的用户量大概希望达到十万级以上。嘛,愿望和憧憬是美好的,未来走向究竟如何,现在项目还没开始动工不好说,就拭目以待吧。

其他杂项

这学期除了几个比较大的项目之外,个人的老师布置的大大小小还有一些比较杂的项目或小任务。正是这些杂项,我才能接触到更广范围和更新的技术。下面就挑几个重要的记录一下吧。

  • 个人新版博客:就是现在看到的这个托管在Github Page的静态博客以及新发布的主题,涉及的技术有:Hexo、Markdown、EJS、Stylus(后两个是制作主题用的模板语言)。
  • 一个小游戏:拖延已久至今仍未完工,这学期基本没什么时间去增加新的东西,只能抽空采用新的引擎和架构重构。不过收获也是蛮大的,比如第一次接触游戏引擎,还有对js的模块化有了更深的理解等等。目前重构工作已基本完成,下一步目标就是赶紧把这个东西开发完。涉及的技术有:Cocos2D-HTML5、Sea.js模块化。
  • 声音识别:这是老师额外布置的和一位牛逼学长合作的研究工作,做的东西大概就是录一段音乐然后去识别是哪首曲子,也就是所谓的“哼唱识别”。为此还特意去研究了国外著名应用Shazom相关的论文,并把哼唱识别算法实现出来。算法的东西基本上是学长用Matlab和Java搞定,我的重点主要是后期海量数据的处理。这也是在实际中第一次碰到大数据量的问题——用MySQL存储千万级的数据时开始出现性能瓶颈,对此学了不少数据库的优化方法,最后还是采用了MongoDB解决了这个问题。涉及的技术有:MySQL的性能优化、MongoDB。

本学期技术关键词(按重要度排序)

Javascript模块化、HTML/CSS、Android、Cocos2D-HTML5、MongoDB

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器