Wednesday, December 23, 2009

Học CCNA hay MCP?

Chuyện chọn học chứng chỉ quốc tế nào luôn là câu hỏi mà chúng tôi nhận được nhiều nhất. Trong đó, do nhu cầu nhân lực có chứng chỉ Cisco và Microsoft luôn rất cao, nên đa số học viên và thí sinh có chung một câu hỏi: nên học CCNA hay MCSA? Chúng tôi xin được cung cấp thêm thông tin để bạn đọc có thể chọn cho mình hướng đi phù hợp.

Không nên so sánh

Trước tiên, hãy cùng xem định nghĩa chính thống của các hãng ra sao. Theo Cisco, CCNA (Cisco Certified Network Associate) là chứng chỉ thể hiện kiến thức cơ bản về mạng; những người đạt được CCNA có khả năng cài đặt, thiết lập cấu hình, và vận hành mạng LAN, WAN và dịch vụ truy cập từ xa (dial access) với quy mô 100 điểm (node) trở xuống, có sử dụng các giao thức (protocols) sau: IP, IGRP, Serial, Frame Relay, IP RIP, VLANs, RIP, Ethernet, Access Lists. Tuy nhiên, nếu xem xét kỹ nội dung, chúng ta thấy phần lớn khối lượng kiến thức là về thiết bị mạng của Cisco và những kỹ thuật mạng có liên quan đến công nghệ của Cisco.

Theo Microsoft, chứng chỉ MCP (Microsoft Certified Professional) xác nhận khả năng triển khai thành công một sản phẩm hay một công nghệ của Microsoft, trong đó bao gồm kỹ năng thực hành. Cần lưu ý, MCP là danh hiệu chung: thí sinh thi đậu một môn của Microsoft – dù là ngành mạng hay lập trình hay cơ sở dữ liệu – đều được gọi là “MCP”. Ở đây, chúng ta chỉ đề cập nhiều về MCP chuyên về mạng.

Như vậy, có thể thấy rằng hai chứng chỉ này không cùng loại để mà so sánh, cũng như Cisco là hãng về thiết bị (phần cứng) và Microsoft là hãng về phần mềm. Tuy nhiên, chúng có những kiến thức liên quan và bổ sung cho nhau để có thể làm việc thực tế. Cả hai chứng chỉ này đều yêu cầu người học phải có kiến thức nền tảng về mạng (khái niệm chung, mô hình, giao thức,…). Ở góc độ này, CCNA đi sâu hơn về kỹ thuật mạng (nhất là về TCP/IP) trong khi MCP tập trung vào phần mềm máy chủ (server) hoặc máy trạm (client).
Có nên học cả hai?
Nếu muốn trở thành chuyên viên, chuyên gia về quản trị mạng, bạn cần có kiến thức về sản phẩm và công nghệ Microsoft, vì chúng được sử dụng rộng rãi trên thực tế. Như vậy, việc học MCP là cần thiết (tuy nhiên có học tiếp lên MCSA hoặc MCSE hay không còn tùy nhu cầu công việc của bạn). Các bạn có thể học mà không cần thi quốc tế nếu không cần thiết. Ngoài ra, một số chuyên gia cho rằng học MCP sẽ giúp bạn dễ hấp thu kiến thức của CCNA hơn.
Chỉ những đơn vị nào sử dụng hoặc kinh doanh thiết bị và giải pháp của Cisco, mới cần đến những người có chứng chỉ Cisco. Có thể thấy, số lượng nhà tuyển dụng cần CCNA sẽ ít hơn những nơi muốn tuyển MCP (một cách tương đối). Nếu có nhu cầu cần thông thạo công nghệ Cisco thì bạn có thể theo đuổi các chứng chỉ CCNP hay CCIE. Riêng cấp độ CCNA vì chứa đựng nhiều kiến thức chung về mạng, nên việc học sẽ tốt cho bất cứ ai theo ngành mạng.

Tóm lại, nên cân nhắc khi muốn học CCNP hay MCSE; riêng với CCNA và MCP thì đừng do dự, hãy học ngay khi bạn có thể!

Nguyễn Trọng Hòa (theo Echip)

Cách bấm cáp mạng

Bài viết này sẽ hướng dẫn bạn về màu sắc các cặp dây đồng trong 2 chuẩn cáp cũng như kỹ thuật bấm cáp để nối 2 máy vi tính với nhau, hoặc nối máy vi tính với hub.
http://img158.imageshack.us/img158/2986/utp34lu.jpg
Trong một dây cáp đạt chuẩn qui định bao gồm tám sợi dây đồng trong đó mỗi hai sợi xoắn với nhau thành từng cặp theo qui định nâu – trắng nâu, cam – trắng cam – xanh lá – trắng xanh lá, xanh dương – trắng xanh dương và một sợi dây kẽm. Sợi dây kẽm này chỉ có chức năng làm cho sợi dây cáp chắc chắn hơn, các bạn không cần quan tâm đến nó mà chỉ cần quan tâm đến tám sợi dây đồng mà thôi.

