2004年《程序员》随笔

来源:互联网 发布:知微是什么意思 编辑:程序博客网 时间:2024/03/28 23:41

+-----------+
    程序员
  2004年2月
+-----------+
1.  《好书榜:Linux专题》 P118
    1.  原理和内核分析
        1.  《深入理解Linux内核》
            中国电力出版社
           
            研究Linux内核源码的关键在于对数据结构和关键算法的分析。
           
        2.  《Linux内核源代码情景分析(上下册)》
            浙江大学出版社
           
            不是按源码的顺序去分析,而是按OS的原理分成若干章。
            通过情景分析,使阅读枯燥的内核代码变得生动。
           
        3.  《Linux操作系统内核实习》(英文版)
            机械工业出版社
           
            注重实践,通过一个个鲜活有趣的小实验,来加深理解。
           
    2.  程序开发
        1.  《UNIX环境高级编程》
            机械工业出版社
           
            已有中文版电子书,PDF格式
            具有理论结合实际的论述风格。
           
        2.  《Linux高级编程》
            机械工业出版社
           
            为从事Linux开发的专业程序员提出了许多宝贵的建议,内容全面而又字字珠玑。
           
        3.  《Linux程序设计》(原书第二版)
            机械工业出版社
       
            适合Linux初学者
           
        4.  《Linux设备驱动程序》(原书第二版)
            中国电力出版社
           
            书中的介绍循序渐进,并且给出了功能完善的示例驱动程序。
           
    3.  管理和配置
        1.  《Red hat Linux7 服务器使用指南》
            电子工业出版社
           
            Linux系统管理员、网络管理员等必读的上上之作。
           
        2.  《Red hat Linux7 技术大全》
            机械工业出版社
           
            实在是无愧于“大全”这个称号。
           
           
2.  《C++程序设计之四书五经(上篇)》 P112
    1.  C++有着根本性优势的开发领域:
        1.  低级系统程序设计
       
        2.  高级大规模高性能应用设计
       
        3.  嵌入式程序设计
       
        4.  数值科学计算
       
    2.  经典:
        1.  《C++程序设计语言(特别版)》
            Bjarne Stroustrup
            机械工业出版社
           
            简称TCPL
            这是一本严肃的著作,以中高级C++开发人员为目标读者。
            适合于有经验并且需要了解更加本质的C++知识的C++程序员。
           
        2.  《C++语言的设计和演化》
            Bjarne Stroustrup
            机械工业出版社
       
            简称:D&E
            这是一本关于C++语言设计原理、设计决策和设计哲学的专著。
           
    3.  入门教材:
        1.  《Accelerated C++中文版》
            中国电力出版社
           
            对于有经验的程序员学习C++来说,这本书可能是世界上最好的一本书。
           
        2.  《C++ Primer (3RD)》中文版
            中国电力出版社
           
            这本书在许多方面比TCPL讲得更详细、更易懂。
            如果一名C++初学者能够扎扎实实地读完这本书
            并对照《C++ Primer Answer Book》完成全部习题的话,
            他的水平肯定可以进入职业C++程序员的行列。
           
        3.  《Essentail C++中文版》
            华中科技大学出版社
           
            可算作《C++ Primer》的精简版。
            作者将门槛调低到具有其他语言程序设计经验的C++新手所能接受的最基本的层次。
           
    4.  高效、健壮编程:
        1.  《Effective C++中文版》
            华中科技大学出版社
           
            《More Effective C++ 中文版》
            中国电力出版社
           
            前者主要讨论C++中的一些相对基础的概念和技巧。
            后者主要讨论包括异常处理在内的一系列高级技术。
            后者与前者相比的区别有:
            1.  后者包含很多时新的标准C++的内容。
           
            2.  后者讨论的主题倾向于“战略化”而非“战术化”。
           
        2.  《Exceptional C++ 中文版》
            中国电力出版社
           
            《More Exceptional C++ 中文版》
            华中科技大学出版社
           
            这两本书是典型的深究C++语言细节的著作,很薄但内容密集,读起来很费脑筋。
           
        3.  《C++ 程序设计陷阱》
            中国青年出版社
           
            本书汇集了作者来自开发一线的99条编程真知灼见。
            洞悉它们可以避免几乎所有常见的C++设计和编程问题。
           
        4.  《Efficient C++:Performance Programming Techniques》
            提高C++性能的编程技术
            清华大学出版社
           
    5.  模板和泛型编程
        STL Boose Loki
       
        1.  《C++ Template 中文版》
            人民邮电出版社
           
            通过这本书可以透彻理解C++模板技术。
            侯捷的个人网站开放繁体译本的大部分章节。
           
        2.  《C++设计新思维:泛型编程与设计模式之应用》
            华中科技大学出版社
           
            这本书分为两部分:
            第一部分:讨论了Loki程序库采用的基础技术以及一些高级语言特性。
            第二部分:则着重介绍了Loki中的重要组件和泛型模式技术。
   
