Chủ Nhật, 30 tháng 5, 2010

Trọn Bộ 19 Đĩa CD aptech

http://www.mediafire.com/?sharekey=3...c91da740cce240

Down thêm các phần còn thiếu tại đây

password: bachkhoaaptech.com
CD 1: Giáo trình Java by Example - Learn Java by Example (186.4 MB)
Code:

http://mega.1280.com/folder/DL0XJG/

CD2: RDBMS - Hệ quản trị CSDL quan hệ - Relational Database Management
System (146.2 MB)
Code:

http://mega.1280.com/folder/9UOB4H/

CD3: XML by Example - Aptech
Code:

http://mega.1280.com/folder/JD1N6I/

CD4: Working with SQL Server Database Objects
Code:

http://mega.1280.com/folder/MOON1W/

CD5: Guide Advance Java - Aptech (235.2 MB)
Code:

http://mega.1280.com/folder/YROEWL/

CD6: DCJ - Distributed Computing in Java (506.9 MB)
Code:

http://mega.1280.com/folder/3E66Z2/

CD7: DBSJ - Working with Database and Security in Java (214.5 MB)
Code:

http://mega.1280.com/folder/U641Z2/

CD8: PCS - Programming in C# (341 MB)
Code:

http://mega.1280.com/folder/8NDO08/

CD9: ACS - Advanced Programming in C# (168.5 MB)
Code:

http://mega.1280.com/folder/ULENNS/

CD10: ADMS - Advanced Data Manipulation in SQL Server (336 MB)
Code:

http://mega.1280.com/folder/IDJALW/

CD11: Win Forms Programming with C# (562.2 MB)
Code:

http://mega.1280.com/folder/VNRC4N/

CD12: Begin ASP.NET (381.1 MB)
Code:

http://mega.1280.com/folder/46D4FB/

CD13: Database Handling in ASP.NET (349.5 MB)
Code:

http://mega.1280.com/folder/DRPSQ7/

CD14: Advanced Features of ASP.NET (420 MB)
Code:

http://mega.1280.com/folder/QQFNQ4/

CD15: Programming Web Services in .Net (340.9 MB)
Code:

http://mega.1280.com/folder/VX548Q/

CD16: Deverloping Web Services with Java (143.7 MB)
Code:

http://mega.1280.com/folder/ZMIUX6/

CD17: Integrating XML with Java (302.2 MB)
Code:

http://mega.1280.com/folder/ZWT9FC/

CD19: Deverloping Enterprise Applications with EJB (565.6 MB)
Code:

http://mega.1280.com/folder/I7VLPP/

 Cập nhật:


Các bạn down về, giải nén sẽ được 1 file .iso, sau đó dùng phần mềm tạo ổ ảo như Alcohol 120%, Virtual Drive, Ultra ISO hoặc Daemon Tools,..... để Mount ra ổ ảo hoặc bạn có thể dùng WinRar để giải nén trực tiếp ra cũng đc.

Thứ Năm, 27 tháng 5, 2010

Thiết Lập IP Tĩnh Cho Máy

Nếu bạn muốn tự mình đặt thông số cho máy chủ hay các máy con trong tiệm NET , thậm chí đơn giản là máy tính cá nhân của bạn , thì bạn có thể xem bài viết này để tham khảo . Việc thiết lập thông số IP tính cho máy sẽ giúp bạn nhận diện máy con Client nhanh chóng và chính xác, đồng thời khả năng chia sẻ File và giao tiếp với máy chủ hoặc các máy con khác rất nhanh chóng và tiện lợi . Việc đầu tiên bạn cần có giấy bút để ghi lại các thông số

Đầu tiên bạn clic chuột phải vô MY NETWORK PLACES , sau đó nhấn tiếp chuột phải vô LOCAL AREA CONNECTION và chọn Status

Bạn lấy giấy bút để ghi lại thông số của 3 Line sau
IPAddress
Subnet Mask
Default Getway

Sau đó bạn tắt giao diện trên đi , và tiếp tục clic chuột phải vô LOCAL AREA CONNECTION Chọn Properties. Chọn tiếp Internet Protocol(TCP/IP)

Bạn clic vô Use The Following IP Address

3 dòng đâu tiên là
IPAddress
Subnet Mask
Default Gateway
bạn điền thông số mà mình đã ghi ra giấy lúc vừa rồi

Còn ở dòng Use The Following DNS Server IP Addresses
- Preferred DNS Server bạn diền thông số giống như dòng Default Gateway
- Ở dòng Alternate DNS Server tùy từng mạng mà bạn có thông số phù hợp
Sau đây là thông số Alternate DNS Server của một số mạng
VIETTEL
203.113.131.1
203.113.131.2
203.113.188.1


FPT

210.245.24.22
210.245.24.20
210.245.14.4
210.245.0.58
210.245.0.14
210.245.0.131
210.245.0.10
210.245.31.130


VNN

203.162.0.181
203.162.0.11
203.162.4.1

Các mạng khác như NET NAM hay VDC các bạn có thể Search trên mạng để tìm kiếm
Sau khi thiết lập thông số IP tĩnh xong , bạn có thể kiểm tra xem có mạng không và tốc độ nhanh hay chậm của trang web mà mình truy cập bằng cách sau
Start chọn Run


Bạn kiểm tra Ping của trang web bằng cách đánh vô Run câu lệnh sau
Ping ( Tên Trang Web ) -t
Ví dụ tui muốn kiểm tra ping của trang chủ Yahoo thì câu lệnh sẽ là
Ping Yahoo.com -t và Enter

Có rất nhiều thông số sẽ hiện ra , nhưng để xem tốc độ nhanh chậm của vWebsite đó , bạn chỉ quan tâm đến thông số Time = ??Ms
Trong đó ?? sẽ là tốc độ Ping , độ nhanh hay chậm của trang đang chạy

Nếu Ping =1 hoặc Ping =2 thì mạng Cáp Quang rùi , dùng đã
Nếu Ping < 45 thì tốc độ chấp nhận được
Nếu Ping > 100 , bạn nên chuyển sang trang khác có tốc độ ưu việt hơn
Tốc độ này phụ thuốc vào 2 yếu tố là Gói cước mà bạn sử dụng và tốc độ đường truyền từ Host của cơ sở dữ liệu , nên khi xem phim hoặc chơi Game bị Lag , đừng đổ vội cho Nhà cung cấp Game nhé . Hãy nghĩ tới cấu hình và thuê bao của bạn đang dùng trước :yes:

Thứ Sáu, 21 tháng 5, 2010

Một số trang học tập hữu ích (Cập nhật thường xuyên)

Web Programming Tutorials: http://www.bigresource.com/tutorials/

Các đồ án môn Phân Tích Thiết Kế Hệ Thống

Tổng hợp các đồ án môn phân tích thiết kế hệ thống, hi vọng giúp các bạn nào chuẩn bị làm đồ án biết được mình sẽ làm cái gì và như thế nào ^^. Và nếu các bạn muốn thì các bạn cũng có thể dùng các dữ liệu trong này để làm đồ án Access, nếu cần giúp đỡ thì các bạn có thể liên hệ với mình.


Pass:HT02
Quản lý nhân khẩu
http://www.mediafire.com/?zomgzo4nzmz

Mua bán bảo hành máy tính
http://www.mediafire.com/?mcjvhtyc5nm

Quản lý ảnh KTS
http://www.mediafire.com/?jmm2oym5qnd

Quản lý cửa hành cho thuê băng đĩa
http://www.mediafire.com/?zmddyjtmmqm

Quản lý cửa hàng nước giải khát
http://www.mediafire.com/?nnmmzdvonl3

Quản lý cửa hàng thuốc
http://www.mediafire.com/?rnyn2mj3gyg

Quản lý cửa hàng hoa
http://www.mediafire.com/?tifffoyyjmm

Quản lý hoạt động ăn uống tại nhà hàng
http://www.mediafire.com/?jemnozk2lmj

Quản lý hoạt động du lịch
http://www.mediafire.com/?mcolqnqntne

Quản lý khách sạn
http://www.mediafire.com/?12yehyowyzn

Quản lý khách sạn
http://www.mediafire.com/?wyomjzdqjrt

Quản lý kinh doanh
http://www.mediafire.com/?5yymlwaomji

Quản lý mua bán máy tính
http://www.mediafire.com/?wyzayzaciuz

Quản lý ngân hàng
http://www.mediafire.com/?5mym40qn5mj

Quản lý thư viện
http://www.mediafire.com/?kjjzimtkiqh

Thứ Bảy, 15 tháng 5, 2010

Bắt đầu thiết kế website bằng ASP.Net với bộ ASP.Net Starter Kit của Microsoft


Giới thiệu bộ Starter Kit kèm mã nguồn:
Bắt đầu thiết kế Website với ASP.Net, chắc chắn các bạn sẽ thấy khó khăn không biết phải bắt đầu như thế nào. Microsoft đã cho chúng ta một bộ công cụ để phát triển các website bằng ASP.Net hết sức dễ dàng, đầy đủ và hoàn toàn miễn phí gọi là ASP.Net Starter Kit.
Với bộ công cụ này, các bạn có thể học ASP.Net, biết cách thiết kế và xây dựng một website, biết cách xây dựng ứng dụng theo hướng đa lớp. Các bạn có thể dựa vào nó để phát triển thành những website hoàn chỉnh, chuyên nghiệp.

Dưới đây mình xin giới thiệu một vài website trong bộ Kit này kèm theo đầy đủ mã nguồn, các bạn có thể download về tham khảo và sử dụng.
  • Personal Site Starter Kit


Một site cá nhân điển hình. Nó có bao gồm cả một album ảnh và hệ thống thành viên.
Demo: http://starterkits.asp.net/PersonalWebsite/
Đăng nhập bằng các tài khoản:
Username: Admin ; Password: 1.admin.1
Username: Friend ; Password: 1.friend.1
Download File Setup: http://www.mediafire.com/?mjjzyljzjel
  • Club Site Starter Kit
Bắt đầu cho việc tạo một trang web cho câu lạc bộ hay tổ chức của bạn. Bao gồm một trang tin, lịch, danh sách thành viên, và album ảnh.
Tạo tin tức và thông báo bằng hình ảnh hoặc liên kết đến một album ảnh. Tạo và xem danh sách thành viên. Tạo album ảnh và chia sẻ hình ảnh của bạn từ hoạt động của câu lạc bộ.
Hãy xem trang demo hết sức chuyên nghiệp: http://starterkits.asp.net/Club/
Thông tin đăng nhập: Username: Admin ; Password: 1.admin.1
Link download file Setup: http://www.mediafire.com/?t2dn4qj0g0g
  • Classifield Website Starter Kit
Cho phép tạo và quản lý một website quảng cáo, bạn có thể dễ dàng tạo các album, giới thiệu đơn giản, quản lý giao diện website. Thiết kế theo mô hình 3 lớp, website sẽ giúp bạn học hỏi một phương pháp lập trình chuyên nghiệp ngay từ đầu.
Trong bộ Starter Kit còn nhiều loại hình website nữa, mình sẽ giới thiệu tiếp trong các bài sau. Ngoài ra các bạn có thể vào ngay trang http://www.asp.net/community/projects/. Ở đây có giới thiệu đầy đủ và hoàn chỉnh toàn bộ bộ Starter Kit này, có cả hướng dẫn sử dụng và diễn đàn để trao đổi.
Chúc bạn thành công trong việc nghiên cứu và phát triển các website và ứng dụng trên ASP.Net.

Ứng dụng tin tức đơn giản với ASP.NET - Three Tier

Bài viết sẽ hướng dẫn bạn các bước cơ bản trong quá trình phát triển một ứng dụng: từ bước phân tích yêu cầu, phân tích chức năng, thiết kế hệ thống và hiện thực. Tổng quan, loạt bài viết sẽ gồm các phần sau đây:




Giới thiệu ứng dụng tin tức, phân tích yêu cầu và chức năng
Phân tích và thiết kế ứng dụng theo mô hình 3 lớp logíc
Phát triển ứng dụng, phần quản lý
Phát triển ứng dụng, phần trình bày tin tức
Tổng kết và hướng phát triển


Giới thiệu ứng dụng tin tức, phân tích yêu cầu và chức năng.

Trong bài đầu tiên này, tôi sẽ trình bày những yêu cầu của ứng dụng tin tức mà chúng ta sẽ phát triển. Không cần định nghĩ gì nhiều, các bạn có thể ghé thăm các website như Tuổi Trẻ Online, VNExpss, ViệtNamNet để có thể hình dung một ứng dụng quản lý tin tức sẽ như thế nào. Khi các bạn xem qua các trang này, sẽ thấy có nhiều chuyên mục, mỗi chuyên mục sẽ có nhiều tin tức. Hệ thống quản lý tin tức sẽ giúp các biên tập viên, các quản trị viên của website có thể gửi những nội dung mới lên website một cách dễ dàng nhanh chóng, không cần phải có kiến thức về HTML hay Web design nhiều cũng có thể tạo được các trang web như vậy.

Như đã nói ngắn gọn ở trên, một ứng dụng quản lý tin tức sẽ cho phép người sử dụng(ở đây là các biên tập viên, quản trị viên của website) thực hiện các công việc sau:
- Dễ dàng tạo mới và chỉnh sửa các chuyên mục cần thiết
- Dễ dàng gửi một tin tức mới vào một chuyên mục nào đó: nhập nội dung, upload hình ảnh đi kèm…
- Lưu trữ/Phục hồi tin tức cũ
- Quản lý các thông tin phản hồi

Ngoài ra, hệ thống quản lý tin tức cũng phải cung cấp các chức năng sau đây cho người xem tin:
- Cho phép người dùng xem qua các tin mới nhất
- Cho phép người dùng xem các tin trong một chuyên mục nào đó
- Cho phép người dùng tìm kiếm một tin tức nào đó thỏa mãn một điều kiện nào đó, ví dụ như tìm các tin có từ “Cúm gà” và có ngày đăng từ tháng 2 năm 2005 trở lại đây…
- Gửi một tin nào đó cho bạn bè, hoặc in ra máy in để xem
- Gửi ý kiến/phản hồi của mình về nội dung một tin nào đó
- Ngoài ra còn một số chức năng nâng cao khác như cho phép người dùng định nghĩa những chuyên mục nào là yêu thích nhất để xem trên trang chủ… nhận email thông báo khi có tin mới đăng…

Ứng dụng quản lý của chúng ta đơn giản sẽ chỉ tập trung vào giải quyết một số chức năng cơ bản là:
- Quản lý các chuyên mục: cho phép tạo, sửa, xóa các chuyên mục
- Quản lý các tin tức trong chuyên mục: cho phép gửi tin mới, sửa tin cũ, hoặc xóa hẳn một hay nhiều tin nào đó
- Liệt kê các tin mới nhất cho người xem
- Liệt kệ danh sách các chuyên mục hiện có
- Liệt kê các tin trong một chuyên mục nào đó
- Trình bày thông tin chi tiết của một bản tin

Với các chức năng này, các bạn hình dung ứng dụng của chúng ta sẽ gồm 2 phần chức năng chính. Một phần dành cho các biên tập viên và quản trị viên quản lý các chuyên mục/tin tức và một phần dành cho người xem tin. Các bạn cũng đã hình dung được một ứng dụng tin tức thường có những chức năng cơ bản nào. Trong bài viết sau tôi sẽ trình bày cách phân tích và thiết kế ứng dụng của chúng ta dựa trên mô hình 3 lớp.

Mô hình 3 lớp (3layers)

Trong bài viết này không có tham vọng trình bày lại chi tiết mô hình thiết kế ứng dụng đa lớp/tầng là như thế nào. Chỉ tóm tắt ngắn gọn lại những điểm chính của mô hình 3 lớp, mà cụ thể là 3 lớp logic.

Lưu ý: Các bạn không nên nhầm lẫn khái niệm lớp(layer) trong phần này với khái niệm lớp(class) của các ngôn ngữ lập trình hướng đối tượng.

Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau. Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương, còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không cần biết. Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là gì? Là psentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.

Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển trên nền .NET như sau:



Bạn có thể tham khảo chi tiết các đề nghị thiết kế các thành phần trong lớp này như thế nào ở đây:
http://www.microsoft.com/Downloads/details.aspx?familyid=A08E4A09-7AE3-4942-B466-CC778A3BAB34&displaylang=en



psentation Layer

Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng. Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp. Trong .NET thì bạn có thể dùng Windows Forms, ASP.NET hay Mobile Forms để hiện thực lớp này.

Trong lớp này có 2 thành phần chính là User Interface Components và User Interface Process Components.
UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối. Trong ASP.NET thì những thành phần này có thể là các TextBox, các Button, DataGrid...

UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard...

Lưu ý : lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi bạn sử dụng trực tiếp như vậy, bạn có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có.

Business Logic Layer

Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp psentation. Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực tuyến như VeriSign, Paypal...).

Trong lớp này có các thành phần chính là Business Components, Business Entities và Service Interface.
Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp psentation sử dụng. Lớp psentation chỉ cần biết các dịch vụ thông qua giao diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào.

Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý. Trong ứng dụng chúng ta các đối tượng này là các chuyên mục(Category) và bản tin(News). Các business entities này cũng được dùng để trao đổi thông tin giữa lớp psentation và lớp Data Access.

Business Components là những thành phần chính thực hiện các dịch vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng.

Trong ứng dụng của chúng ta, lớp này sẽ chứa các thành phần là CategoryService và NewsService làm nhiệm vụ cung cấp các dịch vụ quản lý chuyên mục và các bản tin (thêm, xóa, sửa, xem chi tiết, lấy danh sách...).

Data Access Layer
Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,... để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents.

Data Access Logic components (DALC) là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu - Data Sources như RDMBS, XML, File systems.... Trong .NET Các DALC này thường được hiện thực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệu hoặc sử dụng các O/R Mapping Frameworks để thực hiện việc ánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL. Chúng ta sẽ tìm hiểu các thư viện O/R Mapping này trong một bài viết khác.

Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại.

Chúng ta đã tìm hiểu qua các lớp của mô hình 3 lớp. Lý thuyết hơi nhiều một chút có thể làm bạn khó hiểu vì khả năng trình bày có hạn, nên bây giờ thử tìm hiểu một qui trình cụ thể hơn để biết các lớp này giao tiếp với nhau như thế nào. Ví dụ trong ứng dụng của chúng ta có thao tác tạo một chuyên mục mới, thì các lớp sẽ ltương tác với nhau như sau:

Lớp psentation
- Trình bày một web form, có các text box cho phép người sử dụng nhập tên và mô tả cho chuyên mục
- Khi người dùng nhấn nút tạo trên form này, ứng dụng sẽ thực hiện việc tạo một Business Entity Category mới như đoạn code sau minh họa:
public void CreateNewCategory()
{
Category category = new Category();
category.Name = name.Text;
category.Description = description.Text;

// sử dụng dịch vụ do lớp Business cung cấp để tạo chuyên mục
CategoryService.CreateCategory(category);
}



Lớp Business Logic
Để cung cấp dịch vụ tạo một chuyên mục, thành phần CategoryService sẽ cung cấp hàm sau:
public static void CreateCategory(Category category)
{
// kiểm tra xem tên khóa của chuyên mục đã tồn tại chưa?
...
// kiểm tra tên khóa của chuyên mục có hợp lệ không?
...
// sử dụng DV của lớp Data Access để lưu chuyên mục mới này vào CSDL
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}



Lớp Data Access
Tương tự, để cung cấp dịch vụ lưu một chuyên mục mới vào CSDL, thành phần CategoryDAO sẽ cung cấp hàm sau (sử dụng ADO.NET để kết nối với CSDL):
public void CreateCategory(Category category)
{
// tạo connection
...
// tạo command, khởi tạo các tham số...
command.Parameters.Add(new SqlParameter("@KeyName", category.KeyName));
command.Parameters.Add(new SqlParameter("@Name", category.Name));
command.Parameters.Add(new SqlParameter("@Description", category.Description));
// lưu dữ liệu
command.ExecuteNonQuery();
}

Phân tích và thiết kế

Ứng dụng của chúng ta sẽ viết bằng ASP.NET 2.0 và SQL Server 2000/2005. Ngôn ngữ được dùng là C#.

