2010年度总结

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!

blog 定位为技术 blog ,因此,本篇年度总结,从技术上回顾自己这一年的所学、所感。

 

1. 本年度的主要工作内容

 

本年度的主要工作内容主要是根据自己的 weekly report 总结而来,有些其他的研究或工作可能不会被回顾并写入,但也能充分反映该年度所做的工作。

 

进一步理解 Multicast 原理和规范 (DOCSIS3.0) ,理解 DServer 整体架构及其平台模块,包括 ICC RPC TMM LOCK 等,熟悉其他模块如 QOS BVM CLI LDB 等,熟练掌握在 Linux 系统上编程、调试方法。

重构 MCAST 模块,增强对象的封装性,修改程序结构,使其结构更清晰、更具可扩展性和可维护性;修改代码使其更具可读性;修改代码提高程序性能,例如,使用 MibBrowser 创建 Row Object 时的性能改善;删除某些不必要的包含头文件,删除某些类中保存的其他对象或指针,降低模块间的依赖;使用 pc-lint 等静态分析工具分析代码并修改。

 

研究并实验本系统中各个模块使用的 MD5 算法和 HMAC 算法,如 AM CLI 等,删除各模块自己实现的算法,统一其实现,并放入 utils 目录。了解 MD5 算法和 HMAC 算法的实现原理。

 

学习和使用 ACE ,掌握其设计原则、原理,掌握其使用的各种设计模式(这项目标还未达到)。

利用 ACE ACE_Task 的自然退出的例子,研究涉及到的各个类及代码业务流程,如 ACE_Task, ACE_Reactor, ACE_Socket ACE_Message_Queue ACE_Message_Block ACE_Event_Handler 等。因例子代码较多,希望能够全部自动编译、根据输入自动执行并自动保存结果,因此又研究了 Expect TCL ,并写相关脚本自动编译、自动执行。并将该 ACE_Task 自然退出模型成功地应用到 AM 模块中。

 

研究 MCAST BVM 中与 ACE_Task 相关的代码,并根据此模块 task 特点,修改代码,也使 ACE_Task 自然退出。

 

研究 ACE 的其他问题,如下。

ACE compile/install/debug on Linux /win32 ;

ACE trace/log system;

ACE_Select_Reactor object memory structure analysis;

Handler repository object of ACE_Select_Reactor analysis;

Handler Set object of ACE_Select_Reactor analysis;

the flow of register_handler ACE_Pipe read handler during construct ACE_Select_Reactor;

the flow of register_handler/remove_handler a new handler in the same thread on Linux/win32 platform;

the flow of register_handler/remove_handler a new handler in another thread on Linux/win32 platform;

the flow of notify of ACE_Select_Reactor;

why not call notify during ACE_Select_Reactor construction?

why not call notify when thread A registers user-defined handlers?

why not call notify when thread A removes user-defined handlers?

why does it call notify when thread B registers a new handlers?

why does it call notify when thread B removes a new handlers?

handle_events and select/poll analysis;

why not call notify when thread B registers a signal handlers?

ACE_Semaphore construction flow with name.

ACE_Semaphore construction flow without name.

why does it not succeed to register a handler with negative value?

how handle_exception will be called by handle_events using notify to send the notification with ACE_Reactor_Mask::EXCEPT_MASK?

what is the flow of calling the overrided handle_close?

what is the flow of calling the overrided handle_exception method?

what is the difference between calling notify method of user-defined handler and calling the same method of ACE_Reactor?

write code to test all these issues.

TCL introduction, compile, install, using.

an example of ftp automatical downloading by using TCL.

an example of expression automatical calculation by using TCL.

whether the destruction of resource is in ACE_Task::close() or ~ACE_Task()?

study ACE about its Local and Remote IPC mechanism, including SOCK SAP, TLI SAP, SPIPE SAP, and FIFO SAP;

 

modify the related codes of AM module using ACE_Reactor mode.

 

