Jul 5, 2009

快乐SAS

3月30开始了在ebay的实习,之后一直纠缠在考试论文和实习中,博客也从此凉在了一边。据说四个月能养成一个好习惯,以后每周两篇日志将成为我的日常任务。

这两周考试基本搞定,一下子轻松了好多。除了学校施工的噪音和常有的一点点困惑,木得连烦心事都没有。开开心心得写程序学统计。地铁里见人玩俄罗斯方块,想想现在这生活也是差不多。不断有各种各样的task下来等着你处理,学习、生活、工作、爱情、未来。要顺顺利利地把它们搁到合适的地方。只要心不乱,并没有什么难的。

周末还是在图书馆过,暑期依然坐满了人。明天又是周一,继续学习、工作,平静而踏实的生活。还是会把大部分时间放在SAS上,技术上争取有个好的基础吧~读研已经一年,有那么点紧迫感。ebay给我最大的福利就是身边那些pro,热爱生活,乐于助人的同事。感谢他们并向他们学习。

下面这篇文章蛮经典,被引用了好多次,大致可以看出哪些是SAS的基本功。其中我学的不好的地方也就是这个假期的努力方向。但SAS毕竟是个分析软件,统计思维远比技术重要。下面的文章只是focus on SAS base, but if you can't know well about the tools, you can't do analysis well.



10 Things Experienced SAS® Programmers Don’t Know – But Should

Doug Zirbel, Pinnacle Solutions Inc., Indianapolis, IN



1. Macros - basic knowledge of macro language (Score=63/180)


Learning help:


 “SAS manuals 'SAS Macro Language' and 'SAS Guide to Macro Processing' are the best. You will gain a lot with


playing examples in both books.”;


  “'The Little SAS Book, A Primer', 2nd edition.”


 "Carpenter's Complete Guide to the SAS Macro Language”


2. Data step - basic knowledge of (60)


The Secret Life of the Data Step, by Thomas Miron (SUGI21-26)


3. Data file manipulation - INFILE, UPDATE, SET intricacies etc


4. ODS - capabilities and more broadly, SAS8 improvements (53)


5. Efficiency (49)

 PDV width may be more significant than number of rows  Sorting by
character variables is more efficient than sorting by numeric variables


In terms of programming time, you’ll save a lot by getting rid of the warning messages up front


6. Data Step Vector - how it works (47)


The Secret Life of the Data Step, by Thomas Miron(SUGI21-26)


7. Macros - knowing how to write macros that write SAS programs (46)


8. System Development Life Cycle processes (44)


Code Complete by Steve McConnell


9. SAS Help - How to get it (40)


SAS Tech Support http://www.sas.com/service/index.html


SAS Tech Support (919) 877-8008 (be sure to have your site number)


WWW newsgroup comp.soft-sys.sas


http://groups.google.com using Advanced Group Search


with comp.soft-sys.sas as the Group (contains archives of


the newsgroup discussions)


SAS8 Help CD


10. Proc Report (34)


11. SQL Dictionary tables - basics of retrieving SAS metadata(31)


Data About Data: An Introduction To Dictionary Tables by Dilorio and Michal, SUGI21-32


12. Proc Summary/Means (28)


13. Debugging Techniques - DEBUG facility and other techniques(27)


14. Proc SQL (27)


15. Structured programming concepts (24)


16. Proc Format (18)


17. Relational Database Design (18)


18. Web technology - HTML, JavaScript, SAS IntrNet, etc (17)


19. Your Operating System native (and other) languages - REXX, unix scripts, VBScript, Syncsort (17)


20. Proc Transpose (16)


21. Data step reports - "Data _null_" report writing (14)


22. SCL - SCL Functions usable in e.g., Base SAS data steps(14)


SCL for the Rest of Us: Nonvisual Uses of Screen Control Language by Michael L. Davis

Feb 22, 2009

简单

本想在图书馆看一天书,结果上午看了本《缓解压力》;中午又回宿舍睡了会觉,上网订了泳帽泳镜和羽毛球拍;下午看了前车约翰的《简单法则》;晚上翻了5期的《三联生活周刊》。一天下来,真正看教科书的时间加加起来才三个多钟。

《缓解压力60法》:多吃不同颜色的水果,有规律锻炼,游泳,多吃富含维生素B的食品,及时补充镁和铁。

《简单法则》:1.减少 reduce 2. 组织 organize 3. 时间 time 4. 学习 learn 5. 差异 difference 6. 背景 context 7. 感情 emotion 8. 信任 trust 9. 失败 failure 10. 单一 the one。

KFC原则-- K:Know what you what. F: Find out how to get it. C: Change the way until you get what you want.

简单-->复杂-->极简(朦胧)

Feb 8, 2009

山寨了张证件照

显得比较无聊,山寨了张证件照。长得一般,精挑细选才找出了看着还算将就的。整整捣鼓了两个钟。发现比较自然的姿势是身体偏右15度,目视前方。

下午看“感动中国”,也的确很让人感动。在感动的同时,也有很多感慨,有些感动的事还是不要发生的好。一个个平凡又不简单的人,有些靠的是瞬间的风采,然而更多的是靠时间铸就了丰碑。看着他们的经历,我感到自己很幸运,也很渺小。

“工作是人的天职”,人需要一个终极的目标,这也许真要在宗教中才能寻找得到。如果做每件事都能怀着宗教的虔诚,把工作真正当成了为上帝创造荣耀的过程,相信心灵能少些浮躁,多些归属。

Feb 5, 2009

OK,原型搞定~

从上月19号开工到现在,除去休息、跑亲戚、聚会的时间,其他时间都花在搞这个网站上。现在原型基本出来了,有些细节开学前每天花一定时间处理下应该就可以了。发现我依然是个优秀的美工,可写程序上除了精力充沛外基本没啥天分。犯了很多苦笑不得的错误。开发的一半时间在找自己整出的Bug,其他时间在不断地试着不同的解决方案。从Java整到了PHP;确定用PHP了吧,又换了两次IDE,从Eclipse到PhpED再到Netbeans。到开发临近完成,又开始了和图标、CSS之类的搏命。。。折腾。

Wordpress真是赞,如果不考虑性能方面的因素,基本可以满足一般网站的所有要求。丰富而清晰的权限设置;灵活的模板机制;丰富的插件主题资源;广大的用户群。。。这些都是其他的一些架构所难以比拟的。这次我的开发不过是对后台进行了一定剪裁,添加了一些功能;对模板进行了一定的修改;运用插件增添了一些功能。不过也有麻烦的地方,AJAX看着有点难懂;有些代码缺少注释;代码风格不大统一;有些设计过于优雅难以理解。。等等。也许是我PHP值太低的原因吧~

