Saturday, May 28, 2011

Google IO 2011

Rất nhiều kiến thức được trình bày tại google io 2011, các bạn có thể vào đây để xem các video:

http://www.youtube.com/user/GoogleDevelopers

Thursday, May 12, 2011

Bắt đầu tập lại guitar

Hôm nay có một niềm vui nho nhỏ, quyết định tập guitar để sau này dùng. Lâu ngày cầm lại cây đàn đau hết tay nhưng dù sao mình cũng sắp đệm được bài "nhỏ ơi" rồi.

Mình giới thiệu gam bài này mình sưu tầm được:

Lần đầu(Dm) ta gặp nhỏ( C), trong nắng(Am) chiều bay bay(Dm)
Ngập ngừng(Dm) ta hỏi nhỏ( C), nhỏ bảo( C) nhỏ không tên(F)
Ừ thì(Dm) nhỏ không tên( C), bây giờ( C) quen nhé nhỏ(Am), nhỏ ơi(Dm)

(Các đoạn sau thì tương tự.)

Lần này ta gặp nhỏ, trong nắng chiều bay bay
Ngập ngừng ta hỏi nhỏ, nhỏ bảo nhỏ chưa yêu
Ừ thì nhỏ chưa yêu, bây giờ yêu nhé nhỏ, nhỏ ơi

Lần này(Dm), nhỏ quay đi( C), không thèm( C) nhìn ta nữa(Am)
Giọt sầu(Dm) rơi một mình( C), chỉ còn(Dm) ta một mình( C), nhỏ ơi (Dm)

Còn j đâu hỡi người, trong nắng chiều phôi phai
Kỷ niệm ta cùng nhỏ, giờ chỉ là hư vô
Nụ cười là hư vô, xa rồi vẫn nhớ hoài, nhỏ ơi.

Tình cờ ta gặp nhỏ, trong nắng vàng ban mai
thẹn thùng ta hỏi nhỏ, nhỏ bảo khờ ghê đi
Ừ thì khờ ghê đi, thương rồi sao chẳng hiểu, nhỏ ơi!


Like it!

Chỉ dẫn lập trình game 3D trên Android (P6)

Xin lỗi các bạn về sự chậm chễ này, dạo này bận quá nên ko có time để post bài nữa. Nhưng mình sẽ tiếp tục loạt bài viết này khi rảnh.
Bài trước mình đã giới thiệu về Java Native Interface. Nhưng hình như các bạn không thể thực hành được bài này.
Và có những email gửi về cho mình nhờ chỉ dẫn cách chạy JNI như thế nào, các bạn đó chạy ví dụ của google mà không được.
Hôm nay tôi sẽ chỉ các bạn cách chạy native như thế nào.

Như các bạn đã biết lập trình game chúng ta cần tận dụng sức mạnh của phần cứng và Java Native Interface là một cách tuyệt vời để thực hiện nó.
Vậy Java Native Interface làm gì?
Có thể các bạn đã biết thực ra Java Native Interface cho phép chúng ta gọi hàm từ thư viện C/C++ khi đó ta có thể giao tiếp nhiều hơn với phần cứng.
Ok, vậy ta có thể hình dung ta cần j rồi, hiểu về C/C++ (Hiểu sâu nhé :D). Một trình biên dịch trên Window (Những ai dùng Linux thì chuyên gia rồi chắc mình không phải hướng dẫn nữa, và mình cũng khuyên các bạn nên chuyển qua Linux (Ubuntu) mà dùng).
Ở đây mình dùng http://www.cygwin.com/. Bạn phải download Android NDK về nhé http://developer.android.com/sdk/ndk/index.html
Eclipse chắc bạn có rồi :D.

Bắt đầu nhé:
Cài đặt cygwin nhé.
Giải nén Android NDK nhé.
Bây giờ ta sẽ chạy một ví dụ của google viết sẵn để hiểu cách làm việc của nó.
Trong thư mục Android NDK bạn vừa giải nén ra có thư mục sample bạn nhìn thấy một số ví dụ ở đây.
Trên eclipse, bạn tạo một project android mới từ source này, ở đây chúng ta chọn hello-jni nhé.

Giờ chúng ta đã có project trên eclipse rồi.
Trên command của windown (cmd), bạn cd tới thư mục của project trên ...\samples\hello-jni
Chạy command:
 android update project -p . -s

Nhớ rằng trước đó đã path cho android trong thư mục ...android-sdk-windows\tools và ...android-sdk-windows\platform-tools
Và path của ...cygwin\bin nữa nhé.

Giờ chúng ta bắt đầu build native code sử dụng command ndk-build.

Hãy chắc chắn rằng bạn đang ở ...\samples\hello-jni như vậy bạn sẽ không phải gõ đường dẫn này nhiều nữa.
Trên command của window bạn chạy ash (Hãy chắc chắn rằng bạn đã set path cho ...cygwin\bin).
Lúc này bạn đang chạy SHELL trên môi trường GNU/Linux chứ không phải command như ở window nữa.
Chạy command su
Của mình là su tannm
Khi đó bạn sẽ nhìn thấy đường dẫn của bạn giống như:

TanNM@TanNM-PC /cygdrive/e/STUDY/android/android-ndk-r5b/samples/hello-jni

Ngon rồi đấy!
Tiếp theo bạn hãy chạy lệnh:
/cygdrive/e/STUDY/android/android-ndk-r5b/ndk-build

Khi đó output sẽ giống như:
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Compile thumb : hello-jni <= hello-jni.c SharedLibrary : libhello-jni.so Install : libhello-jni.so => libs/armeabi/libhello-jni.so

Quay lại eclipse refresh lại project và chạy.

OK chứ?