Clicky

framework | suksit dot com

framework

Fueled by CodeIgniter

อาทิตย์ที่แล้วเพิ่งได้ลองใช้ CodeIgniter รู้สึกว่าเป็น PHP framework อีกตัวที่เข้าท่าดีเหมือนกัน

ตอนแรกว่าจะลอง Prado แต่ดูๆ แล้วรู้สึกจะแนวไปหน่อย กลัวทำงานเสร็จไม่ทันส่ง ส่วน Symfony เคยเล่นไปแล้ว แต่ลืมแล้วเหมือนกัน เลยตัดสินใจลองตัวใหม่บ้างดีกว่า

เท่าที่ลองใช้งานดู พบว่า CI เป็น framework แบบ MVC ทำนองเดียวกับ PHP framework ส่วนใหญ่ แต่มีจุดเด่นคือ

  • ขนาดเล็ก แค่ 800 กว่า kB... ชนะ Symfony และ Prado ขาดลอย แต่ยังแพ้ CakePHP แฮะ
  • ติดตั้งง่าย แค่ extract ออกมาก็ใช้ได้เลย
  • เป็น framework แบบ DIY คืออยากได้ไรต้องทำเอง ไม่มีตัว generator (อ้าว แล้วตกลงมันดีมั้ยเนี่ย) ผมว่าดีในแง่ที่เราควบคุมได้่ว่ามีไฟล์อะไรในระบบบ้าง ไม่มีไฟล์แปลกๆ ที่โดนสร้างขึ้นมาตอนไหนก็ไม่รู้ แต่ข้อเสียคือเหนื่อยหน่อย เพราะต้องสร้างไฟล์เองหมด
  • ให้ความรู้สึกดิบๆ หน่อย เหมือนเขียนโค้ดด้วยตัวเองหมด ไม่ค่อยเหมือน Symfony ที่ออกแนวหรูหราไฮโซกว่า (บอกไม่ถูกเหมือนกัน -_-a)
  • ออกจะแหกกฏ MVC เล็กๆ เพราะไม่ต้อง define model แค่มี controller กับ view ก็ทำงานได้แล้ว
  • มาพร้อม manual ในตัว แต่ interface เมนูเป็นแบบ drop-down มันจะรู้สึกประหลาดๆ หน่อย ใช้ๆ ไปอาจจะรำคาญ

ถ้าให้สรุปตอนนี้คือ CI เหมาะสำหรับพัฒนาเว็บแอพขนาดไม่ใหญ่มาก ที่ต้องการความรวดเร็วในการพัฒนา และไม่ต้องการฟีเจอร์อลังการ เพราะเท่าที่ดูคือไม่เห็น documentation เกี่ยวกับการใช้งาน Ajax และ javascript effect ทั้งหลาย แล้วก็ระบบ form validation ทำให้โค้ดดูยุ่งๆ พอสมควร

แต่ที่ดีกว่า Symfony แน่ๆ คือ ในแง่การติดตั้งลงเซิร์ฟเวอร์จริง เพราะแค่ก๊อป directory ไปก็เรียบร้อย และรู้สึกว่าโดยรวมแล้วระบบจะทำงานได้เร็วกว่า

ปล. โครงการต่อไป ลอง CakePHP และ Prado

Symfony… and a Little Bit About Rails and Struts

หายไปหลายวันช่วงหยุดสงกรานต์ ไม่ได้ออกไปไหนหรอกครับ นั่งๆ นอนๆ อยู่หน้าคอมเกือบทั้งวัน

เนื่องด้วยในการเรียนวิชาระเบียบวิธีวิจัย กลุ่มผมไปเสนอวิธีแก้ปัญหาไว้ว่า จะสร้างเว็บไซต์ขึ้นมา เพื่อเป็นระบบจองใช้เครื่องคอมพิวเตอร์นอกเวลาเรียนของนักเรียน ลักษณะก็คล้ายๆ เว็บจองใช้คอมพิวเตอร์ ของ IT Square ของ ม. เกษตรศาสตร์ (KITS) (เข้าได้เฉพาะคนใช้ wireless ในเกษตร หรือใช้งานผ่าน VPN)... ไม่คล้ายก็แปลกล่ะ ลอกมาเกือบทั้งดุ้น :em02:

เมื่อไม่จำกัด tools ที่ใช้ ก็แน่นอนว่าต้องหากินกับของเก่า ใช้ PHP นี่แหละคุ้นมือสุดแล้ว ทีนี้คำถามก็คือ จะเขียนเอง หรือจะใช้ framework ดี

จริงๆ ที่ออกแบบไว้มันมีไม่กี่หน้า (display, reserve, confirm, cancel) ถ้าเขียนเองก็คงใช้เวลาไม่เท่าไหร่ แต่ถ้าจะเอาไปใช้จริง ก็ต้องมี backend ด้วย ชักเยอะแฮะ ประกอบกับที่เคยตั้งใจไว้ใน My New Year's Resolution เลยตัดสินใจหัดใช้ symfony ดีกว่า

