Rails or Django?

ผมกำลังวางแผนที่จะเขียน Webapp ขึ้นมาสักตัวเพื่อหาประสบการณ์ ประมาณว่า ajax online musicstation ครับ หลังจากหาข้อมูลและทดลองใช้อยู่พักใหญ่ๆ ก็ยังตัดสินใจไม่ได้เสียทีว่าจะปักหลักกับ Framework ตัวไหนดี (ผมมีพื้น Python อยู่บ้าง แต่จะให้ศึกษา Ruby เพิ่มเติมก็ไม่ใช่เรื่องใหญ่)

สรุปจากที่ผมรวบรวมข้อมูลมาได้คร่าวๆ

  • Rails
    1. Concise (กระชับ)
    2. Built-in AJAX Support
    3. Bigger community
    4. Database migration
  • Django
    1. Explicit (ชัดเจน - ตรงนี้ถูกใจผมมาก)
    2. Admin page

จึงอยากจะขอสอบถามความเห็นจากทุกท่านถึงประสบการณ์ในการพัฒนา Webapp บน Rails และ Django ว่ามีข้อดี ข้อด้อย ข้อสังเกต ตรงไหน อย่างไรบ้าง?

taiko_gogo's picture

อยู่ฝั่ง ror อย่างเดียว คงจะพูดเปรียบเทียบไม่ได้แฮะ
สำหรับผมที่ทำมา ror นี่สุดยอด ใช้แล้ว happyดี เขียนสนุก ข้อดีนี่คงไม่ต้องพูด

จุดที่ผมไม่สนุกเท่าไหร่คือ ตอนทำงานร่วมกับ graphic designer(ขอย่อว่า gd)
step การทำงานของผมตอนนั้นเป็นแบบนี้
1.gd ทำ prototype เป็น htmlออกมา
2.ผมเอา html prototype มาจัดตาม structure ของ ror และ
ตามที่ผมได้ออกแบบไว้ (จัดในระดับ MVC แยกว่าหน้าไหนจะไปอยู่ controllerไหน)
3.แบ่ง partial เนื่องจากเว็บที่เคยทำ มีการใช้ ajax เยอะอยู่
ในแต่ละหน้าจึงต้องมีการแบ่ง partial เอาไว้เยอะเป็นเงาตามตัว
4.แก้ไข code ของ user interface โดยยัดพวก erb ลงไป๊
เพื่อการแสดงผลต่าง ๆ

ปัญหาของผมมันอยู่ ในกรณีที่ user interface มีการupdate
-ถ้าขาดการทำ documentในบางช่วง จะทำให้ gd หาไม่เจอว่าหน้าที่จะแก้มันอยู่ตรงไหน
-บางทีถ้ามันไม่ใช่ทั้งหน้า แต่เป็น partial คนที่เป็น gd ก็จะหาลำบากเข้าไปใหญ่
-ถ้า html tag ถูกแทนด้วย ruby หมด gd จะงงเต๊ก
-code ที่คุณเขียนใน view อาจโดน gd ทำให้เจ๊งได้(ด้วยความไม่รู้ของเขา)
-ช่วงแรก ๆ ที่ยังไม่ได้ใช้ svn ช่วย พบว่า ตายอย่างเขียด แก้กันไปมา overwrite
กันไปมา แทบจะฆ่ากันตาย

