Wednesday, September 26, 2007

Good and Bad Reasons to Open Source Your Software @ ENTERPRISE OPEN SOURCE MAGAZINE

Good and Bad Reasons to Open Source Your Software @ ENTERPRISE OPEN SOURCE MAGAZINE

Look at this:
Three Worst Reasons
Open sourcing your software isn't always the best business strategy. This section reviews some of the worst reasons you can have to open source a particular technology or create a new open source project:
  1. You have obsolete software that you want to get rid of and you think that open sourcing it is a good way to get rid of it.
  2. You're looking to leverage free engineering from the open source community and by open sourcing you think open source developers will lineup to contribute to your project.
  3. You have software that you don't need anymore and instead of terminating the project or canceling it, you decide to open source it and then call it a win.

In my perspective, most of the companies have this kind of idea when they decided to open source their codes. IBM, Borland, Sun or some one else. And yes, they call it success.
A real funny thing.

SSH tunnel and vnc

Creating an SSH tunnel for secure authentication (Windows)

ssh -N -L 9090:remote-internal-system:80 root@gateway-hostname

and please keep the session on

and vnc to the remote-internal-system:
a. setup vncserver on remote-internal-system
b. vncviewer -via root@gateway-hostname remote-intenal-system
actually this step is the same as ssh tunnel: ssh -f -L 5599:remote-internal-system:5900 root@gateway-hostname

I google a lot, and this is the simplest solution.

create xen VM via xenguest-install.pyi

FC5Zimbra - Xen Wiki

Create And Boot The Initial Xen Guest

The initial Xen guest domain will be named xen0, and will be built on a logical volume. First, run a couple of checks to verify the Xen kernel booted and that xend is running OK.

  • uname -r
  • xm list
    Name ID Mem(MiB) VCPUs State Time(s)
    Domain-0 0 2487 2 r----- 467.5

Next, remount the install disc, start the vsftpd server, and create a 2 GB logical volume named xen0 (for the first guest).

  • mount -o loop /dev/hda /var/ftp/pub
    service vsftpd start
    lvcreate -L 2G -n xen0 xen

Use the tool to create the first Xen guest image. If all goes well, a text-based install script will start. The various options to are shown

  • -n xen0 Name Of Xen Guest

  • -f xen0 Pathname To Logical Volume To Use For Guest

  • -r 256 Memory To Allocate For Guest

  • -l Location Of FC5 Install Disk. The IP address is to the vsftpd server. Since the guest won't know the DNS domain, use the raw IP address. The guest is connecting over a virtual IP network, so won't work either. -n xen0 -f /dev/xen/xen0 -r 256 -l

The script will start a text-based installation script almost identical to what you would see with a default FC5 installation. Early in the installation, the option to switch to a VNC-based GUI will be presented. Text-based is quicker, but VNC does a better job of package selection (and it's kind of cool), so take your pick.

  • To use the VNC method, connect to the provided IP address from a VNC client from elsewhere on the network. A GUI install script will appear in the VNC client window. Proceed through install process, setting parameters as necessary. The script creates a virtual hard disk, /dev/xvda. Unless you have specific needs, you should probably let the install script automatically partition the virtual disk. Do a custom package selection, deselecting everything but Yum and OpenSSH server/client packages. Complete the installation.
  • To use the text-based install process, everything will be functionally the same as the VNC method above, except for deselecting software packages. You won't be able to drill down into package groups, so just deselect everything. This will install a few unnecessary packages and services, which can be removed later if necessary.

After the guest installation script complete, control is returned to the script, which will hopefully indicate success and then exit. It is now (way past) time to start the first Xen guest. To start the guest, use the xm command. The xm command is used to manage all Xen clients. For a synopsis of availabe options, simply enter xm.

  • xm create -c xen0

The console window of the guest will appear, including a text-based GRUB screen, followed by normal boot/init messages, concluding with a login screen. To break from the console and return to the host, enter CTRL-] (control key plus the right-bracket key). To list the running Xen guests from the host (Dom0), use the "xm list" command as shown below.

  • xm list
    Name ID Mem(MiB) VCPUs State Time(s)
    Domain-0 0 2487 2 r----- 755.5
    xen0 18 256 1 -b---- 14.4

To return to the Xen guest's console, enter the following command from the host.

  • xm console xen0 

Monday, September 24, 2007

Solving too many open named pipes in a java process

Too many open named pipes in a java process...

Too many open named pipes in a java process..

In a java process (that uses JNI and socket communications), I get "Too
many open files" error.

When debugging further using lsof or pfiles, (with the process id), I
saw many named pipes (FIFO) in open state.

jsvc 10805 userid 951w FIFO 0,6 2989015 pipe
jsvc 10805 userid 952w FIFO 0,6 2988104 pipe
jsvc 10805 userid 953w FIFO 0,6 2989588 pipe
jsvc 10805 userid 954w FIFO 0,6 2988290 pipe
jsvc 10805 userid 955w FIFO 0,6 2988626 pipe

there are more than 500 processes opened.

Obviously there might have some streams I didn't close.

And the usage of Runtime.exec() will also cause the pipe here. The inputstream, outstream, errorstream should be closed.

Thursday, September 20, 2007

Interwoven, Inc. - Enterprise Content Management Solutions for Business - CMS

Interwoven, Inc. - Enterprise Content Management Solutions for Business

a professional CMS vendor

Only Ubuntu Linux: Install Popular Applications in Ubuntu Feisty Fawn Using Automatix2

cool tool for ubuntu

References on Extreme Programming

this is a cool references page for extreme programming.

Application Development Trends - Product Briefs

Application Development Trends - Product Briefs

this site provides a lot of software development tips or references - agile development

a website which providing a lot of software programming consultant service

XenSource: Delivering the Power of Xen

Welcome to - Linux-VServer

Welcome to - Linux-VServer

Welcome to OpenVZ — Server Virtualization Open Source Project :: OpenVZ :: Supported by SWsoft

Welcome to OpenVZ — Server Virtualization Open Source Project :: OpenVZ :: Supported by SWsoft

