Fullstack Senior .NET developer in Vietnam

You should know most of these if you want to be called Senior .NET developer in Vietnam labor market. In return might be 1300$+++ net salary (from a source of one headhunter firm).

General

  • Proficient .NET 4/4.5 + ASP.NET Web API + SQL
  • Good JavaScript skills.
  • Proficient writing UTs with mocking.
  • Good OOP.
  • Basic knowledge or experience of using IoC container. (StructureMap)
  • Basic knowledge or experience of design pattern.
  • Knowledge or experience of NoSQL is a plus point.

Front-end

  • AngularJS – front-end framework.
  • Twitter Bootstrap 3 – grid layout & responsive CSS.
  • Telerik Kendo UI – HTML5 widgets & controls.
  • RequireJS – JS module loader & dependency injection
  • LESS – CSS compiler.
  • R.js – RequireJS optimizer
  • Gulp.js or Grunt.js – Build system
  • Bower – JS package management.
  • Karma & Jasmine & Phantom.JS – JS unit test framework & runner & browser simulator for test run.
  • JSHint – JS code style check.

Web API back-end

  • .NET 4.5
  • ASP.NET Web API – REST API framework
  • ASP.NET Identity – Web authentication
  • OWIN Katana – Light-weight web framework
  • SimpleInjector – Fast & light-weight IoC container
  • NUnit/xUnit – Unit Test framework & runner.
  • Moq – Mocking framework
  • Quartz.net – Task Scheduler
  • MassTransit + RapidMQ – .NET service bus working on message queue.
  • ElasticSearch – Full-text search engine.

 

Advertisements

what is .NET delay signing?

Signing

Signing an assembly basically certifies that assembly by the manufacturer and prevents tampering and hi-jacking of that assembly.

The signing is accomplished by using public key/private key encoding of parts of the assembly.

 

Delay signing

Delayed signing refers to a technique of partially signing assemblies while they are in development (embedded the public key in the assembly but still secures the private key).

 

Why?

An organization can have a closely guarded key pair that developers do not have access to on a daily basis. The public key is often available, but access to the private key is restricted to only a few individuals.

When developing assemblies with strong names, each assembly that references the strong-named target assembly contains the token of the public key used to give the target assembly a strong name. This requires that the public key be available during the development process.

So, after delay signing, the public key is embedded in the assembly and will be used by third-parties who want to reference (you can place a shared assembly (as if strongly named) in the GAC by signing the assembly with just the public key).

Disable Attach Security Warning in Visual Studio 2010

 

When debugging/attach to a process in Windows 7 from Visual Studio 2010, VS displays a warning message confirming if you want to attach to the process you just asked VS to attach to.

Of course I don’t click No Attach! because I do want to attach.

 

So, to save one mouse click and disable the warning,

1. go to windows Start/run, regedit

2. Go to HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger

3. and set DisableAttachSecurityWarning to 1

DisableAttachSecurityWarningVisualStudio2010

 

For VS 2008 the path should be

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Debugger

 

4. Restart Visual Studio

 

Thanks to: abjbhat

 

Troubleshoot:

if you cannot alter the key HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger, DisableAttachSecurityWarning to 1, then

Delete it

Go to HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Debugger

Create new DWORD, name it DisableAttachSecurityWarning , set value to 1

 

EPiServer tuyển người – Hà Nội

EPiServer is the world’s fastest growing provider of Web Content Management (WCM) and online social community platforms. Over 3000 customers worldwide use EPiServer CMS to create collaborative, engaging and attractive websites. The platform EPiServer CMS is the foundation of more than 9000 websites and is used on a daily basis by over 130,000 web editors. It enables true web engagement which allows customers to turn passive web visits into dynamic, personalized web experiences that drive new revenues. EPiServer delivers its WCM platform through a network of more than 340 competent partner companies in 25 countries.

Founded in 1994, the company has offices in the USA, Sweden Denmark, Norway, Finland, the Netherlands, Australia, South Africa and the UK.

http://www.episerver.com

Attached to this mail you will find five different profiles,

  • Profile Software Test Automation Engineer
  • Profile Software Tester
  • Profile Web Designer, User Interaction Designer
  • Profile Web User Interface Developer
  • Profile Product Support Developer

