Friday, March 31, 2006

A bug in JDK 6 beta 2 build 78?

Quote from my report to Sun:

dateCreated: Fri Mar 31 01:01:58 MST 2006
type: bug
cust_name: t800t8
cust_email: t800t8@yahoo.com
jdcid: t800t8@yahoo.com
status: Waiting
category: java
subcategory: classes_lang
company: t800t8
release: mustang
hardware: x86
OSversion: win_xp
priority: 4
synopsis: Error:Compiler internal error. Process terminated with
exit code 4
description: FULL PRODUCT VERSION :
java version "1.6.0-beta2"
Java(TM) SE Runtime Environment (build 1.6.0-beta2-b78)
Java HotSpot(TM) Client VM (build 1.6.0-beta2-b78, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [version 5.1.2600] with SP2

A DESCRIPTION OF THE PROBLEM :
When I use JetBrains' IntelliJ IDEA Demetra build 5201 to compile my
source code

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
+ Create a single module project in IntelliJ IDEA Demetra build 5201
+ Create a simple class, it just prints "Hello World" to the console
+ Press Ctrl + F9 to compile project


ERROR MESSAGES/STACK TRACES THAT OCCUR :
Information:An exception has occurred in the compiler (1.6.0-beta2).
Please file a bug at the Java Developer Connection
(http://java.sun.com/webapps/bugreport) after checking the Bug Parade
for duplicates. Include your program and the following diagnostic in
your report. Thank you.
Information:java.lang.NullPointerException
Information: at
com.sun.tools.javac.util.DefaultFileManager.listAll(DefaultFileManager.java:293)
Information: at
com.sun.tools.javac.util.DefaultFileManager.list(DefaultFileManager.java:700)
Information: at
com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1954)
Information: at
com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1703)
Information: at
com.sun.tools.javac.code.Symbol.complete(Symbol.java:380)
Information: at
com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:259)
Information: at
com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:445)
Information: at
com.sun.tools.javac.comp.Enter.classEnter(Enter.java:223)
Information: at
com.sun.tools.javac.comp.Enter.classEnter(Enter.java:237)
Information: at com.sun.tools.javac.comp.Enter.complete(Enter.java:431)
Information: at com.sun.tools.javac.comp.Enter.main(Enter.java:416)
Information: at
com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:727)
Information: at
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:634)
Information: at com.sun.tools.javac.main.Main.compile(Main.java:333)
Information: at com.sun.tools.javac.main.Main.compile(Main.java:255)
Information: at com.sun.tools.javac.main.Main.compile(Main.java:246)
Information: at com.sun.tools.javac.Main.compile(Main.java:70)
Information: at com.sun.tools.javac.Main.main(Main.java:55)
Information: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
Information: at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
Information: at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Information: at java.lang.reflect.Method.invoke(Method.java:589)
Information: at
com.intellij.rt.compiler.JavacRunner.main(JavacRunner.java:56)
Information:Compilation completed with 1 error and 0 warnings
Information:1 error
Information:0 warnings
Error:Compiler internal error. Process terminated with exit code 4

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
public class Test {

public static void main(String[] args) {
System.out.println("Hello World");
}

}
---------- END SOURCE ----------
workaround:
comments: (company - t800t8 , email - t800t8@yahoo.com)

Update: Sun confirmed me that it is a bug. See it here and vote it: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6407011

Update: This bug is fixed in build 79

Thursday, March 30, 2006

Vote for TestNG!

I don't have too much experience in working with unit testing, the fact that I'm just a newbie in this field. I tried JUnit a little, then TestNG. I prefer TestNG 'cause it has many rich features when comparing with JUnit 3.8.x as well as JUnit 4.0. But the thing I really dignify is the way Cedric, Alex and others contribute for it. Also anytime you need supporting, they will help you with all one's heart.

I would like to say "Thanks" to Cedric, Alex and others who contributes for TestNG.

Please vote for TestNG at dev2dev!

