Archive

Posts Tagged ‘programming’

PHP-PCNTL

May 28th, 2007

ช่วงนี้กำลังพัฒนาระบบให้กับที่ทำงานอย่างที่พูดถึงไปแล้วในหัวข้อก่อน เสร็จแล้วระบบนี้จะต้องสร้าง report ออกมาเป็น PDF ตอนแรกก็พยายามไปค้นๆ เจอ fpdf ซึ่งเป็นไลบรารีสำหรับสร้างเอกสารแบบ PDF โดยใช้ php แต่ลองใช้ดูสักพักก็รู้สึกว่าใช้งานยาก คือจะปรับแต่งให้ได้ดั่งใจค่อนข้างยาก (เผอิญ report ที่ต้องการ ประกอบด้วยตารางเป็นส่วนใหญ่) สุดท้ายเลยกลับมาตายรังโดยใช้ php สร้าง source สำหรับ LaTeX จากนั้นก็ใช้ pdflatex รันก็เสร็จแล้ว

ทีนี้พอทำส่วนประกอบต่างๆ เสร็จ ก็อยากจะทำเท่ห์โดยให้ pdflatex ทำงานแบบพื้นหลัง แล้วค่อยใช้ Ajax มาคอยเช็คดูว่าสร้าง pdf เสร็จหรือยัง ก็จำเป็นต้องสร้าง process ใหม่ขึ้นมาเพื่อเรียก pdflatex มาทำงาน ลองค้นดูก็พบว่า php มีกลุ่มคำสั่ง pcntl (Process Control) สำหรับควบคุม process ต่างๆ ซึ่งในนั่นจะมีคำสั่ง pcntl_fork() เอาไว้สร้าง process ลูก และ pcntl_exec(…) สำหรับกำหนดให้เรียกโปรแกรมมาทำงาน

พอใช้ก็โดนเตือนว่าไม่รู้จักคำสั่งพวกนี้ ลองหาไปหามา ก็มีคนบอกว่าต้อง enable pcntl ก่อน ใน ubuntu ไม่ได้ทำมาให้ สุดท้ายก็เลยไปพยายามสร้าง .deb ขึ้นมาใหม่เพื่อการนี้ แต่ก็ยังใช้ไม่ได้ ลองค้นดูอีกเจอว่า คำสั่งพวกนี้จะใช้ได้เฉพาะเวลาใช้ php แบบ CGI เท่านั้น ไม่สามารถใช้ได้เวลาทำงานเป็น module หนึ่งของ Apache (คิดว่าคงเพราะทำงานเป็นส่วนหนึ่งของ process ของ Apache ถ้ายอมให้ทำได้ ก็อาจจะเกิดปัญหาต่างๆ ได้ ต่างจากแบบ CGI ที่ทำงานอยู่บน process ของ php เอง)

สุดท้ายก็เลยเปลี่ยนใจไม่ใช้แล้ว เพราะดูท่าทางจะยุ่งยาก แล้ว pdflatex มันก็ไม่ได้ทำงานนานเท่าไหร่ เนื่องจากไฟล์ค่อนข้างเล็ก

programming, unix ,

CakePHP

May 14th, 2007

CakePHP เป็น API และ framework สำหรับพัฒนาโปรแกรมบนเว็บ โดยอิงกับรูปแบบ MVC ที่มี Ruby on Rails เป็นผู้นำทาง รู้จัก CakePHP โดยบังเอิญ เนื่องจากจะต้องพัฒนาระบบงานระบบหนึ่งให้กับสถาบันฯ แบบเร่งรัด โดยส่วนตัวก็ชอบแนวคิดของ RoR แต่รู้สึกไม่ค่อยชินกับไวยากรณ์และโครงสร้างของภาษา Ruby สักเท่าไหร่ แม้ว่าจะใช้ Ruby เขียนสคริปต์เป็นหลักตอนเรียนปริญญาเอก แต่ทำยังไงก็ไม่คุ้น หยุดใช้ไปซักหน่อยก็จะลืมหมด จะเขียนใหม่ก็ต้องมานั่งอ่านกันทุกที  เลยลองหาไลบรารีเพิ่มเติมของ PHP ซึ่งใช้ไวยากรณ์คล้ายภาษาซีที่ติดอยู่ในสายเลือดแล้ว หาไปหามาก็เจอ CakePHP ตัวนี้แหละ

ข้อดีของ CakePHP ก็คือ เป็นแค่ library เพิ่มเติม ที่ทำงานร่วมกับ interpreter ของภาษา PHP ทำให้ติดตั้งโปรแกรมหรือระบบได้ง่าย ไม่ต้องการอะไรพิเศษ ดาวน์โหลดมาแล้ว พอระเบิดออกก็จะได้ directory มาหนึ่งอัน ที่เราสามารถเพิ่มโปรแกรมของเราเข้าไปตามโครงสร้างที่วางไว้ และ directory นี้ก็มีลักษณะเช่นเดียวกับระบบที่พัฒนาด้วย PHP แบบเดิม เอาไปวางไว้บน web server แก้ config นิดหน่อยก็ใช้งานได้แล้ว  สะดวกมาก นอกจากนี้ CakePHP ยังเหมาะกับคนที่เข้าใจไวยากรณ์ของ PHP อยู่แล้ว เรียกว่าไม่ต้องปรับตัวมากมาย ก็เข้าใจระบบ และสามารถเขียนโปรแกรมได้ทันที

programming ,

กฎหมายกับโปรแกรม

April 19th, 2007

แม้ว่าคนส่วนใหญ่จะพูดกันว่ารัฐธรรมนูญ พ.ศ. 2540 ที่เพิ่งโดนฉีกไปหมาด เป็นรัฐธรรมนูญที่ดีที่สุดฉบับหนึ่ง แต่ในสายตานักเขียนโปรแกรม ผมรู้สึกว่ารัฐธรรมนูญฉบับนั้นดูแย่มาก ทำไมเหรอ? ก็เพราะเห็นปัญหาต้องตีความอยู่บ่อยๆ (ไม่รู้หรอกว่าบ่อยกว่าฉบับก่อนๆ หรือเปล่า เกิดไม่ทัน แหะๆ) สาเหตุที่เห็นส่วนใหญ่คือการเขียนข้อความที่เฉพาะเจาะจงกับกรณีปกติ ไม่ได้คิดถึงปัญหาที่จะเกิดขึ้นในอนาคต เหมือนกับเขียนโปรแกรมที่รับข้อมูลเข้า โดยไม่มีการตรวจสอบ ตั้งสมมติฐานไว้ก่อนว่าข้อมูลเข้านั้นถูกต้องเสมอ ฉะนั้นเวลาผู้ใช้ใส่ข้อมูลผิดพลาด หรือมีกรณีผิดปกติอะไรเกิดขึ้น โปรแกรมก็ไม่สามารถทำงานต่อไป หรือไม่ก็ทำงานต่อโดยไม่สามารถคาดเดาผลลัพธ์ได้

ถ้าจำไม่ผิดรัฐธรรมนูญฉบับนี้มีปัญหาตั้งแต่การเลือกตั้งส.ว.ครั้งแรกแล้ว ดูเหมือนจะไปกำหนดไว้ว่าต้องมีวุฒิสภาภายในกี่วัน โดยไม่ได้ระบุไว้ว่าถ้าไม่ได้ต้องทำยังไง สุดท้ายก็ต้องมานั่งตีความอีกว่าจะทำยังไงได้บ้าง นอกจากนี้มักจะกำหนดค่าคงที่ต่างๆ เป็นค่าตายตัว โดยไม่ได้คิดว่าถ้าหาค่านั้นไม่ได้แล้วต้องทำยังไง สุดท้ายก็เกิดปัญหา อย่างกรณีสรรหาปปช. ครั้งล่าสุด ที่กำหนดไว้ว่าต้องมีตัวแทนฝ่ายค้านกี่คนหรือกี่พรรคอะไรทำนองนั้น พอไม่ครบขึ้นมาก็เกิดทางตันไปหมด

แต่ยังไงก็แล้วแต่ผมไม่ใช่ผู้เชี่ยวชาญด้านกฎหมาย (ไม่มีความรู้เลยต่างหาก) ผมไม่รู้หรอกว่ากฎหมายที่ดีควรเป็นยังไง แต่โปรแกรมที่ดีควรคำนึงถึงปัญหาต่างๆ ที่อาจจะเกิดขึ้นในทุกกรณี เพื่อให้โปรแกรมทำงานตามที่เราคาดการณ์ไว้ ไม่เกิดเงื่อนไขแปลกๆ แล้วทำให้เกิดทางตัน หรือผลลัพธ์ที่ไม่เป็นไปตามที่ต้องการ

สำหรับโปรแกรมหรือซอฟท์แวร์นั้น เรามีวิชาวิศวกรรมซอฟท์แวร์ ที่พูดถึงวิธีการทดสอบซอฟท์แวร์แบบต่างๆ เพื่อให้เกิดความมั่นใจว่าเราจะได้ซอฟท์แวร์ที่มีคุณภาพ เอ…อย่างนี้เราควรจะต้องมีวิชาวิศวกรรมกฎหมายหรือเปล่า เผื่อว่าเราจะได้กฎหมายที่ดีขึ้น (ในแบบของผม)

programming ,