แถลงไข CPU 64-bit

อะไรคือ CPU 64-bit

         ใน Computer Architecture นั้น 64-bit เป็นการขยายของการใช้ integer, floating point, memory address หรือ ชนิดข้อมูลอื่นๆ ที่ต้องการใส่ข้อมูลที่มีขนาดความกว้างของข้อมูลมากถึง 64 bit (8 octets) โดยที่รายละเอียดของ CPU และ สถาปัตยกรรม ALU บน register, address buses, หรือ data buses ต้องมีขนาดเท่านั้นด้วย

         โดยในปี 2004 ได้มี CPU 64-bit CPU เป็นพื้นฐานสำหรับตลาดระดับ Server และเตรียมพร้อมสำหรับการเข้าสู่สายการผลิตหลักของตลาด Personal Desktop โดยการเข้ามาของ AMD64 (AMD), EM64T (Intel) และ PowerPC 970 (G5 จาก IBM)


ความเหมือนที่แตกต่างของ CPU 32-bit และ 64-bit

         นับแต่อดีตถึงปัจจุบันปริมาณข้อมูล ที่ใช้ในการประมวลผลต่อ 1 รอบสัญญาณนาฬิกามีจำนวนมากขึ้น อย่างไม่มีที่สิ้นสุด การเปลี่ยนแปลงจาก 16-bit ในอดีตเมื่อ 10 ปีก่อน มา 32-bit ในปัจจุบัน และกำลังก้าวเข้าสู่โลก 64-bit ได้สร้างปรากฎการณ์ใหม่ให้กับโลกคอมพิวเตอร์ได้อย่างมากมาย ทั้งในด้านจำนวนข้อมูลที่ส่งต่อในระบบภายในที่มีจำนวนมากขึ้น และความเหมือนจริงในการทำงานด้านมัลติมีเดียต่าง ๆ มากมาย ยังผลให้ ข้อมูลที่เข้าสู่กระบวนการประมวลผลนั้นมากตามไปด้วย ซึ่งไม่ได้เกี่ยวข้องในส่วนของความเร็วในการประมวลผลแต่ประการใด เป็นเพียงเพิ่มความหนาแน่นของข้อมูลต่อชุด ในการประมวลต่อครั้งเท่านั้น

         จากที่ได้กล่าวไปแล้วนั้นว่าความแตกต่างในทั้งสอง ไม่ได้แตกต่างกันที่ความเร็ว ขยายความให้เข้าใจได้ง่ายคือ สัญญาณนาฬิกายังคงมีความเร็วเท่าเดิม แต่ความหนาแน่นของข้อมูลต่อชุดคำสั่งมีมากขึ้นนั้น เราอาศัยการเปรียบเทียบที่ memory addrees ระหว่าง 32-bit และ 64-bit โดยที่ 32-bit นั้นมี memory address ได้ 4Gbytes เท่านั้น แต่ใน 64-bit นั้น มี memory address ถึง 16 Ebytes (~17,179,869,184 Gbytes) ทำให้เกิดความได้เปรียบในด้านความเร็วในการทำงานใน software ที่ต้องการ การไหลของข้อมูลในปริมาณที่มาก ๆ เช่นการเล่นเกม, ระบบฐานข้อมูลใหญ่ ๆ , ระบบที่ต้องการความละเอียดต่อการประมวลผลมาก ๆ เช่นการ Simulate, Render, Retouch, Lenear Editing ฯลฯ แต่หากเป็น software โดยทั่วไปแล้ว แทบจะไม่เห็นความแตกต่าง แต่อย่างใด “ปัญหาของระบบ 32-bit ที่ทำให้เกิด 64-bit ขึ้นมาในปัจจุบันคือ ขนาดของหน่วยความจำหลัก (RAM Memory) มีจำกัดเกินกว่าจะยอมรับได้แล้ว”

         CPU 32-bit นั้นมีความต้องหน่วยความจำหลักได้มากสุดที่ 4Gbytes เท่านั้น แล้ว 4Gbytes มาจากไหนหล่ะ ?
คำตอบคือ 32-bit register นั้นมาจาก 2 ยกกำลัง 32 หรือมีขนาดที่ 4Gbytes ของหน่วยความจำหลัก (RAM memory) นั้นเอง

         นั้นหมายความว่า CPU 64-bit นั้นมีความต้องหน่วยความจำหลักได้มากสุดที่ …..  16 Ebytes * (~17,179,869,184 Gbytes) นั้นเอง ซึ่งมาจาก 2 ยกกำลัง 64 หรือมีขนาดที่ 16 Ebytes ของหน่วยความจำหลัก (RAM memory)