插件方面使用了GD Star Rating, Role-manager, WP-Pagenavi, WP-postviews, Search Everything;添了些花哨的功能,也省了不少的事情。模板是在Simple-X的基础上修改的,不过和重写基本没啥差别了。

Jan 30, 2009

初五

半个假期过去了,转眼已是初五。从乐观到悲观,渐而急躁,金融学院工作论文网站这个项目进行得并不顺利,WordPress用到了一些对我而言比较新的东西。大部分的时间不是用在coding上,而是在学着杂七杂八的东西;PHP、AJAX、jQuery,一本本地翻着手册。有时国内时候,思路老是被杂七杂八的事儿打断,写了备忘录还是忘个精光,有点少年痴呆症的嫌疑。过年打打升级、看着牌都头疼,比较失败。


也许我又接了个不该接的项目,计划又被打乱。不过既然接了下来,也就没后路了;虽没有什么制约,可不搞定不光丢了我的面子,也丢了朋友的面子,只能多喝点咖啡少睡点觉了。十六号开始上课,计划过完正月十五回校,还有十天,只有十天。

Jan 24, 2009

生日

今天是小年夜,也是我的生日。转眼已过去了24年,时间越过越快。试着看下电影,可没啥心情,看着长长的TodoList,呵呵,还是一件件事做吧。

昨天上午高中同学聚会,中午庆祝爷爷的生日,下午陪妹妹看了一下午日剧,晚上一直在读WordPress的文档。现在每天都又Google的Calendar记录自己做了什么,几点起床,看了什么电影,见了什么人,读了什么书。也许真是年龄大了,想在贫乏的生活中记录些什么吧。

WordPress的文档其实写的不错,就是组织得有点让我不习惯,同一篇文章会在多个系列或者多个分类中出现;不过Developer_Document组织得不错;还发现一个叫phpxref的网站,对几个流行的php源码提供了交叉索引,弥补了一些IDE的不足。PhpED也提供了不错的代码导航功能,可和一般IDE对Java的支持相比,还是有一些不便。

Chrome的profile功能很赞,等于提供了多个浏览器环境,可以在同一个站点可以用不同的帐号登录;可以在不同的profile中打开不同的一系列默认页面。这个功能不论是在日常使用还是在网页调试的时候都是很有用的。比如可以用一个profile用于默认网页浏览;另一个用于使用Google的产品;再加一个用于网页的开发测试。靠一些灵巧的小功能提供出色的用户体验,这也就是Google吧。

Jan 22, 2009

Php开发环境

最近要写PHP,先是试了Dreamweaver,毕竟只是个网页设计软件,对编程的支持实在是比较有限。接着又试了PHPEclipse,不大稳定,而且搜索功能比较弱,不能和Eclipse下的JDT相比,这样读代码会很不方便。接着下了PhpED,满意,特别是看文档很方便,而且集成了很多方便的工具,而且还带有PHP的调试器。Seven great PHP IDEs compared dw上的一篇文章对七个著名的PHP IDE进行了比较。

PhpED自带了叫SVR的WEB服务器,如果要使用Apache作为服务器,需要将默认运行模式设成HTTP mod,然后在项目属性中设置好网络地址和server端的目录即可。软件自带的帮助文档中有详细的介绍。测试服务器的架设使用了xampp,集成了Apache, mysql, PHP, FileZilla FTP和Mercury Mail,解压就行,不用安装配置。

这两天磕着瓜子看PHP手册,比较无趣。小牛和Frienky大二那会就在写PHP了吧,我那会PHP看是看了些,只是没自己写过,后来就Java了。现在呢?我也不知道我在干啥~~管他呢,写代码。

Jan 19, 2009

开源CMS的选择

最近可能要做一个文件的上传及发布系统,现在处于初步的分析阶段,我也不清楚到底在哪个平台上进行开发,但要肯定是不可能重新写。一来没有多少时间,最后开发可能只有半个多月的时间;二来没有技术上的特别要求,这么着我自然会选一个最方便的开发方法。网页的需求简单地说就是论文的提交、审核、网页及邮件发布,如果采用过于复杂的方案,有杀鸡用牛刀的嫌疑。
首先的设想是在一个CMS或者DMS系统的基础上进行修改。

首先要确定一个开发的基础,第一个想到的是看下有没有Java平台的软件。Java平台下比较著名的开源CMS系统有openCMS、InfoGlue和Magnolia,(详见java-source的论述)都是40余M的大小,有些文档都要收费,在短时间内了解其操作并在其基础上建站有些不大可能。其中openCMS有中文网站http://www.opencms.cn/,从中了解到国内还是有一些团队以openCMS为基础开发商用软件的,有人说openCMS一般适用于日访问量达150,000页面的网站,想必其它两个体积相似的东东也差不多,我因此放弃了这方面的寻找。

接着我看到了plone的介绍,一个基于zope的用python写的CMS系统,http://plone.org/是其官方网站,安装包里包含了python、zope,像应用程序一样安装。网站上还有几段很有意思的视频可以看看。试用下来认为这绝对是个出色的CMS系统,简洁而强大。但仍然不符合我的需求。在网站上还看到了一句话"Java is the COBOL in 21st "。

想到了PHP,在下面的网站上有php主流cms系统测评http://www.php-cms.cn。然后听人说WordPress是个不错的选择。想想这也许是个最简洁的方案了,WordPress众多的插件和方便的扩展机制也许真大大减少我的工作量。Nice!

这么一个个试用下来折腾了我大半天的时间,舍近求远的后果。

Excel概述

今天玩了一下午的Excel,学统计的好歹要对Office多些了解吧。

发现了一些Excel的学习资源,一是Excelhome.net,上面有一些案例,也有很多总结得很好的技巧。我选了本最简单的Excel入门对着实例看完;接着看了些《Excel函数应用500例》的配套的例子。下面的笔记也是整理自Excelhome的文章。

Excel的优势之处:
(1)数据透视功能(2)统计分析,包含在数据透视功能之中。(3)图表功能(4)高级筛选(5)自动汇总功能(6)高级数学计算。

Excel在易用性方面的优势是其他软件难以比拟的,Office在用户友好性方面不可否认地做到了最好;虽然人们也有着这样那样的理由选择其他的方案。“总的来说Excel适合于开发单机版、访问量与开发维护量都不是很大、对数据有分析建模功能的应用程序。”

Excel应用程序的功能区分:
财务分析,这类应用程序通常分析用户所输入的数据,然后可以生成相应的预测模型,提供给决策部门作为参考。
报表类应用程序,这类应用程序充分利用了Excel的分析汇总功能和图表功能,程序的主要目的是生成周期报表。
工具类应用程序,这类应用程序通常用于提高用户的工作效率,例如提供数据转换与导入导出服务。
财务分析在课程学习中有过使用,是Excel最基础的功能;报表类我在实习的时候也都所接触,一些系统会定期地从数据库中筛选数据生成Excel格式的报表并进行发布。至于Excel做为工具我就觉得有点偏门的,也许只是没有接触过的缘故吧。

Excel的几种应用程序结构:

1、无代码应用程序
就是普通的.xls文件,由Excel提供数据验证、单元格的格式化、数据计算、数据输出等功能。首先你对很多对象都没有绝对的控制,而且数据验证、工作表函数都集成在工作表中,这部分的代码的管理就变得非常困难。对于今后的更新而言,替换工作表同时也会不可避免地丢失数据,而且这种应用程序结构不符合代码与数据分离的原则。这样的应用程序只适用于比较简单的需求。
无代码应用程序适用于下列情况:
a. 该应用程序的生命周期很短,只在单机进行部署,而且不需要升级。
b. 最终用户在维护该代码的时候不需要了解VBA。
c. 最终用户的数量不能太多。

2、自动化工作表

运行自动化过程的代码储存在工作簿内。这也是占比例最多的Excel应用程序。相对于第一种应用程序结构,现在可以最大限度地发挥VBA代码的威力:可以将代码和数据进行分离,可以捕获Workbook和Worksheet事件,实现需要的功能,不一而足。
自动化工作表示用于下面几情况:
工作簿内包含针对此工作簿的特殊函数,工作簿程序更新时数据不需要被保留


3、加载宏
加载宏是一种特殊的应用程序,通常用来给Excel增加功能。这里面要特别指出的是,通过加载宏给Excel增加功能特指与应用程序无关的一般目的功能。可以为Excel增加一个在加载宏中的工作簿,对用户而言它是不可见的,但是用户可以通过"宏"对话框来访问这些加载宏。
这些工作簿尽管对于用户不可见,而且其中包含的宏也无法在“宏”中可见,但是它们都可以通过VBA代码进行访问。因为加载宏中的工作表对用户始终不可见,所以需要使用用户表单来和用户进行交互。通过使用用户表单,我们首先获得了更高级的用户界面控制,其次可以更好地实现用户数据验证以及实现更高级的错误处理。这样就可以进一步增强应用程序的可靠性和数据完整性。使用加载宏结构,可以通过使用注册表或者是ini文件来记录用户的设置,而不需要像以前一样记录在工作表中。实现这种分离的重要作用就在于现在可以将配置、数据与程序代码分离,当在更新任何一方的时候都不会影响到其他部分。
加载宏是通过xla文件实现的,当在更新加载宏的时候,只需更改xla文件,然后进行覆盖操作就可以了,通过这种方式可以确保在更新程序时用户数据不会丢失。

4、企业信息系统
在使用基于Excel的企业信息系统时,用户甚至不知道他正在使用Excel编写应用程序,因为企业信息系统完全替代了Excel的用户界面,取而代之设计者设计的界面。这和用Visual Basic等高级编程语言设计出的应用程序没有什么不同。

尽管我们可以看到Excel会很多东西,但是也应该看到用Excel实习这些功能的成本,越是高级的功能开发的成本越高,相应地对培训的要求也会大大地提高。而相反,Excel的缺陷却是难以弥补的,就是对大量数据的管理、分析和处理。所以我想,以后大家对Excel的高级功能使用的会越来越少,毕竟企业会希望自己的知识能在企业内部进行统一管理,整合全企业的信息进行分析处理,而不希望把这些知识或业务逻辑分散在一张张的Excel表格中。当然,这也只是对大型的,有专职信息管理人员的企业来说;对大多数的企业而言,Excel还是一个低成本的、方便的、段时间内难以被代替的解决方案。

Jan 17, 2009

假期开始

昨天这会还在考试,24小时内,我去了无锡的舅舅家,丁山的外公外婆家,现在就窝到了自己房间里,灌咖啡,开始看书。订了些技术牛人的博客,感慨自己的卑微,再这些下去读完了研就真正印证了“不伦不类”这四个字。这假期的主题有三个:数据处理、编程和英语。我也不知道能看完多少书,不过不努力的话肯定玩完。OK,开始。

Jan 6, 2009

读《破解咨询的40个困惑》

正好赶在马哲考试前,复习这门课显然是浪费时间;可开始看投资又有点不靠谱,毕竟马哲还没考完,不用紧张兮兮。于是看了Alan Weiss的《破解咨询的40个困境》一书。我觉得书写得蛮好,可意外的是几乎没有什么名气,也许是因为作者只是个自由职业者,没有有名气的公司做后台;也许又是因为出版社推广不力的缘故吧~从这本书里我了解了关于咨询的很多东西,从工作生活到待人处事都一些,而且都说得很实在。咨询也是做项目,软件开发也是类似,结合起来看更有心得。由于找不到其他的现成笔记,下面的笔记都是我自己整理的。当然,目录是copy的。

第一篇 应对营销挑战


第1章 缺乏行业经验

做一个流程顾问而非内容咨询顾问

第2章 细分市场过小
自身or外部环境?
通往死胡同的标志:相同的客户,老一套的方法,在狭窄的领域越走越窄。
生活中似乎也是如此?
保持现有市场,积极开拓:密切相关的领域,关联性领域,可转换的技能
技术学习?
商业敏锐性

第3章 资源匮乏
虚拟?
与能提供帮助的专业性人士建立长期的联系
对于“专业性人士”来说呢?
值得信赖的跑腿人员
生活中的维护,水电煤?
培育客户

第4章 远程营销成本
预支费用
有自己的标准
把握收款时机

第5章 知名度不高
名字,媒体,开发产品
啥时写本书?……

第6章 项目来源渠道枯竭
了解营销渠道
被动销售?销售自身。
要看些销售的书籍
优势--财富;邮件名单;做项目的同时,请他们推荐;敏锐的嗅觉;维护人际关系网。
我的弱项

第7章 经济低迷或经济发展不确定时期

不景气的相对性,经济危机了,网游不更火了么!
任何情况下都运行良好的企业;茅台?
曾经一起工作过;希望与之一起工作的人
营销推广
考虑新的机会
即不要逆流而上,也不要顺流而下

第8章 如何持续赢得咨询项目
一些征兆,拒绝不是坏事,满口应承才是坏事
欲速则不达,行动太快会吓着别人。交往--达到互信--其他与人交往也是这样吧~
1.下次见面的日期
2.打电话不超过三次
3.每打次电话都发送一封Email
4.较短的时间内不要采取后续行动

第9章 差异化的困境
a.避免使用专业术语
b.给自己定位
c.著书立说
d.创立一个或更多的品牌
e.使用你的名字
坚持!

第10章 自我定位不准确或定位不适时
激情!

第二篇 应对销售挑战

第11章 价格竞争
不良做法:公开收费标准,采用按天收费的方式,在提交项目建议书前讨论收费标准,屈服于压力,与非真正的客户打交道,严格遵守《项目招标书》规定?询问预算,高估竞争对手,无法提供独特的方案,无法和客户建立联系
用价值衡量价格!

第12章 《项目招标书》(RFP)
规避

第13章 害怕和恐惧
自尊和无畏,建立互利互惠、平等的关系
着装得体,谈吐得体,运用幽默,不要无事道歉,尽量选择合适的位置坐好,做准备工作,予以还击,展现智慧,主动出击,绝不胆怯

第14章 咨询项目价格过低
原因? -- 保持敏感性并尽量避免 -- 摆脱
重新讨论遗漏的情况
重新确定能给客户提供的价值
将差异化的因素转换成或有费用
考虑放弃

第15章 “中间人”和设置障碍者
中间人--可能的买家 对求职者来说,也许是HR?
与中间人建立关系的目的只是为了确定谁是真正的客户
合理的借口?晓之以情动之以理。

第16章 项目启动时间推迟

第17章 无人答复/无人回电
如何避免:做好准备工作,提出有价值的建议,有利的证明和认可的依据,制造紧迫感
确实对方回电的最好方法是提及双方都熟悉的第三方
积极跟进而非纠缠不清

第18章 避免拙劣的“推销方式”
不要想当然地认为对方已经“病入膏肓”
不要操之过急
不要自我辩护
问一些引人深思的问题
在你的例子中利用潜在客户所处环境的因素
让买卖双方共同进行诊断
不要使用任何技术?
用你曾经经历过的例子来解释你要做的事情,不断联系
将球踢给对方
准备好走人
前几条很像求职的注意事项,毕竟求职就是推销自我,真诚第一!
谈论客户需要的结果,而不是咨询方法
要表现出你了解客户的情况,了解其所在的行业和竞争的情况
尽可能保障这种会谈是互动性质的
逻辑使人思考,情感使人行动

第19章 客户让低层人员应付你
绝不主动或被动地离开客户!
避免被降级的预防措施:
不要太快地进入推销模式
专注与客户建立关系
强调公司目标的同时,也要强调其个人价值
提及已经合作过的其他客户,最好这些客户与潜在客户处于同一级别
必须让客户把你视为同等的人

第20章 跟进工作不得力

第三篇 应对项目运作挑战

第21章 提防暗中破坏者
修正的原因是出现了失误,失误导致推卸责任和可能的不合作

第22章 咨询范围不断扩大
软件开发中的需求管理是同样的道理,也许是项目的共性之一
达成共识,采取预防措施;
应付偶然出现的范围扩大现象

第23章 应对国际挑战

第24章 客户方发生意外变化并造成损失
最初的反应--启动紧急预案
查明发生了什么,联系客户,拟定新的有价值的项目建议书,有坚强的意志力
随后的反应--组织资源
改正和修补,适应和调整,应对和接受

第25章 项目失败
分析可能的原因:目标,客观因素,主观因素
总结经验教训

第26章 客户未能实施项目
咨询顾问 客户
精简人员 解雇部分员工
改组 降低部分员工的级别
引进技术 降低当前利润
设定职责 提供负面的反馈意见
以身作则 改变舒适的行为方式
倾听 接受负面的意见
需要站在对方的角度思考问题,在自己看来理所当然,在对方看来也许艰难。

第27章 应对“公司政治”

第28章 未能就进展和贡献与客户达成共识

第29章 客户“空头支票”式的支持
为什么会有空头支票?也许是内心害怕

第30章 项目管理挑战
变化--唯一不变的就是变化!

第四篇 应对咨询管理挑战


第31章 现金流
税前税后问题

第32章 学习和进步
终身学习,学习如何学习,而不是被教
持续学习的四个维度:带着理解读;带着感情写,带着感情说;带着鉴别听

第33章 客户拖延付款

第34章 日常管理费用及利润
为什么不应该雇人--这些理由在中国也许不是理由

第35章 知识产权遭剽窃

第36章 生病与残疾

第37章 出差食宿行及生活质量

第38章 合理合法避税
不是你赚了多少,而是你省了多少
争取最有利的缴税计划

第39章 不断出现新技术
分清潮流和趋势

第40章 生活目标及平衡

没有完美的平衡

Jan 5, 2009

读《点击世界顶级咨询公司》

今天看了《点击世界顶级咨询公司》一书,主要想对这个行业多一些了解。草草看完后的确有一些收获。在咨询公司中能接触到很多案例,能锻炼与人交往的技能,能接触到一些新的东西,不断地追求专业,在自我提升的同时也能为社会创造尽可能多的价值,得到客户的认同。这和我的目标是吻合的。

在公司方面,这本书介绍了进十家世界性的咨询公司,其中在信息技术咨询方面,IGS(IBM全球服务),Accenture(埃森哲),EDS(Electronic Data System + 科尼尔),PWC(普华永道),HPC(惠普咨询)这五家公司在做的尤为突出,需要多加关注。据书中说,PWC在美国是十佳IT雇主,普华永道成了IT公司?IGS全球有13w+的雇员,占IBM全球雇员数的一半以上?真正的服务为王!IT并非只意味着技术,IT是为了创造价值!然后查了下IGS,HPC的招聘,IGS在招很多掌握Oracle和SAP技术的人员,这也许说明领先的服务型IT企业已经超越了产品技术的壁垒,而是以为客户提供整合的产品和价值作为自己的目标。

BI这类专业性强且和业务紧密相连的技术方向很可能成为将来信息系统咨询的热点,在ERP整合了企业的业务后,BI也许将在企业信息整合上发挥重要作用;同时在IGS的招聘职位上,我也发现了对BI人才的较大需求。这也许是个不错的方向。

Jan 2, 2009

GTD学习笔记

新年的第一天在“褪墨 ”上发现了GTD(Getting Things Done)和ZTD(Zen To Done)这两个概念。昨晚看了《Getting Things Done》,综合了网络上发现的其它信息,做个简单的笔记。
GTD 是“Getting Things Done”(完成每一件事) 的缩写。这是一个被广泛采用的赋予实际行动的时间管理系统。ZTD则更侧重于简洁高效的时间管理。

在“架构研究室 ”上发现了下面的GTD的思维导图。



Douglas Johnston 制作的流程图:摘自www.DIYPlanner.com

笔记摘自“褪墨
GTD的重点不在于设定任务的优先级,而是制定出在各种情境下的任务列表,如:制定一份“需要打电话”的列表;一份“电脑前可以完成的事情”列表等等。GTD还建议任何两分钟之内可以完成的任务应该马上执行。

两个目的:(1)抓住所有一切需要处理的事情(现在的、以后的、将来某时的;大的、小的、
或者不大不小的)把它们统统置入一个脱离大脑的逻辑系统中。(2)训练自己在接受一切“输入信息”的前期作出决定。这样一来,在任何时候,你都把下一步行动计划掌握在手,可以实施或者进行再议。

简单的概括GTD,那就是对任何事情都做好准备因为我们的想法没有被收集整理,所以我们总是在不断地思考自己需要什么或者现在要做什么。若总让大脑停留在思考要什么,完成什么,和使用大脑记忆这些事件的层次,那么大脑就会没有多余地时间去考虑一件事情该怎么完成了。只有考虑如何完成一件事情才最重要,否者你的想法都是没意义的。

收集

把任何你需要跟踪、记住、或者要做的事情全部记录到“收集箱”中。每天抽几十分钟收集一下脑中的信息,记录到你的收集设备中。

处理
将你收集到的任何信息进行处理。每个星期至少处理清空一次你的“收集箱”。
处理你的收集箱要遵循的工作流程:
从第一条信息开始处理;
每次只处理一条信息;
不把任何信息放回收集箱;
如果任何一项需要做:
马上执行(如果花的时间少于两分钟)
委托别人完成,或者
将它延期
否则:
将它存档以便查询
把它删除,或者
为它定义合适的目标与情境,以便下一步执行
两分钟原则:任何事情如果花的时间少于两分钟,那么马上就去执行。两分钟是一个分水岭,这样的时间和正式地推迟一个动作所花的时间差不多。

组织
下一步行动(Next actions):对于每个需要你关注的事项,定好什么是你可以实际采取的下一步行动。 虽然要完成事项可能会有很多的步骤和行动,但是其中一定会有你需要首先去做的事情,这样的事情就应该被记录在“下一步行动”列表上。较好的做法是把这些事项根据能够 被完成的“情境”整理分类,例如“在办公室”,“用电话”,“在商场”。
项目(Projects):每个需要多于一个实际的行动才能达到目的的事就是一个“项目”。使用跟踪以及周期性的回顾来确保每个项目都有一个下一步的行动进行下去。
等待(Waiting for):当你已经指派了一个事项给其他人或者在项目进行下去之前需要等待外部的事件。就应当在你的系统当中跟踪以及定期检查是否已经可以采取行动或者一个提醒需要发出。
将来/可能(Someday/Maybe):这些事情你需要在某个点去做,但是不是马上。

使用下一步行动列表而非日历来记录行动,虽然日历非主要的工具,但是可以用来跟踪预约和委托,提醒某件必须在特定期限内完成的事情等等。
字母顺序组织的归档系统或43 Folders系统(按照12月、31天,共43个文件夹)。

回顾
按时回顾自己的列表。如果你没有及时整理和回顾每天的信息和行动,那么整个GTD系统就是毫无用处的。通过回顾,指定计划,或者了解项目进度,从而使自己总是走在时间的前面,而不是被动地被安排。
1. 我可以做什么使下一周有所改进?
2. 这周最使我感到骄傲的是什么?
3. 这周我取得的最大成果是什么?
4. 这周我做了什么使我更接近自己的目标?
5. 这周我遇到的困难有哪些?为什么?
6. 这周内,我白白浪费时间最多的是什么?
7. 这周我做了什么使我感到羞愧?

执行
如果你把自己的时间都花在组织工作、而不是执行它们,那么这样的系统是个只说不做的无用功系统。前面的步骤都是为了在你做事情的时候,使它变得简单、容易、有趣的话,让你比较不会拖延、或者被太多的琐事所分心。

简单做(ZTD)的十个好习惯总结
同样摘自褪墨

习惯1:收集 —— 全面收集
随身携带一个小笔记本(或者任何记录工具),用它来记录下任何任务、想法、专案或者任何闪入你大脑的其他信息。这个习惯与GTD的基本完全相同,但ZTD只需要一个小巧、便携、易用的工具来记录信息。你必需在忘记事情之前赶紧把信息写下来, 并且尽快地把这些信息从笔记本中清除、存入任务清单中。

习惯2:处理 —— 快速地对信息作出决定,从而避免收件箱堆积
第一,限制你的收件箱。列出所有你收集信息的途径,评估每一条途径带来的价值,合并某些收件箱或者删除那些无用的收件箱。
第二,管理你的收件箱。

习惯3:计划 —— 设定每天,每周的最重要的事(MIT)

每周,列下你需要完成的重大事件,把他们排进日程表。每天,列出1-3个最重要的事(MITs)。这样,你的每一天和每一周都被设定了目标,与其盲目的去完成那长长的任务清单,你总是在完成那些最重要最有用的事情!发现,安排,完成,回顾!

习惯4:执行 —— 一心一意,每次只执行一件事
执行作为一切时间管理的核心,是ZTD中非常重要的一部分。你应当在不分心的情境下,一次只执行一件事。既不要多线工作,也不要让你的工作突然中断

习惯5:信任的系统 —— 建立简单的列表,并每日查看
ZTD(简单做)建议你尽可能的维持列表简单化。不要增加复杂的系统,也不要持续尝试新工具,以免时间上的浪费。

习惯6:管理 —— 一个存储所有信息的地方
把所有接收的信息都放入你的收集箱中,处理你的收集箱,执行任务,完成任务。在这个系统里,你永远都不应该有疑问自己下一步该做什么。而且也使你更能专心注重于工作,也避免的拖延的。

习惯7:回顾 —— 每周回顾你的系统和目标

重新整理所有的事情和检视什么是最重要的任务。每次只要集中于一个目标,并且确保它是一个你能完成的目标。

习惯8:简化 —— 减少你的任务清单,只留下最必要的
将你的任务列表简化到最少,只剩下最重要的任务,不断地简化自己的任务清单,确定你的任务只是最重要的。

习惯9:常规 —— 设定每周、每日例程
设定每周、每日例程可以使你的工作和个人生活得到极大的简化。更重要的是,使你掌控自己的生活,而非让任务处在搁浅之中。没有日程,我们就不太容易对新进入的信息说不。因为我们总是被那些希望占用我们时间的人、吸引注意力的网站所拖住,这不是一件好事(除非你不想做完重要的事情),所以你需要掌控自 己的生活,设定日程,并且跟着它走。

习惯10:激情 —— 做你充满梦想的事情
当你真正地想去做一件事,无论多么辛苦,你都会去努力的完成。你会付出更多的努力,抽出更多的时间,耽搁的时间也减少了。所以,培养这个习惯正是为了持续搜寻使你保持热情的事情,使你精神饱满,动力十足。

Dec 31, 2008

The new year.

昨天看了《叶问》、《梅兰芳》、《霸王别姬》、《非诚勿扰》。都是别人的生活。几年前觉得活着是为了经历,几年后觉得活着就是活着,不管真实还是不真实。也许生活和爱才是真正重要的,可对它们却只能顺其自然。

曾经刻意地追求着简单,不想去记录,不想去思考,可现在有时觉得不记下些什么我真会很快忘了经历过什么。可即使刻意记录,一天天还是这么过去,到后来只是成了一篇篇日志、成了一张张相片、成了一纸简历、成了回忆。

