กำลังบ้า Ruby on Rails ภาค MVC

เพิ่งแก้ Blog จากการใช้ Category มาเป็น Tag แทนด้วยเหตุผลที่ว่ามันทำให้การค้นหาและจัดหมู่นั้นทำได้ง่ายกว่ามาก ซึ่งช่วงนี้กำลังหาสิ่งใหม่ ๆ เข้าตัว เริ่มด้วยการศึกษาหลักการ Design Pattern ต่าง ๆ ของ GoF และ Model-view-controller (MVC) ที่เป็น Design Pattern อีกแบบหนึ่งที่ได้รับความนิยมมาก โดยตัวที่เอาประกอบการศึกษาก็คือ Ruby on Rails (RoR) ซึ่งเป็นการใช้ภาษา Ruby มาเป็นภาษาในการพัฒนาและทำเป็น Framework ที่ชื่อว่า Rails นั้นเอง โดยรวมยังไปไม่ถึงไหน แต่ที่แน่ ๆ การพัฒนาทำได้รวดเร็วและง่ายมาก ๆ แต่สิ่งหนึ่งที่ต้องเข้าใจคือ MVC เสียก่อน เพราะไม่งั้นพัฒนาไปแล้ว งง แน่ ๆ

Model-view-controller (MVC) เป็นการแยกการพัฒนา Software ออกมาเป็น 3 ส่วนหลัก ๆ  (หรือบางคนเรียกกว่า 3 Layer) ซึ่งได้แก่ Model, View และ Controller

  • Model เป็นการตัดสินใจ (Domain logic) ในการเข้าถึงและใช้งานข้อมูล (Raw data) ซึ่งเป็นไปตามกฎที่ตั้งไว้ (Business Rule) 
  • View เป็นส่วนของการนำข้อมูลที่ได้จาก Model มาแสดงผลให้ผู้ใช้ได้ทราบข้อมูลผ่านทางส่วนติดต่อกับผู้ใช้งาน (User Interface,UI)
  • Controller เป็นส่วนที่ตอบรับและโต้ตอบการทำงานของผู้ใช้ (Event และ Responds) โดยจะเป็นตัวกระตุ้นให้ Model และ View ทำงานไปในทิศทางเดียวกัน

ขั้นตอนการทำงานของ MVC แบบคราว ๆ

เหตุการณ์สมมติ "นักเรียนต้องการส่งคำตอบในการทำข้อสอบให้กับครูผู้สอน" การทำงานแบบ MVC จะมีลักษณะดังนี้

  1. เมื่อนักเรียนกดปุ่ม Submit เพื่อส่งข้อสอบ ซึ่งอยู่ที่ View จะส่งคำร้องนี้ไปยัง Controller (1) จะทำการรับการโต้ตอบจากปุ่ม Submit และสร้าง handler หรือ callback ขึ้นมา เพื่อใช้ติดต่อระหว่าง Layer
  2. Controller ทำการเลือก Model ที่ตรงกับข้อมูลของผู้ใช้ที่ส่งข้อมูลเข้ามา (2) แล้ว Model ทำการตรวจสอบความถูกต้องของข้อมูลตามกฎที่ตั้งไว้ (Business Rules) ถ้ามีข้อผิดพลาดจะส่งคำร้องไปยัง View (5) ให้ทำการสร้างหน้าแจ้งข้อผิดพลาดออกมาและจบการทำงานทันที แต่ถ้าไม่มีข้อผิดพลาดจะใส่ข้อมูลนั้นลงฐานข้อมูล โดยที่ Model จะเป็นคนจัดการข้อมูลในฐานข้อมูลเองทั้งหมด (3) แล้ว Controller จะบอกให้ View (4) จะทำการสร้างส่วนติดต่อกับผู้ใช้ใหม่ขึ้นมาโดยไปดึงผลคะแนนที่ได้มาจาก Model (5) ออกมาแสดงที่ส่วนติดต่อผู้ใช้งาน (User Interface,UI)
  3. และการทำงานจะเป็นแบบไหนไปเรื่อย ๆ จนกว่าโปรแกรมจะจบการทำงาน

จากตัวอย่างด้านบนคงจะพอเห็นภาพแล้วว่าการติดต่อระหว่าง Model, View และ Controller แล้ว เมื่อเราสามารถแยกการทำงานของโปรแกรมของเราได้ในรูปแบบนี้ จะทำให้การดูแลและแก้ไขระบบเป็นไปด้วยความรวดเร็ว และลดความซับซ้อนในการสร้างลงไปมาเลยทีเดียว