3.  《蚀之韵-Eclipse的敏捷开发实践》 P83
   
    1.  配合Eclipse进行名节开发的工具有:
        1.  CVS 建立集中的代码库
       
        2.  Ant 完成自动集成
       
        3.  JUnit 构造自动运行单元测试
       
        4.  重构
       
    2.  OSWorkflow
        OpenSymphony公司的一个Open Source的工作流产品
       
    3.  单元测试并不是一种真正意义上的测试手段,更像是一种设计手段。
       
        测试用例的作用是将设计思路体现出来,并随时保证实现与设计思路相符。
       
        单元测试不仅保证系统正确,而且它可以保证实现没有偏离设计的轨道。
       
    4.  敏捷开发的职业道德:
        为每段可能出错的代码编写测试并随时保证所有测试通过。
       
    5.  对重构近乎形式化的阐述手法,使自动化重构成为可能。
   
    6.  Eclipse这样集成了重构功能的IDE,使增加新功能和重构旧代码之间的分别变得微乎其微。
   

+-----------+
    程序员
  2004年3月
+-----------+          
1.  《C++ 程序设计之四书五经(下篇)》 P116
    1.  标准库
        1.  《C++ 标准程序库 自修教程与参考手册》
            华中科技大学出版社
           
            这是一本百科全书式的C++标准库著作是一本需要一再查询的参考大全。
            它在完备性、细致性以及精确性方面都是无与伦比的。
           
        2.  《标准C++输入输出流与本地化》
            人民邮电出版社
           
            C++标准库由STL、流和本地化三部分构成。
            本书是流和本地化方面的专著。
           
        3.  《Effective STL(影印版)》
            中国电力出版社
           
            本书是使用STL的程序员的必读之作。
            讲述STL容器和算法的工作机制以及如何以最佳方式使用它们。
           
        4.  《Generic Programming and the STL Using the Extending the C++ Standard Template Library》
            (泛型编程与STL)
            中国电力出版社
           
    2.  网络编程
        1.  《C++ 网络编程 卷1:运用ACE和模式消除复杂性》
            华中科技大学出版社
           
            《C++ 网络编程 卷2:基于ACE和框架的系统化复用》
            电子工业出版社
           
            ACE是一个面向对象、跨平台、开放源码的网络编程框架。
            目标在于构建高性能网络应用和中间件。
            这两本书不仅讲述ACE的方方面面,还讲述模式和通用框架设计等高级技术。
           
        2.  杂项:
            1.  《C++ 编程思想(第二版)第一卷 标准C++导引》
                机械工业出版社
           
                《C++ 编程思想 (英文版第二版)》
                机械工业出版社
               
                这本书可读性超过TCPL和《C++ Primer》
                这本书反映C++标准化带来的影响,以及近几年面向对象领域中最新研究和实践成果。
               
                涉及输入输出流,多重继承,异常处理和运行时类型识别等高级主题。
               
            2.  《C++沉思录》
                人民邮电出版社
               
                这是一本关于C++编程思想和程序设计技术而非语言细节的著作。
                讲述在进行C++编程时应该怎样思考,应该如何表达解决方案。
               
            3.  《深度探索C++对象模型》
                华中科技大学出版社
               
                《深度探索C++对象模型》(影印版)
                中国电力出版社
               
                这本书探讨了大量的C++面向对象程序设计的底层运作机制,
                包括构造函数、函数临时对象、继承、虚拟、模板的实例化、异常处理、运行期类型识别等。
           
            4.  《设计模式:可复用面向对象软件的基础》
                机械工业出版社
               
                简称:GoF(Gang of Four)
                真正要理解设计模式,本书是权威。
               
            5.  《The C++ Standard:Incorporating Technical Corrigendum No.1》
           
                面向专家级程序员的书。
           

+-----------+
    程序员
  2004年4月
+-----------+
1.  《安装制作工具的选择和使用》    P112
    1.  Windows安装程序制作工具
        1.  InstallShield
            版本有:Professional、Developer、Express
            各个版本的区别是?
            InstallShield具有多个平台版本
            内置的InstallScript很强大
            梁海华的《InstallShield 6.X 安装程序设计与制作》
           
        2.  Wise Installer
       
        3.  Ghost Installer
       
        4.  Setup Factory
            Setup Factory v6.03 零售注册版
            http://soft.china95.com/soft/17.html
           
            使用下来感觉容易上手,非常方便。
       
        5.  SoftwareShield System
       
        6.  Astrum InstallWizard
       
        7.  DigitalWeb InstallWizard
       
        8.  Install Creator
       
        9.  Setup Builder
       
   
    2.  Linux安装程序制作工具
        1.  tar包
       
        2.  rpm包
       
        3.  dpkg包
       
    3.  Mac OS安装程序制作工具
        1.  Installer VISE
       
        2.  InstallAnyWhere
       
        3.  MacInstallerBuilder
       
    4.  Java程序安装制作工具
        1.  Jexpress
            使用较广泛的一个工具
           
        2.  install4j
       
        3.  lzPack Installer
       
        4.  Lift-Off Java-Installer
       
        5.  FiJI
       
        6.  VAInstall
       
        PS: 可惜,目前这些Java程序安装制作工具均不支持中文
   
    5.  完整的安装程序制作过程
        1.  制作安装程序
       
        2.  制成自解压包
       
        3.  制作AutoRun程序
            CDMenu Pro 一款专业制作自动运行光盘的工具
           
        4.  制成光盘发布
   
