ComBioLaw.De » Blog » เขียนโปรแกรม

การเขียนโมดูลสำหรับ Python ด้วย Pyrex และ F2Py บน Windows

imageช่วงนี้จะเห็นได้ว่า BioLawCom.De ไม่ค่อยมีผลงานเป็นชิ้นเป็นอัน สาเหตุนั้นคือหล่มปลักแห่งภาระหน้าที่ ที่พวกผมทั้งสามคนต้องควบคุมตัวเอง ให้หันมาสนใจเรื่องการเรียนบ้าง หลังจากปล่อยปละละเลยมาพอสมควร :P อีกทั้งคอมพิวเตอร์คุณเช ฯ ก็เสีย ที่ทำงานผมใช้อินเตอร์เนตไม่ได้ ทำให้พวกผมรู้ว่า ปัจจุบันพวกเราเอาอิสรภาพของตนเอง ไปผูกติดกับเทคโนโลยีมากมายเพียงใด ส่วนเฮียชาร์ ก็ได้รับหน้าที่จากท่านปรมาจารย์เพิ่มเติม ในการดูแลห้องทดลอง และสอนนักศึกษา ผลเลยเป็นอย่างที่เห็น

วันนี้เลยเอาเรื่องเก่ามาเล่าใหม่ นั่นก็คือ การเขียนโมดูลสำหรับ Python ด้วย Pyrex และ F2Py ซึ่งผมเคยเขียนไปแล้วใน เพิ่มความเร็วให้ Python ตอน 1 , ตอน 2 และ ตอน 3 แต่วิธีการต่าง ๆ ที่ผมเขียนในทั้งสามตอนนั้น ผมได้ทดลองใช้บนระบบปฏิบัติการ GNU/Linux เท่านั้น แต่ไม่เคยประสบความสำเร็จในการทดลองใช้บน Windows เลย ปัญหาที่ผมพบคือ ไม่มีคอมไพล์เลอร์ที่เหมาะสม ในการคอมไพล์โมดูล จริง ๆ บน Windows มีคอมไพล์เลอร์ ให้เลือกใช้งานมากมาย แต่ปัญหามีอยู่ว่า คอมไพล์เลอร์ส่วนใหญ่ ไม่ฟรี หรือหยุดพัฒนาไปนานแล้ว คอมไพเลอร์ที่น่าสนใจที่สุดก็เห็นจะเป็น MinGW แต่เนื่องจากผมยังใช้ MinGW ไม่คล่อง และผมไม่เข้าใจ Command Line ของ Windows XP เท่าไร (เพิ่งรู้เหมือนกันว่ามันต่างกับ DOS ที่ผมรู้จักพอสมควร) ทำให้ผมไม่เคยประสบความสำเร็จในการคอมไพล์ Pyrex กับ F2Py บน Windows เลย

แต่เมื่อสถานการณ์มันบีบบังคับ ก็คงไม่มีอะไรยากเกินไป :P ....

เขียนโปรแกรม เขียนโปรแกรม

19 Aug 07 | by bow_der_kleine | tags เขียนโปรแกรม Python Pyrex F2Py Windows CygWin NumPy

read 2493 comments 0 read more

โจทย์การเขียนโปรแกรมที่เปลี่ยนไป

image พอดีได้อ่านเรื่อง State of Drupal ที่ mk เขียน จริง ๆ ในบล็อกของ mk มีวิดีโอของ Dries ให้ดูด้วย ( Dries เป็นคนก่อตั้ง และผู้พัฒนาหลัก Drupal ) แต่เนื่องจากทักษะการฟังภาษาอังกฤษของผมเข้าใกล้ศูนย์ เลยเข้าไปอ่านบทความผ่านลิงก์ที่ mk เขียนถึง จึงพอเข้าใจเพิ่มขึ้นมาบ้าง โดยเฉพาะอย่างยิ่ง The Ockham's Razor Principle of Content Management Systems เป็นอะไรที่เปิดหูเปิดตามาก แม้ว่าบทความนี้จะเขียนเฉพาะเจาะจงโปรแกรม CMS แต่ผมคิดว่า น่าจะเอาไปปรับใช้ได้กับโปรแกรมทุกประเภทเลยก็ว่าได้

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