Sợi dây cáp này sẽ được nối với một đầu RJ45, nhiệm vụ của các bạn là bấm tám sợi dây đồng nói trên vào các điểm tiếp xúc bằng đồng trong đầu RJ45 này.

Để làm được việc này bạn cần có một cái kìm bấm cáp mạng (kìm này bạn có thể dễ dàng tìm thấy trong các cửa hàng tin học tại các thành phố lớn) và hiểu được các chuẩn bấm cáp. Hiện nay có hai chuẩn bấm cáp là T568A và T568B, hai chuẩn bấm cáp này đều do Intel qui định.
http://nhipsongso.tuoitre.com.vn/ImageView.aspx?ThumbnailID=203815
T568A:

1. Trắng xanh lá
2. Xanh lá
3. Trắng cam
4. Xanh dương
5. Trắng xanh dương
6. Cam
7. Trắng nâu
8. Nâu

T568B:

1. Trắng cam
2. Cam
3. Trắng xanh lá
4. Xanh dương
5. Trắng xanh dương
6. Xanh lá
7. Trắng nâu
8. Nâu

Nếu các bạn muốn bấm một sợi dây cáp dùng để kết nối giữa các thiết bị cùng loại, ví dụ như giữa hai PC với nhau hoặc giữa hai switch (hub) với nhau, các bạn dùng kỹ thuật bấm cáp chéo (crossover cable). Một đầu sợi cáp các bạn bấm chuẩn T568A và đầu còn lại các bạn bấm chuẩn T568B.

Còn nếu như các bạn muốn một sợi dây cáp dùng để kết nối các thiết bị khác loại với nhau ví dụ như từ PC nối đến switch (hub) hoặc từ switch (hub) nối đến PC các bạn dung kỹ thuật bấm cable thẳng (straight-through cable). Nếu một đầu sợi cáp các bạn bấm chuẩn T568A thì đầu còn lại cũng bấm chuẩn T568A, tương tự như vậy nếu một đầu bạn bấm chuẩn T568B thì đầu còn lại các bạn cũng bấm chuẩn T568B.

Và đây là các bước thực hiện: Đầu tiên các bạn cắt bỏ lớp nhựa bảo vệ để được các sợi dây đồng (các bạn nên cắt vừa đủ để các sợi dây đồng tiếp xúc với các lá đồng trong đầu RJ45, nếu cắt dài quá sẽ rất dễ bị đứt do đầu RJ45 không bấm chắc vào sợi cáp). Tiếp theo đó các bạn tháo xoắn giữa các sợi dây đồng, và tuốt lớp nhựa bao quanh các sợi đồng. Bước tiếp theo các bạn chỉ cần đưa từng sợi dây đồng có màu tương ứng theo chuẩn bấm T568A hoặc T568B từ pin 1 đến pin 8 (qui định từ trái qua phải). Bây giờ các bạn chỉ việc đưa vào kìm bấm “rắc” là hoàn tất.

Nguyễn Trọng Hòa (Theo LBVMVT)

Kỹ năng học và thi chứng chỉ Mạng máy tính

Nên thi chứng chỉ gì?
Hầu như mọi hãng công nghệ lớn về IT trên thế giới đều có các chứng chỉ của riêng hãng. Việc chọn lựa chứng chỉ nào để theo học nên xem xét để phục vụ cho công việc, phù hợp với lĩnh vực mà công ty nơi mình đang công tác. Nếu công ty bạn đang kinh doanh công nghệ này, bạn sẽ càng có cơ hội để thực tập với thiết bị thật. Nếu bạn đang có ý định thay đổi việc làm, bạn có thể tìm hiểu các chứng chỉ mà thị trường tuyển dụng đang cần. Ở Việt nam hiện nay, các chứng chỉ của Cisco và Microsoft được khá nhiều các bạn trẻ chọn lựa.
Tìm thông tin về các chứng chỉ ở đâu và như thế nào?

Bạn nên dành thời gian đáng kể để tìm hiểu về chứng chỉ mình dự định thi. Tìm hiểu về sách nào cần cho kỳ thi, dùng những phần mềm nào, thực tập những bài lab nào? Các thông tin này có thể tìm ở đâu? Các diễn đàn tin học trong và ngoài nước. Thông tin cũng có thể tìm trong web site của chính hãng mà bạn định thi. Thông thường thông tin từ web site sẽ quyết định thông tin chính xác nhất trong trường hợp bạn có nhiều thông tin trái ngược nhau. Ví dụ nếu bạn định thi chứng chỉ Cisco, web site của bạn nên tham khảo là www.cisco.com. Nếu bạn dự định lấy chứng chỉ Microsoft, bạn nên tham khảo www.microsoft.com. Việc chọn lựa giáo trình cũng rất quan trọng. Thông thường, với một chứng chỉ nghề, sẽ có nhiều bộ giáo trình phù hợp cho nhiều dạng đối tượng khác nhau. Có giáo trình phù hợp cho người đã có kinh nghiệm, có giáo trình phù hợp cho người mới bắt đầu. Các kỳ thi quốc tế thường có lệ phí thi khá cao so với mặt bằng chung. Cụ thể một kỳ thi Cisco vào khoảng 150USD (khoảng 2,4M tiền Việtnam), chi phí thi một kỳ thi Microsoft vào khoảng 50USD. Một chứng chỉ như CCNP (Cisco Certified Network Professionals) có thể đòi hỏi bạn phải vuợt qua 4 kỳ thi. Do đó số tiền cần chuẩn bị sẽ nhân lên nhiều lần.

