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

เห็นว่าน่าสนใจและดีมาก ๆ เลยนำมาลง (ช่วงนี้รู้สึกว่าตูไม่ได้เขียนเองเท่าไหร่เลยนะ -_-")

  1. โปรแกรมแบบพอเพียง (ทำอะไรให้เล็กที่สุดเท่าที่เป็นไปได้)
  2. ทำสิ่งธรรมดาให้ง่าย ทำสิ่งยากให้เป็นไปได้
  3. จงโปรแกรมโดยนึกว่าจะมีคนมาทำต่ออย่างแน่นอน
  4. ระเบียบ กฎข้อบังคับ เชื่อถือไม่ได้ถ้ามีเพียงหนึ่งโมดูลไม่ปฏิบัติตาม
  5. ตัดสินใจให้ดีระหว่างความชัดเจน (Clearance) กับการขยายได้ (Extensibility)
  6. อย่าเชื่อมั่น Output จากโมดูลอื่น ถึงแม้เราจะเป็นคนเขียนเอง
  7. ถ้าคนเขียนยังเข้าใจได้ยาก แล้วคนอ่านจะเข้าใจได้ยากกว่าแค่ไหน
  8. ค้นหาข้อมูลสามวันแล้วทำหนึ่งวัน หรือจะทำสามวันแล้วแก้บั๊กตลอดไป
  9. จงสร้างเครื่องมือ ก่อนทำงาน
  10. อย่าโทษโมดูลอื่นก่อน โดยเฉพาะถ้าโมดูลอื่นเป็น OS และ Compiler
  11. พยายามทำตามกฎ แต่ถ้ามีข้อยกเว้น ต้องมีอย่างหลีกเลี่ยงไม่ได้ ให้ประกาศและตะโกนให้ดังที่สุด
  12. High Cohesion Loose Coupling (ยึดเกาะให้สูงสุดในโมดูล และเกาะเกี่ยวกับโมดูลอื่นให้น้อยที่สุด)
  13. ให้สิ่งที่เกี่ยวข้องกันยิ่งมากอยู่ไกล้กันมากที่สุด
  14. อย่าเชื่อโดยไม่พิสูจน์
  15. อย่าลองทำแล้วคอมไพล์ดู ถ้าเราไม่ได้คาดหวังผลลัพธ์อะไรไว้ (อย่างเช่นปัญหา index off by one)
  16. จงกระจายความรู้เพราะนั่นคือการทำ Unit Test ระดับล่างสุด (ระดับความคิด)
  17. อย่าเอาทุกอย่างใส่ใน UI เพราะ UI คือส่วนที่ Unit Test ได้ยาก
  18. ทั้งโปรเจ็กต์ควรไปในทางเดียวกันมากที่สุด (Consistency)
  19. ถ้ามีสิ่งที่ดีอยู่แล้ว จงใช้มัน อย่าเขียนเอง ถ้าจำเป็นต้องเขียนเอง ให้ศึกษาจากข้อผิดพลาดในอดีตก่อน
  20. อย่ามั่นใจเอาโค้ดไปใช้จนกว่าจะ Test อย่างเพียงพอ
  21. เอาโค้ดที่ Test ไว้ที่เดียวกันกับโค้ดที่ถูก Test เสมอ
  22. ทุกครั้งที่แก้ไขโค้ดให้รัน Unit Test ทุกครั้ง
  23. จงใช้ Unit Test แต่อย่าเชื่อมั่นทุกอย่างใน Unit Test เพราะ Unit Test ก็ผิดได้
  24. ถ้าต้องทำอะไรที่ซ้ำกันมากกว่าหนึ่งครั้ง ก็เพียงพอแล้วที่จะแยกโค้ดส่วนนั้นออก
  25. ทำให้ใช้งานได้ก่อน แล้วค่อย Optimize และถ้าไม่จำเป็น อย่า Optimize
  26. ยิ่งประสิทธิภาพเพิ่ม ความเข้าใจง่ายจะลดลง
  27. ใช้ Design Pattern ที่เป็นที่รู้จักจะได้คุยกับใครได้รู้เรื่อง
  28. อย่าเก็บไว้ทำทีหลัง ถ้ายังไงก็ต้องทำ
  29. Multithreading ไม่ใช่แค่การเพิ่มประสิทธิภาพ แต่มันมาพร้อมกับ Concurrency, Deadlock, Isolation Level, Hard to Debug, Undeterministic Errors
  30. จงทำอย่างโจ่งแจ้ง
  31. อย่าเพิ่มเทคโนโลยีโดยไม่จำเป็น เพราะนั่นทำให้โปรแกรมเมอร์ต้องวุ่นวายมากขึ้น
  32. จงทำโปรเจ็กต์ โดยคิดว่าความเปลี่ยนแปลงเกิดขึ้นได้เสมอ
  33. อย่าย่อชื่อตัวแปรถ้าไม่จำเป็น เดี๋ยวนี้ IDE มันช่วยขึ้นเยอะแล้ว ไม่ต้องพิมพ์เอง แค่ dot มันก็ขึ้นมาให้เลือก
  34. อย่าใช้ i, j, k, result, index, name, param เป็นชื่อตัวแปร
  35. ทำโค้ดที่ต้องสื่อสารผ่านเครือข่ายให้คุยกันน้อยที่สุด
  36. แบ่งแยกดีๆ ระหว่าง Exception Message ในแต่ละเลเยอร์ ว่าต้องการบอกผู้ใช้ หรือ บอกโปรแกรมเมอร์
  37. ที่ระดับ UI ต้องมี Catch All Exceptions เสมอ เพื่อกรอง Exception ที่ลืมดักจับ
  38. ระวังคอลัมน์ Allow Null ใน Database ให้ดี ค่ามัน Convert ไม่ได้
  39. อย่าลืมว่า Database เป็น Global Variable ประเภทหนึ่ง แต่ละโปรแกรมที่ติดต่อเปรียบเหมือน Multithreading ดังนั้นกฎของ Multithreading ต้องกระทำเมื่อทำงานกับ Database
  40. ระวังอย่าให้ logic if then else ซ้อนกันมากๆ เพราะสมองคนไม่ใช่ CPU จินตนาการไม่ออกหรอกว่ามันอยู่ตรงไหนเวลา Debug (ถ้ามากกว่าสามชั้นก็ลองคิดใหม่ดูว่าเขียนแบบอื่นได้มั้ย)
  41. ระวังอย่าให้ลูปซ้อนกันมากๆ ไม่ใช่แค่เรื่องความเร็วอย่างเดียว เวลา Debug เราคิดตามมันไม่ได้ (ถ้าเกินสามชั้นก็ไม่ไหวแล้ว)
  42. อย่าใช้ Magic Number ในโค้ด เช่น if( controlingValue == 4 ) เปลี่ยนไปใช้ Enum ดีกว่า เป็น if( controlingValue == ControllingState.NORMAL ) เข้าใจง่ายกว่ามั้ย
  43. ถ้าจะเปรียบเทียบ String ให้ Trim ซ้ายขวาก่อนเสมอ
  44. คิดหลายๆ ครั้งก่อนใช้ Trigger
  45. โปรแกรมเมอร์คือห่วงโซ่สุดท้ายของมลพิษทางความซับซ้อน ดังนั้นหา Project Leader ดีๆ แล้วกัน
  46. มนุษย์ฉลาดกว่าคอมพิวเตอร์ การเขียนโปรแกรมก็คือการสอนให้คอมพิวเตอร์ฉลาดได้เหมือนเรา (มนุษย์ฉลาดกว่าคอมพิวเตอร์จริงๆ นะ)
  47. จงควบคุมคอม มิใช่ให้คอมควบคุมเรา เราต้องสั่งให้คอมทำงาน ไม่ใช่ให้เราทำงานตามคอมสั่ง
  48. อย่าปล่อยให้ข้อจำกัดของคอม มาจำกัดความคิดของเรา (คอมไม่ดีเปลี่ยนเครื่องเลย :-D)
  49. ยอมรับความคิดของผู้อื่น แต่อย่าออกจากกรอบของตนเอง
  50. หมั่น Save โปรแกรมไว้อย่าสม่ำเสมอ ก่อนที่จะไม่มีโอกาส Save (จะให้ดี Save เป็นแต่ละ Version เลย)


อ้างอิง

 

ความเป็นไปของยี่ห้อ HardDisk ต่าง ๆ

พอดีว่าอ่านแล้วน่าสนใจมากเลยนำมาบอกต่อครับ

อ้างอิงจาก http://www.pantip.com/tech/coffee/topic/JX1985579/JX1985579.html


ในสมัยก่อน มี HardDisk ยี่ห้อ Seagate,Maxtor,Quantum,IBM,Corner,Wetern Digital และ NEC

ซึ่งต้อนนั้นยี่ห้อ Seagate ขายดีที่สุด และ IBM ขายได้น้อยที่สุด

ในยุคต่อมา Seagate ได้ซื้อกิจการ HardDisk ของ Corner ทำให้ไม่มียี่ห้อ Corner ต่อไปแล้ว

ต่อมา บริษัท LG ได้ควบกิจการ HardDisk ของ Quantum
ทำให้ตอนนั้น HardDisk ของ Quantum มียี่ห้อว่า LG- Quantum

ในปีต่อมา บริษัท LG ได้หยุดควบ HardDisk ของ Quantum ทำให้ HardDisk มียี่ห้อ Quantum เหมือนเดิม

ต่อมา HardDisk ยี่ห้อ NEC ก็ได้เลิกกิจการแผนก HardDisk และเลิกผลิต HardDisk อีกต่อไป เพราะขายไม่ค่อยดี และได้กำไร น้อย

ต่อมามี HardDisk ยี่ห้อใหม่ๆ ออกมา คือ Fujitsu และSamsung
ตอนนั้นยังขายไม่ค่อยออกเท่าไร่

ต่อมา บริษัท HITACHI ได้เข้า TakeOver HardDisk ยี่ห้อ IBM ทำให้ HardDisk ยี่ห้อ IBM ได้เปลี่ยนเป็น ยี่ห้อ HITACHI และ HITACHI เป็นผู้ผลิต HardDisk เพียงแต่ผู้เดียว แต่ยังใช้โรงงานและเทคโนโลยีของ IBM อยู่

ต่อมา HardDisk ยี่ห้อ Samsung ขายดีมากขึ้น เทน้ำเทท่า ทำให้ Samsung ผลิต HardDisk ต่อไป

ต่อมามี HardDisk ยี่ห้อ TOSHIBA ออกมาแต่มักจะทำแบบ Notebook มากกว่าแบบ Desktop PC

ต่อมา HardDisk ยี่ห้อ Fujitsu แบบ Desktop PC ขายไม่ได้ตามเป้า แต่ในขนาดเดียวกันมี Notebook หลายยี่ห้อ ยังใช้ HardDisk ของ Fujitsu อยู่ Fujitsu จึงตัดสินใจยกเลิกผลิต HardDisk แบบ Desktop PC แล้ว แต่ยังคงผลิต HardDisk สำหรับ Notebook ต่อไป

ต่อมา HardDisk ยี่ห้อ Maxtor ได้ควบกิจการกับ Quantum เรียบร้อยแล้ว และให้ Maxtor ผลิต HardDisk สำหรับ Desktop PC และ Notebook และให้ Quantum ผลิต HardDisk สำหรับ Server

ปัจจุบัน HardDisk ยี่ห้อ Seagate ซื้อกิจการ HardDisk ยี่ห้อ Maxtor แต่จะเป็นยังไร เดียวมาเล่าสู่กันฟัง

 

ย้ายแล้ว !!!

และแล้วก็ได้ย้ายมาเต็มตัวสักที เฮ้อ … เหนื่อยจริง ๆ ;)

เนื้อหาบางส่วนได้ตัดทิ้งไปด้วยเหตุที่มันไม่เหมาะสมกับนิสัยส่วนตัวในตอนนี้แล้ว (โตขึ้นความคิดเปลี่ยน) แต่ส่วนใหญ่เนื้อหาจากเว็บ ThaiCyberPoint.com เดิมยังอยู่เกือบครบ ขาดแต่ CyberPunk ที่เนื้อหาไม่ครบ เลยตัดสินใจไม่เอามาลงดีกว่า เพราะอ่านไปก็ไม่จบ น่าเสียดายแทนคนที่ตามอ่าน เพราะผู้แปล หรือเรียบเรียงไม่ได้ทำต่อในส่วนนี้ (เนื้อหามันมาก แต่อ่านแล้วไม่จบ มันก็ไม่ดีจริงแมะ)

ในส่วนของเนื้อหาทั้งเก่าใหม่ และใน blog ได้เอามารวมกันไว้ที่นี่หมดแล้ว โดยได้ทำการ mapping link เก่าเกือบทั้งหมด ให้ redirect มาที่ url ใหม่ทั้งหมด เพื่อคนที่ยังอ้างอิง url เก่าได้เข้ามาได้สะดวกเหมือนเดิม  ส่วนถ้าในหน้าไหนที่รูปหายไปหรือเนื้อหาไม่ครบยังไงช่วยแจ้งผมด้วยนะครับ ผมจะได้ทำการปรับแก้ครับผม

 

ของใหม่ Sony Ericsson Walkman W700i !!!

อยากได้รายละเอียดของเครื่องนี้อ่านที่ Siamphone.com  และ Thaimobilecenter เอาแล้วกันนะครับ ละเอียดกว่า

นี่เป็นอีกเครื่องที่ผมได้ใช้ Sony Ericsson ซึ่งผมชอบยี่ห้อนี้ตั้งแต่ยังเป็น Ericsson เฉย ๆ ใช้ตัั้งแต่ T29s ซึ่งโดยขโมยไปแล้ว T_T ซึ่ง W700i ที่ผมซื้อมาในราคา 13,500 บาท เครื่องประกันศูนย์ 1 ปี ของแถมในกล่องเพียบเลย

เท่าที่ได้ใช้มา 1 อาทิตย์นี่การตอบสนองของเมนูทำได้ดีมาก และไม่หน่วงเลย (ผิดกับ T630 เครื่องเก่า) โดยที่ที่แตกต่างจาก W800i คือไม่มี Auto Focus (แต่เท่าที่ถ่ายออกมาเทียบกันก็ไม่แตกต่างกันเท่าไหร่เลย) และแถม Memory Strick Pro Duo เพียง 256 MB (W800i แถม 512MB) นอกนั้นก็ไม่แตกต่างกันเท่าไหร่ครับ ตัวเครื่องเหมือนกันหมดเลย แถมพวก Theme, Wallpaper ก็ใช้ของ W800i หรือ K750i ก็ได้เช่นกัน (ขนาด Resolution 176×220 เท่ากันครับ)

