十一月
4

清除MyEclipse升级之后的残留文件

Author Dominic    Category JAVA, 软件应用     Tags ,

8.0 M2刚刚发布,MyEclipse自动升级成功之后发现硬盘竟然消耗掉了几百M,重启MyEclipse和计算机也没有减少我可怜D盘的空间占用,进入程序目录发现plugins目录竟然还遗留了非常多的8.0 M1的文件,明显特征是现在很多文件后缀是7.9.200,却还存在7.9.100的文件和文件夹。发现MyEclipse自动升级过程中竟然没有清除老的文件包,是在太弱了,而且和程序文件混杂在一起,叫人怎么清除这些没有用的文件哦。难道Eclipse也这样么?难怪Java就是占用空间,没有用的东西到处放,如果仅仅是备份就文件的话,移动到一个特定目录不就行了。

这次的目标是减少MyEclipse8.0 M1残留文件占用的空间,而保证M2正常运行。

经过分析,发现可以直接删掉MyEclipse 8.0 M2没有用到的文件即可,但是手工删除是在太慢,而且也容易删除错误。MyEclipse安装目录下configuration\org.eclipse.equinox.simpleconfigurator子目录的bundles.info 文件记录了MyEclipse所有加载plugin,于是找到从bundles.info找到所有MyEclipse 8.0 M2需要的文件的方法。具体步骤如下:

  1. 1、将bundles.info复制到桌面并重命名为bundles.csv;
  2. 2、用Excel打开bundles.csv,删除第一行#version=1,将C列拷贝到UltraEdit中,这样得到了诸如“file:/D:/Program Files/Genuitec/MyEclipse 8/Common/plugins/ca.ecliptical.emf.xpath_1.0.0.me200910150013.jar”的所有plugins列表;
  3. 3、在UltraEdit中替换路径前缀file:/D:/Program Files/Genuitec/MyEclipse 8/Common/为空,再替换所有\为/;
  4. 4、在Excel中新建一个sheet,将第三步得到的结果拷贝到B列;
  5. 5、进入MyEclipse 8.0 M2的Common目录,我的是D:\Program Files\Genuitec\MyEclipse 8\Common\,关闭MyEclipse程序之后将plugins目录重命名为plugins_prev(其他名称也可以但下面的步骤需要和这里的目录名称相同),并新建一个plugins目录
  6. 6、在UltraEdit中将第三步得到的结果中的plugins\替换为“move plugins_prev\”;(不包含引号)
  7. 7、将第六步得到的结果拷贝第四步的sheet到A列;
  8. 8、拷贝第四步的sheet到A列和B列到UltraEdit中新的编辑标签页中,并替换^t为空格,(需开启正则表达式选项,且使用UltraEdit引擎,下同),这样得到一系列的move命令行;
  9. 9、在运行对话框中输入cmd打开命令窗口,并将当前路径切换到MyEclipse 8.0 M2的Common目录(我的是D:\Program Files\Genuitec\MyEclipse 8\Common\),将第八步中的结果全部拷贝到cmd中执行,这样可以将所有需要的jar文件全部从plugins_prev目录移动到plugins目录中;
  10. 10、经过第9步我们发现所有的jar文件都移动了,但是原来的plugins目录下一些需要的目录并没有移动到新的plugins目录中去,我们还需要移动需要的目录,同样在第八步中的结果上面继续做文章,我们替换“move plugins_prev\*jar^p”为^p,消除所有已经移动过的jar文件条目,再多次替换^p^p为^p,消除所有多余的空行,再替换“plugins\*^p”为“plugins\^p”,即消除多余的目录名;
  11. 11、将第10步结果拷贝到第九步打开的cmd中执行,执行完成之后会将需要的目录也拷贝到新plugins目录下;
  12. 12、启动MyEclipse,不报错,大功告成!这个时候可以直接将plugins_prev目录给删除掉了,节约了好几百M空间。如果不放心也可以先将这个目录放着不删除

如果有些plugins目录没有放在MyEclipse 的Common下Plugins目录中,可先从bundles.csv中删除对应的条目。

其他MyEclipse或者Eclipse完善自动升级过程。