(Sorry for my English, it's terrible)

assertSameContent() for collections with comparator

I wrote an assertion to extend TestNG to check 2 collections have same content or not based on a comparator.


Update: 'Cause this assertion does not have correct equals semantic, so I decide to rename assertEquals() method to assertSameContent().

Wednesday, March 29, 2006

Using JUnit extensions in TestNG

Andrew Glover wrote an article which shows the way how to use JUnit extensions in TestNG

See it here: http://thediscoblog.com/2006/03/27/using-junit-extensions-in-testng/

Tuesday, March 28, 2006

Life is beautiful

Have you ever seen Life is beautiful, an Italian film? It's a really beautiful film. Always smile, live and love in your own way, you will have a beautiful life.




Beautiful that way (or Life is beautiful?)

Smile, without a reason why
Love, as if you were a child,
Smile, no matter what they tell you
Don't listen to a word they say
Cause life is beautiful that way.

Tears, a tidal wave of tears
Light, that slowly disappears
Wait, before you close the curtain
There is still another game to play
And life is beautiful that way

Here with his eyes forevermore
I will always be as close as you
remember from before
Now that you're out there on your own
Remember what is real and
what we dream is love alone

Keep the laughter in you eyes
Soon your long awaited prize
We'll forget about our sorrows
And think about a brighter day
Cause life is beautiful that way.

We'll forget about our sorrows
And think about a brighter day,
Cause life is beautiful that way
There's still another game to play
And life is beautiful that way.

Monday, March 27, 2006

Escape from NPE hell

You coded in Java. What is fearest thing you think in programming Java? NullPointerException (NPE)? I think so and it's also the one I fear to face. Ofcourse you can avoid it if you can take care it very very very careful. But what happen if you're season programmer in Java, even you're experience Java programmer?

The best way is finding the way to avoid it. SADNESS, NO WAY! But if you cannot avoid it, you need to learn how to live with it (and ofcourse, improve your knowledge and experience to avoid it later). How can you do it? JetBrains introduced a way to help you can take care NPE a bit more, they're @Nullable and @NotNull annotations. With them, you can avoid NPE by warning to take care NPE more carefully.

You can found out more about @Nullable and @NotNull here and here.

IDEA supported it. Eclipse will support it in version 3.2. It submitted to Sun from JDK version 1.4.2 but still pending. Why doesn't Sun implement it?

One thing I wonder, why is @NotNull? Why is not @NotNullable? Too long? ;-) I think it's better when you see @Nullable and @NotNullable.

Sunday, March 26, 2006

TestNG plugin cannot run in Demetra build 5201

I reported this problem to Mark. Hope that he will fix it next week. Now I'm using Irida build 4171 to use TestNG.

http://forums.opensymphony.com/thread.jspa?threadID=23657&tstart=0

Viagra for you ;-)

They're from Rusia. And it's AVI (55 MB, 640x480).

It's not hotter than the video I got before but it's hot enough. Enjoy it!

Part 1
Part 2

Password: 4591

25 Reasons I Love Using IntelliJ Idea

I just republish this article from unknown author here. Here is originally link: http://members.iinet.net.au/~gstamp/IDEA.html

