Blognone Tech Day 2006 #1

เมื่อคืนเขียนรีวิวภาษาอังกฤษไปแล้ว พึ่งนึกได้ว่าน่าจะเขียนเป็นภาษาไทย และขาดสไลด์ด้วย ผมเลยขอแก้ตัวเขียนใหม่อีกรอบให้ถูกต้อง และละเอียดมากขึ้น เริ่มต้นด้วยสิ่งที่ผมฟังมาละกันครับ

  1. Ruby on Rails โดยส่วนตัวแล้วผมชอบหลายอย่างของ Rails แต่ดันไม่ชอบ Ruby พอๆ กับที่ไม่ชอบ Perl เพราะมีสัญลักษณ์เยอะจนถ้าไม่เคยเขียนก็ดูแทบจะไม่รู้เรื่อง แม้แต่รูปแบบของคำสั่งวนรอบก็ยังไม่เหมือนปกติเอาซะเลย หัวข้อนี้กินเวลานานหน่อย แต่ก็คุ้มค่าทำให้รู้ว่า AJAX ใน RoR เหมือนกับใน SAP Web Dynpro ที่เราไม่จำเป็นต้องเขียน Javascript เพราะ RoR สามารถสร้าง Javascript จากคำสั่งในภาษา Ruby ได้โดยตรง แค่นี้ก็สบายมากโข ไม่ต้องไปหัดเขียน Javascript ให้เหนื่อย ทำให้ตอนนี้เริ่มมีความสงสัยว่ามีไลบรารีที่เอาไว้สร้าง Javascript ด้วย Python PHP หรือ Java รึเปล่าน้อ ถ้ามีก็คงจะดีทีเดียว
  2. Python on Zope เรื่องนี้ผมพูดเอง สารภาพตามตรงว่าไม่ค่อยจะพร้อมเท่าไหร่ จริงๆ แล้วเป้าหมายของหัวข้อนี้จะพูดเกี่ยวกับอะไรก็ได้ใน Python เนื่องจากผมเห็นมี RoR มาพูดด้วย ก็เลยยกหัวข้อนี้ขึ้นมา จะได้เอามาเปรียบเทียบกันได้ ตอนแรกกะว่าจะรีวิว Zope กับ Plone คร่าวๆ เอาแค่ให้เข้าใจว่ามันคืออะไร ทำอะไรได้บ้าง แล้วก็จะให้ดูโค้ด โค้ดไม่ยาก แต่เขียนครั้งแรกก็คงจะงง มันมาได้ยังไง จะรู้ได้ยังไงต้องทำอย่างนี้ บอกได้อย่างเดียวว่า อ่านคู่มือ ครับ รายละเอียดเยอะมาก
  3. Mono ผมชอบหลักการของ .Net ตรงที่ไม่จำกัดภาษา ในขณะที่ Java ใจแคบไปนิด แต่โดยเนื้อหาแล้ว .Net แทบจะเหมือน Java แค่เพิ่มคีย์เวิร์ดเพื่อแก้ปัญหาหลายอย่างที่ Java มี ผมเคยพยายามเขียน C# อยู่พักนึง รู้หลักการและเทคโนโลยีข้างหลังนิดหน่อย ฟังแล้วก็เข้าใจมากขึ้น พวกนี้ชอบตั้งชื่อครับ ชื่อมักจะยาว เพราะยาวเลยต้องย่อ ย่อไปย่อมางงซะเอง ผมก็งง มันเยอะจนไม่สนแล้ว ขอแค่มีคอมไพเลอร์ให้ก็พอใจแล้ว หวังว่า Mono จะไม่ช้าจนเกินไป
  4. Emacs ใครๆ ก็ว่า Emacs ดีอย่างนั้น ดีอย่างนี้ เมื่อวานได้เห็นกับตา ก็ต้องบอกว่ามันดีจริงๆ เมื่อนานมาแล้วช่วงที่ใช้ยูนิกส์ใหม่ๆ กำลังตัดสินใจเลือกอิดิเตอร์คู่ใจ Emacs ก็เป็นตัวเลือกหนึ่ง แต่ผมเจอปัญหาที่ไม่ใช่ปัญหา นั่นคือ หน่วยความจำไม่ค่อยจะพอ Emacs ตัวใหญ่จริงๆ เปิดทีใจหายใจคว่ำ และที่สำคัญ ตอนเครื่องมีปัญหาไม่มีอิดิเตอร์อะไรน่าเชื่อถือไปกว่า vi ยังไงก็มีทุกเครื่อง สุดท้ายผมเลยหัด vi ดีกว่า จนตอนนี้ใช้ติดมือ เปลี่ยนก็คงลำบากซะแล้ว ซักวันอาจได้ลอง ตอนนี้เอาไว้ก่อน
  5. IP PBX by Asterisk เรื่องนี้น่าสนใจมาก พี่ของเพื่อนสนิทก็ฝากมาฟัง กำลังเป็นเรื่องฮิตในยุคอินเตอร์เน็ตความเร็วสูงมาแรง วิทยากรพูดได้ถึงใจมากถึงมากที่สุด ได้อารมณ์ดีแท้ แต่บอกตามตรง ผมไม่ค่อยเข้าใจเรื่องพวกนี้ซักเท่าไหร่ ขอแค่ ฟรี ติดตั้งได้ ใช้ได้ ก็พอใจแล้ว
  6. EJB 3.0 เรื่องนี้ผมไม่ค่อยสนใจเท่าไหร่ เนื่องจากไม่ค่อยนับถือ Java เท่าที่ควร ตอนที่ Java มาใหม่ๆ ผมชอบมากเลย แต่สุดท้ายก็พบว่า หลักการดีอิมพลีเมนต์ห่วย มันเป็นอย่างนี้นี่เอง สาเหตุเดียวที่ทำให้ผมไม่ชอบ Java ก็คือ มันเทอะทะมาก กว่าจะเขียนได้หน่อยก็ต้องเขียนส่วนประกอบมากมาย ไม่ว่าจะทำอะไรก็มีไฟล์ XML มาเกี่ยวข้อง เกี่ยวมากซะจนเหนื่อยแทน ถ้าไม่ใช้ IDE ช่วยคงจะเหนื่อยจนเป็นลม โชคร้ายที่ผมใช้ vi สำหรับ EJB เคยเรียนตั้งแต่สมัยเรียนตรี หลักการดีตามเคย ข้อเสียอย่างแรงของ Java อีกอย่างก็คือ มันเป็นระบบปิดเกือบสมบูรณ์แบบ บางครั้งผมอยากเขียนโปรแกรมด้วย Python เพื่อคุยกับ Java ด้วย JXTA RMI EJB โชคร้าย ไม่ได้ซักอย่าง ยกเว้นว่าจะแปลงร่างไปใช้ Jython