ซึ่งในการเขียน RoR นั้นก็ใช้หลักการแบบนี้เช่นกัน และตัว Framework เองนั้นออกแบบมาให้มีความสามาถในการสร้างงานที่สูงมาก (High Productivity) กล่าวคือเราไม่จำเป็นต้องออกแบบฟอร์มเองทั้งหมด แต่ตัว Framework จะออกแบบมาให้แล้ว และเรามาปรับแต่งฟอร์มทีหลัง โดยตัวฟอร์มจะมีความสอดคล้องกับข้อมูลที่ออกแบบใน Database มากที่สุด แถมด้วยระบบตรวจสอบข้อมูลในฟอร์มแบบซึ่งสามารถปรับแต่งแก้ไขได้ง่ายมาก ๆ

สำหรับตอนนี้ก็คงต้องกลับไปนั่งเล่นกับมันก่อน เดี่ยวมาเล่าต่อครับ ;)

ว่าด้วย Basic Cocoa Training@Fortune จัดโดย ThaiMacDev.com

อบรมไปก็เกือบเดือน กว่าจะกลับมาเขียนต่อได้ -_- งานเยอะครับตอนนี้ T_T


ออกจากพิษณุโลกประมาณเที่ยงคืนกว่า ๆ จริง ๆ แล้วว่าจะไปตั้งแต่เช้าวันศุกร์แต่ว่าติดเรียน เลยต้องไปดึก ๆ กว่าจะถึงก็เกือบเช้า ไปนอนที่ห้องเพื่อนพี่กั่งก่อนสัก 3 – 4 ชั่วโมง แต่ว่าดันเหนื่อยเกิน เลยตื่นมา 9.30 น. พอดี ตอนนั้นเซงเลย เลยรีบ move ด้วยความรวดเร็วถึงที่อบรมก็ 10 โมงกว่า ๆ พอดีเข้าไป ยังไม่เริ่มอบรม ก็ค่อยยังชั่ว เฮ้อ …….. ซึ่งบรรยากาศโดยรวมทั้งหมดถึงว่าดีถึงดีมาก เพราะส่วนใหญ่เป็นคนที่มีความสนใจจริง ๆ และอยู่ในสายงานด้านการพัฒนาซอฟต์แวร์กันทุกคน ซึ่งทุกคนก็ผ่านประสบการณ์การออกแบบ, พัฒนา และดูแลซอฟต์แวร์น่าจะทุกคน ซึ่งก็มีหลาย ๆ คนรวมถึงผมด้วยที่ไม่ได้จับแม็คในการเขียนซอฟต์แวร์รวมไปถึงบางคนก็ไม่เคยใช้มาก่อน (แบบผม) ซึ่งท่านวิทยากร คือ อ.เดฟ ก็สอนได้เข้าใจกันแทบจะทุกคน ในรูปแบบการทำงานที่เข้าใจง่าย โดยในวันแรกก็เข้าส่วนของพื้นฐานกันก่อน เช่น ความรู้เบื้อต้นของ Cocoa Framework, แนวการพัฒนาแบบ OOP ใน Cocoa, การออกแบบซอฟต์แวร์แบบ MVC และการแนะนำเรื่องของระบบ NextStep (ซึ่งเป็นเหมือนรุ่นพ่อของ Mac OS X หรือ Darwin) ซึ่งเป็นเหมือนการทวบทวน และได้ความรู้ใหม่ ๆ ไปในตัว โดยเรื่องของการ coding นั้นในวันแรกไม่ค่อยได้ coding เท่าไหร่ อย่าง hand-on ตัวแรกที่ให้ทำก็ไม่มีให้ coding สักบรรทัด ซึ่งถือว่าเป็นการเริ่มต้นการอบรมที่ดีมาก ๆ ที่เป็นการนำจุดเด่นของการพัฒนาบน Cocoa Framework มาบอกในอันดับต้นซึ่งทำให้เราเห็นภาพว่า OOP นั้นมัน send/receive message ของแต่ละ object กันอย่างไร ซึ่งทำให้การออกแบบ OOP แบบเดิม ๆ นี่เด็ก ๆ ไปเลย