IntelliJ IDEA is a relatively new Java IDE. It's the most useful Java development environment I've used (and I've used most of them). It’s highly optimized to make common tasks blindingly easy.

Often it's not the big ticket features that really make a product usable. It's the small touches: the many little details that go into making the overall package seamless and a joy to use.

What follows is a list of things I really love about IDEA.

1. Syntax sensitive word selection.

Pressing Ctrl-W repeatedly incrementally selects larger expressions up until the point at which the whole file is selected. While this doesn’t sound like much of a big deal this works really well in combination with other features such as the “introduce variable” refactoring. I can position the caret over complex expression, press Ctrl-W until the section has the desired scope and press Ctrl-Alt-V to introduce a new variable for that expression. IDEA will even automatically replace other occurrences of that expression if I want.

2. Multiple forms of navigation.

IDEA has a ton of ways of getting around in a project. All of which can be performed with the keyboard in addition to the mouse (which is great for people like me who can’t stand swapping to the mouse constantly). Ctrl-N will let you quickly find a class by incrementally typing in its name. Ctrl-Shift-N will do the same thing for files. Ctrl-E will bring up recently edited files then let you start typing the filename or arrow to the desired file. The commander lets you easily navigate two views of your project and makes certain refactoring operations a breeze. Alt-F1 allows you to select the current file in any of the other views. The list of ways to get around your project is too huge to list them all here. All this and no need to have concepts such as perspectives.

3. Local history.

With local history turned on every change you make to your source (within the tool and externally) is tracked. This feature has saved me more times then I care to admit. The differences are highlighted in a really beautiful looking difference viewer.

4. Flexible JUnit support.

Unit tests can be run individually. Particular test methods can be singled out to run individually. IDEA can automatically run all tests in a package or in the project without the need to setup a pesky test suite manually. Double clicking on the stack-trace in the GUI runner will take you straight to the line in the source code. Personally I prefer the text runner. It's not as pretty but it's faster and more functional.

5. Well designed refactoring support.

IDEA supports a large number of refactorings. More importantly they're well designed and easy to use. Some you’ll use all the time, other’s you may only use rarely. When you do find you need them they can be a big timesaver.

6. Code assistants.

There are some truly powerful code writing assistants in IDEA. I can only really give you a small taste here. A good example is the "Delegate Methods" assistant. This allows you to delegate method calls (which ones is up to you) to an object instance in your class. This is not something you require every day but when you do need it you'll find yourself saving a huge amount of time. Another example is the generate hashcode and equals feature. This is one feature that you will find yourself using very frequently. Other great code assist features are: generate getters/setters, generate contructors and the “surround with…” features.

7. Flexible code reformatting.

There are a stack of options regarding how code can be reformatted. This can be set individually for each project so there's no need to worry if you have to support multiple code standards. Reformatting a file or an entire project is a snap.

8. Great XML support.

IDEA supports code completion inside XML. If no schema or DTD has been defined IDEA will complete based on what's already contained in the file. Otherwise it’s possible complete based on the defined schema or DTD for a file. IDEA will also validate the XML on the fly.

9. Intuitive and easy to use GUI.

Pretty much every function within the program can is accessible using the keyboard. This is how it should be in a developer’s tool but sadly most IDE’s pay very little attention to keyboard navigation.

There's no need to swap between different views to get your work done and there's no need to tab between different windows.

10. Automatic synchronization with the file system.

No matter how good your IDE there will usually come a time when you need to do some work outside of the tool. IDEA does this very well. Most projects can be used inside IDEA without having to make changes to their structure. IDEA also checks for modifications to files that may have been made externally. There's no need to manually refresh to tell IDEA a file has changed.

11. Customizable Keyboard Mapping.

The default keyboard map that comes with IDEA is useful as is but sometimes it's useful to modify it. This is easily done. Keys can also be assigned against things such as external tools and ant targets.

12. Dynamic error highlighting.

Java code, XML and JavaDoc tags are dynamically analyzed and any errors reported as you type. Ant build files even have extra support for the Ant project syntax.

13. Inspections.

Code inspections can be run that report a large number of potential trouble spots with the code. This can be scripted to run as a batch job and the results reported to a webpage.

14. Complete understanding of JSP.

IDEA understands the structure of JSP’s so many of the functions that work in normal Java code also work in JSP's. (Refactoring for example). JSP debugging is also supported.

15. Smart editing.

Little touches such as typing past quotes and brackets make life that much easier.

16. EJB support.

IDEA understands EJB's although it does not include specific support for particular application servers. This is best done with the Ant integration anyway. The EJB support is easy to use and unobtrusive - just as it should be.

17. Almost no wizards!

Many vendors these days bundle a ton of wizards rather simply designing an easy to use interface. Wizards have their place but are a grossly overused tool. IDEA only contains a single wizard to help create a new project and has still managed to create a program that is easy to use for the novice.

18. Smart templates.

Smart templates are snippits of code that have been supercharged to do all sorts of amazing things. The first time I used the “iterate over collection” smart template I was astounded. Not only did it pick up the correct default collection variable but it also noticed what I had been putting into it and defaulted the casting. This feature is rather hard to describe on paper. Download an evaluation and try it out.

19. Best support for code completion.

IDEA has three types of code completion available including support for completing default variable names, javadoc and other code items.

20. Ant integration

IDEA has support for the Ant build tool. In addition to running targets there is support for running targets before and after compiling and running programs as well as support for binding keyboard shortcuts.
When editing an Ant build.xml file, IDEA also provides extra support for completing the XML elements that make up the Ant project.

21. Unused code highlighting.

If IDEA can detect that a particular variable or method is unused it will report is unobtrusively as a warning. Inspections can be used to do more detailed dead code analysis. Even JavaDoc tags are checked.

22. Little extras.

Ctrl-D duplicates the selected code. If there is no selection it will duplicate the entire line. Ctrl-C will copy a whole line when no selection is made, Ctrl-X will cut the whole line when there's no selection.
Ctrl-Shift-J will do a VI-like join except that it's syntax sensitive. For example if you have a line like:

String s = "This is " +

" a split string";

And join it you get:

String s = "This is a split string";

To top it off if you press enter inside a string it will automatically add the quotes and + operator.

23. Regular expression search and replace.

Regular expressions searches are possible but even nicer is the fact that you can do regular expression replaces. This can be a big time saver.

24. Quick JavaDoc.

JavaDoc for any identifier can be easily viewed by pressing Ctrl-Q. It can also be accessed during code completion.

25. Intention actions.

Many helpful options are provided when IDEA notices it can help you in some way. For instance if you need to cast an expression so that it matches the variable you're assigning to IDEA will notice this and give you some options for either casting it or changing the type of the variable you're using.

Saturday, March 25, 2006

IntelliJ IDEA Demetra build 5201 is released

A few minutes ago, JetBrains released Demetra build 5201. At this time, Dimitry did not announce this release yet.

Here are some changes from build 5181. And I'll update more details later.

* Project Configuration. Per-module language level setting
* Editor. Detection of duplicated exceptions in the throws clause
* Project View. 'Collapse All' action
* Inspections. Exclude certain code from 'String Concatenation in
an internationalized context' inspection (e.g. 'assert' statements)
* Images plug-in. Show image size
* Debugger. Active (browseable) value tooltips. Called with
Alt+Click or Alt+Shift+F8
* UI Designer. Card layout support
* UI. Resizeable and moveable hints, JavaDoc info in particular

Downloading it... :-)

