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

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

มาสร้างเมาส์อากาศกันเถอะ
สร้างเมาส์ที่ทำงานได้กลางอากาศ คุณจะเล่นเกมสามมิติได้โดยไม่ต้องใช้โต๊ะหรือแผ่นรองเมาส์อีกต่อไป
ลาภลอย วานิชอังกูร (laploy.com)

ตอน 1

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

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

 

 
เมาส์ที่ทำงานในฝ่ามือ

เมาส์อากาศที่จะสอนวิธีสร้างในบทความนี้ เหมาะสำหรับใช้ในการเล่น เกมมุมมองบุคคลที่หนึ่ง (First-person shooting เช่น ดูม เควก และฮาร์ฟไลฟ์) เกมลักษณะนี้ต้องการการเคลื่อนไหวที่รวดเร็วแม่นยำ เมาส์อากาศที่เราจะสร้างจึงต้องทำงานได้ละเอียด มีความเชื่อถือได้สูง สามารถใช้งานได้คล่อง

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

 

 
 การใช้เมาส์อากาศควบคุมการนำเสนอบนจอภาพขนาดใหญ่

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

การใช้งานเมาส์อากาศทำได้หลายโหมดดังนี้

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

 

เมาส์อากาศแบบสามมิติที่เคลื่อนได้ทุกทิศทาง

 

รายการอุปกรณ์

อุปกรณ์สำหรับใช้ทำส่วนแกนกลาง

1.  เมาส์ไร้สาย : ให้เลือกแบบตัวเล็ก ยิ่งเล็กยิ่งดี หากได้แบบที่แผ่นวงจรมีขนาดสั้นจะทำให้สามารถนำมาสร้างเมาส์โหมดอากาศสามมิติได้ง่ายขึ้น ในบทความนี้ใช้เมาส์ยี่ห้อ CompUSA รุ่น sku 309750 ซึ่งมีขนาดเล็กที่สุดที่หาได้ ผู้สร้างเมาส์ตัวนี้ออกแบบแผ่นวงจรมาอย่างเรียบง่าย ทำให้การตัดบางส่วนออกเพื่อให้มีขนาดสั้นลงทำได้ง่ายดี ส่วนที่ตัดออกได้คือส่วนลูกล้อเลื่อนหน้าจอ และส่วนล่างของแผ่นวงจรที่ต่อกับขั้วของถ่านไฟฉาย [ย่อหน้า] เมาส์ตัวนี้เหมือนเมาส์ไร้สายราคาถูกทั่วไปคือมีจุดรวมแสงยาว เหมาะแก่การนำมาใช้ทำเมาส์อากาศ

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

 

เมาส์ยี่ห้อ CompUSA รุ่น sku 309750 ที่นำมาใช้สร้างตัวต้นแบบในบทความนี้ แต่ท่านสามารถใช้เมาส์ไร้สายราคาถูกยี่ห้ออะไรก็ได้ ให้เลือกแบบยิ่งเล็กยิ่งดี

2.  ถ่านไฟฉาย : ดูว่าเมาส์ที่ซื้อมาใช้ถ่านกี่ก้อน ส่วนมากจะใช้สองก้อน แบบ AA ซึ่งใหญ่เกินไป เราจะใช้ถ่านไฟฉายขนาด AAA ที่เล็กกว่าแทน หากท่านมีถ่านไฟฉายที่เล็ก AAA ก็ยิ่งดี แต่ต้องมีแรงดันรวมแล้ว 3 โวลต์ ส่วนถ่านกระดุมแบบที่ใช้ในนาฬิกาจ่ายกระแสได้น้อยเกินไปจึงใช้ไม้ได้

3. สายไฟ : สายไฟเส้นเล็กๆ ที่ใช้ต่อวงจรทั่วไป ยาวสักสิบนิ้ว เราจะใช้เพื่อย้ายที่ปุ่มซ้ายของเมาส์ และเพื่อต่อเชื่อมถ่านไฟฉายสองก้อนเข้าด้วยกัน

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

5. แผ่นโฟม : เราต้องใช้แผ่นโฟมหรือฟองน้ำบางๆ (ความหนาประมาณ ¼ นิ้ว) หุ้มโดยรอบ เพื่อกันไม่ให้ส่วนหักเหแสงเคลื่อนที่ และทำให้มันอยู่หางจากผิวของแกน (ตัวถัง) ในระยะที่เหมาะสม

6. หนังสติ๊ก : หนังยางรัดของแบบแบนใหญ่อย่างที่ธนาคารใช้รัดปึกธนบัตร เราจะนำมาใช้เพื่อให้เกิดแรงหนืดในการเคลื่อนที่ทางด้านข้างและใช้เพื่อรัดถ่านไฟฉายไว้กับขั้วถ่าน

 

อุปกรณ์สำหรับใช้ทำส่วนตัวหุ้ม

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

