随笔 - 157  文章 - 0  评论 - 468 
  置顶随笔
摘要: OEA框架 从 2009 年发布“第一个版本”之后,历时三年,现在终于又公开向大家开放最新的源代码。三年来,许多朋友都关心 OEA 是否还在开发,是否还会开源。其实,我们一直在不断改进和完善它。其间,2011 年 4 月,我也向大家简单地展示了当时的使用示例:《OEA 框架演示 - 快过原型的开发》。 目前,OEA 虽然已经到达 2.9 版本,并在内部的几个产品中成功运用。但是要面向业界开放,还是有许多地方需要完善,所以它的状态依然是 Pre-Alpha。我们期望通过开源,能让更多的人参与到早期的使用中来,这样框架也能更快得到更多的反馈并成长。OEA 框架简要说明:“OEA 是一个管理类软..阅读全文
posted @ 2012-03-30 23:28 BloodyAngel 阅读(1730) 评论(13) 编辑
摘要: 空杯心态,接受新事物。 没有实践就没有发言权。 没有彻底理解,不要去推翻它。 不要抨击其它你认为没有意义的技术,任何事物都有它产生的原因。 不要看不起老技术。只有站在巨人的肩膀上,你才能看得更远。 认识到:业务是收益、技术是成本。设计杂谈 如何做到方案设计得比较完善?答:一项浩大的方案设计,需要平时不断地收集、整理问题。这样才能在出解决方案的时候,做到尽量全面地解决问题。不可能靠人脑临时想出一个完善的方案,很可能会丢三落四,顾此失彼。 WPF框架使用有感: 不熟悉框架的时候,使用框架写出来的上层代码很...阅读全文
posted @ 2010-11-18 08:38 BloodyAngel 阅读(219) 评论(0) 编辑
摘要: 世界是物质的,物质是运动的,运动是有规律的。 系统论:要全面地、联系地、发展地看待事物,不要片面地、孤立地、静止地看待事物。 按客观规律办事:实事求是。 普遍规律与特殊规律相结合:具体问题具体分析。 主要矛盾和次要矛盾:抓主要矛盾,要事第一。 认识论:实践、认识、再实践、再认识,循环往复,螺旋上升。 透过现象看本质:内因决定事物的本质,外因只有通过内因才能起作用。 量变引起质变。 对立统一:事物都是一分为二的。 物质决定意识、意识对物质有反作用。学习:由浅入深、由表及里。执行力:专注+计划文章:总论点+导航+结构...阅读全文
posted @ 2010-01-04 12:36 BloodyAngel 阅读(316) 评论(9) 编辑
摘要: 我原来在"这篇总结"中总结过一种的思维方式:TT(Tree-Thinking)。(嘿嘿,程序员嘛,喜欢用本行的术语(Tree)来解释一些现象。)一直以来,我都认为TT思维是很正确的,是比较不错的思维模式。这种方法可以用来考虑很多的事情了。 不过最近发现,事情并不是那么简单。这种TT的结构化思想虽然好,不过并不够。 Graphic Things 事物之间都是存在联系的。很多事情并不能简单的按照Tre...阅读全文
posted @ 2009-12-22 19:24 BloodyAngel 阅读(386) 评论(3) 编辑
  2012年5月10日