นอกจากนี้แล้วยังมีหัวข้ออื่นอีก ได้แก่

  1. Xen
  2. Game Theory
  3. Emerging Technology 2006
  4. Thai Word Breaking using ZWSP

น่าเสียดายต้องกลับบ้านซะแล้ว กลัวบ้านหาย ปิดท้ายด้วยสรุปเนื้อหาของ Python on Zope สำหรับคนที่ไม่ได้มาฟัง หรือฟังไม่ทัน เพื่อให้ง่ายต่อการเข้าใจ ผมจะแบ่งเป็นหัวข้อแทนที่จะร่ายยาว

  • Zope เป็น Application Server ส่วน Plone คือ Content Management System ที่ทำงานบน Zope อีกที
  • การเอา Zope ไปเปรียบเทียบกับ Ruby on Rails นั้นเป็นความเข้าใจที่ผิดโดยสิ้นเชิง
  • ถ้าคิดแบบง่ายๆ Zope ควรถูกจัดเป็น Portal ประเภทหนึ่งมากกว่า
  • ถ้าอยากเอาไปเทียบกับ Ruby on Rails ต้องเปรียบเทียบกับ Archetypes ซึ่งเป็นโปรดักต์หนึ่งบน Zope และ Plone ทำให้สามารถเขียนโปรแกรมบน Zope และ Plone ได้ง่าย และรวดเร็ว
  • Zope ใช้หลักการของ Object Orientation สมบูรณ์แบบ ทุกอย่างคือ object
  • ข้อมูลทั้งหมดถูกเก็บใน ZODB ซึ่งสามารถ undo ได้ทุกอย่าง
  • ZODB แบบกระจายหลายเครื่องเรียกว่า ZEO (ไม่ฟรี)
  • Zope มีระบบการยืนยันตัวตนผู้ใช้แบบลำดับชั้น สามารถติดต่อกับระบบหลายแบบ ไม่ว่าจะเป็น PAM Radius LDAP
  • สามารถกำหนดสิทธิ์การเข้าถึงแต่ละ object ได้ สิทธิ์ที่กำหนดไว้ที่ไดเรกทอรีจะสืบทอดไปยัง object ภายในด้วย
  • มีระบบค้นหาอัตโนมัติ
  • มีแคชในตัว กำหนดได้เป็นราย object
  • ติดต่อกับฐานข้อมูลภายนอกได้
  • อย่าหวังว่าจะเจอ Zope Hosting ในประเทศไทย
  • ถ้าอยากใช้จริงๆ ก็เตรียมใจแบกเครื่องไปวางที่ data center ได้เลย
  • ตัวอย่างที่ผมยกให้ดูเป็นการใช้ Archetypes สร้างชนิดข้อมูลใหม่ขึ้นมาและการใช้ Plone เป็น Portal สำหรับ Cluster หรือ Grid โดยการติดต่อไปยัง Batch Scheduler และ MySQL

น่าแปลกใจที่พูดตั้งนาน สรุปประเด็นได้นิดเดียวเอง แสดงว่า น้ำท่วมทุ่งผักบุ้งโหรงเหรง คราวหน้าขอพูดเรื่องถนัดบ้างดีกว่า Python กับชีวิตประจำวัน สรุปเพิ่มเติมดูที่ Blognone ส่วนสไลด์ดูที่ attachment ครับ

Technorati Tags: , , , , , ,

Attachment Size
python-on-zope.pdf 295.14 KB
python-on-zope.odp 259.42 KB

Post new comment