ขวดใส่เครื่องสำอาง เลือกซื้อแบบที่มีขนาดพอดีใส่แผ่นวงจรและถ่ายไฟฉายได้

 

8. เทปกาว : เทปกาวใสหรือสก็อตเทปใช้เพื่อจับยึดส่วนตัวหุ้ม

9. เทปกาวสองหน้า : แบบบาง ใช้เพื่อยึดวงแหวนพลาสติกที่เป็นตัวเชื่อมต่อตัวถังไว้ด้วยกัน และใช้เพื่อติดไมโครสวิตช์ 

เทปกาวสองหน้า

 

อุปกรณ์สำหรับใช้ทำส่วนตัวหุ้มด้านนอก

10. ถุงเท้าเด็ก : เลือกถุงเท้าที่ยืดหยุ่นได้ดี ถุงเท้าขนสัตว์เทียมใช้งานได้ดีสุด สาเหตุที่เลือกใช้ถุงเท้าเนื่องจากไม่มีตะเข็บด้านข้าง ทำให้การเลื่อนเมาส์ทำได้ดี ไม่สะดุด การเลือกใช้ถุงเท้าสวยๆ จะช่วยให้เมาส์อากาศของท่านโดดเด่นไม่ซ้ำแบบใคร

ถุงเท้าขนสัตว์เทียมใช้งานได้ดีสุด

 

11. เข็มและด้าย : ใช้เพื่อเย็บส่วนตัวหุ้มด้านนอก

12. หมุด : เป็นหมุดโลหะเหมือนกระดุมที่ใช้ติดผ้าสองชิ้นเข้าด้วยกัน หรือจะใช้เข็มกลัดซ่อนปลายก็ได้ เราจะใช้เพื่อยึดตัวหุ้มด้านนอก

หมุดยึดผ้า

 

อุปกรณ์สำหรับใช้ทำส่วนระหว่างตัวหุ้มด้านนอกและด้านใน

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

13. น้ำมันหล่อลื่น : คาดว่าน้ำมันพืชที่ใช้ทำอาหารจะจับตัวเหนียวเกินไป เมื่อใช้งานไประยะหนึ่ง จึงไม่เหมาะที่จะนำมาใช้ สบู่หรือสิ่งหล่อลื่นที่มีส่วนผสมของน้ำจะทำงานได้ดีกว่า หรือจะใช้น้ำมันทาตัวเด็ก (เบบี้ออลย์) ซึ่งเป็นของเหลวใสก็ได้เหมือนกัน

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

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

เครื่องมือ

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

แด่นักเล่นเกม

เกมบางเกมตอนเล่นต้องใช้แป้นพิมพ์ด้วย ให้ดูที่ร้านขายอุปกรณ์คอมพิวเตอร์ในศูนย์ไอที ส่วนใหญ่จะมีแป้นพิมพ์ไร้สายเฉพาะส่วนตัวเลข (numeric key-pad) ที่เรานำมาดัดแปลงติดไว้ที่เอวได้ หากทำเช่นนี้จะทำให้เล่นเกมโดยไม่ต้องนั่งอยู่หน้าจอคอมพิวเตอร์ 

 

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

 

โปรดติดตามวิธีทำและรายละเอียดที่เหลือในตอนสองซึ่งเป็นตอนจบ

Advertisements

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

นิยายนักสืบตอน
Host Intrusion Prevention [2]
ลาภลอย วานิชอังกูร

นี่คือตอนจบของ นิยายนักสืบตอน Host Intrusion Prevention

12:00 น. โรงอาหาร อาคารสินสมุทรประกันภัย สาขาพิษณุโลก

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

  • ช่วยต่อต้านการโจมตี
  • ประหยัดดีไม่ต้องแพตช์มาก
  • ไม่ลำบากโรคลุกลาม
  • เป็นไปตามนโยบาย

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

 


โปรแกรม AntiHook ถูกออกแบบมาเพื่อการใช้งานในคอมพิวเตอร์แบบเดกส์ทอป

 
โปรแกรม ThreatSentry ถูกออกแบบมาเพื่อป้องกันการโจมตีต่อ IIS (Microsoft Internet Information Service)

 

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

ครู่ต่อมามงคลก็เงยหน้าขึ้น ยิ้ม นัยน์ตาเป็นประกายแวววาว และพูดทั้งๆ ที่มีอาหารอยู่เต็มปากว่า "ไม่ลำบากโรคลุกลาม นี่คืออะไรจ๊ะอาจารย์?"

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

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

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

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

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

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

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

 

13:00 น. ห้องประชุมสุดสาคร  อาคารสินสมุทรประกันภัย สาขาพิษณุโลก

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

  • ไม่ทนคนหักหาญ
  • ไม่ผ่านทุกย่านคลุม
  • กลัดกลุ้มตัวเมินเครื่อง

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

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

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