Update: Complete change list in build 5201

Thursday, March 23, 2006

LinCVS supported Vietnamese

I found it by accident. LinCVS (a commerical CVS client) only supports for some languages but a little suprise, Vietnamese is supported.

Check it out: http://www.lincvs.org/

My post about running JUnit 4 in IDEA is published in IDEA's blog

They made some changes in my post but I think it's clearer. Thanks Alexandra Rusina and other JetBrainers.

See it here: Running JUnit 4 Tests in IntelliJ IDEA 5.1

Update: It's not a latest news, 2 days ago, JetBrains released next EAP of Irida build 4171. You can get it here. But the thing I'm waiting for is next EAP of Demetra. ;-)

Tuesday, March 21, 2006

Mergesort algorithm implementation

I'm reading Wrox's Beginning Algorithms, an exciting book. With this book, you can learn how to implement iterator, list, queue, stack, ... from scrach but the one I like in this book is it used unit testing and source code is written in Java. (I'm using TestNG, instead of JUnit as in the book)

As any books, this book has some typos but it's a not big problem. The biggest problem I found at this time, it's in mergesort algorithm implementation. The authors forgot to check if the list is empty so it doesn't need to sort. This causes an IndexOutOfBoundsException while try to mergesort sublists.

No problem, I'm continuing to read it. Just for fun! :-)

But keep it in your mind (if you want to read this book), add the following code fragment at the begginning of mergesort(List list, int start, int end) method

if (end < start) {
return list;
}

Monday, March 20, 2006

GoogleSearch plugin problem

I found that in GoogleSearch plugin demo from JetBrains it has some problems. As I checked, editor.getCaretModel().getOffset() doesn't return correct cursor's offset when I put the cursor to the end of file in editor so sometimes it has IndexOutOfBoundsException or ArrayOutOfBoundsException in GoogleSearch plugin.

Link to flash demo: http://www.jetbrains.com/idea/training/demos/google_search.html

Một ý tưởng

Hôm qua chợt nảy sinh ra một ý tưởng. Giờ đang mày mò tìm hiểu khả năng phát triển của ý tưởng đó đến đâu, mặc dù hiện giờ mình mới chỉ có một số 0 tròn trĩnh (hay chĩnh?, tiếng Việt phức tạp qúa ;-).

2 nice wallpapers for your 50' wide screen plasma monitor




IntelliJ Technology Network's forum changed

Now JetBrains uses Jive Forum for IntelliJ Technology Network's forum. It's better than before but I think it should be better if it has a rich editor, maybe WYSIWYG.

Check it out: http://www.intellij.net/forums/index.jspa

Sunday, March 19, 2006

Unused symbol inspection should be turned off with unary operation

See it here: http://www.jetbrains.net/jira/browse/IDEA-7123

And maybe tomorrow night, JetBrains will released next EAP of InteliJ IDEA. Please wait...

Friday, March 17, 2006

JDK 6 đã được thêm GroupLayout

Trong bản mới nhất của Mustang, build 76, một trong những tính năng mới được nhiều người mong đợi mặc dù đã tưởng như vô vọng khi Sun đóng băng các tính năng của JDK 6 là việc thêm GroupLayout đã được thực hiện. Giờ chỉ còn chờ các IDE hỗ trợ (ngoài Netbeans đã hỗ trợ sẵn như một thành phần mở rộng cho JDK 5 với Matisse) thì việc vẽ vời giao diện ứng dụng Java sẽ dễ hơn nhiều.

Các chi tiết về các lỗi được sửa và các tính năng mới có trong build 76 có thể xem tại đây.

Download bản cho Windows tại đây

Download bản cho Linux (self-extracting, not RPM) tại đây.

Download documentation tại đây.

Thursday, March 16, 2006

IntelliJ IDEA 5.1.1 EAP build 4167

Chỉ sau khoảng 4, 5 posts yêu cầu, JetBrains đã đưa ra phiên bản EAP cho IntelliJ 5.1.1. Nhưng đừng mong đợi có bất cứ tính năng gì mới trong phiên bản này vì nó chỉ là phiên bản cập nhật và sửa lỗi cho phiên bản 5.1 (build 4155).

Bạn có thể download tại đây.

Các liên kết tới những article hướng dẫn phát triển plugin cho IntelliJ IDEA:

+ http://www.jetbrains.com/idea/training/demos/google_search.html
+ http://www.jetbrains.com/idea/documentation/howto_03.html
+ http://www.jetbrains.com/idea/plugins/developing_custom_language_plugins.html

Monday, March 13, 2006

IntelliJ IDEA blog started

This blog will replace for "Tips and Tricks" page. Also it will provide IntelliJ IDEA news from JetBrains.

Let's start with IntelliJ IDEA blog!

Create project which contains multi-modules problem

See it here: http://www.jetbrains.net/jira/browse/IDEA-7059

Friday, March 10, 2006

IntelliJ IDEA Demetra build 5181 is released

Cuối cùng thì phiên bản EAP tiếp theo của IntelliJ IDEA cũng đã ra lò vào lúc khoảng 12h30 sáng 11/3. Phiên bản này có một số thay đổi như sau:

* Code coverage integration (Code Coverage tab in JUnit run
configurations).
* Inspections. Support for multiple severities.
* Inspections. Diff between multiple inspection results.
* GUI Designer. Generate bound field name from component text.
* Option to fold annotations in the editor.
* JSP. Intention "Remove invalid attribute".
* Inspections. New scope "All uncommitted files".
* XML. Correct handling of encoding specified in the preamble.
* Bugfixes and minor improvements.

Đây là danh sách chi tiết các thay đổi trong build 5181.

Hiện giờ mình mới vừa cài đặt xong và đang bung OpenAPI javadoc & sources, plugins sources.

Cập nhật: Một số thay đổi dễ thấy nhất (về giao diện)

+ Cửa sổ Changes được bổ xung nút bấm cho phép hiển thị hay không hiển thị cấu trúc thư mục. Cửa sổ này hiện giờ còn hiển thị số file thay đổi, cũng như số file không được đánh phiên bản.


+ Maker rõ ràng hơn (giống các phiên bản trước build 5175)

Build 5175
Build 5181

+ Một số lỗi đã được sửa:
    - Lỗi liên quan đến toolbar và resize cửa sổ đã được sửa.
    - Lỗi liên quan đến Scope View

Cập nhật: Lỗi lạ vẫn còn xuất hiện trong build 5181. Mình đã report lại cho JetBrains.

Chuyện lạ đó đây

Thử mở 2 file PDF trong Adobe Acrobat 3D 7.0, mỗi cuốn chuyển vài trang. Sau đó nhấn vào nút Previous view vài cái xem sao. Vui phết đấy. ;-)

