Archive for the ‘工作’ Category

我在程序员的时候

2007年12月06日 星期四

我在程序员的时候,我一开始追逐这个API怎么用,数据库SQL怎么写更优化,Dcom技术的细节
然后我发现我写出来的产品为了符合客户需求必须要大量修改,但是我的代码却粘在了一起
第一个感觉就是一个函数太长,一看就头痛,而且一个函数干了好多事。这些事本来可以一段一段的,每段写上注释,然后有意义命名,自己管理错误和内存,然后把这些函数连在一起
然后我作了这些:
1小函数
2写上注释
3有意义命名
4自己管理错误和内存
5流程函数

最后我发现我这些函数可以组合成各种各样的流程,我的程序终于好修改了,我很高兴

但是我又发现,我的界面和我的流程混在了一起,另一个程序也想使用我的函数,但是我的函数中有对我的特定界面关联的代码,我不能连界面一起都给他,因为他有他的界面,但作的事我已经实现了
于是我把功能函数和界面控制分开了

我就作了这些,我的代码很容易理解,即使新员工,只要他看完业务手册和数据结构,他就明白我代码为什么这么写。
而且我的函数由于都是自己负责输入参数和输出参数的校验,有明确和统一的报错信息,所以很容易找到错误进行BUG修复。
由于我的程序都是小函数组成的,都有明确报错,所以错误很容易找到,经过测试组的专业测试后,我的代码很稳定
即使出错,也扩散不大,都是小bug,对系统整体没有大影响

虽然我在前进的过程中也经历过困惑,一心钻在OO和设计模式中。但是有可能是功力不够,不得其解。看着Delphi的源码
应用了很多的OO和模式,并且他的类库多年发展也没有多大的改变,所以深信OO和模式的威力,而对自己的能力很灰心。但是代码还得继续写,还想进一步提高,于是才摸索出现在的一套做法。既实用又简单应用,每个人都能办到

我认为我的代码方法已经可以满足现在的产品制造,并且在软件性能调整上也积累了一些珍贵的经验。
我发现性能最容易提高也效果最明显的就是用SQL profilter,优化SQL。
优化代码,因为涉及到业务,很不好着手。优化数据库结构,由于代码都是构建在特定数据表之上,所以这是最难改的地方

但是我高兴了没多久,我又遇到问题了。因为我的程序即使再好改,但是客户的需求真是千奇百怪,我每天在接听用户的电话,并且修改用户千奇百怪的问题。我很烦。
于是我作了实施员。我想真正看看客户到底怎么回事。
于是我理解了很多。我明白了很多的事情不是技术和软件所能解决的,而是现实环境的弊病。但是这个弊病还不是一个工程就能解决的,这是一个复杂的网。所以这些问题我就说服用户不要用软件来处理,因为软件是死的,而人的做法是灵活的。
而且我发现用户虽然提了很多需求,但是有的需求他一个月用不了一次,但是修改起来却不容易。有的需求修改完,在实际应用中却发现不可行,那个需求只是客户想解决过去的问题而想的一个办法根本没有经过实际的校验。有的需求修改来修改去都是表面问题,在实际应用中才发现重点问题没有提需求所以上线又搁下了

我作了总结:
1软件擅长大数据量计算和查询,还有数据联网共享,如果需求不能发挥软件特点,就不让软件实现。这样我少修改了一些
2有的需求都是表面需求,修改了也用处不大,反而耽误了重点需求的提出和修改,所以告诉用户只修改核心功能。但是用户提了很多需求,不修改完不上线。后来发现,由于他们没有深刻理解我们系统的整体思想,所以没有上线实际用,根本不知道新改的功能是否好用。用户只是脱离了整体,单独思考想怎么就怎么,没上线根本他不知道后果,怎么说也不行,就得让他看见教训他才反悔,但是已经修改了。往往出现这样的情况。最后得出一个结论:一次只提三个需求,并且用书面提出,免的说了不算算了不说。核心功能的需求修改可以满足80%的日常使用就上线。这样我少修改了很多
3并且我在实际做工程中,积累了大量的经验,写成FAQ,各种成功案例,让用户在没有提需求之前先看看自己到底有多少老软件实在不能解决而才买新软件帮助的事。新软件就是解决你过去解决不了的事。如果你没有解决不了的事,提什么需求

我的产品终于可以很快完成上线,所以可以大规模推广市场了