Học chứng chỉ quốc tế như thế nào?
Có ba công việc chính mà một người học phải thực hiện trong quá trình theo học các chứng chỉ quốc tế: đọc sách, thực hành và tự đánh giá thông qua các chương trình kiểm tra.
- Đọc sách bạn đã chọn lựa trong giai đoạn chuẩn bị. Nếu đọc nhiều loại sách: kiến thức bổ sung cho nhau nhưng thời gian sẽ dài hơn. Hầu hết sách là tiếng Anh: chấp nhận những chương đầu đọc chậm. Diễn dịch các khái niệm cơ bản bằng tiếng mẹ đẻ. Điều này giúp người học nhớ lâu hơn. Các khái niệm hầu như có liên quan với nhau. Khi khối lượng kiến thức người học đã tích luỹ nhiều lên, tốc độ học sẽ nhanh hơn. Sau mỗi chương, nên tự dừng lại và tự trả lời các câu hỏi.
- Sự khác biệt lớn nhất giữa chứng chỉ quốc tế với các chương trình đào tạo chính qui khác chính là việc người học phải có thực hành trên thiết bị thật. Bạn không nên dự bất kỳ kỳ thi Cisco nào nếu bạn chưa từng thực tập trên Cisco routers. Bạn không nên dự thi bất kỳ kỳ thi Microsoft nào nếu bạn chưa từng làm việc với sản phẩm Microsoft đó. Các kỳ thi mới nhất luôn có dạng câu hỏi mô phỏng (simulations), đòi hỏi người dự thi phải thực sự làm viêc trên sản phẩm thật thì mới có khả năng trả lời.
- Dùng thêm các phần mềm bổ trợ cho việc học và tự đánh giá bản thân. Điều cần nhớ là bạn phải chân thật với chính mình. Bài thi quốc tế (trực tuyến) được chấm tự động bởi máy tính. Khi càng gần đến ngày thi, bạn càng nên tập trung cho việc đọc lạI lý thuyết. Giai đoạn này bạn cần tiếp xúc vớI càng nhiều câu hỏI ôn tập càng tốt. Có thể phân bổ 80% thờI gian học tập cho việc học lý thuyết; 20% còn lạI cho việc học thực hành. Đặt mục tiêu cụ thể để có áp lực lên chính bản thân. Ví dụ: sẽ đạt được CCNA vào trước tháng 10 năm 2005 hoặc sẽ đăng ký thi CCNA vào ngày 24 tháng 10….Ngoài ra, bạn cũng nên thông báo cho cơ quan hoặc công ty nơi bạn đang làm việc biết kế hoạch học tập và thi cử của mình. Việc này giúp cho bạn dễ đuợc cấp trên chú ý và tạo điều kiện cho giai đoạn ôn tập. Nếu bạn là sinh viên đại học, nên chú ý phân bổ thời gian sao cho việc học các chứng chỉ nghề không bị ảnh hưởng đến các kỳ thi trong trường Đại học.
- Nên đăng ký thi trước một hoặc hai ngày thi. Ở Hà Nội, có nhiều trung tâm tổ chức thi. Bạn có thể tìm thông tin về các trung tâm khảo thí tại Việt nam ở địa chỉ
http://www.vue.com. Khi đăng ký thi, chú ý cách điền tên và địa chỉ để hãng gửI bằng về cho bạn.
Ngày trước khi thi, bạn đọc lại các study guide, các sự kiện, các hình vẽ. Không nên học nhiều hoặc nhồi nhét.
Kỹ năng thi cử?
Ngày thi:
- Nên đến sớm địa điểm thi trước 10 đến 15 phút. Giấy nháp và viết sẽ do trung tâm khảo thí cung cấp. Bạn không cần thiết phải chuẩn bị các vật dụng này. Máy tính cá nhân cũng không được phép mang vào phòng thi.
- Bạn nên ghi ra giấy khoảng thời gian được phép thi và số câu hỏi cần trả lời. Ước lượng khoảng thời gian trung bình cho từng câu hỏi. Với các bài thi của Cisco, mỗi câu hỏi trả lời bình quân mất một phút. Có những câu hỏi có thể tốn nhiều thời gian hơn.
- Điều quan trọng cần nhớ là bạn phải luôn bình tĩnh và nhịp điệu trong lúc thi. Các kỳ thi chứng chỉ quốc tế không phải là kỳ thi tuyển sinh. Nếu rớt bạn vẫn có thể đóng tiền thi lại. Bạn chỉ cần vượt qua một số điểm qui định nào đó là sẽ được công nhận đậu hay rớt. Với các môn thi Cisco, điểm đậu của kỳ thi CCNA là 849 điểm (trên 1000). Đây là một điểm yêu cầu khá cao với điểm chuẩn thường thấy trong các trường học Việt nam. Nghĩa là, nếu bài thi có khoảng 65 câu hỏi, bạn chỉ được trả lời sai tối đa 9 câu hỏi. Khi bạn phát hiện là mình đã trả lời sai câu hỏi trước đó và bạn không thể quay lại, bạn hãy tâm niệm là còn rất nhiều câu hỏi ở phía trước.
- Một số bài thi cho phép bạn xem lại các câu hỏi đã trả lời qua, ví dụ như kỳ thi của Microsoft. Một trong những cách thi hiệu quả là bạn sẽ trả lời qua tất cả các câu hỏi, đánh dấu các câu hỏi mà bạn chưa biết phương án trả lời. Do đó bạn có thể xem lại và thay đổi chọn lựa trước khi bài thi kết thúc. Các bài thi của hãng Cisco không cho phép bạn quay ngược trở lại câu hỏi đã trở lời trước đó. Do đó, với bài thi Cisco, bạn phải trả lời quyết đoán và chắc chắn cho từng câu hỏi. Có nhiều dạng câu hỏi: câu hỏi dạng chọn lựa đơn (single-choice), câu hỏi dạng “nhiều chọn lựa” (multiple choice), câu hỏi dạng “kéo và thả” (drag and drop), câu hỏi mô phỏng (simulation). Bạn nên đọc hết tất cả các chọn lựa và lựa ra đáp án tốt nhất. Một thí sinh có thể chỉ đọc đến đáp án C là một đáp án đúng và chọn ngay trong khi chọn lựa D mới là đáp án đúng nhất. Đối với các câu hỏi mô phỏng, bạn nên thực hiện chính xác các tác vụ mà câu hỏi yêu cầu. Thông thường sẽ có nhiều thông tin “giả” sẽ được đưa ra, người dự thi phải biết chính xác tác vụ mà câu hỏi yêu cầu. Khi kết thúc dạng câu hỏi này, bạn chú ý thực hiện các tác vụ lưu các kết quả bạn đã thực hiện. Với câu hỏi dạng đa chọn lựa, bạn nên dùng kỹ thuật loại trừ để giới hạn lại bớt các chọn lựa đúng.
- Kết quả đậu hay rớt của một bài thi sẽ hiển thị ngay khi bạn hoàn tất bài thi. Khả năng nhớ các sự kiện và liên kết các sự kiện sẽ giúp ngườI dự thi giảI đáp nhiều câu hỏi lạ.