Thursday, March 09, 2006

Báo với chẳng chí

Đây là một đoạn trích từ bài Ra đề thi sai, thầy giáo chấm đại

Người ra đề yêu cầu học sinh so sánh các số 27 và 243. Đây là bài
toán luỹ thừa của luỹ thừa.

Còn đây là 2 đoạn trích từ bài Tình nguyện viên nước ngoài bị tố cáo xâm hại tình dục

Đại diện Cảnh sát Australia vừa đề nghị cơ quan chức năng Việt Nam
truy bắt Charles Charlton White (35 tuổi, quốc tịch Australia).

Charles Charlton White là một cụ ông 71 tuổi, quốc tịch Australia,
thành viên của Tổ chức Tình nguyện viên toàn cầu, làm việc tại
Trung tâm Nuôi dưỡng, dạy nghề trẻ em đường phố tỉnh Quảng Nam.

Chẳng hiểu chúng nó ăn gì mà làm ăn như c. ấy.

Demetra build 5175 "đánh rơi" mất kiểu byte

Xem tại đây: http://www.jetbrains.net/jira/browse/IDEA-7030

Cập nhật: Một lỗi khác http://www.jetbrains.net/jira/browse/IDEA-7032

Một bài viết dở hơi

Trong bài A Linux Distribution Comparison Matrix, thằng tác giả dở hơi sau một hồi đánh giá nhì nhằng, so sánh trên ma trận đến hoa cả mắt thì độp 1 cái kết luận "Ubuntu là sự lựa chọn của tao", mặc dù (dựa trên ma trận so sánh) chẳng thấy Ubuntu có cái mẹ gì nổi bật hơn, đấy là chưa nói là kém hơn, những Linux distribution khác như RH, FC, Novell SLES, Open SuSE. Bài viết như c. mà cũng được đăng. Dở hơi!

