自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

切尔斯基

冰河洗剑,绝塞传烽,江山如画雪初晴

  • 博客(211)
  • 收藏
  • 关注

原创 客户识别 Client Categorization

真相通常在八卦中

2011-02-20 16:42:00 2042

客户识别 Client Categorization

  问题: 如何减少跟某个客户了解和确认并实现了的需求却被他的同事推翻需重新设计和实现 具体的原因有很多,其中一点是一开始没找对人. 一个项目,客户那边的stakeholder通常不止一个人,这些人有自己负责的领域. 他们也通常是某一领域的专家. 这里专家的意见要参考,但要找负责的人确认. 所以首要的就是识别谁负责啥. 以CWP项目为例, 初始客户那边有4个人. 他...

2011-02-20 16:42:00 101

原创 共识是很罕见的, 分歧是很珍贵的

知识是如此易错, 简直不值得有任何"权威"

2010-11-14 21:04:00 8781 11

共识是很罕见的, 分歧是很珍贵的

 没有什么事情是理所当然的. 我反而有点希望最终的结果是大家同意在smoke测试失败的时候可以继续提交.为什么会反复出现一件看起来不应该发生的事却一再发生, 直到Team中的某个人忍无可忍跳出来干预呢? 一个原因在于你认为不应该发生的事, 未必别人也认为不该发生, 即使是那些所谓的最佳实践, 或者, 尤其是那些所谓的最佳实践, 因为它们往往被缺省配置, 没有经过Team的讨论, 实际上...

2010-11-14 21:04:00 183

原创 Restatement: 性能,容量,负载,以及压力测试

<br />网上已经有很多详细解释性能测试, 容量测试, 负载测试, 压力测试各自的概念, 之间的联系以及区别, 还有骡子背东西等生动的例子...这里按自己的理解re-statement一下<br /><br />其实所有的一切都只是几个因素的相互作用, 互为函数: <br />并发量/数据量机器配置单个请求处理速度稳定运行时间<br /><br />A: 给定并发量/数据量,机器配置, 和必须的稳定运行时间,求单个请求处理速度(Example:所有请求都能在2秒内完成)<br /><br />B:

2010-07-26 22:46:00 3736

Restatement: 性能,容量,负载,以及压力测试

