จะเรียนเกี่ยวกับคอมพิวเตอร์

ผมขอแยกออกเป็น 3 ด้าน ด้วยกัน
1. Software Production, Algorithm & Theory ซึ่งคือด้าน Computer Engineering, Computer Science, Information Science เป็นการศึกษา เรื่องของ

  • correctness โปรแกรมที่คุณเขียนจะต้องถูกต้องทุกกรณี ไม่มีความผิดพลาดเกิดขึ้น โดยต้อง ทำ math proof ได้ ว่าทำไมถึงถูกต้อง
  • performance โปรแกรมที่เขียนจะต้องมีประสิทธิภาพใสการทำงานสูง ทำงานเร็ว โปรแกรมเปรียบเทียบบางโปรแกรมอาจจะใช้ O(n2), O(n3) แต่คนที่มีความรู้เรื่อง algorithms เป็นอย่างดี อาจจะสามารถเขียนให้โปรแกรมทำงานใน O(n logn) หรือ O(n) ได้
  • efficency โปรแกรมที่เขียนจะต้องทำงานได้ดีที่สุดโดยใช้หน่วยความจำน้อยที่สุด
  • OS เวลาเขียนโปรแกรมใหญ่ ๆ ที่ใช้ thread มากมาย ถ้าเขียนแล้วเกิด deadlock ขึ้นคุณจะแก้ปัญหายังไง แก้ปัญหาเรื่อง priority อีก ว่า thread ไหนจะได้ทำงานก่อน ถ้าคุณไม่เข้าใจเรื่องนี้ ก็อาจจะเขียน thread มั่ว ๆ ซึ่งอาจทำให้โปรแกรมทำงานช้า, เกิด deadlock ได้
  • data communication and network ในระบบ LAN คอมพิวเตอร์มันคุยกันได้ยังไงครับ ในเมื่อ IP address เป็นสิ่งที่สมมติขึ้นมา ในการที่เราจะวางระบบเครือข่าย เช่น ใน SW ขนาดใหญ่ เวลา implement อาจจะต้องดูเรื่อง network ด้วย ถ้าคุณไม่เข้าใจเรื่อง router, gateway, dns ต่าง ๆ คุณจะวางระบบไม่ได้
  • AI ปัญญาประดิษฐ์ ถ้าคุณจะไปเป็นนักพัฒนาเกมส์ แล้วคุณไม่รู้จักเรื่อง AI คุณก็จะทำไม่ได้อีก
  • IR ก็เหมือนกัน ถ้าคุณไปเขียนระบบที่ต้องมี Full Text Search นั้นเอง
  • etc …. อื่นๆ อีกนิดหน่อย

ซึ่งศึกษาในเชิงลึกในส่วนของ S/W รวมถึงการจัดการระบบงานต่างๆ และในแนวกว้างในส่วนของ H/W

2. Hardware Design หรือพวกที่เรียนด้าน Electronic และ Physic, Physic (Micro) Controller เป็นการทำงานร่วมกับพวกที่อยู่กับข้อที่ 1 ในการทำ คิดค้นหาอุปกรณ์ใหม่ๆ เพื่อให้ พวกข้อที่ 1 นำไปแก้ปัญหา และตอบ Requestment ของผู้ใช้ต่างๆ ให้ออกมาใช้งานได้ตามที่ลูกค้า หรือผู้ใช้ต้องการ โดยศึกษาในเชิงลึกในด้าน H/W และแนวกว้างในส่วนของ S/W

3. Technical หรือ Consult ต่างๆ เป็นผู้ให้คำปรึกษาต่างๆ แบ่งได้ 3 ระดับคือ

  • Administrator คือผู้ดูแลระบบต่างๆ บางครั้งอาจใช้คำว่า System Director, System Administrator หรือ System Management ติดตั้ง และดูแลในด้านจัดการระบบทรัพยากรระบบงานขององค์กรต่างๆ ดูแล Server หรือเครื่องแม่ข่ายให้อยู่ดี มีสุข
  • Technical Support เป็นคนที่คอยดูแลระบบงานต่างๆ ไม่ว่าเครื่องเสีย เครื่องมีปัญหา ต่างๆ ที่เป็นเครื่องลูกค่ายต่างๆ จะลงไปแก้ไขปัญหา
  • Consult เป็นคนดูแลในด้านการจัดการ ให้คำปรึกษา และแก้ปัญหาในด้านสินค้า นั้นๆ