"คู รา ฮี! คู รา ฮี! คู รา ฮี!"

 

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

"ตกลงสำนักงานนั้นตัดสินใจติดตั้งฮิพส์ไหมคะ?" ใจทิพย์ถามขณะหยอดเหรียญเข้าเครื่องจ่ายตั๋ว
"ติดตั้งสิครับ" ผมตอบพลางเฝ้ามองดูหล่อน
"แล้วผลลัพธ์เป็นอย่างไรคะ?"
"อันที่จริงแล้วได้ผลดีมาก เมื่อสำนักงานใหญ่ทราบเรื่อง และส่งคนไปประเมินผล ได้ตัดสินใจติดตั้งฮิพส์ที่สำนักงานใหญ่ด้วย และยังแนะนำให้สาขาอื่นๆ ติดตั้งฮิพส์ด้วยเช่นกัน"
"ขอบคุณที่เล่าเรื่องนี้ให้ฟัง รถไฟของดิฉันมาพอดี ราตรีสวัสดิ์ค่ะสุนทร" ใจทิพย์ประกาศแล้วเดินจากไป

ไม่กี่วินาทีรถไฟขบวนนั้นก็หายลับไปในอุโมงค์ ทิ้งผมไว้เพียงลำพังบนชานชาลาที่ปราศจากผู้คน

 

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

นิยายนักสืบตอน
Host Intrusion Prevention [1]
ลาภลอย วานิชอังกูร

 

 

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

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

"เธออย่าเรียกฉันว่าอาจารย์เลย แต่จงเรียกว่าสุนทรเถิด และธุระที่พิษณุโลกนั้น ฉันจะเล่าให้ฟังเดี๋ยวนี้ก็ได้ หากเธอประสงค์"
"ดีสิคะ… สุนทร จงเล่าให้ดิฉันฟังเถิด"

 

10:00 น. ห้องประชุมสุดสาคร อาคารสินสมุทรประกันภัย สาขาพิษณุโลก

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

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

"วีพีเอ็นคืออะไรคะ?" จินดา สตรีวัยกลางคนผู้จัดการฝ่ายขายถามขึ้น
"วีพีเอ็นย่อมาจาก Virtual Private Network ครับ เป็นการสร้างสะพานหรืออุโมงค์เชื่อมต่อเรากับกรุงเทพฯ ผ่านอินเตอร์เน็ต" ถมยาตอบ
"เหมือนกะการใช้สายเช่าใช่ไหมจ๊ะ?" มงคล ชายร่างอ้วนมีหนวดคราครึ้มถามขึ้น เขาเป็นเจ้าหน้าซึ่งมีตำแหน่งสูงสุดในที่ประชุมนี้ เป็นผู้ว่าจ้างให้ผมเป็นที่ปรึกษาด้านความปลอดภัยของเครือข่าย
"ใช่ครับท่าน แต่การทำวีพีเอ็นประหยัดกว่าลีสต์ไลน์มาก เราไม่ต้องเช่าสายส่วนตัวจากองค์การโทรศัพท์ ใช้เพียงอินเตอร์เน็ตความเร็วสูง ที่เช่ารายเดือนจากสยามเทวะ ทำหน้าที่เป็นตัวกลาง" ถมยาเฉลย
"ถ้าเราใช้อินเตอร์เน็ตซึ่งเป็นเครือข่ายสาธารณะ แล้วข้อมูลที่เรารับ-ส่งกับกรุงเทพฯ จะปลอดภัยหรือคะ?" จินดาพูดด้วยสีหน้าตกใจ
"อ๋อ ไม่ต้องห่วงหรอกครับ วีพีเอ็นมีกลไกเข้ารหัสและระบบรักษาความปลอดภัยต่างๆ ผู้ใช้อินเตอร์เน็ตทั่วไปไม่สามารถเข้าถึงข้อมูลที่วิ่งอยู่วีพีเอ็นได้ มันจึงเป็นเสมือนเครือข่ายรโหฐาน" ถมยาปลอบใจ

 

 
VNP หรือ Virtual Private Network เชื่อมโยงสำนักงานใหญ่กับสาขา

 

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

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

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

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

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

 

11:30 น. ห้องประชุมสุดสาคร อาคารสินสมุทรประกันภัย สาขาพิษณุโลก

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

Host Intrusion Prevention – HIPS

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

  • ต่อต้านตัวอัปมงคล
  • ไม่รนโปรแกรมดี
  • สติมีรู้แยกแยะ
  • ชอบข้องแวะพวกลึกลับ
  • จวกไม่นับโปรแกรมโง่

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

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

 

 
NetClearity โปรแกรมฮิพส์สำหรับผู้ใช้แบบองค์กร

 
โปรแกรมฮิพส์จากบริษัท CA

 

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

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

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

 

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