网上已经有很多详细解释性能测试, 容量测试, 负载测试, 压力测试各自的概念, 之间的联系以及区别, 还有骡子背东西等生动的例子...这里按自己的理解re-statement一下其实所有的一切都只是几个因素的相互作用, 互为函数:并发量/数据量机器配置单个请求处理速度稳定运行时间A: 给定并发量/数据量,机器配置, 和必须的稳定运行时间,求单个请求处理速度(Exam...

2010-07-26 22:46:00 103

原创 IoC 问题域

<br /><br />IoC避不开的一个问题是如何处理应用程序的模块化, 因为IoC通常针对单个对象提供了良好的支持, 比如依赖管理,生命周期管理,部署时配置甚至运行时配置, 但往往一组内聚的互相协作的对象才构成应用程序基本的构建块. 这组内聚对象间的协作关系是实现细节, 包括单个对象的构造函数和属性也是, 如果把这些暴露出来, 固然可以提高灵活性, 但是以最后的部署阶段的复杂性以及难以维护性为代价的. 以配置文件为例, 可能需要在包含了几百个对象定义的配置文件中, 去改动七八个属性, 变换五六个实现

2010-07-11 22:14:00 2686

IoC 问题域

IoC避不开的一个问题是如何处理应用程序的模块化, 因为IoC通常针对单个对象提供了良好的支持, 比如依赖管理,生命周期管理,部署时配置甚至运行时配置, 但往往一组内聚的互相协作的对象才构成应用程序基本的构建块. 这组内聚对象间的协作关系是实现细节, 包括单个对象的构造函数和属性也是, 如果把这些暴露出来, 固然可以提高灵活性, 但是以最后的部署阶段的复杂性以及难以维护性为代价的. 以配置文件...

2010-07-11 22:14:00 82

原创 Log 问题域

<br /> 如何不带来额外的效率损失如何在程序运行出错时记录尽可能多的信息如何方便查找特定条件的错误如何横切的添加通用信息<br /> 如何不带来额外的效率损失<br /><br />在之前接触的一个大型产品中见过散布着如下代码:<br /><br />if (Log.Level > DEBUG) {<br />    logger.write(some_method_to_build_the_log_string());<br />}<br /><br />问为什么不在logger.

2010-07-06 23:11:00 1415

Log 问题域

 如何不带来额外的效率损失如何在程序运行出错时记录尽可能多的信息如何方便查找特定条件的错误如何横切的添加通用信息 如何不带来额外的效率损失在之前接触的一个大型产品中见过散布着如下代码:if (Log.Level &gt; DEBUG) { logger.write(some_method_to_build_the_log_string());}问...

2010-07-06 23:11:00 86

原创 Validation 问题域

谁来做Validation何时做Validation如何表达错误如何传递错误如何关联错误到发生错误的对象, 尤其是对象图中非Root对象<br /><br /><br />这里的Validation指的是对进入到系统中的业务数据的校验(不包括Web应用中页面数据在浏览器端的验证)<br /><br />谁来做Validation<br /><br />数据的有效性不是自身所能决定的, 而是使用它的场景(Context)决定的, 因此, 每个Context应该有自己的Validation逻辑.<br

2010-06-28 21:58:00 1256

Validation 问题域

谁来做Validation何时做Validation如何表达错误如何传递错误如何关联错误到发生错误的对象, 尤其是对象图中非Root对象这里的Validation指的是对进入到系统中的业务数据的校验(不包括Web应用中页面数据在浏览器端的验证)谁来做Validation数据的有效性不是自身所能决定的, 而是使用它的场景(Context)决定的, 因此, 每个...

2010-06-28 21:58:00 88

原创 代码的物理组织

<br />同一个Feature的代码要放在一起(IDE里单独的一个工程, 或者工程里单独的一个文件夹), 这些代码要么全有要么全无的, 它们合作完成一个Feature, 如果用户不再需要这个Feature了, 可以把它们整个的痛快的删掉, 不会留下谁也用不到的代码成为系统的垃圾. 如果想看一个Feature是如何实现的, 那所有相关代码都在一起, 不需要在庞大的代码库中跳来跳去.<br /><br />那么理想的情况就是: 你看看源代码树里所有工程文件的名字, 或者文件夹的名字, 就知道系统提供了哪些

2010-06-20 23:31:00 1485

代码的物理组织

同一个Feature的代码要放在一起(IDE里单独的一个工程, 或者工程里单独的一个文件夹), 这些代码要么全有要么全无的, 它们合作完成一个Feature, 如果用户不再需要这个Feature了, 可以把它们整个的痛快的删掉, 不会留下谁也用不到的代码成为系统的垃圾. 如果想看一个Feature是如何实现的, 那所有相关代码都在一起, 不需要在庞大的代码库中跳来跳去.那么理想的情况就是: 你...

2010-06-20 23:31:00 82

原创 C#代码组织: project over folder

感觉.Net/C#在代码设计时和部署时的支持少了点什么

2010-06-16 23:32:00 1766

C#代码组织: project over folder

在.Net/C#项目中采用project(*.csproj)来组织代码比用同一个project不同的文件夹来组织有几个好处:从客户代码的角度, 我依赖你很少一点东西, 可以就只依赖这点东西(做成单独的project), 不需要依赖其它无关的代码从访问控制, Visibility 的角度, C#的internal关键字是针对物理模块的, 即dll的, 而不是名称空间或文件夹从避免双向依...

2010-06-16 23:32:00 109

原创 C#泛型: 消除Visitor模式的循环依赖, 以及无聊的Accept方法

前几天跟Yuan Ye Pair的时候发现了这个方法  1. 经典的Visitor模式(循环依赖) public interface Document { void Accept(DocumentVisitor visitor); } public class WordDocument : Document { public v

2010-03-15 23:37:00 2784 7

C#泛型: 消除Visitor模式的循环依赖, 以及无聊的Accept方法

1. 经典的Visitor模式(循环依赖)     public interface Document    {        void Accept(DocumentVisitor visitor);    }     public class WordDocument : Document    {        public void Accept(...

2010-03-15 23:37:00 99

原创 ORM问题域

 假设我们必须处理对象的存储, 加载, 和查询. 性能和引用完整性的约束, 给接口的实现带来了以下问题:加载根对象时如何避免加载大半个数据库存储时如何更新整个对象图存储时如何高效的更新整个对象图何时同步对象的内存状态和持久存储状态如何确保在出错时保持对象内存状态和持久存储状态之间的一致性如何保证引用的唯一性以避免可能的更新

2009-12-28 23:42:00 1783

ORM问题域

 假设我们必须处理对象的存储, 加载, 和查询. 性能和引用完整性的约束, 给接口的实现带来了以下问题:加载根对象时如何避免加载大半个数据库存储时如何更新整个对象图存储时如何高效的更新整个对象图何时同步对象的内存状态和持久存储状态如何确保在出错时保持对象内存状态和持久存储状态之间的一致性如何保证引用的唯一性以避免可能的更新冲...

2009-12-28 23:42:00 71

原创 Web开发问题域

HTML clipboard 1. HTTP本身无连接无状态, 如何在不同请求间识别用户以支持需要多个请求才能完成的业务?其它所有问题都是这个问题的某种解决方案引入的. 这个论断有一个推论, 就是不需要识别用户的Web应用是最简单的Web应用. 一种方案是所有的业务都设计成一次请求就可以完成, 比如让用户每次都输入用户名密码, 填写所有的表单, 然后一次性提交. 从用户体验

2009-12-06 18:01:00 2665 1

Web开发问题域

HTML clipboard1. HTTP本身无连接无状态, 如何在不同请求间识别用户以支持需要多个请求才能完成的业务?其它所有问题都是这个问题的某种解决方案引入的. 这个论断有一个推论, 就是不需要识别用户的Web应用是最简单的Web应用. 一种方案是所有的业务都设计成一次请求就可以完成, 比如让用户每次都输入用户名密码, 填写所有的表单, 然后一次性提交. 从用户体验的...

2009-12-06 18:01:00 79

工作随记

1. 录音: 软件不行, 不稳定, bug太多, 性能太差, 原因是程序员不行, 没经验; 客户关系不错2. 录像: 这是一个不自量力的项目, 就不该立项, 仅有热血是不行的, 对业界来说很成熟的技术了, 这边却几个生手从头搞起, 半路夭折实在情理之中3. CCTV CMS: 算是不错了, 现在看来那几乎是个敏捷团队: 在客户现场开发, 客户那边两个哥们对所有的需求都说了算. 所有...

2009-09-30 16:42:00 72

原创 卡尔.波普尔与敏捷开发

 卡尔.波普尔的理论能很好的解释目前的科学, 艺术, 政治, 社会等方面一般性的问题. 它对软件开发过程中一些显而易见的问题有着明确的答案. 比如, 我们都知道我们无法证明软件已经没有Bug, 用波普尔的话说就是: 科学理论都是假说, 爱因斯坦的竞争理论表明对牛顿理论的即使如海王星发现般严格的检验都不能确保其正确性, 即对白天鹅的一千次观察都不足以断言黑天鹅的不存在. 能否证伪是科

2009-09-28 23:01:00 1935 1

卡尔.波普尔与敏捷开发

 卡尔.波普尔的理论能很好的解释目前的科学, 艺术, 政治, 社会等方面一般性的问题. 它对软件开发过程中一些显而易见的问题有着明确的答案. 比如, 我们都知道我们无法证明软件已经没有Bug, 用波普尔的话说就是: 科学理论都是假说, 爱因斯坦的竞争理论表明对牛顿理论的即使如海王星发现般严格的检验都不能确保其正确性, 即对白天鹅的一千次观察都不足以断言黑天鹅的不存在. 能否证伪是科...

2009-09-28 23:01:00 99

原创 卡尔.波普尔摘要: 社会科学, 艺术, 及进化论

 主动的进化论一切活的事物都在寻求更加美好的世界, 积极主动的试错, 试错的结果是进化进化论是生命体有意识的选择, 而不是被动的选择悲观的自然选择, 意味着竞争限制自由. 乐观的主动选择, 意味着扩大自由: 去了解有哪些力量, 使这个世界变为一个整体 社会科学使用与自然科学相同的方法. 波普尔提到了经济学领域中出现的客观理解的方法, 或曰情境逻辑, 并建议尝试性

2009-09-27 16:35:00 1761

卡尔.波普尔摘要: 社会科学, 艺术, 及进化论

 主动的进化论一切活的事物都在寻求更加美好的世界, 积极主动的试错, 试错的结果是进化进化论是生命体有意识的选择, 而不是被动的选择悲观的自然选择, 意味着竞争限制自由. 乐观的主动选择, 意味着扩大自由: 去了解有哪些力量, 使这个世界变为一个整体 社会科学使用与自然科学相同的方法. 波普尔提到了经济学领域中出现的客观理解的方法, 或曰情境逻辑, 并建议尝试性...

2009-09-27 16:35:00 114

原创 卡尔.波普尔摘要: 知识分子, 科学家, 哲学家的职业道德

  知识分子的职业道德每个知识分子都有一个很特殊的责任。他拥有学习的特权和机会。作为回报,他对于同胞(或对于社会)有责任尽可能简单、清楚、谦虚地描述他的研究结果。知识分子所做的最糟的事情——主要罪过——是试图对同胞自命为伟大的预言家,给他们留下令人迷惑的哲学的印象。任何不能简单、清楚地讲话的人都应住口,继续下些功夫,直至能这样做为止我在上面(第1点)所说的主要罪过——受过不

2009-09-27 16:00:00 2803

卡尔.波普尔摘要: 知识分子, 科学家, 哲学家的职业道德

  知识分子的职业道德每个知识分子都有一个很特殊的责任。他拥有学习的特权和机会。作为回报,他对于同胞(或对于社会)有责任尽可能简单、清楚、谦虚地描述他的研究结果。知识分子所做的最糟的事情——主要罪过——是试图对同胞自命为伟大的预言家,给他们留下令人迷惑的哲学的印象。任何不能简单、清楚地讲话的人都应住口,继续下些功夫,直至能这样做为止我在上面(第1点)所说的主要罪过——受过不...

2009-09-27 16:00:00 141

原创 卡尔.波普尔摘要: 宽容, 冲突, 以及多元论

 无知及可错性是波普尔哲学的核心. 基于此, 波普尔阐述了其导致的宽容, 文化冲突, 以及多元论, 并批驳了与多元论类似但却错误的相对主义 宽容只是因为几千年来我们知识分子造成了最可怕的危害。以一种观念、一种学说、一种理论、一种宗教为名的大屠杀——这都是我们的所为、我们的发明:知识分子的发明。只要我们停止使人们对抗——常常怀着最好的意图——就会有很大改进。谁也不能说我们不可

2009-09-27 15:35:00 1946

原创 卡尔.波普尔摘要: 批评与理性主义, 怀疑主义, 以及启蒙运动

批评是波普尔最有力的武器. 波普尔赞同某些理论的大部分观点, 比如古典的怀疑主义, 启蒙运动, 理性主义等. 在某些观点上, 波普尔通过加入批评的理论来使其更完善 批评的意义但是,批评的意义并不在于引起人们的哀伤,而在于唤起人们来战胜苦难. 批评可以分为两类:第一类是由美学、文学兴趣激发的批评;第二类是由理性兴趣激发的批评。第一类批评促使神话发展成为诗歌,第二类批评促使神话

2009-09-27 15:05:00 3069

卡尔.波普尔摘要: 批评与理性主义, 怀疑主义, 以及启蒙运动

批评是波普尔最有力的武器. 波普尔赞同某些理论的大部分观点, 比如古典的怀疑主义, 启蒙运动, 理性主义等. 在某些观点上, 波普尔通过加入批评的理论来使其更完善 批评的意义但是,批评的意义并不在于引起人们的哀伤,而在于唤起人们来战胜苦难. 批评可以分为两类:第一类是由美学、文学兴趣激发的批评;第二类是由理性兴趣激发的批评。第一类批评促使神话发展成为诗歌,第二类批评促使神话...

2009-09-27 15:05:00 95

原创 卡尔.波普尔摘要: 历史决定论与历史多元论

波普尔明确的反对历史决定论, 以及进步的观点, 反对历史预言家. 波普尔主张历史多元论对历史决定论, 波普尔清楚的表明了人们的观念可以影响历史, 不存在某种内在的, 不可抗拒的规律决定历史的走向; 这可以到追溯到波普尔对于进化论的观点, 即有机体,生命都在主动的寻求更美好的世界: 反对历史决定论诸如“进步”、“倒退”、“没落”等观念意味着价值判断;因此所有这些理论,无论预言

2009-09-26 19:18:00 2964

卡尔.波普尔摘要: 历史决定论与历史多元论

波普尔明确的反对历史决定论, 以及进步的观点, 反对历史预言家. 波普尔主张历史多元论对历史决定论, 波普尔清楚的表明了人们的观念可以影响历史, 不存在某种内在的, 不可抗拒的规律决定历史的走向; 这可以到追溯到波普尔对于进化论的观点, 即有机体,生命都在主动的寻求更美好的世界: 反对历史决定论诸如“进步”、“倒退”、“没落”等观念意味着价值判断;因此所有这些理论,无论预言...

2009-09-26 19:18:00 152

原创 卡尔.波普尔摘要: 三个世界

 看不见摸不着的东西也会是客观存在的吗? 比如牛顿或爱因斯坦的理论是客观存在的吗? 客观知识只是波普尔更一般的客观世界的理论之一. 波普尔重新阐述了客观的含义, 把世界分为3个世界. 唯物主义和物理主义只认可世界1. 二元论者承认世界2的存在, 即人类的思维过程也是客观世界的一部分. 更激进的一种理论, 反而否定了世界1的存在, 认为"存在即被感知". 电影>便是建立在这种理论

2009-09-26 13:14:00 11840

卡尔.波普尔摘要: 三个世界

 看不见摸不着的东西也会是客观存在的吗? 比如牛顿或爱因斯坦的理论是客观存在的吗? 客观知识只是波普尔更一般的客观世界的理论之一. 波普尔重新阐述了客观的含义, 把世界分为3个世界. 唯物主义和物理主义只认可世界1. 二元论者承认世界2的存在, 即人类的思维过程也是客观世界的一部分. 更激进的一种理论, 反而否定了世界1的存在, 认为"存在即被感知". 电影&lt;&lt;Th...

2009-09-26 13:14:00 207

原创 卡尔.波普尔摘要: 客观知识

波普尔另一种伟大的思想是对客观知识的阐述 客观知识是用语言表达出来的思想波普尔:主观意义上的知识由以某些方式行动的、或者相信某些事物的、或者说某些话的倾向构成。我的知识由我的倾向构成,你的知识由你的倾向构成。客观意义上的知识由口头的或写出的或印出的陈述构成——在某些场合例如在科学刊物中出现的陈述或理论。牛顿的理论或者爱因斯坦的理论就是客观意义上的知识的例子。牛顿写下他的理论或讨论它

2009-09-26 11:38:00 3562

卡尔.波普尔摘要: 客观知识

波普尔另一种伟大的思想是对客观知识的阐述 客观知识是用语言表达出来的思想波普尔:主观意义上的知识由以某些方式行动的、或者相信某些事物的、或者说某些话的倾向构成。我的知识由我的倾向构成,你的知识由你的倾向构成。客观意义上的知识由口头的或写出的或印出的陈述构成——在某些场合例如在科学刊物中出现的陈述或理论。牛顿的理论或者爱因斯坦的理论就是客观意义上的知识的例子。牛顿写下他的理论或讨论它...

2009-09-26 11:38:00 174

卡尔.波普尔论柏拉图: 摘要

柏拉图发现了它的问题:如何医治有病的社会躯体。问题本身包含着一种理论——国家的和社会的有机论。(这种非常可疑的和有持久影响的理论的起源是东方。)社会有机论的柏拉图的新的和十分个人的变体是他在城市国家和人类灵魂之间所做的比拟:社会是以放大了的形式表示的灵魂,灵魂是小型的国家。这样他就创始了国家的心理学理论和灵魂的政治理论。国家是分为阶级的,它的结构可以由统治者及其助手(或者辅助者)构成的统治...

2009-09-25 23:57:00 175

原创 卡尔.波普尔摘要: 科学的方法

 波普尔浩瀚的思想中, 有几个基础的观点, 构成了他其它思想的基石:存在客观真理, 但我们无从知晓, 因此:科学知识都是假设, 猜想的知识, 我们只能通过试错法, 理性批评去证伪, 去发现更好的猜想, 去接近真理 可错论, 对一切人类知识可错性的承认, 充分意识到自己无可置辩的无知, 理智的谦虚, 意识到自己知道的何其少波普尔:

2009-09-25 23:49:00 2961

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除