โดยในวันแรกนั้นมีการพูดถึงการเขียน code บนพื้นฐานของภาษา Objective-C ซึ่งมีผู้เข้าอบรมหลาย ๆ ท่านก็ได้แลกเปลี่ยนความคิดเห็นกันกับ อ.เดฟ และท่านอื่น ๆ ว่ามันแตกต่าง และใช้งานดีหรือไม่ดีอย่างไรเมื่อเทียบกับภาษาและ Framework อื่น ๆ ซึ่งทำให้ได้มุมมองที่กว้างและสนุกไปอีกแบบ ซึ่งในวันแรกไม่ได้เขียน code อะไรมากนัก เพราะส่วนใหญ่จะ preview Framework อย่าง Cocoa, ภาษา Objective-C และทำความเข้าใจหลักของ MVC เสียมากกว่า

มาวันที่สอง นี่ coding เพียบและมันกว่าเดิม โดยรวมคือเป็นลักษณะ workshop มากกว่าวันแรกอย่างมากเลยหล่ะ แต่ก็ยังคงเขียน code ในจำนวนบรรทัดที่น้อยกว่าที่เคยเขียนมาในงานที่ทำเหมือน ๆ กัน โดยเฉพาะงานอย่าง Binding เนี่ยเห็นชัดมาก ;)

งานนี้เรียนมันมาก แค่เรื่องไปเอา concept อย่าง OOP ในระดับมองทุกอย่างใน software เป็น World (แบบ Sim City หรือ The Sim) และ MVC ที่ในมหาวิทยาลัยสอนไม่ครบก็คุ้มแล้วคร้าบบบบบบบบ ส่วน Objective-C และการเขียนใน Cocoa Framework น่าจะเป็น Case Study ในการทำ Application ในอนาคตได้มากเลย

Framework , Library , Platform, Architecture และ AJAX

ผมมีคำถามที่ไม่เข้าใจ ให้ช่วยแนะนำแนวทาง ดังนี้ครับ
1. framework คืออะไร เกี่ยวข้องกับ library ไหม
2. แพลตฟอร์มกับสถาปัตยกรรมต่างกันอย่างไร
3. AJAX คืออะไรครับ

Framework นั้นใน Software development เป็นการสร้างโครงสร้างของ software project ที่สามารถรวบรวม และพัฒนาสิ่งต่าง ๆ ได้ โดยที่ framework นั้นจะมีโปรแกรมสนับสนุน (IDE), library, scripting language และซอฟต์แวร์อื่นๆ ที่ช่วยในการพัฒนา ตัวอย่าง Framework ก็ Eclipse ที่เป็น Java Framework จาก IBM, NetBeans จาก Sun Microsystems, Microsoft .NET จาก Microsoft, Ruby On Rails สำหรับเขียน Ruby, Cocoa จาก Apple Computer ฯลฯ ส่วนถ้าใน Hardware development เป็นพวกการรวมกันของระบบ เช่น SuperComputer ที่ต้องใช้ Hardware เฉพาะที่เข้ากันได้, Macintosh ที่ต้องใน CPU ที่ออกแบบมาเฉพาะสำหรับการทำงานร่วมกับ Mac OS เป็นต้น
ซึ่งในส่วนของ Framework ที่เป็น Software development นั้น บางครั้งก็สามารถแยกย่อยได้เป็น 2 ส่วนคือ Runtime และ SDK (Software Develop Kits) ซึ่ง Runtime นั้นเป็นการทำให้ซอฟต์แวรที่พัฒนาจาก SDK สามารถทำงานได้ โดยที่ไม่ต้องลง SDK ทั้งหมด ถ้าคิดง่ายๆ คือ SDK เป็น super set ของ Runtime อีกที

Library เป็นการรวมกันของ subprogram ที่ช่วยในการพัฒนาซอฟต์แวรต่าง ๆ ถ้าใน c/c++ ก็พวก stdio, iostream, string ฯลฯ ซึ่งเราต้อง include ถ้าใน java ก็พวก import ต่างๆ เช่น swing อะไรพวกนี้เข้ามาใน code ของเราเพื่อช่วยให้เราไม่ต้องเขียนในส่วนนั้น ๆ ตัวอย่างเช่นใ น MFC ที่สามารถ include Library พวก win32 เข้ามาเพื่อสร้าง GUI ในภาษา visual c++, visual basic