* Ebytes อ่านว่า เอ๊กซาไบต์ (Exabyte)

232    = 4,294,967,296 bytes
        =~ 4 Gbytes
264    = 18,446,744,073,709,551,616 bytes
        = ~ 16 Ebytes หรือ 17,179,869,184 Gbytes

การแปลง byte เป็นหน่วยต่าง ๆ อ่านที่นี่ครับ พื้นที่ในฮาร์ดดิสค์หายไปไหน ?? มันคือพื้นที่ผีอยู่ หรือว่ามันหายไปจริงๆ !!!


แล้วมันแตกต่างกันตรงไหนในด้านการประมวลผล ?

         การประมวลผลจริง ๆ แล้วไม่แตกต่างกันในเชิงความเร็วมากนัก ดังที่ได้กล่าวไแล้ว แต่จะแตกต่างนั้นอยู่ที่ ความหน่าแน่นของข้อมูลที่ประมวลผลต่อสัญญาณมาฬิกามีมากขึ้น ตัวอย่างเช่น

  • คุณชมภาพยนต์ในจอคอมพิวเตอร์จากแผ่น VCD (เทียบได้กับ 32-bit) และ DVD (เทียบได้กับ 64-bit) ถ้าคุณได้รับชมผ่าน VCD ในจอคอมพิวเตอร์คุณได้ภาพที่เล็ก และไม่ละเอียด เท่ากับ DVD ที่มีภาพที่ละเอียดกว่า และยังขยายขนาดของภาพให้ Full Srceen ได้โดยภาพไม่แตกเหมือน VCD
  • คุณเล่นเกม ภาพที่ได้จะมีมิติมากขึ้นกว่าเดิม แสงเงาต่าง ๆ จะสมจริงมากขึ้น แต่ไม่ได้ทำให้การประมวลเร็วขึ้นแต่อย่างใด
  • ฯลฯ

         แต่ทั้งนี้ทั้งนั้น ต้องขึ้นอยู่กับ Software ที่นำมาทำงานร่วมกับ CPU 64-bit ด้วยว่าสนับสนุนการทำงานนี้หรือไม่ มิเช่นนั้นก็ไม่สามารถใช้งาน CPU 64-bit ได้อย่างมีประสิทธิภาพดังที่ตั้งใจไว้          สรุปให้เข้าใจง่าย ๆ ว่า 64-bit เป็นการทำให้การประมวลผลต่อครั้งมีความละเอียดมากขึ้น ไม่ใช่เร็วมากขึ้น อย่างที่ หลาย ๆ คนเข้าใจ แต่การเร่งความเร็วในการประมวลผล น่าจะเป็นในส่วนของ Dual Core CPU มากกว่า แต่การทำให้ Dual Core CPU สามารถใช้งานได้ดีและเต็มประสิทธิภาพนั้น จำเป็นอย่างมากที่ software ที่เราใช้ต้องสนับสนุนระบบ Multiprocessor ด้วยเช่นกัน

อะไรคือโปรแกรม และการเขียนโปรแกรม ตอนที่ 2 (จบ)

ตอนที่แล้วจาก : อะไรคือโปรแกรม และการเขียนโปรแกรม ตอนที่ 1