Chúng ta đã tìm hiểu qua các thành phần chính trong mô hình 3 lớp, giờ đến lúc bắt tay vào thiết kế các thành phần đó cho ứng dụng tin tức của chúng ta. Trong ứng dụng tin tức mà chúng ta đã tìm hiểu yêu cầu qua bài viết trước, chúng ta thấy có hai đối tượng thông tin chính mà chúng ta cần quản lý là các chuyên mục(category) và tin tức(news). Ứng dụng quản lý của chúng ta sẽ thu thập những đối tượng dữ liệu này từ người dùng(phóng viên, biên tập viên) và trình bày lại cho người sử dụng khác xem(độc giả). Giờ chúng ta bắt tay vào thiết kế các thành phần Business Entities.

Business Entities

Ứng dụng của chúng ta sẽ bao gồm 2 entity chính là Category và News.



Trước hết là Category. Một chuyên mục (Category) sẽ gồm những thông tin sau:

CategoryId: Mã chuyên mục - sẽ được sinh tự động khi tạo mới
Name: Tên chuyên mục. VD: Vi tính, Kinh tế...
KeyName: Tên gợi nhớ dùng để phân biệt chuyên mục với nhau (không được trùng nhau). VD với VNExpss bạn sẽ thấy có Vi-tinh, Suc-khoe...
Description: Mô tả cho chuyên mục. VD: Description cho Vi-tinh là: thông tin mới nhất về công nghệ thông tin của Việt Nam và thế giới...
Picture: Hình ảnh đại diện cho chuyên mục

Trong ứng dụng đơn giản này, chúng ta chỉ thiết kế chuyên mục có một cấp, không có các chuyên mục con, cháu... Và ứng dụng này cũng không có phần quản lý các nhà biên tập viên, nhà báo và cơ chế cấp quyền hạn duyệt bài, gửi bài...Tôi dành phần này cho các bạn phát triển thêm, nhưng tôi cũng sẽ gợi ý cho các bạn cách thiết kế trong phần mở rộng ứng dụng.

Tiếp theo là News. Mỗi một bản tin sẽ có các thông tin sau:

NewsId: mã bản tin. Sẽ được sinh tự động khi tạo mới.
Title: tiêu đề chính của bản tin. VD: Microsoft tuyên bố phá sản!
Subtitle: tiêu đề phụ của bản tin. VD: Bill Gates từ chức!
Excerpt: phần giới thiệu ngắn gọn của bản tin
Authors: danh sách tác giả bản tin. VD: Nguyễn Văn A, Hoàng Thị B
Keywords: danh sách từ khóa chính trong bản tin dùng để tìm kiếm. VD: Microsoft, broken
Body: Đây là phần nội dung chính của bản tin.
Picture: Hình ảnh minh họa cho bản tin.
CreationTime: Ngày giờ tạo bản tin
LastModificationTime: Ngày giờ chỉnh sửa cuối cùng của bản tin
PublishedTime: Ngày giờ bản tin được đăng
TotalViews: Tổng số lượt người xem bản tin
TotalRates: Tổng số lượt người đánh giá bản tin
Rate: Điểm đánh giá trung bình của bản tin
Status: Trạng thái hiện tại của bản tin. Có thể là Writting(Đang viết), Approving(Đang chờ duyệt), Published(Đã được đăng)

Business Service Components

Bước tiếp theo chúng ta sẽ phân tích và thiết kế các Business Service Components. Các thành phần này sẽ làm nhiệm vụ chính cung cấp các dịch vụ cho lớp psentation dùng để lấy và lưu trữ thông tin.



Lớp CategoryService
Chúng ta cần những thao tách chính trên đối tượng dữ liệu Category:
Tạo mới - CreateCategory(Category category)
Cập nhật - UpdateCategory(Category category)
Xóa - DeleteCategory(int categoryId)
Lấy thông tin chi tiết - GetCategory(int categoryId)
Lấy danh sách các category - GetCategories()
Kiểm tra một Key xem có trong database chưa - CheckKey(string keyName). Thao tác này dùng để kiểm tra xem khi tạo mới một category thì KeyName đã tồn tại trong hệ thống chưa. Thao tác này có thể dùng trên lớp psentation để kiểm tra và thông báo lỗi cho người dùng khi họ nhập một tên khóa đã có trong hệ thống

Lưu ý:
Chúng ta sẽ thực hiện các business logic của hệ thống trong lớp này.



Tương tự đối với lớp NewsService, dựa trên những gì yêu cầu chúng ta phân tích ở bài viết đầu tiên, chúng ta cần những thao tác chính sau đây trên đối tượng News:
Tạo mới - CreateNews(News news)
Cập nhật - UpdateNews(News news)
Xóa - DeleteNews(int newsId)
Lấy thông tin chi tiết - GetNews(int newsId)
Lấy danh sách các bản tin thuộc một chuyên mục nào đó, sắp xếp theo tin mới nhất - GetNewsOfCategory(int categoryId, int page, int pageSize, out int totalRecords)
Cập nhật số lần xem của một bản tin - UpdateTotalViews(int newsId)
Cập nhật đánh giá cho một bản tin - UpdateRate(int newsId, int rate)
Tìm bài viết dựa trên từ khóa - SearchNews(string keyWords, int page, int pageSize, out int totalRecords)

Trong các hàm trên, các bạn chú ý đến hàm GetNewsOfCategory. Trong hàm này có các tham số dùng để phân trang các bản tin. Chúng ta cần đến chức năng này vì khi trình bày trên trang tin, chúng ta chỉ trình bày một số lượng có hạn các bản tin của một chuyên mục nào đó chứ không thể trình bày tất cả trên màn hình được. Khi người dùng muốn xem thêm, họ có thể chọn trang tiếp theo hoặc nhấp vào link Xem tiếp, lúc đó ứng dụng sẽ trình bày các bản tin ở các trang tiếp theo. Tham số totalRecords cho chúng ta biết được tổng số bản tin thật sự có trong chuyên mục đó.

Lưu ý: Khi phân tích thiết kế ban đầu bạn không thể nào hình dung được hết các yêu cầu phát sinh để thiết kế trước các thao tác cần thiết. Bạn phải cập nhật bản thiết kế thường xuyên để phù hợp với yêu cầu. Bản thiết kế này vẫn còn thiếu một số chức năng cần thiết mà tôi sẽ trình bày cho các bạn trong bài viết tiếp theo, chúng ta sẽ chỉnh sửa bản thiết kế này trong quá trình phát triển ứng dụng để phù hợp với các yêu cầu phát sinh mà chúng ta chưa nhìn thấy hết khi thiết kế.

Data Access Components

Bây giờ chúng ta sẽ thiết kế các lớp dùng để truy xuất và cập nhật dữ liệu. Các hàm của các lớp DAO cũng khá đơn giản, chỉ làm nhiệm vụ cập nhật dữ liệu vào database và truy xuất dữ liệu từ database. Các bạn cũng thấy chức năng nó giống như trên lớp Business Logic, nhưng ở đây chúng ta không có bất kỳ ràng buộc logic gì, chỉ đơn giản thực hiện việc truy xuất dữ liệu mà thôi. Các business logic đã được kiểm tra trên lớp Business Logic.



Chúng ta tách biệt 2 lớp CategoryDAO (DAO - Data Access Object) và NewsDAO để dễ quản lý và thay đổi khi cần thiết. VD nếu bạn muốn thêm một thao tác truy xuất dữ liệu mới trên đối tượng News, bạn sẽ biết ngay mình phải thay đổi lớp NewsDAO. Nhưng có những thao tác bạn phải cân nhắc nên để nó lớp nào vì nó liên quan đến nhiều đối tượng, lúc đó bạn phải xét xem mục đích chính của thao tác đó là gì, thao tác trên đối tượng dữ liệu chính nào để đưa thao tác đó vào lớp phù hợp.

Thiết kế cơ sở dữ liệu

Do ứng dụng của chúng ta đơn giản nên chỉ có 2 bảng dữ liệu ánh xạ gần như 1-1 với các entities trên lớp Business Logic như sau:


Hiện thực lớp Business Logic & Data Access
Sau khi đã xong bước thiết kế, chúng ta sẽ tiến hành hiện thực 2 lớp Business và Data Access. Các bạn có thể xem source code đính kèm để biết chi tiết cách hiện thực 2 lớp này như thế nào. Lớp psentation sẽ được thiết kế và hiện thực trong bài viết tiếp theo. Phần bên dưới tôi sẽ trình bày một số điểm chính trong cách hiện thực.

Hiện thực Data Access Components

Do ứng dụng của chúng ta đơn giản nên được giới hạn sẽ dùng với CSDL SQL Server 2000/2005 nên lớp này không được thiết kế để chạy cùng lúc với nhiều loại database khác nhau. Chúng ta sẽ dùng cái Stored Procedures để truy xuất dữ liệu an toàn và dễ thay đổi hơn, tránh bị các lỗi như SQL Injection(không thể tránh hoàn toàn nếu bạn không hiện thực đúng). Các bạn có thể xem qua một cách hiện thực một hàm cơ bản như thế nào:
public void CreateCategory(Category category)
{
using (SqlConnection connection = GetConnection())
{
SqlCommand command = new SqlCommand("spCategoriesCreate", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@KeyName", category.KeyName));
command.Parameters.Add(new SqlParameter("@Name", category.Name));
command.Parameters.Add(new SqlParameter("@Description", category.Description));
command.Parameters.Add(new SqlParameter("@Picture", category.Picture));
SqlParameter paramCategoryId = new SqlParameter("@CategoryId", SqlDbType.Int, 4);
paramCategoryId.Direction = ParameterDirection.Output;
command.Parameters.Add(paramCategoryId);
connection.Open();
command.ExecuteNonQuery();
if (paramCategoryId.Value != DBNull.Value)
category.CategoryId = (int)paramCategoryId.Value;
else
throw new DataAccessException(String.Format(Resources.Strings.CreateEntityException, "Category"));
}
}
Stored Procedure spCategoriesCreate đơn giản được viết như sau:
CREATE PROCEDURE dbo.spCategoriesCreate
@Name nvarchar(50),
@KeyName varchar(30),
@Description ntext,
@Picture varchar(256),
@CategoryId int output
AS
INSERT INTO Categories
(
Name,
KeyName,
Description,
Picture
)
VALUES
(
@Name,
@KeyName,
@Description,
@Picture
)

SELECT @CategoryId = SCOPE_IDENTITY()
Hiện thực lớp Business Logic

Hiện thực lớp Business Logic đòi hỏi bạn phải nắm rõ các business logic của ứng dụng. Ví dụ đối với ứng dụng tin tức của chúng ta thì khi tạo một chuyên mục mới, bạn phải kiểm tra xem KeyName của chuyên mục đó đã có trong hệ thống chưa? Nếu có rồi thì phải báo lỗi, và nếu chưa có thì chúng ta kiểm tra KeyName đó có hợp lệ hay không? (Chỉ chứa kí tự alphabet, chữ số, gạch dưới và gạch ngang...).
public static void CreateCategory(Category category)
{
// Has this key name existed?
if (!CheckKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.KeyNameExisted, category.KeyName));
// is this key name valid?
if (!ValidateKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.InvalidKeyName, category.KeyName));
// ok , now save it to database
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}