摘要: 今天做了一个 VS 的插件,给大家分享下。暂时有以下三个功能: *添加文件头 在任意文本页面,点击该按钮,可添加文件头: 格式可以在插件对应目录下的 hxyAddIn_FileHeaderTemplate.xml 中修改: ,内容如下: <?xml version="1.0" encoding="utf-8" ?> <FileHeaderTemplate> <NowFormat>yyyyMMdd</NowFormat> <Content> <![CDATA[/***************阅读全文
posted @ 2012-05-10 12:45 BloodyAngel 阅读(1660) 评论(8) 编辑
  2012年4月25日
摘要: 在 OEA 平台 设计中,需要支持多种数据库,这至少包括了 SqlServer、Oracle、一个单机文件数据库。而之前对于这一块,我们一直没有实现,只是预留了许多接口。昨天花费了一天的时间,让 OEA 支持了本地数据库 SQLCE。 为什么要支持本地数据库呢? 支持开发简单的本地软件。 偶尔需要一些比较小的应用程序,例如“个人计帐管理”、“个人联系方式管理”等。这些...阅读全文
posted @ 2012-04-25 13:08 BloodyAngel 阅读(1136) 评论(0) 编辑
  2012年3月30日
摘要: OEA框架 从 2009 年发布“第一个版本”之后,历时三年,现在终于又公开向大家开放最新的源代码。三年来,许多朋友都关心 OEA 是否还在开发,是否还会开源。其实,我们一直在不断改进和完善它。其间,2011 年 4 月,我也向大家简单地展示了当时的使用示例:《OEA 框架演示 - 快过原型的开发》。 目前,OEA 虽然已经到达 2.9 版本,并在内部的几个产品中成功运用。但是要面向业界开放,还是有许多地方需要完善,所以它的状态依然是 Pre-Alpha。我们期望通过开源,能让更多的人参与到早期的使用中来,这样框架也能更快得到更多的反馈并成长。OEA 框架简要说明:“OEA 是一个管理类软..阅读全文
posted @ 2012-03-30 23:28 BloodyAngel 阅读(1730) 评论(13) 编辑
  2012年3月28日
摘要: 之前做秒杀器的时候,使用的是 WPF 客户端,借助 HttpWebRequest 来实现远程调用。后来看到别人抢火车票的软件是一个 Chrome 插件,发现这样写起来要简单太多了。一直想搞一个插件。今天比较闲,做了一个简单的插件,用于一次性打开多个连续的连接地址,例如这个网页:它一共有 15 页。一页一页点实在太累,这时,可以使用这个插件,点击一下,弹出以下窗口:Url 已经根据当前的连接地址修改好了,调整部分系数,点打开,即在 chrome 里面打开了所有的网页,看完一个关一个就好了:这样一次性加载好,不用点一下等一会儿。有兴趣的朋友可以下载下来玩下,看源码的也行,非常简单,下面是程序和源码阅读全文
posted @ 2012-03-28 17:10 BloodyAngel 阅读(102) 评论(2) 编辑
  2012年2月14日
摘要: 简要说明 OEA 1.0-2.0 框架中,界面都是以 WPF 技术作为基础平台开发的。我们需要对开发出来的系统进行自动化测试,而 .NET 平台的自动化测试平台在公司内部还没有其它部门完成,所以我们在 2010 年的时候使用 Ruby + VS UIUnitTest 开发了一个 UI 自动化(UI Automation,以下简称为UIA)框架,估且称其为 UIA 1.0。UIA 1.0 完全由周金根搭建,相关的内容,大家可以参考他写的这几篇文章: 《使用VS2010的CodedUI来做自己的自动化测试框架》 《IronRuby - 编写自动化测试脚本》 《信息系统开发平台Open...阅读全文
posted @ 2012-02-14 16:33 BloodyAngel 阅读(1503) 评论(8) 编辑
  2012年1月19日
摘要: 11年11月我主要对 OEA 框架中 WPF 自动界面生成模块中多类型树型表格控件进行重构,并同时支持更多的功能。这样,整个 OEA 就不再使用 DataGrid,结束了 DataGrid 与树型表格控件混用的情况。 树型表格、一般表格统一为一个控件: 另外,附上对重构前的控件类结构设计分析图:阅读全文
posted @ 2012-01-19 15:24 BloodyAngel 阅读(107) 评论(0) 编辑
  2012年1月11日
摘要: 这篇设计文档是 12 月份写来参加公司的研发峰会的,自己倒是信心满满,不过最后还是没有入围。现在想想也没啥大用,所以贴出来,期待与园友交流。 文档有点长,没全部贴在博客中,有兴趣的可以下载附件中的 PDF。附件:《实体扩展属性系统-系统设计说明书.pdf》================= 分隔线 ======================目录 前言... 4 1 背景与需求... 5 1.1 产品 721 客户化开发的需要... 5 1.2 实体动态列... 6 1.3 分离只读/视图属性... 6 1.4 提升框架性能... 6 1.5 支持 WPF 绑定... 6 1.6 其它需求..阅读全文
posted @ 2012-01-11 21:10 BloodyAngel 阅读(1250) 评论(8) 编辑
  2011年12月12日
摘要: 本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提升 OEA 框架中 TreeGrid 控件的性能,同时,给出了一些学习 UIV 的资源。 问题 最近对 OEA 的 TreeGrid 控件进行了比较大的改造,并使用新的控件来替换了系统中所有的 DataGrid 控件。新的 TreeGrid 控件实现了很多新的功能,(之后会写一篇文章说明),但是最后遗留了一个问题:由于使用它替换了原来的 DataGrid,而 DataGrid 默认是支持 UI Virtualization 的,当有些界面的数据量比较大时,没有支持 UIV 的TreeGrid 控...阅读全文
posted @ 2011-12-12 00:14 BloodyAngel 阅读(1569) 评论(4) 编辑
  2011年11月19日
摘要: 为 OEA 框架 做 WPF 树型表格控件时,浪费了许多时间在一些知识点上,所以写了这篇博客总结一下,和各位博友分享。ICollectionView 接口的简易使用方法 它的 SortDescriptions、GroupDescription 等属性会影响视图的结构,一般情况下会自动刷新。 也可以直接使用 Refresh 方法来命令视图的刷新(内部实现一般为重建内部视图模型集合)。 如果是批量操作,也可以使用 RefreshDefer 方法来抑制多次刷新,待多个更新操作后再统一刷新。CollectionView 相关知识点 实现它的类是 CollectionView,...阅读全文
posted @ 2011-11-19 19:26 BloodyAngel 阅读(1060) 评论(0) 编辑
  2011年10月30日
摘要: 时间有限,简单快速的完成本篇博客……(很多问题在此就不细说清楚了,主要还是记录一下成果。) * 先是整个子系统要完成的需求列表: * 然后是对它的分析,以及整个逻辑方案的结构。 图中的“概要”部分同时说明了静态结构和运行时时期的划分。 * 以及,这样的结构,如何实现整个需求的描述: * 逻辑方案中的静态结构,主要还是看以下的类图设计: 第一张,自然是托管属性本身的结构设计。当时只考虑了编译期属性的实现,后来添加了运行时属性的实现。二者实现方案不同,前者使用数据,后者使用哈希表,主要是为了性能及动态之间的权衡。 使用托管属性的...阅读全文
posted @ 2011-10-30 11:47 BloodyAngel 阅读(143) 评论(0) 编辑
摘要: OEA 将会使用最新的扩展属性系统来编写实体类,而这些实体类需要绑定到WPF界面上。那么,扩展属性如何支持绑定呢?下面的图是分析在 WPF 中如何支持 DataTable 的动态列绑定。之后的 OEA 扩展属性系统中,会做出类似的设计,以支持绑定扩展属性。 图1 WPF 中 DataTable 支持绑定的核心类分析 图2 WPF 中为 DataTable 生成视图模型的流程图阅读全文
posted @ 2011-10-30 11:28 BloodyAngel 阅读(103) 评论(0) 编辑
  2011年9月13日
摘要: 【现象与案例】 八一七培训。 【感谢】 感谢老江如此辛苦地为大家培训,感谢所有辅导员,你们睡得比学员晚,起得比学员早,给学员带来这种有意义的培训。感谢洪星,大半夜不睡觉和我沟通,帮助我渡过思想上的难关。 【反思】 反思的东西实在太多了,真要挨个写下来的话,实在太花时间。所以挑重点的写写吧,我也简单,看的人也简单。 培训中,我学会了一些知...阅读全文
posted @ 2011-09-13 20:56 BloodyAngel 阅读(71) 评论(0) 编辑
  2011年9月2日
摘要: 随手理了理 RoutedEvent 相关的几个知识点:阅读全文
posted @ 2011-09-02 15:30 BloodyAngel 阅读(90) 评论(0) 编辑
  2011年8月30日
摘要: 上个月写了《框架模块设计经验总结》,这个月写了一些相关的流程的图,用于规范开发组的日常开发活动。时间比较晚,不过多解释,图也比较简单。 前两幅图是规范了在 OEA框架开发过程中,代码的管理流程: 第三张图主要规范了开发组内部如何进行框架的开发活动。阅读全文
posted @ 2011-08-30 22:59 BloodyAngel 阅读(219) 评论(1) 编辑
  2011年7月15日
摘要: 三个月没写日志了,比较懒散……下半年准备做OEA 的 B/S 版本,比较复杂,需要从架构设计开始认真入手。正好今天到了部门反思的时间,今天先把原来的一些设计经验总结一下,以方便将来回顾。 直入主题,这篇日志主要用于总结一些框架级别的模块设计经验。总述 一个大型的框架,必然由多个较独立的子系统/子模块构成。这些子模块如何交互,之间的接口如何定义,这是框架的架构设计的问题。而今天我主要要总结一下,针对其中的某一个子模块,应该如何进行设计。(例如,在 OEA 中有这些相对独立的模块:分布式框架、实体框架、界面生成框架、命令框架、产品线框架、分布式缓存框架、报表模块……) 我在对一个模块进行设计时,.阅读全文
posted @ 2011-07-15 16:33 BloodyAngel 阅读(2091) 评论(3) 编辑
  2011年4月15日
摘要: 这篇文章和《PDA感悟》一样,是对一年前学习到的相关知识的一个应用反思。 写它,是为了完成每月反思,也是为了完成我这个月的目标,更是为了积累项目流程经验。 之前已经看过刚进公司的时候,由于项目组需要使用 Scrum 作为流程来进行软件开发,所以当时看了一遍《Scrum and xp from the trenches》,主要目的是了解 scrum 中的主要内容,以促进早日融入项目组,并写了一篇介绍 Scrum 的入门级别的文章:《Scrum 大白话总结》。 至今,时间过去了也有一年多了。在这一年多里,项目组不断使用 Scrum 进行开发,但是总是感觉有些地方不太对,没有想象中的“敏捷”...阅读全文
posted @ 2011-04-15 13:26 BloodyAngel 阅读(1508) 评论(10) 编辑
  2011年4月11日
摘要: 作为一个开发人员,个人管理这些软件技能可以说和开发技能一样重要。 之前写了一篇《PDA感悟》(还有《脑子是用来想事的,不是记事的》),主要是对过去一年来使用PDA来进行GTD和个人管理的情况进行总结。在公司里,和组内的同事们进行了分享,最后还拿了个“反思奖”。他们提出要求要我进一步分享我个人做时间管理的模板和小工具。这里我把这些东西打了一个包,顺便发上来和园友们进行一个分享。 主要包含:计划模板(月模板/周模板/任务管理模板)小工具组(快捷文件管理器/每日记事/定时器)极力推荐前两个小工具,应该会对你有所帮助。 :) 其中的小工具,除了定时器,其它两个都需要安装 .net 4.0 才能运行..阅读全文
posted @ 2011-04-11 23:02 BloodyAngel 阅读(1863) 评论(8) 编辑
  2011年3月26日
摘要: OEA框架经过几次较大的重构后,已经慢慢地变得成熟。 09年末、10年初的时候,我们发布了《OEA1.0》。至今也一年多了,中间我们并没有发布它最新的源码。所以有些朋友问到是不是这个框架已经停止开发了。 那么今天呢,我个人录制了一个简单的视频,来说明一下,OEA目前的使用方法,有兴趣的朋友也可以了解一下这个框架当前的进展。 视频中,我简单地录制了如何做一个小型的《图片管理系统》。我先随便列举几点 OEA 目前做到的功能:快过原型:在理解领域模型的基础上,要搭建整个应用程序,扣除中间的一些讲解占用的时间,完全可以在5分钟内完成。真正做到“快过原型”。基于产品线开发:能让开发项目快速转换为开发产.阅读全文
posted @ 2011-03-26 12:22 BloodyAngel 阅读(3139) 评论(16) 编辑
  2011年3月25日
摘要: 由于之前已经尝试使用过 EF CodeFirst CTP4,所以这次在EF4.1发布的第三天,在 OEA 框架中已经支持使用它来实现数据访问层。而且,我们准备逐渐把原有的较量级ORM框架给替换掉,并且使用EF中的元数据系统来完全充当 OEA 中的 ORM 元数据,以便使用这些映射信息来实现一些更多的操作。由于还没有时间把整个 EF 的 MSDN 拿下,所以暂时只是在网上看了一些相关的文章。而最近又正好在重构 OEA 框架的元数据子系统,所以,这篇文章里,我主要对 EF 的元数据进行一个简单的分析。 注意,以下的分析只代表我的个人观点。 不了解 EF 元数据的朋友,我这里给出一篇我觉得写得蛮不.阅读全文
posted @ 2011-03-25 20:51 BloodyAngel 阅读(1579) 评论(2) 编辑
  2011年3月14日
摘要: 又到了一月反思时,思绪乱飞,无从谈起…… 谈谈PDA吧。 09年8月份入手第一个智能手机,一直用到现在,发现生活越来越离不开它。10年11月份秒了一台平板电脑,到目前为止,发现同样的一个现象:离不开了!如果回到过去,问我自己,5000元一台买不买,我的答案一定是:买!现在就来回想一下,为什么会感觉自己完全离不开这些新的PDA呢? 先说手机, 当时买这个手机的时候,完全是出于兴趣,4500入手,买...阅读全文
posted @ 2011-03-14 21:43 BloodyAngel 阅读(404) 评论(5) 编辑
  2011年3月8日
摘要: 今天突然发现,去年做的峰会会议笔记,内容还不错,传上来做下记录。贾总: 质量相关: 温昱 峰会.mmap.rar阅读全文
posted @ 2011-03-08 09:42 BloodyAngel 阅读(116) 评论(0) 编辑
  2011年3月7日
摘要: 前言 最近看了《FDG 2nd Edition》,也适当做了些笔记,在这里写这篇文章的目的主要有两个,一是对自己学习的一个记录、积累;另外,还可以用这篇总结向一些有需要的朋友推荐这本书。书籍总结 这本书是MS公司的框架设计师,经过多年框架开发后的经验总结。 首先,它是一本设计规范。该书从规范的角度,规定了一个好的框架应该满足哪些条件、不应该犯什么错误。它从粗细不同的各个维度详细地列出了很多规范,细则细到变量名的命名,粗得粗到.NET中的模式应用规范。(早知道有这样一本书,我们就可以不用再为项目组编写代码设计规范了。哈哈。) 其次,这不但是一本“规范”,更是一本.NET平台上进行程序设计的指导.阅读全文
posted @ 2011-03-07 21:25 BloodyAngel 阅读(330) 评论(2) 编辑
  2011年2月22日
摘要: 本篇博客依然用于总结工作中遇到的较有用的设计模式。 入正题。 历史代码 我目前开发的系统中,要实现以模块的方式进行动态扩展。这些模块是以独立程序集的方式嵌入到系统中。原系统中,使用了一个简单的接口 IModule 来实现模块的初始化:public interface IModule{ void Initialize();}这样,在应用程序初始化时,会检测指定目录 Modules 下的所有程序集,并对其中所有实现 IModule 接口的类型进行初始化调用:public partial class App : Application{ protected override...阅读全文
posted @ 2011-02-22 11:03 BloodyAngel 阅读(1945) 评论(11) 编辑
  2011年2月15日
摘要: 20110918 添加 Glodon 任务规划 20110612 修改 经过年中分析,把下半年目标定为: 重心转向技术开发,有闲暇的时间就继续完成年初计划中的其它项。在技术学习方面,注意:不要花太多时间在开发“小系统”上,也不要花太多在学习“不必要”的技术上。要有目的性和成本观念。 年度内,至少完成 OEA 的分页;B/S 和 100%完成C/S 之中至少一项。至少使用一个项目测试 OEA。 20110215 了解创业:10%整理出创业能力要求体系,并制定后几年的具体目标。 学会理财:10%学习两本理财(股票)方面的书籍。制定理财方面计划。 重捉管理:30%以管理小作坊为目标...阅读全文
posted @ 2011-02-15 22:09 BloodyAngel 阅读(286) 评论(9) 编辑
  2011年2月10日
摘要: 2011年的计划到现在还没有做出来,最主要的原因是10年的方向并不清楚。趁着过年在家闲着的这段时间,把《我也能做CTO-程序员职业规划》这本书看一看,希望能对年度计划有所帮助。截止今日,已全部读完,以下是读书笔记。 最后一章,由于离目前的我还较远,所以并没有做详细的记录。 一些其它的想法/收获:阅读全文
posted @ 2011-02-10 19:51 BloodyAngel 阅读(179) 评论(1) 编辑
  2011年1月24日
摘要: 整个命令系统的流程如下: CommandManager 负责监听一些它关注的属性的更改(例如:Focus、Click),当界面上有此类事件发生时,它会通知所有的 RoutedCommand 发生 CanExecutedChanged 事件。 这时,已经绑定了这些 RoutedComamnd 的 CommandSource (主要是各类控件),会调用 RoutedCommand 的 CanExecute 方法来检测是否可执行,并根据返回的结果来设置自己的状态。如,当返回可执行时,作为 CommandSource 的按钮则会设置自己的 IsEnabled 属性为 true。此时,如果用户“点击”阅读全文
posted @ 2011-01-24 09:42 BloodyAngel 阅读(197) 评论(0) 编辑
  2011年1月17日
摘要: 读书的一个流程分析:以下是读书笔记/Files/zgynhqf/如何阅读一本书.rar阅读全文
posted @ 2011-01-17 09:05 BloodyAngel 阅读(164) 评论(1) 编辑
  2011年1月13日
摘要: 今天成绩下来了,本来以为要等到1月17号才会发布,一直没查,还是朋友帮我查了,我才知道已经考试通过了。之前简单地在《2010目标》中描述了一下去年考试的过程,现在既然过了,正好又到了一月反思的时候了,就决定再写这篇博客详细记录一下去年考架构师的整个经历。为什么要考架构师? 09年12月定的计划,当时定这个目标的原因有以下四个:办北京户口。我09年9月份到现在的公司上班。刚到公司的时候,虽然我是是属于社招进来的,但是自己毕竟是当年毕业的应届生,所以就主动问人事部,是否可以为我办北京的户口。得到的答案当然是不行,只有研究生才可以。但是,还得到另一消息说,本科生考取国家认定的高级职称后,在高新技术阅读全文
posted @ 2011-01-13 21:21 BloodyAngel 阅读(950) 评论(6) 编辑
  2011年1月7日
摘要: 本文记录对某网站A的秒杀活动编写秒杀器的经历和技术重点。 故事回顾 某日早上,朋友给我说最近A网站在开展秒杀活动,有IPad、IPhone,让大家一起去秒杀。结果我们四个人一起秒,都没有别人快,没有一个人秒到。然后下午我就开始尝试分析它网站的秒杀流程,并尝试使用自动提交数据的方案来进行秒杀。结果,在晚上的时候,成功做出了第一个版本的秒杀器,然后我们一起秒杀了几个IPad(大家都想要IPad,而对...阅读全文
posted @ 2011-01-07 23:13 BloodyAngel 阅读(929) 评论(3) 编辑
摘要: 之前写过几篇关于聚合对象SQL的文章,讲的是如果设计框架,使用一句SQL语句来加载整个聚合对象树中的所有数据。相关内容,参见:《性能优化总结(二):聚合SQL》、《性能优化总结(三):聚合SQL在GIX4中的应用》。由于没有使用其它的ORM框架,当时项目组决定做聚合SQL,主要是为了减少SQL查询的次数,来提升部分模块的性能。现在看来,当时虽然达到了这个目标,但是聚合SQL的API却不简单,使用极为不便。至今,项目组中的其它人也不会使用。所以,这次我们决定把聚合SQL的API使用再次进行封装,以达到使用起来更简便的效果。 本文中的内容与前面几篇的内容、与OEA框架中的内容相关性比较大,有兴趣的阅读全文
posted @ 2011-01-07 16:48 BloodyAngel 阅读(1082) 评论(2) 编辑
  2010年12月20日
摘要: 上篇文章《OEA中的AutoUI重构(2)- 评审会议前的总体设计》写了在“OEA框架”中进行AutoUI模块重构的设计方案。最近项目组已经召开了评审会议,并对该设计进行了审核、建议。本篇文章主要记录其中一些主要的改动。 设计改动 大家认为 AggregateBlocks 和 BlockDefinition 的设计过于复杂,不易于理解。考虑的东西太多,有过度设计之嫌,所以这一处的设计改为使用Composite模式来组合“UI块”: 另外,上次的设计中,有一个小错误:不应该把元模型的仓储 UIInfoRepository 放在单个的界面组成单元中,而是应该放在更上层的整个界面的元模型层。 相应阅读全文
posted @ 2010-12-20 17:58 BloodyAngel 阅读(133) 评论(1) 编辑
  2010年12月19日
摘要: 今天参加了一年一度的《中国软件工程大会》,听了许多前辈在台上精彩的演讲,自己也有很多感触。接下来,我会先把几个重要的演讲总结一下,最后再写一个自己的心得。项目经理领导力演讲者:田俊国领导力和领导二者并没有直接关系。很多名为领导的人,常常被下属牵着鼻子跑。达成共识、目标共享一个搬梯子的故事形象地解释了和下属共享目标的重要性。要做冰山下的沟通一座冰山,只有很少的一部分是露在水面上的。如果只做表面的沟通,往往不是最直接的,也不能很好地达到沟通的目的。做一个高自尊的人气球原理要当领导,至少你的气球要能包容你下属的气球。做好教练势利权形情类似于金木水火土、仁义理智信。软件企业常见问题和系统性解决方案 演阅读全文
posted @ 2010-12-19 11:25 BloodyAngel 阅读(156) 评论(2) 编辑
  2010年12月17日
摘要: 之前已经写了一篇关于其中Command模块的重构:《OEA中AutoUI重构(1) - Command自动生成》。Command自动生成的重构作为本次重构的一个“前锋战”,尝试用OO的方式把原来的过程式的界面自动生成流程进行优化,以支持更好的可扩展性。Command自动生成较为独立,所以就单独先进行了重构,目前重构已经完成,效果较好:和原有系统完成兼容,同时插入了更多必需的扩展点。 本次重构主要...阅读全文
posted @ 2010-12-17 15:17 BloodyAngel 阅读(805) 评论(1) 编辑
  2010年12月14日
摘要: 现象 这个月我的工作任务中,有一项是重构OEA框架中的AutoUI部分。这个任务在月初时计划在一个月内完成,包括问题分析、设计新的结构、编写设计文档、开展设计评审、代码实现。原计划半天到一天的评审会议,最后花费了大概一天半的时间。接下来,我就评审会议中出现的问题进行一下总结。 本次AutoUI设计是我到公司以来,觉得最有挑战的一次工作。 会议之前,我和组内的人员进行了多次沟通,了解他们的需求:我们的AutoUI框架当前有些什么问题?当界面需求被提出后,我们对它的完成情况怎么样?开发人员对AutoUI有什么期望?测试、需求人员对AutoUI有什么期望?布局有什么问题?期望的GIX4界面是什么阅读全文
posted @ 2010-12-14 16:39 BloodyAngel 阅读(238) 评论(3) 编辑
  2010年12月10日
摘要: OEA框架的核心之一是AutoUI,其职责是面向领域模型及UI元模型进行生成统一的界面。 在本次的迭代开发中,需要对命令按钮的生成方式进行一些定制。由于原来并没有为这样的需求留有特别的扩展点,加之原来的生成代码是过程式的代码、且也变得比较冗长,所以我们决定对这一部分的代码进行重构。 原来的模式 历史代码中,为某一实体类生成命令按钮的流程是这样的: 找到实体类可用的所有命令按钮元数据。 对它们进行过滤,依靠权限、版本的客户化元信息等。 构造几个生成控件的List容器,分别是:itemsInToolbar,itemsInContextMenu,itemsInGroup。 遍历所有的命令按钮,根据.阅读全文
posted @ 2010-12-10 16:19 BloodyAngel 阅读(1152) 评论(0) 编辑
  2010年12月9日
摘要: 本篇博客简单描述了Repository模式在OEA中的应用。 不使用Repository时的问题 OEA框架中使用了DDD的思想,面向领域对象进行开发。在DDD中,有很多重要的概念,例如:聚合实体对象、值对象、仓储、工厂、服务等。(不太了解的Repository和DDD的朋友,可以看Evans写的《Domain Driven Design》。) 在OEA中,实体的实现框架使用了CSLA分布式框架。原来为了简单并保持和CSLA开发模式的兼容,一直都把实体的获取模式直接以静态方法的方式直接写在实体的对应列表类中。例如下面这段代码: 随着应用的慢慢深入,出现了一些问题: 不易支持客户化。OEA阅读全文
posted @ 2010-12-09 11:17 BloodyAngel 阅读(1329) 评论(2) 编辑
  2010年11月29日
摘要: 项目组目前开发的基于OEA框架的GIX4项目,本次功能已经完成得差不多了,本次迭代的目标主要是提升产品的性能。由于GIX4是C/S结构的应用程序,所以决定实现缓存模块来提升高繁数据访问的缓存。 本篇文章主要介绍了OEA框架中的缓存模块设计与一般的缓存有什么不同,如何在OEA框架中实现缓存模块。分为以下几个小节: 一般缓存介绍 OEA缓存目标 概要设计 通用缓存框架的详细设计 OEA中集成Cache的详细设计 小结 一般缓存介绍 网上介绍缓存的文章比较多,在这里我就挑点重点说一下。 缓存是信息系统软件硬件设计中常用的设计方法:从底层硬件的CPU结构中的多级缓存,到软件中操作系统中内存阅读全文
posted @ 2010-11-29 15:02 BloodyAngel 阅读(1423) 评论(3) 编辑
  2010年11月22日
摘要: 以下,我使用一个实例,分享一下用于简化泛型API设计的小技巧,“如何在泛型方法调用时,过滤掉可以隐式推断出的泛型参数”: 原有设计: 系统中原来有这样一个静态的泛型API:使用方法:可以看到,该方法虽然可以从参数中隐式推断出 P 的具体类型,但是无法推断出 T 的具体类型,所以需要显式指定T的类型。由于语法特性的问题,我们不能使用RegisterProperty<User>(e => e.Code)的方法来只传递一个泛型参数给API;导致在使用该方法时,不得不把所有的的泛型参数都显式指定,也就是上面的使用方法。灵光一现: 如何做到不传递第二个泛型参数呢?在N天之后,发现了以下这个方法可以简化阅读全文
posted @ 2010-11-22 10:00 BloodyAngel 阅读(2179) 评论(5) 编辑
  2010年11月19日
摘要: 最近在学ASP.NET MVC,画了一些图,和大伙分享下: Routing 组件 图1 独立的ASP.NET Routing组件 MVC-Controller 图2 Controller结构 图3 Controller中可用的ActionResult MVC-View 图4 使用的抽象工厂模式的视图引擎 图5 视图模型 在这里,我没有写出具体的内容,在园子里搜索一下会有很多。:) 推荐一下这个系统,蛮清楚的:《从零开始学习ASP.NET MVC》。阅读全文
posted @ 2010-11-19 09:24 BloodyAngel 阅读(3028) 评论(12) 编辑
  2010年11月18日
摘要: 空杯心态,接受新事物。 没有实践就没有发言权。 没有彻底理解,不要去推翻它。 不要抨击其它你认为没有意义的技术,任何事物都有它产生的原因。 不要看不起老技术。只有站在巨人的肩膀上,你才能看得更远。 认识到:业务是收益、技术是成本。设计杂谈 如何做到方案设计得比较完善?答:一项浩大的方案设计,需要平时不断地收集、整理问题。这样才能在出解决方案的时候,做到尽量全面地解决问题。不可能靠人脑临时想出一个完善的方案,很可能会丢三落四,顾此失彼。 WPF框架使用有感: 不熟悉框架的时候,使用框架写出来的上层代码很...阅读全文
posted @ 2010-11-18 08:38 BloodyAngel 阅读(219) 评论(0) 编辑