设为首页 收藏本站
查看: 973|回复: 0

[经验分享] 项目经历总结——IBM实习总结

[复制链接]

尚未签到

发表于 2015-10-3 13:30:39 | 显示全部楼层 |阅读模式
一、DataConversion插件开发   
      我在IBM做的第一件事情就是开发一个DataConversion插件,这个插件的主要功能就是进行各种数据类型之间的转换。数据类型包括有:二进制,十进制,十六进制之间的互转,Unicode编码到Char的转换,Hex与Timestamp之间的转换等等,这个插件的功能很简单,实现不是很困难,主要是刚进入IBM,然后第一次接触eclipse插件开发,在完全不知道RCP是啥东西的情况下做这个事情的。
      在我进入IBM的第一个星期,我几乎没有写任何代码,因为我完全不懂RCP,所以我做的事情就是看team里面项目的相关资料,包括我们组的产品IFA的介绍,以及IFA的一些概要设计等等,此外,开始搜寻一些关于eclipse插件开发方面的资料,通过学习,了解插件开发体系架构,了解到了OSGi规范,并且知道eclipse本身就是基于这个规范,基于这个插件体系架构的一个成功案例,通过翻看eclipse帮助文件等,开始了解eclipse插件开发中的各种eclipse本身预留出来的扩展点,并且开始尝试依据扩展点所预留出来的接口,编写代码,实现例程。
      DataConversion这个插件,最后的目标就是希望在我们的产品上有一个button,通过点击这个button会出来一个图形界面,通过图形界面(一个类似于windows下计算器一样的界面),用户可以方便的进行所提供的数据类型之间的转换,并且能够容易的得到转换结果(有复制,粘贴,剪切等按钮)。
      这块开发的难点其实在于GUI的开发,也就是界面的开发,因为作为产品的界面,将力图友好,易用。所以这个模块中就涉及到各种GUi事件的捕捉,处理等,以及各种错误,异常处理。界面上包括需要将按钮和菜单联动起来。关于错误处理方面,主要有两方面的错误,第一,用户输入有误,第二,在数据类型转换过程中,转换有误(就是该类型的该数据无法转换为合法的目标数据类型),在处理用户输入的问题上,尽量在输入的时候就控制让用户尽可能的输入正确,这个通过监听器来达到,但可能有部分输入无法在输入过程中发现输入错误,只有当输入以后才发现输入有误,于是通过显示屏来显示错误;在数据转换错误上,当发现无法合法转换的时候,显示屏也将显示错误,但是有个特别需求,用户需要点击radio button将数据再退回到原来的数据类型上去,也就是用户发现转换不了的时候,他需要退回去以发现到底是哪个输入输入错了,所以这个地方需要处理一下小细节。
      以下是我开发完后给出的tips:In this tool, there may be some errors after a conversion, including theinput error and the conversion error. I suggest dealing with these two errorsrespectively. I mean if there is an input error, the program should not allowusers to do conversion work any more until users correct their input.
                                                               
                                                                    二、 navigator插件的开发
        我的第二项工作就是开发一个导航栏视图插件,类似于eclipse中的navigator视图那样,依据底层文件系统的文件目录,以树状形式显示出工作区的文件目录,组里给的要求是尽量复用eclipse已有的东西,于是我调研了CNF(Common Navigator Framework)框架,CNF是一个专门用来在eclipse插件开发过程中定制自己的导航视图的框架,由于我需要显示我们产品自己的相关文件目录,所以不能再用eclipse本身定义的底层文件数据模型IResource(IProject,IFolder,IFile),需要自定义数据模型,为了能够在后续的开发中最大复用eclipse的东西,我在定义数据模型的时候,就是对eclipse的数据模型IResource进行一层封装。
  BTW:About the whole idea of this navigator tree,its main opinion is the data model. We designed our own data model namedIIfaResource which wraps the data model in eclipse called IResource. However,all the actions in the navigator tree are still based on the data model ineclipse. When we select some item in the tree and trigger some actions, thewhole process is as following:
  1 getsthe selected resources which are IIfaResources we defined ourselves.
  2 unwrapthe resources and get the IResource out.
  3 do theactions to the IResource with actions already defined in eclipse, return theresult.
  4 wrapthe result with the format of IIfaResource
  5 displaythe result.
  Sometips: There is some thing worthy noting down. When we define our own data modelin the navigator tree project. We should override the equals() and hashCode()method in each class. If we do not do so, then when we refresh our navigatorview, the navigator tree can not sustain its
  expandingstate any more, as in the deeper source, the data model is used as a key inHashMap.
                                                   三、对特定XML文件的多页编辑器插件开发