Architecture เป็นศาสตร์ และศิลปของการออกแบบสิ่งของ และโครงสร้างต่าง ๆ โดยมุ่งเน้นในความเป็นกลางของระบบที่เข้ากันได้ในแต่ละรายละเอียด ทั้ง Software และ Hardware

Platform เป็นรายละเอียดต่างๆ ที่นำมารวมกันของ framwork (ทั้ง hardware หรือ software) ที่ยินยอมให้ทำงานได้ ซึ่งมันเป็นการรวมกันของ Computer architecture, operating system หรือ programming language และรวมไปถึง runtime library ตัวอย่างเช่น Wintel เป็นการรวมกันของ Intel x86 หรือ compatible hardware และ Windows operating system, Macintosh เป็นการจัดจำหน่วยบน platform ของ Apple Computer hardware และ Mac OS operating system และพวก video game console ต่าง ๆ พวก xbox, ps(1,2,3) game cube ฯลฯ

AJAX หรือ Asynchronous JavaScript and XML นั้นเอง ซึ่งมันทำงานโดยใช้

  • HTML/XHTML/CSS เพื่อแสดงผล
  • Document Object Model ทำการส่งค่า html และทำงานโดยผ่าน JavaScript เพื่อทำการแสดงผลแบบ dynamic ให้กับ HTML/XHTML/CSS มากขึ้น
  • XMLHttpRequest เพื่อทำการส่งข้อมูลเข้า และออก web server เพื่อประมวลผล

Web browser ที่สนับสนุนคือ

  • Apple Safari 1.2 ขึ้นไป
  • Konqueror ทุกรุ่น
  • Microsoft Internet Explorer (and derived browsers) 4.0 ขึ้นไป
  • Mozilla Firefox (and derived browsers) 1.0 ขึ้นไป
  • Netscape 7.1 ขึ้นไป
  • Opera 7.6 ขึ้นไป
  • ฯลฯ ในอนาคต

ซึ่งจริงๆ แล้วเป็น Technology ที่ใช้ใน Outlook Web Access อยู่แล้ว ซึ่งทำงานผ่าน Microsoft Exchange Server โดยทำงานบน Microsoft Internet Explorer 4.0 ต่อมาในปี 2005 นั้น Google ก็เอามาใช้ใน Google Groups, Google Maps, Google Suggest และ Gmail
ถ้าไล่ตามลำดับแล้ว จากขนาดใหญ่ไปเล็กก็ไล่จาก
Platform -> Architecture -> Framework -> Library -> AJAX

Express Editions มัน Free (แต่มีเงื่อนไข) จริงๆ นะ

เข้าไปดูส่วนของ Microsoft SQL Server 2005 Express Editions แล้วตกใจหมดเลยกับคำว่า Free !!! เป็นไปได้ไง

แต่อ่านไปอ่านมา ก็ถึงบางอ้อ?.. หรือหนองอ้อ ดีหว่า (หุๆๆๆ) เพราะว่ามันคือการเปลี่ยนชื่อของ Microsoft SQL Server Desktop Engine (MSDE) จากเดิมที่ Microsoft แบ่ง SQL Server ของตัวเองเป็นสองส่วนคือส่วน Commercial ที่ใช้ชื่อว่า Microsoft SQL Server กับ Free ที่เป็น Microsoft SQL Server Desktop Engine แต่ตอนนี้เพื่อไม่สับสน (หรือเปล่า) เลยให้มันชื่อเหมือนๆ กันซะเลย เลยเปลี่ยนชื่อ MSDE เป็น Microsoft SQL Server Express Editions แทนซะเลย

ว่า Microsoft SQL Server 2005 Express Editions ถึงแม้จะ Express Edition ก็ตามที แต่ก็คาดว่าน่าจะทำงานได้ดีในระดับหนึ่ง แต่ดูๆ ไปแล้วคาดว่าทาง Microsoft คงเอามาสู้กับ Oracle Database 10g Express Edition ที่ Free ที่ได้เปิดตัว Beta ไปเมื่อเร็วๆ นี้เช่นกัน