Wednesday, March 08, 2006

Các bước tạo một project sạch dùng IntelliJ IDEA và Subversion

Chú ý: Để có thể thực hiện các bước này, bạn cần phải cài đặt cũng như cấu hình (nếu cần) các phần mềm sau: Apache web server (tại thời điểm hiện giờ download bản 2.0.55 do bản 2.2.0 không chạy được với Subversion 1.3.0), Subversion, TortoiseSVN, IntelliJ IDEA

Các bước thực hiện:

+ Tạo cấu trúc cho project (các folder, file cần thiết). Ví dụ:

[root] (tương ứng với thư mục gốc của repository)
|----- \doc
|----- \javadoc
|----- \lib
|----- \src
|----- \test
|----- \build.xml

+ Tạo repository cho project bằng TortoiseSVN
+ Import cấu trúc đã tạo ở trên vào repository bằng TortoiseSVN
+ Tạo một project rỗng trong IntelliJ IDEA
+ Thiết lập Version Control cho project vừa tạo là Subversion
+ Checkout các folder và file từ repository vừa tạo về thư mục của project
+ Tạo module
+ Thiết lập lại các thông số cấu hình của module (như thư mục src, test, javadoc, ... dựa trên cấu trúc đã checkout về) và thêm các thư viện nếu cần
+ Sau khi thực hiện xong bước trên, nếu bị hỏi "Do you want to schedule newly created file(s) for addition to Subversion?" thì nhấn Cancel bỏ qua lần đầu (mục đích là để tránh đẩy file .IML của IntelliJ IDEA lên Subversion)