2.  《XML好书榜》   P118
    1.  XML原理和概论类书籍:
        1.  《XML手册(第四版)》 电子工业出版社
       
        2.  《XML高级编程(第2版)》  机械工业出版社
            下载地址:
            http://www.chinaz.com/download/s/1287.asp
           
        3.  《XML本质论》   中国电力出版社
       
        4.  《XSLT程序员参考手册(原书第二版)》  机械工业出版社
       
    2.  XML与JAVA语言类书籍:
        1.  《Java与XML》   中国电力出版社
       
        2.  《Java语言与XML处理教程:SAX,DOM,JDOM,JAXP与TrAX指南》  电子工业出版社
       
        3.  《Java、XML和Web服务宝典》  电子工业出版社
       
    3.  数据库应用与企业应用中的XML类书籍:
        1.  《SQL Server 2000 XML 高级编程》    中国电力出版社
       
        2.  《Oracle9iXML 网络数据库开发指南》  北京希望电子出版社
       


+-----------+
    程序员
  2004年5月
+-----------+
1.  《J2EE之“四书五经”》  P118
    掌握J2EE的两种入手方式:线程和设计模式
   
    1.  线程类书籍:
        1.  《Java线程编程》人民有点出版社
   
    2.  设计模式类书籍:
        1.  《设计模式:可复用面向对象软件的基础》
            偏重理论,且由于翻译的原因,所以比较难懂
           
        2.  《Java与模式》  阎宏
            从实例应用中了解设计模式的书
           
        3.  《Java实用系统开发指南》
       
    掌握EJB的两种入手方式:基本原理和如何应用
    1.  基本原理类书籍
        1.  《精通EJB(第二版)》
            对EJB的原理讲的很透彻
           
    2.  应用类书籍
        1.  《EJB设计模式》
           
           
        2.  《J2EE设计开发编程指南》
            一本从纯设计角度看待EJB/J2EE的书籍。
                   
       
    PS:对于线程的知识基本掌握以后,就可以开始学习设计模式方面的知识。
               
