GotoKnow Monitor เป็นโปรแกรมที่จัดสร้างขึ้นมาเพื่อแบ่งเบาภาระการทำงานของ GotoKnow
เป้าประสงค์
- พยายามให้ข้อมูลแก่ผู้ใช้ว่าข้อความไหนน่าสนใจ โดยไม่ต้องให้ผู้ใช้ต้องไปอ่านข้อความทั้งหมดเอาเอง กล่าวคือให้เลือกคลิกเฉพาะที่คิดว่าน่าสนใจ จากบันทึกใหม่ ชื่อผู้เขียนข้อความนั้น ชื่อบล๊อก และส่วนหัวของข้อความ (ถ้ายาวพอ)
- ตัดภาระในการติดตามความเปลี่ยนแปลงเรื่องข้อความ (บันทึกและความคิดเห็น) จาก GotoKnow; เมื่อจะดูว่าอะไรเปลี่ยนแปลงไป จะต้อง refresh หน้าจอ GotoKnow ซึ่งเป็นการเพิ่มภาระแก่ database; GotoKnow Monitor ติดตามความเปลี่ยนแปลงบน GotoKnow ทางด้านข้อความทั้งหมดแทนผู้ใช้ โดยแยกสถานะการเปลี่ยนแปลง ออกมาอยู่ในเครื่องแม่ข่ายภายนอกระบบ GotoKnow เมื่อผู้ใช้เรียกดูความเปลี่ยนแปลง จึงไม่เป็นการเพิ่มภาระแก่ GotoKnow
- เปลี่ยนแปลงสถานะบนจอภาพให้เอง ผู้ใช้ไม่ต้อง refresh
- ให้ข้อมูลอื่นๆ ที่สำคัญต่อชีวิตประจำวัน
การออกแบบ และการทำงาน
GotoKnow Monitor แบ่งการทำงานเป็นสามส่วนคือ
- โปรแกรมอ่านสถานะล่าสุดจาก GotoKnow อยู่บนเครื่องแม่ข่าย monitor.gotoknow.org
- อ่านจาก RSS และอ่านจาก database โดยตรง หากไม่มี RSS ให้
- โปรแกรมส่วนนี้ อ่านข้อมูล แล้วแปลงเป็น HTML segment แบบที่ต้องการให้ปรากฏในเบราเซอร์
- เมื่อแปลงข้อมูลให้อยู่ในรูปแบบที่ต้องการแล้ว เขียนลงใน memcached เช่นเดียวกับ GotoKnow แต่ใช้ memcache คนละชุดกัน เนื่องจากไม่ต้องการไปเบียดบังทรัพยากรอันมีค่า ซึ่งมีไม่พออยู่แล้ว
- โปรแกรมเขียนด้วย PHP แต่สามารถเขียนด้วยภาษาอะไรก็ได้ที่สนับสนุน libevent เช่น Perl PHP Python Ruby Java C# C Postgres หรือจะภาษาอื่นๆ
- ฝั่งเบราเซอร์ เป็น Ajax (HTML + JavaScript) ใช้ prototype.js เป็นหลักเช่นเดียวกับ GotoKnow พร้อมกับ library อื่นๆ
- design เป็น multi-tab application ในขณะนี้ แยกเป็น
- บันทึกล่าสุด -- อ่านตรงจาก database ปรับปรุงข้อมูลทุก 5 นาที
- ความคิดเห็นล่าสุด (ต่อบันทึก คำถาม และไฟล์) -- อ่านตรงจาก database ปรับปรุงข้อมูลทุก 4 นาที
- บันทึกสุ่มแสดง -- อ่านผ่าน RSS บันทึกสุ่มแสดง มีประโยชน์ในการช่วยให้รู้จักบล๊อกเกอร์ใหม่ๆ ที่อยู่นอกวงของคนคุ้นเคย ปรับปรุงข้อมูลทุก 5 นาที
-
ค้นหา -- ใช้ Google search API ซึ่งทำการค้นหาหกชนิดพร้อมกันคือ
- ค้นบน GotoKnow.org
- ค้นเว็บอื่นๆ ทั่วโลก
- ค้นในบล๊อกทั่วโลก
- ค้นในคำบรรยายรูปทั่วโลก
- ค้นข่าวจากแหล่งข่าวทั่วโลก
- ค้นในหนังสือ/สิ่งตีพิมพ์ซึ่ง Google ได้สแกนไว้แล้ว
-
ลิงก์สำคัญ -- เป็นลิงก์ไปยังคู่มือ การใช้งาน ตลอดจนข้อความสำคัญต่างๆ เพื่อที่การใช้งาน GotoKnow จะเป็นไปด้วยประสิทธิภาพสูงสุด
- เปิดศูนย์รวมข้อมูลของสมาชิก
- ติดตามข้อความล่าสุดของสมาชิก
- ติดตามความเปลี่ยนแปลงในแพลนเน็ตของสมาชิก
-
เครื่องมือ -- เป็นโปรแกรมบริการที่มีประโยชน์ในเวลาที่ต้องการ แต่มีขนาดใหญ่และไม่ได้ใช้บ่อย เพื่อให้ GotoKnow Monitor ทำงานได้รวดเร็วที่สุดเท่าที่จะเป็นไปได้ จึงแยกเครื่องมือเหล่านี้ออกไป
- {สนทนากลุ่ม} ยังเป็นเรื่องที่ทดลองอยู่-อาจเปลี่ยนแปลงในอนาคต -- ตั้งใจจะให้เป็นแหล่งที่สมาชิกและผู้ใช้ ได้แลกเปลี่ยนความคิดเห็นกันอย่างทันใจ เพื่อที่ข้อความเฉพาะกาล เช่นการนัดกัน การปรึกษาหารือเรื่องเหตุการณ์เฉพาะหน้า จะได้ไม่ต้องเขียนเป็นบันทึกหรือความคิดเห็น ซึ่งจะไปกินกำลัง GotoKnow -- ในรุ่นปัจจุบัน สามารถสร้างห้องสนทนาได้เอง ให้เป็นห้องสาธารณะก็ได้ เป็นห้องส่วนตัวที่ต้องใช้รหัสผ่านเข้าก็ได้ มีบันทึกการสนทนาให้ดาวน์โหลดด้วย
- {เหตุการณ์สำคัญ/ปฏิทิน GotoKnow} แสดงเหตุการณ์ต่างๆ ที่เกิดขึ้นบน GotoKnow นับตั้งแต่เริ่มเปิดบริการ -- เครื่องมือนี้เป็นต้นแบบสำหรับการทำปฏิทินกิจกรรมสำหรับสมาชิก
- {ลมฟ้าอากาศ} แสดงสถานะของสภาพลมฟ้าอากาศ น้ำ พายุ คลื่นลม เหตุการณ์ปัจจุบัน การเตือนภัยพิบัติ ฯลฯ
- source code สามารถเรียกดูได้ผ่าน View source ในเบราเซอร์ครับ skeleton เขียนทื่อๆ ไม่มีอะไร
- design เป็น multi-tab application ในขณะนี้ แยกเป็น
- โปรแกรมอ่านข้อมูล -- อยู่บนฝั่งเครื่องแม่ข่าย ทำงานเมื่อเบราเซอร์ ขอข้อมูลใหม่มาทุกช่วงเวลาที่ตั้งไว้
- โปรแกรมเขียนด้วย PHP; เลือก PHP เพราะ memcache library เขียนด้วย C ซึ่งเร็วมาก
- อ่านข้อมูลจาก memcached แล้วส่งข้อมูลออกไปทั้งดุ้น โดยไม่แก้ไขอะไรเลย
- หาผู้ใช้ refresh เบราเซอร์ โปรแกรมส่วนนี้ ก็จะอ่านข้อมูลจาก ทำmcached ส่งไปใหม่ และจะให้ข้อมูลล่าสุดจาก memcached เสมอ
- การอ่านข้อมูลจาก memcached ไม่ว่าจะอ่านกี่ครั้ง ก็จะไม่ไปดึงข้อมูลใหม่จาก GotoKnow เพราะการอ่านข้อมูลจาก GotoKnow เป็นโปรแกรมส่วนที่ 1 ข้างบน เป็นคนละส่วนกับการส่งข้อมูลให้เบราเซอร์ในส่วนนี้
ดังนั้น การใช้ GotoKnow Monitor จึงไม่เพิ่มภาระให้ GotoKnow และในขณะเดียวกัน ข้อมูลเพียงชุดเดียว ถูกส่งให้ผู้ใช้ทุกคนได้รับเหมือนกัน
ในขณะนี้ ได้กลายพันธ์มาเป็น Learners Monitor แล้ว ซึ่งทำงานด้วยหลักการเดียวกัน