As the Development Manager coming to Hanoi on the January the 22 it is important for candidates to apply ASAP.

Send your CV to pelle[dot]niklasson[at]episerver.com

Lỗi khi debug của Visual Studio 2008, nhấn Step Into và Step Over thì lại giống như nhấn F5

Sau khi chuyển sang dùng VS2008 SP1, tôi gặp một lỗi ngớ ngẩn và rất khó chịu, nó làm giảm hiệu suất làm việc rất nhiều.

– “Step into” (khi bạn nhấn F11) hay “Step over” (khi bạn nhấn F10) không dừng lại ở các breakpoints.
– Đôi khi nhấn F10 và F11 thì VS2008 cư xử như ấn F5. —-> bạn sẽ không debug được

Đó là một lỗi của M$, mời xem tại đây: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=365666https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=368650

Cài Hotfix sẽ chữa được lỗi này:

http://code.msdn.microsoft.com/KB957912/Release/ProjectReleases.aspx?ReleaseId=1796 (15.5MB)

Hy vọng giúp được các bạn.

Bổ sung:

Nếu bạn chạy windows 64bit (Vista 64, Windows 7 64 …) thì khi cài đặt có thể bị lỗi. Nguyên nhân thì chưa xác định rõ ràng (tôi đoán là do trên các bản win này, VS được cài ở Program Files (x86), chứa ký tự đặc biệt nên bản cài cho hotfix bị lỗi (xong trong log thì thấy) khi detect đường dẫn)

http://codepoet5150.com/2008/09/12/visual-studio-2008-sp1-setup-failure-on-64-bit-vista-solved/

Giải pháp: bạn disable ổ CD/DVD đi thì sẽ giải quyết được vấn đề

– bỏ các ổ ảo, virtual drive nếu có
– bỏ ổ CD thật (chuột phải vào My Computer, Manage, Disk Management, disconnect ổ CD hoặc remove driver letter/path đi)

dùng Cache trong ASP.NET

Bài này đề cập tới DataCaching của ASP.NET. Các vấn đề outputCaching (cache cả trang aspx) và fragmentCaching (cache một ascx, một phần của trang Aspx) là khá dễ, chỉ cần setup vài thẻ trong mã aspx là xong nên không được đề cập trong bài.

Xem thêm tại http://aspnet.4guysfromrolla.com/articles/022802-1.aspx

Cache về bản chất giống như một HashTable, lưu key là một String, value là đối tượng .NET. Tuy nhiên Cache thì có tính năng đặc biệt là tự động gỡ bỏ các entry theo thời gian hoặc khi hết bộ nhớ để lưu.

Truy xuất Cache:

dùng đối tượng tĩnh HttpContext.Current.Cache
nếu trong Page aspx, dùng Server.Cache
nếu trong ashx, dùng context.Cache

tất cả đều truy xuất đến cùng một chỗ lưu cache của ASP.NET.

Có hai kiểu chính sách hết hiệu lực bạn có thể sử dụng khi lưu giữ dữ liệu trong cache.

  • Absolute expiration: hết hiệu lực vào một THỜI ĐIỂM xác định trong tương lai (VD: 10 phút nữa là huỷ đổi tượng).

Cache.Insert("cacheKey", ObjectToCache, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);

  • Sliding expiration: gỡ bỏ các đối tượng sau một khoảng thời gian không dùng đến. Mỗi khi đối tượng được truy xuất, thời gian sống của nó sẽ được reset. (VD: loại bỏ các đối tượng mà đã lâu (10 phút) không dùng tới)

Cache.Insert("cacheKey", ObjectToCache, null,DateTime.MaxValue, TimeSpan.FromMinutes(10));

Mẫu code chung để sử dụng Cache là:

T GetValue(){
string CACHE_KEY = "cacheKey";
object oValue = cache[CACHE_KEY];
if (oValue == null) {
oValue = GetValueFromSomeWhere();
// Lưu giữ đối tượng theo kiểu nào tuỳ bạn chọn
cache.Insert(CACHE_KEY, oValue, null, DateTime.MaxValue, TimeSpan.FromSeconds(60));
}
return oValue as T;
}

Hàm GetValueFromSomeWhere() là chỗ bạn lấy dữ liệu thực ở đâu đó (VD lấy từ Database, đọc từ file …)