但是我们的产品制造又出问题了。因为客户越来越多,客户的需求越来越多。我们需要开发更多的系统,但是我们的时间有限,我们的人手有限,而且我们的人手大多是新手。怎么办。我们遇到了灾难。我们的代码质量因人而异。我们的版本管理混乱。我们的文档没有人编写,大家都被分配到用户处去上线。怎么准备数据字典,怎么切换系统,怎么记录客户需求,怎么管理系统,怎么修改代码,我们没有任何记录。现场不能离开程序员一步,一离开用户出事了就不知怎么办,没有任何可查的资料。

于是我又做了项目管理,我们缺少很多规范。事有千万,先从紧处来。写文档费时间,就开会给大家讲做事的经验。实施和代码修改需要什么必要规范就制定什么规范。在这期间最容易犯的错就是中央集权,什么事都必须自己做主。下属不管大事小事都请示你。我被搞的什么都干不了,都成了救火队员。我的团队陷入了混乱之中,因为我烦乱之中作了很多饮鸩止渴的决定。我于是又犯了一个错误,我说你们能决定的事尽量自己决定,不要问我,我权利下放。结果是:各自作各自的事,互相不通知。有的事没人管,有的事多人修改,各有一套。

我终于明白了,我作了总结:
1项目经理是找到得力的人,指导他们做事的方向。如果下属不知如何作时,及时提供给下属做事方法
2制定规范,其实也就是做事方法
3制定计划,分配人力去作。检查结果
4有紧急事务立刻做出果断解决,继续前进

我的团队终于平静了下来,但是大家都很疲惫。大家干的很累,但是由于实施和修改消耗了大量的钱,我们没有赚钱,大家什么都没有得到。团队很灰心,也很失望。我下了计划,我自己都很灰心,大家认为再努力也不会再有结果,所以拖拖拉拉,进度和成本已成不可再提的事情。

人,缺少了精气神,就什么都没有了。我们就是缺少了这些。

我就开始重新建立团队的精气神

我发现有人为了跳槽开始学习新的技术,而这种技术是公司现有产品不需要的,但是他们却在上班时间作。我先从此下手。
我讲了技术的方向,让他们认清他们现在所学将会很快淘汰。
我又讲了现在市场的实况,让他们认清外面公司也不好过。
我还讲了我们所从事的行业多有潜力,我们公司将有新的举措。

人心又开始一点一点收回了。

但是我们仍然需要完成那些未收尾的工作,仍然需要去奔赴新的客户市场。虽然员工很疲惫,虽然我们刚从飘摇中过来,
但是我们不能止步,因为我们为盈利而存在,我们别无选择。

我能够将代码写的很好,性能很高,产品制造很有计划和成本控制,团队很有战斗力。但是我发现了一个问题,我们的产品市场不再扩大了。市场份额大规模开拓已很艰难,因为新产品的新鲜感已经过去了。我们在动荡的日子作的项目给公司带来了阴影,公司一直没有大赚钱,投资方很生气。

我明白了。公司毕竟是为利润而存在的。公司不是为产品制造而存在,不是为了解决别人的问题而存在。赚钱是第一位。
不赚钱即使你在媒体上作的很风光也一文不值。有人靠手赚钱,有人靠嘴赚钱,有人靠脑子赚钱,有人靠身体赚钱,不管黑猫白猫,只要抓住老鼠就是好猫。成在营销,败在管理。

我开始关注资本运作,联盟伙伴建设,市场营销,客户关系营运。我知道,生活才刚刚开始。

来源: http://cscer.yculblog.com/post.316988.html

能不能使用TClientDataSet又不用MIDAS.DLL呢?

2007年12月06日 星期四

  能不能使用TClientDataSet又不用MIDAS.DLL呢?
  
  TClientDataSet小家碧玉,恐怕人人都喜欢使用。但是,都知道娶TClientDataSet是有代价的,因为你同时也得面对丈母娘MIDAS.DLL。
  能不能使用TClientDataSet又不用MIDAS.DLL呢?
  很简单,就是uses一下MidasLib单元!
  MidasLib单元在Delphi6中才有,是Lib目录下的一个dcu文件。一旦在你的源程序中引用了MidasLib单元,程序运行时就不再需要MIDAS.DLL文件。
  然而,编译后程序大小一定会增加200k以上,即使使用包编译模式。
  哈哈,原来丈母娘跑到你家里来了,成了你程序中的一部分。你家搬到哪儿,她就到哪儿。但不管怎么样,搬一个家总比搬两个好吧。娶了媳妇的同时也娶了丈母娘,不也是福气?你说是吧。
  当然,需要的时候才这样做。你的应用程序本身就包含多个DLL或BPL文件,就没有必要这样做。如果每个模块里都养个丈母娘,一定会累死你的,还是供养一个MIDAS.DLL好些。

来源: http://blog.tianya.cn/blogger/post_show.asp?idWriter=0&Key=0&BlogID=41763&PostID=1055592

