Thursday, October 27, 2005

I've got Manning's Ajax in Action

Đúng 5 ngày sau khi Manning release cuốn Ajax in Action, tôi đã có nó. Bạn hỏi tôi có từ đâu ấy à? Ấy đừng, tôi không thể nói ở đây được.

Đợt tới ngồi nhà đếch có Internet tôi sẽ đọc nó chơi. Have fun, Manning! ;-)

Monday, October 24, 2005

Một buổi sáng thanh bình!

Mặc dù đêm qua thức khá muộn nhưng sáng nay mình dậy khá sớm, có mỗi hơn 10h :-D

Sau mấy lời nhắn tin chúc cô ấy đi chơi vui vẻ, mình cắm đầu vào đọc Swing. Mở tung cửa sổ ra, nghe Canon in D trong cái thời tiết hơi lạnh lạnh bao quanh, cảm thấy lòng thật thoải mái. Có ai nghe Canon in D cùng mình ko?

Rock nhé: Yngwie Malmsteen
Violon + violoncen nhé: Bond
Rap nhé: Coolio
Techno nhé: Unknown

Mình khoái Yngwie MalmsteenBond hơn. Bạn thì sao?

Một buổi sáng thanh bình!

Saturday, October 22, 2005

Do not automatic compile in IntelliJ IDEA 5.0.2 Build #3516

When I try to create 2 class A and B, if in class A, it has a reference to class B, I can not compile class A in IntelliJ IDEA 5.0.2 Build #3516.


I found that if I compile class B first and then compile class A, it's OK.

public class A {

public A() {

B b = new B();

}

}

public class B {
}

And if I add main() method to class A

public static void main(String[] args) {

A a = new A();

}

then run class A. Now it works well!

Update at 6:57 PM: If you meet this problem, please enable Settings | Project Settings | Compiler | Honor dependencies on "Compile" command.

Thanks Sascha Weinreuter! But I think that it should be enable by default.

Wednesday, October 19, 2005

Refactoring problem in IntelliJ IDEA 5.0.2 Build #3516

I have a Sketch.java file in folder chap08, it includes a public class Sketch and some none public classes (SketchFrame, SketchPanel).

When I try to move these classes to package chap09, IntelliJ IDEA only can move class Sketch and SketchFrame. I saw that it still exists Sketch.java file in folder chap08 but it contains only class SketchPanel.

If I try to move class SketchPanel to package chap09, it shows an error "Sketch.java already exists in chap09" or something like that. I think that problem takes place 'cause the order in moving file of refactoring process is not correct. Stupid bug!

And I don't understand while in Project tab of Project pane, it shows class name, not file name. Please let the Package tab do it only!!!

Tuesday, October 18, 2005

Running button - A love game

I wrote this game to anger my darling. I will bet her that if she can click on the No button I will kiss her 10.000 kisses :-D

Description:

+ The game ask user "Do you love me?"
+ If user click "Yes", it will show "I love you too, honey!" and exit
+ If user move the mouse over the No button, this button will jump to another place so user can not click it

Note: User can not close the game by using Close button in the title bar

I will convert it to applet soon

Source code

Monday, October 17, 2005

Stupid bugs in Firefox 1.5 Beta 2

When I use right click on a part of table in UK Top Movies list of IMDB site, it show menu of Macromedia Flash plugin. See the picture


Sometimes righ click menu does not work. I must to click to activate another application then go back to Firefox and now it works.

And sometimes I can not paste the content which I copy from address bar (URL) or select & copy a part of Web page by using Ctrl + C.

Sometimes downloading file is fail but I don't clean the cache.

All of them are stupid bugs!

Sunday, October 16, 2005

A bug in IntelliJ IDEA 5.0.2 Build #3516

I found that in IntelliJ IDEA 5.0.2 Build #3516, the method seperator line will not show if I enter the close brace in the same line with open brace and method declaration.

Note: This problem will only take place when you have 2 successive methods but these methods do not implement anything. See the picture for more detail

Saturday, October 15, 2005

Must in love game

This is a funny game I wrote for my darling

Description:

+ This program will ask user "Do you love me?"
+ If user answers "Yes", proram will show "I love you too!!!" and exit
+ If user answers "No", it will show a confirm dialog to ask user again. This confirm dialog will be showed until user anwser "Yes"

Note: User can not close prgram by using Close button in the title bar

Source code

Friday, October 14, 2005

Làm thế nào để confirm khi đóng cửa sổ bằng nút Close trên title bar trong Java?

Đơn giản lắm thêm đoạn code sau để có 1 thằng cu "đứng nghe" sự kiện đóng cửa sổ vào constructor của frame:

addWindowListener(new
WindowAdapter() {

@Override
public void windowClosing(WindowEvent event) {

if (JOptionPane.showConfirmDialog(WindowsAdapterFrame.this,
"Are you sure in exit?",
"Try WindowAdapter",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {

System.exit(0);

}

}

}
);

Thế thôi à? Không đâu! 1 điều rất quan trọng là phải thiết lập hành động mặc định khi đóng cửa sổ là "KHÔNG LÀM GÌ CẢ"

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)

Thẻ <code> đếch thò thụt gì cả. Thẻ <pre> thì okie nhưng dòng text dài thì trông thật ngu xuẩn. Firefox đã tệ, IE còn tởm hơn!

Thursday, October 13, 2005

Một điểm ngớ ngẩn trong Java

Trong Java, class SystemColor có 2 hằng desktopDESKTOP. Trong khi desktop có kiểu là Color thì DESKTOP lại có kiểu int. Ngớ ngẩn!

Chưa kể documentation của JDK 1.5 cũng dở hơi. Nhấn vào desktop hay DESKTOP đều nhảy tới DESKTOP hết.

NetBeans 5.0 Beta demo

Eclipse nguy đến nơi rồi :-D


http://www.javalobby.org/eps/netbeans5/

Manning's Ajax in Action is already for MEAP

Ajax in Action (in MEAP) was released by Manning in Oct. 5, 2005, late 2 days as schedule.


The final ebook (in PDF) will be released in Oct. 19, 2005 (as schedule). Hope that it will not late!

For more information, go here: http://www.manning.com/books/crane

IDEA IntelliJ 5.0.2 Build #3516 EA

Tuy đã có tên 5.0.2 nhưng thực ra đây mới chỉ là phiên bản early access của IDEA IntelliJ 5.0.2 mà thôi.


+ Cải tiến đầu tiên và dễ nhìn thấy nhất là JetBrains đã cập nhật JRE 1.5.0 Update 5 cho IDEA IntelliJ. Nhưng sao JetBrains lại đề là JDK 1.5.0_05 nhỉ? Ngớ ngẩn!

+ Performance tốt hơn, đặc biệt khi nạp project.

Có thể trong vòng từ 1 đến 2 tuần nữa bản IDEA IntelliJ 5.0.2 chính thức sẽ được release.

Tuesday, October 11, 2005

Firefox 1.5 Beta 2


Firefox 1.5 Beta 2 mới xuất chuồng được 2 ngày hôm nay.

Qua sử dụng ban đầu thì thấy phiên bản này đã đỡ đi được khá nhiều lỗi, đặc biệt một số lỗi rất ngu xuẩn như lúc hiện popup nhiều khi không thể đóng được, chạy Firefox nhìn thấy trong task list có firefox.exe nhưng chẳng thấy cửa sổ đâu cả, nhiều lúc cứ đớ đờ đơ cả máy ra...

Render của phiên bản này cũng tốt hơn (từ 1.5 Beta 1). Dùng phiên bản này vào Fixdown thấy lên được mục search, trong khi ở 1.0.x chẳng nhìn thấy đâu.

Hy vọng trong các phiên bản tiếp theo sẽ có nhiều cải tiến và đem lại tính ổn định cao hơn. Nếu không tớ quay lại dùng IE hoặc sang Opera (giờ đã free) còn tốt hơn.

Monday, October 10, 2005

Lạnh quá

Vừa ngồi nghịch Swing tí. Chạy mỗi cái chương trình hiển thị 2 cái frame trống trơn cùng một lúc mà màn hình rung bần bật. Đếch hiểu sao! Sư nó! Hóa ra tại cái driver của NVIDIA, làm ông mất công download.

Cái sứ Hàn này mới đầu tháng 10 mà đã lạnh quá đi mất. Hôm nay cả ngày nằm đắp chăn đếch buồn họat động. Sướng!

Sunday, October 09, 2005

Cảm nhận đầu tiên về SuSE Linux 10.0

Tôi vừa cài đặt xong SuSE Linux 10.0 sau gần 2 ngày rưỡi hì hục download (tại nhiều người sô vào download mà) cách đây khoảng 15 phút.

Sơ qua về SuSE 10.0

Từ phiên bản 10.0, SuSE được phát triển dựa trên dự án mã nguồn mở openSuSE và được Novell redistribute. Theo nhìn nhận từ bên ngoài, dự án này hoạt động khá "nhanh nhẹn", trước khi phiên bản chính thức của SuSE 10.0 được release, trên site openSuSE đã xuất hiện phiên bản alpha 1 của SuSE 10.1 với khá nhiều thay đổi như dùng KDE 3.5 beta, YAST không sửa đổi master boot record như các phiên bản trước, cập nhật nhân Linux mới nhất, cập nhật openLDAP mới nhất ...

Cũng nên nói đến điểm khác biệt trong việc phát triển 2 dự án phát triển HĐH Linux, openSuSE của Novell và Fedora của Redhat. Chúng khác nhau là ở chỗ: trong khi phiên bản mã nguồn mở SuSE của Novell giống hệt phiên bản họ bán (chỉ khác là phiên bản bán có thêm 1 số phần mềm không phải mã nguồn mở và hỗ trợ từ Novell) thì Fedora lại là phiên bản giản lược so với Red Hat Enterprise Linux WS. Theo ý kiến cá nhân, tôi cho rằng sự khác nhau này sẽ đem lại lợi thế cho Novell trong tương lai.

SuSE 10.0 được redistribute dưới 3 dạng:

+ Mã nguồn mở (OSS): Chỉ chứa các thành phần mã nguồn mở mà không chứa một số phần mềm không "mở" khác như J2SDK, Flash Player, Acrobat Reader, ... Miễn phí!

+ Evaluation: Giống như dạng OSS nhưng có kèm những phần mềm không "mở". Mang danh là evaluation nhưng không hề bị giới hạn thời gian sử dụng. (Không rõ Red Hat Enterprise Linux WS có đọan "free 30-day evaluation subscription" có phải là bị hạn chế sử dụng trong 30 ngày không? Có bạn nào confirm hộ cái.). Miễn phí!

+ Box/retail: Giống hệt evaluation nhưng có tài liệu hướng dẫn bằng sách in và hỗ trợ kĩ thuật từ Novell và tất nhiên là mất tiền, nhưng 60$ cũng không phải là cái giá quá đắt nếu so sánh với giá của Windows XP.

Bạn có thể download SuSE dưới dạng 5 đĩa CD (chỉ có bản 32 bit), 1 đĩa DVD kép (gộp chung cả 32 bit và 64 bit). Và hình như còn có bản DVD 32 bit riêng, 64 bit riêng. Tôi chỉ download dạng 5 CD do chưa có tiền mua DVD writer :-D

Cảm nhận đầu tiên về SuSE 10.0 (Tôi cài đặt bản evaluation)

Cái dễ nhìn thấy đầu tiên là Novell đã đổi màu cho SuSE. Nay thay vì màu xanh lục như trong bản 9.3, SuSE sử dụng màu xanh da trời làm chủ đạo.


Tiếp đó là phần giao diện khi đăng nhập đã thay đổi khá nhiều theo chiều hướng giống với Windows XP.

Quá trình cài đặt không khác SuSE Professional 9.3 nhiều. Nhưng có 1 điểm làm tôi đặc biệt thích thú, đó là việc cài đặt mạng. Ở phiên bản 9.3, tôi gặp một vấn đề là có lúc vào Internet được, có lúc không. Sau khi mò mẫm và làm liều, tôi remove cấu hình mạng cho card mạng, vậy là vào Internet ngon lành. Hóa ra SuSE 9.3 sử dụng cấu hình mặc định dùng DHCP cho cả card mạng và wireless adapter nên chúng "đánh nhau", có khi card mạng được nhận là thiết bị thứ nhất, có khi lại là thứ 2. Điều này tôi không hề vướng phải khi cài đặt SuSE 10.0, SuSE 10.0 không tự động đặt cấu hình mặc định cho card mạng.

Thêm một chút nữa, ở SuSE 9.3 khi cấu hình cho wireless adapter tôi phải khai báo cả MAC address của access point. Vấn đề này cũng không cần lo lắng trong SuSE 10.0. Bạn chỉ phải khai báo MAC address của access point khi sử dụng nhiều access point cùng một lúc mà thôi.


Trong menu start của KDE, tôi nghía thấy có 1 sự khác biệt nữa so với SuSE 9.3 là được bổ xung menu search.

Đây mới chỉ là cảm nhận đầu tiên của tôi về SuSE 10.0 ngay sau khi cài đặt. Hy vọng trong quá trình sử dụng, tôi sẽ có được thêm những đánh giá cụ thể và chi tiết hơn.

Tôi đang gõ bài này trên Windows XP. "Khởi động vào SuSE 10.0 thôi!" :-)

