Skip to content

Month: October 2016

บันทึกการใช้งาน Socket.io v1 และประเด็นที่น่าสนใจ

ใครที่ใช้ Node.js ในการทำ real-time application น่าจะรู้จัก WebSocket และ Socket.io กันเป็นอย่างดี ตอนนี้ Socket.io เดินทางมาถึง version 1 แล้ว (ล่าสุดที่ผมเขียนโพสต์นี้คือ 1.5.0) ซึ่งก็มีหลายอย่างเปลี่ยนไปจากรุ่น 0.9 ค่อนข้างมาก หลายโปรเจกต์ที่ผมเคยเขียนไว้ด้วย version 0.9 ตอนนี้ก็ outdated ไปแล้วไม่สามารถใช้งาน version 1 ได้ แต่ก็มีบางงานที่ใช้ version 1 แล้ว พบประเด็นที่น่าสนใจเลยอยากบันทึกไว้สักหน่อย

ทำ Ranking/Leaderboard ด้วย Redis #2

โพสต์ที่แล้ว “ทำ Ranking/Leaderboard ด้วย Redis #1” แล้วผมทำ ranking แบบอันดับซ้ำกันและข้ามอันดับได้ คราวนี้ลองมาทำอีกแบบคืออันดับซ้ำกันและไม่มีการข้ามอันดับดูบ้าง  ranking ที่เราคาดหวังจะเป็นแบบนี้

#1, user01 score 1000
#1, user02 score 1000
#2, user03 score 900
#2, user04 score 900
#3, user05 score 800

ทำ Ranking/Leaderboard ด้วย Redis #1

โจทย์ของผมคือผมต้องการ

  1. Ranking ที่อัปเดตแบบ real-time
  2. ไม่ query จาก database โดยตรงและ query บ่อยๆ
  3. Rank หรืออันดับสามารถซ้ำได้

จากข้อ 3 อันดับซ้ำกันได้มี 2 แบบ ตัวอย่างเช่น

แบบที่ 1 non-skipped ranking

#1, user01 score 1000
#1, user02 score 1000
#2, user03 score 900
#2, user04 score 900
#3, user05 score 800

แบบที่ 2 skipped ranking

#1, user01 score 1000
#1, user02 score 1000
#3, user03 score 900
#3, user04 score 900
#5, user05 score 800

MongoDB | find() ด้วย Regular Expression แบบไหน ใช้/ไม่ใช้ index

จริงๆ ผมว่าจะเขียนรื่องนี้นานแล้วแต่เดือนที่ผ่านมา (กันยายน) งานยุ่งๆ ระเบียบวินัยก็ค่อนข้างแย่ ทั้งออกกำลังกายและเขียนบล็อก เดือนที่แล้วเลยไม่ได้เขียนอะไรเป็นชิ้นเป็นอัน ขอยกยอดมาเขียน (แบบอู้ๆ อีกนั่นแหละ) เดือนนี้แล้วกัน

คำสั่ง find() ของ MongoDB นั้นรองรับการ query ด้วย Regular Expression โดยสามารถเขียน syntax แบบ PCRE (Perl Compatible Regular Expression) ตัวอย่างเช่น