เรื่องการใช้งานโดยรวมมีฟังค์ชันที่ดีมาก ๆ แถมไม่ต้องลงโปรแกรมเพิ่มเติมในการช่วยการ Presentation เลย เพราะมีอยู่ในเครื่องแค่ต่อกับ Bluetooth และลงโปรแกรม Sony Ericsson PC Suite ก็สามารถ Sync ข้อมูลกับคอมพิวเตอร์ได้ ใช้ Outlook ในการ Sync ข้อมูลโดยทำได้ดี และสะดวกกว่า T630 ตัวเก่าผมเสียอีก

ส่วนการ Sync ข้อมูลอย่างเพลงนั้นต้องใช้โปรแกรมชื่อ Disc2Phone ของ Sony Ericsson เอาเอง ซึ่งก็ใช้ไม่ยาก แต่มันเป็นเพียงแต่โปรแกรม Sync เพลง ไม่ใช่ Media Center แบบ Windows Media Player หรือ Music Player แบบ iTunes ซึ่งที่มันทำได้คือเลือกเพลงจากเครื่องของเรา และทำการปรับแต่ง bitrate ว่าเราจะ Sync ที่ bitrate เท่าไหร่ แล้วทำการ Sync เพลงใส่เครื่องโทรศัพท์ ซึ่งคล้าย ๆ กับ iTunes ที่ใช้ร่วมกับ iPod Shuffle ที่สามารถตั้งไฟล์ที่ Sync ที่มี bitrate เกิน 128kbps ให้เป็น ACC bitrate 128kbps ได้ แต่ตัว Disc2Phone สามารถตั้งได้ตั้งแต่ 32kbps – 192kbps ซึ่งทำให้มีทางเลือกในการ Sync เพลงได้จำนวนเพลงมากขึ้น และการใส่ข้อมูลนั้นสามารถใส่ข้อมูลอื่น ๆ เช่นไฟล์วีดีโอได้เช่นกัน โดยใส่ไฟล์วีดีโอที่เป็น Mpeg4 และ 3GP เท่านั้น แต่เท่าที่ลอง H.264 นั้นไม่สามารถอ่านภาพได้ ซึ่งก็แปลกใจว่าทำไม ทั้ง ๆ ที่เป็น Mpeg4 เหมือน ๆ กันแต่การ Compression ต่างกัน (แต่เสียงออกนะ)