在09年,我想活得真实些,每天都做一件开心的事情,每个月都养成一个好的习惯。呵呵,这就是我新年的目标。

Dec 27, 2008

08年

08的流水帐:
1月:考研,确定考不上,开始做简历。浪费了半年的时间。家乡下了场大雪,过年,做鱼丸。
2月:跑亲戚、投简历,17号到上海,一周面试四家公司,第二周和宏力签约,回广州办三方协议,回上海。
3月:上班,编程。工作的无奈和孤独。
4月:继续工作,知道过了上财的复试线,准备复试,笔试基本不会,又开始等待,已不在意。准备报工程硕士。
5月:月初得知复试通过。上午离职,下午去蓝竹面试,第二天回广州。做毕设。
6月:继续做毕设,去肇庆玩,拍毕业照,答辩。
7月:蓝竹实习,继续编程,烦心而开心的日子。
8月:继续编程,生活的琐碎。
9月:月初回家,中旬回上海,开学。学习Linux+Python。由于入党较早,被任班长。
10月:十一回家,思维导图,重读《代码大全》,学SAS,烧烤。重做简历,面试。
11月:玩红警3,SNA论文,《代码大全》,Python,UNIX。
12月:英语演示,《重构》,《执行》,统计推断考试,《货币战争》,重读《设计模式》,圣诞party。复习高微、投资。听歌。

明年:
1到5月:课程学习,python,C,Matlab or SAS,DB2 Advanced,BEC Higher,LPIC。
5到8月:暑期实习,英语,Data Mining。
9到12月:论文,找工。
可能的话参加一两个开源项目。

继续卑微地努力,多多少少为自己、为他人做些事情。累些,却也不会后悔~

Dec 22, 2008

12.22习字_苏轼词

窗外阳光很好,不想看书,等吃午饭,有那么一点无趣,抄了苏轼的两首词。手有点冻,笔也有些差。上一次写字该是一年半以前了吧。

我不知道干嘛写字,纯粹的浪费时间,而且还显得有点酸有点作,呵呵。不过很多事都一样,是永远没有为什么这一说的。哪怕过程中有一点点所得,就不能说是浪费时间。宅男,宅男。

Dec 21, 2008

《Head First 设计模式》9-13章

Chapter 9:迭代器和组合模式--管理良好的集合
我们能学习如何让客户遍历你的对象而又无法窥视你存储对象的方式;也将学习如何创建一些对象超集合,能够一口气就跳过某些让人望而生畏的数据结构;还将学写到一些关于对象职责的知识。

迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。
迭代器模式让我们能游走于聚合内的每一个元素,而不是暴露其内部的表示。
把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。

设计原则:一个类应该只有一个引起变化的原因。
类的每个责任都有改变的潜在区域。超过一个责任,意味着超过一个改变的区域。
这个原则告诉我们,尽量让每个类保持单一责任。

组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一直的方式处理个别对象以及对象组合。
组合模式让我们能用树形方式创建对象的结构,树里面包含了组合以及个别的对象。
使用组合结构,我们能把相同的操作应用在组合和个别对象上。换句话说,在大多数情况下,我们可以忽略对象组合和个别对象之间的差别。
统一处理个别对象和组合对象。



空迭代器
NullIterator,返回一个迭代器,而这个迭代器得hasNext永远返回false。

要点
迭代器允许访问聚合的元素,而不需要暴露它的内部结构。
迭代器将遍历聚合的工作封装进一个对象中。
当使用迭代器的时候,我们依赖聚合提供遍历。
迭代器提供了一个通用的接口,让我们遍历聚合的项,当我们编码使用聚合的项时,就可以使用多态机制。
我们应该努力让一个类只分配一个责任。
组合模式提供一个结构,可同时包容个别对象组合对象
组合模式允许客户对个别对象以及组合对象一视同仁。
组合结构内的任意对象称为组件,组件可以是组合,也可以是叶节点。

在实现组合模式时,有许多设计上的折中。你要根据需要平衡透明性和安全性


Chapter 10:状态模式--事务的状态

策略模式和状态模式是双胞胎,在出生时才分开。


策略模式是围绕可以互换的算法来创建成功业务的。
状态模式通过改变对象内部的状态来帮助对象控制自己的行为。
1 定义一个State接口。在这个接口内,糖果机的每个动作都有一个对应的方法。
2 然后为机器中的每个状态实现状态类。这些类将负责在对应的状态下进行机器的行为。
3 我们要摆脱旧的条件代码,取而代之的方式是,将动作委托到状态类。


状态模式:允许对象在内部状态改变是改变它的行为,对象看起来好像修改了它的类。
要点
状态模式允许一个对象基于内部状态而拥有不同的行为。
和程序状态机PSM不同,状态模式用类代表状态。
Context会将行为委托给当前状态对象。
通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了。


状态模式和策略模式有相同的类图,但是它们的意图不同
策略模式通常会用行为或算法来配置Context类。
状态模式允许Context随着状态的改变而改变行为。
状态装换可以由State类或Context类控制。
使用状态模式通常会导致设计中类的数目大量增加。
状态类可以被多个Context实例共享。


Chapter 11:代理模式--控制对象访问


你是一个白脸,提供很好且很友善的服务,但是你不希望每个人都叫你做事,所以找了黑脸控制对你的访问。


控制和管理访问,这就是代理要做的事。
你的客户对象所做的就像是在做远程方法调用,但其实只是调用本地堆中的“代理”对象上的方法,再由代理处理所有网络通信的低层细节。
1 先浏览并了解一下RMI。
2 我们会把GumballMachine变成远程服务,提供一些可以被远程调用的方法。
3 我们将创建一个能和远程的GumballMachine沟通的代理,这需要用到RMI。
4 最后再结合监视系统,CEO就可以监视任何数量的远程糖果机了。


方法调用是如何发生的
1 客户对象调用客户辅助对象的doBigThing方法。
2 "客户辅助对象打包调用信息(变量,方法名称等),然后通过网络将它运给服务辅助对象。"
3 服务辅助对象把来自客户辅助对象的信息解包,找出被调用的方法(以及在哪个对象内),然后调用真正的服务对象上的真正方法。
4 服务对象上的方法被调用,将结果返回给服务辅助对象。
5 服务辅助对象把调用的返回信息打包,然后通过网络运回给客户辅助对象。
6 客户辅助对象把返回值解包,返回给客户对象。对于客户来说,这是完全透明的。


RMI提供了客户辅助对象和服务辅助对象,为客户辅助对象创建和服务对象相同的方法。


制作远程服务
1 制作远程接口
2 制作远程的实现
3 利用rmic产生的sub和skeleton
4 启动RMI registry(rmiregistry)
5 开始远程服务

远程代理;虚拟代理:暂时代理初建开销大的对象