โดยในด้านที่ 1 และ 2 ต้องมีพื้นฐานทางความคิดมาจากการจัดการความคิดแบบเป็นระบบมากๆ และการเรียนจะเน้นไปในทางการทำงานร่วมกัน เรียนในด้านทฤษฎี และทำการปฎิบัติไปพร้อมๆ กัน ส่วนในด้านที่ 3 นั้นเป็นงานเชิงช่างเทคนิคมากกว่าครับ

ส่วนใหญ่ด้านที่ 1 และ 2 นั้นคนที่จบ ม.ปลายจะสามารถเข้าไปศึกษาได้ง่ายกว่า แต่ก็มีสายอาชีพมาศึกษาเหมือนกันแต่ต้องเก่งจริงๆ
ส่วนด้านที่ 3 นั้น ส่วนใหญ่จะเป็นคนที่ศึกษามาจากด้านสายอาชีพครับ

แต่ไม่ขอฝันธงว่าด้านไหนดี เพราะว่าทุกด้านต้องทำงานร่วมกันอยู่แล้วครับ

 

Programmer Life Style

  1. ค่าของคน อยู่ที่ผลของงาน
  2. โอกาศในวันพรุ่งนี้ขึ้นอยู่กับการกระทำในวันนี้
  3. จงรักและเชื่อในงานทีทำ ดูแลมันให้เหมือนลูกเหมือนเมีย
  4. สมดุลของชีวิตส่วนตัวและชีวิตงาน ห้ามทำงานเกิน 10ชม. เด็ดขาด
  5. ชีวิตคุณอาจจะมีแค่วันพรุ่งนี้ ดังนั้นทำวันนี้ให้ดีที่สุด
  6. เราเกิดมาเพื่ออะไร คุณค่าต่อสังคมของเราคืออะไร เราทำอะไรให้สังคมบ้าง
  7. คิดก่อนทำ
  8. ทำเสียวันนี้ ไม่ต้องรอวันพรุ่งนี้
  9. อย่ายึดติดกับภาษา มันก็แค่ฆ้อน ตะปู ที่ใช้สร้างบ้าน วิธีการสร้างบ้านต่างหากที่สำคัญ
  10. หมั่นศึกษาหาความรู้ใหม่ๆ โลก IT เปลี่ยนแปลงทุกนาที
  11. ค้นคว้าศึกษาด้วยตัวเองก่อนถามผู้อื่น ความรู้ที่เกิดจากการประมวลผลขึ้นมาเอง จะอยู่ติดเราไปจนตาย
  12. ให้ความสำคัญกับคุณภาพของงานที่ทำให้มากที่สุด มันคือสิ่งวัดคุณค่าของเรา
  13. ชีวิตคือของเรา แต่งานทำให้เรามีคุณค่า และผลงานคือสิ่งที่ทำให้เราอยู่ในความทรงจำ
  14. จงเป็นถูกเลือก ไม่ใช่ถูกลืม
  15. ธุรกิจคอมพิวเตอร์เหมือนเลขฐานสอง เป็น 1 หรือเป็น 0 อยู่รอดหรือดับสูญ
  16. จงทำมากกว่าพูด แต่เมื่อพูดแล้วต้องทำให้ได้ ถ้าไม่ได้อย่าพูดออกมา

 

เปิดตัว PodCastsGen WebBase Version 0.0.1 Alpha

Link@PodCastsGen WebBase Version 0.0.1 Alpha

เป็นโปรแกรมประยุกต์ ที่ทำงานบนได้บน Web Browser โดยใช้ความสามารถของภาษา PHP และ JavaScript แล้วทำการ Export หรือ Generate Code เป็น XML ซึ่งอยู่ใน specification ของ RSS Feed และตรงตาม specification ของ Podcasts ในระดับสากลด้วย