2.  《代码产生、产生式编程与MDA(上)》     P50
    1.  软件开发的复杂性:
        1.  根本复杂性(essential complexity)
            根本复杂性来自于软件本身
       
            必须依赖人的创造性思维或者主观能动性,无法由工具代劳获得的成果,则归入主动复杂性。
       
            系统软件和科学计算软件包含的多是根本复杂性
       
        2.  次要复杂性(accidental complexity)
            次要复杂性是由于语言或者工具的不完善给软件开发带来了麻烦。
           
            凡是可以由语言或者工具自动替我们办的事情,可归入次要复杂性。
           
            次要复杂性的两个来源:
            1.  缺乏语言或工具支持、或者语言或工具支持不佳
           
            2.  重复工作
           
            企业应用开发领域包含的根本复杂性较小,而次要复杂性较多,
            所以软件开发新技术都集中在企业应用程序的领域。
           
            面向对象技术减轻了次要复杂性
            Makefile、Ant简化了构建任务
            CVS简化了源码版本管理
            Refactoring简化了源码修改的操作
            GC简化了内存管理的次要复杂性
   
    2.  有助于解决次要复杂性的新技术新方法:
        1.  代码生成(Code Generation)
            避免重复
           
            DRY原则,Don't repeat Yourself
            意思是:系统中任何信息都应当只在一处指定,其它地方如果要用到该信息则应当从那一处获得。
            这样就解决了不一致性的问题。
            重复会使修改代码变的困难,降低代码质量
           
            Code Generator(包括C++的模板)带来的问题:
            1.  代码难读且难以调试。
           
            2.  Code Generator的输入未经生成是不可编译的,从而也不可在IDE中调试。
                解决方法:MDA,EMF
               
            Code Generator的理念:
            1.  消除重复。
           
            2.  让用户在更接近领域的层次上编码。                       
               
            编写generator之前要分析共性和差异性
           
            在项目中是否使用generator和使用的时机都很有讲究。
               
        2.  产生式编程(Generative Programming)
            Generative Programming是一种开发范型,不仅包含一系列工程方法,还包括相关的实现技术。
           
            强调区别对待组件的创造(领域工程)和组件的使用(应用工程),
            强调要进行共性分析和差异性分析,
            还有通过领域语言(DSL,即Domain Specific Language)来描述问题域,通过generator来自动把组件配置成系统。
           
            包括的实现技术有:
            1.  generic programming
           
            2.  C++的template meta-programming
           
            3.  AOP
                AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。
                AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,
                AOP可以说也是这种目标的一种实现。      
       
        3.  MDA(Model Driven Architecture)    模型驱动架构
            强调模型、变换、跨平台
           
    Q&A
    1.  3GL?
        第三代语言,增强性的高级程序设计语言
        科学计算:Fortran
        初学者:Basic
        商用:Cobol
        教学:Pascal
        专业人员使用:C/C++
        网络通用语言:Java
        逻辑处理语言:LISP
        坚固的计算机语言:Ada

       
        《第四代语言的发展简史》
        http://www.lnu.edu.cn/book/se/4thlanguage.html
   
    2.  EMF(Eclipse Modeling Framework)
       
        《用 Eclipse Modeling Framework 实现模型驱动开发,第 1 部分》      
        http://www-900.ibm.com/developerWorks/cn/linux/opensource/os-ecemf1/index.shtml
       
    3.  Doxygen
        Doxygen是一种适合C风格语言(如C++、C、IDL、Java甚至包括C#和PHP)的、开放源码的、基于命令行的文档产生器。
       
        《Doxygen:文档领域中的一阵清风》
        http://www.zdnet.com.cn/developer/rescnter/story/0,2000081634,39102552,00.htm
       
        Doxygen官方网站
        http://www.doxygen.org/
        http://www.stack.nl/~dimitri/doxygen/index.html
       
        Doxygen文档之一
        http://dev.csdn.net/develop/article/22/22900.shtm
        Doxygen文档之二
        http://dev.csdn.net/develop/article/22/22943.shtm
        Doxygen文档之三
        http://dev.csdn.net/develop/article/22/22944.shtm
        Doxygen文档之四
        http://dev.csdn.net/develop/article/22/22945.shtm
        Doxygen文档之五
        http://dev.csdn.net/develop/article/22/22946.shtm
        Doxygen文档之六
        http://dev.csdn.net/develop/article/22/22947.shtm
        Doxygen文档之七
        http://dev.csdn.net/develop/article/22/22978.shtm
        Doxygen文档之八
        http://dev.csdn.net/develop/article/22/22979.shtm
        Doxygen文档之九
        http://dev.csdn.net/develop/article/22/22980.shtm
       
       
    4.  framework,其实是一个半完成的模板应用程序。
       

+-----------+
    程序员
  2004年6月
+-----------+
1.  《UML之“四书五经”》   P122
    从实用出发挑选书籍
    1.  《UML精粹-标准对象建模语言简明指南(第2版)》清华大学出版社
   
        类似书:
        1.  《UML 用户指南》机械工业出版社。
            偏重理论,适合深入研究UML。
           
    2.  《UML:Java程序员指南》
        《敏捷软件开发:原则、模式与实践》的作者Robert C. Martin从实用角度写的一本关于UML的书。
           
    3.  《UML与Rational Rose 2002 从入门到精通》电子工业出版社
        用来学习Rose还不错
       
        类似书:
        1.  《Rational XDE从入门到精通》电子工业出版社
       
        2.  《VS.NET UML建模高级编程》清华大学出版社
       
    4.  《UML 和模式应用:面向对象分析与设计导论》机械工业出版社
        通过一个POS机的案例,介绍使用UML进行需求,分析,设计和实现的全过程,不依赖于特定的工具。
       
       
        类似书:
        1.  《面向对象软件开发教程(原书第2版)》机械工业出版社
       
        2.  《UML用例驱动对象建模:一种实践方法》清华大学出版社
       
    5.  《UML风格》清华大学出版社
        提醒读者在绘制UML图时需要注意的一些细节。
       
2.  《UML工具的选择》   P118
    从UML工具入手,学习使用UML进行建模
    1.  UML工具的特性
        1.  对其全部9种UML图的支持
            用例图
            静态视图:系统类图、对象图
            动态视图:序列图、活动图、状态图、协作图
            实现视图:组件图、部署图
           
        2.  正向工程
            由类生成框架代码的功能
            工具对特定语言的支持是相互独立的
           
        3.  逆向工程
            源代码->结构
           
        4.  双向工程
            同步模型与应用程序代码之间的变化。
            只有UML工具和IDE集成后才能双向工程这个特性中获得好处。
           
        5.  文档
            对设计加上注释
       
        6.  版本控制
           
        7.  协作建模环境
       
        8.  与流行集成开发环境(IDE)的集成
            这样UML工具能及时对IDE中代码的变化做出响应。
           
        9.  测试脚本生成
           
        10. 模型,视图,控制器(MVC)模式建模
       
    2.  流行UML工具
        1.  Rational Rose
            支持所有的UML特性
           
            对所有流行的JAVA IDE都提供了集成
                       
        2.  Together Control Center
       
        3.  Poseidon
            开源
       
    Q&A
    1.  各种工具对语言的支持如何?
       
    2.  Rose和together的区别?


+-----------+
    程序员
  2004年7月
+-----------+
1.  《美国之行感闻录》
    开源软件的真正优势也许并不在源码开放本身,但是开源带来了一个重要的产物:开放的标准.
    同一个开源软件产品会出现多个服务商,用户不必担心软件开发商自身的命运或对该产品的态度会影响自己的投资.
    避免MS对待HTML那样的情况发生.
   
    评:文中Eric提出的观点:开源带来了开放的标准,使我对开源存在的价值有了新的认识
   
2.  《从技术专家到项目经理》
    文中提到的几本书:《人月神话》、《最后期限》、《快速软件开发》、《IT项目管理》,(美)凯西.施娃尔贝著,王金玉等译
    《快速软件开发-有效控制和完成进度计划》(美)斯蒂夫.麦克康奈尔著 席相霖等译
   
    项目管理有9个领域:
    范围管理、质量管理、时间管理、成本管理、人力资源管理、风险管理、进度管理、沟通管理、采购管理、辅助功能。
   
    强调沟通中使用外交辞令的重要性。
   
    益处:
    从技术专家转型的项目经理
    1.  容易获得个人影响力
    2.  深知技术开发的特点,和团队成员沟通更顺畅,更容易建立一个士气高昂的团队。
    3.  技术功底可以帮助项目经理识别和处理项目中的技术相关的风险。
   
    阵痛:
    1.  唉,一天到晚都不知道自己在忙什么!--不习惯新的角色
    2.  真想自己去写代码!--不放心他人的工作
    3.  真怀念当程序员的日子!--怀念单纯的工作内容和持续的成就感
    4.  真想不干了,客户老找茬,团队成员厌倦了加班,进度总是延迟,领导也没好脸色--对责大权小的角色没有心理准备。
    5.  难道我说错了?--沟通技巧不够娴熟。
   
    评:我也面临这样的转变,作者在文中提到的风险、受益、阵痛,既使我增加了信心,也让我了解了面临的挑战,获益非浅。
   
3.  《来吧!移动开发》 
    1.  企业移动应用开发,最重要是要找准行业方向。
   
    2.  移动应用行业的发展分成三个阶段
        1.  克隆阶段,把传统应用往移动平台上搬
        2.  原创阶段,开发真正适合移动的应用
        3.  成熟阶段,标志是企业级应用的普及。

4.  《敏捷开发之“四书五经”》
    1.  面向项目经理

        据点书(教材)
        1.  《敏捷软件开发》,人民邮电出版社
            Alistair Cockburn, Agile Software Development
           
        补充阅读材料
        1.  Ken Schwaber,Agile Project Management with Scrum
       
        2.  《敏捷软件开发工具-精益开发方法》,清华大学出版社
            Mary Poppendieck、Tom Poppendieck,Lean Software Development:An Agile Toolkit for Software Development Managers
           
        3.  《人件》(第二版),清华大学出版社
            Peopleware:Productive Projects and Teams,2nd Ed
           
        4.  《自适应软件开发:一种管理复杂系统的协作模式》,清华大学出版社
            James A. Highsmith,Adaptive Software Development:a collaborative approach to managing complex
           
    2.  面向软件开发者
   
        据点书(教材)
        1.  《敏捷软件开发:原则、模式与实践》,清华大学出版社
            Robert Martin,Agile Software Development:Priciples,Patterns,and Practices
           
        补充阅读材料
        1.  《设计模式:可复用面向对象软件的基础》(影印版),机械工业出版社
            Design Patterns:Elements of Reusable Object-Oriented Software
           
        2.  《设计模式:可复用面向对象软件的基础》,机械工业出版社
       
        3.  《解析极限编程-拥抱变化》,人民邮电出版社
            Extreme Programming Explained:embrace change
           
        4.  《重构:改善既有代码的设计(影印版)》,中国电力出版社
            Refactoring:Improving the Design of Existing Code
       
        5.  《重构:改善既有代码的设计》,中国电力出版社
       
        6.  《测试驱动开发(影印版)》,中国电力出版社
            Test-driven development
           
        7.  《测试驱动开发(影印版)》,中国电力出版社
                   
    3.  面向顾问、讲师、研究者...
        1.  面向项目经理
   
        据点书(教材)
        1.  《敏捷软件开发》,人民邮电出版社
            Alistair Cockburn, Agile Software Development
           
        补充阅读材料
        1.  Ken Schwaber,Agile Project Management with Scrum
       
        2.  《敏捷软件开发工具-精益开发方法》,清华大学出版社
            Mary Poppendieck、Tom Poppendieck,Lean Software Development:An Agile Toolkit for Software Development Managers
           
        3.  《人件》(第二版),清华大学出版社
            Peopleware:Productive Projects and Teams,2nd Ed
           
        4.  《自适应软件开发:一种管理复杂系统的协作模式》,清华大学出版社
            James A. Highsmith,Adaptive Software Development:a collaborative approach to managing complex
           
    2.  面向软件开发者
   
        据点书(教材)
        1.  《敏捷软件开发:原则、模式与实践》,清华大学出版社
            Robert Martin,Agile Software Development:Priciples,Patterns,and Practices
           
        补充阅读材料
        1.  《设计模式:可复用面向对象软件的基础》(影印版),机械工业出版社
            Design Patterns:Elements of Reusable Object-Oriented Software
           
        2.  《设计模式:可复用面向对象软件的基础》,机械工业出版社
       
        3.  《解析极限编程-拥抱变化》,人民邮电出版社
            Extreme Programming Explained:embrace change
           
        4.  《重构:改善既有代码的设计(影印版)》,中国电力出版社
            Refactoring:Improving the Design of Existing Code
       
        5.  《重构:改善既有代码的设计》,中国电力出版社
       
        6.  《测试驱动开发(影印版)》,中国电力出版社
            Test-driven development
           
        7.  《测试驱动开发(影印版)》,中国电力出版社
                   
    3.  面向顾问、讲师、研究者...
        1.  《敏捷软件开发生态系统》,机械工业出版社
       
        2.  《平衡敏捷和纪律:复杂软件系统开发方法指南(影印版)》,中国电力出版社
       
       

    评:以不同读者、据点书、补充材料进行分类,把这些好书串起来并附上简明扼要的说明,很容易就能找到适合自己阅读的好书。
       
5.  《XDoclet:“懒惰者”的掌中利器》      
    代码生成方式主要有主动式和被动式两种类型。
    两者的区别在于代码生成在开发过程中所扮演的角色。
   
    XDoclet
    Lomboz
   
   
+-----------+
    程序员
  2004年8月
+-----------+
1.  泛型?
    泛型编程(Generic Programming)关注于产生通用的软件组件,
    让这些组件在不同的应用场合都能很容易地重用。
   
2.  VS2005 Team System MS终于也有了开发生命周期管理平台

3.  UML中类图,顺序图,用例图是使用的最多。对状态图比较关心。

4.  IBM提供的能够提高软件产品质量的自动软件质量ASQ(Automated Software Quality)工具集有:
    IBM Rational Functional Tester for Java and Web
    IBM Rational Robot
    IBM Rational Performance Tester
    IBM Rational Team Unifying Platform
    IBM Rational Purify Plus
    IBM Rational Rose XDE Developer Plus
    IBM Rational Test Realtime
   
5.  Eclipse Hyados 项目?
    Eclipse已经于2002年12 月启动了一项名为“Hyades”的开放源码软件质量评估框架。
    该框架为数据模式、数据收集及执行、用户界面等制定了标准规范。
    此次启动的“测试与性能工具平台”项目实际上是“Hyades”项目的进一步拓展。
    新增加的子项目主要包括:Hyades测试、Hyades追踪和Hyades监控。
   
    IBM的ASQ工具集能通过Hyades与Eclipse进行交互.
   
6.  完全自制LINUX
    1.  LFS?
        LINUX From Scratch
        不断更新的安装文档
       
        LFS就是一种从网上直接下载源码,从头编译LINUX的安装方式。
        它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),
        怎么把这些生东西( raw code) 作成符合自己口味的菜肴---个性化的linux,
        不单单是个性的桌面。
       
        全面支持中文LINUX FROM SCRATCH (LFS) 中文安装手册索引
        http://www.linuxsir.com/bbs/showthread.php?s=4a25218eed2a4c2fab6bcc21d78ee752&threadid=23312
       
    2.  GENTOO?
        Gentoo Linux 是套快速、现代的 Linux 发行版,拥有干净而弹性的设计 - 这表示,
        Gentoo 对 Slackware、 Linux From Scratch 或 BSD 使用者是很有吸引力的。
        不像其他的发行版,Gentoo 有个类似 BSD 的 ports 的套件管理系统,
        表示每个套件都持续的升级到最新版。
       
        Gentoo中文社区导航
        http://www.linuxsir.org/bbs/showthread.php?s=&threadid=121476
   

    3.  自行编译的好处
        1.  更多的了解LINUX
       
        2.  本机编译优化,大幅提升性能。
       