หันกลับมา
มองการเขียนโปรแกรม

            เมื่อเราได้มองซ้ายมืองขวาแล้ว เราก็คงพบว่า ทั้งการก่อสร้าง ทั้งการเขียนนิยาย มีคอนเซปท์ที่ค่อนข้างคล้ายกันมากที่เดียว และถ้าเราเทียบกับการสร้างโปรแกรมแล้ว เราจะได้อะไร ?

            หาคิดเป็นการเขียนโปรแกรม เราจะพบว่าโปรแกรม ก็คือการที่เราสรางอะไารซักอย่างขึ้นในคอมพิวเตอร์ หรือว่าการเขียนนิยายสักเล่มขึ้นมาในคอมพิวเตอร์ การสร้างโปรแกรมขึ้นมาสักตัวนั้น ต้องการจินตนาการ, ความคิดพื้นฐาน และคอนเซปท์อื่น ๆเบื้องต้นมากมาย ว่าเราต้องการอะไร เมื่อสเร็จแล้วจะสามารถทำอะไรได้บ้าง และต่อไปก็คือ การวิศวกรรมซอฟต์แวร์ ซึ่งเป็นการเขียนพิมพ์เขียวของตัวโปรแกรมของเรา เพื่อให้ออกมามีความเสถียรภาพ แก้ไขได้ง่าย ต่อเติมได้ตามความต้องการ ฯลฯ และนอกจากนี้ ยังขึ้นอยู่กับขนาดของโปรแกรมอีกด้วย คือเมื่อสร้างโปรแกรมที่มีขนาดใหญ่ขึ้นนั้น ต้องใช้เวลาออกแบบต่าง ๆ นานขึ้น บางโปรแกรมต้องแก้แบบกันไม่รู้กี่เที่ยว กว่าจะได้ลงมือเขียนจริง ๆ และการสร้างนั้น มักจะทำเป็นทีมหลาย ๆ คน ยิ่งโปรแกรมที่มีขานดใหญ่เท่าใด ก็ยิ่งใช้คนมากเท่านั้น แต่ละคนแบ่งหน้าที่กันอย่างชัดเจน และนอกตากนี้แล้ว ถ้าแบบตอนแรกของโปรแกรมถูกวางไว้ไม่ดี ก็ยากที่จะสามารถพัฒนาโปรแกรมที่ดีได้แน่นอน
            นอกจากนี้ ความรู้พื้นฐานกับโปรแกรมหรือระบบที่ต้องการสร้างเป็นสิ่งสำคัญ และจำเป็นที่เราต้องรู้และทำความเข้าให้ดี ๆ จะกล่าวว่า ความรู้พื้นฐานเหล่านี้เป็นส่วนหน่งของ แบบแปลนพื้นฐานของสิ่งก่อสร้าง หรือว่า โครงเรื่องพืนฐานของนิยาย ก็ไม่ผิดนัก ซึ่งขอยกตัวอย่างโปรแกรมบางประเภท และความรู้พื้นฐานบางส่วนเท่านั้น ซึ่งมีดังนี้

  • โปรแกรมที่ทำการจำลองการเดินทางของแสง จำเป็นต้องเข้าใจ Electromagnetics (Maxwell’s equations) และ Finite Defference method เป็นอย่างน้อยที่สุด

  • การจำลองของไหลในท่อน้ำ อาจจะใช้ Navier-Stoke’s equations กับ Finite Elements methods
    Voice recognition program
    อาจจะต้องใช้ความรู้ Pattern recognition, Signal processing ตลอดจนเรื่องอื่นๆ ที่เกี่ยวข้อง

  • โปรแกรมแต่งภาพ ก้ต้องรู้เรื่องพวก Image processing ต่างๆ ตลอดจน Compression techniques ต่าง ๆ
    3D Modeling
    ก็ต้องเข้าใจคณิตศาสตร์ของ Bazier curve, B-Spilne, NURB, Ray tracing หรือว่าเร็วๆ นี้ก็ Photon mapping

  • โปรแกรมเพื่อทำการดู Pattern ใน DNA sequence ก็จำเป็นต้องรู้เกี่ยวกับเรื่องของ DNA เบื้องต้นด้วย
    การเขียนเกมปรแกรม อาจจะต้องรู้ A*Path-finding, Collision  detecting, การประยุกต์ใช้ DSP-Tree ฯลฯ

  • ฯลฯ

เป็นต้น หรือว่าแม้แต่การพัฒนาส่วนประกอบใหม่ ๆ ของระบบเดิม ๆ เช่น

  • การเพิ่มตัวป้องกันเมลขยะ หรือ Spam mail ในโปรแกรมรับ e-mail ก็ตาม อาจจะใช้ความรู้พวก Machine learning, Pattern recognition, Rule discovery ฯลฯ ต่าง ๆ มากมาย

  • การทำ On-line e-Commerce นั้นก็อาจจะใช้ Machine learning เข้ามาช่วยกันกับ Data clustering และ  selt-organizing Map เพื่อแนะนำสินค้าให้กับลูกค้า

  • การเขียนโปรแกรมเพื่อควบุคมระบบ Network แบบอัตโนมัติ จำเป็นต้องรู้ Network Flows และ Optimization theory

  • ฯลฯ

            ซึ่งจะเห็นได่ว่า การเขียนโปรแกรมเหล่านี้นั้น ถ้าไม่มีความรู้และความเข้าใจพื้นฐานในสิ่งที่เราต้องการเขียนในระดับหนึ่งแล้ว ก็คงไม่สามารถทำได้ หรือว่าแม้ทำได้ก็ปราศจากความรู้เหล่านี้ ก็คงจะไม่มีประสิทธิภาพมากนัก ตลอดจนความผิดพลาดก็เป็นไปได้สูง นอกจากนั้นความรู้เบื้องต้นในแต่ละเรื่อง หลายครั้งไม่สามารถที่จะใช้งานข้ามไปข้ามมาในเรื่องอื่น ๆ ได้ ไม่ว่าแนวความคิดพื้นฐานจะใกล้เคียงกันแค่ไหนก็ตาม


