回顾半年的研究生生活

2019-07-13 16:55发布

      已经读了研究生半年了。回顾这半年,从进入实验室之前,就一直忙碌。可现在自己感觉总是很空虚。因为我做的太多了,也太杂了。回头来看一些以前做过的,有些已经忘记了。深感技术这方面,自己好像并没有什么长进。倒是眼界,和对解决问题的思路,我变得日益开阔。   从头说起吧,没进实验室,老师让看DSP,我看了一个星期的DSP,傅里叶变换整的自己够呛。毕竟我是学计算机的,虽说我学过一些信号与系统的知识,可是对于数字信号处理,本科却是没有上过。这个还没有看完,由于项目的需要,我改成Windows驱动方向,每天去图书馆,借书看驱动,刚建立起回调函数,IRP的概念,又因为任务的调整,我进入了交叉编译时代。这个吗?是从09年9月底开始的,持续的时间比较长,有一个月多吧。由于项目中,我们要能够图形实现生成的C代码直接可以运行在机器上,我开始学习TI-DSP,从它的开发软件CCS开始,花了一天工夫,配置好环境,并且跑通了软件中的例子,内心异常高兴。接着,一股气看完了所有能够找到的中文文档(图书馆的TI书籍都被电院的人借走了),和CCS的相关帮助文件,分析了CCS建立工程需要的项目配置文件,内存映射文件,源文件,内存文件。这个就此告一段落。O(∩_∩)O~。小有成就。总算做完了一件事。到了9月底,被老师点名去看论文,关于BDD(Binary Decision Diagram)二叉决策图,是第一篇这个领域的经典文章。原以为不重要,可谁知师兄一提醒,是让我去给研一的讲一节课。三天时间,白天在做项目,晚上自己一个人在那里看论文。还差一个小时,我终于做好了PPT。第一次上课,仪器坏了三次,换了教室。令我鼓舞的是,下面的听众给了我极大的鼓励,配合我完成了自己的第一堂课。这节课我现在还记着,从中学到很多东西,BDD的思想和应用,查找资料的能力(我把新加坡和美国几所大学的英文课件拿来自己使用,还有一些软件演示)。当然最大的收获是来自同学的肯定。整个十一,我泡在实验室,研究sparc和交叉编译。对于sparc体系结构,研究V7/V8两种型号的编译模式。其实sparc有自己的C/C++编译器,但是老师为了方便集成,希望我们能做一种直接生成DSP、SPARC、Intel x486这些架构的C代码和配置文件。所以,能够建立一个交叉编译工具。我查阅后,发现并没有针对SPARC的交叉编译,大部分都是arm型的。和师兄讨论后,觉得可以做一个sparc--linux的gcc编译器。虚拟机,linux,cygwin这都是我一点点学过的(为了应用,学的很浅。够用即可,这是我觉得技术第一要义,当然了,感觉这更像是小公司的做法)。可等自己马上做好sparc-linux的gcc时,遇上了很大的瓶颈,在编译linux内核时,并没有找到相应sparc型的文件(有arm,MIPS),这是在linux-2.6.28内核时出现的情况,希望以后有机会学习时再进行进一步研究。还没等我和师兄讨论,一则消息是对方有专用的gcc编译器,有别的公司专门为其订做。我的天呐?怎么不早说呢。我的时间啊!交叉编译告一段落。
    这时,发现自己没有事情可做了。没过几天,任务来了,大概4周吧,主要是需求追踪和文档自动化生成。需求追踪,花了三天才明白这和网上的“需求追踪”不同,我们要实现的是对方的需求文档和图形建模上的变化匹配问题。剩下的任务就是考察使用word文档自动化技术,初步定为使用OLE技术,并且使用word中的VBA,进行模型和文档的双向跟踪。本来是已经调研好的,可是自己亲自使用了一下OLE,才发现这种技术在处理word文档的局限性(这里主要是java调用时的问题),就是java中调用ole的组件实现控制word,经过仔细实验,发现java调用ole技术后,并没有给出一个和原有的word文档一样的形式,简化了很多。我查了一下对于word文档,java中可以使用的都是jacob技术,而我们要避免使用jni技术。我们最希望能够通过java的操作实现对于word文档操作,经过师兄的同意,我开始学习Apache的POI技术,经过一个周末的加班,总算完成了POI对于word文档操作的全部分析。可是到了周一,老师直接说,因为对于POI技术,可能存在一种风险,确实是存在,因为Apache的POI还在开发中,稳定性不高,对于word操作的支持较少。好了,我又回到解放前了,就准备用VB做,(有师兄见过华为采用过这种技术,具体如何,不知道),好吧,不过这样做,确实很简单,因为微软对自身产品的兼容性非常好,不过一周,我就把全面的技术问题搞定了,实现了模型数据导入和需求文档的匹配。完成了需求追踪和文档自动化生成(就是用户使用我们的软件完成建模,并且生成代码后,能够将模型图形和检测信息生成一个固定格式的文档)。O(∩_∩)O~,我还是蛮高兴的,毕竟这是第一个能够称得上是完成的任务。
    接下来,才是项目的真正开始,以前都是技术突破和构架上的建模。我又被调到代码生成组,做代码生成部分,这一部分,说来惭愧,我感觉我就是一个coder,连programmer都算不上,师兄把UML图给我,告诉我具体功能如何,就开始编码工作了。没有用过java,不过有C++的底子,编码还是很简单的。并且还和师兄想了一个关于模型模块排序的问题。感觉这才让我兴奋,毕竟这活涉及算法,而且我的提议得到了采纳,不过嘛?算法的实现还是师兄自己实现的,确实佩服师兄的功底。一个小时就完成了300行的代码,虽然以后因为模型的变化,这个排序算法中一些模块总是在变,但是框架上还算稳定。师兄开玩笑,这个是不是能发到学校的校报上。O(∩_∩)O~三周过后,就开始要交东西了,这已经到了12月下旬了。代码生成部分基本上完成,Eclipse的GEF插件画图部分还是有问题,我又被掉过去去测试图形。其实内心有些不情愿,毕竟要考试了,还没去过几次课,还是很想复习的。那些日子,我每天都在拼命地跑。从宿舍到实验室,废寝忘食啊。这胃也就开始不好了。
    其实,联机测试,我也只能是画画图,然后就发现bug,让他们来调试。感觉活轻松点,不过,就是我们的图形初期总是保存不下来,常常因为出现bug,重新画图。苦恼的很。
    2009年12月22日(好像是那天),我们总算做成了一个demo,兴奋啊!O(∩_∩)O~这下自己总算可以安心考试了。
    从2009年12月27日一直到了2010年1月22日,我呀,基本是就是一个闲人,看书写作业(都是积压的)考试。每天忙得很开心。O(∩_∩)O~这可是我最清闲的时光啊。
    放假了,留在实验室,师兄给了一个代码美化的任务,开始本来打算自己实现,可是光一个字符匹配,折腾了我一个小时,还是用开源的吧。O(∩_∩)O~(感谢所有为人类贡献知识的人)
    Astyle,我选择使用它,因为我们的软件运行在Eclipse中,可是要对C代码进行美化。选择鉴于对C/C++美化,一共有两个Indent和Astyle,而Astyle又能对Java进行美化,所以,鉴于可扩展性上,我选择了Astyle。Astyle确实好用,不过可惜没有Java版的,我下了一个C++版的,然后利用JNI技术,总算解决了这个问题。
    到了2月初,盼望着回家(已经有半年没回了)。想家啊。有一天大早,电梯里遇见一个老师,问还不回家?我说:实验室干活。后面她又说:其实回家也没啥事?我只有苦笑了,是呀,回家是没事,也可能帮不上父母的忙。可是毕业后,我还能像现在上学一样,有这么长的时间回家陪父母吗。工作后,我见父母的机会就更少了。一年回家两次的话,我父母已经55了,如果到了90岁,我也只能见面70次啊。学计算机的我,对于这个数学题,真的很心酸啊。真到了自己快退休的时候,可能也许是子欲孝而亲不待。
    回家20天,非常高兴。O(∩_∩)O~
    项目的改进主要是基于原有模型的变化,和进一步的迭代。我做了一周的数据字典导入,架构起来了,就差界面上同学给帮助一下。可是怎么说呢。又被搁置了。换到研究方向了。
    一种新型的加密算法。数学和密码。我的天呐!什么近世代数,计算数论,编码理论中的数学,有限域及其应用。头大,头晕。看了四个星期了。两篇论文,一堆数学、密码。还有很多密码课程。+_+
    最后,希望自己能够在接下的日子坚持写博客,记录自己的学习历程。坚持,坚持下去不容易。就像爱一个人一样,爱一辈子真的不简单。我会坚持的,也会永远爱她的。