十月
12

CMDB实施过程中的任务

Author Dominic    Category IT服务     Tags , ,

最近工作都是围绕ITIL和ITSM展开的,需要做一些记录。(配置管理数据库)实施过程相当复杂,为此参考了别人的实施过程对实施任务进行了分解:

  • 第1步:识别CMDB实施组成员,定义角色和职责;
  • 第2步:进行实施组CMDB知识培训;
  • 第3步:Review,并就CMDB实施目标、任务达成一致;
  • 第4步:Review,定义并沟通CMDB实施后预期收益;
  • 第5步:制定实施计划,并进行项目SWOT分析、ROI分析、财务分析;
  • 第6步:Review,并识别管理上的需求;
  • 第7步:Review,并选择可实现的CMDB最佳实践方法;
  • 第8步:识别潜在的问题,并提出解决办法;
  • 第9步:识别资产和存货管理要求;
  • 第10步:定义CMDB支撑的服务目录要求;
  • 第11步:定义其他ITIL流程对CMDB的要求;
  • 第12步:定义CI层次,建立IT设施模型
  • 第13步:定义CI之间的关系
  • 第14步:定义CI的属性
  • 第15步:设计IT模型蓝图
  • 第16步:选择实现CMDB的技术(产品选型)
  • 第17步:计算并提出ROI
  • 第18步:确定项目范围并制定扩充计划
  • 第19步:构建CMDB
  • 第20步:选择自动化CMDB工具或定义数据来源
  • 第21步:填充CMDB数据
  • 第22步:创建CI生命周期管理流程
  • 第23步:建立配套的配置管理流程
  • 第24步:对CMDB用户和配置管理角色进行使用、管理培训
  • 第25步:识别指标并保持指标计算
  • 第26步:建立可持续性服务改进程序

当然,实际步骤需要由项目经理根据实施单位的情况制定。

十月
9

POJO何解?

Author Dominic    Category JAVA     Tags

因项目需要被逼捡起JAVA并深入学习一把。过程中很多地方看到POJO这个词语,其全称是Plain Old Java Object。当我询问一个Java做得不错的朋友时,告诉我POJO是JavaBean的一种,它除了private属性以及对这个属性方法的public的get和set方法之外没有其他任何东西。它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。

感觉有些不对劲,Google了一把:POJO的叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。初始出处是http://martinfowler.com/bliki/.html:

The term was coined while Rebecca Parsons, Josh MacKenzie and I were preparing for a talk at a conference in September 2000. In the talk we were pointing out the many benefits of encoding business logic into regular java objects rather than using Entity Beans. We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it’s caught on very nicely.

其意思是说要给具有业务逻辑处理的规则的Java对象(regular java objects)但又不是Entity Beans(EJB的一种)起一个名字。他们就叫这样的Java对象为POJO,在http://www.webopedia.com/TERM/P/POJO.htm是这样定义POJO的:

POJO, or Plain Old Java Object, is a normal Java object class (that is, not a JavaBean, EntityBean etc.) and does not serve any other special role nor does it implement any special interfaces of any of the Java frameworks. This term was coined by Martin Fowler, Rebbecca Parsons and Josh MacKenzie who believed that by creating the acronym POJO, such objects would have a “fancy name”, thereby convincing people that they were worthy of use.

基本意思是说POJO一个正常的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架中特定的接口。

这个解释应该是POJO的准确解释,POJO不是Java Bean,更不是EJB,不应该依赖于框架(继承或实现某些框架类或接口),POJO不具有任何特殊角色。POJO是可以包含业务逻辑处理和持久化逻辑的,也可以包含与JavaBean类似的属性和对属性相应访问setter、getter的。

十月
9

解决Tomcat下连接Oracle报错“Error while registering Oracle JDBC Diagnosability MBean.”

Author Dominic    Category Oracle, 软件应用     Tags

Tomcat不失为一个好的开发学习容器,但使用Oracle 11g自带的JDBC驱动ojdbc6.jar和JDK6一起运行的时候,特别是和spring框架一起使用会报错:

