jinja

ส่วนหนึ่งที่ชอบมากใน django คือส่วน template engine ของมัน แม้จะไม่ค่อยชอบที่มันคล้ายๆ python แต่ดันต่างกันนิดหน่อยให้งงเล่นๆ แต่โดยทั่วไปแล้วต้องยอมรับว่า template ของ django มันใช้งานได้จริง

ปัญหาในช่วงหลังมานี้พอดีว่ามีเรื่องต้องทำ code generation เยอะ ด้วยความที่ต้องเขียนสคริปต์ TCL (ภาษารุ่นพ่อ) เพื่อมาใช้งาน NS2 ในการจำลองเครือข่ายคอมพิวเตอร์ แม้ns2 จะใช้ภาษาสคริปต์อย่าง TCL เพื่อความสะดวกในการแก้ไขสคริปต์โดยไม่ต้อง build ใหม่ทั้งระบบแล้วก็ตาม แต่การแก้สคริปเป็นร้อยๆ แบบก็ไม่สนุกนัก แถมภาษา TCL นั้นเขียนลำบาก เขียนผิดทีเล่นเอาหาไม่เจอบ่อยๆ อาจจะเป็นเพราะผมไม่ชำนาญเองก็ได้

วิธีที่ง่ายกว่าคือการสร้างสคริปต์ขึ้นมาใหม่ โดยใช้สคริปต์หลักเป็นโครง แล้วใช้พวก template engine นี่แหละมาสร้างเอา

เมื่อคิดได้อย่างนั้นสิ่งแรกที่ผมทำคือการ พยายามใช้ template engine ของ django มาสร้างสคริปต์ทันที แต่แล้วก็ต้องพบกับความลำบากเมื่อ template engine ของ django นั้นผูกกับตัว web framework จนแกะไม่ออก

สุดท้ายเลยมาเห็นเอา jinja ที่ระบุตัวเองชัดเลยว่าเป็น django-like แต่เอามาใช้งานแยกได้ง่ายๆ ตอนนี้ที่ใช้งานแบบง่ายๆ ก็มีแค่สามสี่บรรทัด

import jinja as jj env = jj.Environment(loader=jj.FileSystemLoader('./')) tmpl = env.get_template('template.tcl') print tmpl.render(number_of_node=3,width=100,height=20,packet_size=20,bandwidth=0.064)

น่าสนใจว่าถ้าเอาไปรวมเข้ากับ web framework อื่นๆ อย่าง web.py ก็น่าจะสวยดีเหมือนกัน

Import

ปิดเทอมหัดเขียน Django เล่นๆ พบว่าสนุกดีใช้ได้เหมือนกัน สำหรับคนไม่เขียนเว็บอย่างผม (เขียนแต่บล็อก และอ่านเว็บเยอะมาก)

ข้อเสียหลักๆ ของ Django ตอนนี้คือ API ที่ยังไม่เสถียรอยู่เยอะ ถ้าใครอ่าน Django Book จะเห็นว่ามีอีกสองสามบทที่ยังไม่ได้เขียนเพราะมีแนวโน้มสูงว่าจะโดนยกเครื่องทั้งกระบิ (พี่คนหนึ่งเคยบอกว่าเป็นนิสัยของ Python Programmer ที่ชอบโล๊ะโค้ดเก่าทิ้ง) ตอนนี้แว่วๆ ว่า Admin ก็จะโดนไปด้วยเหมือนกัน พวกนี้ยังพอทำใจได้เพราะถือว่าทำแล้วมันดีขึ้นจริง

แต่ที่รำคาญมากหน่อยคือ Views ที่ดูเหมือนต้อง import สารพัดเข้ามาใช้งานจนดูเลอะๆ ชอบกล มันน่าจะมีวิธีรวมๆ กันที่สวยกว่านี้นะ

รักเธอ แต่เราไม่อาจอยู่ร่วมกัน

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

คง​ต้อง​รอ​เครื่อง​ใหม่ อัด​แรม​สัก​สอง​สาม​กิก แล้ว​เรา​คง​ได้​อยู่​ด้วย​กัน

Conflict

Python ชอบ XML-RPC มากๆ เขียนทำเซิร์ฟเวอร์แบบ Multi-Threaded ได้ในสามสิบบรรทัด ส่วน Mozilla น่ะชอบ SOAP

สรุปว่าลำบากคนเขียน… (แม่ง…)