อย่างไรก็ตามผมคิดว่าปัญหาที่ผมเจอส่วนใหญ่มันเป็นเพราะ team communication
ที่ไม่ดีนัก + ไม่ได้ใช้ svn ตอนแรก ปัญหาจริง ๆ ถ้าพูดอิงถึง ror คงจะเป็น
เรื่องการตามหา partial ที่แบ่งไว้มากกว่า บางทีผมเขียนก็งงเอง
แต่จริง ๆ แล้วก็อีก ผมก็คิดว่ามันเป็นเพราะความอ่อนประสบการณ์ของผมด้วยซะส่วนมาก
ถ้านำ idiom ต่าง ๆ มาปฎิบัติตาม จะช่วยให้เขียนได้ง่ายแล้วก็ clean ขึ้นเยอะ
อย่างเช่น DRY นี่ช่วยได้มากทีเดียว จะเขียน RoR น่ะง่าย แต่จะเขียนให้ดีผมว่ายากนะ
การออกแบบนี่ไม่ง่ายเลย ต้องเขียนไปซักพัก ค่อย ๆ เห็นจุดแล้วต่อเป็นภาพไปเรื่อย ๆ
(สำหรับผมเป็นงี้ สำหรับ บางคนอาจจะง่ายจริง ๆ ก็ได้ >_< ผมก็เขียนไม่เก่ง แถมพักหลัง ๆ
นี่ก็เขียนแบบง่าย ๆไม่ค่อยใช้ ajaxแล้วด้วย มันเลยไม่ซับซ้อนมากนัก เขียนสบาย ๆ)
อืม แต่ถ้าให้พูดจริง ๆ มันก็เป็นแบบนี้กับทุกภาษา/framework นี่น๊า...
rails 2.0 ออกแล้วผมยังไม่ได้ลองเลย เฮ้อ
เห็นพูดเรื่อง ajax built-in มา ผมยก case study ผมนะ ตอนนั้น
เคยจะเขียน sortable_element แล้วอ่าน document ตกบางส่วนไป ทำให้
อ่านข้าม exception มันไป พอ runแล้วก็ error กว่าจะหาเจอว่าเพราะใช้ ตั้งชื่อ
element ที่จะ sort ผิด ก็นานอยู่ อันนี้เป็นข้อคิดว่า จะใช้ พวก ajax built-in
นี่ต้องอ่าน doc ให้ดี ๆ
ส่วนอื่น ๆ ให้พี่ ๆ หลาย ๆท่านที่เก่งกว่าผมช่วยเสริมดีกั่ว :D
ผมอยากลอง django บ้างอ่ะ

veer's picture

Django ถ้าใช้ SQLAlchemy ก็น่าจะ migrate database ได้? Turbogears อาจจะกลางๆระหว่าง Django กับ Rails เปล่า? ผมชอบ Turbogears อะนะแต่ก็ยังเขียนอะไรออกมาห่วยๆอยู่ :-P. ตอนนี้พยายามจะใช้ CakePHP อย่างจริงจังเพราะข้อจำกัดเรื่อง host หรือจะใช้ Drupal ดี? ... วกเข้าปัญหาตัวเอง T_T

มีลิงก์มาฝากด้วยครับ ถึงจะไม่ค่อยมีประโยชน์และอาจจะเคยดูมาแล้วก็ตาม http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
---
http://blog.vee-u.com/

Rails ถ้าเป็น site ใหญ่ๆ ก็จะไปปวดหัวตอน deploy เหมือนกัน
ส่วน Django นี่ไม่รู้เพราะยังไม่เคยลอง

ล่าสุด อาจารย์มะนาวพึ่งลอง Django ไป
ลองอ่านดู http://wonam.exteen.com/20080131/django
อย่าลืมอ่าน paragraph ท้ายๆดีๆด้วยนะ

ไหนๆจะหาประสบการณ์แล้ว ลองเขียนด้วยทั้งสองตัวเลยแล้วกัน
จะได้กลับมาเล่าให้พวกเราฟังบ้าง

ผมลอง django ด้วยความจำเป็น (+ความอยากรู้)... และคิดว่าจะได้เล่นอีกหน่อยก่อนวันอังคารหน้านี้ (เพราะว่าต้องเอาไปเล่นกับนิสิต) คาดว่าอาทิตย์หน้าอาจจะพอมาเล่าอะไรเพิ่มเติมจากบล็อกที่เขียนไว้ได้บ้าง

แต่ผมก็หลัก ๆ ก็แค่เล่น ๆ ลอง ๆ ให้พอเขียนได้คงไม่เจอปัญหาอะไรเท่าไหร่ หวังรอฟังจากท่านอื่น ๆ ที่ได้ลองมาด้วยครับ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น