Friday, January 26, 2007

YIMTexter giải trí với YIM và Skype

YIMTexter là phần mềm cho phép bạn vẽ hình đơn giản và cho phép xuất hình ảnh đó vào cửa sổ chat của Yahoo(Tất cả các phiên bản) hay Skype(3.0 trở lên) bằng chính các hình ảnh biểu lộ cảm xúc mà yahoo hay Skype cung cấp sẵn, người nhận sẽ không phải cài ứng dụng mà vẫn xem được bình thường.


Khi ứng dụng chạy sẽ tạo trong cửa sổ chat của Yahoo hay Skype các hình ảnh như sau :








Chương trình cung cấp cho bạn một khung vẽ để bạn có thể vẽ bất cứ hình ảnh nào bạn thích và xuất ra dưới dạng icon nào :



Bạn có thể lưu hình ra file để chia sẻ cho người khác hoặc load hình lên từ một file bạn đã save trước đó.

Bạn có thể lấy những hình có sẵn trong thư viện ra sử dụng.


Khi chương trình họat động sẽ dính vào cửa sổ của Yahoo như sau :




Phần mềm có hai phiên bản, một phiên bản đòi hỏi phải cài .net Framework trước(riêng với windows vista thì khỏi cần) download net framework theo link chỉ ra bên dưới.

Framework 1.0 http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en

Download phiên bản này tại đây
http://www.box.net/shared/gogjl58aon

Phiên bản khác là phiên bản không cần cài .net framework, nhưng phiên bản này không ổn định, có thể gây lỗi trong lúc sử dụng

Download phiên bản này tại đây :
http://www.box.net/shared/e4k2a0v0sa

Source code của phần mềm : http://www.box.net/shared/0609khuxnv

Download hướng dẫn sử dụng tại đây http://www.box.net/shared/rt05hpv504
Nếu bạn nghĩ ra một vài chức năng mới cho chương trình xin hãy mail cho mình tới địa chỉ khacduyst@gmail.com hoặc để lại comment tại đây.
Hãy chia sẻ hình ảnh mà bạn vẽ được cho mọi người bằng cách lưu các file bạn vẽ sau đó zip lại thành một file và gửi cho mình qua địa chỉ khacduyst@gmail.com, mình sẽ tích hợp vào các phiên bản sau để có nhiều thư viện hơn.

Thursday, November 16, 2006

Các bước cần nhớ khi làm việc với google web toolkit

Tương tác với server :

Tại client tạo interface thừa hưởng từ RemoteService và khai báo các phương thức cần làm (Tạm gọi là FirstInterface), ví dụ

package com.test.client;

import java.util.*;
import com.google.gwt.user.client.rpc.RemoteService;

public interface TodoListBackupService extends RemoteService {
void saveTodoList(String message);
String getTodoList();
}


Tại server viết một class (tạm gọi là ServiceClass) thừa hưởng từ RemoteServiceServlet và thi công FirstInterface vừa mới tạo ở trên và viết những phương thức đã định nghĩa trong FirstInterface. Ví dụ

package com.test.server;

import java.util.List;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.test.client.TodoListBackupService;

public class TodoListBackupServiceImpl extends RemoteServiceServlet implements
TodoListBackupService {

public void saveTodoList(String message) {
System.out.println("List were saved "+message);
}

public String getTodoList() {
// TODO Auto-generated method stub
return "MyHello";
}

}


Khai báo servlet vừa tạo trên server như một servlet bình thường (nhớ context path của nó để gọi trong client) hoặc khai báo trong file *.gwt.xml

Tạo interface tại client với tên của FirstInterface + Async (FirstInterfaceAsync) , viết lại các phương thức trong FirstInterface nhưng phải có thêm một tham số mới ở đằng sau đó là AsyncCallback và các phương thức phải trả về void, ví dụ :

package com.test.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface TodoListBackupServiceAsync {
void saveTodoList(String message,AsyncCallback callback);
void getTodoList(AsyncCallback callback);
}

Tại client gọi remote method như sau (từ in đậm là context path của servlet trên server) :

public void showMessage(){
TodoListBackupServiceAsync todoListBackupService = (TodoListBackupServiceAsync)GWT.create(TodoListBackupService.class);
ServiceDefTarget endpoint=(ServiceDefTarget)todoListBackupService;
endpoint.setServiceEntryPoint("/com.test.Hello/todoListBackupService");

AsyncCallback callback=new AsyncCallback(){
public void onSuccess(Object result){
Myresult = (String) result;
}

public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
System.out.println("Error on loading result");
}
};
todoListBackupService.getTodoList(callback);
}