7.  《中国开源的冰与火》    P26
    1.  The world's largest Open Source software development website
        http://sourceforge.net/index.php
       
        主要开源项目
        1.  GNOME
       
        2.  Gentoo
       
        3.  Debian
       
        4.  Eclipse
       
        5.  CVS
       
        6.  Mozilla

    2.  Eric Steven Raymond 的 Intercal 编程语言,号称是super hacker使用的语言。
   
    3.  为了一睹Intercal的芳容,找到了下面这个壮观的页面,39种语言编写的Hello World程序。
        http://zh.wikipedia.org/wiki/Hello_World%E7%A8%8B%E5%BA%8F
       
        发现Intercal确实BT,根本不是人看的语言嘛,汇编看起来都比它亲切100倍。
        PLEASE DO ,1 <- #13
        DO ,1 SUB #1 <- #238
        DO ,1 SUB #2 <- #112
        DO ,1 SUB #3 <- #112
        DO ,1 SUB #4 <- #0
        DO ,1 SUB #5 <- #64
        DO ,1 SUB #6 <- #238
        DO ,1 SUB #7 <- #26
        DO ,1 SUB #8 <- #248
        DO ,1 SUB #9 <- #168
        DO ,1 SUB #10 <- #24
        DO ,1 SUB #11 <- #16
        DO ,1 SUB #12 <- #158
        DO ,1 SUB #13 <- #52
        PLEASE READ OUT ,1
        PLEASE GIVE UP
   
        下面这个页面是对Eric Steven Raymond的介绍:
        http://zh.wikipedia.org/wiki/%E5%9F%83%E9%87%8C%E5%85%8B%C2%B7%E6%96%AF%E8%92%82%E8%8A%AC%C2%B7%E9%9B%B7%E8%92%99
   
    4.  国内的几个开源项目:
        1.  SkyEye
            官方网站
            http://www.skyeye.org/
           
            SkyEye是一个开源软件(opensource software)项目,中文名字是“天目”。
            SkyEye的目标是在通用的Linux和Windows平台实现一个模拟集成开发环境,
            模拟基于ARM的嵌入式计算机系统;
            可在SkyEye上运行ARM Linux,uclinux以及uC/OS-II等多种嵌入式操作系统,
            并对它们进行源码级的分析和测试。
           
        2.  MiniGUI
            官方网站
            http://www.minigui.com/
           
            MiniGUI is a GPL'd free software project, led by Beijing Feynman Software Co., Ltd..
            It aims to provide a fast, stable, lightweight, and cross-platform Graphics User Interface support system,
            which is especially fit for real-time embedded systems based-on Linux/uClinux,
            eCos, uC/OS-II, and other traditional RTOSes, such as VxWorks.
       
        3.  SCIM
            官方网站
            http://freedesktop.org/~suzhe/index_cn.html
           
            SCIM 是智能通用输入法平台的简称。 SCIM 为输入法的开发提供一个统一的平台,
            使输入法本身的开发变得简单。 SCIM 的架构清晰,编程接口也非常简单。
       
        4.  Hopen
            官方网站
            http://www.hopen.com.cn/
           
            Hopen OS是凯思集团昊鹏公司自主研制开发的嵌入式操作系统,
            由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。
            其核心Hopen Kernel一般为20KB左右大小,占用空间小,并具有实时、多任务、
            多线程的系统特征。
       
    5.  开源与教育
        俞肇元
       
        开源教学
        http://www.oedu.org/       
   
    5.  从经济学的角度来看开源,全社会的各个组织之间,如果遵从同一个规则,所付出的成本是最经济的。
   
    6.  知识管理软件
        中国知识管理中心
        http://www.kmcenter.org/
       
    7.  商业智能软件
        中国商业智能网
        http://www.chinabi.net/
       
    8.  浮躁
        浮躁的表现形式就是没有听别人把话讲完就开始指责,然而多听五分钟就能发现是误解了别人的意思。
       
    9.  缺乏良好的商业发展模式,是制约开源运动发展的瓶颈。
   
    10. 开源与人才
        开源人才分社区型人才和产业型人才,即高端的开发人才和使用层面的人才。
       
        开源急需两类人:
        1.  运用开源技术的管理软件的开发者
        2.  开源教育的推广者
   
    11. 开源与政府
        1.  开源发展还是一个反学术垄断的过程,政府应扮演好制定游戏规则的角色。
   
        2.  我国的中文Linux标准
            Linux标准工作组
            http://cesi.linuxstandardsgroup.org/
           
        3.  政府在Linux上将转向支持基础的、开放的、公共的、服务的能力建设上,
            而不是光支持某些企业公司的发展,依靠他们来走这条路,避免垄断。
           
