Thursday, February 15, 2007

try / catch issue.

I have seen that you are sometimes using try blocks with empty catch() handlers.

Please don’t do it like this.

In last years we have also done it like that, but ‘hiding the symptoms is not the cure to the disease’

In any case, if something goes wrong, use the trace facilities in application to log something to the errlog.

And additionally you can use ASSERT(FALSE) statements to force a break into the debugger in debug builds.

 

Or you can leave the try catch altogether. The user then will get a crash dump he can send to us for further analysis.

 

Sunday, February 11, 2007

Software development

Team Members

Role

Name

Contact Info.

Product Manager


 


 

Product Marketing

  

Product Design(PD)


 


 

Project Management(PM)


 


SWD Developer


 


 

SWD Manager


 


 

Test Engineer(QA)


 


 

Test Engineering Manager

  

Usability Engineer

  

DSS Engineer


 


 

Localization

  

Customer Support

  

B&I

  


 


 

Globalization and Localization.

Documentation.

Trademark and Credits.

Product name.

Building and Installation. (B&I)


 

Platform

DataBase

Performance


 


 

Project Status

Spec Status

Weekly Meeting

Weekly Report


 

Milestone


 


 


Milestone

Date

Concept Complete

 

Product Contract

 

Spec Freeze

 

Code Complete

 

Feature Complete

 

Installer Complete

 

Beta Release; Gunslinger

 

Message Freeze

 

SCO Freeze

 

ECO Freeze

 

