浏览模式: 普通 | 列表
1

class的沼泽地

[ 2006-10-19 18:55:13 | 作者: 痉挛的老鸨 ]
  先看这个文章,“最小接口”:
http://blog.csdn.net/mfowler/archive/2006/10/19/1340364.aspx

  Martin Fowler的确是oo的大师,对类的理解和解析的确很深入,但是我还是想表述一些不同的意见。对于class而言,越强大就会越臃肿,越简单就会越零碎,这是不可避免的问题。对于一个足够复杂的系统,class简单了不行,太散,最后的组装成本会相对过高,复杂了也不行,复用和维护的成本也很高。而且这两种都会造成中间层的脂肪过剩,虽然所有讲oo的书都会说过度复杂的中间层不好,但是没有哪本书提出了很好的解决办法,似乎归结到最后就只有依靠开发者本身了。这种情况其实很是可怕,面对目前的开发现状,很多系统对复用的渴求会越来越明显,但是老系统中到底有多少模块可以无缝移植,只怕没有人能说清楚。而且随着需求的变化,老系统的维护和升级也越来越成为一个巨大的负担,重写是最常见的最终武器,但这武器所带来的损耗和浪费也是相当惊人的。

  其实问题的核心是:如何在复杂度和可读性之间寻求最佳的平衡。人的脑容量是有限的和有差异的,不同的开发者对复杂度的衡量标准是不一样的。一个确定的模块,对某些人而言是容易理解和消化的,但对另外的人而言却复杂的无法吞咽,这是现实问题,并不是通过培训和努力就能消除的。不同的行业和不同的开发方向,一定会造成不同的理解范围和理解方式,也就造成不同的开发者之间会存在必然的差异。只要这种差异存在,之前所述的问题就一定存在。

  问题不可怕,可怕的是不敢去面对。真的勇士,敢于直面惨淡的人生;-) 个人看法,胶合层是一定要减肥的,但是如何减是一个问题。对于一个oo构架的系统,胶合层是一定存在的,如何做薄做小是个关键,同时薄和小的标准也是因人而异的。起码有一点我很肯定,胶合层的复用性是很差的,甚至可以说根本没有复用的可能,那么很简单,一个系统中只创建一个胶合层,尽量将特定的需求和无法复用的部分整合进来,同时随时做好丢弃的准备,一旦需要开发新系统或者需要升级系统,胶合层就成为第一个被牺牲的对象,如果设计的好,就有可能是唯一需要丢弃的部分,这样起码可以保证智力投资最大限度的保值。

  模块(class,接口,函数,随便你怎么定义它)的复用性如何,决定了它的生存时间,也直接反应了开发者的能力,如何确保复用性是个老生常谈...

阅读全文...
分类: tech | 评论: 0 | 浏览: 1061

立体界面

[ 2006-10-18 21:08:20 | 作者: 痉挛的老鸨 ]
界面为什么不能是立体的?切换视角,抽拉卡片,菜单一片片的分类排列,功能在天花板上整装待发......
分类: tech | 评论: 0 | 浏览: 969

昏昏欲睡的一天