解决PowerPoint 2007无法输入中文

2007年12月04日 星期二

今天帮一个朋友做幻灯片,需要使用PowerPoint,之前一直在用Microsoft Office 2003,但前段时间我把机子里的office升级到了2007,升级之后还一直没用过powerpoint,今天第一次使用就遇到了一个问题,就是没办法在幻灯片里输入汉字,但数字、英文的输入都很正常。先以为是输入法的问题,就换了好几种输入法,但问题还是没有解决。

原来是关闭了输入法设置里的“高级文字服务”导致的。我在选项里一打开,PowerPoint就可以正常输入熟悉的方块字了,呵呵。  XP以上的系统这个选项默认是打开的,但我用习惯了以前的输入法控制器,就把这个给禁用了,所以才遇到了今天的这个问题。

来源: http://tech.ddvip.com/2007-01/116883310818156.html

让你明白什么是ERP

2007年12月04日 星期二

ERP(Enterprise Resource Planning)企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。

一天中午,丈夫在外给家里打电话:“亲爱的老婆,晚上我想带几个同事回家吃饭可以吗?”(订货意向)

妻子:“当然可以,来几个人,几点来,想吃什么菜?”

丈夫:“6个人,我们7点左右回来,准备些酒、烤鸭、番茄炒蛋、凉菜、蛋花汤……。你看可以吗?”(商务沟通)

妻子:“没问题,我会准备好的。”(订单确认)

妻子记录下需要做的菜单(MPS计划),具体要准备的东西:鸭、酒、番茄、鸡蛋、调料……(BOM物料清单),发现需要:1只鸭蛋,5瓶酒,4个鸡蛋……(BOM展开),炒蛋需要6个鸡蛋,蛋花汤需要4个鸡蛋(共用物料)。

打开冰箱一看(库房),只剩下2个鸡蛋(缺料)。

来到自由市场,妻子:“请问鸡蛋怎么卖?”(采购询价)

小贩:“1个1元,半打5元,1打9.5元。”

妻子:“我只需要8个,但这次买1打。”(经济批量采购)

妻子:“这有一个坏的,换一个。”(验收、退料、换料)
回到家中,准备洗采、切菜、炒菜……(工艺线路),厨房中有燃气灶、微波炉、电饭煲……(工作中心)。妻子发现拨鸭毛最费时间(瓶颈工序,关键工艺路线),用微波炉自己做烤鸭可能来不及(产能不足),于是阅览室在楼下的餐厅里买现成的(产品委外)。

下午4点,电话铃又响:“妈妈,晚上几个同学想来家里吃饭,你帮忙准备一下。”(紧急订单)

“好的,你们想吃什么,爸爸晚上也有客人,你愿意和他们一起吃吗?”

“菜你看着办吧,但一定要有番茄炒鸡蛋,我们不和大人一起吃,6:30左右回来。”(不能并单处理)

“好的,肯定让你们满意。”(订单确定)

鸡蛋又不购了,打电话叫小贬送来。(紧急采购)

6:30,一切准备就绪,可烤鸭还没送来,急忙打电话询问:“我是李太,怎么订的烤鸭还不送来?”(采购委外单跟催)

“不好意思,送货的人已经走了,可能是堵车吧,马上就会到的。”

门铃响了。“李太太,这是您要的烤鸭。请在单上签一个字。”(验收、入库、转应付账款)

6:45,女儿的电话:“妈妈,我想现在带几个朋友回家吃饭可以吗?”(呵呵,又是紧急订购意向,要求现货)

“不行呀,女儿,今天妈已经需要准备两桌饭了,时间实在是来不及,真的非常抱歉,下次早点说,一定给你们准备好。”
(哈哈,这就是ERP的使用局限,要有稳定的外部环境,要有一个起码的提前期)

送走了所有客人,疲惫的妻子坐在沙发上对丈夫说:“亲爱的,现在咱们家请客的频率非常高,应该要买些厨房用品了(设备采购),最好能再雇个小保姆(连人力资源系统也有接口了)。

丈夫:“家里你做主,需要什么你就去办吧。”(通过审核)

妻子:“还有,最近家里花销太大,用你的私房钱来补贴一下,好吗?”(最后就是应收货款的催要)

现在还有人不理解ERP吗?记住,每一个合格的家庭都是生产厂长的有力竞争者!

来源: http://www.chinaunix.net/jh/28/330576.html

Access的一些数据最大值

2007年11月28日 星期三