โปรดติดตามตอน 2 ซึ่งเป็นตอนจบได้ในบล็อกนี้

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

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [6]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

คอนสทรักเตอร์ของคลาส AvailabotForm
คอนสทรักเตอร์ของคลาส AvailabotForm ทำหน้าที่กำหนดค่าเริ่มต้นให้แก่ออพเจ็กต์ที่จะถูกสร้างจากคลาสนี้

1 public AvailabotForm()
2 {
3     InitializeComponent();
4     timer1.Interval = 1000;
5     textBox1.Text = "Start at " + DateTime.Now.ToString() + "\r\n";
6 }

บรรทัดที่ 3 เรียกเมธอด InitializeComponent ซึ่งเป็นเมธอดที่ถูกสร้างโดยดีไซเนอร์ของ MSVS เพื่อวาดภาพกล่องตัวอักษรและปุ่ม บรรทัดที่ 4 กำหนดค่าให้แก่ตัวจับเวลา timer1 ให้มีช่วงเวลาหน่วง 1,000 มิลลิวินาที หรือหนึ่งวินาที (เราใช้ timer1 เพื่อตรวจสอบสถานะของแฟนทุกๆ วินาที) บรรทัดที่ 5 แสดงข้อความแจ้งการเริ่มทำงานในกล่องตัวอักษร textBox1

เมธอด MoveCW
เมธอด MoveCW ทำหน้าที่หมุนเซอร์โวตามเข็มนาฬิกา (Clock Wise เรียกย่อ CW)คือการหมุนวนขวา (ทักษิณาวรรต)  เมธอด MoveCW มีโค้ดดังนี้

1 private void MoveCW(int r)
2 {
3      timer1.Enabled = false;
4      for (int i = 0; i < r; i++)
5      {
6          myPort.OutPut(255);
7          myPort.OutPut(0);
8          Thread.Sleep(40);
9      }
10     timer1.Enabled = true;
11 }

บรรทัดที่ 1 ทำหน้าที่กำหนดว่าเมธอดนี้ไม่มีค่าส่งกลับและมีพารามิเตอร์หนึ่งตัวคือ r ทำหน้าที่กำหนดจำนวนพัลส์ คำสั่งวนซ้ำในบรรทัดที่ 3 นำค่า r มากำหนดจำนวนรอบของการทำงานซ้ำ การทำงานหนึ่งรอบจะสร้างพัลส์หนึ่งลูกซึ่งจะทำให้เซอร์โวเคลื่อนไปประมาณ 8 องศา (เซอร์โวรุ่นอื่นหรือยี่ห้ออื่นอาจเคลื่อนมากหรือน้อยกว่านี้)

เราต้องหยุดการทำงานของ timer1 ไว้ชั่วคราว (บรรทัดที่ 3)เพื่อไม่ให้รบกวนการทำงานของพัลส์ และให้ทำงานต่อเมื่อเราส่งพัลส์เสร็จแล้ว (บรรทัดที่ 11)

บรรทัดที่ 6 ถึง 9 คือโค้ดไส้ในของการวนซ้ำทำหน้าที่สร้างพัลส์หนึ่งลูก บรรทัดที่ 6 เซตให้ทุกบิตของพอร์ทเครื่องพิมพ์มีค่าเป็นหนึ่ง บรรทัดที่ 7 ทำหน้าที่หน่วงเวลานาน 1 มิลลิวินาที บรรทัดที่ 8 เซตให้ทุกบิตของพอร์ทเครื่องพิมพ์มีค่าเป็นศูนย์ และบรรทัดที่ 9 ทำหน้าที่หน่วงเวลานาน 20 มิลลิวินาที ผลลัพธ์ที่ได้คือพัลส์หนึ่งลูกตาม (โปรดดูแผนภูมิประกอบการทำงานของโปรแกรม)

แผนภูมิเวลาของพัลส์ที่ถูกสร้างด้วยเมธอด MoveCW

เมธอด MoveCC
เมธอด MoveCW ทำหน้าที่หมุนเซอร์โวทวนเข็มนาฬิกา (Counter Clock Wise เรียกย่อ CC)คือการหมุนวนซ้าย (อุตราวรรต)  โค้ดของเมธอด MoveCW เหมือนโค้ดของเมธอด MoveCW ทุกประการ ยกเว้นช่วงหน่วงขณะโลจิกสูงมีระยะเวลาสองมิลลิวินาที

1  private void MoveCC(int r)
2  {
3      timer1.Enabled = false;
4      for (int i = 0; i < r; i++)
5      {
6          myPort.OutPut(255);
7          Thread.Sleep(2);
8          myPort.OutPut(0);
9          Thread.Sleep(40);
10      }
11      timer1.Enabled = true;
12  }

เมธอด RepeatMove
เมธอดนี้จะทำงานหากเรากำหนดให้หุ่นแอ๊บแบ๊วทำงานในโหมดหันต่อเนื่อง หน้าที่ของมันคือทำให้หุ่นแอ๊บแบ๊วหันไปทางซ้าย แล้วหันไปทางขวาสลับไปเช่นนี้ตลอดเวลาที่แฟนออนไลน์

1  private void RepeatMove(int x)
2  {
3      if (x == 1)
4      {
5          textBox1.Text = " Love On-line!!!";
6          if (moveToLeft)
7              MoveCW(18);
8          else
9              MoveCC(17);
10         moveToLeft = !moveToLeft;
11     }
12 }

เมธอด OneTimeMove
เมธอดนี้จะทำงานหากเรากำหนดให้หุ่นแอ๊บแบ๊วทำงานในโหมดหันครั้งเดียว หน้าที่ของมันคือทำให้หุ่นแอ๊บแบ๊วหันหน้ามาหาเราเมื่อแฟนออนไลน์ และหันหลังให้เราหากแฟนออฟไลน์

1   private void OneTimeMove(int x)
2   {
3       if (x == 1)
4       {
5           if (!userStat)
6           {
7               textBox1.Text = " Love On-line!!!";
8               userStat = true;
9               MoveCW(18);
10          }
11      }
12      else
13      {
14          if (userStat)
15          {
16              textBox1.Text = " *** Love Off-line **** ";
17              userStat = false;
18              MoveCC(17);
19          }
20      }
21  }

เมธอด timer1_Tick
เมธอด timer1_Tick จะทำงานเองโดยอัตโนมัติทุกๆ หนึ่งวินาที เพราะเรากำหนดค่า timer1.interval ไว้ในเมธอดคอนสทรักเตอร์ ให้มีค่าเป็นหนึ่งวินาที

1   private void timer1_Tick(object sender, EventArgs e)
2   {
3       myTR = new StreamReader(@"c:\msn-test\log.txt");
4       int x = Convert.ToInt32(myTR.ReadLine());
5       myTR.Close();
6       if (repeat)
7           RepeatMove(x);
8       else
9           OneTimeMove(x);
10  }

บรรทัดที่ 3 อ่านข้อมูลจากแฟ้มข้อมูลตัวอักษรชื่อ log.txt ซึ่งอยู่ในโฟลเดอร์ c:\msn-test ค่าที่อ่านได้จะมีเพียงเลข 0 หรือเลข 1 อย่างใดอย่างหนึ่งเท่านั้น แต่เราอ่านมาเป็นข้อความ จึงต้องแปลงเป็นข้อมูลแบบเลขจำนวนเต็มเสียก่อน (บรรทัดที่ 4) เมื่ออ่านเสร็จแล้วปิดไฟล์ (บรรทัดที่ 5 หากไม่ปิดไฟล์ GetAlert จะเปิดไฟล์นี้ไม่ได้และจะเกิดเออเรอร์)

นำค่าที่อ่านได้มาตรวจสอบว่าเป็น 1 หรือไม่  (บรรทัดที่ 6) ถ้าใช่ แสดงว่าแฟนออนไลน์แล้ว เราจะหมุนเซอร์โว  (บรรทัดที่ 12) และแสดงข้อความในกล่องตัวอักษร textBox1  (บรรทัดที่ 10)

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

วิธีตรวจสอบทำได้หลายแบบ อย่างง่ายสุดคือใช้ตัวแสดงสถานะ (status หรือ flag) ในโปรแกรมนี้เราใช้ฟิลด์ userStat เพื่อไม่ให้โปรแกรมหมุนเซอร์โวทุกครั้งที่ timer1 ทำงาน โปรดไล่ดูคำสั่งในโปรแกรมเพื่อวิเคราะห์ว่าฟิลด์ userStat ถูกนำมาใช้แก้ปัญหานี้ได้อย่างไร 

เมธอด buttonStart_Click
เมธอด buttonStart_Click ทำงานเมื่อผู้ใช้กดปุ่ม Start ขั้นแรกเราต้องตรวจสอบว่า timer1 กำลังทำงานอยู่หรือไม่ (บรรทัดที่ 3) หากใช่ เราต้องหยุด timer1  (บรรทัดที่ 5) เปลี่ยนข้อความบนปุ่มเป็น Start (บรรทัดที่ 6) และแสดข้อความใน textBox1 ให้ผู้ใช้งานรู้ว่า timer1 หยุดทำงานแล้ว  (บรรทัดที่ 7)

หาก timer1 หยุดทำงานอยู่ เราต้องให้มันเริ่มทำงาน (บรรทัดที่ 11)เปลี่ยนข้อความบนปุ่มเป็น Stop (บรรทัดที่ 12)และแสดข้อความใน textBox1 ให้ผู้ใช้งานรู้ว่าบัดนี้ timer1 เริ่มทำงานแล้ว  (บรรทัดที่ 13)

1   private void buttonStart_Click(object sender, EventArgs e)
2   {
3       if (timer1.Enabled)
4       {
5           timer1.Enabled = false;
6           buttonStart.Text = "Start";
7           textBox1.Text += "Timer Stop\r\n";
8       }
9        else
10      {
11          timer1.Enabled = true;
12          buttonStart.Text = "Stop";
13          textBox1.Text += "Timer Start\r\n";
14      }
15  }

 

โปรดติดตามตอนต่อไป

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

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [5]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

AvailabotSolution
AvailabotSolution คือโซลูชันของ MSVS  ภายในโซลูชันนี้มีโปรเจคสองโปรเจคคือ AvailabotProject (ต่อไปจะเรียกย่อว่า AP) และ GetAlert โดยโปรเจค AP เป็นโปรแกรมประยุกต์ในวินโดวส์ (โปรแกรมแบบเดกส์ท็อป) เพื่อให้เราควบคุมการทำงานของหุ่นแอ๊บแบ๊วได้ ส่วนโปรเจค GetAlert เป็นตัวเสริมการทำงานของ MSN ทำหน้าที่คอยติดตามสถานะแฟนว่าออนไลน์หรือไม่

 
Project Explorer ของโปรแกรม Microsoft Visual Studio .NET 2005 แสดงไฟล์ต่างๆ ใน AvailabotSolution

AvailabotProject
โครงงานนี้มีคลาสหลักสองคลาสคือ PortAccess ทำหน้าที่ใช้สร้างออพเจ็กต์ติดต่อกับพอร์ทเครื่องพิมพ์ และคลาส AvailabotForm ทำหน้าที่ใช้สร้างออพเจ็กต์หน้า WinForm

 

 
แผนภูมิของคลาสต่างๆ ใน AvailabotProject ให้สนใจเฉพาะคลาส AvailabotForm และ PortAccess เท่านั้น ส่วนคลาส Program, Resources และ Settings เป็นคลาสบริการที่ถูกสร้างขึ้นโดยวิสชวลสตูดิโอ

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

 
หน้า WinForm ของคลาส AvailabotForm มีส่วนประกอบต่างๆ ดังนี้
1.    TextBox1 ทำหน้าที่แสดงข้อความรายงานสถานะต่างๆ
2.    buttonStart กดเพื่อให้ timer1 ทำงานหรือหยุดทำงาน
3.    buttonRight หมุนเซอร์โวทางขวา 90 องศา
4.    buttonStepRight ขยับเซอร์โวไปทางขวาหนึ่งครั้ง
5.    buttonStepLeft ขยับเซอร์โวไปทางซ้ายหนึ่งครั้ง
6.    buttonLeft หมุนเซอร์โวทางซ้าย 90 องศา

โครงสร้างคลาส AvailabotForm
โครงสร้างของคลาส AvailabotForm เผยให้เห็นส่วน using และสมาชิกต่างๆ ดังนี้

 

บรรทัดที่ 3 และ 4 โค้ดส่วน using จับรวมเนมสเปสพิเศษที่เราต้องการใช้งานสองเนมสเปสคือ IO ช่วยให้อ้างถึงไทป์ TextReader เพื่ออ่านแฟ้มข้อมูลตัวอักษร และ Threading ช่วยให้ใช้คำสั่ง sleep เพื่อหน่วงเวลาได้

คลาส AvailabotForm มีสมาชิกเพียงสองแบบคือสมาชิกแบบดาต้าฟิลด์ (บรรทัดที่ 8 ถึง 12) และสมาชิกแบบเมธอด (บรรทัดที่ 15 ถึง 133) สมาชิกแบบเมธอดแบงออกเป็นสี่ประเภทคือ คอนสทรักเตอร์ (บรรทัดที่ 15) เมธอดทำหน้าที่หมุนเซอร์โว (บรรทัดที่ 22 ถึง 57) เมธอดบริการตัวจับเวลา (บรรทัดที่ 79) และเมธอดบริการปุ่ม (บรรทัดที่ 89 ถึง 116)

สมาชิกแบบฟิลด์ของคลาส AvailabotForm
สมาชิกแบบฟิลด์ของคลาส AvailabotForm มีห้าตัวดังนี้
    private TextReader myTR;
    PortAccess myPort = new PortAccess();
    private bool userStat = false;
    private bool repeat = false;
    private bool moveToLeft = false;
myTR ทำหน้าที่เก็บค่าอ้างอิงออพเจ็กต์แบบ TextReader เพื่อให้เราสามารถอ่านไฟล์ตัวอักษรได้ myPort ทำหน้าที่เก็บค่าอ้างอิงออพเจ็กต์แบบ PortAccess ที่สร้างจากคลาสที่เรานิยามไว้เพื่อติดต่อกับพอร์ทเครื่องพิมพ์  userStat เป็นตัวแปรแบบบูลลีน ทำหน้าที่เก็บภาวะของแฟน (ว่าออนไลน์หรือไม่)repeat ทำหน้าที่เก็บสถานะว่าเป็นการทำงานแบบหมุนต่อเนื่องหรือหมุนเพียงครั้งเดียว (โหมดการทำงานของหุ่นแอ๊บแบ๊ว) และสุดท้ายคือ เก็บสถานะว่าเป็นการหมุนซ้ายไปขวาหรือขวาไปซ้าย (เพื่อให้หุ่นแอ๊บแบ๊วหันกลับไปกลับมาในโหมดทำงานต่อเนื่อง)

 

โปรดติดตามตอนต่อไป

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

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [4]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

 

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

เซอร์โวมีสายสามเส้น ซ้ายสุดสีส้มคือสายสัญญาณ สายกลางสีแดงคือไฟเลี้ยง และขวาสุดสีน้ำตาลคือกราวนด์

 

 

 

 

 

เซอร์โวที่ผู้เขียนแกะจากหุ่นยนต์เก่าเป็นเซอร์โวยี่ห้อ GWS รุ่น S03T STD หากท่านมีเซอร์โวยี่ห้ออื่นรุ่นอื่นก็ใช้ได้ทั้งนั้น แต่อาจต้องปรับเปลี่ยนค่าการหน่วงเวลาในโปรแกรมเล็กน้อย เพราะเซอร์โวแต่ละยี่ห้อแต่ละรุ่นอาจมีจำนวนองศาในการหมุนแตกต่างกัน

 

 

 

 

 

 
เมื่อต้องการให้เซอร์โวหมุนไปทางซ้าย เราต้องสร้างพัลส์โดยปล่อยไฟ 5 โวลต์ (ทำให้ตรรกะที่ขา D0 ของพอร์ทเครื่องพิมพ์เป็น 1) นาน 1 มิลลิวินาที และทำให้เป็นกราวนด์ (ทำให้ตรรกะที่ขา D0 ของพอร์ทเครื่องพิมพ์เป็น 0) นาน 20 มิลลิวินาที  เมื่อต้องการให้เซอร์โวหมุนไปทางขวา เราต้องปล่อยไฟ 5 โวลต์นาน 2 มิลลิวินาที และทำให้เป็นกราวนด์นาน 20 มิลลิวินาที เซอร์โวยี่ห้อที่ผู้เขียนใช้เคลื่อนที่ประมาณ 8 องศาเมื่อได้รับพัลส์หนึ่งลูก

 

ซอฟต์แวร์ของหุ่นแอ๊บแบ๊ว
การสร้างซอฟท์แวร์ในโครงงานนี้จะใช้ภาษาอะไรก็ได้ แต่เนื่องจากเราจะสร้าง add-in ของ MSN ผู้เขียนจึงเลือกใช้ภาษา C# เพราะทำได้ง่าย ผู้เขียนจะสร้างโซลูชันด้วยโปรแกรม วิสชวลสตูดิโอ (Microsoft Visual Studio .NET 2005 ต่อไปจะเรียกว่า MSVS)ขั้นตอนการทำงานของซอฟต์แวร์ในโครงงานนี้เป็นดังนี้ (โปรดดูแผนภูมิประกอบคำอธิบาย)

 

 
แผนภูมิแสดงการทำงานของซอฟต์แวร์หุ่นแอ๊บแบ๊ว

  1. โปรแกรม GetAlert คือโปรแกรมที่เราเขียนขึ้นเพื่อทำงานเป็น add-in ของ MSN มันทำหน้าที่เฝ้าดูสถานะของแฟนตลอดเวลาที่เราเปิดโปรแกรม MSN
  2. เมื่อแฟนออนไลน์ GetAlert จะบันทึกตัวอักษร 1 ไว้ในไฟล์ log.txt เมื่อแฟนออฟไลน์ GetAlert จะบันทึกตัวอักษร 0 ไว้
  3. โปรแกรม AvailabotForm เป็นโปรแกรมแบบเดกส์ท็อปที่เราสร้างขึ้นเพื่อทำหน้าที่ควบคุมเซอร์โว
  4. โปรแกรม AvailabotForm จะตรวจดูข้อมูลในไฟล์ log.txt ทุกๆ หนึ่งวินาที
  5. เมื่อโปรแกรม AvailabotForm พบว่าข้อมูลใน log.txt เปลี่ยนแปลง มันจะส่งพัลส์ไปยังเซอร์โว
  6. เซอร์โวหมุนทำให้หุ่นแอ๊บแบ๊วเคลื่อนที่ในลักษณะที่ทำให้เรารู้ว่าแฟนออนไลน์หรือออฟไลน์
    หากสงสัยว่าแทนที่เราจะให้ GetAlert เขียนแฟ้มข้อมูล เราเปลี่ยนให้มันส่งพัลส์ไปยังเซอร์โวโดยตรงได้หรือไม่ (ตัดโปรแกรม AvailabotForm ออกไป) คำตอบคือได้ แต่ผู้เขียนไม่ใช้วิธีนั้นเพราะดีบักยาก

 

