Context Image Resizer – Resize ảnh qua menu ngữ cảnh

gnome-mime-imageHiện nay việc chụp ảnh trở nên rất dễ dàng và thuận tiện. Điều này khiến ổ cứng của tôi bị ngốn khá nhiều dung lượng. Chính vì vậy tôi tạo một tool đơn giản để resize ảnh hàng loạt (để giảm dung lượng) từ menu ngữ cảnh với hi vọng có thêm dung lượng để nhét được nhiều ảnh mới sau này.

Đọc tiếp

ASP.NET – Kết hợp XDT Transform và T4 Text Template để tạo các file .config

globe-tools-settingsThông thường để deploy một web project với từng môi trường khác nhau bạn thường tạo các Config Transform cho web.config và dùng chức năng Publish của Visual Studio. Tuy nhiên việc deploy của bạn có thể không đơn giản như thế, và bạn đang phải tạo cũng như đồng bộ một loạt các file config transform một cách thủ công. Nếu vậy, bài viết này có thể là một giải pháp giúp bạn thoát khỏi công việc buồn chán và rủi ro này.

Đọc tiếp

C# 4 – Tìm hiểu về Lazy Initialization

lazy-cat‘Lazy Initialization’ là một thuật ngữ quen thuộc nói về phương pháp trì hoãn việc khởi tạo (hoặc nạp) dữ liệu cho đến khi chúng thực sự cần đến. Việc này rất hữu ích khi dữ liệu rất lớn và bạn không muốn người dùng tốn một tách café, ngồi chờ đợi những thứ chưa được sử dụng nhưng lại được nạp lên một cách … ‘xa xỉ’.

Đọc tiếp

C# – Giao tiếp giữa các process bằng Pipe Stream (Inter-process communication)

free-communicationKể từ .Net 3.5, bạn có thể dễ dàng thực hiện được việc truyền dữ liệu giữa các process (tiến trình) bằng các kênh Pipe, nhờ vào namespace mới System.IO.Pipes. Tùy theo mục đích, bạn có thể sử dụng loại Anonymous pipe hay Named pipe.

Đọc tiếp

C# – Thread Signaling: Auto và Manual Reset Event

queue-people-standing-in-lineKhi làm việc với Thread, đôi lúc bạn cần các thread thực thi theo một trình tự nào đó để đảm bảo các tác vụ diễn ra một cách hợp lý. Như vậy, các thread cần phải sử dụng một cơ chế nào đó để đợi và thông báo cho nhau. Cơ chế này được gọi là Signaling và có nhiều cách thức để thực hiện, tuy nhiên trong bài này tôi chỉ tập trung giới thiệu về hai lớp AutoResetEvent ManualResetEvent.

Đọc tiếp

C#4 – Tạo proxy truy xuất các thành viên private (dynamic + reflection)

private-access-lock-keyKết hợp reflection và dynamic, ta có thể tạo một lớp proxy dùng để truy xuất được các thành viên private của một đối tượng. Lớp proxy này được tôi xây dựng để làm một giải pháp cho câu hỏi của bạn thanh trong bài giới thiệu về reflection.

Đọc tiếp

WCF – Self-hosted Service đơn giản

WCF Service Hosting EnvironmentTừ những kiến thức căn bản trong bài WCF – Một số khái niệm cơ bản, bạn sẽ hiểu rõ hơn về các ứng dụng WCF bằng cách thực hành một vài ví dụ cơ bản. Bài viết này sẽ cung cấp cho bạn ví dụ về tạo hai dự án WCF Service self-hosting và WCF client đơn giản dạng Console.

Đọc tiếp