Cập nhật thêm hồi 10:49 sáng 9/10/2005

Friday, October 07, 2005

Nâng cấp cho áp dụng BFS để tìm đường đi ngắn nhất

+ Loại bỏ class FilterNode

+ Thêm class Matrix để thể hiện ma trận, do đó chuyển 2 method get từ class BFSAlgorithm sang class Matrix mới này

+ Thay vì đọc từ 2 file node.txtfilter.txt, giờ chương trình chỉ đọc từ file filter.txt và xử lý các node có label nhỏ hơn 100

+ Một số thay đổi lặt vặt khác

Tiếp tục nâng cấp...

Source code

A superabundant point in Java

In J2SDK 5, you can have many advantages from using enum. But maybe it has a superabundant point in Java when a enum's constructor has modifier.

You can declare a enum's constructor to be public or private. But who cares about it? No one! 'Cause enum's constructor can not use outside that enum.

Blah blah blah... :-D

Thursday, October 06, 2005

Picture of the day

One day ago, Google joined hands with Sun to create GoogleOffice (based on StarOffice and open source project OpenOffice). It will become a direct competion with Microsoft Office. The WAR is begun!

A day before release day of SuSE Linux 10.0

Today is Oct. 5, 2005, a day before release day of SuSE Linux 10.0. I used SuSE Linux Professional 9.3 some months ago but most of time I use Windows XP Professional. 'Cause I'm a lazy man while if I want to use Linux, I must change the way in working too much.