ขั้นตอนการทำงาน และการใช้งานไม่ยุ่งยากเนื่องจากในหลักการเอาข้อมูลที่ได้จาก form ในระบบ Input data dynamic หรือการใส่ข้อมูลเชิงยืดหยุ่นนั้นเอง กล่าวคือ ระบบจะมีข้อมูลพื้นฐานที่จำเป็นก่อน นั้นคือ รายละเอียดของ Podcasts ต่างๆ ไม่ว่าจะเป็น

  • ชื่อ
  • ใจความสำคัญ
  • ที่อยู่ของ Podcasts ที่จะเอาไปใส่
  • ชื่อผู้จัดทำ
  • อีเมล ของคนจัดทำ นั้นๆ
  • โดยที่จะเริ่มด้วย Episodes แรกเป็นขั้นเริ่มต้น ซึ่งคำว่า Episodes เป็นคำที่เรียกจำนวนตอน หรือจำนวนไฟล์ของมีเดีย นั้นๆ ครับ

การใส่ Episodes ในโปรแกรมประยุกต์นี้ จะเป็นไปในลักษณะของการใส่ที่อยู่ของไฟล์มีเดีย ซึ่งไฟล์มีเดียที่จะเอามาใส่นั้นควรมีลักษณ์สำคัญคือ

  • มีขนาดที่ไม่ใหญ่มาก (แนะนำไม่ควรเกิน 10MB ต่อความยาวในการออกอาหาศ 1ชม.)
  • ใช้นามสกุลไฟล์เป็น mp3, m4a, m4b, acc, aiff
  • ต้องมีที่อยู่จริงอยู่แล้วใน internet ซึ่งต้องทำการ upload จากเว็บใดเว็บหนึ่งก่อน ไม่ว่าจะใช้ที่ geocities หรือ thai.net ก็ได้

ซึ่งการใส่มีเดียในแต่ละส่วนนั้น จะใช้หลักการคล้ายๆ กับการใส่ Condition ใน SmartPlaylist ของ iTunes นั้นเอง ซึ่งจะสามารถใส่มีเดียได้ไม่เกิน 10 ไฟล์ และอนาคตจะพัฒนาให้สามารถใส่ได้ไม่จำกัด

เมื่อทำการ submit ตัว form ของโปรแกรมประยุกต์แล้ว ตัวระบบจะทำการสร้างโค็ด XML ออกมาโดยแสดงใน Web Browser ของท่าน โดยที่ทางผู้ใช้ต้องทำการ save โค็ดเหล่านั้นเอง ไม่ว่าจะด้วยวิธีใดก็ตาม ตัวอย่างเช่น

Internet Explorer

  • ใช้เมนู File ตามด้วยเมนู Save As
  • ที่ Dialog Save As ให้เลือก Save as type เป็น XML Files (*.xml)
  • ที่ File name ให้ใส่ของไฟล์ลงไป
  • เอาไฟล์ดังกล่าวไป upload ขึ้นที่เว็บที่เราต้องการ
  • ตัวอย่าง http://www.yourweb.com/podcasts/yournamepodcasts.xml

Firefox

  • ใช้เมนู File ตามด้วยเมนู Save Page As
  • ที่ Dialog Save As ให้เลือก Save as type เป็น XML Document
  • ที่ File name ให้ใส่ของไฟล์ลงไป
  • เอาไฟล์ดังกล่าวไป upload ขึ้นที่เว็บที่เราต้องการ
  • ตัวอย่าง http://www.yourweb.com/podcasts/yournamepodcasts.xml

ก็เป็นอันเสร็จสิ้นวิธีการทำงาน โดยในอนาคตในขั้นตอนการจัดการไฟล์ ที่ Export ออกมาจะปรับเปลี่ยนเป็นการทำ Archive เป็น ZIP Files แทน เพื่อให้ขึ้น Dialog ให้ Download ได้เลย