代理模式:为另一个对象提供一个替身或占位符以控制这个对象的访问。
使用代理模式创建代表representative对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象,创建开销大的对象或需要安全控制的对象。
 


要点

代理模式为一个对象提供代表,以便控制客户对对象的访问,管理访问的方式有许多种。
远程代理管理客户和远程对象之间的交互。
虚拟代理控制访问实例化开销大的对象
保护代理基于调用者控制对象方法的访问。
代理模式有许多变体,例如:缓存代理,同步代理,防火墙代理和写入时复制代理
代理在结构上类似装饰者,但是目的不同。
装饰者模式为对象加上行为,而代理则是控制访问。
Java内置的代理支持,可以根据需要建立动态代理,并将所有调用分配到所选的处理器。
就和其他的包装者wrapper一样,代理会造成你的设计中类的数目增加。

Chapter 12: 复合模式--模式中的模式
谁料得到模式居然可以携手合作?

模式常被一起使用,并被组合在同一个设计解决方案中。
复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。

设计模式是MVC的钥匙。
MVC是由数个设计模式结合起来的模式。如果你能够看着MVC内部的各个模式,MVC的一切就会跟着开始明朗起来。

要点
MVC是复合模式,结合观察者模式策略模式组合模式
模型使用观察者模式,以便观察者更新,同事保持两者之间的解耦。
控制器是视图的策略,视图可以使用不同的控制器实现,得到不同的行为。
视图使用组合模式实现用户界面,用户界面通常使用嵌套的组件,像面板、框架和按钮。
这些模式携手合作,把MVC的三层解耦,这样额可以保持设计干净,又有弹性。
适配器模式用来将新的模型是配成已有的视图和控制器。
Model2是MVC在Web上的应用。
在Model2中,控制器实现成Servlet,而JSP/HTML实现视图。
迎接一个充满设计模式的崭新世界。

Chapter 13:与设计模式相处--真实世界中的模式

模式是在某种情境(context)下,针对某问题的某种解决方案。
情境就是应用某个模式的情况。这应该是会不断出现的情况。
问题就是你想在某个情境下达到的目的,但也可以是某情境下的约束。
解决方案就是你追求的,一个通用的设计,用来解决约束,达到目的。
如果你发现自己处于某个情境下,面对着所欲达到的目标被一群约束影响着的问题,然而,你能够应用某个设计,克服这些约束并达到该目标,将你领向某个解决方案。

反模式告诉你如何采用一个不好的解决方案解决一个问题。

要点
让设计模式自然而然地出现在你的设计中,而不是为了使用而使用。
让设计模式并非僵化的教条;你可以依据自己的需要采用或调整。
总是使用满足需要的最简单解决方案,不管它用不用模式。
学习设计模式的类目,可以帮你自己熟悉这些模式以及它们之间的关系。
模式的分类或类目是将模式分成不同的族群,如果这么做对你有帮助,就采用吧!
你必须相当专注才能够成为一个模式的作家;这需要时间也需要耐心,同事还必须乐意做大量的精化工作。
请牢记:你所遇到大多数的模式都是现有模式的变体,而非新的模式。
模式能够为你带来的最大好处之一是,让你的团队拥有共享词汇。
任何社群都有自己的行话,模式社群也是如此。别让这些行话绊着,在读完这本书之后,你已经能够应用大部分的行话了。

剩下的模式

桥接模式 Bridge Pattern
不只改变你的实现,也改变你的抽象。
生成器 Builder Pattern
使用生成器模式封装一个产品的构造过程,并允许按步骤构造。
责任链 Chain of Responsibility Pattern
当你想要让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式。
蝇量 Flyweight Pattern
如想让某个类的一个实例用来提供许多虚拟实例,就使用蝇量模式。
解释器 Interpreter Pattern
使用解释器模式为语言创建解释器。
中介者 Mediator Pattern
使用中介者模式来几种相关对象之间复杂的沟通和控制方式。
备忘录 Memento Pattern
当你需要让对象返回之前的状态时,就使用备忘录模式。
原型 Prototype Pattern
当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。
访问者 Visitor Pattern
当你想要为一个对象的组合增加新的能力,切封装并不重要时,就使用访问者模式。

Dec 20, 2008

《Head First 设计模式》5-8章

Chapter 5: 单件模式
独一无二的单件模式:用来创建第一无二的,只能有一个实例的对象的入场券。有些对象之需要一个:线程池、缓存、对话框、偏好设置、日志。。。
静态全局变量(一开始就创建号) <--> 单件模式(可以在需要时再创建对象)
单件模式:确保一个类只有一个实例,并提供一个全局访问点。


JVM多线程
同步
:synchronized --> 可能造成执行效率的下降
急切实例化:定义时创建
双重检查加锁:volatile -- Java 5

要点

单件模式确保程序中一个类最多只有一个实例。
单件模式也提供访问这个实例的全局点。
在Java中实现单件模式需要私有的构造器,一个静态方法和一个静态变量。
确定在性能和资源上的限制,然后小心地选择适当的方案来实现单件,以解决多线程的问题(我们必须认定所有的线程都是多线程的)
如果不是采用第五版的java2,双重检查枷锁实现会失效。
小心,你如果使用多个类加载器,可能导致单件失效而产生多个实例。
如果使用JVM1.2或之前的版本,你必须建立单件注册表,以免垃圾收集器将单件回收。

Chapter 6: 命令模式--封装调用
这些绝密文件的投递箱已经促成了间谍工业的革命。我只要把需求丢进去,就有人会消失,政府一夕之间改朝换代,而我的干洗衣物也好了。我不必管何时何地或者如何完成,反正就是完成了。
在本章,我们把封装带到一个全新的境界:把方法调用封装起来。

命令模式:
将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。



命令对象将动作和接收者包进对象中。这个对象只暴露出一个execute()方法,当此方法被调用的时候,接收者就会进行这些动作。
NoCommand对象是一个空对象的例子。当你不想返回一个有一一的对象时,空对象就很有用。
客户也可以将处理null的责任转移给空对象。

命令模式的更多用途

队列请求:命令可以将运算快打包(一个接受者和一组动作),然后将它传来传去,就像是一般的对象一样。
日志请求:store(); load(); execute(); undo()
宏:顺序地执行execute();

要点
命令模式将发出请求的对象和执行请求的对象解耦
在被解耦的两者之间是通过命令对象进行沟通的,命令对象封装了接受者和一个或一组动作。
调用者通过调用命令对象的execute发出请求,这会使得接收者的动作被调用。
调用者可以接受命令当参数,甚至在运行时动态地进行。
命令可以支持撤销,做法是实现一个undo方法来回到execute被执行前的状态。
宏命令是命令的一种简单的延伸,允许调用多个命令。宏方法也可以支持撤销。
实际操作时,很常见使用聪明命令对象,也就是直接实现了请求,而不是将工作委托给接收者。
命令也可以用来实现日志和事务系统。
Chpater 7:适配器模式与外观模式--随遇而安
适配器模式与外观模式:以不同的目的,包装某些对象,让它们的接口看起来不像自己而像是别的东西。
这样就可以在设计中,将类的接口转换成想要的接口。
将所有的改变封装在一个类中,可能需要让一个适配器包装多个被适配者。
双向适配器。