แม้ว่าหลักการนี้ ไม่ได้เป็นหลักการที่ใหม่อะไร โดยเฉพาะ การเพิ่ม usability ลด features ก็ไปพ้องกับหลัก Just work ของ Apple เนื่องจากผมไม่มีเครื่อง Apple ให้ใช้งาน ผมเลยบอกไม่ได้ว่าโปรแกรมแบบ Just work ของ Apple มันเวิร์คจริง ๆ หรือเปล่า แต่ Just work ของ Gnome ซึ่งไปลอก Apple มานั้น สำหรับผมแล้ว มันไม่ค่อยเวิร์ค เพราะสิ่งที่ขาดไปคือความยืดหยุ่น โปรแกรมที่มีให้ใช้ ได้ถูกพิพากษามาเรียบร้อยแล้ว ว่าคนใช้ต้องการอะไร ไม่ต้องการอะไร ความสามารถบางอย่างที่โปรแกรมมีอยู่ ถูกซ่อนลึกจนเข้าไม่ถึง ดังนั้น Just work เพียงอย่างเดียวคงไม่พอ มันต้องยืดหยุ่นด้วย

หรือในทางกลับกัน ...

ไอที ไอที

28 Jul 07 | by bow_der_kleine | tags ไอที เขียนโปรแกรม Joomla Wordpress Drupal CMS Usability Flexibility Extensibility

read 2812 comments 8 read more

Simulation : หวยใต้ดิน vs ไฮโล

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

มีโจทย์หนึ่งข้อ ที่ยากมาก ๆ แม้แต่ Prof. เองก็ยอมแพ้ แต่ก็ไม่ได้ออกมาเป็นข้อสอบ เพื่อแกล้งเด็ก นั่นก็คือ ต้องซื้อ Lotto (หวยเยอรมัน) อย่างน้อยเท่าไร และซื้ออย่างไรถึงจะถูกรางวัล หากวิธีการเล่น Lotto ง่ายเหมือนหวยบ้านเรา โจทย์ข้อนี้คงขาดความท้าทาย แต่ให้ตายเหอะ หวยเยอรมันมันซับซ้อนมากมาย จนวันนี้ผมก็ยังงง ๆ อยู่ว่ามันเล่นยังไง เลยกลายเป็นว่าโจทย์ข้อนี้จึงเป็นโจทย์คลาสสิก สำหรับวิชา combinatorics ไป

ปกติแล้ว เวลาจะดูว่าการพนันแบบไหน น่าเล่นกว่ากัน จะไม่ได้ดูแค่ความน่าจะเป็นอย่างเดียว ต้องดูค่า expectation ด้วย เวลาคำนวนก็ยากน่าดู เพราะเราไม่รู้ว่า PDF (probability density function) ของการพนันนั้น ๆ เป็นอย่างไร ด้วยความที่ผมเป็นวิศกรผู้ขี้เกียจ เลยใช้วิธี simulation เอา โดยผมได้นำการพนัน ที่นิยมเล่นที่สุดของคนไทยสองอย่าง นำมาเปรียบเทียบกัน นั่นก็คือ หวยใต้ดิน กับ ไฮโล ซึ่งผลการ Simulation เป็นดังนี้ ...

เขียนโปรแกรม เขียนโปรแกรม

23 Jul 07 | by bow_der_kleine | tags เขียนโปรแกรม Python การพนัน หวยใต้ดิน ไฮโล

read 7274 comments 10 read more

Data interpolation with SciPy

image บลอกนี้บอกได้เลยครับว่า Nerd & Geek สุด ๆ เพราะเอาเรื่องที่ทำงานอยู่มาเขียน หากเจอคนที่สนใจเรื่องนี้อยู่พอดี คงเป็นเรื่องบังเอิญมาก ๆ เพราะลำพังคนใช้ Python ก็น้อยเต็มที คนใช้ NumPy + SciPy ยิ่งมีน้อยเข้าไปใหญ่ หรือคนที่สนใจเรื่อง Interpolation จำนวนก็ไม่น่าตื่นเต้นไปกว่ากันสักเท่าไร พอเอาคนสองกลุ่มมา Intersect กัน อาจเข้าใกล้เซทว่างเลยก็ว่าได้ (ใครไม่ยากอ่านเรื่องคณิตศาสตร์กับการเขียนโปรแกรม สามารถข้ามไปอ่าน Analogy of Interpolation to our Social-Structure ได้)

Interpolation นั้นเป็นศาสตร์ และศิลป์ทางคณิตศาสตร์ที่น่าสนใจมากอย่างนึงครับ และสามารถนำไปใช้ประโยชน์ได้มากมาย ไม่ว่าจะเป็นเรื่องของ Signal-Processing, Image-Processing, 3D-Animation, การทำนายค่าบางอย่างล่วงหน้า โดยใช้ข้อมูลที่มีอยู่ เป็นต้น ซึ่งผมเองก็ต้องเรียนในมหาวิทยาลัย แต่เนื่องจาก Prof. ที่สอน สอนได้ขำมาก ๆ เลยฟังโจ้กที่แกเล่าจนลืมเรื่องเรียน เนื้อหาที่ผมจะเขียนเกี่ยวกับ Interpolation จึงขาด ๆ แต่ไม่ค่อยเกินไปบ้าง ก็ขออภัยครับ

หัวใจสำคัญของ Interpolation คือ การทำข้อมูลที่เป็น discrete (ข้อมูลเฉพาะจุด) ให้เป็นข้อมูลที่ continue (ข้อมูลต่อเนื่อง) โดยการหาฟังก์ชั่นที่มีคุณสมบัติคล้ายกับข้อมูลที่เรามีอยู่ให้มากที่สุด

Interpolation ในวิชาคณิตศาสตร์นั้น มีด้วยกันมากมายหลายวิธี แต่ที่นิยมที่สุด เห็นจะเป็น Polynom-Interpolation และ Spline-Interpolation ...

เขียนโปรแกรม เขียนโปรแกรม

08 Jul 07 | by bow_der_kleine | tags เขียนโปรแกรม Python Scipy Mathematic Data-Interpolation Signal-Processing Image-Processing

read 6495 comments 10 read more

OpenOffice Document Convertor Interface for Python

image แม้ว่าในช่วงนี้สงครามเรื่องฟอร์แมตเอกสารระหว่าง ODF ของ OASIS กับ OpenXML ของไมโครซอพท์ จะลดความเร่าร้อนลงไปมาก โดยที่ไม่มีผู้ชนะอย่างชัดเจนนัก รัฐบาลหัวก้าวหน้าของหลาย ๆ ประเทศ หลาย ๆ รัฐ หันมาสนับสนุน และใช้งาน ODF อย่างจริงจัง เนื่องด้วยเห็นความสำคัญ และจำเป็นในการใช้ฟอร์แมตเอกสารแบบเปิด ในขณะที่หลาย ๆ องค์กรทั้งภาครัฐ และเอกชน ยังคงใช้งานฟอร์แมตเอกสารแบบ Quasi-Standard ของทางไมโครซอพท์ต่อไป จะด้วยเหตุผลเรื่องของความไม่พร้อมของโปรแกรมที่ใช้ ODF ความกังวลเรื่องความเข้ากันได้ของเอกสารเดิม หรือที่พบเห็นมากที่สุดเห็นจะเป็นเรื่องของการขาดความรู้ความเข้าใจ เรื่องของมาตรฐานแบบเปิด

ด้วยเหตุดังนี้ พวกเราจึงอยู่ในยุคที่มีความหลากหลายทางฟอร์แมตเอกสารสูง (แต่จริง ๆ คนส่วนใหญ่ของประเทศไทย คงไม่คิดเช่นนี้ เพราะเข้าใจว่า หากเป็นเอกสารก็ต้อง .doc !!! โปรแกรมเขียนเอกสารมีอยู่โปรแกรมเดียวคือ Word ซึ่งหาซื้อได้ตามแผงลอยราคาหนึ่งร้อยบาท ;-P ) ที่นำพาความปวดหัวมาให้คนใช้งานอย่างมาก โดยเฉพาะอย่างยิ่ง คนที่ใช้ ODF เป็นฟอร์แมตเอกสารหลัก เพราะยังเป็นคนส่วนน้อยของสังคมอยู่ จึงต้องรับหน้าที่แปลงฟอร์แมตเอกสาร ด้วยภาวะจำยอม

อันที่จริงตัวโปรแกรม OpenOffice.org ก็มีเครื่องมือแปลงฟอร์แมตเอกสารที่ดีมาก ๆ ให้อยู่แล้ว แต่...

เขียนโปรแกรม เขียนโปรแกรม

12 Jun 07 | by bow_der_kleine | tags เขียนโปรแกรม ไอที Python ODF OpenOffice UNO

read 3221 comments 3 read more

Search

Navigation

รวมลิงก์น่าสนใจ

ความเคลื่อนไหว

Login

name password

ลืมรหัสผ่าน