8.  《SourceForge最佳项目团队的成长:Audacity》 P40
    1.  Audacity官方网站
        http://audacity.sourceforge.net/
   
    2.  Audacity能够快平台所依赖的两个重要的库是wxwidgets和PortAudio
        wxWidgets 是一個超過十年的 Open Source 專案,主要是提供在開發跨平台的 GUI 程式時,
        類似 Visual C++ 的 MFC 那樣的一些常用元件。
        如果您要開發跨平台的程式時它是很不錯的選擇。
        http://tavi.debian.org.tw/index.php?page=wxWindows
       
        wxWidgets官方网站
        http://www.wxwidgets.org/
       
        PortAudio
        portable cross-platform Audio API
        PortAudio is a free, cross platform, open-source, audio I/O library
        官方网站
        http://www.portaudio.com/
       
    3.  Audacity的成功因素
        1.  跨平台
        2.  易于使用的界面
        3.  得体的文档
        4.  可爱的邮件列表,提供用户快速支持

9.  《如何使用google解决问题》  P56
    1.  两个关键点:选择关键字和分析过滤信息
   
    2.  在关键字前后加上双引号,就是告诉google严格匹配该关键字。
       
    3.  解决问题的两个步骤:
        1.  要有背景知识
       
        2.  发挥想像力,将看似无关的细节结合起来,提炼出关键字。
       
    4.  多角度收集资料,最好是互相冲突的资料
   
    5.  对新技术的洞察力和行动力是技术人员的重要技能。
   
    6.  搜索术语
        1.  搜索修养:快速过滤无用信息,定位有用信息的方法
       
        2.  深度搜索:对搜索结果进行人工分析后再搜索,并多次循环这个过程。
       
    7.  《The Elements of Style》
        在线版:http://www.bartleby.com/141/
        电子书:http://www.mba8.net/yf/Elements.rar
       