Làm gì sau khi thi xong?
Nếu bạn đã thi đậu, bạn hãy tự hào về những gì bạn đã đạt được. Hãy chia sẽ thông tin này với công ty, bạn bè và với cộng đồng. Hãy hoạch định các kế hoạch tiếp theo. Bạn cũng nên vào web site của hãng để kiểm tra thông tin về bạn có đúng không để hãng sẽ gửi bằng về cho bạn. Trong trường hợp bạn thi trượt, hãy phân tích các điểm yếu mà mình đã thể hiện trong bài thi vừa gặp và lên kế hoạch cho một kỳ thi mới.
Chúc các bạn thành công!

Tham khảo anh: Đặng Quang Minh(CCNP)

(http://www.vutbay.net)

Monday, December 7, 2009

Installing Sun JDK on Linux

Downloading
Download the latest version of JDK from http://www.java.sun.com. I have downloaded jdk-1_5_0_01-linux-i586.bin for this tutorial.

Installing
Change to the directory where you downloaded the SDK ( I downloaded it in my home directory /home/deepak) and make the self-extracting binary executable:

chmod +x jdk-1_5_0_01-linux-i586.bin

Run the self-extracting binary, this will display the License agreement text and will ask you to accept the agreement:

./jdk-1_5_0_01-linux-i586.bin

Above command should create a directory called jdk1.5.0_01 in the /home/deepak directory. Move the SDK directory to /usr/java/ .Create /usr/java if it doesn't exist. Here is the command used:

mv jdk1.5.0_01 /usr/java

Set the JAVA_HOME environment variable, by modifying /etc/profile so it includes the following:

JAVA_HOME="/usr/java/jdk1.5.0_01"
export JAVA_HOME

/etc/profile is run at startup and when a user logs into the system, so you will need to log out and log back in for JAVA_HOME to be defined.

Check to make sure JAVA_HOME is defined correctly using the command below. You should see the path to your Java SDK.

echo $JAVA_HOME
Output should be
/usr/java/jdk1.5.0_01

roseindia.ne

Tuesday, September 22, 2009

Kiến trúc Model-View-Presenter trong .NET

Trong các nền tảng lập trình hiện đại như .NET, khi các công cụ và kỹ thuật hỗ trợ lập trình giao diện người dùng (UI) ngày càng trở nên mạnh mẽ và tiện dụng thì người ta có xu hướng đưa nhiều xử lý bên ngoài vào các lớp UI. Kết quả là các UI chứa nhiều xử lý logic và dữ liệu mà lẽ ra nên tách rời thành từng phần riêng. Lý do của việc tách rời như sau:

• Trong một hệ thống, UI là thành phần có nhiều khả năng thay đổi nhất nên việc tách rời các UI giúp có thể thay đổi các UI này một cách độc lập mà không ảnh hưởng đến các thành phần xử lý khác. Đặc biệt việc tách rời dữ liệu khỏi UI còn cho phép ta có thể phát triển nhiều UI khác nhau cho các cách thể hiện khác nhau.

• Mã lệnh (code) xử lý đặt trong UI gây khó khăn cho việc kiểm tra (test). Việc kiểm tra các UI thường hoặc phải chạy ứng dụng thủ công hoặc sử dụng kịch bản (script) để thực hiện việc tương tác tự động lên các UI, do đó sẽ tốn nhiều chi phí và thời gian hơn để kiểm tra các xử lý bên trong thành phần này.

• Việc đưa nhiều xử lý vào các lớp UI còn dẫn đến khả năng trùng lắp code xử lý. Những xử lý lẽ ra có thể dùng chung thì lại xuất hiện lặp lại ở nhiều UI có chức năng tương tự nhau. Việc tách các xử lý này ra ngoài ra còn tăng tính tái sử dụng code và dễ bảo trì hơn.

Đây là các vấn đề cơ bản được đặt ra cho các hệ thống tương tác. Để giải quyết chúng, một số giải pháp được đề ra, trong đó phổ biến nhất là mẫu kiến trúc MVC (Model-View-Controller). Trong bài viết này, chúng ta sẽ khảo sát mẫu kiến trúc MVC cổ điển và một mẫu kiến trúc thừa kế từ nó, hiện được ứng dụng rộng rãi trong môi trường .NET, đó là kiến trúc Model-View-Presenter (MVP). Ý nghĩa của các thuật ngữ trong hình minh họa vui lòng xem "Giải thích các project" cuối bài.

Model-View-Controller cổ điển

MVC được hình thành bởi các nghiên cứu của Trygve Reenskaug vào khoảng các năm 1978-1979. Sau đó nó được điều chỉnh và được cài đặt lần đầu tiên vào các lớp của thư viện Xerox PARC Smalltalk-80. MVC cổ điển hiện tại ít được sử dụng trong môi trường lập trình desktop như trước đây, nhưng vẫn được sử dụng rộng rãi trong môi trường lập trình web.

Mẫu kiến trúc Model-View-Controller chia nhỏ các thành phần dữ liệu, thể hiện (output) và dữ liệu nhập từ người dùng (input) thành những thành phần riêng biệt.

Model chứa dữ liệu và các tính toán xử lý logic để giải quyết vấn đề mà phần mềm hướng tới (business logic). Thành phần model thường được trình bày ở dạng Domain Model.

View là thành phần đảm nhận việc thể hiện những dữ liệu của Model. View bao gồm những gì thể hiện trên màn hình như các control, form... Trên cùng một Model, có thể có nhiều View.

Controller là thành phần đảm nhận việc xử lý đáp trả lại các dữ liệu được đưa vào từ người dùng như các sự kiện chuột, bàn phím, các tương tác lên các control... Controller là cầu nối giữa người dùng và ứng dụng.

Mục đích chính của MVC là tách rời phần thể hiện và các xử lý bên trong. Trong nhiều môi trường lập trình hiện đại, nhiều xử lý sự kiện cơ bản đã được hỗ trợ sẵn nên thành phần Controller không còn quan trọng nữa.

Trong khi đó, những cơ chế như Observer Pattern được dùng như phương tiện hiệu quả để loại bỏ sự phụ thuộc của Model vào các thành phần khác, có một vấn đề lớn là tại một thời điểm, chúng ta khó có thể xác định điều gì sẽ xảy ra bằng cách đọc code và việc kiểm tra cũng khó khăn hơn.

Ngoài ra còn những vấn đề khác như lưu trữ tình trạng hiện tại của UI... Vì vậy MVC sau này đã có những thay đổi và bổ sung nhất định. Kiến trúc MVP chúng ta sẽ bàn dưới đây cũng dựa trên tư tưởng cơ bản của MVC nhưng với cách tiếp cận khác nhằm khắc phục các hạn chế của MVC cổ điển.

Mẫu Dolphin Smalltalk Model-View-Presenter

Phiên bản Dolphin Smalltalk Model-View-Presenter (gọi tắt là Dolphin MVP) là phiên bản của MVP được xây dựng dựa trên phiên bản Taligent MVP xuất hiện trước đó. Dolphin MVP được xây dựng về cơ bản bên ngoài tương tự như MVC cổ điển nhưng khác nhau ở vai trò của Controller và Presenter.

Mẫu kiến trúc Dolphin Smalltalk Model-View-Presenter chia ứng dụng thành các phần dữ liệu, thể hiện (presentation) và xử lý logic thuộc phần thể hiện (presentation logic).

Trong mẫu Passive View, thành phần View được loại bỏ hoàn toàn các xử lý logic và tương tác đến Model. Thay vì vậy, nó chuyển giao các xử lý cho Controller đảm trách. Controller đảm nhận tương tác đến Model và cập nhật View khi có thay đổi từ Model. Controller là thành phần trung gian liên lạc giữa View và Model.

Trong mẫu Supervising Controller, View đầu tiên bắt lấy các sự kiện và sau đó chuyển giao cho Controller xử lý. Để cập nhật thay đổi từ Model, View dùng data-binding và Observer Pattern cho các xử lý đơn giản còn đối với các xử lý phức tạp sẽ nhờ đến Controller.

So với Supervising Controller có View đảm nhận xử lý sự kiện đơn giản, với Passive View thành phần View được tách rời hoàn toàn khỏi các xử lý, kể cả các xử lý cơ bản ở mức giao diện cũng được giao hoàn toàn cho Controller. Điều này tạo thuận lợi hơn cho việc kiểm tra vì khi đó các thành phần Model và Controller có thể được kiểm tra một cách độc lập mà không phụ thuộc vào giao diện. Phiên bản MVP của Microsoft đầu tiên được xây dựng dựa trên Passive View, sau đó mẫu Supervising Controller cũng được hỗ trợ với một số điều chỉnh.

Phiên bản MVP của Microsoft

Khởi đầu từ các framework Smart Client Software Factory và Web Client Software Factory dựa trên kiến trúc MVP được các nhóm nghiên cứu của Microsoft tạo ra từ năm 2006, Microsoft sau đó bắt đầu đưa MVP vào tài liệu hướng dẫn và ví dụ về lập trình giao diện trong .NET framework. Mô tả dưới đây dựa trên phiên bản MVP được mô tả trong tạp chí MSDN vào năm 2006 (tham khảo 2) và có thể xem là kiến trúc cơ bản cho các framework trên. Ngoài ra, còn có một số framework MVP khác cũng được phát triển trên nền tảng .NET như MVC# hay NMVP.

Xin lưu ý là phiên bản cũ của Web Client Software Factory ban đầu được tổ chức dựa trên Passive View (cấu trúc bên dưới) nhưng với phiên bản hiện tại thì cấu trúc dựa trên Supervising Controller cũng được hỗ trợ.

Các thành phần

Model chứa dữ liệu và các tính toán xử lý logic để giải quyết vấn đề mà phần mềm hướng tới.

View là thành phần đảm nhận việc thể hiện những dữ liệu của Model và là tổng hợp của các form, control được sử dụng.

Presenter là thành phần đảm nhận các xử lý thể hiện cũng như tương tác đến dữ liệu bên dưới và có thể tương tác để thay đổi View trong quá trình xử lý.

Phối hợp các thành phần

Mẫu kiến trúc MVP của Microsoft tương tự như Passive View nhưng có bổ sung ràng buộc là Presenter chỉ có thể truy cập đến View thông qua interface IView. Điều này giúp Presenter không phụ thuộc đến cài đặt cụ thể của View và có thể dễ dàng kiểm tra Presenter một cách độc lập. Chúng ta có thể dùng kỹ thuật "Mock" để thay thế các xử lý cụ thể của View khi kiểm tra Presenter. Ngoài ra, mối quan hệ giữa Presenter và Model là quan hệ một chiều (chiều còn lại là gián tiếp). Hệ quả là chúng ta có một mô hình đa lớp như cấu trúc ở trên theo ý nghĩa các thành phần ở một lớp chỉ phụ thuộc và sử dụng các thành phần ở lớp ngay bên dưới nó.

Theo mẫu Microsoft MVP, một View gắn liền với một interface IView. Khi View được tạo ra, nó tạo ra một đối tượng private Presenter và gắn nó vào đối tượng này thông qua IView. Khi một sự kiện xảy ra, View bắt lấy và sau đó kích hoạt một phương thức của Presenter mà sau đó có thể tương tác với Model. Một số sự kiện như bắt đầu hiển thị và đóng của View cũng được gửi tới để Presenter kích hoạt một số phương thức tương ứng, điều này giúp cho một số công việc như khởi tạo và giải phóng dữ liệu cho View được dễ dàng hơn.

Model theo Microsoft MVP cũng thường được tổ chức bổ sung một lớp Service nằm bên trên để tương tác với Presenter, qua đó giảm bớt sự phụ thuộc đến các xử lý dữ liệu sâu bên dưới. Ngoài ra, để điều khiển việc liên lạc giữa các View hay các Presenter, một thành phần thường được bổ sung gọi là Application Controller. Trong một ứng dụng có thể có nhiều Application Controller để quản lý các nhóm MVP. Ngoài ra, Application Controller có thể đảm trách việc tương tác với Model, thay vì sử dụng Presenter.

Ví dụ minh họa

Để minh họa mẫu Microsoft MVP, chúng ta sẽ cùng khảo sát một ví dụ đơn giản: tạo một form hiển thị danh sách sinh viên cùng chức năng thêm mới vào danh sách đó. Với mục tiêu minh họa cách tổ chức và liên kết giữa các thành phần, chúng ta không đi sâu vào cài đặt cụ thể (bạn có thể tham khảo source code đi kèm bài viết, source code được tổ chức ở dạng project của VS 2008).

Ứng dụng được tổ chức thành 5 project: View, Presenter, DataService, Model và DataTransferObject. Trong đó, View là ứng dụng còn các project khác là thư viện. Các project phụ thuộc lẫn nhau theo thứ tự project phía trước sử dụng trực tiếp project phía sau, ngoại trừ DataTransferObject chứa các loại dữ liệu được dùng chung cho 3 project View, Presenter và DataService. Model là project chứa các tương tác trực tiếp đến dữ liệu và không phụ thuộc vào bất cứ thành phần nào khác.

Giải thích các project:

- Model: Chứa dữ liệu giả lập (StudentData.xml), schema (StudentDataSet.xsd) và lớp tiện ích được xây dựng bên trên (DataAccess.cs).

- DataTransferObject: Chứa đối tượng dữ liệu được dùng chung cho các project ở mức cao hơn (Student.cs).

- DataService: được xây dựng bên trên Model, chuyển đổi dữ liệu từ Model sang DataTransferObject và xây dựng các tiện ích bên trên đối tượng transfer này (Service.cs).

- Presenter: Chứa interface của View dùng cho Presenter truy cập (IViewForm) và lớp Presenter (StudentPresenter).

- View: Chứa form view (ViewForm.cs) và Program.cs.

Trong bài viết khác, chúng ta sẽ tìm hiểu phương pháp TTD (Test-driven development) và ứng dụng nó để phát triển ứng dụng theo mẫu Microsoft MVP trong môi trường .NET.

Code

Tài liệu tham khảo

1. Martin Fowler, GUI Architectures
2. Jean-Paul Boodhoo, Design Patterns: Model-View-Presenter
3. Buschmann F., Meunier R., Rohnert H. & Sommerlad P. & Stal M. (1996). Pattern-Oriented Software Architecture: A System of Patterns.
4. Martin Fowler, Patterns of Enterprise Application Architecture.
5. http://en.wikipedia.org
6. Derek Greer, Interactive application architecture patterns
7. Views Testability Guidance
8. Dolphin MVP paper

Võ Hồng Vinh
Email: dakurai@gmail.com

(Theo PCworld)

Sunday, August 30, 2009

10 điều lãng phí nhất

Trong hành trình tạo dựng một cuộc đời có ý nghĩa, nếu bạn lỡ coi thường một trong 10 điều thiết yếu dưới đây, coi như bạn đã tự đánh mất một phần nhựa sống của chính mình.


1. Sức khoẻ:
Lúc còn trẻ, người ta thường ỷ lại vào sức sống tràn trề đang có. Họ làm việc như điên, vui chơi thâu đêm, ăn uống không điều độ... Cứ như thế, cơ thể mệt mỏi và lão hoá nhanh. Khi về già, cố níu kéo sức khoẻ thì đã muộn.

2. Thời gian:
Mỗi thời khắc "vàng ngọc" qua đi là không bao giờ lấy lại được. Vậy mà không hiếm kẻ nếm 8 giờ làm việc qua cửa sổ. Mỗi ngày, hãy nhìn lại xem mình đã làm được điều gì. Nếu câu trả lời là "không", hãy xem lại quỹ thời gian của bạn nhé.

3. Tiền bạc:
Nhiều người hễ có tiền là mua sắm, tiêu xài hoang phí trong phút chốc. Đến khi cần một số tiền nhỏ, họ cũng phải đi vay mượn. Những ai không biết tiết kiệm tiền bạc, sẽ không bao giờ sở hữu được một gia tài lớn.

4. Tuổi trẻ:
Là quãng thời gian mà con người có nhiều sức khoẻ và trí tuệ để làm những điều lớn lao. Vậy mà có người đã quên mất điều này. "Trẻ ăn chơi, già hối hận" là lời khuyên dành cho những ai phí hoài tuổi thanh xuân cho những trò vô bổ.

5. Không đọc sách:
Sách truyền bá văn minh. Không có sách, lịch sử im lặng, văn chương câm điếc, khoa học tê liệt, tư tưởng và suy xét ứ đọng. Từ sách, bạn có thể khám phá biết bao điều kỳ thú trên khắp thế giới. Thật phí "nửa cuộc đời" cho nhưng ai chưa bao giờ biết đọc sách là gì.

6. Cơ hội: Cơ hội là điều không dễ dàng đến với chúng ta trong đời. Một cơ may có thể biến bạn thành giám đốc thành đạt hay một tỷ phú lắm tiền. Nếu thờ ơ để vận may vụt khỏi tầm tay, bạn khó có thể tiến về phía trước.

7. Nhan sắc:
Là vũ khí lợi hại nhất của phụ nữ. Có nhan sắc, bạn sẽ tự tin và chiếm được nhiều ưu thế hơn so với người khác. Tuy nhiên, "tuổi thọ" của nhan sắc có hạn. Thật hoang phí khi để sắc đẹp xuống dốc. Hãy chăm sóc mình ngay từ bây giờ.

8. Sống độc thân:
Phụ nữ ngày nay theo trào lưu "chủ nghĩa độc thân". Thực tế là khi sống một mình, bạn rất cô đơn và dễ cảm thấy thiếu vắng vòng tay yêu thương của chồng con. Bận bịu gia đình chính là một niềm vui. Sống độc thân, bạn đã lãng phí tình cảm đẹp đẽ ấy.

9. Không đi du lịch:
Một vĩ nhân đã từng nói: "Khi đi du lịch về, con người ta lớn thêm và chắc chắn một điều là trái đất phải nhỏ lại". Vì thế, nếu cho rằng đi du lịch chỉ làm hoang phí thời gian và tiền bạc, bạn hãy nghĩ lại nhé!

10. Không học tập:
Một người luôn biết trau dồi kiến thức sẽ dễ thành công hơn người chỉ biết tự mãn với những gì mình biết. Nếu không học hành, bạn đang lãng phí bộ óc đấy.

Kynangmem.com

Làm sao để vượt qua con thỏ đế???

Bạn đã từng bỏ qua rất nhiều cơ hội đáng giá mà người khác hằng ao ước. Nguyên nhân đơn giản chỉ vì bạn không tin tưởng vào khả năng của mình hoặc bạn quá nhút nhát, không dám đối mặt với thử thách và khó khăn.
Những biện pháp sau sẽ giúp bạn khắc phục tính nhút nhát của mình.

Mở rộng quan hệ, tiếp xúc với nhiều người. Bạn đừng nên suốt cả ngày phải đối diện với sách báo hoặc tivi chỉ vì bạn sợ tiếp xúc với người khác. Hãy tiếp xúc, nói chuyện với nhiều người, từ những người hàng xóm hoặc bất kỳ một người nào đó bạn gặp trên xe buýt hay siêu thị, cùng bàn luận về một vấn đề hay một món hàng nào đó.

Hãy ra ngoài nhiều hơn, bạn sẽ thấy được mọi người rất thân thiện và không có gì để bạn phải sợ tiếp xúc với họ.

Trong một buổi tiệc, bạn không dám nói một tiếng nào, không phải bạn không có kiến thức về lĩnh vực mà mọi người đang thảo luận mà bạn sợ rằng ý kiến của mình không được mọi người tán đồng hoặc bạn nghĩ rằng ý kiến của mình không có gì đặc biệt và ai cũng có thể nghĩ ra.

Trái lại, nếu bạn cho rằng ý kiến của họ hay thì tại sao bạn không cho rằng họ sẽ nghĩ rằng ý kiến của bạn cũng rất hay. Do đó, bạn hãy tự tin nói ra ý kiến và đừng bao giờ đánh giá thấp năng lực của mình.

Nếu bạn không quen tiếp xúc với nhiều người thì hãy tập cách nói chuyện với trẻ con, những người thân trong gia đình, những người bạn đồng nghiệp. Khi đã tạo cho mình một phong cách giao tiếp thì bạn có thể mạnh dạn hơn khi tiếp xúc với nhiều người khác.

Bạn nên tìm cho mình những người bạn thân từ các đồng nghiệp. Có được sự ủng hộ và giúp đỡ của họ, bạn sẽ có được sự tự tin hơn trong hành động của mình. Đặc biệt nếu bạn thân của bạn là những người dạn dĩ thì bạn cũng sẽ học hỏi ở họ một số điều và sự dạn dĩ ấy sẽ lấn át đi một phần tính nhút nhát của bạn.

Thành lập cho mình một mục tiêu và quyết tâm phải đạt được. Lòng khát khao của bạn về kết quả mong muốn sẽ giúp bạn vượt qua những khó khăn do tính nhút nhát gây ra. Chẳng hạn như, bạn đặt ra mục tiêu phải có được 30 khách hàng trong tháng này. Và bạn phải làm những việc mà bạn chưa từng nghĩ tới. Lòng nhiệt thành và quyết tâm của bạn sẽ làm tan biến sự nhút nhát.

Hãy luôn luôn suy nghĩ rằng “ Không có gì phải sợ”. Nếu sự nhút nhát còn tồn tại trong người bạn thì bạn sẽ chẳng bao giờ thành công. Bạn đã từng ngưỡng mộ sự bản lĩnh của những người thành công? Họ luôn mang tư tưởng dám nghĩ, dám nói và dám làm. Nếu bạn muốn đạt được kết quả như họ thì hãy tập cho mình tính dám làm những gì nên làm.

Kynangmem.com