ภาษาและการเขียนโปรแกรม

            การเขียนนิยาย เราใช้ภาษาใดภาษาหนึ่ง (ภาษาไทย, ภาษาอังกฤษ ฯลฯ) ในการเขียนบอกให้ตัวละครไปตามสถานที่ต่าง ๆ ในการเขียนบทสนทนา ในการเขียนบรรยายฉาก และเขียนในสำนวณต่าง ๆ กันไปแล้วแต่ผุ้เขียนแต่ละคน

            สำหรับการเขียนโปรแกรมนั้น ก็คือการเขียนคำสั่งเพื่อให้คอมพิวเตอร์ทำงานตามที่เราต้องการ อย่างที่ได้กล่าวถึงไปแล้วข้างต้น และเช่นเดียวกับการเขียนนิยาย ที่เราใช้ภาษาที่คนอ่านเข้าใจ การเขียนโปรแกรมคอมพิวเตอร์ ก็คือการเขียนคำสั่ง โดยใช้ภาษาที่คอมพิวเตอร์ สามารถเข้าใจได้ ซึ่งนั้นก็คือ ภาษาเครื่อง (Machine Language) นั่นเอง แต่ว่าทั้งนี้ ภาษาเครื่องนั้นยากต่อการทำความเข้าใจมาก จึงได้มีการพัฒนาภาษารับดับสูง (High-level Language) ขึ้นมามากมายหลายภาษา เพื่อให้คนสามารถเขียนโปรแกรมได้ง่ายขึ้น และใช้โปรแกรมที่เรียกกว่า คอมไฟเลอร์ (Compiler) ทำการแปลเป็นภาษาที่เครื่องเข้าใจอีดต่อหนึ่ง โดยภาษาระดับสูงที่เป็นที่รู้จักกันโดยทั่วไปก็คือ  C, C++, Pascal, Java ฯลฯ นอกจากนี้ยังมีอีกหลายภาษาที่ไม่เป้นที่รู้จักกันมากเท่ากับภาษาเหล่านี้ แต่ว่าก็เป็นภาษาที่สำคัญ และมีบทบาทในงานหลายอย่าง เช่น Lisp, OcaML, Python, Perl, Hashell ฯลฯ โดยภาษาเหล่านี้จะมีจุดเด่น และจุดด้อนแตกต่างกันไป

เรียบเรียงบทความโดย Rawitat Pulam

บทความฉบับนี้เป็นไปตามข้อกำหนดของ GNU Free Documentation License 1.2. เท่านั้น

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 มาแปลก ๆ ดูทุ่มเท มากเลยงานนี้ ;)

แก้ปัญหาภาษาไทยของ MySQL Version 4.x ขึ้นไป

อย่างแรกที่เจอปัญหาใน MySQL 5.0 คือถึงแม้จะกำหนด default-character-set เป็น utf8 แล้วก็ตามที แต่ก็ยังคงมีปัญหากับการจัดการข้อมูลภาษาไทยครับ

ซึ่งเราต้องปรับเปลี่ยนพฤติกรรมของตนเองใหม่เล็กน้อย 3 อย่างใหญ่ ๆ ครับ

  1. กำหนด collation_connection หรือ collation (ถ้าคุณใช้ PHPMyAdmin ที่เป็น interface ภาษาไทยก็จะเรียกว่า "การเรียงลำดับ" ครับ) ของ Database และ Table ที่เราใช้ต้องเป็น utf8_thai_ci เพื่อบอกว่าเราต้องการใช้ภาษาไทยกับ Database และ Table นี้ครับ
  2. กำหนด DEFAULT CHARSET ของ Database และ Table ที่เราใช้ต้องเป็น utf8 เพื่อบอกว่าเราต้องการใช้ภาษาไทยกับ Database และ Table นี้ครับ
  3. กำหนด Storage Engine ให้กับ Table ด้วย เพื่อจะได้ใช้งานได้ดี และเหมาะสมกับการเข้าถึงข้อมูลครับ เช่นต้องการควบคุม Transaction ของข้อมูลก็ใช้ BDB หรือ InnoDB เป็นต้นครับ