.

Một  số bonus:
Hàm Cache.Insert() có đối số cuối cùng là CallBack. Tính năng này khá tiện, cho phép developer kiểm soát xem nên làm gì mỗi khi Cache entry bị gỡ bỏ (có thể kiểm tra, tạo lại mới luôn, hoặc thực hiện một số tác vụ …) .  Tips: Dùng cái này có thể tránh được việc pooling để kiểm tra xem Cache entry hết hạn chưa.

Callback này không được khởi chạy nếu cache entry bị gỡ bỏ có chủ ý (bằng cách gọi Remove(), hay gọi Insert() mới đè lên)

Hàm Cache.Insert() nếu cung cấp key trùng với key đã có rồi sẽ gỡ bỏ entry cũ, ấn entry mới vào với key tương ứng ấy

Xài nhanh (RAD) MySQL với C#

Khi code nhanh, cần giao tiếp CSDL, lập trình viên thường ẩu, không tính đến các vấn đề về bảo mật.

Một trong những trick đơn giản để tránh lỗi không đáng có khi giao tiếp CSDL, là khi insert, update, không nên sử dụng cách cộng chuỗi để ghép thành câu SQL mà nên sử dụng tham số hình thức (dấu ? trong câu SQL mẫu). Làm vậy sẽ tránh được SQL Injection:

string sSQL_NewMsg = "INSERT INTO `messages` (`user`, `time`, `msg`, `from`, `direct`, `reply`) " +
"VALUES (?user, ?time, ?msg, ?from, ?direct, ?reply); ";
MySqlParameter paramuser = new MySqlParameter("?user", "lockevn");
MySqlParameter paramtime = new MySqlParameter("?time", 1219057011);
MySqlParameter parammsg = new MySqlParameter("?msg", ".");
MySqlParameter paramfrom = new MySqlParameter("?from", "web");
MySqlParameter paramdirect = new MySqlParameter("?direct", DbType.Int32); paramdirect.Value = 0;
MySqlParameter paramreply = new MySqlParameter("?reply", DbType.Int32); paramreply.Value = 0;
try
{
MySqlHelper.ExecuteNonQuery(myCon, sSQL_NewMsg,
paramuser, paramtime, parammsg, paramfrom, paramdirect, paramreply
);
}
catch (Exception ex)
{
ex.ToString();
}

Lập trình ứng dụng Facebook

(FASTFOOD version  – không trau chuốt sửa chữa)

UPDATE:
Lập trình ứng dụng cho Facebook sử dụng Eclipse Galileo – Develop a #Facebook #app with #Eclipse Galileo – Learn the Facebook Connect API
http://su.pr/AckWqo

Viết facebook app bằng .NET (dùng VS2008 và bộ Toolkit nguồn mở): http://www.stevetrefethen.com/wiki/Facebook%20application%20development%20in%20ASP.NET.ashx

Ngày 18/11/2010, Facebook thông báo một tính năng mới cho các lập trình viên.
– Chúng ta đã có thể tạo TestUser để thử nghiệm ứng dụng mà ko phải lo lắng về chuyện bị Facebook coi là spam.
– Các testUser có thể kết bạn với nhau (ko cần accept).
– Khi dùng xong có thể xoá đi.

– TestUser không tương tác với các account thật của Facebook được,và cũng không chuyển đổi thành account thật được.
– Không truy xuất được các nội dung công khai trên các Page (thật, hiện có).

http://mashable.com/2010/11/17/facebook-test-users/

Cần

  • Chuẩn bị kỹ thuật, server
  • Thêm ứng dụng Facebook Developer vào account Facebook của mình, đây là chỗ quản lý và cấu hình các ứng dụng mà bạn phát triển
  • Thiết lập tham số cho ứng dụng mới của bạn
  • Phát triển ứng dụng của bạn
  • Quản lý ứng dụng của bạn
  • Cần có facebook account
  • Cần biết lập trình một ngôn ngữ (dùng để viết) web nào đó, VD như PHP, Ruby on Rails, JavaScript, Python, ASP.NET — Nhất là những nền tảng ngôn ngữ có sẵn thư viện API để viết Facebook app (PHP, ASP.NET).
  • Hiểu biết cơ bản về Internet, SSH, MySQL, và Unix
  • Biết sử dụng Web hosting, có host để xài (để chứa ứng dụng của bạn)
  • Server cần chạy được HTML, tối thiểu một nền tảng lập trình web PHP (có cURL) và/hoặc .NET. Nếu có kết nối CSDL càng tốt
  • Cần cài ứng dụng Developer của Facebook
  • Vào mục này http://www.facebook.com/developers/ , chọn allow (để sử dụng facebook app Developer trong profile của mình)
  • Nhấn “Set Up New Application”. Khai báo, submit.
  • Xem thêm về các trường có thể khai báo tại đây: http://wiki.developers.facebook.com/index.php/Creating_a_Platform_Application