适配器模式解析
客户 - 适配器 - 被适配器
客户使用适配器的过程如下:
客户通过目标接口调用适配器的方法对适配器发出请求。
适配器使用被适配者接口把请求转换成被是配置的一个或多个调用接口。
客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。

适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

对象适配器:


外观不只是简化了接口,也将客户从组件的子系统中解耦。
外观和适配器可以包装许多类,但是外观的意图是简化接口,而适配器的意图是将接口转换成不同接口。
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
外观没有封装子系统的类,外观只提供简化的接口。同时,依然将系统的功能完整地暴露出来。


设计原则:最少知识原则:只和你的密友谈话。

要点
当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器。
当需要简化并统一一个很大的接口或者一群发杂的接口时,使用外观。
适配器改变接口以符合客户的期望。
外观将客户从一个复杂的子系统中解耦
实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小与复杂度而定。
实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行。
适配器模式有两种形式:对象适配器和类适配器,类适配器需要用到多重继承
你可以为一个子系统实现一个以上的外观。
适配器将一个对象包装起来以改变其接口,装饰者将一个对象包装起来以增加新的行为和责任,而外观将一群对象包装起来以简化其接口。

Chapter 8:模板方法模式--封装算法

唉!在需要进入这个洞之前他原本是个好老板的,结果这全部都编程了我的工作了。你懂我的意思吧?他根本就不见人影!
我们将要深入封装算法块,好让子类可以在任何时候都可以将自己挂接进运算里。

模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。

模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
对模板方式进行挂钩,影响抽象类中的算法流程

设计原则:好莱坞原则:别调用(打电话给)我们,我们会调用(打电话)你。
高层组件对待低层组件的方式是:别调用我们,我们会调用你。低层组建将自己挂钩到系统上。

要点
模板方法定义了算法的步骤,把这些步骤的实现延迟到子类。
模板方法模式为我们提供了一种代码复用的重要技巧。
模板方法的抽象类可以定义具体方法、抽象方法和钩子。
抽象方法由子类实现。
钩子是一种方法,它在抽象类中不做事,子类可以选择要不要去覆盖它。
为了防止子类改变模板方法中的算法,可以将模板方法声明为final。
好莱坞原则告诉我们,将决策权放在高层模块中,以便决定如何已经何时调用低层模块。
你将在真实世界代码中看到模块方法模式的许多变体,不要期待它们全都是一眼就被你认出来的。
策略模式和模板方法模式都封装算法,一个用组合,一个用继承。
工厂方法是模板方法的一种特殊版本。
良好管理的集合 “当然我把集合都好好地封装起来了”

财务报表分析作业

分析对象选的是用友软件(600588),18号晚完成了分析数据的录入,19日上午完成2/3,今天上午又完成了剩下的1/3。总的花费在16个小时左右,23p,8000字。纪念。

有图片的word转到Online doc上有很多错误,Excel可以上传但还不能嵌到页面。下面只摘抄下总结吧:

在偿债能力和资本结构方面,用友软件有着不错的短期偿债能力,债权的保证程度很高,企业所有者对企业的控制力很强,企业偿还本息的压力轻,但企业没有充分利用财务杠杆举债经营,具体体现在财务杠杆指数低等方面,但在五年间有了一定高,说明该企业的业务有较好的发展,对负债经营有了一定的运用。在长期偿债能力上,用友软件的利息保障倍数处于极高的水平,且在过去的几年内又有了较大的提高。

在营运能力方面,该企业的该企业的总资产周转率和流动资产周转率处于逐年上升的态势,同时应收账款周转率也在逐年提高,说明了企业的运营能力和应收账款的管理水平在持续地提高。但是,该企业的总负债周转率呈M形波动,说明了用该企业利用负债资金创造效益的能力较弱且不稳定。同时,所有者权益周转率的稳步上升说明了企业投资者的权益基金创造收入的能力有所提高。五年间,该企业的营业周期和现金营业周期呈稳步降低的态势,说明了该企业的资金周转速度有所加快、流动性增强、资产的使用效率有所提高。

在获利能力方面,该企业的销售净利率和销售毛利率都呈先减后增的U字形趋势,总体保持稳定,主营业务利润率呈先增后降的态势,可从绝对值看仍处在较高的水平,但营业利润率的下降幅度较大,说明企业通过日常经营活动获得利润的能力减弱。该企业的该企业的主营业务成本毛利率及主营业务成本利润率在03到05年逐年下降,但其绝对值仍保持在较高的水平,体现了该企业出色的获利能力。

在投资报酬能力上我们可以看出,该企业的投资回报能力在04年后有了很大的提高,其盈利水平是稳定而又持续提高的。

在现金流量部分,从分析数据我们可以看出,企业有着不错的运用现金偿还债务的能力,和经营获现能力,现金获利能力也很出色,同时企业也有着稳定的现金流,完全能够满足投资的需要。

用友软件作为一个纯软件公司,代表了软件行业的普遍特点。首先在成本的构成上,固定资产方面的投入占的比重较少,且设备的更新换代有周期性,故导致了某些财务数据的非常规变化;其次在现金流量上,企业有着充裕的现金流,完全可以满足偿债和投资的需要;其三在资本构成上,由于处于新兴行业,创办历史较大,所以股权较为集中,所有者对企业的控制较强;其四在举债经营上,由于在软件行业,知识产权的重要性大大高于其它因素,而研发能力的提高不是光靠大的团队或者大的投入就可以做到的,加之企业的现金流较为充裕,所以并没有大量利用借债来扩大企业规模。虽然企业没有充分利用财务杠杆,但在不稳定的软件行业,保持较大的现金储备有利于企业长期稳定的发展。

Dec 18, 2008

Excel数据整理

今天做财务报表分析的课程作业,我选择了用友软件作为分析对象,数据上采用了该公司02-06年五年的数据。数据的来源是html格式的年报。由于五年间的会计科目有所变化,再加上实际的报表和分析用的标准报表有所差异,如果一个个数据拷贝的话工作量还是很大的。我采用了以下的数据整理流程大大提高了效率:

html --> UltarEdit[正则表达式处理特殊符号] --列编辑,拷贝标题列和数据列--> Excel临时表 --> 拷入标准表的标题列 --> 对照标准表,将临时表的标题列对准标准表 -->将临时表的数据列拷入标准表 --> 整理&填充缺失数据。