I'm using a Dell Inspiron 8600 so I'm really not happy with the way Linux (in this case, SuSE Linux Professional) display text on the screen. It's not clear! In this work, Windows does perfectly. Maybe my Dell laptop's screen use ratio 16:9 so Linux can not display well? Hope that this problem was fixed in SuSE Linux 10.0!

You can see major changes of SuSE Linux 10.0 here.

Tomorrow, I will get SuSE Linux 10.0 and install it on my laptop.

Update at 11:45 PM, Oct. 06, 2005: Downloading SuSE Linux 10.0. Speed of connection is very low! :-(

Tuesday, October 04, 2005

IDEA IntelliJ 5.0.2 was released???

This morning when I go to Jet Brains's EAP (Early Access Program) I meet IDEA IntelliJ Build #3506 and download it.

After installing this build I saw that its splash change to 5.0.2, not 5.0.1. Maybe am I in the first ones use v5.0.2 of IDEA IntelliJ? And why this build still use JRE 1.5.0_04, not 1.5.0_05?

Get IDEA IntelliJ 5.0.2(?) Build #3506

Saturday, October 01, 2005

Pass by name trong Java

Về nguyên gốc, do Java sử dụng truyền theo giá trị (pass by value) cho tham số của method nên với các kiểu primitive nên ta không thể thay đổi giá trị bên trong method mà làm ảnh hưởng đến giá trị của biến bên ngoài.

Tuy nhiên có một cách để vượt qua vấn đề này, đó là dùng các class
IntHolder
,
BooleanHolder
, hay class tương ứng với kiểu của tham số trong package
org.omg.CORBA

Dynamic binding trong Java

Giả sử ta gọi thực hiện x.m(p), dynamic binding sẽ họat động như sau:

+ JVM sẽ tìm tất cả các method có tên m() trong class của x và trong các class cha của x. Nếu không có, báo lỗi.

+ Chọn ra các method có tham số có kiểu phù hợp với kiểu của p (bao gồm cả vấn đề ép kiểu, ví dụ p có kiểu int thì chọn cả các method có tham số có kiểu long, float,...). Nếu không có, báo lỗi.

+ Xem xem có method m() có tham số kiểu có kiểu giống p trong class của x ko. Nếu có, thực hiện. Nếu không tìm ở các class cha. Nếu không có method m() nào có tham số có kiểu giống p ở class của x và các class cha, tìm method m() có tham số có kiểu gần nhất (chẳng hạn p có kiểu int thì tìm xem có method nào có tham số kiểu long không). Qúa trình này cứ lặp đi lặp lại.

Khi load class vào bộ nhớ, JVM đã load method lookup table của class đó nên khi cần tìm method sẽ không tốn nhiều thời gian.

NetBeans 5.0 BETA was released

Quote from netbeans.org

NetBeans IDE 5.0 introduces comprehensive support for developing IDE modules and rich client applications based on the NetBeans platform, the new intuitive GUI builder Matisse, new and redesigned CVS support, Weblogic9 and JBoss 4 support, and a lot of editor enhancements.

But according to NetBeans team, the final version of NetBeans 5.0 will only be released in Nov 2005. Too late!

For more detail, please visit netbeans.org

Tonight, I will try to use NetBeans 5.0 BETA.