Thursday, July 27, 2006

IntelliJ IDEA 6 Beta is released

Yesterday, JetBrains released IntelliJ IDEA 6 Beta. I'm glad to hear it. But seems JetBrains need to do many things before IDEA 6 final release. There are 2 threads (here and here) of users' suggestion about IDEA 6.

Detail change list in this build, here.

I don't know which build this exists but in this build, when I want to revert a file from Subversion, IDEA will show me a dialog to choose the files I want to revert. It didn't revert only the current file silently.

Keep going with "Deveplop with pleasure" slogan, JetBrains! :-)

Update: IDEA's TestNG plugin still works fine with TestNG 5.0

Tuesday, July 25, 2006

IntelliJ IDEA build 5561 is released

This is bug fixed build. More details, see here.

This build fixed a bug I reported before.

Saturday, July 22, 2006

C# enumeration problem

In C#, I have an enumeration

public enum Orientation
East = 1,
West = East,
South = 2,
North = 3

At this time, East and West has same underlying value (1) and I cannot write a switch like this

switch (orientation)
case Orientation.East:

case Orientation.North:

case Orientation.South:

case Orientation.West:

Because when I compile, I will have an error: "The label 'case 1:' already occurs in this switch statement"

I don't understand why C# supports to declare enumeration like that. If East and West has same meaning, I will not waste my time to create both of them.

Can anybody has experience with C# help me?

Friday, July 21, 2006

IntelliJ IDEA build 5557 is released

This is bug fixed build but still have some small new features.

More detail, see here.

Thursday, July 20, 2006

TestNG 5.0 is released

Yesterday, Cedric released TestNG 5.0. It has many change as in v4.7

* The configuration annotations are now called @BeforeTest,
@BeforeSuite, etc...
* The reports are now created in their own directory (one per suite)
and a main index file shows a list of all the suites that were
just run. They have also received a series of improvements in
appearance and content.
* It is now possible to specify the suite and test names directly in
the @Test annotations, which allows you to do without a testng.xml.
* expectedExceptions has moved inside @Test.
* TestNG shows you friendly stack traces.

For more information, go here.

Waiting for upgrade IDEA's TestNG plugin...

Wednesday, July 19, 2006

A Short History of Design Patterns

The title shows you what is here.

Finished Pragmatic Version Control: Using Subversion 2nd

This is a good book about Subversion. From starting, it will show you a story of daily working tasks relate with Subversion: You update your working copy, commit your changes, resolve the conflict...

This book will show you

   + The advantages of Subversion
   + How to create repository
   + What you should import to your repository and how to do
   + Why you need to create tags and branches and how to do
   + How to organize your repository also project
   + And many things...

I prefer this book than Version Control with Subversion 'cause I'm a developer, I don't need to focus in administration.

Next step: Practices of an Agile Developer - Working in the Real World

Tuesday, July 18, 2006

Small is great

Small is great. An ideal team should contain from 4-6 persons...

Two articles about building great team:

+ How to build a great team
+ Is your team too big? Too small? What's the right number?

Monday, July 17, 2006

IntelliJ IDEA 6 UI designer demo

Really nice demo. When I saw it, I just can say "WOOOW".

I never try to use IDEA to design UI. I have a little experience with NetBeans's Matisse, it's nice. But I will give IDEA's UI designer a try :-)

You can see the demo here.

A video about Team Server / Ajax Development with IntelliJ IDEA I found at Google.

Came back from Deajon

Over 4 PM today, I came back Seoul from Deajon.

I visited my cousin's house. It's a boring weekend 'cause it's raining during days. But I met my cousin's son. A nice and obedient boy. He's just 6 months old.

Now I need to prepare for Wednesday's lecture. This week will a busy week.

Friday, July 14, 2006

IntelliJ IDEA build 5383 is released

This is bug fixed build. More details, you can see here.

This build fixed 2 bugs I reported long time ago:

Update: Found a bug.
Update: Another bug.

Thursday, July 13, 2006

Buồn ngủ qúa

Đêm qua mưa rõ to, nói chuyện với cô ấy xong cóc về được nhà vì sợ bị ướt hết. Về nhà còn loay hoay một lúc rồi mới đi ngủ được, hình như lúc đó cũng hơn 1h đêm rồi. Dạo này mình ngủ được, chắc tại đợt đá bóng vừa rồi thức xem nhiều qúa nên giờ cần ngủ bù.

Hôm nay làm việc rõ chăm, trưa đếch ngủ gì cả. Cái dự án mình "vẽ" ra đã thực hiện xong phần 1 rồi. Mai test thêm một chút nữa rồi chuyển sang phần 2.

Giờ chuẩn bị lecture nào...

Buy 5.1 now, get 6.0 early autumn

JetBrains has just announced new features of IntelliJ IDEA 6.0, the price (same as 5.1) and when it will be released (early autumn).

Buy IntelliJ IDEA 5.1 now, you will get 6.0 for free, plus TeamCity.

I draw project

Stupid Firefox bug