Có 2 thông tin quan trọng cần lưu ý:

  • * API key: chuỗi này là định danh ứng dụng của bạn với Facebook (về sau khi gọi API tới facebook luôn phải đính chuỗi này vào)
  • * Chuỗi bí mật của ứng dụng: Facebook sử dụng key này để xác định ứng dụng nào đang gọi, bạn ko được share key này cho ai khác.
  • Lưu ý, mỗi khi sửa thông tin của App, sẽ mất vài chục phút để update trên các Server của FB.
  • Các trường thông tin cần sửa là:
    • Canvas Page URL (url trên facebook để truy cập ứng dụng của bạn, lúc test bạn sẽ chạy thử từ URL này)
    • Canvas Callback URL (url của ứng dụng, mà bạn host trên site)

Tóm lại

đây là mô hình của ứng dụng trên Facebook: User Facebook Website của bạn (hay ứng dụng của bạn)

Do vậy, bạn nhất thiết phải có một webserver trên mạng (hosting, hoặc server riêng). PHP và MySQL là nên có, dù không bắt buộc.

Một số phần quan trọng để ứng dụng của bạn thực sự trở thành một phần của facebook

  • Kiểu dáng phù hợp http://devtacular.com/articles/bkonrad/how-to-style-an-application-like-facebook/
  • Liệt kê App lên Application Directory
  • Chỉnh sửa các thông tin cơ bản của ứng dụng thật đầy đủ, nhất là trang About của App
  • Canvas Page: là nơi hiển thị chính của ứng dụng, là nơi cho user tương tác với App của bạn
  • Profile Box: ứng dụng của bạn có thể được hiển thị trên trang Profile của user
  • Application Menu: menu nhỏ bên dưới góc phải, tương tự như menu Start của Windows.

Xài FBML hay iframe cho ứng dụng của bạn?

http://wiki.developers.facebook.com/index.php/Choosing_between_an_FBML_or_IFrame_Application

FBML

FBML diagram

  • Dựng trang nhanh dễ, dùng thẻ của facebook
  • Thể hiện các thành tố cơ bản của facebook rất đơn giản (chỉ cần ghi thẻ tương ứng là xong)
  • URL và kiểm tra xác thực user đơn giản

IFrames

Iframe diagram

  • Linh hoạt, thích viết gì thì viết, vì bản chất là User tương tác với trực tiếp với trang nằm trên hosting của mình
  • Chuyển các ứng dụng có sẵn sang dạng Facebook dễ dàng
  • Nhanh hơn khi sử dụng, User view trang không cần qua Proxy của FB để render các thẻ
  • Sử dụng JavaScript, HTML, CSS của mình (xài jquery, blueprint vô tư)
  • Chạy ajax nhanh hơn do user chạy trực tiếp trang của mình (không qua proxy)
  • Debug dễ hơn (vì mã HTML và js là nguyên bản)
  • vẫn chỉnh được kích thước (auto resize), không ngại bị scrollbar (dùng thêm js của facebook trong iframe)

Khuyên dùng

  • nên xài iframe, ko phải tái nạp các thành phần topbar và appbar,chatbar của Facebook, vẫn tận dụng được tốt FBML nếu dùng XFBML.

iframe with XFBML

  • JS của facebook sẽ scan DOM và render lại các thẻ fb trên chính browser, bớt được các vòng roundtrip trên app server của mình
  • trích xuất dc URL trong iframe của mình ra trang facebook container (dùng js của facebook trong iframe của mình)
  • Nếu đang dùng iframe, có thể chuyển trang thành dạng FBML, sử dụng fb_force_mode
  • Có thể dùng HTML, đánh dấu, và dùng javascript lib của Facebook để có khả năng hiển thị tương tự FBML
  • http://wiki.developers.facebook.com/index.php/Using_HTML_to_Imitate_XFBML