Bài viết sưu tầm

So sánh PHP và ASP.net !

Để so sánh PHP với ASP.NET ở trên diện rộng hơn chúng ta nên so sánh giải pháp LAMP (Linux + Apache + MySQL + PHP hay Python) với ASP.Net + SQL Server (hay Oracle)
Dĩ nhiên mọi so sánh đều không thể toàn diện và từng giải pháp đều có những "nơi" mà giảp pháp kia không thể bằng được. Dưới đây là những so sánh có tính tổng quát nhất.
 
1. Thị Phần
Theo thống kê mới nhất, hiện nay PHP chiếm 36.1%, ASP.Net chiếm 54.4%, tuy nhiên tốc độ tăng trưởng của PHP nhanh hơn đáng kể so với ASP.Net (các giải pháp web trên Java đang bị sụt giảm thị phần). Các bạn có thể xem ở bài viết này:
Điều này phản ánh xu thế chuyển sang các nền tảng mã nguồn mở với hai mục đích:
+ Giảm giá thành phát triển.
+ Không phụ thuộc vào các "tay chơi" lớn như Microsoft hay Sun.
 
2. Kỹ Thuật
Theo đánh giá chung, các giải pháp của Microsoft rất tốt ở cấp Enterprise (cái này thì chỉ có J2EE sánh được). Xin đừng nhầm lẫn giữa khái niệm Enterprise với website có nhiều người truy cập, ở đây nói về độ phức tạp của các dịch vụ, độ tin cậy, tính khả chuyển… những tiêu chuẩn mà chỉ khi thiết kế các ứng dụng phục vụ cho các tập đoàn lớn thì chúng ta mới đụng tới. Tuy nhiên đi kèm với nó cũng là sự phức tạp và tốn kém tài nguyên.
PHP rất thích hợp hơn cho những nhóm phát triển nhỏ, cho cách phát triển kiểu agile, nghĩa là có thời gian phát triển và đưa vào sử dụng nhanh. Nhưng điều này không có nghĩa là PHP dành cho những website có ít người sử dụng, rất nhiều website có hàng triệu người sử dụng hàng ngày làm trên PHP.
 
3. Ngôn ngữ lập trình, nhân lực phát triển
ASP.Net, nói chính xác hơn là C# hay VB.Net, là ngôn ngữ lập trình hướng đối tuợng được thiết kế tốt, thừa hưởng rất nhiều thế mạnh của Java. ASP.Net cũng có bộ công cụ phát triển hạng nhất: Visual Studio.Net. Nhưng giá phải trả là tài nguyên và thời gian học. Để tạo một trang web đơn giản bằng ASP.Net khá dễ, nhưng để hiều sâu sắc cho những vần đề phức tạp hơn lại là cả một quá trình.
PHP là một ngôn ngữ được sinh ra với mục đích duy nhất là để dùng lập trình Web: giản dị và dễ hiểu. Mãi đến PHP 5, lập trình hướng đối tượng mới được đưa vào tương đối đầy đủ. Công cụ phát triển (IDE) cho PHP không có cái nào sánh được VS nhưng hiện nay nếu dùng Eclipse plug-in cũng có thể nói đạt 8/10 (theo sở thích riêng thì tôi ưa dùng Eclipse hơn VS).
Một vấn đề nữa là PHP thường nhúng mã logic chương trình vào trang web (embedded scripts) còn ASP.Net tách rời phần hiển thị và logic rất rõ ràng (chúng ta nói tới kiến trúc MVC: Modal –View - Controller). Thực tế, bạn hoàn toàn có thể thực hiện được MVC trong PHP (nhất là PHP 5) nếu thiết kế đúng bài bản hay dùng các framework như Smarty, PHPCake…
Vấn đề nhân lực, vì các LTV ASP.Net thích hợp cho các nhóm phát triển lớn nên khó tìm ra nhân lực cho các dự án nhỏ (đấy là trên thế giới, ở VN thì có thể là ngược lại!!!).
 
4. Chi Phí
Rõ ràng là phát triển bằng ASP.Net tốn kém hơn nhiều so với PHP. Bạn phải trả cho SQL Server, Windows Server, Visual Studio, MSDN và hỗ trợ kỹ thuật cao hơn nhiều so với LAMP là của cộng đồng mã nguồn mở. Dù rằng ở VN chúng ta thường dùng phần mềm “chùa” nhưng nếu tạo một ứng dụng thương mại nghiêm túc thì chi phí bản quyền trả cho M$ là rất lớn.
Ngược lai, chi phí sở hữu tổng cộng (Total ownership cost) của LAMP lại có thể cao hơn nhất là khi bạn quản trị nhiều server Linux lớn do thiếu các chuyên gia giỏi về Linux. Đây là vấn đề gây tranh cãi, trong khi Microsoft khẳng định chi phí cho Windows rẻ hơn thì một số nghiên cứu lại cho kết quả ngược lại, ví dụ bản báo cáo nàyhttp://www-1.ibm.com/linux/RFG-LinuxTCO-vFINAL-Jul2002.pdf !
 