และโครงการต่อไปเป็น PodCasts->Hub ที่กำลังร่างระบบอยู่ ซึ่งไม่รู้จะทำได้หรือเปล่า -_-" แต่ระบบน่ะไม่ยาก

 

วิธีการทำ podcast เผยแพร่

ผมได้ทำ podcast ของผมเองอยู่ที่ http://www.thaicyberpoint.com/podcasts ตอนนี้ผมทำ podcast ตัวแรกให้ลองฟังแล้วนะครับ ถ้ามีอะไรติชมก็บอกกันได้ครับ

ส่วนใครต้องการเอา podcast ตัวนี้ไปลองทำเองก็ง่ายมากครับ

สิ่งที่ต้องการก็มีพื้นที่เว็บใน internet ที่สนับสนุนการใช้ script PHP และพื้นที่สัก 10 – 20 MB ในการเก็บไฟล์เสียงครับ

แล้วก็หา script podcast จำพวก PHP มาลงครับ อย่างของผมก็ ลองโหลดไปแกะได้ที่นี่ครับ http://www.thaicyberpoint.com/podcasts/dircaster_v_04_podcastPHPScript.zip ทำการแตกไฟล์ zip แล้วก็ทำการปรับแก้เพียงเล็กน้อยครับ

—————————————–

// ขนาดมาที่สุดของการแสดง podcast ใน 1 ครั้ง

$maxFeed = 5;

// Title ของ Podcast ครับ

$titleTAG=”ThaiCyberPoint.com – PodCasts beta”;

// ที่อยู่ของ Podcast ครับ

$linkTAG=”http://www.thaicyberpoint.com/podcasts”;
// รายละเอียดของ Podcast ครับ ใส่เป็นภาษาไทยได้ ตอนนี้ผมปรับแต่งให้ลองรับภาษาไทยแล้วครับ
$descriptionTAG=”Public PodCast from ThaiCyberPoint.com”;
// ภาษาของ Podcast ครับ แนะนำให้ใช้ en-US ครับ
$languageTAG=”en-us”;
// คำแจ้งลิขสิทธิ์ของ Podcast ครับ
$copyrightTAG=”Creative Commons License”;
// อีเมลของ podcast ครับ
$webMasterTAG=”[email protected]”;
// ชื่อโปรแกรมที่เอามาทำ Podcast ไม่แนะนำให้ปรับเปลี่ยนครับ ถือเป็นมารยาท
$generatorTAG=”dirCast 0.4″;
// เวลาในการเข้าถึง หรือ timeout ครับ
$ttlTAG=60;

————————————-

แล้วก็ทำการ upload เข้าสู่ server ครับ ซึ่งมันเป็นไฟล์ index.php ครับ ก็เวลาเราให้ URL ก็ http://www.mysite.com/podcast/index.php หรือ http://www.mysite.com/podcast/ ก็ได้ครับ

แล้วจะเอาไฟล์เสียงขึ้นก็ทำการแก้ไข ID3 Tag ครับ แนะนำ Version 2.3 ครับ แล้วทำการ Upload ขึ้นไปที่เดียวกับไฟล์ index.php เมื่อกี้นี้ครับ ตัว script มันจะ detect เองจากไฟล์ว่า title, artist, album, year, comment, genre ว่ามีอะไรบ้างก็แนะนำให้ edit เอานะครับในไฟล์ สะดวกดีครับ

อนาคตเดี่ยวผมว่าจะ Podcast Portal ครับ ยังไงจะมาบอกอีกทีนะครับ สำหรับคนที่ไม่อยากทำ script เองครับ เพียงแต่หาพื้นที่เก็บไฟล์ก็พอน่ะครับ กำลังคิดโปรแกรมอยู่ครับ

ตัว script PHP ไม่สนับสนุนภาษาไทยในส่วนของ title, artist, album, year, comment, genre ใน ID3 Tag 2.3 นะครับ กำลังแก้ไขอยู่ครับ ตอนนี้ใช้แบบนี้ไปก่อนนะครับ

 

แถลงไข 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 ด้วยเช่นกัน