Các thành phần cơ bản quan trọng của Facebook App

  • * API, gọi hàm, lấy dữ liệu trả về từ Facebook.
  • * FBML, Facebook Markup Language, ngôn ngữ mô tả của Facebook, khi ứng dụng trả về FBML, đi qua Proxy của Facebook, các thẻ fbml sẽ được render để trả về HTML thực cho User.
  • * XFBML, một mở rộng của FBML, sử dụng javascript để render FBML trên trình duyệt của User, không đi qua proxy.
  • * FQL, Facebook Query Language, lấy dữ liệu sử dụng dạng ngôn ngữ tựa như SQL query, không cần dùng API. Giảm tải lời gọi API, chỉ lấy những gì cần, tránh dùng nhiều round trip (nhiều lần gọi API) để lấy thông tin. (cách dùng tương tự như gọi API vì nó là một hàm API mà, bạn gọi API fql.query với tham số là query của bạn)
    http://developers.facebook.com/news.php?blog=1&story=257
  • * FBJS, Facebook javascript

Facebook Connect

  • biết được user facebook đang ở trên site của bạn
  • đưa bạn bè lên site của bạn
  • xuất bản thông  tin mới từ site lên stream của các bạn facebook đã connect
  • làm cho user comment được thông tin trên site bạn, và hiện cả trên facebook

Di cư ứng dụng web social của bạn lên facebook

Chuyển hết kho user lên facebook account: http://wiki.developers.facebook.com/index.php/Express_Registration

 

Tổng hợp các kiến thức Facebook

http://developers.facebook.com/docs/guides/web/

 

 

  • Chuẩn bị kỹ thuật, server
  • Thêm ứng dụng Facebook Developer vào account Facebook của mình, đây là chỗ quản lý và cấu hình các ứng dụng mà bạn phát triển
  • Thiết lập tham số cho ứng dụng mới của bạn
  • Phát triển ứng dụng của bạn
  • Quản lý ứng dụng của bạn

Silverlight – lập trình viên .NET cần đón đầu công nghệ

http://weblogs.asp.net/scottgu/archive/2008/10/14/silverlight-2-released.aspx

http://weblogs.asp.net/scottgu/archive/2007/05/07/silverlight.aspx

http://weblogs.asp.net/scottgu/archive/2008/11/16/update-on-silverlight-2-and-a-glimpse-of-silverlight-3.aspx

http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx

Móc nối toán tử ?? của C# để lấy tham số nhẹ nhàng hơn

C# từ bản 2.0 có toán tử ?? rất tiện. Toán tử ?? tương tự như hàm isnull() trong T-SQL của SQL Server vậy. Nó hoạt động như sau:

Nếu value1 là null thì sẽ trả ra value2;

VD:
Nếu dùng toán tử ??

string result = value1 ?? value2;

Nếu viết bình thường
string value1 = null;
string value2 = "Test1";
string result = value1 != null ? value1 : value2;

Cả hai trường hợp trên, biến result sẽ nhận giá trị “Test1”.

Sử dụng toán tử ?? thì bạn sẽ dễ viết hơn, ngắn gọn, bỏ đi được cả đống if() kiểm tra null. Với VD dưới đây, bạn có thể móc nối toán tử ?? để viết chỉ trên 1 dòng mã (chaining):

string partner = Request.QueryString["GoogleId"] ??
Request.QueryString["PartnerId"] ??
Request.QueryString["UserKey"] ??
string.Empty;

Câu lệnh trên sẽ dừng khi nó tìm ra giá trị querystring đầu tiên không null. Nếu tất cả querystring đều null thì nó sẽ trả ra chuỗi rỗng “”.

Nếu bạn sử dụng if()else thì sẽ phải viết rất nhiều mã, nhàm chán, lại phải lồng các if() vào nhau, khó đọc.

.

Nguồn: http://www.west-wind.com/weblog/posts/236298.aspx

Sử dụng YUI Compressor với Visual Studio