Hard CCB(
(ß-Release)

 

Stopship CCB

 

ß-Testing with Selected Customers to Start

 

RTM

 

FCS

 


 


 

Personal Skills Tool

For Reference: Personal Skills Tool

This table provides a selection of personal skills to choose from in the Personal Skills section of the Self Review and Development Plan.


 


 

Results focus & output 

Meets commitments, deadlines and goals through job knowledge and application of skills. Focus on bottom-line results and proper planning. Can complete complex tasks and succeed.

Analytical problem solving 

Identifies problem situations in an appropriate time frame. Resourceful in gathering information to quickly analyze and resolve issues.

Creativity 

Seeks different perspectives when solving problems. Brings new solutions and ideas that have a constructive impact on the work environment. Inspires others to see problems from different angles.

Quality 

Accuracy, thoroughness, attention to detail. 

Cooperation 

Cooperates with his/her team and other employees in the organization. Can understand other perspectives and act upon mutual goals.

Communication 

Clear, concise and meaningful written and verbal communication skills. Uses appropriate communication vehicles to keep others informed. Effective listening and comprehension skills, perceptive questioning techniques. Refers also to communication skills with customers (internal or external).

Influencing others

Works cooperatively in group situations. Assists in diffusing issues. Good mediation skills. 

Planning ahead & dependability

Work prioritized and organized well. Sets measurable, realistic, well planned goals. Able to follow up and close action items independently.

Flexibility  

Adapts easily to changes in job or work environment. Deals with competing demands in an appropriate manner. Handles conflicting situations professionally.

Technical competence

Expert in his/her work, facilitates and coaches other employees, is well appreciated by others for his/her professional knowledge – a center of technological knowledge.

Time management 

Able to organize own time on daily basis, prioritize tasks by identifying tasks of secondary importance and concentrate on high-priority tasks.

  

Applicable to manager level only 

Performance management skills  

Addresses performance issues in timely manner. Provides employee feedback on regular basis to ensure alignment with established goals and objectives. Delegates responsibility appropriately. Plans the work and effectively solves problems accordingly. Facilitates the work of others by coaching, providing direction and exercising positive control when needed.

Leadership skills  

Able to influence others in support of work to be completed. Has established and maintains good working relationships with staff and peer group.

Identification with company

Aligned with company needs/policy and represents the company to his/her team or department.

Sunday, February 4, 2007

Software Engineering

Team Members

Role

Name

Contact Info.

Product Manager


 


 

Product Marketing

  

Product Design(PD)


 


 

Project Management(PM)


 


SWD Developer


 


 

SWD Manager


 


 

Test Engineer(QA)


 


 

Test Engineering Manager

  

Usability Engineer

  

DSS Engineer


 


 

Localization

  

Customer Support

  

B&I

  


 


 

Globalization and Localization.

Documentation.

Trademark and Credits.

Product name.

Building and Installation. (B&I)


 

Platform

DataBase

Performance


 


 

Project Status

Spec Status

Weekly Meeting

Weekly Report


 

Milestone


 


 


Milestone

Date

Concept Complete

 

Product Contract

 

Spec Freeze

 

Code Complete

 

Feature Complete

 

Installer Complete

 

Beta Release; Gunslinger

 

Message Freeze

 

SCO Freeze

 

ECO Freeze

 

Hard CCB(
(ß-Release)

 

Stopship CCB

 

ß-Testing with Selected Customers to Start

 

RTM

 

FCS

 


 


 

Friday, February 2, 2007

Software

Team Members

Role

Name 

Contact Info. 

Product Marketing 


 


 

Product Design 


 


 

Project Management 


 


SWD Development


 


 

SWD Management 


 


 

Test Engineer 


 


 

Test Engineering Manager 

  

Usability Engineer 

  

DSS Engineer 


 


 

B&I

  

优秀团队的组成及素质


优秀团队领导的四项素质:



  • 不错的技术才能;

  • 较强的管理能力;

  • 丰富的产品开发经验;

  • 敏锐的商业头脑。


核心成员的基本素质:



  • 才能,

  • 责任心,

  • 忠诚度。


普通成员的主要指标:



  • 技能合格

  • 安分守纪

  • 任劳任怨



Thursday, February 1, 2007

Deal with Link2019 error.

出现link2019时可能的两种解决方法:

1. 可能是工程中缺少某个cpp文件。

   方法: add 某个.h/.cpp文件。

2.设置 treat wchar_t as build-in Type yes.

   方法:project property->C/C++->Language->Treat wchar_t as build-in Type 设置为yes.

   VC7.1中此选项默认为no,vc8默认为yes.

 

Design Pattern--- OO Design, Principle and Pattern

这里先将平时看书时记下的一些OO设计的原理,规则等整理了一下,罗列出来:

 

OO Basic
    Abstraction
    Encapsulation
    Inheritance
    Polymorphism

OO Objective
    Reusable
    Extensible
    Maintainable

OO Bad Smells
    Fragility
    Rigidity
    Immobility
    Viscosity

OO Principles
    SRP -- The Single Responsibility Principle.
         A class should have only one reason to change.
   
OCP -- The Open Closed Principle.
         Software entity should only be open for extension but
         closed for modification.
   
LSP -- The Liskov Substitution Principle. 
         Subclasses should be substitutable for their base classes.
   
DIP -- The Dependency Inversion Principle. 
         Depend upon Abstractions. Do not depend upon
         concretions.
    
ISP -- The Interface Segregation Principle.
         Many client specific interfaces are better than one 
         general purpose interface
   
LoD -- The Law of Demeter
         Any object receiving a message in a given method must
         be one of a restricted set of objects.
   
CARP:

 

OO Rules
    Rule1: Design to interfaces not implementation
    Rule2: Favor composition over inheritance
    Rule3: Encapsulate what varies
    Rule4: Only tall to your friends
    Rule5: Don't call us, we'll call you
    Rule6: Depends on Abstraction not concrete class
    Rule7: A Class should have only one reason to change
    Rule8: Strive for loosely coupled designs between objects
              that interact
    Rule9: Strive for high cohesion
    Rule10: Decoupling a problem domain into responsibility

 

Principles of Package Architecture
REP-- The Reuse Release Equivalency Principle.
The granule of reuse is the granule of release.
CCP-- The Common Closure Principle Principle.
Classes that change together, belong together.
CRP-- The Common Reuse Principle.
Classes that aren't reused together should not be grouped together.
ADP-- The Acyclic Dependencies Principle.
   The dependencies betwen packages must not form cycles.
SDP-- The Stable Dependencies Principle.
Depend in the direction of stability.
SAP-- The Stable Abstractions Principle.
Stable packages should be abstract packages.

 

(To be continue…)

Design Pattern---Preface

一直以来都想写一点东西,但是项目一忙起来就没有时间了,这个想法也一直的往后拖。每天面对的都是一堆又一堆的bug,埋头于大量的,琐碎的code之中感觉总也fix不完。每天好像都很忙,几乎没有时间静下来好好的思考,总结一下。偶尔问问自己我究竟在忙什么?学到了什么?又提升了多少?回答似乎有些苍白。
   
项目终于release了,终于有了一段奢侈的大块的时间来好好反思一下了,也算是对自己工作一年来的一点点总结。COMPASS 代码看了也将近一年了,还是感觉很陌生,对她的了解还是无法上升到设计,架构的层面。这样复杂而又灵活的的一个系统,当初如果没有一个宏观的而又思维严密的架构设计是不可能走到今天的。可以说,COMPASS的精髓我们还没有体会到。
  
考虑到以前学习模式时一直苦于没有很多的经验,看的多半是一些toy code, 而模式作为一个开发人员应具备的最基本的素质之一,对其理解没有一定的实际的经验是很难的。好在COMPASS中使用了很多的模式,而且一般也不是简单的套用GoF中的经典模式,而是有所超越,这是学习模式很好的实例。这里先给出已经看出来的一些模式列表,后面再一一说明。当然,COMPASS中的模式肯定不是只有这么一点,还需要不断的学习,发掘

 

Pattern list of COMPASS:

1. Design Pattern in Compass ---Preface

2. Design Pattern in Compass ---OO Principle, Pattern and Design.
  
3. Design Pattern in Compass ---Evolution of Simple Factory, Factory Method and Abstract Simple Factory
   Factory Method
   Abstract Factory

 

4. Design Pattern in Compass ---Factory
   CModuleFactory
   CModuleContainerFacory
   CDBObjDef
   CChild


5. Design Pattern in Compass ---Singleton
    CConnectionFactory
    CConnectionList
    CTempFileNaneFile
    CUlmConfig
    CDesigner

 

6. Design Pattern in Compass ---Builder
   Menu
   ToolBar

 

7. Design Pattern in Compass ---Command
   CPublicFuncCMP
   CSubstFunc
   CIntervalTask
   CADOCommand

 

8. Design Pattern in Compass---Proxy
   CMultiFomatProxy
   CDataBaseAccessItem

 

9. Design Pattern in Compass---Composite
    CDBObjDef
    UI


10. Design Pattern in Compass---Mediator
    CEditKernel

 

11. Design Pattern in Compass---Observer
     Add-In

 

12. Design Pattern in Compass--- Strategy

13. Design Pattern in Compass--- Template Method

14. Design Pattern in Compass---Iterator

15. Design Pattern in Compass---Façade
     CObjectModel

 

16. Design Pattern in Compass---Iterpreter

17. Design Pattern in Compass--- Chain of Responsibility

18. Design Pattern in Compass--- Flyweight
    Folder_*
     Env


19.  … …

 

模式的学习过程


孔子有曰:吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲不逾矩。
  ―――
《论语为政》
孔子自言进道顺序的这段话,道出了他在不同的生命阶段不同的人生体验,然而异中有同,对于模式的学习我们同样也有这样的过程

[十五志于学]:没有太多实践项目的经验,OO的思想也是处于混沌状 态,对模式的了解只是听说过这个词而已,写出的代码也只是局限于能实现功能。面对不断变化的需求,看着支离破碎的代码,欲哭无泪。。。这时,该学学模式了。
[
三十而立]  背熟了经典的23种模式,但也多半只是理论上的理解。能很快的识出别人用了哪些模式,看上去都很美,因此也急于在实践中运用,恨不得写一个hello world都要用上七八中模式。在设计却又困惑于不知道怎么运用模式,何时该用何种模式,何时又不该用。
[
四十而不惑]:有了大量的实践经验,对模式的理解更加深刻了,能熟练的使用各种模式,重要的是理解了模式与模式之间的联系,能综合的运用模式了,但还不能算是有效的运用,设计中容易出现over-design的情况。
[
五十知天命]:终于悟出了OO的真谛,能从OO Design Principle的角度看待各种模式,对模式的使用也趋于理性而娴熟。
[
六十而耳顺,七十而从心所欲不逾矩]:一个优秀的架构师诞生了。。

 

关于pattern的书:
自从95GOF写出模式的经典之作后,市面上各种关于模式的书都接踵而出,网上关于模式的文章也多于牛毛。下面仅列出我看过的几本,网上对于它们的书评都很多,这里我也仅说一点自己的看法,他们都有自己的特点,各有侧重点。当然还有很多很好的,但没看过就不敢乱发一言了。
Design Pattern s:Elements of Reusable Object-Oriented Software   
经典!优点就不多说了,就是过于简洁了一些,初学不太好懂。不过或许正是应为这种简洁才使它成为了经典。罗素曾经说过:"我的雄心壮志是用十句话说出别人用一整本书说的话,说出别人用一整本书没说出来的话。"作者只用了23个词总结了23种常用而又有效的模式,后面很多人写的关于模式的书多半都使对其进一步的解释而已

Design Patterns Explained   
浅显易懂,入门级别的。
Java
与模式    
中国人写的,符合中国人的语言习惯,比较容易懂,也是入门级的,一千多页的砖头,一两天就可看完了,能很快的对各种模式很快就有个大致的印象。
Refactoring to Patterns  
Refactorying 的角度阐述如何一步一步将模式重构出来,看完后就有体会:噢,原来模式是这样被搞出来的

http://projectserver/sites/MSD_DM/CompassPreview/Lists/Tech%20Discussion/DispForm.aspx?ID=23&Source=http%3A%2F%2Fprojectserver%2Fsites%2FMSD%5FDM%2FCompassPreview%2FLists%2FTech%2520Discussion%2FAllItems%2Easpx
Agile Software Development: Principle,Patterns, and Practices     
侧重于从OO principle 的角度讲解各种模式。
Modern C++ Design 
template
与模式的完美结合。属于高级篇了,买来半年多了尝试看了三次都夭折了。
Applying UML and Patterns  
侧重于OO分析与设计中运用UMLPattern.
.NET Patterns:Architecture, Design, and Process
介绍.net平台下开发的一些新的模式,基本上与GOF的模式不同了,很多模式的思想还是挺开眼界的。
Core J2EE Patterns: Best Practices and Design Strategies 
Java
企业应用级的模式,架构师之路上必修课之一。不过一直都没时间看

 

Bought two books last Sunday.

It is so boring to stay at home days and days. So last Sunday my girlfriend and I decided go out for a walk. Pudong new area was our destination because we haven't been there for a long time.

After arrived at Lujiazui, we found that it is cold outside. So we went to Zhenda square, which is the largest shopping mall in Asia, to hunt for some funny things. We went to Jifeng book store to have a rest.

Every time stand at the door of book store, I told myself that not buy any book, just have a look is enough. But I seldom keep my tongue. Book store is a magic place that most of the time when I left it there would be some books on my hands.

This time I bought two. One is Practical English-Chinese Translation. The other is Principle of Economics by N.Gregory Mankiw.

Some thought about report, feedback and leadership.

Cool! This blog is posted with Word2007 directlyJ

一会要写的东西还有点多就用中文把。


 

昨天没有mail给德国的Lead汇报工作情况。主要是手上几个office的bug太棘手了,都研究了好几天了,还找不到解决方案,就不想写了。在微软的newsgroup里也发帖 提问了,

要不就没人答,回答了的也没有真正解决问题。前段时间被打击了,问题解决不了开始怀疑自己的troubleshooting 能力是不是有问题,连微软的word MVP 都说解决不了我的那个

Word开发的问题,就不用给自己太大压力了:)


 

本来早上醒来的时候躺在床上还想着到公司后把所有的情况都汇总起来给美国和德国的Lead说一下的,后来到公司后又想着明天就周五了,到时一起汇报算了。结果到下午快四点的

时候德国那边终于耐不住了,mail过来问我有没有什么news。一收到mail就赶紧把team现在正在研究的bugs和每个bug我们我们所掌握的情况都汇报过去。

Lead 主动mail过来问我项目进度情况,这已经是第二次了,说明自己主动汇报积极回馈的工作还没有做好.


 

还有,过去的一两个星期项目进展实在是太缓慢了,明显感觉自己在公司的情绪不太好了,语气中有些焦急。在项目开发过程中,tech lead应该真正起到leader的作用。

什么是Leadership? 起码有一点就是在遇到挫折的时候,能以乐观的心态调节team的情绪,带领团队一起前进,找到解决问题的方法。而不是自己先就情绪不正常了,发点脾气什么的,污染了整个团队的氛围。

虽然这是一种理想的情况,还是 努力把:)


 


 

test image

some words



gfgdhdgfggd



test



picture.





another pic: