Computer and IT


วันนี้คุณเพื่อนมาขอความช่วยเหลือ บอกว่าเปิดไฟล์อะไรใน External HDD ไม่ได้เลย

พอเช็คอาการดู ก็พบว่า ไฟล์ทุกอย่างใน HDD ได้กลายร่างเป็น shortcut ไปหมดแล้ว!!! เจอเข้าไปแบบนี้ผมก็ฟันธงได้ทันทีว่า HDD คุณเพื่อนโดนไวรัสเข้าให้แล้ว หุหุ… (เพิ่มเติม…)

วันนี้ได้ไปงาน THINK Camp ครั้งที่สามมาครับ แนวคิดของงานในครั้งนี้คือ “เว็บสยามบุกโลก” ซึ่งหมายถึงว่า ทำอย่างไรเว็บไซต์สัญชาติไทยจึงจะสามารถตีตลาดโลกได้ แทนที่จะปล่อยให้เว็บต่างชาติตีตลาดไทยอย่างเดียว เช่น Facebook, Google

ก่อนหน้านี้ผมก็ไม่เคยไปหรอก แต่เห็นว่าคราวนี้แปลกกว่าทุกครั้ง เพราะนอกจากการบรรยายแล้ว ยังมีช่วงสุมหัว (Brain Storming) ด้วย (เหมือนเวลาเข้าค่ายตอน ม.ปลาย เลย) (เพิ่มเติม…)

ไม่กี่วันก่อนนึกขึ้นมาได้ว่าเรามี Voucher สอบ JAVA certificate ฟรี ที่ได้มาจาก Sun ตอนไปแข่ง Open Jive นี่หว่า ว่าแล้วก็ลาก @iMuping กับ @toffeetoffee มาคุยกันว่าจะเอายังไง เพราะ voucher มันจะหมดอายุสิ้นปีนี้แล้ว ก็ตกลงกันว่าไปสอบวันที่ 24 (วันนี้) เพราะเป็นวันที่ทุกคนว่างตรงกัน (วันอื่นๆ แต่ละคนก็ติดสอบกลางภาคกันหมด)

หลังตกลงกันได้ก็เข้าไปสมัครในเว็บ http://www.prometric.com/ ก็กรอกข้อมูลต่างๆ ไป พอถึงตอนกดยืนยันถึงได้รู้ว่า voucher ที่ถืออยู่ในมือนี่มูลค่า 9569 บาทเลยทีเดียว! (แพงจังวุ้ย)

เอาล่ะ สมัครเสร็จก็ต้องเตรียมตัวสอบสินะ แต่ว่าปัญหาคือ ผมกำลังอยู่ช่วงสอบกลางภาคนี่สิ 😕
แล้วจะหาเวลาไหนอ่านล่ะเนี่ย สรุปแล้วก็เหลือแค่เวลาเดียว คือคืนก่อนไปสอบ! คุณพระ! ปกติเค้าเตรียมตัวกันไม่รู้กี่เดือน กว่าจะไปสอบ ไอ้นี่อาจหาญมาจากไหน เตรียมตัวคืนเดียว เช้าไปสอบ

คืนก่อนสอบ (23 ธ.ค.) ผมกับ @imuping และ @toffeetoffee ก็นั่งสุมหัวกันตั้งแต่หนึ่งทุ่ม จ้องหน้าจอโน้ตบุ๊คที่กำลังเปิด e-book เตรียมสอบ JAVA cert. ความยาว 700-800 หน้าเห็นจะได้ นั่งอ่านกันไปแบบผ่านๆ แว้บไปกินข้าวแป๊บนึงก็มาอ่านต่อ กว่าจะจบก็ปาเข้าไปห้าทุ่ม หลังจากนั้นก็เปิดหาตัวอย่างคำถามตามอินเตอร์เน็ต ก็ตอบได้บ้างไม่ได้บ้าง ใจหนึ่งก็เผื่อไว้แล้วล่ะว่า พรุ่งนี้เจ๊งแน่ๆ (เพิ่มเติม…)

เมื่อวันศุกร์ที่ผ่านมา ผมได้มีโอกาสได้ไปร่วมงาน Sun Developer Days 2009 ที่โรงแรม Intercontinental ในฐานะทีมรองชนะเลิศอันดับหนึ่งจากการแข่งขัน Open Jive 2009 ซึ่งสิ่งที่ทีมผมต้องไปทำในงานก็คือไปตั้งโต๊ะนำเสนอผลงานที่ใช้ส่งเข้าแข่งขัน

คนมาร่วมงานเยอะมาก… ดูจากรูปได้ครับ
(เพิ่มเติม…)

หลังจากคราวก่อนพูดเรื่อง Mediator ไปแล้ว คราวนี้ก็จะพูดเรื่อง Observer บ้าง 😀

Observer คือ pattern หนึ่งของการเขียนโปรแกรมเชิงวัตถุ โดยให้วัตถุหนึ่งมีความสามารถในการรับรู้การเปลี่ยนแปลงข้อมูลในตัวแปรของวัตถุอีกตัวหนึ่งได้ แล้วจึงปรับเปลี่ยนการทำงานตามการเปลี่ยนค่านั้น

observer
จากตัวอย่างนี้ มีคลาส UserInterface ซึ่งทำหน้าที่รับ input จาก user ส่งไปให้คลาส XValue เพื่อคำนวณ(อะไรสักอย่าง) แล้วคลาส UserInterface ก็จะวาดกราฟจากผลลัพธ์ที่คำนวณได้

จาก diagram จะเห็นว่าคลาส XValue มีการ extends คลาส Observable มา ซึ่งเป็นคลาสที่มีมาให้ในจาวาแล้ว ส่วนคลาส UserInterface ก็ implements คลาส Observer ที่มีมาให้ในจาวาเช่นกัน

เมื่อ UserInterface ทำการส่งค่า input ไปให้ XValue ค่านั้นก็จะถูกนำไปคำนวณให้ได้คำตอบออกมา แล้วทำการเปลี่ยนค่า attribute ในคลาสตัวเองให้เป็นคำตอบใหม่ที่คำนวณได้ ตอนนี้เองที่ observer จะเข้ามามีบทบาท คือหลังจากที่ XValue ทำการเปลี่ยนค่า attribute แล้วก็จะต้องเรียกใช้ method ชื่อ notifyObservers() ที่ได้จากการ extends เพื่อเตือน Observer ทุกตัวว่ามีการเปลี่ยนแปลงค่าเกิดขึ้นแล้ว (รีบเข้ามาดูเร็วๆ) นั่นหมายความว่า Observer มีได้มากกว่าหนึ่งตัว (แต่ในตัวอย่างมีแค่ตัวเดียว)

หลังจากพวก Observer รับรู้แล้วว่ามีการเปลี่ยนแปลงค่า มันก็จะเรียกใช้ method ชื่อ update(Observable o, Object arg) โดยอัตโนมัติ ทีนี้ก็อยู่ที่เราแล้วว่าจะให้มันทำอะไรในนี้

ตัวอย่างอาจจะไม่ดีเท่าไหร่ เพราะมี observer แค่ตัวเดียว ซึ่งถ้าเป็นแบบนี้ก็ใช้วิธีเรียก method get/set เอาก็ได้ แต่ถามว่าถ้ามี object ที่การทำงานขึ้นกับค่า x ใน XValue สักยี่สิบตัวล่ะ จะเรียก get/set ยี่สิบรอบมั้ย… ก็คงจะไม่ นี่แหละที่ Observer pattern จะเข้ามามีบทบาท 8)

ข้อมูลเพิ่มเติม: http://en.wikipedia.org/wiki/Observer_pattern

หน้าถัดไป »