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 ก็น่าจะสวยดีเหมือนกัน

 

Scaling Blognone

ปัญหาอย่างหนึ่งที่ต้องเริ่มคิดให้กับ Blognone แล้วคือเรื่องของการขยายขนาด เราต้องเตรียมตัว “แตกเพื่อโต” ให้กับ Blognone ในเร็ววัน

ขณะที่โครงการอื่นๆ เช่น Blognone Library ยังคงอีกยาวไกลกว่าจะเริ่มได้รับความสนใจ ตัว Blognone เองคงต้องเตรียมการขยับขยายกัน

กระบวนการขยายที่เป็นรูปธรรมที่สุดคือ One Process  Many Domain นั่นคือเราจะขยายคงกระบวนการของ Blognone ไว้เหมือนเดิมทั้งหมด และค่อยๆ ขยายแนวทางออกไปเรื่อยๆ

เช่นในตอนนี้เอง ที่ข่าววิทยาศาสตร์มากขึ้นเรื่อยๆ ถ้าใครสังเกตคงเห็นว่าหลังๆ ผมเขียนข่าวคอมพิวเตอร์น้อยลงๆ แล้วหันไปเขียนข่าววิทยาศ่าสตร์เรื่อยๆ ในช่วงเวลาข้างหน้าเราคงได้เห็นโครงการ Blognone Science & Medical กัน

อีกเรื่องที่อยากทำมานานแล้วแต่ไม่สำเร็จคือการทำ In-Depth ให้ขยายตัวออกไปเป็นโครงการแยกได้ ด้วยการเขียน Programming Tutorial แบบสั้นๆ เช่น แนะนำ jQuery หรือ jinja มารวมๆ กัน อันนี้ได้แรงบันดาลใจจากพี่ป๊อกเป็นหลัก แต่ไม่มีแรงเขียนได้เป็นประจำเพราะแต่ละบทความใช้เวลาเป็นชั่วโมงเอาเหมือนกัน เลยกำลังคิดว่าจะทำยังไงดี  โครงการนี้ถ้าทำคงอยู่ที่ Codenone.com ต่อไป

ที่อยากได้มานานแล้วคือข่าวการเมือง แต่เนื่องจากสื่อเมืองไทยไม่ค่อยน่าเชื่อถือนัก การหา Primary Source ที่ดีจึงทำได้ยาก อันนี้ต้องหาทางแก้กันต่อไป

 

โรงเรียนในฝัน

ผมเป็นคนที่ผิดหวังกับระบบการศึกษาบ้านเรามานานมาก โดยเฉพาะในแง่ของวัฒนธรรมการเรียนรู้

ถ้าใครจำกันได้ เมื่อประมาณ 20 ปีก่อนเราคงได้เห็นป้ายโฆษณาโรงเรียนต่างๆ ว่ามีห้องซาวน์แล็ปอย่างนั้นอย่างนี้ สิบปีให้หลังมานี่ก็คงมีห้องคอมพิวเตอร์เพิ่มเข้ามา และกำลังเริ่มเห็นโฆษณาสระว่ายน้ำ สนามฟุตบอล ฯลฯ

แต่ให้ตายเถอะครับ โรงเรียนนะครับ โรงเรียน ไม่ใช่ค่ายฝึกนักกีฬา หรือศูนย์อบรมวิชาชีพ

ผมไม่รู้สึกแย่เท่าใหร่กับการที่ส่วนเสริมเหล่านี้จะถูกนำมาใช้ในการเสริมภาพลักษณ์บ้าง แต่การนำส่วนเหล่านี้มาโปรโมทโรงเรียน เราควรบอกให้ได้ก่อนว่าส่วนที่สำคัญที่สุดของโรงเรียนนั้นไปถึงไหนกันแล้ว

ส่วนที่สำคัญที่สุดคือครู….

ครูครับ โรงเรียน ต้องมีครู

โรงเรียนมันจะมีทางดีได้ไหม ถ้าครูแย่ไปก่อนซะแล้ว

อยากเห็นโรงเรียนสักโรงเรียนที่กล้าบอกได้ว่า

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

หวังว่าก่อนตายจะได้เห็นโรงเรียนอย่างนี้สักที่ในประเทศไทย…

 

Samba

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

เรื่องนี้คล้ายๆ จะมีทางออกที่ง่ายๆ เพราะตัว Samba นั้นรองรับการซิงค์รหัสผ่านกลับไปยังลินุกซ์อยู่แล้ว แค่ปรับคอนฟิกใหม่แค่สองบรรทัดเท่านั้น

แต่ปัญหาก็ยังไม่หมด เมื่อรหัสผ่านจะถูกซิงค์แค่ทางเดียวคือ Samba -> ลินุกซ์ เท่านั้น ส่วนถ้าใครใช้คำสั่ง passwd ในเทอร์มินอลก็เป็นอันว่ารหัสผ่านทั้งสองระบบจะเริ่มไม่ตรงกัน

เรื่องนี้ผมหาทางมานานพอดู คำตอบที่ได้ก่อนหน้านี้คือการแนะนำให้ตั้ง LDAP แล้วตรวจสอบสิทธิจาก LDAP เอา ซึ่งยิ่งใหญ่เกินไป

วันนี้กลับไปหาอีกทีก็พบทางสว่าง เมื่อมีบล็อกเขียนถึงเรื่องนี้เอาไว้แล้ว โดยหลักๆ แล้วทางออกที่ดีสำหรับเรื่องนี้คือการใช้ libpam-smbpass ที่มีไลบราลี pam_smbpass.so ที่สามารถเอาไปดักรหัสผ่านตอนเปลี่ยนรหัส และสร้าง Samba Account ให้หากไม่มีอยู่ก่อนหน้าได้ทันที

ในบล็อกที่พูดถึงเค้าเขียนถึง Debian Etch แต่ใน Gutsy ก็ใช้งานได้ไม่ต่างกันมาก

งานต่อไปจะหาทางแก้ MySQL ให้ทำได้เหมือนกัน