วันเสาร์ที่ 19 กุมภาพันธ์ พ.ศ. 2554

Yii - PHP framework ที่ผมเลือก

หลังจากที่ใช้งานและพัฒนา extensions สำหรับ Joomla! มาประมาณ 3 ปีจาก Joomla! 1.0 มาเป็น Joomla! 1.6 และตอนนี้ก็ได้เขียน extension มามากมาย รวมทั้งเข้าร่วมทีม Joomla! Bug Squad และทีมรวมทั้ง community ใน Joomla! ก็เริ่มถึงการแยกออกมาพัฒนา Joomla! Framework ที่ไม่ได้เน้นเฉพาะ CMS ก็เลยลองมาดู PHP Framework ที่มีอยู่ในปัจจับัน โอ้ ทำไมมันมีเยอะอย่างนี้ จะเลือกอย่างไรดีละนี่เรา
  1. ตัวเลือกแรกเอาเฉพาะที่รองรับ PHP5 ก็ตัดไปได้หลายตัวเหมือนกัน สาเหตุที่ใช้เป็นตัวเลือกเนื่องจากว่า PHP4 จะมี OOP ที่เด็กๆมาก ดังนั้น Framework ที่รองรับ PHP4 ก็จะต้อง maintain code ที่ทำให้ PHP4 สามารถใช้งานได้แบบ OOP ที่ดี อันนี้ก็เป็นตัวถ่วงตัวนึงครับ
  2. มีสมาชิกที่ Active เยอะๆ อันนี้ง่ายๆ ครับถ้าสมาชิกมากๆ ก็อาจจะดี และขอความช่วยเหลือได้ง่าย
  3. มี Document ที่ดี เหมือนกันครับก็เพื่อให้สามารถศึกษาได้เร็วๆ หน่อย
  4. รองรับ Features ที่จำเป็นสำหรับการทำ Web App 2.0 เช่น MVC, Active Record, User Athentication, Input cleaning and form validation, Multiple Databse support และการใช้งานสำหรับหลายๆ ภาษา รวมทั้งการมี Tools ในการพัฒนาด้วย
ตัวเลือกที่ได้ก็คือ Yii ครับ ซึ่งเป็น Framework ที่พัฒนาต่อมาจาก PRADO ซึ่งเคยได้รับความนิยมมากๆมาก่อน โดยเป็น Framework ที่เน้นเรื่อง Performance ครับรองรับการทำ Caching หลายๆแบบเช่น Database, File, Memcache เป็นต้น เห็นใน Web Site (http://www.yiiframework.com/) บอกว่าสามารถใช้ในการพัฒนา Application ใหญ่ๆได้ด้วย

ถึงตอนนี้ก็ได้มีการศึกษาและพัฒนามาประมาณปีกว่าๆ ก็เริ่มจะติดใจแล้วล่ะครับ แต่อย่างว่า Joomla! ก็เหมาะกับงานบางแบบที่ต้องการความรวดเร็วและไม่ต้องรองรับการใช้งานหนักๆมาก แต่การใช้ Framework อย่าง Yii ก็เหมาะกับการพัฒนา Application ใหญ่ๆ หรือรองรับการขยายในอนาคตครับ สำหรับในตอนต่อไปจะเอารายละเอียดของ Yii มาว่ากันครับ แต่ถ้าใครเป็นแฟนของ Joomla! ก็ดูที่นี่ครับ http://www.joomlant.com/ หรือ http://www.joomlant.org/ (English) ครับ

วันพฤหัสบดีที่ 17 กุมภาพันธ์ พ.ศ. 2554

ทำไม Radius Client จึงส่งค่า NAS-IP-Address เป็น 127.0.0.1 ตลอด

ผมเพิ่งทำการติดตั้ง Linux Gateway ตัวใหม่ครับ แล้วก็มีการติดตั้ง PPTPd สำหรับให้บริการ VPN กับพนักงานโดยการตรวจสอบสิทธิจาก Radius Server จาก Server อีกเครื่องหนึ่ง โดยผมต้องการให้ตัว Radius Server ทำหน้าที่ในการแจก IP Address ด้วย ซึ่งก็ไม่มีปัญหาอะไรครับ สามารถแจก IP ให้กับ Client ได้แต่ผมลองแค่หนึ่งตัวก่อน แต่พอไปดูในฐานข้อมูล เอ... ทำไมค่ NAS-IP-Address ที่ Radius Client ส่งมาเป็น 127.0.0.1 ล่ะ ถ้าอย่างนี้ต้องมีปัญหาแน่ถ้ามีการใช้งานหลายๆ Client เพราะว่าตัว Radius Server ใช้ NAS-IP-Address และ NAS-Port เป็น Key ในการตรวจสอบ IP

อย่างนี้ต้องแก้ไขครับ หรือว่ารุ่นของ Radius Client มันมีปัญหา ลองหาค่า parameter ต่างๆดูก็ไม่มีปัญหา แต่รู้ค่าค่า NAS-IP-Address นี้มันจะถูกกำหนดโดย Radius Client หรือว่ามันจะคำนวณผิด เลยเข้าไปดู code ครับก็เห็นว่ามันมีการใช้ชื่อเครื่องในการหา IP Address เพื่อมากำหนดค่า NAS-IP-Address เลยลอง ping คือ ping โดยใช้ชื่อดู ก็ปรากฏว่าใช่เลยครับ มัน ping 127.0.0.1 ก็เลยไปเจอว่าใน hosts ไฟล์กำหนด ชื่อไว้ใน 127.0.0.1 สมมุตว่าเครื่องชื่อ gateway12

ping gateway12

มันจะ ping 127.0.0.1 ครับ
ทีนี้ก็ต้องมาหาแล้วครับว่ามันมีปัญหายังไง ปกติเรากำหนดให้มีการหา IP  (Resolve IP Address) จาก hosts และ DNS ตามลำดับ ก็เลยดูในไฟล์ hosts ก่อนก็เจอเลยครับ มันมีชื่อ gateway12 อยู่กับ 127.0.0.1 จริงๆ

127.0.0.1      localhost localhost.localdomain gateway12

ก็เลยต้องแก้เป็น

127.0.0.1      localhost localhost.localdomain
10.1.0.12      gateway12

แล้วก็ apply มันครับ เท่านี้ก็เรียบร้อยครับ Radius Client ก็สามารถส่งค่า NAS-IP-Address ได้ถูกต้องแล้ว