Thứ Sáu, 29 tháng 7, 2011

Translate với bing

Hiện nay việc dùng đa ngôn ngữ trong các website là một điều tất yếu,với các phần ngôn ngữ tĩnh thì bạn bỏ thời gian ra dịch là một điều hợp lý,nhưng với các nội dung động thì không hẳn lúc nào bạn cũng có một đội ngũ ngồi dịch những nội dung này.Vì vậy việc áp dụng các công cụ tự động dịch các nội dung này sẽ giúp bạn tiết kiệm nhiều thời gian và tiền bạc :D .Nhưng nó cũng có mặt hạn chế là câu cú và nội dung dịch còn sai nhiều,nhưng nhìn chung người đọc vẫn hiểu được nội dung bài viết của bạn nói vè cái gì :D .
Trước hết để sử dụng được bing translate bạn cần vào link sau  để dăng ký một appID. http://www.bing.com/developers/createapp.aspx
$appId = “*********1F2C7EE5EE7D5A85F59D43C”; //thay thế bằng appId của bạn vừa đăng ký
$from = “en”; //ngôn ngữ gốc
$to = “fr”; //ngôn ngữ cần dịch
$text = “chuỗi cần dịch”;
$detectUri = “http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=”.$appId.”&text=”.$text.”&from=”.$from.”&to=”.$to; //link trả về kết quả translate.
Giờ nhiệm vụ của bạn hết sức đơn giản dùng file_get_contents hoặc curl,.. để get nội dung translate về
vd :file_get_contents($detectUri);
Lưu ý: vì việc translate truyền dưới dạng url lên bạn cần phải sử lý dữ liệu truyền lên url một chút để link không bị lỗi do một số ký tự đặc biệt.
mình tạm thời dung cái này:
$text = preg_replace(“/[^a-zA-Z 0-9.,;\=\-\_\'\"\<\>:\\ \/]+/”,” “,$text);
$text = preg_replace(“/[ ]+/”,”+”,$text);
các thẻ trả về sẽ bị chuyển thành &lt; ,…
bạn cần replace chúng
$content = str_replace(array(“&lt;”,”&gt;”), array(“<”,”>”), file_get_contents($detectUri));
Dữ liệu trả về sẽ bị bao bọc bởi thẻ
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"></string>
bạn chỉ cần remove nó đi là xài được :D
$content = strip_tags($content,"<br><p><b><i><a><img>"); dung tạm cái này vì lười viết
regexp :D  bạn liệt kê những thẻ muốn giũ lại là được :D
ok vậy là nội dung translate đã khá sạch sẽ,bạn chỉ cần insert và database là ok 

Thứ Năm, 28 tháng 7, 2011

Cài đặt opencv trên ubuntu

Cài đặt opencv trên ubuntu thật sự rất đơn giản .
Các bước :
1.sudo apt-get install build-essential
Thường thì build-essential đã được cài .
2.sudo apt-get install libavformat-dev
Cũng có thể đã được cài
3.sudo apt-get install ffmpeg
Cũng không cần thiết lắm nhưng nên cài
4.sudo apt-get install libcv2.1 libcvaux2.1 libhighgui2.1 python-opencv opencv-doc libcv-dev libcvaux-dev libhighgui-dev
Lib cho python cài hay không cũng được
Sau khi cài đặt thành công . Bạn có thể mày mò example .
Tốt nhất là copy example về home (~) cho tiện
cd ~
cp -r /usr/share/doc/opencv-doc/examples .
cd c
cd c
./build_all.sh
Để build hết các example
Chạy thử :
./morphology
Bạn có thể học bàng cách giải nén các example khác trong thu mục này . Edit code , thay file ảnh , rồi build lại …

HTML5 đã hoàn thiện ở mức độ nào?

http://slides.html5rocks.com
Lang thang trên mạng tìm hiểu về làm game thì em thấy cái này.
Em xin được chỉ giáo về HTML5. Em muốn biết HTML5 đã hoàn thiện ở mức độ nào rùi (nhất là tính tương thích trình duyệt). Em cũng đã có tìm hiều qua, nói chung vẫn mỗi trình duyệt một phách, khó xử quá.
Ngoài ra em muốn học hỏi một chút về làm game (chạy bằng trình duyệt chứ không phải app) trên mobile thì cần chú ý những điểm gì không. Chủ yếu là Andoid và Iphone. Em cũng xin được list ra những băn khoăn của em cho vấn đề này luôn:
1) Lựa chọn công nghệ: Flash, Silverlight, HTML5 cái nào?
2) Những sự khác biệt giữa mobile browser & desktop browser
3) Có nên làm game theo kiểu vector rùi resize tùy màn hình (cái này có thể áp dụng nếu trả lời của câu 2) là không khác nhau là mấy), hay là nên làm game nhiều bản phục vụ các loại user agent khác nhau.

Giảm độ lớn của INDEX trong MySQL

Hi All,
Trong quá trình tìm giải pháp cho vấn đề của mình, bắt được một bài viết khá hay ở đây:
http://kevin.vanzonneveld.net/techblog/article/create_short_ids_with_php_like_youtube_or_tinyurl
Đây là bài viết nói về cách làm giảm chiều dài của ID trên URL (giống như của YouTube).
Tuy cái này hay, nhưng chưa giúp mình trong việc giải quyết vấn đề sau đây.
Mình có một CSDL các sản phẩm (khoảng 1 tỉ). Khi INSERT một sản phẩm mới, mình muốn kiểm tra xem tên sản phẩm này có trong CSDL hay chưa.
Nếu sử dụng Zend Lucene hoặc MySQL Index thì dung lượng index khá là lớn. Vì vậy mình muốn HASH các tên sản phẩm vào một trường khác với chiều dài nhỏ hơn.
Khi so sánh tên sản phẩm thì sử dụng HASH CODE này.
Giải pháp của mình là sử dụng mã md5 raw, với chiều dài là 16 bytes. Với 1 tỉ records thì nó ngốn xấp xỉ 15 GB.
Mình chấp nhận khả năng trùng lặp ở một số trường hợp.
Tuy nhiên mình muốn giảm chiều dài của HASH CODE xuống nữa thì nên sử dụng biện pháp gì.  Mình chấp nhận khả năng bị trùng lặp nhiều hơn (tức là có 2 sản phẩm khác tên nhưng hashcode có thể vẫn giống nhau)?
Bởi vì mình nghĩ có 1 tỉ item, vẫn chỉ là INT(11) = 4 bytes, xài 16 bytes thì … thấy hơi phí. Nếu có giải pháp giúp mình giảm xuống 8 bytes thì tốt nhất :D