Medibuntu - Community Ubuntu Documentation

it should work, but it fail.

Test Often. or are two sites which provide several articles about agile programming methodologies.

happy path at

This site lists a lot of names of software programming, especial for extreme programming part. A good place to reference.

Code Coverage Analysis

This page covers most of coverage types in coding work. Path coverage should be a very important part, but it only explain it here, I'd like to introduce more about this, it's really useful for testing.

Eason - 陈奕迅 富士山下 歌词解析


Howto: switch from Ubuntu to Kubuntu or Xubuntu or Edubuntu or vice versa (6.10 edgy) « Tuxicity’s source

Howto: switch from Ubuntu to Kubuntu or Xubuntu or Edubuntu or vice versa (6.10 edgy) « Tuxicity’s source

switch ubuntu desktop with different ubuntu distros

I suggest we shouldn't do this if not necessary, it's not as simple as changing the theme, and it will bring uncertainly problem if you do that, and the final result isn't want we want, you will found both xubuntu and ubuntu mixed together. bad thing

IBM / NCSU XP/Agile Metrics

IBM / NCSU XP/Agile Metrics

Our small team at IBM has studied the results of using Extreme Programming practices in conjunction with NC State University and the Center for Advanced Computing and Communication. In doing so we not only benefited from the use of the agile practices, but established a set of lightweight measurements as a guide to evaluating our progress. At XP/Agile Universe 2002 we presented a paper describing a method of seeing if our team was actually using XP by conducting bi-monthly surveys [Krebs 2002]. This update shows the results of the survey data we gathered and how we cross checked the survey with objective numeric metrics.

Quick HOWTO : Ch18 : Configuring DNS - Linux Home Networking

Quick HOWTO : Ch18 : Configuring DNS - Linux Home Networking

DHCP configuration is what I want:

web 2.0 site -

my account

a good business model but I'm worry about how long it can go

Creating Passionate Users

A good chinese linux website - 闲云孤鹤

A good chinese linux website

闲云孤鹤 - 清冷香中抱膝吟

How to disable SELinux

disable SELinux - Extending a logical volume - Extending a logical volume

LVM recovery tale.

codeworks gnomedia » Blog Archive » LVM recovery tale.

vgcfgrestore -vf /etc/lvm/archive/filename rootvg

LVM recovery tale.

Over the weekend I had the worrying experience of losing my LVM settings and potentially all my data… a quick search on the web showed a confusing set of information, much of it for older versions of LVM and therefore rather suspect.

Well, I recovered all my data and it was really quite simple, so I’ve written up what I did in the hope that someone else, in a similar situation, will find it useful. It’s a scary thing, losing the whole hard disk and knowing that, in reality, its all there.

First the situation

I’ve got a small /boot partition as ext2, and a larger one for the root directory (2Gb, also ext2). The rest of the hard disks (nearly 120Gb) are assigned to a volume group called, descriptively, system… (which is SuSE’s idea of a default name).
More accurately, they were supposed to be assigned to it. At first I had just added 60Gb to the volume group, it was my first use of LVM and I was hedging my bets. After 6 months of trouble free operation I decided to add another 60Gb of disk, which I did 3 months ago. Except that, although the physical and volume group managers all agreed that the volume group had 120Gb, the logical volume manager insisted that there was only 60Gb. I’d used Yast2 to create and add the volumes.
I tried every combination of commands I could think of to get the logical volume manager to recognise the additional space but it wouldn’t.
At the time, I was busy, so forgot about it, then last week I realised that I wanted to use the space so settled down to do something about it.

The problem

So, it seemed the best solution would be to remove the second partition that I had added (/dev/hdd1) from the physical volume manager and then add it back.
It wasn’t recognised so wouldn’t be missed, right?
pvremove /dev/hdd1 removed the label from /dev/hdd1 but also from /dev/hda7 (which was the original partition and full of data).
pvscan and pvs reported no physical volumes on the disk.
vgscan and vgs couldn’t find any volume groups.
lvscan and lvs were non-starters obviously.

The rather surreal thing was, the whole system kept on running quite nicely, X Server and KDE desktop and all, but I knew that as soon as I rebooted the system would be toast.

First I tried adding the partition back to the volume group system, but the system couldn’t find the ’system’ group. I tried creating the physical volume again (pvcreate) but that told me that the volume already existed. It became clear that I would need to reboot and hope that the system sorted itself out, flushed the disks, resynced, whatever.

The solution