4. Tốc độ
Có khá nhiều tranh cãi về tốc độ của LAMP hay của ASP.Net + SQL Server cao hơn. Cái này còn tùy vào cấu hình, đặc thù của ứng dụng. Nhìn chung về mặt web server, Linux “có tiếng” hơn Windows Server về tốc độ (Google, Yahoo đều dùng Linux server cho các dịch vụ của mình và tôi không dám phàn nàn gì về tốc độ cả!). Theo một số người, PHP script nhanh hơn ASP.Net script (như C#, VB.Net) trong các tác vụ thông thường và tốn ít bộ nhớ hơn, tuy nhiên điều này cũng còn nhiều tranh cãi!.
Về database server, MySQL có tốc độ rất tốt (đặc biệt là kiểu MyISAM) nhưng thiếu một số tính năng cao cấp như stored procedure, trigger (phiên bản MySQL 5 có hỗ trợ các tính năng này nhưng còn yếu và có bug). Bài viết này sẽ giúp bạn có so sánh nhiều mặt hơn giữa MySQL và SQL Server: "MySQL or SQL Server: Look beyond politics and hype when deciding which to use". Tất nhiên, PHP cũng có thể dùng với nhiều database khác, còn ASP.Net dùng với Oracle thì không có gì phải bàn về tốc độ cả.
Ý kiến riêng của tôi là bạn không cần phải băn khoăn gì về tốc độ của PHP + MySQL cho bất kỳ website nào dù lớn hay nhỏ. Vấn đề chi là thiết kế ứng dụng hiệu quả và tìm được dịch vụ hosting tốt. Điều này cũng đúng cả với ASP.Net.
 
5. Bảo mật và Virus
Khỏi cần phải nói, Linux luôn có tiếng tốt về bảo mật và cũng ít bị các loại virus nhắm vào. Nhưng để cho trang web của bạn thực sự bảo mật thì lại là vấn đề thiết kế và lập trình, cả PHP và ASP.Net đều có những lỗ hổng có thể khai thác.
 
6. Cộng đồng phát triển và mã nguồn
Nói chung bạn có thể nhận đựơc nhiều mã nguồn và sự giúp đỡ từ cộng đồng mã nguồn mở như PHP miễn là bạn có kỹ năng “Search” tốt. Ngược lại MSDN đựơc đầu tư công phu và rất hữu ích giúp cho việc tìm kiếm nhanh chóng hơn. Một vài website như Codeproject.com cũng có rất nhiều mã nguồn ASP.Net giá trị.
 
TÓM LẠI
Chúng ta thường bị “nói quá” về ngôn ngữ này hay ngôn ngữ kia tốt hơn, thực tế là cái nào tốt hơn hoàn toàn phụ thuộc vào kỹ năng của người lập trình và quản lý hệ thống. Trong khi phần lớn các website lớn của Việt Nam chọn ASP.Net thì PHP và Java lại

Giáo trình SQL Server 2008 Bookmark and Share



GiỚI THIỆU GIÁO TRÌNH SQL SERVER 2008

Giáo trình này giới thiệu về SQL Server, một hệ quản trị cơ sở dữ liệu của Microsoft. Bộ giáo trình được biên soạn dựa trên những tài liệu mới nhất về SQL Server 2008 với mục đích cung cấp kiến thức cơ bản cũng như các kiến thức cập nhật về công nghệ quản trị cơ sở dữ liệu của Microsoft.

Mục đích của giáo trình là:
  1. Cung cấp cho sinh viên các kiến thức cơ bản về quản trị cơ sở dữ liệu SQL Server.
  2. Giới thiệu môi trường phát triển ứng dụng với cơ sở dữ liệu SQL Server
  3. Cập nhật các tính năng mới, các đặc điểm nổi trội của SQL Server 2008

Giáo trình có thể dùng làm tài liệu tham khảo cho sinh viên các ngành Công nghệ thông tin, điện tử, viễn thông và tất cả những ai muốn tìm hiểu về SQL Server.
ĐỀ CƯƠNG GIÁO TRÌNH SQL SERVER 2008
Chương 1: Tổng quan về SQL Server
Session 1: Overview of SQL Server
1.1 Introduction to SQL Server Database
1.2 Relational Data Model
1.3 Data Access Architecture
1.4 SQL Server Services & Tools
1.5 Transact - SQL Language
1.6 CLR integration in SQL Server
1.7 Evolution of SQL Server
Exercise 1
Video Training
Chương 2: Bộ công cụ Management Studio
Session 2: Management Studio
2.1 Integrated Management Environment
2.2 Navigation
2.3 Administering Databases
2.4 Maintaining Databases
2.5 Writing and Excuting Transact - SQL with Query Editor
2.6 Working with Templates, Solutions, Script Projects, and Source Controls
Labs 2
Exercise 2
Video Training
Chương 3: Thao tác dữ liệu với T-SQL
Session 3: T-SQL for Data Manipulation
3.1 Data Manipulation Language
3.2 Selecting Records from Existing Table
3.3 Subqueries, Joins, Operations on Collection
3.4 Inserting Data into a Table
3.5 Updating Data in Table
3.6 Deleting Data from Table
3.7 Top-k queries
3.8 Full-text Search
Labs 3
Exercise 3
Video Training
Chương 4: Định nghĩa dữ liệu với T-SQL
Session 4: T-SQL for Data Definition
4.1 Data Definition Language
4.2 Managing Databases
4.3 Data Types
4.4 Managing Tables
4.5 Managing other SQL Server Database Objects
Lab 4
Exercise 4
Video Training
Chương 5: Bảo mật cơ sở dữ liệu SQL Server
Session 5: Securing Database and T-SQL for Data Control
5.1 Understanding SQL Server Security Model
5.2 Managing Logins, users, roles
5.3 Managing Permissions
5.4 Data Control Language and Security Issues
5.5 Implementing Security through Database Objects
5.6 Other Security Options
Lab 5
Exercise 5
Video Training
Chương 6: Thủ tục lưu trữ trong và hàm người dùng
Session 6: Stored Procedures and User-Defined Functions
6.1 Understanding the concepts of batch and batch processing
6.2 Control Statements
6.3 Defining and Assigning Variables
6.4 Implementing Stored Procedures
6.5 Implementing User-Defined Functions
6.6 Difference between Stored Procedures and User-Defined Funtions
Lab 6
Exercise 6
Video Training
Chương7: Triggers
Session 7: Implementing Triggers
7.1 Introduction to Triggers
7.2 Creating, Altering, and Dropping Triggers
7.3 Working with Triggers
7.4 Users of Trigger
7.5 Performance Consideration
Lab 7
Exercise 7
Video Training
Chương 8: Lập trình SQL Server với .Net
Session 8: Programming SQL Server with .Net
8.1 .Net Framework
8.2 ADO.NET
8.3 CLR Integration
8.4 Enabling CLR Integration
8.5 CLR Integration: Pros & Cons
Lab 8
Exercise 8
Video Training
Chương 9: Ràng buộc toàn vẹn
Session 9: Implementing Data Integrity
9.1 Types of Data Integrity
9.2 Enforcing Data Integrity
9.3 Defining Data Integrity
9.4 Types of Constraints
9.5 Disability Constraints
9.6 Using Defaults and Rules
9.7 Deciding Enforcement Method to Use
Lab 9
Exercise 9
Video Training
Chương 10: Quản lí giao dịch và khóa
Session 10: Managing Transactions and Locks
10.1 Transaction
10.2 Review of Transaction Log in SQL Server
10.3 Managing Transactions
10.4 Managing Locks
10.5 Understanding SQL Server Locking Architecture
Lab 10
Exercise 10
Video Training
Chương 11: Định nghĩa và tạo chỉ mục
Session 11: Planning and Creating Index
11.1 Introduction to Indexes
11.2 Understanding Index Architecture
11.3 Retrieving Stored Data with SQL Server
11.4 Defining Indexes
11.5 Creating Indexes
11.6 Maintaining Index
Lab 11
Exercise 11
Video Training
Chương 12: Tối ưu hóa truy vấn
Session 12: Optimizing Query Performance
12.1 Introduction to the Query Optimizer
12.2 Tuning Performance Using SQL Ultilities
12.3 Using an Index to Cover a Query
12.4 Using View to Optimize Performance
12.5 Overriding the Query Optimizer
12.6 Understanding Indexing Strategies and Guidelines
Lab 12
Exercise 12
Video Training
Chương 13: Phiên bản SQL Server 64 bit
Session 13: SQL Server 64 bit
13.1 Overview of database performance and scalability
13.2 SQL Server 2005 Components
13.3 Advantages of 64 bit environment
13.4 Consideration for Choosing SQL Server 64 bit
13.5 Deployment consideration
Video Training
Chương 14: Các dịch vụ dữ liệu
Session 14: Data Platform Vision
14.1 Overview of Microsoft Data Platform Vision
14.2 Integration Services
14.3 Data Analysis Services
14.4 Reporting Services
Lab 14
Exercise 14
Video Training
Chương 15: Những đặc điểm mới của SQL Server 2008
Session 15: New features in SQL Server 2008
15.1 Policy - Based management
15.2 optimized and Predictable System Performance
15.3 Dynamic Development
15.4 Beyond Relational Database
15.5 Pervasive Business Insight
Lab 15
Exercise 15
Video Training
Download (480MB - contact: thodx@hnue.edu.vn)


Code:
http://cs.fit.hnue.edu.vn/upload/thodx6/support/SQLServer2008.part1.rar
http://cs.fit.hnue.edu.vn/upload/thodx6/support/SQLServer2008.part2.rar
http://cs.fit.hnue.edu.vn/upload/thodx6/support/SQLServer2008.part3.rar
http://cs.fit.hnue.edu.vn/upload/thodx6/support/SQLServer2008.part4.rar

Password: thodx@hnue.edu.vn

Thank Mr. Lê Thanh Hải & Mr. Huỳnh Công Nghĩa

Thứ Sáu, 14 tháng 5, 2010

Pro ASP.NET MVC Framework


Steven Sanderson has seen the ASP.NET MVC framework mature from the start, so his experience, combined with comprehensive coverage of all the new features, including those in the official MVC development toolkit, offers the clearest understanding of how this exciting new framework could improve your coding efficiency—and you’ll gain invaluable up–to–date awareness of security, deployment, and interoperability challenges.

The ASP.NET MVC Framework is the latest evolution of Microsoft’s ASP.NET web platform. It introduces a radically new high–productivity programming model that promotes cleaner code architecture, test–driven development, and powerful extensibility, combined with all the benefits of ASP.NET 3.5.
An integral benefit of this book is that the core Model–View–Controller architectural concepts are not simply explained or discussed in isolation, but demonstrated in action. You’ll work through an extended tutorial to create a working e–commerce web application that combines ASP.NET MVC with the latest C# 3.0 language features and unit–testing best practices. By gaining this invaluable, practical experience, you can discover MVCs strengths and weaknesses for yourself—and put your best learned theory into practice.

What you’ll learn

  • Gain a solid architectural background to ASP.NET MVC, including Model–View–Controller and REST concepts.
  • Explore the ASP.NET MVC framework with detailed coverage of all aspects of the framework and the official MVC development toolkit.
  • See how it works with test–driven development in action.
  • Capitalize on your existing knowledge quickly and easily through translation and comparison of features in classic ASP.NET to those in ASP.NET MVC.
  • Learn about the latest security and deployment issues, including IIS 7.0.

Who is this book for?

This book is for web developers with a basic knowledge of ASP.NET and C# who want, or need, to start using the new ASP.NET MVC framework.

About the Apress Pro Series

The Apress Pro series books are practical, professional tutorials to keep you on and moving up the professional ladder.
You have gotten the job, now you need to hone your skills in these tough competitive times. The Apress Pro series expands your skills and expertise in exactly the areas you need. Master the content of a Pro book, and you will always be able to get the job done in a professional development project. Written by experts in their field, Pro series books from Apress give you the hard–won solutions to problems you will face in your professional programming career.

Download: http://www.mediafire.com/?znlzhdnzw0m

SilverLight Essential Training

Hình ảnh

Mike Harsh là người quản lý Silverlight Team của Microsoft. Trong Silverlight Essential Training, ông đã mang đến cho người xem cái nhìn mới về ứng dụng này mạnh mẽ này. Mike hướng dẫn từng bước trong quá trình xây dựng các ứng dụng web tương tác sử dụng Silverlight, bao gồm làm thế nào để thêm video, hình ảnh động, và các tính năng như tương tác và chức năng kéo thả.
ISBN: 1-59671-397-6
UPC: 6-70557-02655-8
SKU: 02655
Duration: 4.5 hours
On 1 CD
Sau khi nhấn link download, các bạn nhấn chữ FREE rồi download file về
http://shareflare.net/download/06771.06 ... 1.rar.html
http://shareflare.net/download/39546.39 ... 2.rar.html
http://shareflare.net/download/36764.36 ... 3.rar.html

Tổng hợp tài liệu ASP.NET

Các giải pháp lập trình ASP.NET 2.0 tập 1 - Nguyễn Ngọc Bình Phương
http://www.mediafire.com/?gm2mn2nthy4
Password: thuvienso.info

Thứ Tư, 12 tháng 5, 2010

Tập hợp 1 số thứ về Ajax Framework của Microsoft

Thư viện ASP.Net Ajax 1.0 (tên mã "Atlas")
Lập trình Ajax, tên viết tắt của "Asynchronous JavaScript and XML"

AJAX Control Toolkit ra phiên bản mới 3.0.30512

Với những lập trình viên theo nền tảng công nghệ Microsoft .NET thì Ajax Control toolkit là bộ công cụ không thể thiếu. Bộ công cụ vừa được nâng cấp với hàng loạt công cụ mới.
ASP.NET Ajax Controls ToolKitASP.NET AJAX Control Toolkit là gì?
ASP.NET AJAX Control Toolkit là một dự án mã nguồn mở được xây dựng trên nền tảng Microsoft ASP.NET AJAX framework, đây là nỗ lực lớn giữa Microsoft và cộng đồng sử dụng ASP.NET Ajax để cung cấp một nền tảng vững mạnh với khả năng chỉnh sửa, sử dụng lại, mở rộng cao. Với hàng loạt những công cụ và cũng như một loạt những công cụ cho phép dùng từ cửa sổ công cụ trong Viusal Studio, AACT cho phép tạo ra sự tương tác mạnh mẽ trong môi trường web.

AJAX Control Toolkit chứa hơn 30 điều khiển cho phép bạn tạo cho trang web của bạn tính tương tác mạnh mẽ và dễ dàng nhất.

Các điều khiển  mới
Lần nâng cấp này bao gồm 3 diều khiển quan trọng mới, đó là:


  • HTMLEditor HTMLEditor cho phép bạn tạo và hiệu chỉnh dễ dàng nội dung dưới dạng HTML. với ba chế độ đó là: thiết kế đồ họa, biên tập richtext, hoặc xem mã lệnh trực tiếp ngôn ngữ HTML. Công cụ này được xây dựng và đóng góp bởi Obout http://www.obout.com
  • ComboBox Điều khiển ComboBox cung cấp những mục thả với sự kết hợp thêm công cụ TextBox, điều này cho phép bạn có thể gõ dữ liệu trực tiếp vào combobox - điều mà công cụ trước đó không làm được. Công cụ này được xây dựng bởi thành viên Dan Ludwig .
  • ColorPicker Với những ai sử dụng đồ họa để cho website thêm tươi mát, thì ColorPicker Control Extender là điều khiển cho phép bạn thực hiện điều ấy. Với việc cung cấp khả năng gắn vào một TextBox cho trước. Người phát triển chỉ cần chỉ đúng công cụ cần tạo bộ chọn màu, khi ấy, công cụ chọn màu sẽ xuất hiện.. Công cụ được viết bởi Alexander Turlov.
Cùng với hơn mười hai lỗi quan trọng được vá, phiên bản này đã ngày càng trở nên "bảo bối" không thể thiếu cho những lập trình viên .NET
Tài liệu hướng dẫn

Để bắt đầu, bạn hãy cài đặt Ajax Control Toolkit, tải tại 
AJAX Control Toolkit Project Page trên cộng đồng CodePlex, hoặc ASP.NET. với đầy đủ Hướng dẫn,

Đây chắc hẳn là món quá lớn cho niềm mong đợi của cộng đồng .NET Việt Nam.
 
Anh Tuấn (Theo ASP.NET).

Thứ Ba, 11 tháng 5, 2010

Atlas: Ajax kiểu Microsoft

top.document.title = ‘TGVT – ‘+’Atlas: Ajax kiểu Microsoft’;

Công nghệ mới của Microsoft tích hợp thư viện script phía client với nền tảng phía server của ASP.NET 2.0, hứa hẹn cung cấp nền tảng phát triển toàn diện hơn và đơn giản hoá việc phát triển ứng dụng web kiểu Ajax.
Công nghệ mới của Microsoft tích hợp thư viện script phía client với nền tảng phát triển phía server của ASP.NET 2.0, cho phép phát triển ứng dụng web thế hệ mới theo kiểu Ajax.
Sau khi được Jesse James Garret “khai sinh” với bài viết nổi tiếng “Ajax: Giải pháp mới cho ứng dụng web” (“Ajax: A New Approach to Web Applications”, Adaptive Path, tháng 2/2005), Ajax trở nên nổi đình nổi đám trong thế giới web và ngày càng xuất hiện nhiều website “kiểu Ajax” như Google Maps, A9.com và Flickr. (Công nghệ Ajax cho phép tạo nên những ứng dụng web có giao diện phong phú và có thể truy xuất dữ liệu từ server để cập nhật một phần nội dung trang web hiện hành mà không phải nạp lại toàn bộ trang như ở các website truyền thống. Tham khảo bài “Kỹ thuật lập trình Ajax” – TGVT A 12/2005, tr.124)
Microsoft cũng có những ứng dụng web kiểu Ajax như MSN Virtual Earth (http://www.virtualearth.com) và Start.com. Thật ra, Microsoft đã tham gia cuộc chơi Ajax khá sớm. Tất cả các thành phần Ajax – DHTML, JScript và XMLHTTP đã có trong Internet Explorer 5 và Outlook Web Access đã dùng các kỹ thuật này từ năm 1998. Trước khi Ajax trở nên phổ biến, Microsoft đã sử dụng kỹ thuật Script Callbacks có phương thức làm việc tương tự Ajax (nhưng tính năng hạn chế hơn) trong quá trình phát triển ASP.NET 2.0.
Nắm bắt xu thế Ajax, tại PDC 2005 (Professional Developer Conference – hội thảo thường niên dành cho các nhà phát triển chuyên nghiệp) Microsoft đã công bố dự án Atlas đầy tham vọng, hứa hẹn cung cấp một nền tảng toàn diện hơn và đơn giản hoá việc phát triển ứng dụng web kiểu Ajax.
MỤC TIÊU

Mục tiêu đầu tiên của Atlas nhằm hỗ trợ phát triển phía máy khách (client), cung cấp các tính năng:
• Thư viện API hướng đối tượng bổ sung cho JavaScript.
• Tương thích trình duyệt tự động (hỗ trợ ứng dụng chạy với nhiều trình duyệt).
• Thư viện API và các thành phần hỗ trợ tính năng giao diện người dùng (UI) phong phú.
• Phát triển client kiểu khai báo (XML script) nhằm đơn giản hoá mã lệnh chương trình.
Mục tiêu thứ hai của Atlas nhằm kết hợp việc phát triển phía client với việc phát triển phía server. Thay vì chú trọng toàn bộ chương trình phía client hoặc phía server, Atlas cung cấp hỗ trợ cho cả hai, cho phép xử lý tác vụ ở nơi có ý nghĩa nhất. Phía máy chủ (server), ASP.NET có các tính năng sau phục vụ cho ứng dụng Atlas:
• Dịch vụ web có khả năng kết hợp với ứng dụng Atlas.
• Các điều khiển (web server control) sinh mã client cần thiết cho ứng dụng Atlas.

KIẾN TRÚC

Ở dạng đơn giản nhất, ứng dụng web sử dụng thư viện script của Atlas phía client gọi một dịch vụ hay ứng dụng trên máy chủ web. Nhưng với ứng dụng web phức tạp hơn, bạn sẽ phải cần đến thành phần phía server của Atlas. Không đơn thuần là thư viện Ajax bổ sung cho ASP.NET, Atlas được thiết kế để trở thành nền tảng phát triển hoàn chỉnh từ client, server đến truyền thông giữa client và server. Ngoài ra, Atlas còn cung cấp nền tảng ứng dụng – cho phép nhà phát triển “lắp ráp” các thành phần có sẵn để tạo ứng dụng.
Thành phần client

Ở phía client, Atlas cung cấp Client Script Framework có thể xem là mở rộng của JavaScript, hỗ trợ phát triển hướng đối tượng, tương thích đa trình duyệt, giao tiếp với dịch vụ web và các tính năng giao diện người dùng phong phú. Microsoft hứa hẹn Atlas Client Script Framework sẽ làm việc với tất cả trình duyệt và với web server bất kỳ. Nó không yêu cầu bất kỳ cài đặt nào phía client.
Thư viện script phía client của Atlas là tập các file JavaScript (.js), gồm các thành phần sau:
• Nhân (Script Core): bổ sung đặc tính hướng đối tượng cho JavaScript (như lớp, interface, kế thừa, xử lý sự kiện, kiểu dữ liệu…). Đây là có thể xem là .NET CLR thu nhỏ ở phía client.
• Thư viện lớp cơ bản (Base Class Library): cung cấp các lớp và cấu trúc cơ bản được dùng trong phát triển .NET Framework (như StringBuilder, Debug, Event…); cung cấp thư viện API xử lý mã client dạng khai báo (XML). Lớp này còn cung cấp hỗ trợ XMLHTTP với WebRequest và WebResponse, cho phép gọi WebMethod ở các file .asmx và .aspx hay dịch vụ web bất kỳ.
• Lớp mô hình thành phần và khung giao diện (Component Model và UI Framework): định nghĩa các thành phần, cơ chế liên kết các thành phần với nhau và các phương thức thực thi. Phần UI Framework xác định các kiểu thành phần giao diện cùng với hành vi (như kéo-thả).
• Các điều khiển và thành phần (Controls & Components): tập các thành phần xây dựng sẵn và các điều khiển dùng cho phát triển phía client như Timer (bộ định thời), Counter (bộ đếm), các điều khiển form thông thường, điều khiển gắn với dữ liệu (ListView) hay điều khiển bản đồ (dựa trên Virtual Earth).
• Lớp tương thích trình duyệt (Browser Compatibility): xử lý tương thích với các trình duyệt (hiện tại, Atlas có thể chạy trên IE, Safari và Firefox).
Thành phần server

Thành phần server của Atlas được xây dựng trên ASP.NET 2.0, cơ bản gồm các dịch vụ web ASP.NET và các điều khiển server. Các thành phần server này làm việc kết hợp với thư viện client của Atlas.
• Điều khiển server (Atlas Server Controls): thực hiện sinh mã client (mã lệnh JavaScript và mã khai báo XML) có những đặc tính Atlas. Các điều khiển server của Atlas tương tự như các điều khiển server của ASP.NET, có ích cho người có kinh nghiệm phát triển phía server. Ngoài các điều khiển thông thường như nút lệnh, ô text, ô chọn, liên kết… còn có những điều khiển Atlas đặc biệt để xử lý những hành vi ở client như rê và nhấn chuột… Tất cả những điều khiển này sẽ được tích hợp vào Visual Studio để cho phép làm việc ở màn hình thiết kế giống như các điều khiển server của ASP.NET.
• Cầu nối dịch vụ web (Web Services Bridge): cho phép mã client liên lạc (2 chiều: gửi và nhận dữ liệu) với dịch vụ web kiểu .asmx của ASP.NET (cũng như WebMethod được định nghĩa trên trang .aspx) và .svc của Indigo (công nghệ SOA mới nhất dự kiến ra mắt cùng với Windows Longhorn trong năm 2006) hay dịch vụ web bất kỳ.
• Cầu nối dịch vụ ứng dụng (Application Services Bridge): sử dụng Web Services Bridge để cung cấp những những dịch vụ ứng dụng ASP.NET như xác thực hay truy cập và cập nhật dữ liệu.
Thành phần client và server và mã khai báo

Mã khai báo là đặc tính thú vị của Atlas. Điều khiển server tạo ra mã khai báo và gửi đến client trong định dạng XML. Atlas Client Framework sẽ phân tích khai báo này để sinh mã lệnh (thể hiện và hành vi của trang) ngay tại trình duyệt (client) lúc thực thi. Phương thức này nhằm tránh việc tạo hàng đống mã lệnh JavaScript rồi nhúng vào trang trước khi gửi đi từ server. Bằng cách thực hiện việc này ở phía client, kích thước trang có thể giữ khá nhỏ và người phát triển không cần phải bận tâm đến những đặc trưng của từng trình duyệt ở client.
Microsoft dường như chú trọng đến kiểu lập trình khai báo này, tuy nhiên bạn vẫn có thể thực hiện kiểu mã lệnh JavaScript trực tiếp, nhưng lưu ý những tính năng hướng đối tượng hạn chế của JavaScript.

HIỆN THỰC

Atlas vẫn còn trong quá trình phát triển. Microsoft dự kiến sẽ ra mắt Atlas trong năm 2006 này như là thành phần bổ sung cho ASP.NET 2.0 và nó sẽ được tích hợp với Visual Studio 2005.
Tuy nhiên, ngay từ bây giờ bạn đã có thể làm quen với Atlas. Microsoft hiện đã có cung cấp file ASPNETAtlas.vsi để cài đặt dự án Atlas mẫu (Atlas Web Site Template, http://msdn.microsoft.com/asp.net/info/future/atlastemplate/) trên Visual Studio 2005 (http://msdn.microsoft.com/vstudio/) hay Visual Web Developer Express (http://msdn.microsoft.com/vstudio/express/vwd/). Dự án này có đủ mọi thứ cần thiết cho dự án web kiểu Atlas, bao gồm thư viện Atlas.
Hiện cũng đã có một số ứng dụng Atlas mẫu, bạn có thể tham khảo ở webblog của Nikhil Kothari (http://www.nikhilk.net) – kiến trúc sư phần mềm của Microsoft, người đã thuyết trình về Atlas tại PDC 2005. Bạn cũng có thể dễ dàng tìm thấy nhiều mẫu ứng dụng Atlas khác trên Internet.
Ngoài ra, hiện cũng có những giải pháp khác cho phép phát triển ứng dụng kiểu Ajax với ASP.NET 1.0 hay 2.0 như My Ajax.Net của Jason Diamon (http://jason.diamond.name/weblog/category/my-ajax-dot-net/) và Ajax.NET của Michael Schwarz (http://ajax.schwarz-interactive.de/csharpsample/).

CLIENT HAY SERVER??


Một trong những điểm mấu chốt của ứng dụng kiểu Ajax đó là giảm thiểu việc truyền thông giữa client và server. Vấn đề cần cân nhắc là gửi-nhận thông tin gì và tác vụ nào xử lý ở đâu? Việc này liên quan đến mô hình phát triển đặt trọng tâm phía server hay client.
Trong mô hình phát triển đặt trọng tâm phía client, ban đầu server gửi đến client thông tin khai báo “cách trình bày” cùng “cách thức ứng xử” của giao diện người dùng. Khai báo giao diện này thực thi ở client để xử lý hành vi tương tác của người dùng, gửi dữ liệu đến server và nhận dữ liệu (không phải mã HTML) đáp trả, và dùng dữ liệu này để sinh thể hiện và nội dung. Server đưa các tài nguyên khác đến giao diện người dùng thông qua các dịch vụ.
Mô hình này cho phép thực hiện hiệu quả các tình huống từ tính toán đến dữ liệu động ở client. Mô hình này cũng cho phép xử lý tức thời những hành vi của người dùng và có khả năng thực hiện những hiệu ứng thị giác như kéo-thả. Cái giá của giải pháp này gồm công sức viết mã lệnh client không nhỏ và việc chuyển luận lý giao diện từ server sang client dẫn đến yêu cầu xây dựng và học sử dụng các công cụ mới, mô hình thiết kế mới…
Trong mô hình phát triển đặt trọng tâm phía server, server sẽ gửi mã HTML đến client thay vì dữ liệu thuần tuý. Việc xử lý phía client đơn giản hơn nhiều, chủ yếu chịu trách nhiệm gửi yêu cầu rồi nhận mã HTML đáp trả và đặt vào đúng chỗ trong trang. Hầu hết việc xử lý tương tác và giao diện đều nằm ở server.
Trong khi một số người thích “đường lối” mới, nhưng một số người khác lại thích mô hình phát triển phía server quen thuộc. Có những tính năng bạn vẫn có thể thực hiện theo mô hình phát triển truyền thống, nhưng những tính năng như tương tác giao diện người dùng phải cần đến nền tảng phát triển kiểu Atlas – cho phép cân đối giữa mô hình client phong phú với mô hình phía server hiện hữu.

Theo pcworld.com.vn


Tham khảo:
- http://atlas.asp.net/
- http://www.nikhilk.net/

Chủ Nhật, 9 tháng 5, 2010

Thuật giải A*

Trong thuật giải A*, khó hiểu nhất là cách thức hoạt động của Open và Close. Bạn có thể hiểu:
Tập OPEN lưu trữ các trạng thái "sẽ được xem xét đến sau" còn tập CLOSE lưu trữ các trạng thái "đã được xét đến rồi"
Trích Giải 1 bài toán trên máy tính thế nào - TS.Hoàng Kiếm

Thứ Bảy, 8 tháng 5, 2010

Biểu diễn không gian trạng thái

Bước đầu để giải quyết các bài toán Trí Tuệ Nhân Tạo Trước hết ta cần định nghĩa 'Biểu diễn không gian trạng thái (KGTT)' là gì. Biểu diễn KGTT, đó là chọn lựa một vài cách để biểu diễn trạng thái của bài toán được rõ ràng. Có 2 cách để biểu diễn KGTT:
- Biểu diễn theo cây: các bài toán 8-puzzle, cờ vua, rót nước, tích phân, di chuyển khối...
- Biểu diễn theo đồ thị:
các bài toán chơi cờ, rót nước, hành trình người bán hàng, hành trình con mã...

Các bước để biểu diễn KGTT:
- Biểu diễn trạng thái ban đầu.
- Biểu diễn một cách chính xác khi một trạng thái thỏa mãn đích của bài toán.
- Kích hoạt các luật sinh từ trạng thái ban đầu và các trạng thái tiếp theo cho đến khi trạng thái đích được tìm thấy.
Các vấn đề nảy sinh và thỏa hiệp:
- Lựa chọn các luật sinh như thế nào?
- Khi có quá nhiều trạng thái được sinh ra, rõ ràng ta không thể lưu trữ được các trạng thái.
Những trường hợp như vậy gọi là ẩn. Vậy chúng ta nên tìm kiếm trên cây ẩn hay trên đồ thị ẩn?< /p>
- Cần một lời giải tối ưu hay chỉ là lời giải bất kỳ?
- Nên thu gọn bài toán hay phân rã nó ra.
- Nên tìm kiếm theo hướng tiến từ trạng thái khởi đầu, hay theo hướng lùi từ trạng thái đích.
Ta xét các ví dụ sau:
Ví dụ 1: Bài toán rót nước.
Cho 2 bình nước: 4(L) và 3(L). Hãy rót vào bình 4(L) một lượng 2(L) nước.
Giải: Ta biểu diễn một trạng thái như sau:
[nội dung của bình lớn, nội dung của bình nhỏ]
- Trạng thái ban đầu: [0,0]
- Trạng thái đích : [2,0].
Cây biểu diễn của bài toán:
Ta phát biểu các luật sinh cho bài toán như sau:
- Làm đầy bình lớn: [x,y]&x<4 →[4,y]
- Làm đầy bình nhỏ: [x,y]&y<3 →[x,3]
- Làm rỗng bình lớn: [x,y]&x>0 → [0,y]
- Làm rỗng bình nhỏ: [x,y]&y>0 → [x,0]
- Làm đầy bình lớn từ bình nhỏ: [x,y]&y>4-x → [4,x+y-4]
- Làm đầy bình nhỏ từ bình lớn: [x,y]&x>3-y → [x+y-3,3]
- Rót hết nước từ bình nhỏ sang bình lớn: [x,y]&y>0&y ≤ 4 - x→ [0,x+y]
- Rót hết nước từ bình lớn sang bình nhỏ: [x,y]&y>0&y ≤ 3 - y→ [0,x+y]
Các luật trên là các luật tối thiểu nhưng cũng đúng nhất cho bài toán rót nước. Có thể còn nhiều cách rót nữa, nhưng chúng ta dễ dàng nhận thấy, chúng đều dẫn đến không gian dư thừa.
Ví dụ 2: Phát triển một chương trình có thể chơi cờ được.
Giải:
Ta có thể biểu diễn một trạng thái của bàn cờ bằng một danh sách liên kết, mà mỗi phần tử gồm có cấu trúc như sau:
[tên quân cờ, hàng ngang, hàng dọc]
Danh sách cho trạng thái bàn cờ trên như sau:
([H_den, 8, B],
[M_den, 7, A],
[T1_den, 7, H],
[T2_den, 5, E],
[H_trang, 1, F],
[X_trang, 2, D],
[T1_trang, 2, H])
Ta tiếp tục mô tả các luật để biểu diễn di chuyến: Giả sử, ta muốn di chuyển một tốt trắng từ hàng 2 lên hàng 4, ta thực hiện:
([Tốt_trắng, 2, x], [ô_trống, 3, x], [ô_trống, 4, x])
Thêm([Tốt_trắng, 4, x])+Xóa([Tốt_trắng,2, x]).
Tương tự như vậy, ta có thể biểu diễn di chuyển cho các quân cờ khác.
Để xác định một trạng thái đích, ta có thể biểu diễn:
Thắng (quân_đen) ← Tấn_công (hậu_trắng)
Không_di_chuyen_hop_le (hau_trang)
Một cách tương tự, ta có thể biểu diễn cho các trạng thái thắng quân cờ.
Thắng(quân_cờ) ← Tấn_công(quân_cờ) +
Không_di_chuyen_hop_le(quân_cờ)
Đối với các bài toán chơi cờ, số không gian trạng thái được tạo ra từ một nước đi là rất lớn, vì vậy, ta không thể lưu toàn bộ không gian này vào bộ nhớ. Trong các chương trình chơi cờ, người ta chỉ lưu KGTT này sau một vài bước đi, rồi tiếp tục xử lý và lưu chồng lên. Ta thấy rằng, nếu số nước đi càng sâu, thì chương trình càng chơi hay.
Rõ ràng, với các cách biểu diễn như trên, ta rất dễ dàng để viết mã cho bài toán bằng bất kỳ thuật toán tìm kiếm nào (rộng, sâu, hoặc các thuật toán thông minh khác). Bạn chỉ cần so sánh trạng thái hiện thời với các luật để sinh ra trạng thái kế tiếp. Các trạng thái này có thể được lưu vào một QUEUE (tống quát) nào đó chẳng hạn, cho đến khi tìm được trạng thái đích, và lần ngược về để tìm ra các bước đi. Nếu first > last trong QUEUE nghĩa là bài toán không có lời giải.
Bài 1: Bài toán người nông dân, con cáo, con ngỗng và bó lúa.
Một người nông dân muốn qua sông với một con cáo, một con ngỗng và một bó lúa. Chiếc thuyền nhỏ của ông ta chỉ có thể chở ông ta với một trong ba vật sở hữu trên. Nếu sơ suất, con cáo sẽ ăn con ngỗng và con ngỗng sẽ ăn bó lúa.
a. Tìm một phương pháp để biểu diễn tốt cho bài toán.
b. Tìm các luật để người nông dân và các vật sở hữu qua sông được an toàn.
Bài 2: Bài toán 3 tu sĩ và 3 kẻ cướp
Có 3 tu sĩ và 3 kẻ cướp đang ở trên cùng một bờ sông và đều muốn sang bờ bên kia. Trên bờ sông có một chiếc thuyền nhỏ chỉ chở được 2 người. Biết rằng, nếu số kẻ cướp nhiều hơn số tu sĩ thì các tu sĩ sẽ bị kẻ cướp ăn thịt.
a. Tìm một phương pháp biểu diễn tốt cho bài toán.
b. Tìm các luật để tất cả bọn họ qua sông được an toàn.
Hoàng Anh Vũ

Thứ Sáu, 7 tháng 5, 2010

CD luận văn tốt nghiệp khoa CNTT-ĐH Bách khoa HCM

Tập hợp luận văn tốt nghiệp khoa công nghệ thông tin của trường đại học bách khoa TP.HCM
Code:
http://www.mediafire.com/download.php?ltafg2jy1zg
http://www.mediafire.com/download.php?g2jvmmztdzy

Password:
megafun.vn

So sánh Opera Mini và Safari trên iPhone

TTO - Nổi tiếng là trình duyệt có tốc độ vượt trội nhờ công nghệ nén dữ liệu qua máy chủ trung gian, Opera Mini đã khiến cộng đồng người dùng iPhone đặc biệt hồ hởi khi có mặt trên App Store. Liệu trình duyệt đến từ Nauy có thực sự vượt trội so với Safari?
Opera Mini và Safari so găng để giành vị trí trình duyệt web hàng đầu trên iPhone - Ảnh: Internet
Tốc độ
Có thể coi Opera là một dạng “proxy browser,” – trình duyệt qua hệ thống máy chủ trung gian. Mặc dù phải chuyển dữ liệu qua sever để nén trước khi chuyển tới người dùng, nhưng bạn sẽ không phải chờ quá lâu. Thay vào đó, kết quả chuyển phát trang (load times) sẽ được cải tiến đáng kể, ngay trên cả các trang đã được tối ưu để duyệt trên điện thoại di động.
Chẳng hạn, phiên bản trên điện thoại di động của CNN.com chỉ mất 3.6 giây để tải hết trên Opera Mini, trong khi Safari phải tốn 7.1 giây để hoàn thành. Kết quả thử nghiệm với Yahoo còn đáng ngạc nhiên hơn, từ 12.1 giây trên Safari xuống còn 4.2 giây. Với các trang chưa được tối ưu giao diện để dùng trên điện thoại, bạn sẽ thấy khả năng cải tiến tốc độ của Opera Mini thực sự tuyệt vời.
Xét về tốc độ, Safari: 8 điểm. Opera: 10.
Tính năng phóng to (zooming) và cuộn
Nhờ vào công nghệ cảm ứng đa điểm tiên tiến, đặc biệt xuất sắc trên iPhone, người dùng có thể tận dụng tối đa Safari để xoay trang, đổi kích cỡ. Trong khi đó, Opera chào thua! Trình duyệt đến từ Nauy chỉ hỗ trợ zoom kích cỡ trang, với một số tuỳ chọn để cân bằng chế độ hiển thị, tránh kích cỡ “quá lớn” hoặc “quá nhỏ”.
Cũng giống như khi zooming, thao tác cuộn thanh điều hướng trên Opera Mini không thể sánh bằng được khả năng của Safari. Khi bạn kéo một hàng chữ dài, sẽ thấy Opera tỏ ra ì ạch và chậm chạp so với Safari.
Điểm số: Safari: 10. Opera: 6
Giao diện
Xét tổng thể, giao diện của Opera Mini tương đối giống với Safari. Cả hai cùng có trường URL để nhập địa chỉ, Google search nằm sẵn ở trên cùng, bên cạnh; cả hai đều có thanh điều hướng trở về, chuyển tiếp, chạy lại nội dung thẻ và các nút tinh chỉnh ở trên cùng.
Tuy nhiên, Opera có tính năng hiển thị thú vị, khi cung cấp thông tin dưới dạng ảnh thumbnail nhỏ để bạn chuyển tới trang đang xem, thay vì phải duyệt từng trang để biết nội dung, địa chỉ đã mở trên các thẻ. Điều này sẽ giúp người dùng tiết kiệm được khá nhiều thời gian.
Opera cũng có tính năng hiển thị toàn màn hình, chỉ để lại 2 nút ở góc, một cho phép trở lại, một hiển thị các thông số tuỳ chọn. Mặc dù chế độ hiển thị mở rộng không hẳn đã giúp bạn hài lòng như khi dùng PC, nhưng nó cũng cải thiện đáng kể khả năng duyệt web của iPhone.
Điểm số: Safari: 8. Opera: 9
Opera Mini vẫn còn một số hạn chế, nhất là khả năng tận dụng sức mạnh cảm ứng đa điểm của iPhone. Đây lại là điểm mạnh của trình duyệt đi kèm iPhone.
Đánh dấu trang
Cả Opera Mini và Safari đều có chế độ đánh dấu trang (bookmark) tương tự nhau, tuy nhiên Opera có thêm nhiều tính năng hơn, khi sở hữu “vũ khí” đặc trưng Speed Dial, rất thích hợp với một chiếc smartphone. Thay vì phải chọn các bookmark trên danh sách, bạn có thể thêm vào Speed Dial, cho phép gọi nhanh các trang web ưa thích, vốn được gom lại dưới dạng ảnh thumbnail và hiển thị theo từng ô mắt lưới. Opera Mini có thể tự động tạo ra các ảnh thumbnail này cho từng trang web và mỗi lần mở một thẻ mới, bạn sẽ được Speed Dial gợi ý các trang web có trong dữ liệu. Trong khi đó, Safari không có.
Điểm số: Safari: 7. Opera :9
Các tính năng mở rộng
Ngoài cải tiến một số tính năng tương tự như trên Safari, Opera Mini còn mang đến khá nhiều tuỳ chọn hữu dụng mà trình duyệt mặc định của iPhone không có. Chẳng hạn, bạn có thể tìm kiếm ngay trong trang đang duyệt với nội dung bất kì, giống như khi duyệt trên PC vậy. Bạn cũng có thể lưu trang mình thích để đọc lại sau, ngay cả khi không có kết nối Internet. Opera Mini cũng hỗ trợ người dùng tốt hơn trong việc lưu lại mật khẩu các trang web đã ghé thăm, ngay sau khi bạn lưu chúng vào danh sách các trang web ưa thích. Bạn sẽ không cần đụng tới bàn phím của iPhone mỗi lần trở lại trang web nào đó.
Điểm số: Safari: 6. Opera: 8
Miễn phí và nhiều tính năng cải tiến, Opera Mini là lựa chọn xứng đáng thay thế Safari.
Kết luận
Bất kể bạn đang hài lòng với Safari, Opera Mini vẫn sẽ là một trải nghiệm thực sự thú vị. Ngoài ra, Opera Mini hoàn toàn miễn phí. Mạnh về tốc độ là điểm nổi bật của trình duyệt đến từ Nauy tuy khả năng điều chỉnh kích cỡ trang lại kém hơn so với Safari.
Trong trường hợp tốc độ kết nối Internet của bạn chậm, đồng thời muốn tiết kiệm chi phí, Opera Mini là sự lựa chọn hoàn hảo thay cho Safari.
NHẬT VƯƠNG tổng hợp

Thứ Năm, 6 tháng 5, 2010

Learn Visual C#: Video Tutorials

Homepage: http://msdn2.microsoft.com/en-us/vcsharp/default.aspx
Chào các bạn.
Mình thấy các video hướng dẫn này rất hay, chất lượng tốt nên viết bài giới thiệu cho các bạn nào chưa biết.
Có thể là lúc học ngôn ngữ lập trình nào đó, chúng ta hơi ngại khi vào chính trang support của nó, trong khi những trang này hỗ trợ rất nhiều từ ví dụ đến các hướng dẫn. Các bạn cứ đi tìm hỏi tài liệu ở đâu ?? chia sẻ cho mình ,… Vì thế nên bạn nào chưa có cách học lập trình tốt thì nên thay đổi.
Thay đổi đầu tiên bằng cách vào trang MSDN của Microsoft và xem các hướng dẫn, các hỗ trợ của Microsoft về các ngôn ngữ lập trình C, C++, Visual C++, Visual C#, Visual Basic, …
Đây là trang chủ MSDN: http://msdn2.microsoft.com/en-us/default.aspx
Mình copy các link bài học bằng Video từ đây để cho các bạn chưa quen tìm hiểu dễ dàng có được tài liệu mong muốn. Định dạng file .wmv

Có tất cả 21 bài học:
Thế là có thể download một phát hết luôn nhé. Chết thật mất công quá đi mất.

Bài đăng phổ biến