进一步理解 IGMP 原理,进一步理解 SPON DePON IGMP 模块实现差别,修改 IGMP MCAST BVM CFM 等模块 bug24 个,熟练掌握 IGMP 模块调试方法,熟悉其他模块调试方法,如 TKD DDL AM ICC RPC VLM SAL 等,熟练掌握在 vxWorks 系统上编程、调试方法;进一步理解 EPON 架构,原理;理解 OLT 模块间的 callback 机制,例如 IGMP FPD NPD TKD ;理解 OLT 各个模块的初始化、 restore 流程;理解 OLT 上协议数据的处理过程;

 

研究 OpenSAF (Service Availability Forum) 相关架构, SAI (Service Availability Interface) 及其服务 , AIS (Aavailability Interface Spectification) 规范及其服务原理;了解 Lock Service, Persisent Store-Restore Service, Log Service, Event Service and Notification Service 等服务原理,了解 HPI (Hardware Platform Interface) 接口,学习其提高软件可靠性的方法,并做 workshop

重读《 Effective C++ 》,并为同组同事讲解其中 20 讲,写实验程序,效果甚好。

 

阅读《 POSA 》的 Half Sync/Half Async 模式和 Leader/Followers 模式,理解 ACE 中与该模式相关的模块。

 

阅读 CppUnit1.12 相关文档和代码,掌握其在 Linux 平台和 Win32 平台的编译、安装、配置及其使用方法。研究 CppUnit1.12 源代码及其使用原理、方法,写相关单元测试代码,并在 Linux 平台和 win32 平台实验。

 

阅读 Boost 相关代码、文档,掌握其在 Linux 平台和 Win32 平台的编译、安装、配置及其使用方法。熟悉 Boost Lexical multi_index_container 库,并掌握其设计技巧。写关于 multi_index 相关代码,并在 win32 平台和 Linux 平台实验。

 

进一步学习 Linux ,包括其命令、配置、内核、运行库等,熟练掌握 Linux 基本操作,熟练掌握 Linux 平台的 C/C++ 编程。及其脚本编写,自动测试等。

2. 其他内容

 

花半天的时间研究了 DServer stub 源代码的自动生成问题,定义生成规则,并写程序,程序对按规则自动生成 stub 源码。

 

花半天的时间研究了 DServer 运行的环境,并在本地虚拟机上搭建该环境,安装需要的各种第三方库,如 ACE Boost Curl OpenSSL Net-SNMP ,以及 Net-SNMP 需要的 libperl-dev 。全都采用源代码安装。

 

2 天的时间研究代码覆盖测试 (code coverage test) ,并使用 IBM Rational Purify 工具在 win32 平台实验。

 

4 天时间参加公司的 CMMI 培训,了解了什么 CMMI ,他能做什么,大致应该怎么做。理解 CMMI 对软件质量、过程的定义,了解 CMMI 的过程,及其 general goal specific goal

 

3. 工作方法与工具

 

进一步将 PKM GTD TM 等概念用于工作、学习上,逐步形成个人工作、学习风格,使个人平时工作规范化,提高个人职业能力和职业化水平。初步建立个人知识管理的原则、方式。

 

将以下工具用于工作和学习中,在很大程度上提高了自己的工作和学习效率。

onenote 笔记工具, wizKnowledge 知识管理, sugarSync 同步, dropbox 同步, scribeFire 博客插件 (firefox) delicious 书签插件 (firefox) everything 文件搜索, freemind 思维导图, to-do list google reader google calendar 等。

代码研究工具如 w2DasmV10.0 IDA5.5 等。

 

2011 年应该继续更新、挖掘对工作和学习大有帮助的工具,并应用到工作和学习中。

 

4. 小结

 

(1) 工作内容

 

从以上总结的工作内容可以看出,工作内容比较杂。

既涉及 vxWorks 平台上协议 ( 嵌入式 ) 开发,主要是 IGMPv3 开发和 IGMPv1/v2 维护;又涉及 Linux 平台 C++ 开发,主要是 DOCSIS3.0 协议开发,即 Multicast 开发和 QOS 重构。

