Chuyển đến nội dung chính

Bài đăng

Đang hiển thị bài đăng từ Tháng 12, 2011

Chạy nhiều version Firefox trên 1 máy tính

Nếu các bạn lập trình và cần thử nghiệm trang web trên nhiều phiên bản khác nhau của Firefox thì đây là công cụ vô cùng tuyệt vời. Nó tích hợp Firefox từ phiên bản 2.0 tới bản 12 nightly (tính tới thời điểm 27-12-2011) và có sẵn 2 addon vô cùng hữu ích là Firebug & Web Developer. Đó là chương trình Utilu Mozilla Firefox Collection. Bạn vào trang http://utilu.com/UtiluMFC/ để tải phiên bản mới nhất về. Chúc các bạn thành công.

Giới thiệu về kiểu Tuple

C# 4.0 giới thiệu 1 tính năng mới là Tuple. Mục đích sử dụng Tuple là tạo ra các đối tượng có kiểu dữ liệu phức tạp nhằm để lưu trữ dữ liệu tạm thời. Lưu ý: Mỗi Tuple định nghĩa sẵn các item1, item2,... Có tối đa 8 items được định nghĩa. public class Tuple <T1> public class Tuple <T1, T2> public class Tuple <T1, T2, T3> public class Tuple <T1, T2, T3, T4> public class Tuple <T1, T2, T3, T4, T5> public class Tuple <T1, T2, T3, T4, T5, T6> public class Tuple <T1, T2, T3, T4, T5, T6, T7> public class Tuple <T1, T2, T3, T4, T5, T6, T7, TRest>

Kết thúc hàm trả về trong WCF

Trong WCF, bạn có thể rất dễ dàng viết rất nhiều hàm gởi kết quả cho bên Client. Ví dụ: public int Test(int a, int b) { return a + b; } Nhưng nếu giả sử bạn đọc 1 file và trả về client là streamfile, thì chuyện gì xảy ra nếu bạn đọc file đó lần 2. Nó sẽ báo là có ai đó đang đọc file (vì bạn đọc và không đóng file lại :d) Để hủy giá trị trả về, trong WCF cung cấp cho bạn 2 lựa chọn: Thiết lập OperationBehaviorAttribute.AutoDisposeParameters = true  Sử dụng sự kiện OperationCompleted.

Chạy SQL Compact 4.0 trên Win XP

Bạn cài đặt theo thứ tự này: Bạn phải cài đặt lại .NET Framework 2.0. Windows Installer 3.1. .NET Framework 3.5, rồi 4.0 SQL Compact 3.5 (nếu có sp1 hay sp2 càng tốt) SQL Compact 4.0. Nâng cấp Win XP lên bản Service Pack 3 (SP3). Để thử nghiệm, bạn có thể dùng chương trình Database.NET để đọc file sdf. Chúc các bạn thành công!!!

Data Binding with INotifyPropertyChanged

Làm sao để cập nhật trạng thái, dữ liệu trên giao diện phần mềm nếu phần mềm của bạn chạy đa luồng (Multithreading). Cách đơn giản nhất là dùng Data binding, mà ví dụ của tôi ở đây là sử dụng lớp INotifyPropertyChanged. Namespace : System.ComponentModel; Lớp interface này có duy nhất 1 thành viên là public event PropertyChangedEventHandler PropertyChanged ; Để thực thi interface này, bạn cần implement phương thức PropertyChanged.

Khắc phục tình trạng IE/Opera cố gắng download file json/application

Khi server trả về 1 chuỗi json, IE/Opera không tự động nhận diện ra và cố gắng download file đó về. Cách khắc phục: Bạn thêm header cho kết quả trả về. Trong ASP.NET MVC: return Json(result, "text/plain");  Trong PHP: header('Content-type: text/plain');

Template trong Jquery (Phần 2)-Dùng file Template

Xem lại phần 1 tại đây Việc dùng Template trong file Html có mặt hạn chế là nếu bạn muốn tái sử dụng nhiều lần việc copy qua lại nhiều lần là điều không nên. Trước hết bạn tạo 1 file html và copy template sang file html đó <script id="defaultTemplate" type="text/x-jquery-tmpl"> <tr> <td>${Name}</td> <td>${Author}</td> </tr> </script> Quay lại trang html muốn hiển thị dữ liệu, khi vừa render xong các phần tử trên trang html, ta thêm template vào trước thẻ </body> $(document).ready(function () { $.get('/Content/DefaultTemplate.html', function (template) { $('body').append(template); }); }); Tải ví dụ tại: Mediafire Update :  JQuery Template đã ngưng phát triển và được thay thế bằng JsRender

Template trong Jquery

Ngôn ngữ bên Server thì có PHP, ASP.NET, JAVA. Thế còn bên Client? Cơ bản là nó có 3 ngôn ngữ chính: HTML, CSS và JavaScript. Đúng là học Javascript là cực hình đối với ai mới làm quen. Tại sao để chọn 1 phần tử, cần quá nhiều dòng lệnh như vậy. Và Jquery ra đời để khắc phục sự dài dòng và xử lý nhanh nhiều tác vụ. Bạn có thể dễ dàng thêm sửa xóa, tạo hiệu ứng với JQuery. Đặc biệt, trong JQuery có thêm phần Ajax, làm cho ứng dụng của bạn thêm phần linh động. Vấn đề đặt ra, là khi tải dữ liệu trên server về, dữ liệu là dạng JSON và việc thêm nó vào thẻ HTML là vô cùng khó khăn. (Không khó lắm nhưng việc ghép chuỗi làm hạn chế khả năng tư duy lập trình) Ví dụ: var s = "<tr> <td>" + o.Name + "</td>&tl;td>" + o.Author + "</td></tr>" $("#idTable").append(s); Rất may mắn là trong Jquery có thêm tính năng tạo Template trong trang Html. Nó cho phép bạn tạo 1 template nhỏ và kết nối (binding) tới đối tượng JSON.

Callback trong JQuery

Javascript sẽ thực hiện từng dòng từ trên đi xuống. Nhưng với hàm callback, nó được hiện thực khi hiệu ứng thực hiện xong 100%. (A callback function is executed after the current animation is 100% finished.) Ví dụ: function GetData() { var mydata = "Ngoai ham call back"; $.ajax({ type: "POST", url: '/Home/GetBookList', success: function (data) { AddData(data); mydata = " trong ham callback"; }, error: function (jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); } }); alert(mydata); } function AddData(mydata) { //--Xử lý dữ liệu } Kết quả : Xuất hiện thông báo: Ngoài hàm call back Hàm success sẽ được gọi sau khi thực hiện xong câu lệnh alert(mydata). Lưu ý: Khi debug, bạn sẽ thấy nó chạy từ trên đi xuống và câu lệnh alert được thực