ครึ่งวันแรกหมดไปกับการลองทำ My first symfony project อย่างแรกที่รู้สึกคือ สบายแล้วเฟ้ย... ส่วน backend แค่ใช้ admin generator แล้วแก้ไขนิดหน่อยก็น่าจะใช้ได้ จากนั้นก็เริ่มอ่าน documentation รู้สึกว่าเค้าเขียนได้ดี และค่อนข้างละเอียด มี tips แทรกเป็นระยะๆ เรียกได้ว่าอ่านจบก็น่าจะทำได้เลย

documentation ทั้งหมดมี 19 บท แต่ผมว่าอ่านแค่ 1-10 ก็สร้างแอพพลิเคชันได้แล้ว เลยเริ่มลองทำดู พร้อมกับเปิด documentation อ่านคู่ไปด้วย (อ่านจบไปรอบนึง แต่จำไม่ได้หรอกครับ แค่ให้พอรู้ว่าเราอยากทำแบบนี้ ต้องไปเปิดหาจากบทไหน) ซักพักนึงก็นึกขึ้นมาได้ -- เฮ้ย มันเหมือน Rails เลยนี่หว่า

เลยคิดต่อไปว่า ทำไมผมลองเล่น Ruby on Rails แล้ว ทำแอพพลิเคชันออกมาเป็นชิ้นเป็นอันแบบ symfony ไม่ได้ คิดไปคิดมา ก็ได้ข้อสรุป(เอาเอง)ว่า ผมเรียนรู้ RoR แบบผิดวิธีไปหน่อย คือเขียนไม่เป็นทั้ง Ruby และยังไม่เข้าใจการทำงานของ Rails ผลสุดท้ายเลยได้แค่ generate scaffold แล้วก็แก้ไขอะไรนิดหน่อย ตาม tutorial เ่ท่านั้นเอง

เมื่อเทียบกับ symfony ที่เข้าใจ syntax ของ PHP อยู่แล้ว ทำให้เรียนรู้ได้เร็วกว่าเยอะ และยังมั่นใจว่า ถึงไม่ใช้ helper ของมัน ก็เขียนให้มันทำงานได้เหมือนกัน (แต่เวลาทำจริงก็ใช้ helper แหละ fast and sure :em32: )

ใน New Year's Resolution เคยบ่นไว้ว่าอยากหัดใช้ทั้ง Struts, symfony, และ Rails ก็พอดีเทอมนี้มีการสอน Struts ในชั้นเรียนด้วย บังเอิญดีจริงๆ :em44: แต่หลังจากลองใช้ดูแล้วก็พบว่า Struts (เวอร์ชัน 1) เป็นประมาณ framework รุ่นโบราณ ต้องเขียนไฟล์ configuration เองเยอะมาก และการเขียนแอพพลิเคชันให้สำเร็จออกมาซักตัว แทบจะขึ้นอยู่กับ IDE -- อันนี้ประสบการณ์ตรง สอบเขียนเว็บแอพธรรมดาๆ กรอกข้อมูลใส่ฟอร์ม, มี validation แล้วเอาข้อมูลที่ได้มาแสดงผล กลุ่มผมใช้ Netbeans มัน gen ให้เกือบทุกอย่าง เขียนเสร็จภายในเวลาที่กำหนด, กลุ่มที่ใช้ JDeveloper เป็นก็ทำทัน แต่กลุ่มที่ใช้ Eclipse นี่นั่งมึน (หรือเค้าใช้ไม่เป็นก็ไม่รู้) ส่วนอีกกลุ่มใช้ WebSphere ก็ทำเลยเวลาไปตั้งนานกว่าจะเสร็จ

กลับมาเรื่อง symfony ต่อ... หลังจากได้เว็บเป็นรูปเป็นร่างแล้วก็มาหัดใช้ Ajax เป็นลูกเล่นเพิ่มเติม บอกไว้ก่อนเลยว่าผมเขียน Ajax เองไม่เป็น และคิดว่าต่อไปก็คงจะเขียนเองไม่เป็นอยู่ดี เพราะแค่ใช้ helper ที่ symfony ให้มาก็คิดว่าน่าจะทำได้เท่าที่คนใช้เว็บทั่วๆ ไปจะนึกออกแล้วมั้ง เพราะ symfony มาพร้อม Prototype และ script.aculo.us ทำให้การเรียก Ajax หรือ JSON พร้อมใส่ effect ง่ายแบบใช้ฟังก์ชันเีดียวจบ :em03:

ความเห็นของคนเพิ่งเริ่มใช้ symfony ได้ 5 วัน (a.k.a. ยังเห่ออยู่) ก็ประมาณนี้ครับ ถ้าเรียงลำดับความชอบตอนนี้ก็คือ symfony » RoR » Struts ตามลำดับ :em26: