Clicky

Symfony… and a Little Bit About Rails and Struts | suksit dot com

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:

11 comments

sakanoz's picture
sakanoz (visitor) says:

:em10: พูดเรื่องไรอยู่เนี่ย ไม่รู้เรื่องซักกะอย่าง

pittaya's picture
pittaya (visitor) says:

เมื่อก่อนเคยคิดจะหัด struts เหมือนกัน แต่แค่อ่าน doc ก็ไม่ไหวแล้ว

Nobody uses Java anymore.

nat3's picture
nat3 (visitor) says:

อืม ว่าจะกลับมาเขียน php อยู่พอดี เอามาลองเล่นมั่งดีกว่า ส่วน java ไว้ใช้ตอนทำงานก็พอและ :em25:

PeeTai's picture
PeeTai (visitor) says:

sakanoz - การที่คุณเขียนประโยคนี้ทำให้ผมรู้ว่า คนคอมพิวเตอร์พูดไม่รู้เรื่องพอ ๆ กับพวกจิตรกรรมเลยอ่ะ ^o^ ฮา

chanon's picture
chanon (visitor) says:

จากที่ผมได้ลองทำ webapp ที่ใช้อยู่จริงๆ ที่บริษัทตัวนึงนะครับที่ใช้ Ruby on Rails .. ผมว่า Ruby on Rails ก็เจ๋งมากนะ แต่ต้องเรียนรู้ Ruby ให้เข้าใจก่อน

แต่ข้อเสียของ RoR อาจจะเป็นว่าหาที่ deploy ลำบากกว่า และอาจจะ performance ห่วยกว่า

ผมเลยกำลังจะแปลง application นั้นให้เป็น PHP แทน ซึ่งตอนแรกผมก็สนใจ symfony เหมือนกัน แต่ผมดูแล้วทำไมรู้สึกมันวุ่นวายๆๆ จัง tutorial ก็ยาวเหยียด ก็เลยลองไปดู CakePHP ปรากฎว่ารู้สึกว่ามันง่ายยยย มาก ใชได้้สะดวกสบาย ไม่ต้องเรียนรู้อะไรมาก

ที่สำคัญเท่าที่ผมดูๆ database layer ของ symfony มันต้องนั่งเขียน config เยอะเหมือนกัน แล้วมันก็กำลังจะเปลี่ยนจาก propel เป็นอะไรซักอย่างอีกตัว

ในขณะที่ CakePHP database layer มันฉลาดเหมือนของ Rails คือมันจะไปอ่าน data model จาก database เอง ไม่จำเป็นต้องมานั่งเขียน description อะไรให้วุ่นวาย นอกจากแค่กำหนด relationships

สรุปว่าลองดู CakePHP บ้างก็ดีนะ ผมว่า work

kong's picture
kong (visitor) says:

chanon: ผมชอบ RoR นะครับ ก็คิดว่ามันเจ๋งแหละ (ไม่งั้นจะมี framework ของ PHP เลียนแบบกันตรึมเรอะ) แต่ผมดันไปหัดเล่นทั้งๆ ที่ยังเขียน Ruby ไม่เป็นอะ เลยมึนกันไปใหญ่ =.=

CakePHP เคยได้ยินกิตติศัพท์เหมือนกันครับ แต่ดูๆ documentation แล้ว รู้สึกว่าเริ่มต้นกับ symfony น่าจะง่ายกว่า ลองเปรียบเทียบที่ CakePHP อธิบายเรื่อง MVC ผมว่า ของ symfony อธิบายได้ประทับใจกว่าเยอะ

crucifier's picture
crucifier (visitor) says:

ไม่มีใครสนใจ Prado กันบ้างเลยเหรอ

Orca's picture
Orca (visitor) says:

น่าลอง symfony ครับ เท่าที่ดูผ่านๆ doc ค่อนข้างเยอะทีเดียว หนังสือออนไลน์ก็มีให้อ่าน หุๆ ชอบเลย :em19:

Fueled by CodeIgniter : Suksit Sripitchayaphan's picture

[...] กลัวทำงานเสร็จไม่ทันส่ง ส่วน Symfony เคยเล่นไปแล้ว แต่ลืมแล้วเหมือนกัน [...]

boy's picture
boy (visitor) says:

สวัสดีครับผม ผมเพึ่งหัดเช่น framwork ของ Symfony นะครับ ลองผ่านอกสารแล้ว ก็ยัง งงงงงงง อยู่นะครับ ลองมาหลายวันแระ ยังเริ่มต้นไม่ถูกเลยนะครับ มีใครแนะนำได้บ้างครับ เอาแบบไม่ต้องอธิบายยาว นะครับ เข้าใจง่าย ๆ นะครับ มีใครแนะนำได้มั่งครับ ขอบคุณครับ อย่าให้ผมไปอ่านเอกสารเลยนะครับ อ่านแล้วครับ งง นะอ่ะ

Torresss's picture
Torresss (visitor) says:

ผมก็กำลังศึกษา symfony อยู่เหมือนกันครับเพิ่งเคยเล่น framework ครั้งแรกเนี่ยแหละ ตอนแรกขอบอกว่า งงมากมาย อ่านเอกสารไม่เข้าใจแต่พอผ่านไปสักพักนึงก็เริ่มสร้างโปรเจคได้ก็รู้สึำดีเพราะ symfony gen ส่วนที่ทำงานขั้นพื้นฐานมาให้หมดแล้วแค่มี databese เท่านั้นสั่งรัน command ได้เลยใช้เวลาไม่ถึงห้านาทีตั้งแต่เริ่มสร้างโปรเจคก็จะได้หน้าแรกมาใช้งานแล้วครับทำงาน เพิ่ม ลบ แก้ไข ได้หมด ยังมีส่วนอีกอีกครับที่ symfony ทำมาให้ถือว่าน่าสนใจมากครับเพราะความสามารถสูงจริงๆแต่ถ้าอยากจะเล่น symfony ในตอนแรกๆก็ต้องเหนื่อยหน่อยนะครับถ้าประสบการณ์ยังน้อยอยู่

Post new comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.