1. Minified (làm tối thiểu hoá) hay compress các file text. Công việc này thường là: bỏ các dấu xuống dòng, bỏ các dấu cách, dấu tab thừa (mà developer thường dùng trong khi viết mã – cho đẹp).
2. Khi làm web, nếu làm kỹ lưỡng thì tất cả các file JS, CSS đều phải được minified, giảm khá nhiều dung lượng truyền tải. Đôi khi còn phải ghép nhiều file thành 1 file nữa (để giảm số lần request, thay vì lấy 3 file 1.css 2.css 3.css thì chỉ lấy 1 file 123.css thôi, tiết kiệm 2 request)

YUICompressor là công cụ khá tốt (và nổi để làm việc này). Bài viết này hướng dẫn dùng YUICompressor (kèm) với VisualStudio. (Ngắn gọn là cấu  hình VS để nó gọi hộ mình chương trình Java YUICompressor)

Download YUI Compressor từ Yahoo và giải nén (unzip) nó vào thư mục nào đó.

Cấu hình External Tool của Visual Studio

Mở Visual Studio. Chọn (Tools -> External Tools…)

image

Nhấn Add, tạo một tool mới , đặt tên là YUI Compressor.  Nhập các thông số như sau:

Chỉnh lại đường dẫn đến file jar (chỗ mà bạn vừa giải nén YUI Compressor ở bước trước).
Bạn cũng cần phải có khả năng chạy Java trên máy (Cài JRE hoặc JDK rồi, đặt Path đến java.exe rồi java.exe is in your path)

  1. Title: Yui Compressor
  2. Command: java.exe
  3. Arguments: -jar “E:\yuicompressor-2.4.2\build\yuicompressor-2.4.2.jar” $(ItemPath) –charset “UTF8” –type js -o $(ItemFileName).min$(ItemExt)
  4. Initial Directory: $(ItemDir)
  5. Đánh dấu vào “Use Output Window”

image

Để thử nghiệm, bạn hãy chọn file js trong cửa sổ Solution Explorer.  Sau đó mở menu Tool/Yui Compressor.  Refresh lại thư mục trong Solution Explorer, bạn sẽ thấy các file dạng *.min.js

Bạn hãy làm tương tự để tạo Tool YUI cho các file css, chỉ chú ý là thay đối số –type thành css chứ không phải js khi cấu hình tool (trong ô nhập Argument)

Tạo Toolbar trong VS để làm cho  tiện

Vào menu Tools->Customize.  Nhấn New…

image

Sang tab Command , chọn mục Tools.

image

Kéo thả External Command 1 vào toolbar của bạn.

Hy vọng các bạn dùng .NET thấy hữu ích với kỹ thuật này. Kỹ thuật này có các điểm lợi:

  • Bớt được việc mở commandline, gõ lệnh để chạy YUIC, mất thời gian, tốn công, khó setup, nhất là phải gõ đường dẫn. Giờ chỉ cần click chuột trên toolbar
  • Vẫn dùng nguyên xi code của YUICompressor (Java). Khi YUI nó có thay đổi hay nâng cấp, tải về bản mới là xong.

Bài gốc cho bài viết này đc lấy tại đây:
http://blog.lavablast.com/post/2009/05/YUI-Compressor-for-Visual-Studio.aspx

Cách khác

Nếu bạn cảm thấy ngại cài thêm Java trên máy, đây là một công cụ khác, cũng có chức năng tương đương. Tuy nhiên nếu dùng bản này bạn sẽ không có điểm lợi thứ 2 (trong cách dùng Java YUIC như trên)
http://www.codeplex.com/YUICompressor
Đây là bản code viết bằng .NET, convert từ dự án (viết bằng Java) Yahoo! UI Library’s YUI Compressor. Tác dụng của nó cũng là nén JS và CSS tới mức tối đa mà vẫn đảm bảo hoạt động như bình thường.
Phiên bản này dựa trên YUI Compressor version: 2.4.2 (từ ngày 2009-02-22).

Tính năng chính
* Stock Yui Css compression.
* Stock Yui JavaScript compression.
* MsBuild task which can be used in a Web Deployment Project build.
* The MsBuild task also compiles all compressed files into a single destination file (aka. file combining).
* Can now handle Encoding Types (eg. Unicode) from v1.2.2.0 onwards and ThreadCulture from v1.3.0.0 onwards.