10. 《疯狂的火星虫》 P90
    1.  作者网站   
        http://www.contextfree.net/wangyw/source/oofsm.html#download
       
11. 《工具介绍:Thinstall》 P129
    1.  官方网站
        http://thinstall.com/
       
    2.  安装.NET Framework会修改注册表,所以需要有足够的权限才能安装。
   
    3.  Thinstall可以挑出.NET Framework中被用到的部分和程序一起打包。
   
    4.  Thinstall的Virtual OS将Real OS与.NET EXE和.NET Framework隔开的做法会不会影响到程序的执行效率?
   
12. 《厚积薄发固若金汤-写在《软件加密技术内幕》出版之前》    P126
    1.  看雪学院官方网站
        http://www.pediy.com/
   
    2.  看雪学院论坛网站
        http://bbs.pediy.com/
       
    3.  姊妹篇《加密与解密》(第二版)
   
13. 《揭开UML美丽的面纱-实话实说《UML:Java程序员指南》》  P128
    1.  英文原版电子书下载:
        http://hnwhb.go.nease.net/Prentice Hall - UML for Java Programmers.rar
       
    2.  部分翻译的中文版电子书下载
        http://uml4java.go.nease.net/UML4java_cn_0.8.rar
       
        相关网站
        http://uml4java.go.nease.net/
   
    3.  美的系统是灵活的、易于理解的,构建、维护他们都是一种快乐。
   
    4.  UML的图越多,变化所导致的修改量就越大。所以用UML对系统的高层抽象进行粗略地描述就行。
        不过,引入了自动化工具之后,这种状况是否会有所改变?
       