Thực hiện đúng và đủ các bước trên, bạn đã hoàn thành việc tạo một project sạch dùng IntelliJ và Subversion

Thêm thắt:
+ Các bước trên thực hiện cho project có duy nhất một module. Nếu project của bạn có từ 2 module trở lên thì cách thực hiện sẽ hơi khác, vấn đề này để các bạn tự ngâm cứu.

+ Có một điều khó chịu là trên Windows, do một số phiên bản của ASP.NET không hỗ trợ tên thư mục có dấu chấm ở đầu (xem phần Official support for Windows '_svn' directories) nên trong IntelliJ IDEA, các thư mục của Subversion (_svn) được tạo trong quá trình checkout vào máy cứ... lòi ra mặc dù đúng ra nó phải được ẩn đi. Vấn đề này có thể giải quyết bằng cách vào Settings | General của IntelliJ IDEA, bổ xung "_svn" vào mục "Ignore files or folders". Lỗi này chắc chắn sẽ được sửa đổi trong phiên bản IntelliJ IDEA tiếp theo.

Giải thích về từ "sạch" trong tiêu đề của bài: Mục đích của bài viết là thiết lập một project có sử dụng Subversion để quản lý và IntelliJ IDEA để phát triển nhưng sẽ không có bất cứ một file nào của IntelliJ IDEA (như file project, workspace, module,...) được đẩy lên Subversion, do đó các developer khác không phải checkout các file thừa nếu họ không phát triển trên IntelliJ IDEA.

Cập nhật: Sử dụng kết hợp IntelliJ IDEA Demetra build 5175 với CVS thấy có khá nhiều lỗi tồi tệ. Trong khi với Subversion thì mọi việc tốt hơn nhiều. Theo kế hoạch thì tối nay, 9/3, JetBrains sẽ đưa ra build EAP mới của Demetra.

TestNG 4.7 beta is released

TestNG 4.7 beta is released with support for @Configuration with before/afterGroups. Also TestNG plugin for IntelliJ IDEA (v0.2.0) and Eclipse (v4.6.0.1) is upgraded. And, as I saw in TestNG's forum, the final released will support to work with Maven 2.

Check out TestNG 4.7 beta here: http://testng.org/testng-4.7beta.zip

Update: TestNG 4.7 beta has a bug but it had already fixed. You can get fixed version now (same old link).

Tuesday, March 07, 2006

Why need to wait for IDEA's JUnit 4 plugin? You can run it now!

Just follow this instruction:

+ In IDEA, go to menu Settings, then click File Templates in Settings dialog
+ In Templates tab, create new item and name it "JUnit 4 Test Class" or anything you want
+ Paste the below code fragment to the text box

package ${PACKAGE_NAME};

import org.junit.*;
import junit.framework.JUnit4TestAdapter;

#parse("File Header.java")
public class ${Name} {
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(${Name}.class);
}

@Before
public void setUp() {

}

@After
public void tearDown() {

}

@Test
public void testSomething() {

}
}

+ Press Apply, then OK
+ When you need to create a JUnit 4 test class, just uses this template
+ When you need to run a JUnit 4 test class, just right click in editor and Run


Note: Ofcourse, you need to add JUnit 4's jar file first (same as JUnit 3).

Enjoy it and happy unit testing! :-)

Saturday, March 04, 2006

Scope view problem in Demetra 5175

See it here: http://www.jetbrains.net/jira/browse/IDEA-6975

Update: It will be fixed in Demetra final.

Update: It fixed in next EAP.

Friday, March 03, 2006

TestNG đã hỗ trợ before/afterGroups

Mục đích của before/afterGroups là cho phép developer có thể viết các set up và tear down method cho một hay nhiều nhóm các test method.

Hiện tại có thể lấy source code từ CVS trên site của TestNG. Trong vòng một vài ngày tới Cedric sẽ đưa ra phiên bản cập nhật chính thức.

Bug lạ trong IntelliJ IDEA Demetra build 5175

Đêm qua lọ mọ phát hiện ra một bug của IntelliJ IDEA Demetra build 5175. Bug này chỉ xảy ra khi không có kết nối mạng (chưa test với có kết nối LAN nhưng ko có kết nối Internet).

Xem chi tiết lỗi tại đây: http://www.intellij.net/tracker/idea/viewSCR?publicId=61839

Đọc IntelliJ IDEA in Action thấy IDEA hay thật, khoản hỗ trợ sử dụng bàn phím qúa tuyệt. :-)

Cập nhật: Thêm 1 lỗi nữa trong Demetra build 5175 (http://www.jetbrains.net/jira/browse/IDEA-6970)

Cập nhật: Lỗi thứ 2 (IDEA-6970) đã được sửa.

Cập nhật: Lỗi thứ nhất được thông báo không thể reproduce mặc dù đã có thêm 1 người dùng nữa cũng gặp lỗi này.

Thursday, March 02, 2006

IntelliJ IDEA Demetra build 5175 is released

Build thứ hai, build 5162, trong EAP của Demetra được đưa ra muộn so với kế hoạch (kế hoạch là release theo tuần) đến hơn 1 tuần sau build đầu tiên, build 5131 (build 5131 được đưa ra ngày 6/2, còn build 5162 được đưa ra ngày 23/2). Nhưng lần này, EAP đã trở lại đúng giồng với build 5175 vừa ra cách đây khoảng nửa tiếng.

Để chờ xem build này có những gì mới lạ. Còn sau đây là danh sách các thay đổi mà JetBrains đưa ra trong build 5175:

* Version control integration. New "Changes" tool window, changelist
management support.
* Inspections. Possibility to view multiple results at the same time.
* Inspections. User interface improvements.
* UI Designer. BorderLayout support.
* UI Designer. Possibility to navigate from a control to its attached
event listeners.
* UI Designer. Drag and drop reordering of tabs in tabbed pane and
buttons in a toolbar.
* Java EE. Interceptors support.
* New inspection "Suspicious variable/parameter name combination"
(detects possibly swapped x/y, width/height and so on).
* Quick JavaDoc action works for parameters.
* Bugfixes and minor improvements.

Cập nhật: Có một thay đổi có thể phát hiện ra ngay nhưng đồng thời có một lỗi được phát hiện ra ngay. :-D

Thay đổi: Không còn mấy cái chữ loằng ngoằng sau Search nữa, xuất hiện drop down list.


Lỗi: http://www.jetbrains.net/jira/browse/IDEA-6955

Cập nhật: Lỗi này đã đuợc biết đến.

Missing create annotation menu

See it here: http://www.jetbrains.net/jira/browse/IDEA-6950

Update: I had mistaken here. But maybe IDEA cannot figure out that I'm using JDK 1.6, so it set up to 1.3.

Đã có IntelliJ IDEA in Action

Chỉ 4 ngày sau khi Manning đưa ra IntelliJ IDEA in Action, mình đã có nó. Tối về đọc xem có gì hay ho không.

Điều đáng tiếc là IntelliJ IDEA in Action dựa trên version 4 của IntelliJ IDEA chứ không phải dựa trên version mới nhất, 5.1.


Thêm thông tin: http://www.manning.com/books/fields3