คนคอมพิวเตอร์

Archive for สิงหาคม 2008

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 


ตอนจบ

ขั้นตอนง่ายๆ ที่คุณทำเองได้ เพื่อให้คอมพิวเตอร์มีสมรรถนะเต็มร้อย

 

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • จากนิตยสาร : ComToday

 

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

 

ลบโปรแกรมที่ไม่ได้ใช้

มีหลายโปรแกรมที่เราอาจเคยติดตั้งไว้แต่ไม่ได้ใช้งานอีกต่อไปแล้ว เราควรลบโปรแกรมเหล่านี้ออกไปให้หมด การลบโปรแกรมโดยลบเพียงไอคอนบน desktop ไม่มีประโยชน์อะไร เพราะไอคอนนั้นเป็นแค่ Short cut หรือตัวเชื่อมทางลัด หากเราลบ Short Cut ไฟล์ต่างๆ จะยังคงอยู่ในโฟลเดอร์ c:\Program Files การลบโปรแกรมโดยลบโฟลเดอร์เก็บโปรแกรมภายใน c:\Program Files ก็ไม่ใช่วิธีที่ถูกต้องอีกเช่นกัน เพราะแม้ไฟล์โปรแกรมจะถูกลบไปแล้ว แต่วินโดวส์ยังคงคิดว่าโปรแกรมยังอยู่เพราะค่าต่างๆ ที่บันทึกไว้ใน registry ไม่ได้ถูกลบไปด้วย

วิธีลบโปรแกรมที่ถูกต้องคือการ uninstall หรือการถอดถอนโปรแกรมซึ่งทำได้โดยเลือกไอคอน Add or Remove Programs ใน Control Panel (กุดปุ่ม Start, Setting, Control Panel แล้วดับเบิ้ลคลิกที่ไอคอน Add or Remove Programs) เมื่อมีกรอบข้อความ Add or Remove Programs ปรากฏขึ้นให้ตรวจสอบรายชื่อโปรแกรมว่ามีตัวใดบ้างที่เราไม่ต้องการแล้ว หรือคิดว่าจะไม่ใช้ ให้กดเลือกรายการนั้นแล้วกดปุ่ม Change/Remove โปรแกรม uninstall จะทำงานให้เราเลือกลบ (หรือติดตั้งเพิ่มเติม) โปรแกรมนั้นได้ ทำขั้นตอนนี้ซ้ำจนกว่าในรายการจะเหลือแต่โปรแกรมที่จำเป็นต้องใช้จริงๆ

 

กรอบข้อความ Add or Remove Programs

 

 

นอกจากโปรแกรมที่เราติดตั้งไว้ ตัววินโดวส์เองก็ติดตั้งโปรแกรมประยุกต์ใช้งานหลายอย่างไว้ด้วย ยกตัวอย่างเช่น

  • Fax Services
  • Internet Information Services (IIS)
  • Management and Monitoring Tools
  • Message Queuing
  • MSN Explorer
  • Outlook Express (ไม่มีประโยชน์หากเราใช้กูเกิ้ลเมน หรือฮอทเมล)
  • Windows Messenger (ปรกติเราจะใช้ MSN Messenger แทน)

 

โปรแกรมเหล่านี้ส่วนมากเราไม่ได้ใช้และควรลบทิ้งไปเสียด้วย วิธีลบทำได้โดยเปิดหน้า Add or Remove Programs สังเกตที่แถบด้านซ้ายมือจะมีปุ่ม Add/Remove Windows Components ให้กดเพื่อเปิด Windows Components Wizard ซึ่งจะแสดงรายชื่อโปรแกรมที่วินโดวส์ติดตั้งไว้ กดหน้าชื่อโปรแกรมที่ต้องการลบ เพื่อให้เครื่องหมายถูกหายไป ทำเช่นนี้ให้ครบทุกโปรแกรมที่ต้องการลบแล้วกดปุ่ม Next

 

กรอบข้อความ Windows Components Wizard

 

 

ล้าง registry

Registry เป็นระบบฐานข้อมูลที่วินโดวส์ใช้เก็บบันทึกสภาวะของระบบ เมื่อเราใช้คอมพิวเตอร์ไประยะหนึ่ง (สองถึงสามเดือน) registry จะเริ่มมีรายการที่คลาดเคลื่อน ขยะ และบันทึกที่ไม่ถูกต้อง ดังนั้นเราจึงควรปรับปรุงแก้ไข registry ให้กลับมีสภาพสมบูรณ์เป็นครั้งเป็นคราว

โชคร้ายที่วินโดวส์ไม่มีโปรแกรมปรับปรุงแก้ไข registry มาให้ แต่ไม่เป็นไร เพราะในอินเตอร์เน็ตมีโปรแกรมปรับปรุงแก้ไข registry ที่ใช้งานได้ดีให้เราดาวน์โหลดได้ฟรีหลายตัว ตัวที่แนะนำให้ใช้คือ RegSeeker (ดาว์นโหลดได้จาก www.snapfiles.com/download/dlregseeker.html) ให้ดาวน์โหลดมาติดตั้งแล้วเปิดโปรแกรม จะเห็นแถบซ้ายมือเป็นเมนูคำสั่ง ให้กดที่ Clean the Registry แล้วกดปุ่ม OK โปรแกรม RegSeeker จะล้างข้อมูลที่เป็นขยะใน registry ให้โดยอัตโนมัติ

 

โปรแกรม RegSeeker

 

 

ขจัดตัวกินแรงเครื่อง

มีโปรแกรมเล็กๆ หลายโปรแกรมที่แอบทำงานอยู่ในฉากหลัง เมื่อรวมกันเข้าก็กินพลังการประมวลผลของคอมพิวเตอร์ไปไม่น้อย ทำให้เรารู้สึกว่าเครื่องอืดผิดปรกติ โชคดีที่เราสามารถใช้โปรแกรม RegSeeker ขจัดตัวกินแรงเครื่องเหล่านี้ได้ ให้กดที่คำสั่ง Startup entries เมื่อกดแล้ว RegSeeker จะแสดงรายการโปรแกรมทั้งหมดที่จะเริ่มทำงานทันทีที่เรา restart วินโดวส์ เราสามารถลบโปรแกรมเหล่านี้ได้เป็นส่วนใหญ่ โดยเลือกโปรแกรมที่จะลบแล้วกดปุ่ม Del คอมพิวเตอร์บางเครื่องอาจจำเป็นต้องมีโปรแกรมบางอย่างทำงานตอนเริ่มต้น เช่นไดร์ฟเวอร์การ์ดจอ หรือการ์ดเสียง ดังนั้นก่อนลบดูให้แน่ใจว่าโปรแกรมที่เราจะลบไม่เกี่ยวข้องกับฮาร์ดแวร์ หากไม่รู้หรือไม่แน่ใจก็อย่าลบ

 

 

บำรุงฮาร์ดดิสก์

เมื่อใช้งานคอมพิวเตอร์ไปนานๆ ฮาร์ดดิสก์มักมีพื้นที่เล็กๆ ที่ทำงานบกพร่อง (bad sector) ข้อบกพร่องนี้หากลุกลามไปมากเข้าจะทำให้ประสิทธิภาพของระบบลดลง เพราะการอ่านข้อมูลจากฮาร์ดดิสก์ต้องใช้เวลานานกว่าปรกติ โชคดีที่วินโดวส์มีโปรแกรมซ่อมบำรุงฮาร์ดดิสก์มาให้แล้ว (ชื่อ Scandisk) วิธีเรียกใช้ทำดังนี้ เปิดโปรแกรม Windows Explorer คลิกขวาที่ไดร์ฟซี เลือกหัวข้อ Properties ในกรอบข้อความ Properties กด tab Tools ในกรอบ Error-checking ให้กดปุ่ม Check Now… เมื่อกดแล้วจะมีกรอบข้อความ Check Disk Local Disk ปรากฏขึ้น ให้กดเลือกหัวข้อทั้งสองหัวข้อ (คือ Automatically fix file system error และ Scan for and attempt recovery of bad sectors) แล้วกดปุ่ม Start

หากเราซ่อมบำรุงฮาร์ดดิสก์ที่ใช้เป็นตัวบูต (ไดร์ฟซี) วินโดวส์จะแสดงกรอบข้อความแจ้งว่าไม่สามารถ Scandisk ขณะนี้ได้ แต่จะประวิงไปจนกว่าจะถึงตอนบูตครั้งหน้า ให้กดปุ่ม Yes แล้วบูตเครื่อง โปรแกรม Scandisk จึงจะทำงาน ให้ทำเช่นนี้กับทุกพาร์ติชันและทุกฮาร์ดดิสก์ กระบวนการนี้อาจกินเวลานานพอสมควร

 

กรอบข้อความ Properties ของฮาร์ดดิสก์ขณะแสดง tab Tools

 

 

จัดเรียงข้อมูล

อย่างที่เรียนไปตอนต้นบทความแล้วว่าเมื่อใช้คอมพิวเตอร์ไปสักระยะหนึ่งพื้นที่ว่างในฮาร์ดดิสก์จะกระจัดกระจายไม่ต่อเนื่องเป็นผืนเดียวกันทำให้การอ่านข้อมูลจากฮาร์ดดิสก์ช้าลง (Fragment) โชคดีที่วินโดวส์แถมโปรแกรมจัดเรียงข้อมูล (Defragment) มาให้ด้วย วิธีเรียกใช้ก็คล้ายกับวิธีเรียกโปรแกรม Scandisk คือ เปิดโปรแกรม Windows Explorer คลิกขวาที่ไดร์ฟซี เลือกหัวข้อ Properties ในกรอบข้อความ Properties กด tab Tools ในกรอบ Defragmentation กดปุ่ม Defragment Now… วินโดวส์จะแสดงกรอบข้อความ Disk Defragmenter หากมีฮาร์ดดิสก์หลายตัว หรือมีตัวเดียวแต่แบ่งเป็นหลายพาร์ติชัน ให้เลือกไดร์ฟที่ต้องการแล้วกดปุ่ม Defragment หากฮาร์ดดิสก์มีความจุมาก กระบวนการนี้จะกินเวลานานเช่นกัน

 

โปรแกรม Defragment ในวินโดวส์

 

 

สุขภาพดีทั่วหน้า

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

Advertisements

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 
ตอน 1

 

ขั้นตอนง่ายๆ ที่คุณทำเองได้ เพื่อให้คอมพิวเตอร์มีสมรรถนะเต็มร้อย

 

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • จากนิตยสาร : ComToday

 

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

 

ต้นตอของความอืด

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

  1. ซอฟท์แวร์ : โปรแกรมบางโปรแกรมๆ ที่เราติดตั้งไว้อาจลอบใส่งาน (task หรือ process) บางอย่างซึ่งจะทำงานอยู่ที่ฉากหลังตลอดเวลา ทำให้กินแรงเครื่องโดยไม่จำเป็น บางครั้งเรายกเลิกการติดตั้งโปรแกรม (remove program) แล้ว แต่ยังมีเศษซากบางอย่างหลงเหลืออยู่ นี่เป็นสาเหตุที่ทำให้คอมพิวเตร์ทำงานช้าลงได้
  2. ไวรัส : ไวรัสในที่นี้รวมถึงโปรแกรมมุ่งร้ายอื่นๆ เช่น หนอน สปายแวร์ โทรจัน ฯลฯ โปรแกรมเหล่านี้จะลอบทำสิ่งอัปมงคลหลายๆ อย่างอยู่หลังฉาก จึงกินแรงเครื่องไปบางส่วน
  3. Registry : วินโดวส์จะมีแฟ้มบันทึกภาวะของระบบเรียกว่า Windows registry การเพิ่มลดโปรแกรม (add/remove program) จะทำให้ registry เพิ่มและลดขนาดตามไปด้วย เมื่อเวลาผ่านไปบ่อยครั้งที่ข้อมูลใน registry จะผิดพลาดหรือมีขยะ เป็นสาเหตุให้วินโดวส์ทำงานช้าลง
  4. ฮาร์ดดิสก์ : เมื่อใช้คอมพิวเตอร์ไปสักระยะหนึ่ง การลบและเพิ่มข้อมูลที่เกิดขึ้นสะสมมีผลให้พื้นที่ว่างในฮาร์ดดิสก์ไม่ต่อเนื่องกัน แฟ้มข้อมูลใหม่จึงถูกเก็บไว้อย่างกระจัดกระจาย ทำให้การอ่านข้อมูลจากฮาร์ดดิสก์ช้าลง

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

 

ปรับเวอร์ชัน อุดช่องโหว่

ปรับเวอร์ชันในที่นี้ไม่ได้หมายถึงใช้ Windows XP อยู่แล้วอัพเกรดไปใช้ Windows Vista แต่หมายถึงให้ปรับไปเป็นตัวปรับปรุงแก้ไขใหม่สุด (service pack) ในวินโดวส์รุ่นนั้นๆ สาเหตุที่ต้องทำเช่นนั้นเพราะแฮกเกอร์มืด (พวกเจาะระบบและนักสร้างโปรแกรมมุ่งร้าย) มักหาช่องโหว่ในระบบรักษาความปลอดภัยของวินโดวส์รุ่นใหม่สุด และสร้างโปรแกรมโจมตีช่องโหว่นั้น บริษัทไมโครซอฟต์จึงปรับรุ่นเพื่อแก้ไขช่องโหว่ เหตุการณ์นี้จะเกิดเป็นงูกินหาง เราจึงควรปรับรุ่นวินโดวส์ในเครื่องของเราเป็นระยะๆ

การปรับรุ่นไม่มีอะไรยุ่งยาก เพียงเข้าไปที่เว็บไซต์ www.windowsupdate.com แล้วคลิกเลือกการปรับรุ่นให้ตรงกับวินโดวส์ที่ท่านใช้อยู่ โปรแกรมในหน้าเว็บจะดาวน์โหลดและติดตั้งตัวปรับปรุงแก้ไขใหม่สุดให้โดยไม่เสียค่าใช้จ่ายใดๆ

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

การตั้งค่าให้วินโดวส์ปรับรุ่นตัวเองโดยอัตโนมัตินี้ปรกติจะถูกกำหนดให้เป็นอย่างนั้นอยู่แล้วเมื่อติดตั้งวินโดวส์ หากท่านไม่แน่ใจก็สามารถตรวจสอบได้โดยดูใน System Properties (กดปุ่ม Start, Setting, Control Panel ดับเบิ้ลคลิกที่ไอคอน System) ในกรอบข้อความ System Properties ให้กดที่ tab Automatic Updates แล้วดูให้แน่ใจว่าหัวข้อ Automatic (Recommended) ถูกเลือกอยู่ (อย่างที่เห็นในรูป) หากหัวข้ออื่นๆ ถูกเลือกอยู่ให้คลิกที่หัวข้อ Automatic (Recommended) หนึ่งครั้ง

 

 

การตั้งค่าให้วินโดวส์ปรับรุ่นตัวเองโดยอัตโนมัติ

 

 

ต่อต้านมัลแวร์

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

สำหรับผู้ใช้ Windows XP และ Windows Vista ขอแนะนำให้ให้ Avast! โปรแกรมป้องกันไวรัสคุณภาพสูง ใช้งานได้ดี และที่สำคัญคือฟรี (เฉพาะ Home Edition) สามารถดาวน์โหลดได้ที่ www.avast.com ผู้ผลิตอ้างว่าขณะนี้มีผู้ลงทะเบียนใช้ทั่วโลกสามสิบล้านรายแล้ว Avast! สามารถค้นหาและทำลาย โปรแกรมมุ่งร้ายต่างๆ เช่น ไวรัส หนอน สปายแวร์ โทรจัน และอื่นๆ ที่แพร่หลายได้

 

Avast! โปรแกรมป้องกันไวรัสคุณภาพสูง ใช้งานได้ดี และที่สำคัญคือฟรี

 

 

สำหรับผู้ที่ใช้ Windows XP ขอแนะนำให้ใช้ Windows Defender โปรแกรมป้องกัน pop-up และสปายแวร์จากบริษัทไมโครซอฟท์ (ดาวน์โหลดได้ที่นี่) บริษัทไมโครซอฟท์ใจดีให้เราดาว์นโหลดใช้ฟรีเช่นกัน

 

Windows Defender โปรแกรมป้องกัน pop-up และสปายแวร์จากบริษัทไมโครซอฟท์

 

 

เก็บกวาดขยะ

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

วิธีเก็บกวาดทำได้โดยเปิดโปรแกรม Window Explorer คลิกขวาที่ฮาร์ดดิสก์ที่เราต้องการเก็บกวาด (ปรกติจะเป็นไดร์ฟซี) เลือกหัวข้อ Properties จะเห็นกรอบข้อความ Properties แสดงสถานะของฮาร์ดดิสก์ เช่นเนื้อที่ทั้งหมด เนื้อที่ว่าง มุมล่างด้านซ้ายมีปุ่ม Disk Cleanup ให้กดปุ่มนี้ เพราะนี่คือปุ่มทำหน้าที่กำจัดไฟล์ชั่วคราวหรือไฟล์ของระบบที่วินโดวส์ไม่ได้ใช้แล้ว ให้ทำกระบวนการนี้ซ้ำกับพาร์ติชันและฮาร์ดดิสก์อื่นๆ (ถ้ามี) ให้ครบทุกตัว

 

กรอบข้อความ Properties แสดงสถานะของฮาร์ดดิสก์และมีปุ่ม Disk Cleanup

 

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

  1. เปิดโปรแกรม Windows Explorer
  2. เลือกเมนู Tools
  3. เลือกหัวข้อ Folder Options…
  4. ในกรอบข้อความ Folder Options… ให้กด tab View
  5. กดให้มีเครื่องหมายบวกหน้ารายการ Show hidden files and folders
  6. กดให้ไม่มีเครื่องหมายบวกหน้ารายการ Hide extensions for known file types
  7. กดให้ไม่มีเครื่องหมายบวกหน้ารายการ Hide protected operating system files

 

ในกรอบข้อความ Folder Options… tab View

 

 

เมื่อทำตามขั้นตอนข้างบนแล้วต่อไปเราจะลบไฟล์ขยะของระบบ ให้เปิดใช้โปรแกรม Windows Explorer เปิดโฟลเดอร์ C:\Documents and Settings\xxx\Local settings\Temp (xxx คือชื่อที่ท่านใช้ในระบบ) ในโฟลเดอร์ Temp จะมีไฟล์และโฟลเดอร์ที่เป็นขยะจำนวนมาก ให้ลบทิ้งทั้งหมดโดยเลือกเมนู File, Select All, Delete

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

โปรดติดตามตอบจบ

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน


ตอนจบ

สร้างลิงค์ลิสต์เป็นออพเจ็กต์แบบไทป์เซฟโดยไม่ต้องใช้พอยน์เตอร์

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • เขียนเมื่อ : วันเสาร์ที่ 25 สิงหาคม พ.ศ. 2550
  • พิมพ์ในนิตยสาร : WinMag

 

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


 

คลาสสร้างลิงค์ลิสต์

เมื่อนิยามโหนดเสร็จแล้วเราจะได้ไทป์ใหม่ (คือไทป์ชื่อ Node) เราสามารถเรียกใช้งานไทป์นี้ได้เหมือนไทป์อื่นๆ (เช่น int, char) ต่อไปเราจะนิยามคลาสชื่อ LinkedList ซึ่งจะนำไทป์นี้มาสร้างลิงค์ลิสต์

คลาส LinkedList อย่างง่ายที่สุดประกอบด้วยสมาชิกเพียงห้าตัว แบ่งเป็นสมาชิกแบบฟิลด์สองตัว (บรรทัดที่ 37 และ 38) และสมาชิกแบบเมธอดสามตัว (บรรทัดที่39,44 และ 54) ดังแสดงเป็นโครงสร้างแบบเอาท์ไลน์ (outline) ดังนี้

 

 

สมาชิกแบบฟิลด์ของคลาส LinkedList

สมาชิกแบบฟิลด์ของคลาส LinkedList มีเพียงสองตัวคือ front และ back ฟิลด์ทั้งสองนี้มีดาต้าไทป์เป็น Node front ทำหน้าที่ชี้โหนดแรกของลิงค์ลิสต์ back ทำหน้าที่ชี้โหนดสุดท้ายของลิงค์ลิสต์

 

ในรูปนี้ฟิลด์ front คือโหนดที่หนึ่ง ฟิลด์ back คือโหนดที่สี่

 

สมาชิกแบบเมธอดของคลาส LinkedList

คลาส LinkedList มีเพียงสามเมธอดคือ LinkedList ทำหน้าที่เป็นคอนสทรักเตอร์ AppendNode ทำหน้าที่เพิ่มโหนดใหม่ และ DisplayNodes ทำหน้าที่แสดงข้อมูลทั้งหมดในลิงค์ลิสต์

 

 

โค้ดที่เห็นข้างบนคือ คอนสทรักเตอร์ ทำหน้าที่กำหนดค่าเริ่มต้นให้แก่ฟิลด์ front และ back ให้เป็น null คือว่างเปล่า เพราะในขณะเริ่มต้นยังไม่มีโหนดใดๆ อยู่ภายในลิงค์ลิสต์เลย

 

 

โค้ดที่เห็นข้างบนคือ เมธอด AppendNode ทำหน้าที่สร้างโหนดใหม่หนึ่งโหนด แล้วนำข้อมูลที่ได้รับมาเป็นพารามิเตอร์ไปใส่ในโหนดใหม่ เมื่อเพิ่มโหนดแล้วเราจำเป็นต้องอัพเดตตัวชี้ front และ back ให้ถูกต้อง คำสั่ง if ทำหน้าที่ตรวจสอบว่าขณะนี้ลิงค์ลิสต์มีเพียงโหนดเดียวหรือไม่ หากเป็นเช่นนั้นจะกำหนดให้ทั้ง front และ back ชี้ไปยังโหนดใหม่

ถ้าภายในลิงค์ลิสต์มีโหนดอยู่แล้ว (เช่นเราเพิ่มข้อมูลไปแล้วครั้งหนึ่ง) การทำงานของโปรแกรมจะเป็นอย่างที่เห็นในภาพ

 

 

การทำงานของเมธอด AppendNode สมมุติว่าเรากำลังใส่โหนดที่สองเข้าไป (ใส่ข้อมูล 34) คำสั่ง back.Next = myNode จะทำให้ค่า Next ของโหนดที่ 1 ชี้ไปยังโหนดสอง (เพราะตอนนี้ back คือโหนดที่ 1 และ myNode คือโหนดที่ 2) คำสั่ง myNode.Previous = back ทำให้ Previous ชี้ไปยังโหนดที่ 1 และสุดท้ายคำสั่ง back = myNode ทำหน้าที่เลื่อนตัวชี้ back ไปยังโหนดที่เกิดขึ้นใหม่

 

 

เมธอด DisplayNodes ทำหน้าที่แสดงข้อมูลในลิงค์ลิสต์ทุกรายการออกมาบนจอภาพ วิธีทำคือสร้างโหนดชั่วคราวชื่อ temp แล้วกำหนดให้ชี้ไปยังโหนดแรกในลิงค์ลิสต์ จากนั้นใช้คำสั่ง while วนทำงานซ้ำ ในแต่ละครั้งที่วนจะนำข้อมูลที่ชี้โดย temp ออกแสดงบนจอภาพ การเลื่อนไปยังโหนดต่อไปทำได้โดยนำค่าในตัวชี้ Next มาใช้ การตรวจสอบว่าเลื่อนไปถึงโหนดสุดท้ายในลิงค์ลิสต์แล้วหรือยังทำได้โดยตรวจสอบว่า temp มีค่าเท่ากับ null หรือไม่ หากใช่แสดงว่าลิงค์ลิสต์จบเพียงเท่านั้น

 

โปรแกรมทดสอบ

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

 

 

คำสั่งบรรทัดที่ 74 สร้างออพเจ็กต์ลิงค์ลิสต์โดยใช้ตัวแปรอ้างอิงชื่อ myList บรรทัดที่ 75 ถึง 78 แทรกโหนดใหม่เข้าสู่ลิงค์ลิสต์โดยใส่ข้อมูลเป็นเลขจำนวนเต็ม 10,20 และ 30 ตามลำดับ บรรทัดที่ 78 เรียกเมธอด DisplayNodes เพื่อแสดงข้อมูลทั้งหมดในลิงค์ลิสต์ บรรทัดที่ 79 เรียกเมธอด ReadLine เพื่อหยุดการทำงานของโปรแกรม (หากไม่ใส่ไว้ โปรแกรมจะปิดหน้าต่างไปก่อนที่เราจะทันดูผลลัพธ์)

ผลลัพธ์ที่ได้จากการทำงานของโปรแกรมนี้คือ

10

20

30

 

อาเรย์ลิสต์

เรานิยามคลาส Node และคลาส LinkedList เพื่อศึกษาหลักการทำงานของลิงค์ลิสต์เท่านั้น ในการใช้งานจริงเราไม่จำเป็นต้องนิยามลิงค์ลิสต์เอง เพราะ .NET Framework เตรียมคลาสไว้ให้แล้วคือ ArrayList อยู่ในเนมสเปส System.Collections วิธีใช้งานก็คล้ายๆ กัน โค้ดทดสอบการใช้งานอาร์เรย์ลิสต์เป็นดังนี้

 

 

ซอร์สโค้ด

ท่านสามารถดาวน์โหลดซอร์สโค้ดของบทความนี้ได้จากเว็บไซต์ laploy.com (เลือกหัวข้อดาวน์โหลด ไฟล์ชื่อ LinkedList.zip ภายในเป็นโซลูชันที่สร้างจาก Visual Studio .NET 2005)หากท่านมีข้อสงสัยใดๆ โปรดใส่คำถามไว้ที่กระดานถาม-ตอบซึ่งอยู่ในเว็บไซต์เดียวกัน

 

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 

 
ตอน 1

 

สร้างลิงค์ลิสต์เป็นออพเจ็กต์แบบไทป์เซฟโดยไม่ต้องใช้พอยน์เตอร์


 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • เขียนเมื่อ : วันเสาร์ที่ 25 สิงหาคม พ.ศ. 2550
  • พิมพ์ในนิตยสาร : WinMag

 

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

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

 

ลิงค์ลิสต์คืออย่างนี้

ลิงค์ลิสต์ (Linked List) คือโครงสร้างข้อมูลพื้นฐานอย่างหนึ่ง ดีกว่าอาร์เรย์ (array) ในแง่ที่สามารถปรับเปลี่ยนขนาดได้อย่างมีพลวัต ในการใช้งานอาร์เรย์เราต้องกำหนดขนาดที่แน่นอน และไม่สามารถเปลี่ยนขนาดภายหลังได้ หากไม่รู้ปริมาณข้อมูลก่อนล่วงหน้า เราจะไม่สามารถกำหนดขนาดที่เหมาะสมให้แก่อาร์เรย์ได้ (การกำหนดขนาดอาร์เรย์ให้มากไว้ก่อนทำให้เปลืองเนื้อที่ในหน่วยความจำ และไม่ใช้วิธีเขียนโปรแกรมที่ดี)

แต่สำหรับลิงค์ลิสต์ เราไม่จำเป็นต้องกำหนดขนาดตอนเริ่มใช้ และเพราะลิงค์ลิสต์สามารถเพิ่ม-ลดขนาดอย่างไรก็ได้ การนำลิงค์ลิสต์มาสร้างโครงสร้างข้อมูลแบบต่างๆ เช่น สแต็ก (stack) และคิว (queue) ด้วยลิงค์ลิสต์ จึงมีประสิทธิภาพกว่าการใช้อาร์เรย์

 

จัดการข้อมูลอย่างมีประสิทธิภาพ

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

วิธีที่ดีกว่าคือนำกระดาษมาแผ่นหนึ่ง แล้วเขียนรายการจัดเรียงหมายเลขโต๊ะเสียใหม่ หากใช้วิธีนี้เราสามารถจัดเรียงนักเรียนอย่างไรก็ได้โดยไม่เกิดความวุ่นวาย ยกตัวอย่างเช่น กระดาษแผ่นแรกเป็นรายการจัดเรียงตามลำดับชื่อ กระดาษอีกแผ่นเป็นรายการจัดเรียงลำดับตามความเก่งในการเรียน (เช่นเก่งสุดไว้บนสุด)

ในการเปรียบเทียบแบบอุปมาย่อหน้าบน นักเรียนแต่ละคนคือข้อมูล กระดาษและรายการในกระดาษแต่ละแผ่นคือลิงค์ลิสต์ เนื่องจากเราไม่ได้ย้ายตัวข้อมูลจริงๆ เราจึงสามารถใช้ลิงค์ลิสต์จัดการกับข้อมูลปริมาณมหาศาลได้ภายในเสี้ยววินาที

 

ถ้าเรามีห้องเรียนซึ่งมีนักเรียนสามคน หากเราต้องการเรียงลำดับของนักเรียนเสียใหม่

การเรียงข้อมูลด้วยรายการในกระดาษจะมีประสิทธิภาพกว่าการให้นักเรียนย้ายโต๊ะจริงๆ

 

 

มีลิงค์ลิสต์ที่ไหนมีโหนดที่นั่น

โหนด (Node) คือองค์ประกอบพื้นฐานของลิงค์ลิสต์ หากในลิงค์ลิสต์มีข้อมูลสิบรายการ มันก็จะมีโหนดสิบอันด้วย โหนดแต่ละโหนดมีองค์ประกอบสามส่วน คือส่วนทำหน้าที่เก็บข้อมูล (data) ส่วนเก็บตัวอ้างอิงไปยังโหนดก่อนหน้า (Previous) และส่วนเก็บตัวอ้างอิงไปยังโหนดถัดไป (Next)

 

 

โหนดมีองค์ประกอบสามส่วน คือส่วนทำหน้าที่เก็บข้อมูล

ส่วนเก็บตัวอ้างอิงไปยังโหนดก่อนหน้า และส่วนเก็บตัวอ้างอิงไปยังโหนดถัดไป

 

 

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

 

วิธีนิยามโหนด

หากเขียนโปรแกรมด้วยภาษาซี เราจะนิยามโหนดด้วยโครงสร้างข้อมูลแบบสตรัคเจอร์ (struct)เมื่อจะอ้างอิงถึงโหนดเราจะใช้พอยน์เตอร์ แม้ในภาษา C# จะมีพอยน์เตอร์เหมือนกัน แต่เราจะไม่ใช้ เพราะจุดมุ่งหมายของบทความนี้คือการสร้างลิงค์ลิสต์แบบไทป์เซฟ (type-safe เป็นวิธีเขียนโปรแกรมปรกติใน C#)

เมื่อจะไม่ใช้พอยน์เตอร์ เราก็นิยามโหนดด้วย struct ไม่ได้ เราจึงต้องนิยามโหนดด้วยคลาส แล้วนำคลาสไปสร้างออพเจ็กต์ เมื่อสร้างโหนดให้เป็นออพเจ็กต์แล้วเราจะสามารถอ้างถึงมันได้โดยไม่ต้องอาศัยพอยน์เตอร์

โครงสร้างแบบเอาท์ไลน์ (outline) ของคลาส Node เป็นดังนี้

 

 

บรรทัดแรกเป็นส่วนประกาศชื่อคลาส บรรทัดที่ 2 และ 12 กำหนดส่วนหัวและส่วนท้ายของตัวคลาส (คือกำหนดโค้ดส่วน body หรือไส้ในของคลาส) บรรทัดที่ 3 ถึงบรรทัดที่ 5 คือสมาชิกแบบฟิลด์ของคลาสนี้ บรรทัดที่ 7 ถึงบรรทัดที่ 9 คือสมาชิกแบบพร็อพเพอร์ตีของคลาส และสุดท้าย บรรทัดที่ 11 คือเมธอดซึ่งเป็นคอนสทรักเตอร์

 

สมาชิกแบบฟิลด์ของคลาส Node

ฟิลด์ หรือดาต้าฟิลด์ (data field) คือสมาชิกของคลาสซึ่งทำหน้าที่เก็บข้อมูล ช่วยให้ออพเจ็กต์สามารถเก็บข้อมูลได้ ฟิลด์เทียบได้กับตัวแปรโกบัล (global variable) ในภาษาซี แต่จะมีขอบเขตอยู่ภายในคลาสเท่านั้น

โปรดสังเกตว่าฟิลด์ทั้งหมดมีเอ็กเซสโมดิไฟเออร์ (access modifier) เป็นแบบไพรเวท (private) ซึ่งจะมีผลให้โค้ดภายนอกมองไม่เห็นฟิลด์ในออพเจ็กต์

หมายเหตุ : โค้ดภายนอก คือโค้ดที่อยู่ภายนอกคลาสนี้ หมายถึงคลาสซึ่งทำหน้าที่รับบริการ หรือคลาสที่นำคลาสนี้ไปใช้สร้างออพเจ็กต์ (caller หรือ client class) ต่อไปจะเรียกสั้นๆ ว่า “โค้ดภายนอก”

 

 

บรรทัดที่ 1 data ทำหน้าที่เป็นส่วนเก็บข้อมูลของโหนด โปรดสังเกตว่าผู้เขียนกำหนดดาต้าไทป์ หรือชนิดข้อมูลไว้เป็น int หรือเลขจำนวนเต็ม (integer) ทำให้ลิงค์ลิสต์ที่จะสร้างนี้ ทำงานได้กับเฉพาะข้อมูลแบบเลขจำนวนเต็มเท่านั้น หากต้องการให้ลิงค์ลิสต์ทำงานได้กับข้อมูลทุกชนิดต้องเปลี่ยนไปใช้เจนเนอริค (Generic)

บรรทัดที่ 2 previous คือตัวชี้ไปยังโหนดก่อนหน้าตัวมันในลิงค์ลิสต์ โปรดสังเกตว่าเราจะใช้ฟิลด์นี้อ้างถึงออพเจ็กต์แบบโหนด ดังนั้นดาต้าไทป์ของมันจึงต้องเป็นแบบโหนดด้วย โค้ดอาจดูแปลกเพราะเราอ้างถึงดาต้าไทป์ที่เรากำลังนิยามอยู่ภายในตัวนิยามเอง (คือเรากำลังนิยามคลาสชื่อ Node แต่สมาชิกภายในคลาสกลับมีดาต้าไทป์เป็นแบบ Node เสียเอง) ตัวแปลภาษา C# ยินยอมให้เราทำเช่นนี้ได้ การนิยามโหนดจึงสะดวกมาก

บรรทัดที่ 3 คือฟิลด์ชื่อ next ฟิลด์นี้คือตัวชี้ ทำหน้าที่ชี้ไปยังโหนดที่อยู่ถัดไปในลิงค์ลิสต์

 

สมาชิกแบบพร็อพเพอร์ตีของคลาส Node

นักเขียนโค้ดภาษาซีอาจสงสัยว่า พร็อพเพอร์ตีคืออะไร ทำหน้าที่อะไร ในภาษา C# พร็อพเพอร์ตีคือเมธอดพิเศษ ทำหน้าที่ให้โค้ดภายนอกสามารถเข้าถึงข้อมูลภายในออพเจ็กต์ได้ (เราจะนำคลาสนี้ไปสร้างออพเจ็กต์)

คลาส Node มีสมาชิกแบบพร็อพเพอร์ตี (property) สามตัว เท่ากันกับสมาชิกแบบดาต้าฟิลด์ โปรดสังเกตว่านอกจากจำนวนเท่ากันแล้ว ชื่อยังคล้ายกันอีกด้วย แต่ต่างที่ชื่อฟิลด์ตัวอักษรตัวแรกเป็นตัวเล็ก ขณะที่ชื่อของพร็อพเพอร์ตีอักษรตัวแรกจะเป็นตัวใหญ่ ยกตัวอย่างเช่น ฟิลด์ชื่อ data จะมีพร็อพเพอร์ตีชื่อ Data คู่กัน เนื่องจากภาษา C# มีความอ่อนไหวต่ออักษรตัวเล็ก-ใหญ่ ตัวแปลภาษาจึงมองว่าเป็นคนละชื่อกัน

คำสั่ง set และ get คือเอกเซสเซอร์ (accessor) คำสั่ง get ทำให้ client class สามารถอ่านข้อมูลจากฟิลด์ได้ และคำสั่ง get ช่วยให้ client class สามารถเขียนข้อมูลไปยังฟิลด์ได้

 

 

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

 

สมาชิกแบบเมธอดของคลาส Node

เมธอดคือกลุ่มโค้ดซึ่งทำหน้าที่ประมวลผล (คล้ายฟังก์ชันในภาษาซี) คลาส Node มีเมธอดอยู่ตัวเดียว และไม่ใช่เมธอดธรรมดา แต่เป็นเมธอดแบบคอนสทรักเตอร์(constructor method) ขอให้สังเกตว่าโค้ดของคอนสทรักเตอร์ จะเหมือนเมธอดทั่วไป ยกเว้นสองประการๆ แรกคือคอนสทรักเตอร์จะไม่มีรีเทินไทป์ (return type ค่าส่งกลับ) ประการที่สอง คอนสทรักเตอร์ จะต้องมีชื่อเดียวกับคลาสเสมอ

 

 

โค้ดที่เห็นข้างบนคือ คอนสทรักเตอร์ของคลาส Node บรรทัดที่ 1 จะเห็นว่าเมธอดนี้รับพารามิเตอร์หนึ่งตัว ชื่อ data มีไทป์เป็น int ทำหน้าที่รับข้อมูลที่เราจะนำไปใส่ในโหนด บรรทัดที่ 3 อาจดูแปลกๆ เหมือนเรานำค่าในตัวแปร data ไปใส่ในตัวของมันเอง อันที่จริงไม่ใช่ ตัวแปร data ทางซ้ายคือดาต้าฟิลด์ ส่วน data ทางขวาคือตัวแปรพารามิเตอร์

ดังนั้นคำสั่งบรรทัดนี้จึงทำหน้าที่นำข้อมูลที่รับมาจากภายนอก มากำหนดให้โหนด บรรทัดที่ 4 และบรรทัดที่ 5 ทำหน้าที่กำหนดค่าเริ่มต้นให้แก่ฟิลด์ previous และ next ให้มีค่าเป็น null ที่ทำอย่างนั้นเพราะเมื่อโหนดใหม่ถูกสร้างขึ้น เรายังไม่รู้ว่าโหนดก่อนหน้าและโหนดถัดไปคืออะไร ในตอนเริ่มต้นเราจึงต้องเซตค่าตัวชี้สองตัวนี้ให้ว่างไว้ก่อน

โค้ดในคลาส Node มีเพียงเท่านี้ สาเหตุที่มีโค้ดน้อยเพราะโหนดเป็นเพียงดาต้าอิลิเมนท์ (data element) หรือตัวเก็บข้อมูลชิ้นหนึ่ง ไม่จำเป็นต้องประมวลผลอะไรมาก การทำงานส่วนใหญ่ของลิงค์ลิสต์จะอยู่ในคลาส LinkedList ที่ผู้เขียนจะอธิบายรายละเอียดในตอนถัดไปซึ่งเป็นตอนจบ

 

 

หน้าแรก     สารบัญ    เกี่ยวกับบล็อกนี้  เกี่ยวกับผู้เขียน


Laploy Vanichangkul
Professional IT consultant

Laploy Vanichangkul have been working in professional IT consultancy business for ten years. He started his carrier by develop business application using dBASEII, clipper and FoxPro. Today he is an expert in system integration using Microsoft technology such as ASP.NET, ADO.NET, Microsoft SQL Server 2008 and LINQ. It is a normal work day for him to deal with complex query that solve complex business rules. He have good experience in Data mining, Data Warehouse, OLAP (SSRS) and OLTP. He used to work in the international organization in area of database and Business Intelligence.

Beside database and Business Intelligence, his IT knowledge also apply to Microprocessor / Microcontroller Based Embedded System, Rich Internet Application, Framework Development in Object Oriented Programming using C#, NET Framework and Service Oriented Architecture for Enterprise Orchestration.

Laploy Vanichangkul speak fluency Thai and fair English. He have been working in IT projects in many countries include Thailand, India, Germany, Switzerland and The U.S.A. He have traveled throughout Europe and the U.K. That help him to understand the European custom and culture.

Recently, Laploy Vanichangkul gives IT consultancy to Thailand leading organization include TOT, CAT and Jasmine. He also have many publish book such as OOP C# ASP.NET” (ISBN 13:978-974-212-598-1) and Database – Query – T-SQL – Stored Procedure and regularly write articles for IT periodical.

Email: laploy@gmail.com
Phone: 084-007-5544
Web: www.laploy.com

 

 

Contributions

I’ve ten experience  in IT business. The companies I served are among the Blue Chip companies like CAT Telecom, TOT Public Company Limited, Q-House, Jasmin, Accenture, to name but a few. Hereunder are some few examples of my IT consultancy works;

 

Job Title: PEA SCADA MARS Master
Client: Provincial Electricity Authority (PEA)
Location: Thailand
Date: 2009-2010

Abstract
•    Over view: The SCADA applications include the distribution network model, connectivity analysis, power flow, fault isolation and system restoration, trouble call management, and volt/var control functions. The distribution network and graphical displays were imported from the corporate GIS using the GIS-Gateway.  These systems allow PEA to manage the operation of the distribution system in real-time, and provide tools that identify ways to optimize the network and improve the quality and reliability of service.
•    Approach: Area Distribution Dispatch Centres (ADDC), communicate with over 8,000 remote terminal units and Substation Automation Systems. The RTUs communicate with each ADDC using the DNP3 protocol over a combination of digital microwave, TDMA, telephone lines and UHF radio links.
•    Development: I have designed the hardware and software for MARS (Multi Address Radio System) Master that communicate with RTUs via UHF link.
Key technology: C#

 

 

Job Title: Network Management System
Client: Provincial Electricity Authority (PEA)
Location: Thailand
Date: 2010

Abstract
•    Over view: Network Management System (NMS) is running at each new ADDC that will he used by Authority personnel for network-wide diagnostic monitoring, maintenance, and  configuration of the UHF communications equipment, i.e., the MARS master radios, multiplexers, and  remote radios. 
•    Approach: The MARS NMS software shall support the communication of diagnostic data from all MARS radios within a MARS radio cell. The software shall connect to all master radios in the MARS communications system via dedicated modem, or hard wired RS-232 link.. Each master radio and remote radio shall have a unique diagnostic address.
•    Development: I have designed the hardware and software for Network Management System (NMS).
Key technology: C# 3.0 and Microsoft SQL Server 2008

 

Job Title : Cell sites remote monitoring system
Client : Communication Authorization of  Thailand (CAT)
Location: Bangkok
Date: 2006

Abstract:
•    Over view: Telecom shelter for cellular telephone cell sites in Thailand are suffering from heat and humidity. To maintain reliability of a cell site circuitry, three air-conditioner are brought in and set to run eight hours per unit in circle. Electric consuming and maintenance cost of cell sites’ air-conditioners generate major expense.
•    Approach: Since most upcountry cell sites are located in remote area. Access to those shelter are time consuming and expensive. To minimize on site visit for scheduled checking. The shelter temperature and humidity must be carefully monitoring. Also unusual electric consumption of the air-con must be aware.
•    Development: I designed a special microcontroller circuitry to captures temperature, humidity and electric consumption data. Utilize the RS-232 interface and a PC running Windows + NET Framework to collect data and record in the off-line MS Access database. These data then automatically sent to Internet and stored in MS SQL Server every ten seconds interval.
    Server-side programs are written in C# to allow user from  anywhere in the world to access and monitor the cell site status. Client-side script written in  JavaScript to produce streamline information updating (AJAX using XML to interchange data with C# server-side script) also featuring real-time graph on web browser.
    Information can be export to MS Excel for off-line analysis. On-line analysis also possible include line chart. Program has been test and work well in both Internet Explorer and Mozilla Firefox web browser.
•    Status: On-line
Key technology: ASP.NET 2.0, C#, JavaScript, AJAX, XML, MS-SQL Server and Micro controller using C language.

 

 

Job title : Telephone cable robbery SMS notification system
Client : TOT
Location: Thailand
Date: 2007

Abstract:
•    Over view: Last year TOT loss over 10 millions Baht due to telephone cable robbery. The robber cut telephone cable from electric pole in deserted location.
•    Approach: TOT need a system to notify police before the robber leave the scene. I develop a system which monitoring the telephone cable health. The SMS will be send to police mobile phone as soon as the system found telephone cable disconnect.
Development: I designed and create hardware and software for this project. I use cheap PC and simple cable monitoring circuit. The circuit connected to one free telephone line on the monitored cable. C# program in the PC will continually send line status to a web server. Server-side program (also in C#) will send SMS as soon as its found a bad bit.
•    Status: On-line

Key technology: ASP.NET 2.0, C#, JavaScript, AJAX, XML and MS-SQL Server 2005.

 

 

 

Job title : On-line Product Catalog (ASP.NET)
Client : Thailand2buy
Location: Bangkok
Date: 2007

Abstract:
•    Over view: Thailand2buy is a reseller in Bangkok whom export Thai products to the USA and Europe. They wanted to have an on-line catalog which buyer around the world can access all product information before make purchase in volume.
•    Approach: Thaiand2buy needs a website with dynamic content. They must be able to add, remove and edit all product information anytime by themselves.
Development: I made website design, both structure and artwork. I create web application model in ASP.NET 2.0 and C#. This application include product database authoring and user right management. This application will run in any computer with standard web browser.
    One of its may interesting feature is “Currency calculator” which cleverly employ C# delegate and Web service technology.
    The application is designed with OOP in mind. It is highly customizable. All codes are reusable and can be tailor into a new web site rapidly.
•    Status: On-line

Key technology: ASP.NET 2.0, C#, JavaScript, AJAX, XML and MS-SQL Server.

  

 

 

Job title : Layana Resort & Spa website
Client : Lanta Land development Co., Ltd.
Location: Lanta Island, Krabi
Date: 2007

Abstract:
•    Over view: Layana Resort is well-known five stars resort in the Lanta island, south of Thailand. Lanta Land wants a full features website which include information pages, photo gallery, rooms rate, packages information, room on-line reservation etc.
•    Approach: I designed all static pages in plain HTML and dynamic pages with C# in ASP.NET 2.0 for room reservation.
Development: These are some height-light feature.
Water wave title: Move mouse at the top title bar you will see water effect. This was written in Java (not JavaScript).
JavaScript menu bar: Has been designed to be interactive, fast and harmonize to the overall website design.
Restaurant Upgrade: The content of this section can be managed by Layana’s personal. Written using ASP.NET 2.0, C#, and MS-SQL Server
•    Status: On-line

Key technology: Java, ASP.NET 2.0 and C#, JavaScript, AJAX, XML and MS-SQL Server and HTML.

 

 

Job title : Club Car website
Client : Club Car Thailand Co., Ltd.
Location: Thailand
Date: January 2001

Abstract:

•    Over view: The client need to improve design of the website from old-fashion to modern-look design. Also want to add on-line car rental system.

•    Approach: Redesign the website using PhotoShop and Adobe Illustrator. On-line application was done with PHP script.

•    Development: These are some height-light feature.
o    Flash Animation: Some graphic is done in Shockwave technology.
o    Membership submission : The visitor can submit for special membership offers (written in VB Script).
o    Extranet: On-site club car personal connect to website for car rental status (written in VB Script).

Key technology: ASP, VB Script, MySQL and PHP.

 

 

Job Title: Multimedia Authoring Tool
Client: MIE Gmbh
Location: Frankfurt am Main, Germany
Date: 1996-1997

Abstract
•    Over view: The need of custom multimedia presentation for organization and product grow beyond in-house personal can cope with. The demand for easy to use yet powerful enough multimedia authoring tool  has rising. 
•    Approach: The client decided to develop their own multimedia authoring tool  to use internally and to provide service to their clients.
•    Development: I have designed a low cost and easy to use multimedia authoring tool  to served the requirement.
Key technology: VB6, ODBC and MS SQL Server 6

 

 

Job Title: Presentation layer for product database
Client: Medien und Veröffentlichung AG
Location: Zurich, Switzerland
Date: 1997-1999