ในส่วนของการแปลงไฟล์วีดีโอจาก format ต่าง ๆ นั้นเดียวไว้ entry หน้าจะมาบอกตัวโปรแกรมแล้วกันนะครับ แต่ว่าตัวนี้เด็ดมาก แถมเป็น GPL license ด้วย ซึ่งหมายถึงไม่ต้องเสียค่าใช้จ่ายหรือ crack ให้ปวดใจเล่น (แบบผม)

ของที่แถมมาในกล่องทั้งหมด

แถม Memory Strick Pro Duo ขนาด 256MB พร้อมกับ Adapter

เห็นชัด ๆ ตัวเครื่อง สีสวยกว่า W800i ที่ดูมันออกแนวเด็ก ๆ ยังไงไม่รู้

แถม Bluetooth Hand-set HBH-PV700 มาให้ด้วย

สาย Datalink USB

 Wall-Charge

หัวต่อของ Wall-Charge และสาย Datalink เป็นรุ่นใหม่แบบเดียวกับ W800i

ชุด SmallTalk ที่ผมชอบที่สุดชุดนึงเพราะแยกส่วนของหูฟังและไมค์ออกจากกัน สามารถหาหูฟังอื่น ๆ มาใส่ได้โดยไม่ต้องเปลี่ยนชุดไมค์แต่อย่างใด ทำให้เอาหูฟังที่เราคุ้นเลยกันอยู่มาเสียบฟังได้เลย ;)

 

WorldCup 2006

จบไปแล้วสำหรับฟุตบอลโลก หรือ WorldCup ในปี 2006 เรื่องราวหลากหลายที่เกิดขึ้นคงไม่ต้องบรรยาย เพราะหาอ่านได้จากเว็บข่าวทั่วไป

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

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

เรื่องของฟุตบอลโลกในครั้งนี้ หลายชาติผิดหวัง หลายชาติสมหวังกับผลงานตัวเอง ถึงแม้จะไม่ได้เข้าชิง แต่ก็มาได้มากกว่าที่ตัวเองคาดการณ์ไว้ กีฬาทำให้คนรู้แพ้รู้ชนะ และครั้งนี้ก็ทำให้เราเข้าใจว่าคำว่าแพ้คืออะไร ชนะคืออะไร และบอลโลกครั้งนี้ทำให้เรารู้อีกว่า ต่อให้มีเงินมากมายในการทำทีมมากแค่ไหน ก็ต้องใช้เวลาในการสั่งสมประสบการณ์ของผู้เล่น อย่างสหรัฐอเมริกา มีเงินมากมายในการอัดฉีดนักกีฬา แต่ก็สู้ฝีเท้าระดับที่ดีกว่า ไม่ได้

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

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

อิตาลีซิวแชมป์โลก!! ดวลเป้าเชือดไก่ ปิดฉากด้วยใบแดง