在分析数据结构的过程中,在分析长度的时候,当碰到类似数组等数据,光从这些源文件无法分析出长度来,需要配置其维数等等,这个时候就需要一个配置文件叫做configure.xml,我就是负责开发一个对这个configure.xml文件的特定多页编辑器,其实就只有两页,一个是用来查看源文件的,一个是用图形界面查看这个xml文件的,类似于插件开发中eclipse提供的查看plugin.xml文件的编辑器一样,不过没有那么复杂,任务也很简单,也就是对xml文件内的各个节点建模,然后初始化图形editor的输入editorInput为代表整个xml文件的一个对象,以此再进行显示,同样是利用jface的viewer来进行,当然是复用到了eclipse中UI插件已有的一些editor的功能了。再继承他们的基础上进行扩展。另外,还需要开发出一些图形界面内能够加入节点,删除节点,修改节点的功能,还要求能够保存等等。
这部分还存在的问题就是:
  1 Keep the arraypage and the text editor (source page) consistent with each other. I gave amethod named “pageChange()” in the ConfigurefileEditor.java, but have notfinished it. Please finish that to achieve this.
  2 There is something wrong when saving the configure file. As we know, in the configure file,the array node is like this: <array fieldname=&#8221;&#8221;, dimfield=&#8221;&#8221;/>, however,after saving it, it will turn into this: <array dimfield=&#8221;&#8221;,fieldname=&#8221;&#8221;/>. I thought there might be some attributes or some other thingto set when saving the file in order to make the order of the array node&#8217;sattributes unchanged.
  3 About the quickfix, in the source code, I tried to achieve this goal in two ways. One is extendingthe org.eclipse.core.resources.markers extension point andorg.eclipse.ui.ide.markerResolution extension point. Another one is making anaction menu on the marker in the problem view which can also named after &#8220;quickfix&#8221;. However, so far I have not finish this work and just given two ways.(这个地方遗留的问题最大,之所以没有实现的了,是因为存在视图,或者说是程序之间通信的困难,就是我在quickfix视图里面发现了这个错误,然后我也能够改正这个错误,但是如何把这个与编辑器联动起来是个问题,并且如何像eclipse的quickfix一样显示备选fix方案也是一个问题。这个地方由于时间关系,在离开ibm之前一直没有解决,离开ibm以后没有继续相关调研,也就是一直是个问题,不过我相信一定存在这个方面的api,或者一定有方法能够实现这一点,而我提出的第二个解决方案就是一个不是很理想但是也能够实现功能的方案,它完全脱离了eclipse的quickfix的意思,但是能够让用户用起来感觉跟quickfix一样。)
      四、文本文件分析工具开发:功能就是分析一些用我看不懂的语言写的数据结构,并用XML格式存储起来,存储每个变量开始的位置,所占长度,结尾位置。工作有点类似是一个文法分析,但是由于时间紧迫,而且最重要的就是我对该语言完全不懂,所以无法利用所学的编译原理的知识来解决这个问题,于是只能将其作为字符处理,由于这个工具只是一个应急工具,所以就权且这样子做了,而产品以后将完全采用编译原理那套东西来进行工具开发。

通过在IBM的实习,极大的锻炼了我的调研能力和自学能力,我是在完全不懂RCP的情况下进行工作的,而我能够在很短的时间内学习它,并使用它,而且我有着极强的激情去学习新东西,敢于去接受挑战。此外,或许由于自己的经验不足,在开发过程中导致了一些错误的发生,甚至有些bug曾经困扰了长达一个星期之久,但是我始终坚信这个bug有办法解决,而且一定要解决,在周围同事都无法帮助我的情况下,我坚持阅读SWT的源代码,最后终于能够找到问题症结所在,让我无比欣慰和开心,也让自己长了经验,这点我觉得我对自己很是感到骄傲,我有着很强的解决问题的激情,虽然解决问题的道路是曲折的,甚至可以说是痛苦的,但是我很是享受这个过程,以及问题解决后的愉悦!
在整个IBM的实习过程中,我能够很好的team work,在team会议上,不会因为自己是个实习生而胆怯,认真思考后积极的合理的提出自己的意见,并且认真听取各位同事的意见,吸取他们的经验,事实上,我的同事在我整个实习过程中给予了我很大的帮助,最后他们也对我的工作结果和效率给予了充分肯定。我感到很是高兴。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-122164-1-1.html 上篇帖子: IBM双机群集 下篇帖子: IBM经典面试题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表