แต่ขึ้นชื่อว่าของฟรีแล้ว มันก็มีข้อจำกัดในตัวของมัน Microsoft SQL Server 2005 Express Editions นั้นทำงานได้แค่ 1 CPU, RAM ไม่เกิน 1GB , ขนาดฐานข้อมูลไม่เกิน 4GB และไม่มีพวกสิ่งอำนวยความสะดวกพวก Analysis Services, Reporting Services, Data Transformation Services และ Notification Services เท่านั้นเอง แต่ถ้าอยากได้มากกว่านี้ก็ต้องใช้ของเสียเงินแทนหล่ะครับ ซึ่งถ้าดูๆ ไปก็เหมาะสำหรับคนที่ใช้เล็กๆ น้อยๆ, ธุรกิจขนาดเล็ก หรือนักพัฒนาระบบทั่วไปครับ

ต่อมาในส่วนของ Visual Studio Express Editions ที่แยกมาเป็น

Visual Basic 2005 Express Edition
Visual C# 2005 Express Edition
Visual C++ 2005 Express Edition
Visual J# 2005 Express Edition

แต่อันนี้ใช้ได้แค่ 1 ปีเท่านั้นหลังจากนั้นก็ซื้อมาใช้แล้วกันครับ คงไม่มีอะไรมาก แต่ว่าถ้าเอามาใช้ศึกษานี่เหมาะมาก หรือเอาไปเขียนซอฟต์แวร์ขายก็น่าจะ OK แต่ว่าติดที่คุณต้องลง Microsoft .NET Framework 2.0 ด้วย ซึ่งขนาดไม่แตกต่างกับ 1.1 หรือ 1.0 เท่าไหร่นัก

อย่างอื่นก็ลองอ่านเอาที่

Visual Studio Express : http://msdn.microsoft.com/vstudio/express/
SQL Server Express : http://msdn.microsoft.com/vstudio/express/sql/
Frequently Asked Questions : http://msdn.microsoft.com/vstudio/express/support/faq/default.aspx
Oracle Database 10g Express Edition : http://www.oracle.com/technology/products/database/xe/index.html

Update !!! 11/11/2005
เพิ่งได้รับความกระจ่างในเรื่องของ Visual Studio 2005 Express Edition ต่าง ๆ ของ Microsoft ในเรื่องนี้จากพี่เดฟ (ithilien_rp) โดยผมเข้าใจผิดไปนิดนึงในเรื่องของการใช้ฟรี 1 ปีแล้วหมดอายุนั้น “ไม่ใช่” ครับ

ขอปรับเปลี่ยนว่า การใช้งานนั้น “สามารถใช้ได้เท่าที่ต้องการไม่จำกัดระยะเวลา” แต่ที่จำกัดคือ “ระยะเวลาในการที่จะ Download ตัว Visual Studio 2005 Express Edtion มาเก็บไว้”

อ้างอิงจาก Frequently Asked Questions ใน Link ข้างต้นในข้อที่ 12 ที่ว่าไว้ว่า

You said “free for one year” ? what does that mean, exactly “Will you be charging for this later”

We originally announced pricing of Visual Studio Express at US$49. We are now offering Visual Studio Express for free, as a limited-in-time promotional offer, until November 6, 2006. Note that we are also offering SQL Server 2005 Express Edition as a free download, and that this offer is not limited to the same promotional pricing period as Visual Studio Express.

โดยที่ใจความสำคัญว่า “พวกเราตั้งราคาพื้นฐานของ Visual Studio Express ไว้ที่ 49$ แต่ในตอนนี้ Visual Studio Express นั้น Free โดยมีช่วง Promotion ถึงวันที่ 6 พฤศจิกายน 2006 โดยที่ SQL Server 2005 Express Edition นั้นก็ Free เช่นกัน แต่ไม่ได้กำหนดเวลา Promotion เหมือนกับ Visual Studio Express”

Update !!! 12/11/2005
มีคนถามว่ามันเป็น Beta หรือเปล่า ก็บอกได้เลยว่า Visual Studio 2005 Express Edition ที่อยู่ในเว็บ มันเป็นตัว Full Version แล้วครับ ไม่ใช่ Beta หรือ Demo/Trial ครับ ซึ่งตอนนี้ผมกำลังโหลดอยู่เหมือนกันครับ

