Skip to content

Month: January 2013

Config HAProxy เพื่อใช้งาน Nodejs, Socket.io ร่วมกับ Apache web server

โพสต์ก่อนๆ ผมเขียนถึงการพัฒนา application ด้วย Nodejs และ Socket.io และจำเป็นต้องใช้ร่วมกันกับ PHP ที่รันบน Apache ปัญหาที่พบก็ตามข้อ 3 ในโพสต์เก่านั่นแหละครับคือทำ ProxyPass จาก port 80 ของ Apache ไปที่ app ที่รันไว้ port อื่นไม่ได้เพราะ Apache ไม่รองรับ Websockets

1.Infrastructure

เนื่องจาก Websockets ยังเป็นเรื่องใหม่อยู่ web server ส่วนมากยังไม่รองรับ ลองเสิร์ชหาวิธีแก้ปัญหาตามเว็บต่างๆ ส่วนมากถ้าเป็น PHP, Apache นิยมใช้ HAProxy  เป็น proxy ถ้าเป็น Ubuntu สามารถติดตั้งผ่าน APT ได้เลย

เราต้องการติดต่อกับ internet ด้วย port 80 ซึ่งเดิมรัน Apache web server ไว้อยู่แล้วเลยต้องเปลี่ยน architecture ของ server นิดหน่อยคือวาง HAProxy ขวาง server, app ตัวอื่นๆ และให้ listen ที่ port 80 แล้วค่อยกระจาย request ไปที่ port ต่างๆ ตามรูปข้างล่าง

ปรับแต่ง Web user interface ให้แสดงผลเร็วขึ้น

ออกตัวไว้ก่อนว่าผมเองก็ไม่ได้มีความเชี่ยวชาญเกี่ยวกับ Web UI ขั้นเทพแต่ก็มีโอกาสได้ทำงานด้านนี้มาบ้างพอสมควร พูดถึง Web UI หลายคนอาจจะคิดถึงการ design แต่นั่นไม่ใช่ทั้งหมดของ UI นะครับสิ่งที่ผมจะพูดคือฝั่ง coding ซึ่งประกอบด้วย HTML/CSS/Javascript ครับ

ขอเขียนไว้เป็นหัวข้อแบบไม่ได้เรียงลำดับความสำคัญก่อนหลังเท่าที่นึกออกแล้วกัน

ใช้ MATE desktop แทน Gnome Shell

ทำไมถึงเปลี่ยนจาก Gnome Shell เป็น MATE?

ผมใช้ Ubuntu 12.10 เป็นเครื่องทำงานประจำ default Desktop environment เป็น Unity แต่ขัดใจหลายอย่างเลยเปลี่ยนมาใช้ Gnome Shell ก็ใช้มาพักใหญ่ๆ ก็มีสิ่งที่ถูกใจและไม่ถูกใจหลายอย่างแต่โดยรวมก็ยังขัดใจอยู่เช่น

  • ช้า ใช้ RAM เยอะ
  • เวลาใช้ 2 จอแล้วกด ALT+F2 เรียกโปรแกรมจะย่อหน้าต่างลงเป็น thumbnail ให้กดเลือก ถ้าเปิดโปรแกรมเป็น full screen เช่น ดูหนัง หน้าจอก็จะถูกย่อลงด้วย
  • กดเรียก xkill ไม่ได้เวลาโปรแกรมค้าง

ลองใช้หลายตัวทั้ง Pantheon, XFCE  สุดท้ายมาจบที่ MATE

MATE เป็นโครงการที่ fork Gnome 2 มาทำใหม่เริ่มโดย Linux Mint หน้าตา, ซอฟต์แวร์เหมือน Gnome 2 มากแต่เปลี่ยนชื่อใหม่ (รูปข้างล่าง)

Completed Ruby lesson on Codecademy

หลังจากงมๆ เล่นสนุกอยู่ 4 วันก็จบคอร์ส Ruby จากเว็บ Codecademy แล้วครับ ขอบันทึกไว้ซะหน่อย ผมว่าเขาทำสนุกดีนะ ถ้าสนใจก็ลองเข้าไปเรียนดูครับมีหลายเรื่องให้เลือกเรียน

Ruby language experience

วันนี้ใช้เวลาหัดเขียน Ruby อยู่หลายชั่วโมงจาก Codecademy แม้ว่าบทเรียนยังน้อยและเรียนรู้แค่ผิวๆ แต่ก็มีสิ่งที่ประทับใจพอสมควรครับ ภาษาง่ายต่อการเรียนรู้ อันนี้ความคิดเห็นตัวตัวนะคิดว่าง่ายกว่า Python อีกแน่ะ เป็นภาษาที่มี syntax สั้นเข้าใจง่าย เป็นภาษาที่ไม่ต้องใช้ { } นั่นคือไม่ค่อยได้กดปุ่ม shift พิมพ์มันมาก! ไม่ได้บังคับ indent เป็น syntax เหมือน Python…

Nodejs and Mongoose MongoDB ODM

Mongoose เป็น ODM (Object Document Mapping) ตัวหนึ่งของ Mongodb จริงๆ ก็ไม่ใช่อะไรใหม่ หน้าที่ของมันก็เหมือนกับ ORM ฝั่ง DBMS เลยครับแต่นี่เป็นของ NoSQL และที่เป็น “Object Document Mapping” เพราะว่า MongoDB เป็น NoSQL ที่เก็บข้อมูลแบบ Document Store ซึ่งเป็นรูปแบบหนึ่งของ NoSQL

การทำงานของ Object mapping คือ การสร้าง object ความสัมพันธ์, โครงสร้างของข้อมูลใน database เวลาเรียกใช้ก็เรียกเหมือนการ access class หรือ object ลดการเขียนคำสั่ง SQL หรือคำสั่งสำหรับ query ลง

[PHP] ใช้ regex แบบ negative lookahead ใน MongoDB query

syntax regex ใน PHP อ้างอิงตาม PCRE (Perl Compatible regular expression)  การ match ข้อความแบบ negative lookahead คือ match กับอักขระใดๆ ทั้งหมดยกเว้นตัวที่เรากำหนด งงใช่ไหม? คนอธิบายก็งง ดูตัวอย่างดีกว่า สมมุติว่าผมมี regex เป็น t(?!s) และมี text…