After rebooting the system wouldn’t come up, which is kind of what I had expected so I had to reboot from the SuSE Rescue disks. So now I had to think about how to recreate the physical volumes, volume group and logical volume and do it with the data intact. (I have daily backups but the thought of restoring the whole system, applications and data, was not too exciting, especially as I knew all the data was there and intact. With a ‘regular’ hard disk partition that had got lost I could scan the disk for potential disk partitions and restore them. But that wouldn’t work with LVM.

On a search through various sites, I found one that mentioned the importance of saving a copy of the volume group parameters to a file using vgcfgbackup. This file could then be used to restore the parameters later, assuming that the underlying physical structure hadn’t changed. Well, the physical layout hadn’t changed but unfortunately I hadn’t created a backup of the volume group parameters (the ‘descriptor area’ to use the technical term) so that didn’t seem to hopeful. I poked around in the /etc directory (I still had the ‘/’ partition remember, as that was on its own ext2 partition) and noticed that there was a /etc/lvm/backup/ directory and a /etc/lvm/archive/ directory. Further investigation and I found that these are automatically created by LVM whenever changes are made to the system.

Unfortunately, all the messing around I had done had created a non-working version of the system file and the archive files didn’t seem to be recent enough. But, I remembered that I had a backup of the system files (going back 6 months in fact) and so I dug out a copy of the /etc/lvm/backup/sysem file and used that.

Here is what I did: First find out the old UID’s of the partitions, this is in the /etc/lvm/backup/system file. They are quite long… make sure you get the UID for the physical volumes.
$pvcreate -u sdSD-2343-SD939-adIda2 /dev/hda6
$pvcreate -u dk33kd-929293nd-adfja298a /dev/hdd1
$vgcreate -v system /dev/hda7 /dev/hdd1
$vgcfgrestore -f /etc/lvm/backup/system system

and lo!, all data present and correct!

In fact, I just rebooted the system and was back where I had started with the additional benefit of an extra 60Gb of disk space, because now I had the extra partition properly included.

[Note: in the lines using pvcreate... above I could have used:
$ pvcreate –restorefile /etc/lvm/backup/system
to automatically find the ID’s but I hadn’t realized that at the time. Without the UID’s then the vgcfgrestore will not find the physical volumes that it needs to recreate the volume group.]

The lesson

Don’t panic!
Keep a safe copy of your /etc/lvm/ files!
Make sure that you have a Rescue disk that understands the LVM system!

Apart from the above disaster, which seems to have sorted itself out very easily, I have had no trouble with the LVM system. At first I was worried that if there was a failure it would lose everything. There is something very comforting about a simple ext2 (or FAT) partition in that I know it can just be hacked at the bit level and rebuilt. Something like LVM, which is logical volumes on top of volume groups on top of physical volumes is impossible to rebuild ‘by hand’ so I’m learning to trust technology a bit.

All about Linux: Creating a LVM in Linux

All about Linux: Creating a LVM in Linux

To create a LVM, we follow a three step process.
Step One : We need to select the physical storage resources that are going to be used for LVM. Typically, these are standard partitions but can also be Linux software RAID volumes that we've created. In LVM terminology, these storage resources are called "physical volumes" (eg: /dev/hda1, /dev/hda2 ... etc).
Our first step in setting up LVM involves properly initializing these partitions so that they can be recognized by the LVM system. This involves setting the correct partition type (usually using the fdisk command, and entering the type of partition as 'Linux LVM' - 0x8e ) if we're adding a physical partition; and then running the pvcreate command.
# pvcreate /dev/hda1 /dev/hda2 /dev/hda3
# pvscan
The above step creates a physical volume from 3 partitions which I want to initialize for inclusion in a volume group.
Step Two : Creating a volume group. You can think of a volume group as a pool of storage that consists of one or more physical volumes. While LVM is running, we can add physical volumes to the volume group or even remove them.
First initialize the /etc/lvmtab and /etc/lvmtab.d files by running the following command:
# vgscan
Now you can create a volume group and assign one or more physical volumes to the volume group.
# vgcreate my_vol_grp /dev/hda1 /dev/hda2
Behind the scenes, the LVM system allocates storage in equal-sized "chunks", called extents. We can specify the particular extent size to use at volume group creation time. The size of an extent defaults to 4Mb, which is perfect for most uses.You can use the -s flag to change the size of the extent. The extent affects the minimum size of changes which can be made to a logical volume in the volume group, and the maximum size of logical and physical volumes in the volume group. A logical volume can contain at most 65534 extents, so the default extent size (4 MB) limits the volume to about 256 GB; a size of 1 TB would require extents of atleast 16 MB. So to accomodate a 1 TB size, the above command can be rewriten as :
# vgcreate -s 16M my_vol_grp /dev/hda1 /dev/hda2
You can check the result of your work at this stage by entering the command:
# vgdisplay
This command displays the total physical extends in a volume group, size of each extent, the allocated size and so on.
Step Three : This step involves the creation of one or more "logical volumes" using our volume group storage pool. The logical volumes are created from volume groups, and may have arbitary names. The size of the new volume may be requested in either extents (-l switch) or in KB, MB, GB or TB ( -L switch) rounding up to whole extents.
# lvcreate -l 50 -n my_logical_vol my_vol_grp
The above command allocates 50 extents of space in my_vol_grp to the newly created my_logical_vol. The -n switch specifies the name of the logical volume we are creating.
Now you can check if you got the desired results by using the command :
# lvdisplay
which shows the information of your newly created logical volume.
Once a logical volume is created, we can go ahead and put a filesystem on it, mount it, and start using the volume to store our files. For creating a filesystem, we do the following:
# mke2fs -j /dev/my_vol_grp/my_logical_vol
The -j signifies journaling support for the ext3 filesystem we are creating.
Mount the newly created file system :
# mount /dev/my_vol_grp/my_logical_vol /data
Also do not forget to append the corresponding line in the /etc/fstab file:
#File: /etc/fstab
/dev/my_vol_grp/my_logical_vol /data ext3 defaults 0 0
Now you can start using the newly created logical volume accessable at /data mount point.

Using PERL to create a file upload script

sub upload_file {
my ($data, $filename);
my $file = param( 'upload' );
my $type = uploadInfo($file)->{'Content-Type'};

if (!$file) {
print "No file uploaded!";
($filename = $file) =~ s /^\w.+\\//ig;
print $filename, br;
print $file,br,$type,br;
open (SAVE,">./$filename") ¦¦ die $!;
while (read($file,$data,1024)) {
print SAVE $data;
close SAVE;

comment for the perl codes:

This is using, correct?

I may be off on this part, but try changing

while (read($file,$data,1024))


while (read($file,$buffer,1024))

I seem to recall finding $buffer being one of the variables used in that if changed it won't work. (This part may be inaccurate, but it's one variable and you can change it back, try it.)

Secondly, you have verified your substitution indeed grabs the right filename, correct? Beware, this is a double-edged sword - Mac paths do not follow the / syntax. I do something like

@fullpath = split (/\\¦\/¦:/,$file); ## \ for win / for linux : for mac
$filename = $fullpath[$#fullpath]; ## or use pop(@fullpath)

Last thing you could look at is

open (SAVE,">./$filename")

./ from where? I've noticed when working with, your location at the time this bit of code runs is not where you think. I've seen my files turn up in the CGI_temp directory, the server root . . . all kinds of places. Try

$filename = /full_virtual_path/to/$filename;

So all together:

@fullpath = split (/\\¦\/¦:/,$file);
$filename = pop(@fullpath);
$filename = /full_virtual_path/to/$filename;

open (SAVE,">$filename") ¦¦ die $!;
while (read($file,$buffer,1024)) {
print SAVE $buffer;
close ($file); ##old habit - maybe bad one but it works
close SAVE; : HOWTO: Windows XP running under Xen 3.0 on Ubuntu Dapper Drake

virtualization xen

Free Software Foundation

UbuntuandFreeSoftwarelinks opensource software gnu free fsf

Make a Support Request to the Ubuntu Community

UbuntuandFreeSoftwarelinks ubuntu linux support free

Link to digg

famous web 2.0 site

web2.0 community social digg Blogs

Scale-up Linux goes Mainstream

Linux Systems: Informative webcast featuring a panel of experts explore right solution for federal government IT applications.

Recommended Eclipse Plug-ins

Open Source Testing : Public marks with tags java & web,web Category Reviews - Open Source Java and Web Testing Tools

freshmeat maintains the Web's largest index of Unix and cross-platform open source software. Thousands of applications are meticulously cataloged in the freshmeat database, and links to new code are added daily.

SVK Dual Independant Repository Development | Nathaniel Brown

multiple repository management by using subversion

svk will be a good choice to be used in a distributed development environment

Java Security - Https and HttpUnit WebConversation

check this article for details:

Team 509's Home - Linux physical memory mapping analysis

we think we do

Web QA Test Tool Links

check here

Web QA test tool links, testing glossary, training courses. Open source and commercial WWW test tools: HTML validators, link checkers, functional, GUI, performance testing.

Index page which lists many open source web testing tools in java

Open Source Web Testing Tools in Java

Selenium, Canoon and HttpUnit, Jwebunit is my prefer.

old news from CNET

News Business tech technology CNET

CHOW: Food. Drink. Fun.

Recipes, cooking techniques, and news, updated daily. Devoted to the pleasure of food and drink.

food recipes cooking restaurants blog

how to configure dual monitor under linux

There's an article talks about this:

HowTo: Dual Monitors (Xinerama/TwinView/MergedFB) - Ubuntu Forums

But seems useless for me.

Finally I manually modified the xorg.conf file and did it on my laptop -- nc6440

ubuntu linux howto dualhead X11

Call Center, Bug Tracking and Project Management Tools for Linux

Call Center, Bug Tracking and Project Management Tools for Linux

A survey of customer relationship management, call management, project management, asset management, trouble-ticketing and help-desk management tools for Linux

Linux software Helpdesk management tracking

Another Multiple Thread Unit test article

搜斧SearchFull - Multithreaded Tests with JUnit

Junit best practices article

check it out

JUnit initialization

TestSetup (JUnit API)

Please check Junit 3.8.1 docs here:

java junit api javadoc testing

how to do multiple thread testing in Java

here is an example:
JUnitExtensions.MultiThreadedTestCase (ObJectRelationalBridge 1.0.4 API documentation)

CUPS web interface on Ubuntu has no network printer autodiscovery -- "snmp" backend is disabled |

CUPS web interface on Ubuntu has no network printer autodiscovery
"snmp" backend is disabled |

How to Administration - CUPS 1.2.2

The CUPS access entry is :

linux CUPS admin printing local

Debian Reference Menu

imported Linux Debian reference documentation howto

Linux Kernel Configuration Archive

Kernel configuration site

Microsoft in open source - Port 25

Port 25

This is the first time I google for Microsoft and open source. And then I found this.

Seems Microsoft already paid a lot on open source and began to think about how to make money from open source.

Good news for me: sliverlight on Linux.
I like this browser which is the so called next generation M$ web browser. It's good and powerful.
Try it if you like new tech and good feeling of stream media.

The official Microsoft open source website is here:

Actually no too much things happen here, but it's a start.

Let's look at how M$ flip into open source pool.

Merging Blog Again

I will continue to merge a few bookmarks from is one of my favorite web 2.0 website. It is simple and easy to use. But finally I decide to merge all my pieces into

Tag/blog/bookmark and links will all be included here.

Dig everything here. :)

Tuesday, September 18, 2007

automated installation - from

install - SWiK

This swik page contains a few automated installation technologies.


Automatix is a graphical interface for automating the installation (and uninstallation) of the most commonly requested applications in Debian based Linux operating systems.


autopackage allows developers to produce “install anywhere” packages for 3rd party Linux software.


SystemImager automates the installation of Linux to masses of similar machines. Software distribution, configuration, and operating system updates are made easy, including updates from one Linux release to another.

Nullsoft Scriptable Install System

NSIS from Nullsoft is a tool for creating quick and user-friendly installers for Microsoft Windows operating systems.

It is a script-based system that adds a very small overhead, only 34 KB.

KXML samples - RSS and Blog client


Some small code snippets illustrating basic parsing operations can be examined via viewcvs:

There are also some nice open source projects built on kXML that illustrate how to use the parser:

  • RSS Reader - a MIDP RSS reader using kXML 2.1.7
  • Azure - a free blog client for your phone and PDA

Parsing XML in J2ME

Parsing XML in J2ME

This article lists a number of XML parser libs which we can use in Java ME applications. Here is the list:

The following table summarizes the current offering of small XML parsers that are appropriate for MIDP.

Name License Size MIDP Type
ASXMLP 020308 Modified BSD 6 kB yes push, model
kXML 2.0 alpha EPL 9 kB yes pull
kXML 1.2 EPL 16 kB yes pull
MinML 1.7 BSD 14 kB no push
NanoXML 1.6.4 zlib/libpng 10 kB patch model
TinyXML 0.7 GPL 12 kB no model
Xparse-J 1.1 GPL 6 kB yes model

The Name and License columns contain links to the corresponding web pages and licenses. The Size column indicates the size of the class files for the parser as contained in a JAR, which is an approximation of how much size the parser will add to your MIDlet suite JAR. The MIDP column indicates whether the parser will compile without modifications in a MIDP environment. Finally, the Type column indicates the type of the parser, as discussed above.

Monday, September 17, 2007

Newsvine - Nokia Buys Mobile Ad Company Enpocket

Newsvine - Nokia Buys Mobile Ad Company Enpocket

Apple, Moto and many other companies also have this kind of trend.

They have a good base to start if they want.

To be able to cooperate with these companies will generate a lot of new business.

Also, the next generation of internet will absolutely on Mobile market.

start [MojaveWiki] - java linux developer wiki

start [MojaveWiki]

knowledge sharing

IDE Comparison

J2ME : Java ME : MicroDevNet : J2ME IDE Comparison:

J2ME IDE Comparison

Java IDE Comparison

This page strives to answer the age old question, "What is your favorite IDE?" Let's see how I do...

After years of programming, I have finally been held down and coereced into using an IDE for my Java development. When I began using Borland's JBuilder at work, I instantly recognized the efficiency gained by using an IDE for Java server-side development. While tools like Ant, Vim, and the commandline are certainly very powerful, they are not context aware and therefore cannot offer timesaving utilities directly related to development, such as build wizards, refactoring, code completion and templates, and automatic least, not without a significant amount of planning and preperation. IDEs offer these features right out of the box.

However, after logging a bunch of hours using JBuilder, I found myself cursing at it quite often...okay, very often. While I recognized the importance of its time saving utilities, I came to the conclusion that JBuilder had too many annoying deficiencies to ignore. It was not working with me and certainly not thinking the way that I thought. To find greener pastures, I embarked on a quest to discover the best Java IDE for me. Below is a summary of the ongoing results of this comparison (dated Summer 2004), based on likes and dislikes for each product. Needless to say, this debate is a hot topic right now and there is good reason. If I make any statements which are untrue, please correct me so that the points made in this list remain current.

Eclipse 3.0 (Eclipse Project)

Price: Free

License: Open Source (CPL)


Summary: Eclipse is an open platform for tool integration built by an open community of tool providers. Operating under a open source paradigm, with a common public license that provides royalty free source code and world wide redistribution rights, the eclipse platform provides tool developers with ultimate flexibility and control over their software technology.


  • IDE looks amazing, across all systems, and it is quite responsive...great interface overall!
  • anti-aliased text everywhere, even in UI!
  • ability to format to your line wrapping width
  • refactoring support ascends from heaven!
  • easy to share code between projects
  • ant integration very well done, ant launcher makes managing project tree very easy
  • content assist is used whereever possible, not just in editor (wizards scrrens)
  • amazing control over the formatting of java source code, which can be saved as a profile
  • pasting code formats code automatically!
  • editor tabs can be moved around with drag-and-drop
  • can double-click editor tabs to expand to full workspace view
  • has both docked views and fast views (most editors only offer one or the other)
  • very powerful control over how the java compiler handles warnings and errors
  • very small project-specific footprint on directory tree (.project, .classpath)
  • package view has very nice filtering abilities, for what to show/not show (can now filter closed packages, selected working set)
  • code assist in ant resolves location properties and displayes the path in a tooltip!!
  • code assist shows documentation for each option, especially helpful for ant tasks
  • awesome integrated diff engine and viewer for comparing files and refactoring changes
  • can rearrange the order of properties and methods in the "outline" view
  • context aware templates, tab/shift-tab to jump to different insertion points (markers)


  • editor does not have a split file view!!
  • lacks general syntax highlighting out of the box (property file highlighting added in 3.1)
  • no "soft" line wrapping (only hard wrapping by issuing the format command)
  • doesn't come with native servlet/J2EE aware plugins (you have to configure a plugin, such as lomboz, webtools or myeclipse)
  • must manually create ant scripts, though the code assist support is very well done
  • cannot create new buffer without creating linked file (annoyance, fixed in 3.1)
  • double clicking on file in package explorer does not close editor if it is currently open (JEdit feature)

IDEA (IntelliJ)

Price: $500

License: Proprietary


Summary: IntelliJ IDEA is an intelligent Java IDE intensely focused on developer productivity. It provides a robust combination of enhanced development tools, including: refactoring, J2EE support, Ant, JUnit, and CVS integration. Packaged with an intelligent Java editor, coding assistance and advanced code automation tools, IDEA enables Java programmers to boost their productivity while reducing routine time consuming tasks.


  • Superb block editing, the best I have seen, has a distinct "column mode" setting which can be toggled in the context menu
  • refactoring works flawlessly, has a nice preview, doesn't hose project
  • Excellent keymapping support, going so far as to support key sequences ala emacs
  • Interesting support for anywhere editing (automatically places spaces to fill)
  • Once tld is accessible (in classpath), instant tag support in JSP, no need to "assign" it to the IDE
  • once setup, tomcat integrate is very streamlined, offers a "dump threads" utility for a sudo-reload, JSPs recompile after save
  • project view is very simple, easy to understand...arranging projects is user-friendly and intuitive
  • best looking theme next to Eclipse (even on Linux), limited only by java and fonts
  • anti-aliased text in editor, also in docked tabs
  • Struts Console plugin offers great Struts config and tld file support
  • excellent community, nice website, great resources for product overall
  • very nice integrated class browser whenever a class is required for input
  • keymap hints in UI menus update to reflect current keymappings, not just the default set
  • ant view allows for filtering of targets using a pick list (great for huge build files)


  • deployment server must be setup separately
  • No "X" button on editor tabs to close a file, must right click or use keymapping

JBuilder X (Borland)

Price: $3,500

License: Proprietary


Summary: JBuilder is a complete Java IDE for EJB, Web and Web Services, offering integration with application servers (namely BEA Weblogic), a Struts designer, unit testing, refactoring and support for several source control systems.


  • code template expansions are very helpful, prevents redundant typing (expand with CTRL-J)
  • can view images in separate tab
  • archive builder offers a nice wizard replacement for many ant tasks
  • decent built-in database plugin for managing and querying a SQL database
  • built-in makefile task for build, clean, rebuild, no need to create ant script
  • sound effects are a nice touch
  • JSTL-EL syntax highlighting support
  • antialiased text editor
  • can make edit window full screen by double clicking tab


  • options in hard to find places
  • code completion is WAY too aggressive and stupid, constantly gets in the way and causes irritation
  • auto-indentation is just plain stupid, flaky and often times incorrect
  • cannot reformat non-java code, such as XML/XHTML
  • renaming a project is a recipie for disaster, everything gets screwed (most crucially the paths)!
  • deploying to weblogic is flaky at best, seems to have major caching issues, "web run" conflicts with "deploy" and having both options is confusing
  • recompiling with an active "web run" will sometimes redeploy, sometimes won't redeploy; it's completely random, so you constantly have to restart the weblogic server
  • cannot "web run" from two different projects at the same time
  • spawn browser to test webapp doesn't give option to launch external browser (uses an internal browser instead)
  • selecting a test page (and query string) for "web run" is very hard to find, nested deep in the "Run..." configuration
  • too many different ways to "rename" things, some with refactor support, some without...should be integrated so you cannot screw it up
  • refactoring is crap, even renaming a field screws up the code; possible to hose your project in untold ways by renaming things
  • no tld support/taglib creation, you are on your own
  • adding fields to class doesn't allow specification of access (private|protected|public)
  • some files show up outside of project but they are linked to files inside the project???
  • xslt stylesheets have a confusing interface (transform view doesn't work, but browser view does work)
  • cannot delete a directory or a package in a project
  • sometimes when you add a class in a new package, JBuilder won't include it in the build until you restart
  • jsp validation is not very helpful, just tells you on what line an error occurs
  • claims it cannot view generated jsp servlet source, even though it exists on disk
  • the block editing that exists is not really block editing at all
  • key customizations are limited to a single sequence, so emacs bindings are impossible
  • split windows are jumpy, they tend to scroll when you don't want them to scroll, making them useless
  • keymap hints don't change in UI when the default set are not being used, hardcoded
  • TODO project tags have to be in *.java source files, does not support jsp, xml, etc.
  • editing dependencies of a web module overwrites tlds, liters directories with unnecessary tld files
  • SVN directories are not respected, killed on a "make clean" operation
  • crappy built-in database plugin for managing and querying a SQL database (fields don't resize to show data, no sorting)
  • using "Find" in regexp mode replaces regexp with first matched string (erasing your regexp), regexp "Replace in path..." does not correctly insert backreference
  • web run requires a full deployment to weblogic, so it is slow (embedded servlet would be better)
  • wizard for "implement interface" but no wizard for "extend class"
  • when creating new files, you get a different create screen depending on where you selected the option, CONFUSING!!
  • no syntax highlighting for java properties files, and no editor
  • code formatting is tied to project (maybe even file?) and you find yourself constantly adjusting them/reimporting them
  • many times the error insight will detect an error, but it won't tell you what the error is until you try to compile
  • several step process for code assist to import a missing symbol
  • no mechanism for importing files, instead you have to "save as copy..." after opening file
  • no syntax highlighting for CSS files, and no editor (and no plugin)
  • multiple projects can not be viewed at once, must repeatedly toggle which project is displayed
  • no support for ant imports

JDeveloper (Oracle)

Price: $995 (free for non-commercial use)

License: Proprietary


Summary: Oracle JDeveloper is an integrated development environment with end-to-end support for modeling, developing, debugging, optimizing, and deploying Java applications and Web services. Oracle JDeveloper 10g introduces a new approach to J2EE development with features that enable visual and declarative development. The innovative OAF simplifies J2EE development.


  • very nice integration with embedded OC4J container, very easy to execute test page, updates reflected immediately
  • browser launcher is configurable (good for tabbed browsing and multiple launches)
  • JSP engine and code editor is the best I have seen, super easy to work with, delightful!
  • code insight for EL expressions!
  • auto insert of taglib uri directive when inserting a taglib in JSP page source
  • several ways to do block indent formatting (highlight block and tab/shift-tab will indent/unindent)
  • very nice forms for creating all aspects of classes
  • very nice forms for creating classes from *.tld files and keeping the two in-sync/connected
  • adding taglibs to a project is somewhat intuitive...if you know what to press, it works just fine
  • message windows informative on build
  • deployment descriptors have previews so you know what they are going to encapsulate
  • nice refactoring support
  • code template support
  • the timeout on most "auto" aspects can be configured to happen after a time interval, configured with a slider bar...nice concept!
  • Nice import mechanism for sources, very comprehensive wizard


  • old stuff tends to hang around, constant have issues with "artifacts" of a project, no "make clean"
  • files can get really messed up if you don't remove them properly from disk...learn the order of doing things and stick with it
  • no clear way to remove a class altogether, if created by accident (I found it, located in file, NOT intuitive)
  • no way to rename a *.tld file once it is created with wizard
  • somewhat slow, not quite as quick as netbeans
  • several places where a class or interface is required that you have to do manual typing, no integrated class browser
  • look and feel is descent, some descent icons
  • cannot maximize a tab to take up the whole window.
  • no way to make textarea anti-aliased text
  • doesn't remember last openned directory...argh!!

NetBeans 3.x (Sun Microsystems)

Price: Free

License: Open Source (SPL)


Summary: The NetBeans IDE is a development environment - a tool for programmers to write, compile, debug and deploy programs. It is written in Java - but can support any programming language. It is a free product with no restrictions on how it can be used. It includes syntax highlighting and language support for Java, JSP, XML/XHTML, visual design tools, code generators, ant and CVS support.


  • very nice code completion engine, never seems too aggressive, very thorough in what it includes, esp jsp
  • code formatting/reindent task (located in context menu), especially nice for XML/XHTML
  • creating custom tag libraries was very easy, step by step process straightforward (once I knew where to look)
  • very nice integration with Tomcat, no setup required, direct pages testing, spawns browser, always updates correctly
  • can specify default request parameters when testing a page
  • view generated source code for jsp
  • the whole Tomcat integration module is superb!
  • nice jsp tag repository support in jsp editor, very easy to add tag libraries to jsp page
  • HTTP monitor integration very nice, again, part of integration with servlet engine, A++
  • can move around tabs, I love this (tabs also don't wrap to next line, big plus)
  • validate JSP is very helpful and quite informative...tells you exactly what is missing
  • javadoc wizard could come in handy, definitely a cool feature, more than just a GUI
  • method/field navigator as a select box is a nice idea on main UI, don't take up space
  • can move around all views, group as tabs, etc...easy to customize placements, but doesn't get too complicated like with "workspaces" in eclipse
  • block indenting/unindenting function, great for XML/XHTML (hardly need it with the code reformatting)
  • very responsive and quick UI
  • anti-aliased text in editor
  • very acceptable IDE layout
  • can right-click file and "Save as template..." which is especially nice for JSP content pages
  • very nice database browser, manipulator, easy to setup


  • UI looks crappy (metal), icons suck
  • no refactoring or refactoring templates (try/catch, rename field, etc...)
  • no JSTL-EL support in syntax highlighting/code completion
  • cannot wrap arbitrary text in editor
  • wierd issues with "mounting" core libraries, causes errors and features not to work correctly, such as code completion...the whole "mounting" thing is very strange
  • new file wizards too minimial
  • limited control over formatting of java source code (though the defaults won't kill you and it can reformat nicely)
  • Very difficult (for newbies impossible) to add a regular ol' jar file to a project. Every mechanism seems to work against you.
  • Cannot import sources from somewhere else into project, rather you can only mount them where they are...need a copy mechanism

Eclectic Bill: "Project Management for Small Projects" Review

Eclectic Bill: "Project Management for Small Projects" Review:

From a link of my subscribed PM related blog, I found this article. I think it will help me on my own small project team management article.

Look at the defnintion of small project:

1. Six months or less in duration
2. Part-time in effort hours
3. Ten or fewer team members
4. Small number of skill areas
5. Single objective and solution that is readily achievable
6. Narrowly defined scope and definition
7. Affects a single business unit and a single decision maker
8. Doesn't require automated solutions from external project sources
9. No political implications
10. Straightforward deliverables with interdepencies among skill areas
11. Costs less $75,000 and has available funding
Examples of small projects are the creation of a training course or developing a website.

Given this definition, Ms. Rowe describes five challenges facing the project manager of small projects:
1. Planning - not enough
2. Low priority
3. Inexperienced project teams
4. Project manager responsible for multiple functions
5. Trying to use standard project management tools and processes for small projects.

Thanks Bill.

Sunday, September 16, 2007

小型团队项目管理 Small Team Project Management - 未完成

  • 业务环境了解--需求分析
  • 业务功能实现--功能设计和实现
  • 业务服务--产品部署、实施和支持










Lucene Based Open Source Java Search Engine - Compass

Compass - Overview

Our Mission Statement

Compass is a powerful, transactional Object to Search Engine Mapping (OSEM) Java framework. Compass allows you to declaratively map your Object domain model to the underlying Search Engine, synchronizing data changes between Index and different datasources. Compass provides a high level abstraction on top of the Lucene low level API. Compass also implements fast index operations and optimization and introduces transaction capabilities to the Search Engine.

Our aim for Compass is:

  • The simplest solution for enabling search capabilities within your application stack.
  • Promote the use of Search Engine as a lightweight application datasource.
  • Easily extendable into any application model.
  • Provide rich Search Engine semantics to find application data.
  • Synchronize data changes between Search Engine and datasource.
  • Write less code, find data quicker.

Compass Features

Compass is a layered Java Search Engine framework, built on the Lucene Search Engine. Its goal is to empower application developers with a power means to integrate search engine capabilities to the application stack declaratively.

Compass Core

  • Lucene Jdbc Directory: An implementation of Lucene Directory to store the index within a database (using Jdbc). It is separated from Compass code base and can be used with pure Lucene applications.
  • Search Engine API: A powerful and simple to use abstraction on top of Lucene Search Engine.
  • OSEM: Object/Search Engine Mapping technology (using xml and/or Java 5 annotations). Allowing you to declare the mapping from application Object model to the underlying search engine semantics.
  • Resource Mapping: Ability to map application resource through Compass when no Object model is available.
  • Transaction support: Provides both LocalTransaction and JTATransaction implementations.
  • Common Meta-data: The means to externalize common mapping meta-data into easy to manage centralized resource.
Compass Gps

  • Hibernate: Provides support for indexing your datasource through OSEM and the Hibernate ORM tool. It also implements data mirroring through Hibernates event based mechanism.
  • JPA: Provides support for indexing your datasource through OSEM and an implementation of EJB3 JPA (Java Persistence API). It also implements data mirroring using JPA event registration or using specifics of the underlying JPA implementation.
  • JDO: Provides support for indexing your datasource through OSEM and JDO ORM tool. It also implements data mirroring through JDO 2 event based mechanism.
  • OJB: Provides support for indexing your datasource through OSEM and Apache OJB ORM tool. It also implements data mirroring through OJB lifecycle event based mechanism.
  • iBATIS: Provides support for indexing your datasource through OSEM and Apache iBATIS.
  • JDBC: Provides support for indexing your datasource through mapping of a JDBC ResultSet or Table (non POJO based mapping). It also implements data mirroring capability.
Compass Spring
  • Hibernate: Extending both Spring and Compass::GPS Hibernate 3 support and providing support for Spring based SessionFactory.
  • DAO: Uses the CompassTemplate and CompassCallback classes in Compass::Core as part of it's DAO (Data Access Object) support for Spring.
  • AOP: Compass provides a set of Spring AOP Advices which helps to mirror data changes done within a Spring powered application. For applications with a data source or a tool with no gps device that works with it (or it does not have mirroring capabilities - like iBatis), the mirror advices can make synchronizing changes made to the data source and Compass index simpler.
  • JDBC: Demonstrates how to use JDBC Gps device configured through Spring.
  • OJB: Extending both Spring and Compass::Gps OJB support and providing support for Spring based PersistenceBrokerTemplate and OjbFactoryUtils. Real time data mirroring is supported through SpringOjbGpsDeviceInterceptor.
  • MVC: Provides helper and support classes that build and integrate with Spring web MVC support. It has several base class controller helpers, as well as search and index controllers.
  • Transaction: Provides integration for Spring based transaction management either using LocalTransaction or using Spring transaction synchronization services

How to Use Web 2.0 Inside Your Company on BNET

How to Use Web 2.0 Inside Your Company on BNET: "

Firstly I feel amazing about BNET provides a Web 2.0 topic from his newsletter. This is a really so hot topic for all companies. In those web 2.0 related articles, following steps are recommending to be used while applying web 2.0 in real business. I think

Step1: Start Small and Simply

Step2: Build Support from the Ground Up

Step 3: Experiment and Extend

Step 4: Give Power to the People

The final step is really important for people who care about web 2.0.

Good summary.

中国Web 2.0 模式拷贝

The internet | Not losing Facebook in China |








Primeton EOS 是基于J2EE 平台之上的完整的系统架构,是面向构件的完整的互联网应用
体系。EOS 构件化平台提供了对EOS 6 种构件在可视化定义、组装、发布、构件运行引擎、构

从功能上EOS 主要包括4 大模块:EOS 构件运行和管理环境(EOS SERVER),EOS 构件
集成开发环境(EOS STUDIO),EOS 构件库,EOS 工作流。




JasperAssistant User Guide

JasperAssistant User Guide

JasperAssistant is a Eclipse plugin which support design JasperReport report in Eclipse.

JasperReport is a really powerful open source report lib. It integrates with JFreeChar and other related tools.

Actually there's another powerful report design tool called ireport, but I really like to integrate everything into Eclipse because I don't want to change to another editor or GUI tool.

How to install this plugin: JasperAssistant provides a online manual, please check it from here.
Install by using Eclipse update site, you can use following instructions and update sites:
  1. From the Eclipse menu, select Help->Software Updates->Find and Install. This will open the Install/Update wizard.

  2. On the fist page, select the "Search for new features to install" option and click Next.

  3. On the second page, click the "New Remote Site..." button and enter the following information:

    For Eclipse 3.0.x

    Name: JasperAssistant update site

    For Eclipse 3.1.x

    Name: JasperAssistant update site

    Additionally, for Eclipse 3.1.x, add the following remote update site that is required to install GEF plug-in:

    Name: Eclipse 3.0 update site

    For Eclipse 3.2.x

    Name: JasperAssistant update site

    For Eclipse 3.3.x

    Name: JasperAssistant update site

Thursday, September 13, 2007

IT|Redux - BPM 2.0

IT|Redux - BPM 2.0: "

Comparisions between BPM 1.0 and BPM 2.0.
They are all true. Business should be more easy and flexible to be implemented. But on the backend, everything should still the same as before, or even harder.

BPM 1.0 BPM 2.0

Marketed to Business Analysts Used by Process Analysts

Starting with a Process Modeling Tool Starting with a Complete BPMS

Multiple Tools from Multiple Vendors One Single Tool in Eclipse

Usable by J2EE Experts Only Loved by ABAP, PHP and VB Folks


ARIS, HIM, UML, Proprietary Notations BPMN

BPEL Editor BPMN Designer

Writing Code Behind the Boxes Zero Code

Writing Deployment Descriptor Files One Click Deploy

Implementing Application Connectors Generating Web Services on-the-fly

Generating Java Code Interpreting BPEL Code Natively

Web 1.0 User Interface Web 2.0 User Interface

Bring your own Rule Engine Rule Engine Included

Bring your own BAM Real-Time BAM Included

Ad hoc Process Simulation Native Process Simulation

Continuous Process Improvement Dynamic Process Optimization

Closed Source Process Engine Open Source Process Engine

$250,000 Entry Fee Get Started Today, Free of Charge

Used by Process Analysts

IT|Redux - Rules for Office 2.0

IT|Redux - Rules for Office 2.0

Look at these rules:
No client application other than a web browser
No files on personal computer
Compatibility with the most popular web browsers
No browser extension or plugin
Collaboration features are good
Syndication is the way to go
AJAX is better
Competition brings alternatives
Data import/export is mandatory

I wish, the browser can do everything for me but ...

Comparing with Microsoft's office, I think current office 2.0 still a long way to go.

But look at the link beside this article, there are office 2.0 solution vender - Webex, ThinkFree, service provider - Etelos, content protect solution vendor - EchoSigh, and supper companies - Google and SAP. I believe these people work together and they can make something.

I don't know whether these rules already prioritized, but from my point of view, the one of "Collaboration features are good" is the most important one. Without this one, I don't think the companies will turn their head to use office 2.0 -- something they can easily got from other place.

InfoQ: Is Open Source the way ahead for SOA?

InfoQ: Is Open Source the way ahead for SOA?:

Look at this:
"The report mentions that of 400 executives surveyed, 71% of them view open source as either 'important' or 'very important' for consolidating their IT infrastructure. Plus, 57% said that they saw open source as 'important' or 'very important' for facilitating a migration to SOA. According to Forrester, 78% believed that the open standards approach typically taken by open source software is a major factor driving their view of its value for SOA next-generation enterprise architectures."

And look at all famous open source communities, they all put more and more energy on SOA and SOA tool kits. Taking open source solutions seriously is not any double. To engage existing technologies between communities will be one way we can adopt. I think if those open source communities can aware this, we will have more and more SOA candidates on our hand.


微软Google共推office 2.0 强调实时合作性-太平洋电脑网Pconline-[国际业界新闻]

微软Google共推office 2.0 强调实时合作性-太平洋电脑网Pconline-[国际业界新闻]



Monday, September 10, 2007

.Com come back!!!

All information come from every corner warn me .COM come back, or, it never leave.

So, I put my head into internet and look around and log everything I found.

I'll translate some key news come from China. Seems that Chinese more fit to create storm!!!

A JBoss POJO Clustering note by Michael Yuan

A JBoss POJO Clustering note by Michael Yuan

Michael said a real thing: developers do not really have time to dive into length articles, or reference documentation just to investigate a new framework that is supposed to "save you time".

I'm also thinking about this. As a developer, to follow a guide is easy, but I think most of developers more like to do with their own way.

BTW, The JBoss SEAM framework seems ugly, or I hadn't understood it.