แต่เท่าที่คาดการณ์นะครับ ในเรื่อง Express Edition ที่ได้ฟังจากพี่เดฟ และความเห็นส่วนตัวนั้น เป็นการเปิดตัว Free Developer Tools สำหรับ .NET Platform ทั้งระบบครับ โดยภายใต้การทำ IDE จาก Microsoft แทน Third Party อื่นๆ เพราะว่าปีหน้า Vista กำลังมาครับ และ Vista เป็นการทำระบบทั้งหมดใน OS ใหม่ทั้งหมด ไม่ว่าจะ Avalon, WinFS, Indego และทั้งส่วนของ Base Operating System ด้วย โดยคาดการณ์ไว้ว่า Microsoft Windows Vista จะไม่สนับสนุน Win32 Library , VB Runtime Library 6.0 หรืออื่นๆ ก่อนหน้า .NET Platform ทั้งหมด หรือถ้าสนับสนุน ก็ผ่าน Emulator หรือ Run Time Virtual Machine ไปแทน ซึ่งทำให้ประสิทธิภาพลดลงไป แต่ใช้งานได้ แต่ช้าหน่อย อย่าลืมนะครับว่า .NET มันมี 2 ส่วนใหญ่ๆ คือ CLR (Common Language Runtime) กับ CLI (Common Language Infrastructure) ซึ่งทำให้คนที่พัฒนาซอฟต์แวร์ทำงานได้ง่าย และดีขึ้น รวมไปถึงถ้าใช้ C++.NET ในการพัฒนาแล้ว Compile เป็น Native Code แบบ .NET แล้วด้วยเนี่ย ทำให้เราใช้ Feature ใหม่ๆ ใน .NET รุ่นใหม่ๆ ได้ดีขึ้น ซึ่งเป็นการทำ Express Edition ออกมาเป็นของเล่นของนักพัฒนาซอฟค์แวร์ได้ลองใช้ และปรับเปลี่ยนการใช้งานของตนเอง รวมไปถึง Recompile ตัว Software เดิมใหม่ด้วย เพื่อให้ Win32 Library , VB Runtime Library 6.0 หรืออื่นๆ ที่ตนเองได้ใช้อยู่ได้ทำการเปลี่ยนแปลงตัวเองมาทำงานบน .NET แทน ซึ่งดูจากเวลาที่ออกก็มีเวลาในการปรับเปลี่ยนตรงนี้ประมาณเกือบ 1 ปีเห็นจะได้ครับ ซึ่งที่ทำแบบนี้เพราะต้องเอามารองรับการเปลี่ยนระบบ Base Operating System ใน Vista เองด้วย เพื่อให้การปรับเปลี่ยนนี้ราบรื่นขึ้น และมี Software ที่ทำงานได้ดีบน Vista ซึ่งบทเรียนนี้เกิดจากตอน XP ที่ออกมาไม่ได้ทำแบบนี้เลยทำให้ซอฟต์แวร์ส่วนใหญ่ทำงานไม่ค่อยได้ในตอนแรกนั้นเอง และรวมไปถึง Microsoft น่าจะทำออกมาแข่งกับ Java Platform ที่เพิ่งปล่อยพวก Enterprise IDE ออกมาให้ใช้ฟรีๆ แถมด้วยตลาด Database ที่ออก Oracle ที่ออก Express Edition ที่ยังเป็น Beta เช่นกัน โดยคราวนี้ Microsoft ปล่อยมา ยกระบบเลยทั้ง IDE และ DBMS ด้วย

แหม เล่นซะคนช็อคกันทั่วโลก ไม่อยากเชื่อว่า Microsoft จะสำกดคำว่า Free !!! ได้

Update !!! 13/11/2005
แต่ลองใช้งานแล้ว convert project เก่าจาก VB.NET 2003 มาใช้ใน 2005 ก็ไม่มีปัญหาใดๆ ตัว project ทำงานได้ปกติดี แต่ไม่รู้ว่าตัว project ที่ซับซ้อนมากๆ จะมีผลหรือเปล่า

ส่วนการ download มาแล้วทำการลง แนะนำว่าให้ทำการ register ด้วยจะดีมากครับ เพื่อเป็นการยืนยันลิขสิทธิ์ครับ กันไว้ก่อนดีกว่า

แต่ผมชอบมากเลยสำหรับ Learning Resources for Visual Basic Express เป็น VDO Review ครับ ทำได้ดีพอสมควรทีเดียว

http://msdn.microsoft.com/vstudio/express/vb/learning/default.aspx

เท่าที่ดูนี่ ผมว่างานนี้ Microsoft มาแปลก ๆ ดูทุ่มเท มากเลยงานนี้ ;)