既涉及 ACE openSAF 开源架构、通信中间件的研究及和使用,又涉及 C++Boost 库的研究和使用。

既涉及 CppUnit 单元测试相关研究,又涉及代码覆盖测试研究。

既涉及 Linux 的相关研究,例如 glibc binutils kernel 等,又涉及 CMMI 的学习。

 

2011 年应该在此基础上以工作要求和目标及个人兴趣为中心,加强相关技术的研究和积累,在其上进一步深入直至熟练掌握、精通。

 

(2) 工作重点

 

本年度工作重点仍是公司产品中偶负责的模块,如 IGMP Multicast 的开发、重构、维护;及 QOS 模块的重构。

 

(3) 对公司的贡献

 

对公司的系统,至年底,累积写代码 1.2w 行。

QOS 重构,将原来的 39859 行代码改为现在的 28377 行,继续修改中。

修改 bug24 个,基本上对每个 bug ,都有比较完整的重现、分析、解决的文档。

 

(4) 个人研究、学习

 

完整阅读技术书籍 5 本,查阅技术书籍若干。

《程序员修炼之道》

《程序员的自我修养》

Linux 内核修炼之道》

Effective C++ ( 重读 )

C++ 网络编程:卷 1 运用 ACE 和模式消除复杂性

 

正在读的

C++ 模板》

《编程之美》

GDB 调试的艺术》

STL 源码解析》 ( 重读 )

《自己动手写操作系统》

《程序员应该知道的 97 件事》

《重构:改善既有代码的设计》

Boost 程序库完全开发指南》

C++ 网络编程:卷 2 基于 ACE 和框架的系统化复用

2011 年要继续阅读并实践。

 

在网络上阅读技术文档若干,至年底,累积阅读各类文章 710 篇,分别使用两个工具建立。

使用 CyberArticle 积累文章 509 篇,使用 wizKnowledge 积累文章 201 篇。

 

工作中的学习,至年底,累积写代码 28502 行。

( 代码行是通过 SCounter 工具严格统计的。 )

 

阅读部分 STL Linux kernel glibc ACE 代码, 2011 年要继续有选择性地阅读并实践、记录。

 

(5) 个人记录

 

学习、分析公司的系统,累积文档 23 ( 包括 Bug 分析文档 )

 

使用 OneNote 记录学习笔记、文章,至年底,累积写学习笔记、文章 311 篇,共计 1204 页。如下,

公司产品 SPON 学习笔记, 42

公司产品 DServer 学习笔记, 24

公司产品 DePON code analysis 15

公司产品 IGMP analysis 11

B oost 实践笔记, 16

ACE 研究笔记, 32

C++Research 笔记, 18

ubuntu 基础, 20

Linux command 23

Linux shell, expect, TCL 7

Linux C/C++ 7

Linux 内核, 6

Linux basic concpet 14

Effective C++ 8

link, load, library 8

GDB 8

glibc 6

Binutils 5

嵌入式开发, 6

重构, 4

STL 3

cppunit 3

vxworks 3

测试驱动开发, 1

VBA 1

per 2

SAF 2

软件可靠性, 2

windows 3

others 11

 

从以上笔记篇数也可以看出,在本年度,工作和学习的绝大多数精力和时间还是放在了公司的系统、业务等上面,符合公司的要求。另外,也涉猎一些开源软件,研究其框架、设计模式等,如 ACE ;同时也加强了 Linux 的学习和使用。

 

但发到 blog 上的只有 27 篇,其中 20 篇还是在年底抽时间集中发布的,这个量要提高,不能只写不发,与 blog 的立意“学习、思考、记录、分享”不相符。 2011 年希望继续发布以往写过的文章或笔记。

 

(6) 年初计划

 

年初建立的个人计划,有 70% 的计划完成,在 2011 年应该适当调整个人计划。


你可能感兴趣的:(工作杂谈,2010,linux,工作,thread,construction,semaphore)