SEVERE: Error while registering Oracle  Diagnosability MBean.
javax.management.MalformedObjectNameException: Invalid character '
' in value part of property
at javax.management.ObjectName.construct(ObjectName.java:602)
at javax.management.ObjectName.(ObjectName.java:1394)
at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)
at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.OracleDriver.(OracleDriver.java:209)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
。。。

另外,多次访问Oracle本机数据库是也会出现同样的错误,仔细检查代码发现代码并没有错误,用Google查找了一下,很多信息都无用。通过查询Oracle社区发现这是Oracle Database 11g Release 1 (11.1.0.6.0) JDBC Drivers 的一个Bug。更新到11.1.0.7.0版本的驱动,则现象消失。

仅此记载方便部署人员解决问题,新版JDBC驱动下载地址http://www.oracle.com/technology/global/cn/software/tech/java/sqlj_jdbc/htdocs/jdbc_111060.html

十月
3

软件需求最佳实践读书笔记

Author Dominic    Category 读书     Tags ,

1、需求规格说明不应该采用技术为导向,应该采用业务为导向来组织,分别面向不同层面(决策者、事务管理层、操作层)将需求分成不同的部分,让合适的人验证适当的部分,然后再汇总。

2、不要再把review活动叫做评审了。

3、最简单、最有效的review就是在用户代表阐述了需求之后,需求分析用自己的语言再复述一遍,以确保沟通没有失真。(工作安排技巧:让工作接受者复述任务内容)

4、业务场景中才能得到需求实质,业务场景中步骤性工作可能不是连续进行的。

5、采用满意/不满意模型进行需求必要性评价以辅助确定需求的优先级。

6、需要按照业务、技术开发、项目管理三个角度来确定优先级,技术开发、项目管理只提级不降级。业务角度根据业务价值和频度进行评价,技术开发根据技术依赖性进行调整,项目管理根据项目风险对优先级进行调整

7、编写需求规格功能书时,应确保一类信息只在一处描述,特别是数据字段信息。

8、SERU模型:Subject->Event/Report->User Case。按照构建主题域,标识业务事件和报表类型,再进行事、物、人分析标识出用例,再建模。

9、需求定义可按照目标->问题->可选方案->建议方案来进行

10、问题定义过程中寻找本源需要深刻理解《你的灯还亮着吗?》中的隐喻。即需要思考确定解决方案时是否会引发新问题,务必直接修改错误,不要用其他方案来弥补错误。

11、常用的业务流程+管理形式的主题域划分方式是基于“物”的线索的,这样划分在进行需求捕获和分析时就会发现各个子系统和模块与客户部门是交错在一起的,每个模块都需要对不同的部门进行调研,这只是一种逻辑划分,并没有很好体现业务结构。

12、需求捕获过程中不仅仅需要捕获意识到的需求,还要捕获无意识的需求,如果在捕获到未梦想的需求就更好了。

13、需求分析人员需要尝试理解业务场景,并需要处理客户言过其实、越俎代庖、非正事、抗拒、推卸责任等心理,分别采取多人访谈找差异、识别正确访谈者、离开办公室或对访谈进行计划、倾听抱怨、让被访谈者介绍工作场景方法来化解这类心理活动造成的阻碍。

14、客户如果提出解决方案,需要多问一次为什么需要这样,以找到问题的本质。

15、用户访谈中被访谈者建议包括四类:高层管理人员、中层管理人员、操作层、技术团队,分别在需求定义、需求捕获阶段

16、业务流程分析过程中应该以部门级作为主线索,并针对岗位级进行细化,针对组织级进行抽象概括。

17、流程通常分为三类:生产性流程、管理性流程、支持性流程。

18、流程分析完毕之后需要进行瓶颈和利益分析,一般需要消除瓶颈

19、业务实体分析过程中除非十分熟悉ER图,否则建议采用类图,这里的类图并不等价于开发过程中的类图,而是类型图的意思。

20、需求建模时,使用类图过程中应该大胆使用中文来表示类名和属性名,但不必像设计阶段那样添加很多辅助建模元素。

21、领域建模过程中广泛采用“名词动词法来标识类。

22、导航性、角色名、导出属性、限定符、约束等修饰属性需要根据类图情况来确定是否需要加入。

