Monday, July 27, 2009

perf4j中使用Piped I/O Stream

这几天是在作JMX和 一些关于Performance的调研,由于JMX三年前在Perf中用过,所以这次重点不是JMX,二是怎样用JMX来管理,监控WEBGUI,另外就 是怎么把一些和Performace相关的接口暴露成JMX。今天做了一些perf4j,一个开源的performce工具的调研,其中碰到一个问题,还是给我自己上了一课。那就是在perf4j里有一个接口使用PrintStream作参数,然后perf4j把解析后的日志信息输出到 PrintStream,但是我有一个需求就是想要返回格式化后的日志内容,今天花了很多时间在找已有的JavaAPI和第三方的API,另外就是使用 PipedInoutStream和PipedOutputStream,最后还是没有找到太好的方案,这时突然想到,为什么我不自己写个类实现 OutputStream,内部用StringBuffer来缓存格式化后的日志内容呢,相到这,我就迅速的写了一个非常简单的类很轻松的实现了原本自己 的需求,代码如下:
http://code.google.com/p/garbagecan/source/browse/trunk/java/perf4jstudy/src/main/java/com/googlecode/garbagecan/perf4jstudy/LogParserUtil.java
另外在做这些调研的时候还试着使用了一下PipedInputStream和PipedOutputStream两个流
http://code.google.com/p/garbagecan/source/browse/trunk/java/perf4jstudy/src/main/java/com/googlecode/garbagecan/perf4jstudy/PipedIO.java

Monday, June 15, 2009

难用的ICM Performance JMX

今 天在公司有点感冒,本想下午请假回家休息,结果不知不觉弄一个Performance问题弄了一个下午。本以为ICM提供的JMX会有很大帮助,最后发现 他们给API都太简单了,不方便使用和统计。没办法自己想了想好像可以在原来ICM的ServiceFactory上做一个动态代理来代理所有的 ServiceClient,从而实现对方法调用次数和用时的统计,说做就做,由于在ServiceFactory里是使用的类,而不是借口,所以排除了 直接使用JDK的动态代理实现,而只能使用cglib来实现,原来做过这方面的东西,所以简单又查看了一下cglib的文档和例子(例子少的可怜也简单的 可怜),花了两个小时很快就弄了一个出来。同时也整理了一个文档放在google docs里以备以后使用。

Saturday, May 23, 2009

Bug Fix Plan

一个月前,Yi让我做了一个Excalibur Bug Fix Plan,自我感觉做的不错,邮件内容如下:
=========================================================

Just now, Excalibur_GUI and Unit_Test_Excalibur_GUI area has total 70 p1 + p2 bugs.

Note: This 70 bugs not includes the bugs that will be fixed once sprint2 project finish - 17 bugs

Sprint2 Bug fix plan:

Week

Dev Resource

Plan Dev Fixed

Plan QA Logged

Bug Number

(approximation)

Apr. 24 - Apr. 24

-

-

-

70

Apr. 27 - Apr. 30 (4 days)

1.5

2 * 1.5 * 4 = 12

3 * 4 = 12

70

May. 4 - May. 8

3

2 * 3 * 5 = 30

15 * 5 = 75

115

May. 11 - May. 15

10.5

2 * 10.5 * 5= 105

15 * 5 = 75

85

May. 18 - May. 22

10.5

2 * 10.5 * 5= 105

10 * 5 = 50

40

May. 25 - May. 29 (4 days)

10.5

1 * 10.5 * 4 = 44

10 * 4 = 40

???

Dev Resource:

Resource

Apr. 27 - Apr. 30

May. 4 - May. 8

May. 11 - May. 15

Chunlin



100%

Gang



100%

Jiangwei

100%

100%

100%

Lin



100%

Liyuan

50%

100%

100%

Chao



100%

Fanbin



50%

Hong



100%

Peng


50%

100%

Xiaodong



100%

Yong


50%

100%

SubTotal #

1.5

3

10.5

Note: The resource does not include Wanqing.

=========================================================
今 天看了实际情况和预计的差别比较大,主要原因是Dev一直有新项目来,不能保证有足够的Resource在Bug Fix上,实际上May 11-May 15这周只有3个人在Bug Fix上,粗略估计了一下,如果最后一周大家都在Bug Fix上,应该和当初预想的差不多。目前P1+P2有120个bug,如果能在May 11 - May 15这周再加上预期的7.5的resource,就应该是120-7.5×2×5=45左右,应该算很准了。

Tuesday, March 10, 2009

收购StarUML

今天在公司讨论关于画UML的图的工具的时候,想到了StarUML,一个被很多人遗忘的软件。其实这是一个很不错,不对,是相当不错的开源的UML/MDA软件。但是令人遗憾的是这个软件自从2005年底的release之后就再也没有新消息,在官方网站的Roadmap上可以看出还是有很多的feature想做的,但是不知道现在为什么没有新的动作!与其这样,还不如那个公司站出来把它收购得了,改吧改吧直接就可以卖钱了,尤其在当前经济危机的情况下。

Wednesday, December 17, 2008

Ubuntu Server(8.10)安装X windows桌面环境

1. 安装X窗口系统:
    # sudo apt-get install x-window-system-core
2. 安装登录管理器:
    # sudo apt-get install gdm
    或
    # sudo apt-get install kdm
    或
    # sudo apt-get install xdm
3. 安装桌面环境:
    # sudo apt-get install ubuntu-desktop
    或
    # sudo apt-get install kubuntu-desktop
    或
    # sudo apt-get install xubuntu-desktop

Monday, October 13, 2008

GUI code quality meeting minutes

今天进行了开了一个关于如何提高GUI代码质量的会,由于时间比较短,因此只是讨论了关于GUI package和framework版本控制,最终结果还是想我去年年底和郑亦聊天时提的建议,就是对于GUI应该有自己的Road Map,应该确定每个版本的framework应该包括的feature,并且这些feature一定要finalize,不要今天这个说要加一点明天那个要加一点。因此,这样就要求在确定每个版本的framework的时候,一点要仔细分析确定每个版本的feature,千万不能像现在这样,动不动就是这个东西现在想不清,就不愿意想,什么都往后推,结果到后来弄得有些东西根本就没法做。然后对于确定下来的feature做认真的设计和实现,不要动不动就hard code,因为这些东西需要长时间的稳定,这样别人在用的时候才不会总出现需要修改framework的情况。如果当前framework不能满足需求,那要么Cut掉需求,等到下个framework在做,要么自己去做enhance(但是不能提交的Road Map中,只能做Patch使用,也许以后可以Merge到Road map中)。只有这样严格要求才能保证framework的稳定,可维护。早知道这样,早听我的就好了,也不至于现在做的这么被动。现在虽然也想这样做,但不知道最后能不能实现,因为现在GUI组从上到下都已经有了很多不好的习惯,想改哪有这么容易。我现在对在GUI组的工作也不是那么有热情,彻底找不到自己的状态,也许是对GUI彻底失望了吧。