ตัวอย่างเช่น

CREATE DATABASE TESTDB
    DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE TEST (
  name VARCHAR(150) NOT NULL,
  PRIMARY KEY(name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

โดยที่ ENGINE=InnoDB เป็น Storage Engine หนึ่งของ MySQL ส่วนใหญ่จะใช้ MySIAM กันจะเป็น ENGINE=MySIAM แทนครับ

ส่วน DEFAULT CHARSET=utf8 นี่ต้องตามนี้ครับ แต่ว่าเท่าที่เจอกันจะเป็น DEFAULT CHARSET=utf8 หรืออื่นๆ ซะมากกว่าครับ ลองดูนะครับ

หรือถ้า Database และ Table เก่าเรามีปัญหาไม่สามารถปรับเปลี่ยนได้ ก็ให้กำหนดตอนก่อนจะ Query ข้อมูลก็ทำได้ครับ โดยใช้คำสั่ง

SET CHARACTER SET utf8;

และตามด้วย

SET collation_connection = utf8_general_ci;

แล้วทำการ Query ข้อมูลครับ

ไม่มีหนังสือเล่นได้ดีที่สุด

วันนี้ผมเซ็ง ๆ เล็กน้อยกับเพื่อน ๆ หลาย ๆ คน ในเรื่องการเลือกหนังสือเอามาอ่านประกอบการเรียน หรือแม้แต่เอามาอ่านเพื่อเสริมความรู้ด้านที่ตนขาดหายไป ส่วนใหญ่แล้วจะถามในคำถามที่ไม่แตกต่างกันคือ “หนังสือเล่มไหนอ่านแล้วครอบคลุม เนื้อหา” หรือ “หนังสือเล่มไหน อ. ออกสอบในนั้น” รวมไปถึงบางครั้งก็ถามที่ตัวอาจารย์ท่านเองว่า “อ. ครับ เล่มไหน อ. เอาออกข้อสอบ” กลับกลายเป็นว่าหลาย ๆ คนยึดมั่นถือมั่นกับหนังสือที่จะทำให้ได้มาซึ่งคะแนน มากกว่าความรู้ที่ตนเองจะได้เสียอีก บางเล่มก็ห่วยแตกสิ้นดี บางเล่มก็ดี อธิบายละเอียดดีมาก แต่เล่มใหญ่ไปหน่อย อันนี้ก็พอทน

ซึ่งผมอยากจะบอกแบบนี้ว่า ไม่มีหนังสือเล่มไหนหรอกที่จะมีให้ครบทั้งหมด ทั้งมวลในนั้น หรือแม้แต่ดีที่สุด ไม่ว่าจะ Text Book เอง หรือแม้แต่ภาษาไทยของเราเอง ซึ่งส่วนใหญ่แล้วจะสอนในเชิงการใช้งานในระดับพื้นฐานในด้านต่าง ๆ มากกว่าการประยุกต์ใช้งาน ซึ่งส่วนใหญ่แล้วคนอ่านจะไม่ชอบ เพราะว่ามันมองอะไรไม่ออก หรือทำอะไรไม่เป็นชิ้นเป็นอันเท่าไหร่ซึ่งส่วนใหญ่จะไม่สามารถนำไปสู่การเขียนโปรแกรม/ซอฟต์แวร์ระดับใหญ่ ๆ ได้

เหตุนั้น ไม่ใช่เพราะคนเขียนไม่อยากเขียน หรือไม่มีความสามารถ เพียงแต่ในด้านการประยุกต์ และปรับใช้นั้นเป็นงาน ที่เราต้องศึกษาและร่วมรวมเอามายำรวมกันเอง โดยใช้หลักประยุกต์ต่าง ๆ ที่ได้ร่ำเรียนมาในเรื่องแรก ๆ ของการเรียนด้านการเขียนโปรแกรม/ซอฟต์แวร์ คือพวก logic/algorithm นั้นเอง

นั้นหมายความว่า ถ้าเพิ่งเริ่มต้นจาก 0 แล้วแนะนำว่าให้อ่านหนังสือมาก ๆ ไม่ต้องเลือกว่าจะตรง หรือไม่ตรงกับที่สอน จะออกสอบหรือไม่ ไม่สำคัญ เพราะว่าทุกอย่างที่คุณอ่าน มันไม่ได้ใช้แน่นอน ไม่มากก็น้อยเลยหล่ะ

ผมยังจำได้ดีในวันที่ผมตัดสินใจซื้อหนังสือคอมฯ ในเดือนแรก เดือนนั้นผมหมดไปกับเรื่องนี้เกือบพันกว่า เพราะว่าผมซื้อทุก ๆ เล่ม ทุกยี่ห้อ ผมจำได้ ผมซื้อตั้งแต่ computer today ยังแถม computer mart ฉบับแรก ที่เป็นหนังสือพิมพ์ (ตอนหลังเปลี่ยนชื่อเป็น commart) แถมซื้อทุกยี่ห้อมานั่งอ่าน ศึกษามันดะไปหมด ทำอย่างนี้ไปสัก ปีกว่าๆ เริ่มรู้ เริ่มเข้าใจหลักการซื้อหนังสือคอมฯ มากขึ้น ก็เริ่มเลือกหนังสือว่าจะเอาเล่มไหน ไม่เอาเล่มไหน ก็เริ่ม ๆ ลดบาง เพิ่มบาง ไป ๆ มา ๆ ในตอนนี้ก็เหลือแค่ 2 เล่มคือ PCWorld และ PCMagazine ที่อ่านประจำ แต่ก็มีพ่วง ๆ บางเดือนที่อาจจะสนใจในบางเรื่องก็แนบๆ มาบาง 1 – 2 เล่ม แต่ก็ไม่ได้อ่านแต่หนังสือพวกคอมฯเท่านั้น ก็อ่านพวกแนว ๆ วิทยาศาสตร์, ปรัชญา, ธุรกิจ , ชีวประวัติ ต่าง ๆ เป็นต้น

ก็อ่านให้ได้ความรู้มากขึ้น ได้เข้าใจโลก เข้าใจอะไรมากมายมากขึ้น ซึ่งทุก ๆ อย่างที่เราอ่าน มันก็ยังคงอยู่ในหัวผม เอามาปรับใช้ในการทำงาน และรวมไปถึงการติดต่องานต่าง ๆ ได้เป็นอย่างดี

อีกทางหนึ่งคือการค้นหาข้อมูลจาก Google (ใช้บ่อยเพราะเร็วดี), MSN Search, Yahoo และ Copernic Search เพื่อหาข้อมูลในการแก้ปัญหา, หาความรู้ใหม่ ๆ , ทำรายงานต่าง ๆ โดยทำอยู่ทุกวัน ยิ่งถ้าเราทำงานที่ใหญ่ ๆ บางครั้งต้อง Optimize Code เราก็ต้องหาหลักการ หรือพวกรูปแบบที่ทำงานได้เร็ว ๆ ซึ่งบางครั้งเราก็ต้องมากนั่งแกะ Code ชาวบ้านเค้าว่าเค้าทำอะไรบ้าง ทำยังไง ถึงได้เร็ว ได้ทำงานได้ไม่มีปัญหา ซึ่งมันทำให้เรามีประสบการณ์มากขึ้น และเพิ่มพูนทักษะ ในการต่อยอดต่อไปด้วย

ยิ่งพวก Technology ต่าง ๆ มันไม่หยุดนิ่ง เช่น .NET 1.0 –> .NET 1.1 –> NET 2.0 หรือ MySQL 4.x –> MySQL 5.0 ยิ่งทำให้เราต้องยิ่งรู้ทัน ใน feature ใหม่ ๆ และเข้าใจว่าสมควรหรือไม่อย่างไรในการเอามาทำงาน ในการทำงานต่าง ๆ ของเราหรือไม่ด้วย ซึ่งสิ่งเหล่านี้ทำให้เราเอามาประยุกต์ใช้ได้ถูกทางมากขึ้น ซึ่งสิ่งที่ได้จากการประยุกต์นี้ นั่นคือประสบการณ์การที่ได้จากการรับข้อมูลข่าวสารจากหลาย ๆ แหล่ง เอามากรองเข้าด้วยกันจนได้สิ่งที่ดีกว่า