Please follow me:

+ Open Firefox
+ Now connect to your external drive (HDD or flash drive)
+ Try to upload from Firefox, you will not find new drive (in
Browse dialog)
+ Restart Fifefox then try to upload again, now you can find new drive

This bug exists long time ago.

Wednesday, July 12, 2006

Just received Ubuntu 6.06 LTS CDs

I've just received Ubuntu 6.06 LTS CD (5 CDs) after near 6 weeks waiting. Do you want it? Give me a comment ;-)

Ubuntu creates a better CD (than v5.05) 'cause it also contains live CD in installation CD. Nice!

JLicense, a bad license library

JLicense is a free Java license library, it supports to create and validate license keys. The license key will be store in license.lic which contains some information like licensor, licensee, expire date,... also you can add more information you need, they called "feature".

As I guess, JLicense will encrypt the information you gave into a signature which also is stored in license.lic. When program runs, JLicense will decrypt the signature and compare it with the information. If they match, program will run. Ofcourse, you can do more validating by using "feature"s.

But when I try to generate new DSA key (seems JLicense uses symmetric algorithm to encrypt data) then create new license, it will invalid (when you download JLicense, it already contained a DSA key, with this one you can create valid licenses). Another problem is I don't understand why JLicense need license.lic in classpath before it creates a new license.

In JLicense web site, they advertise "You can also write your own class, such as a Servlet, to create the license file more dynamically based on user input data." but the example demonstrates how to create license awfully, I still don't know how to create a valid license (from my source code).

These things I found in JLicense v2.7

Tuesday, July 11, 2006

IntelliJ IDEA build 5380 is released

About 30 minutes ago, JetBrains released IntelliJ IDEA Demetra build 5380. Here are changes in build 5380 from build 5368:

* JSP. Major performance improvements.
* Perforce. Synchronization of changelists between IDEA and Perforce.
* New scope configuration UI.
* CSS. Intention to extract inline style.
* Improved detection of invalid @Nullable/@NotNull annotations.
* Other improvements and bugfixes.

More details here.

Two bugs I reported are fixed ( and I will check the big bug later.

Update: They fixed big bug in a clever way: Removes capability to detach library directly from module's root :-D
Update: This build has a better performance but it has some terrible errors, they relate with Ant build and Perforce plugin.
Update: In this build, Unused symbol inspection doesn't work. Resolved: They changed from unused symbol inspection to UnusedDeclaration inspection.
Update: A request for new feature -

Wednesday, July 05, 2006

IntelliJ IDEA build 5368 is released

Yesterday night, JetBrains released build 5368 of IDEA. Here are changes in build 5368 from 5350

* EJB. Support for EJB 2.1 spec.
* Subversion. New repository browser.
* GWT Studio. Major functionality improvements.
* Updated project roots configuration UI.
* Intentions. Create enum from usage.
* Intentions. When creating method from usage in inner class,
possibility to place created method in outer class.
* GUI Designer. Support for binding button groups to class fields.
* Other improvements and bugfixes.

More details here.

Here is new project roots configuration UI

New Output tab

Default template project settings

This build fixed one bug I reported in build 5250 and this bug seems not happen any more.

Update: A bug that I found in this build.
Update: another bug. (But it's my bug :-D)
Update: Two more bugs (
Update: A big bug.

Tuesday, July 04, 2006

TestNG test class template for IDEA


package ${PACKAGE_NAME};

import static org.testng.Assert.*;
import org.testng.annotations.*;

public class ${NAME} {

@Configuration(beforeTestClass = true)
public void setUp() {
// Code to set up the test class comes here

@Configuration(afterTestClass = true)
public void tearDown() {
// Code to clean up the test class comes here

public void testSomething() {
// Code to test comes here


What is mixed revision working copies in Subversion?

Assume that you have 2 files Day.txt and Number.txt which are contained in sesame directory at revision 1 in Subversion repository. You checkout them and change something in Day.txt then commit it to repository. At this time, if you run "svn log Day.txt" command, Subversion will show you the log of Day.txt and its revision is 2. But if you run "svn log sesame", the command's output will return revision 1.

Why? 'Cause Subversion treats directories as first class objects, it remembers the revision number for each directory in your working copy.

I guess Subversion works this way: When I commit Day.txt to repository, Subversion client will update Day.txt (its content, history and revision number) to repository, also in working directory and sesame directory to repository. It doesn't update sesame directory and Number.txt in working directory. That's why if I run "svn log sesame", the command's output only returns revision 1. Only after I do "svn update", sesame's revision number will change, it comes from repository.

One sentence is from Version Control with Subversion is "'push' action does not cause a 'pull'"

Monday, July 03, 2006

Foxit Reader

You want to view PDF files but hate Acrobat Reader 'cause it's big, slow, waste memory and need to install. You have another choice, please use Foxit Reader. It's small (over 1MB), fast, don't eat too much memory and don't need to install. Also its UI really looks like Acrobat Reader so you don't need too much time to learn to use it.

Try it and like it!