23、领域建模过程中不要考虑成员方法,行为需求应该放到流程图和用例图中描述,确定类的操作属于设计范畴无需对客户明示;不要先去明确关联的多重性;不要考虑业务类的通用性;不要过度分析名词和动词;不要过多讨论聚合和组合表示;不要将类的名称弄得难以理解,需要直观;不要关心友元关系和参数化等具体实现;不要先直接映射到数据库表结构;忘记设计模式;不要过早合并子类;不要分拆大类;不要过早抽象同类。拒绝实现、保持简单、忠于问题域。

24、概念模型(设计)和物理模型(设计)区分:概念模型(设计)属于需求视图,物理模型(设计)属于开发视图。

25、用例图仅仅是一个针对用例描述的目录,用例描述是封装所有需求的形式。

26、用例图中参与者多半可以用角色替代,但不仅仅由人承担,参与者可能是其他系统、硬件设备、时钟等。

27、CRUD动作名词和业务名词在用例名称一起使用时需要仔细注意是否会掩盖实际用例。

28、用例命名建议采用业务动词命名,避免系统动词加业务名词方式,但对系统创建的东西则不尽然。

29、采用基本事件、扩展事件、子事件的方式来描述会比冗长的if else描述要好多。

30、界面原型不应该是解决方案,应该是客户对业务的要求和约束,应该是需求人员的实现建议;开发人员不应该画地为牢,界面原型目的是支持有效的UI设计。

八月
26

VSTS TFS 2008误区之SharePoint和TFS

Author Dominic    Category 软件应用     Tags , ,

还是相当复杂的,包含SharePoint、、ReportServer三个部分,在建立项目时可以同时建立SharePoint站点。公司使用TFS 2008 作为配置管理工具长期以来困扰配置管理员们两个很核心的问题:一是在团队管理器中明明设置了某个用户是reader用户,但文档还是可以被修改、删除,二是CMMI的基线完全没有办法做,做了基线之后文档还是都可以被修改。

分析之后发现完全是一个使用上的误区,配置管理员将项目过程文档全部放到SharePoint中了,而不是TFS中作为版本控制内容。而配置管理员在团队管理器中设置了权限之后,这个权限并没有同步到SharePoint中,这样导致了第一个问题。SharePoint中文档虽然也有版本的概念但是这个是主要给Word、Excel之类用的,目录、文档库并没有版本的概念,这样直接导致了无法做基线的问题。

经过解释,解决了他们的问题。这里就出现了一个使用上的误区和项目文档放在哪里的问题。把文档放在SharePoint的文档库中是最大的一个误区,正确的做法是项目过程文档(特别是需要做基线的),全部放在TFS中通过团队管理器或者Web Access访问,并做好权限控制和基线管理,将项目关联文档(例如:参考资料、文件、法规等)放到SharePoint文档库中。

TFS还是相当不错的一个配置管理工具的。

六月
16

解决VMware Tools没有自动启动的问题

装好了Ubuntu 9.04,并编译安装好VMware Tools之后,重新登录结果VMware Tools竟然没有自动启动,使用ps –A | grep vmware命令竟然就看到一个vmware-guested进程,没有vmware-user进程,根据网上的方法,在首选项->启动程序手工添加了vmware-user启动项,重新退出登录,结果vmware-user还是没有自动启动。

查看系统日志发现以下信息:

Jun 16 17:02:29  x-session-manager[3367]: WARNING: Could not parse desktop file /usr/share/gnome/autostart/-user.desktop: 键文件没有键“Type”
Jun 16 17:02:29 ubuntu x-session-manager[3367]: WARNING: could not read /usr/share/gnome/autostart/-user.desktop
Jun 16 17:02:30 ubuntu x-session-manager[3367]: WARNING: Could not parse desktop file /etc/xdg/autostart/-user.desktop: 键文件没有键“Type”
Jun 16 17:02:30 ubuntu x-session-manager[3367]: WARNING: could not read /etc/xdg/autostart/-user.desktop 

给/usr/share/gnome/autostart/vmware-user.desktop 加上可写权限之后,打开发现内容如下:

[Desktop Entry]
Encoding=UTF-8
Exec=vmware-user
Name=VMware User Agent
X-KDE-autostart-phase=1
NoDisplay=true

Google一番之后发现更改成以下内容:

[Desktop Entry]
Type=Application
Name=VMware User Agent
Exec=vmware-user
Icon=system-run
Comment=VMware User Agent
X-GNOME-Autostart-enabled=true

再次退出登录即可发现vmware-user自动启动了,自动适应VMware workstation窗口大小了。

六月
1

Ubuntu 9.04安装VMWare Tools

Author Dominic    Category 软件应用     Tags , ,

测试需要,这次在VMWare Workstation 6.5.2下安装了Ubuntu 9.04版,语言选择的是简体中文,安装完毕之后Ubuntu完成自动升级,结果发现VMWare Tools好像没有装好,鼠标不能自动移出控制台。决定重新安装一下VMWare Tools。谁知道从光盘拷贝文件解压之后竟然没有顺利安装,报错如下:

Using compiler “/usr/bin/gcc”. Use environment variable CC to override.

Your compiler “/usr/bin/gcc” version “gcc 版本 4.3.3 ( 4.3.3-54)
” is not supported by this version of .

The memory manager driver (vmmemctl module) is used by host software to
efficiently reclaim memory from a virtual machine.
If the driver is not available, VMware host software may instead need to swap
guest memory to disk, which may reduce performance.
The rest of the software provided by VMware Tools is designed to work
independently of this feature.
If you want the memory management feature, you can install the driver by
running vmware-config-tools.pl again after making sure that gcc, binutils, make
and the kernel sources for your running kernel are installed on your machine.
These packages are available on your distribution’s installation CD.
[ Press Enter key to continue ]

郁闷坏了,经过调试发现这个破VMWare Tools在获取gcc版本信息时是解析“gcc version …”,而且必须是英语的version,偏偏中文版Ubuntu把这个也翻译了。解决办吧就是更改Ubuntu的系统语言为English。通过菜单系统->系统管理->语言支持,把默认语言改成English(United States),退出之后再次登录,重新安装即可顺利通过安装。

但是在进入到vmware-config-tools.pl这一步时却又报错。说是__grab_cache_page函数重定义了。VMWare现在都是最大的虚拟化供应商怎么犯这个错误了。解决办法是进入/usr/lib/vmware-tools/modules/source目录解压vmhgfs.tar中的page.c,并编辑page.c中的867行修改为

page = grab_cache_page(mapping, index);

重新运行vmware-config-tools.pl即可。

一月
8

Excel 2007:双击Excel文件打不开提示找不到文件解决办法

Author Dominic    Category 软件应用     Tags

最近笔记本狂让我郁闷,老蓝屏死机,而且不给错误提示,硬盘中的所有Excel文件双击时都不能直接打开,也不新建工作簿,提示:“Windows 找不到文件’C:\xxx.xls’。请确定文件名是否正确后,再试一次。”,简直让人抓狂,用工具跟踪了一把Excel程序,发现更改Excel的一个简单选项即可解决:

1、点击Excel 2007左上角的Office徽标,在菜单中点击“ 选项(I)”按钮;

2、点击左侧“高级”,切换到Excel的高级设置页;

3、取消勾选“忽略使用动态数据交换(DDE)的其他应用程序”;

4、关闭Excel,再次双击excel文件即可,如果不行,再设置一次。

终于搞定这个小问题。

一月
2

联通GPRS也可以用QQ2008手机版了!

Author Dominic    Category 生活叫吠     Tags ,

用的联通GPRS本来只能用手机版QQ2005的,缺少好多功能!腾讯在2008年12月31日发布了QQ2008手机正式版,经过测试现在联通GPRS也能用手机版QQ2008了,只需要将接入点名称从uniwap更改成cmnet即可。

仅仅只需要改动一个接入点名称即可,不知道是联通变态还是腾讯变态,这两者有什么不通么?搞不懂?终于可以用上全触屏版的新QQ了。

专题推荐

标签

分类目录

新浪微博

存档

近期文章

近期评论

友情链接

分享按钮