属性 最大值
Microsoft Access 数据库 (.mdb) 文件大小 2G 字节减去系统对象所需的空间。
数据库中的对象个数 32,768
模块(包括“内含模块”属性为“是”的窗体和报表) 1,000
对象名称中的字符数 64
密码的字符个数 14
用户名或组名的字符个数 20
并发用户的个数 255

属性 最大值
表名的字符个数 64
字段名的字符个数 64
表中字段的个数 255
打开表的个数 2048;实际可打开的表的数目可能会少一些,因为 Microsoft Access 还要打开一些内部的表。
表的大小 2G 字节减去系统对象所需的空间
“文本”字段的字符个数 255
“备注”字段的字符个数 通过用户界面输入为 65,535;以编程方式输入时为 1G 字节的字符存储。
“OLE 对象”字段的大小 1G 字节
表中的索引个数 32
索引中的字段个数 10
有效性消息的字符个数 255
有效性规则的字符个数 2,048
表或字段说明的字符个数 255
记录的字符个数(除“备注”字段和“OLE 对象”字段外) 2,000
字段属性设置的字符个数 255

查询

属性 最大值
实施关系的个数 每个表为 32 减去表中不包含在关系中的字段或字段组合的索引个数
查询中的表的个数 32
记录集中的字段个数 255
记录集大小 1G 字节
排序限制 255 个字符(一个或一个以上字段)
嵌套查询的层次数 50
查询设计网格一个单元格中的字符个数 1,024
参数查询的参数字符个数 255
WHERE 或 HAVING 子句中 AND 的个数 99
SQL 语句中的字符个数 约为 64,000

窗体和报表

属性 最大值
标签中的字符个数 2,048
文本框中的字符个数 65,535
窗体或报表宽度 22 英寸(55.87 厘米)
节高度 22 英寸(55.87 厘米)
所有节加上节页眉的高度(在“设计”视图中) 200 英寸(508 厘米)
窗体或报表的最大嵌套层数 7
报表中可作为排序或分组依据的字段或表达式个数 10
报表中页眉和页脚的个数 1 对报表页眉/报表页脚,1 对页面页眉/页面页脚,10 对组页眉/组页脚
报表的打印页数 65,536
可添加到窗体或报表的控件和节的个数 754
SQL 语句中作为窗体、报表或控件的“记录源”或“行来源”属性的字符个数(适用于 .mdb 和 .adp) 32,750

属性 最大值
宏中的操作个数 999
条件中的字符个数 255
备注中的字符个数 255
操作参数中的字符个数 255

Microsoft Access 项目规格

Access 项目
属性 最大值
Microsoft Access 项目 (.adp) 中的对象数目 32,768
模块(包括“内含模块”属性为“是”的窗体和报表) 1,000
对象名称中的字符数 64
表中的索引个数 250 (Microsoft SQL Server 6.5)
1024(Microsoft SQL Server 7.0 和 2000)

Microsoft SQL Server 数据库

SQL Server 文档中描述了 Microsoft SQL Server 最大容量规格。有关 SQL Server 联机丛书的详细信息,请参见 Microsoft Developer’s Network Web 站点。

注意 使用该主题中的超链接会跳转到 Web 上,但随时可以切换回“帮助”。

窗体和报表

属性 最大值
标签中的字符个数 2,048
文本框中的字符个数 65,535
窗体或报表宽度 22 英寸(55.87 厘米)
节高度 22 英寸(55.87 厘米)
所有节加上节页眉的高度(在“设计”视图中) 200 英寸(508 厘米)
窗体或报表的最大嵌套层数 7
报表中可作为排序或分组依据的字段或表达式个数 10
报表中页眉和页脚的个数 1 对报表页眉/报表页脚,1 对页面页眉/页面页脚,10 对组页眉/组页脚
报表的打印页数 65,536
可添加到窗体或报表的控件和节的个数 754
SQL 语句中作为窗体、报表或控件的“记录源”或“行来源”属性的字符个数(适用于 .mdb 和 .adp) 32,750

属性 最大值
宏中的操作个数 999
条件中的字符个数 255
备注中的字符个数 255
操作参数中的字符个数 255

来源: http://blog.donews.com/enfant/archive/2007/10/30/1224195.aspx

虚惊一场

2007年10月08日 星期一

最近一直无法查看Clicky提供的网站统计, 以为是没有缴费被停止服务了. 但是另外的一个站点却一直可以正常使用. 工作上的事情比较忙就没有特别在意. 今天公司搬家, 不怎么想干活, 遇到打开站点仔细检查代码, 发现原来是上个月月底的一次更新主题把统计代码给丢掉了. 一直注意代码的版本检查, 没想到自己竟然在这里犯错. 志之备忘.

PS: 强烈推荐使用 Cilcky 提供的统计服务.