โปรดติดตามตอนต่อไป

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

มาสร้างหุ่นแอ๊บแบ๊วกันเถอะ [2]

ทำให้เพื่อนๆ ของคุณทึ่งด้วยการสร้างหุ่นยนต์น่ารักคิกขุที่จะส่งสัญญาณให้คุณทราบทันทีที่แฟนของคุณปรากฏกายใน MSN

บทความโดย : ลาภลอย วานิชอังกูร (laploy.com)

หุ่น แอ๊บแบ๊วคือตุ๊กตาตัวเล็กๆ ที่เรานำมาติดไว้กับเซอร์โว (servo motor) เมื่อบุคคลที่เราต้องการติดตามเฝ้าดูสถานะ (ต่อไปจะเรียกสั้นๆ ว่าแฟน) เปลี่ยนแปลงสภานะในโปรแกรมวินโดวส์ ไลฟว์ แมสเซนเจอร์ (Windows Live Messenger ต่อไปจะเรียกย่อว่า MSN) ด้วยการออนไลน์หรือออฟไลน์ เซอร์โวจะทำงาน หุ่นแอ๊บแบ๊วก็จะเคลื่อนที่ ขณะที่เรานั่งที่โต๊ะคอมพิวเตอร์ หรือเดินผ่าน เพียงชำเลืองมองที่หุ่นแอ๊บแบ๊วเราก็จะทราบทันทีว่าแฟนของเรากำลังออนไลน์ อยู่หรือไม่

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

 

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

นำสายแพมาฉีกออกให้เหลือสามเส้น

นำหัวต่อไฟเลี้ยงในเครื่องคอมพิวเตอร์ (T1) มาถอดขาออกแล้วบัดกรีกับสายแพ

ขาที่ต้องบัดกรีคือขาที่ต่อกับไฟ 5 โวลต์และ GND

เมื่อบัดกรีเสร็จแล้วใส่ขากลับเข้าที่จะเป็นแบบนี้

สายไฟที่เหลืออีกหนึ่งเส้นให้บัดกรีกับขาสองของคอนเนคเตอร์ DB25

ปลายอีกด้านของสายแพนำไปบัดกรีกับขาของคอนเนคเตอร์สามขา

บัดกรีเสร็จแล้วใส่ขาเข้ากับพลาสติกหัวคอนเนคเตอร์

นำแผ่นวงจรพิมพ์อเนกประสงค์มาตัดด้วยเลื่อยหรือเครื่องมือตัดแผ่น PVC ให้มีขนาดประมาณ 1×1 นิ้ว

ขัดด้วยกระดาษทรายให้ขอบเรียบ และขัดด้านที่มีทองแดงหากมีคราบสนิม

นำขั้วต่อคอนเนคเตอร์มาหักออกให้เหลือสามขา

สร้าง T2 โดยบัดกรีขั้วต่อคอนเนคเตอร์เข้ากับแผ่นวงจรพิมพ์

ทดลองเสียบคอนเนคเตอร์เข้ากับขัวที่บัดกรีแล้ว

สร้าง T3 โดยบัดกรีขั้วต่อคอนเนคเตอร์เข้ากับแผ่นวงจรพิมพ์อีกด้านหนึ่ง

เราจะใช้ขั้วต่อคอนเนคเตอร์นี้ต่อกับเซอร์โว

 

นำตัวต้านทานและ LED มาบัดกรีบนแผ่นวงจรพิมพ์

บัดกรีจุดเชื่อมต่อให้ครบแล้วนำคอนเนคเตอร์มาเสียบ

นำเซอร์โวมายึดกับกล่องพลาสติกด้วยนอต

นำแผ่นวงจรมาติดกับเซอร์โวโดยใช้เทปกาวสองหน้าแบบหนา

นำแผ่นซีดีมาพ่นสีขาวติดกับกล่องพลาสติกแล้วใส่ลวดลายรูปหัวใจเพื่อความสวยงาม

แผ่นซีดีและกล่องเมื่อตกแต่งเสร็จแล้ว (แผ่นซีดีนี้จะไม่หมุน นำมาติดไว้เป็นฐานเพื่อความสวยงาม)

นำแผ่นพลาสติกกลมมาใส่นอต

ขันนอตเข้ากับที่นั่งทับของตุ๊กตา

 

ฮาร์ดแวร์ของหุ่นแอ๊บแบ๊วเป็นอันเสร็จสมบูรณ์

โปรดติดตามตอนต่อไป

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

เว็บบล็อก “คนคอมพิวเตอร์” หรือ 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