[ 2006-10-15 22:15:40 | 作者: 痉挛的老鸨 ]
  昨天晚上工作到两点,大好的周末就这样在眼皮的极力抗议声中过去了一半,洗个澡,倒在床上昏然入睡。早上7:22,某男(后面简称S)歪着嘴,一幅苦大仇深的样子,就这样施施然的站在了门口。摇摇浆糊脑袋,开门迎客,开始干活,一口气弄到12点,留下一大堆的尾巴,终于告了一个阶段。吃完午饭,在夏末明媚的阳光里,背着一个破包,陪S去买笔记本。

  进了地铁,睁开打架的眼皮,发现周围好多美女,可惜的是美女旁边全是有保镖的,只好讪笑着移开视线,试图看清楚地铁外墙皮的颜色。人民广场出来,换2号线,坐一站,河南中路到了。S为了我的体重着想,决定步行到外滩换车。在向左走还是向右走的问题上我们产生了分歧,结果还是他的方向感战胜了我的占卜法。但是我坚决不同意顺着南京路走,在人群中穿梭总让我觉得我仿佛是一条被淹死的鱼,既无聊又无趣。于是折到九江路,向着仿佛触手可及的东方明珠前进。稀少的路人,充满各种想像的建筑,阳光躲藏在高高的建筑后面,风吹过来,有点凉。到了外滩,换55路,在等车的时候又发现了几个美女,唉,为什么我的眼睛总是这么具有良好的扫描能力?!

  晃到国权路,在斑驳的法国梧桐树影里,拐进一栋居民小区,在楼道里看到了无数搬家公司的小广告,墙上到处都是,脚下到处都是,一抬头,楼梯背面上居然也刷的满满的,红的黑的,仿佛红烧猪大肠,拖挂着,断而不绝。进了门,直奔主题,但是很不幸,想买的那台被人买了,磨蹭了一会,开拔去下一下地点:五角场。

  五角场的赛博实在是破烂,明显和徐家汇、淮海路的不是一个档次,但接待的小MM挺活泼,也蛮漂亮,观察了许久,S偷偷说了一句:明显是名花有主的人了(我实在不好意思复述S的原话,太露骨太淫荡鸟,我可是一个君子,虽然并非好人-_-#)。机器有一些小毛病,硬盘也被拔走了,管事的人新手上路,撞车了,正在交涉,还没回来。小MM除了哇哇的叫叽叽喳喳的笑,什么都不会,只好劳动我们自己动手了,但是没弄好。等了一会,老板终于回来了,于是我摆开架设,开始忽悠,最后老板终于蔫了,准备主动降价,但是S好像也被我忽悠进去了,觉得机器似乎的确不好,只好作罢。在商场里转了几圈,没什么意思,撤!

  再坐55路返回外滩的时候,车上坐了几个胖子,外面路上也不时能看到肉山也似的物体出没,今天是怎么了,反复提醒我减肥?S的前排先坐上来一位有着美丽头发的女孩,还没有YY够,又换了一个时髦女郎。...

阅读全文...
分类: other | 评论: 0 | 浏览: 1087

惯于视频压缩的聊天记录

[ 2006-10-11 22:01:17 | 作者: 痉挛的老鸨 ]
偶把贞操献给党 15:40:55
你做过视频么,有没有java的视频解码的东西,24帧/s最少需要什么样的cpu
老鸨 15:41:09
几路画面?
偶把贞操献给党 15:41:18
什么叫几路画面
偶把贞操献给党 15:41:28
需要在手持设备上开发
老鸨 15:41:55
是光解码还是包括压缩?
偶把贞操献给党 15:42:16
解码播放,应该不用压缩吧
老鸨 15:42:48
不如不用java,300mhz差不多,但是也要看是什么压缩格式
老鸨 15:43:25
什么系统?ce?linux?
偶把贞操献给党 15:43:52
跨平台, ce linux symbian 都有
老鸨 15:44:19
难度比较大
老鸨 15:44:41
支持什么压缩格式?ms mpegv4?xvid?wmv?
偶把贞操献给党 15:44:47
网上看到有人在192mhz的机器上玩qq视频
偶把贞操献给党 15:45:06
支持一种就够了
老鸨 15:45:14
qq视频是h263,分辨率又很低
老鸨 15:46:05
视频源是啥?文件?
偶把贞操献给党 15:46:34
视频源我们自己处理的任选一种就可以
老鸨 15:48:04
分辨率弄小一点,160x120,压缩可以考虑用xvid,通用,移植难度应该不大
偶把贞操献给党 15:48:06
h263解码运算量如何

老鸨 15:48:22
263的画面质量太烂
老鸨 15:48:29
而且控制不方便
老鸨 15:48:34
xvid比较好
万能的progame 15:48:47

偶把贞操献给党 15:48:52
控制不方便是指?
老鸨 15:49:02
xvid其实就是在h263基础上的延伸
老鸨 15:49:28
关键帧出的没有边,100帧出一个,谁受得了
老鸨 15:49:56
而且目前没有优化的h263解码器,除了那些闭源的
偶把贞操献给党 15:50:14
h263 画面太烂是指 ? 单位容量的编码,承载的数据少么
老鸨 15:50:14
intel有一个,ms好像也有一个自己的
老鸨 15:50:34
画面质量不高,马赛克比较严重
偶把贞操献给党 15:50:44
压缩率不可控的么
偶把贞操献给党 15:51:05
关键帧出的没有边? 是什么意思
老鸨 15:51:34
动态压缩靠两个方法,一个是静态压缩,这个是定死的,一个是画面间的object化,再做移动运算
...

阅读全文...
分类: other | 评论: 0 | 浏览: 1398
  这个操蛋的问题要从一年前说起,当初做无线点菜,PC端的接口是用C写的,提供的是lib/dll方式。有些客户惯于使用的是vc或delphi,这些都很方便,但是某些客户使用的是vb和pb,问题就来了。pb因为我并不熟悉,所以没有多管,vb一开始打算用的是dll,但是发现一触发事件就崩溃,在网上找了很久,发现问题出在事件触发是在thread中的,vb属于线程不安全的类型,所以一触发就崩溃,但是我又不能更换模型,后来写了一个ocx的版本,但是问题依旧,于是就搁置下来了,一直以来都是用delphi或vc做接口的,好在都是老客户,用delphi和vc写的接口还没有人发表过意见。

  今年这个版本已经相当完善,而且由于某些原因,开始做通用的802版本,所以需要支持更多的新用户,也因此意味着一定会遇到vb和pb的用户,不能让这些用户限定在delphi和vc的ide下,这是不行的,于是ocx的问题又一次摆在眼前。

  国庆节重写了ocx,基本上没有什么问题,但是因为没有设备,所以没有测试事件,前两天终于开始测试,让progame同志帮忙写了一个vb的测试程序,这就开始了。结果一开始就发现问题依旧,没办法,只好求助于网络,七拐八弯的终于发现了下面的网址:
  http://vcfaq.mvps.org/com/1.htm
  Why does my VB client keep crashing when compiled and not in the IDE when I use an ActiveX Control with a worker thread?
  这不就是我的问题么!

  原因倒也解释的很清楚:
  You probably fire events from the worker thread in your control. Since all ActiveX Controls live in single-threaded apartments, the event sink your VB client supplies lives in that STA too. VB operates in apartment model only, hence the pointer for the event sink is in fact ...

阅读全文...
分类: windows | 评论: 1 | 浏览: 1629
1