14. 《实用主义程序员访谈录》    P36
    1.  Spring?
        Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃;
        它是一个基于IoC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,
        因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,
        对不同的数据访问技术提供了统一的 接口,采用IoC使得可以很容易的实现bean的装配,
        提供了简洁的AOP并据此实现Transcation Managment,等等......
       
        Spring官方网站
        http://www.springframework.org/
       
        简单说说SpringFramework
        http://blog.csdn.net/ylong/archive/2004/07/23/49697.aspx
       
        我眼中的Spring
        http://www.blogbus.com/blogbus/blog/diary.php?diaryid=125334

   
    2.  Hibernate?
        Hibernate是一个开放源代码的O/R Mapping (对象关系映射框架),
        它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的
        使用对象编程思维来操纵数据库。
       
        Hibernate官方网站
        http://www.hibernate.org/
       
        Hibernate中文网
        http://www.hibernate.org.cn/
   
    3.  一门编程语言
        1.  如何算动态?
            能够在运行时改变程序结构或变量类型的语言称为动态语言。
       
        2.  如何算静态?
       
        3.  动态语言的好处:
            能用代码把意思表达的更加接近实际问题,工作就会更加高效,代码也就更容易维护和扩展。
           
    4.  让可以并且应该自动的一切都自动起来
   
    5.  Daily Build
        产品质量的基石——微软Bug管理
        http://www.csdn.net/news/newstopic/8/8472.shtml
       
        一个关注Daily Build的Blog
        http://www.dayuer.com/dayuer/category/370.aspx
       
    6.  《The Pragmatic Programmer》
        中文名:《程序员修炼之道》
       
        1.  英文版电子书下载地址
            http://www.matrix.org.cn/down_view.asp?id=536
           
    7.  为了使组织能接受变革,必须向组织讲价值和风险的故事
        讲如何灵活处理可以降低风险。
        讲轻量级的方法如何能更快的获取价值。