Abstract
•    Over view: The client company is a world-wide business directory publication with several million of customer information in the database. The requirement was to present client data, include product picture, video  in the sophisticate manner.
•    Approach: The best solution was to develop Presentation layer beside from logic and database layer.
•    Development: I have designed Presentation layer wish be able to show text, picture and video on demand.
Key technology: VB6, ODBC and custom made DBMS

 

 

Other IT projects

In additional to the previous examples, there are more than 30 IT projects I have served in the past seven years. Hereunder are to name but a few;

Client: Allianz C.P.
Business : Insurance

 

Client: Suvarnabhumi Airport
Business: Airport

 

Client: Club Car
Business: Electric car

 

Client: Daijitsu
Business: Air conditioner manufacturer

 

Client: International School Bangkok (ISB)
Business: Education

 

Client: Jasmine International Public Company Limited
Business: Telecommunication

Client: Thairung
Business: Automobile Manufacturer

 

 

Client: Kongphop
Business: Frozen food

 

Client: Piyavate Hospital
Business: Health care

 

Client: Other Ways
Business: Tourist Agency

 

Client: Sky Eyes
Business: Flight Business

Publication

In the last five years I’ve been writing several books and magazine articles. I used to be an Editor at large of Computer Time magazine.  Hereunder are some examples of my work;

Publication: Data structures Demystified
ISBN: 974-9672-45-3
Year: 2005
Role: Translator

 

Publication: OOP C# ASP.NET
ISBN: 13:978-974-212-598-1
Year: 2007
Role: Author

 

Publication: Database – Query – T-SQL – Stored Procedure
ISBN: 978-616-08-0009-4
Year: 2009
Role: Author

 

หน้าแรก     สารบัญ    เกี่ยวกับบล็อกนี้  เกี่ยวกับผู้เขียน

เว็บบล็อก "คนคอมพิวเตอร์" หรือ Laploy’s articles เป็นบล็อกรวบรวมบทความจาก ลาภลอย วานิชอังกูร มีบทความหลายประเภทคละกัน เช่นบทความเกี่ยวกับการพัฒนาซอฟต์แวร์ บทความเกี่ยวกับการสร้างและดัดแปลงฮาร์ดแวร์ บทความเกี่ยวกับเทคโนโลยีคอมพิวเตอร์ทั่วไป บทความทั่วไป และนิยายนักสืบ

บทความเหล่านี้ส่วนใหญ่ถูกตีพิมพ์ในนิตยสารคอมพิวเตอร์หัวต่างๆ เช่น Windows Magazine (WinMag), Micro Computer, CHIP, Hobby Electronic, Computer Today, Windows IT Pro และอื่นๆ ในระหว่างปี ค.ศ. 2006 – 2008 และมีบางบทความที่เขียนขึ้นเป็นพิเศษเพื่อลงในบล็อกนี้โดยเฉพาะ

 

 

สวัสดีครับ ยินดีต้อนรับสู่เว็บบล็อก "คนคอมพิวเตอร์" หรือ Laploy’s articles

ขอให้สนุกกับการอ่านบทความต่างๆ นะครับ


เกี่ยวกับบล็อกนี้

เว็บบล็อก “คนคอมพิวเตอร์” หรือ Laploy’s articles เป็นบล็อกรวบรวมบทความจาก ลาภลอย วานิชอังกูร มีบทความหลายประเภทคละกัน เช่นบทความเกี่ยวกับการพัฒนาซอฟต์แวร์ บทความเกี่ยวกับการสร้างและดัดแปลงฮาร์ดแวร์ บทความเกี่ยวกับเทคโนโลยีคอมพิวเตอร์ทั่วไป บทความทั่วไป และนิยายนักสืบ

เกี่ยวกับผู้เขียน

ลาภลอย วานิชอังกูร เป็นผู้เชี่ยวชาญการพัฒนาแอพลิเกชันฐานข้อมูลและ Business Intelligence โดยเริ่มจากการพัฒนาโปรแกรมด้วย dBaseII, Clipper, FoxPro ปัจจุบันเป็นผู้เชี่ยวชาญในการบูรณาการระบบฐานข้อมูลด้วยเทคโนโลยีของไมโคร ซอฟต์เช่น ASP.NET, ADO.NET, Microsoft SQL Server 2008 และ LINQ ชำนาญการเขียนคิวรีเพื่อแก้ปัญหาทางธุรกิจที่ซับซ้อน Data mining, Data Warehouse, OLAP (SSRS), OLTP เคยออกแบบฐานข้อมูลสัมพันธ์ในองค์กรระหว่างประเทศ เคยพัฒนาแอพลิเกชันฐานข้อมูลในโครงการขนาดใหญ่หลายโครงการ และเคยให้คำปรึกษาด้าน BI ในศูนย์คอมพิวเตอร์ (T-Center) ในองค์กรของประเทศฝรั่งเศส
นอกจากงานฐานข้อมูลแล้ว ลาภลอย วานิชอังกูร ยังเชี่ยวชาญการพัฒนาซอฟต์แวร์ระบบฝังตัว (Microprocessor / Microcontroller Based Embedded System) งานพัฒนาแอพลิเกชันในอินเตอร์เน็ตแบบ RIA (Rich Internet Application) งานพัฒนาโครงสร้างพื้นฐานของซอฟต์แวร์ด้วยหลักการ OOP (Framework Development in Object Oriented Programming) ด้วยภาษา C# และ .NET Framework และงานบูรณาการระบบในองค์กรหรือ SOA (Service Oriented Architecture for Enterprise Orchestration) เคยร่วมงานกับทีมพัฒนาซอฟต์แวร์ในหลายๆ ประเทศ เช่น ไทย อินเดีย สวิส เยอรมัน และประเทศสหรัฐอเมริกา
ปัจจุบัน ลาภลอย วานิชอังกูร ทำหน้าที่ให้คำปรึกษาการวางระบบ IT (เช่น SQL, OLAP,.NET, SCADA, BI, SOA และอื่นๆ) ให้แก่หน่วยงานขนาดใหญ่หลายแห่ง และมีบทความทางวิชาการตีพิมพ์ในวารสารหลายเล่มอย่างสม่ำเสมอ และเป็นผู้เขียนหนังสือ "เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure" และ “เรียนรู้ด้วยตนเอง OOP C# ASP.NET” (ISBN 13:978-974-212-598-1)
ท่านสามารถติดต่อผู้เขียนได้ที่อีเมล laploy@gmail.com

เรียนรู้ด้วยตนเอง OOP C# ASP.NET

ชื่อหนังสือ : เรียนรู้ด้วยตนเอง OOP C# ASP.NET โดย : ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่ายโดย : บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN : 13:978-974-212-598-1 ราคา : 349 บาท จำนวนหน้า : 648 ขนาด : 19x29 ซ.ม.

เรียนรู้ด้วยตนเอง DataBase – Query – T-SQL – Stored Procedure

ชื่อหนังสือ: เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure โดย: ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่าย: บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN: 978-616-08-0009-4 ราคา: 559 บาท จำนวนหน้า: 1,100 ขนาด: 19x29 ซ.ม. วางตลาด: ตุลา 2552

กรุณาป้อนอีเมลของท่าน

Join 17 other followers

Advertisements