May 29th, 2010
ปัญหาเริ่มต้นที่ว่า ผมใช้ Zend Framework อยู่ตอนนี้ แต่ด้วยฐานข้อมูลที่มันไม่นิ่ง และกำลังมองเรื่องปริมาณการใช้งานที่เห็นว่างานนี้ถ้าเกิด มีผู้ใช้เยอะแน่ๆ ปัญหาหนึ่งที่เห็นว่ามันยังเป็นคอขวดในโปรเจ็คก็เรื่อง transaction ของฐานข้อมูล ซึ่งตอนแรกเขียน Class Map กับตารางปวดหัวมากที่เดียว เพราะอย่างหนึ่งที่ต้องยอมรับก็เพราะไม่ได้เป็นคนออกแบบเองแล้วเอกสารประกอบให้มาน้อยมาก ได้แก่ Data Dictionary ที่หยาบเอามากๆ และ ER Diagram ที่ต้องมานั่งเล็งเอาจากภาพหน้าจอโปรแกรมออกแบบ ER Diagram อีกที อย่างสุดท้ายก็คือในการใช้งานจริง ต้องเอาไปใช้ร่วมกับ Oracle อันนี้ต้องบอกว่าเป็นที่ผมเองที่ไม่เคยลองเล่นกับ Oracle มาก่อนเลยค่อนข้างจะเป็นปัญหา
สุดท้ายเลยตัดสินใจมองหา ORM (Object-Relational Mapping) มาช่วยงานดีกว่า เพราะอย่างที่เห็นได้ชัดคือ ORM มันทำงาน On top พวกฐานข้อมูลอีกที ไอ้เรื่องการจะเปลี่ยนจาก MySQL ที่ลองอยู่ไปเป็น PostgreSQL หรือ Oracle คงไม่ใช่ปัญหาใหญ่เท่าไหร่นัก อย่างมากก็แก้ที่ตัว ORM เท่านั้น แต่ก่อนอื่นต้องบอกกว่า Zend_Db ของ Zend ก็เก่งใช้ได้นะครับ แต่ข้อเสียคือถ้าต้องมา Optimize ให้เข้ากับฐานข้อมูลก็ใช้พลังงานเยอะเหมือนกัน เรียกได้ว่าถ้าต้องจบงานด้วยระยะเวลาขนาดที่เป็นอยู่คงถึงขั้นธาตุไฟเข้าแทรกอ้วกเป็นเลือดกันแน่นอน
เท่าที่ลองหาข้อมูลดู ก็มี Doctrine นี่ล่ะครับให้ PHP Developer ได้ใช้กัน แอบดีใจเล็กๆ ที่ฝั่ง PHP ก็มี ORM ใช้แล้ว ผมเองเลือกใช้ 1.2 ครับ เพราะยังมีเอกสารให้อ่านอยู่ แต่ขณะที่เขียนนี้ Doctrine มีเวอร์ชั่น 2.0 เป็น beta release ให้ลองใช้งานกันเรียบร้อยแล้ว ทำงานบน PHP 5.3 เท่านั้น!
ในอนาคตอันใกล้ๆ มีแผนว่าจะเขียนเรื่องการใช้งาน Doctrine 1.2 กับ Zend Framework 1.10 ลง blog เหมือนกัน แต่ช่วงนี้ขอเผางานนี้ให้เสร็จก่อนนะครับ แรกๆ คงเป็นการรวบยอดจากใน ZendCasts มาก่อน จากนั้นค่อยเปลี่ยนจาก Doctrine 1.2 เป็น Docctrine 2.0 กับ Zend Framework เวอร์ชั่นขณะที่เขียน ซึ่งเท่าที่ตามอ่านในรายการพัฒนาของ Zend Framwork แล้วก็แอบใจชื้นขึ้นมาอีกนิด เพราะทาง Zend Framework เองก็มีแผนที่จะพัฒนาให้สามารถเรียกใช้ Doctrine ได้ง่ายขึ้นกว่าในปัจจุบัน แต่ถ้าใครใช้ Symfony อยู่ว่าคงคุ้นเคยกับ Dcotrine นี่แล้วเพราะเท่าที่อ่านดู Symphony สามารถใช้ command line สร้างโปรเจ็คที่ทำงานกับ Doctrine ได้นานแล้ว
สุดท้ายถ้าใครต้องการเล่นกับ Doctrine และ Zend Framework ก็ลองนัั่งฟังได้ที่ www.zendcasts.com ครับ
Doctrine, Zend Framework, Zendcasts
Posted in Update | Tags: Doctrine, PHP, Update, Zend Framework | View Comments
April 17th, 2010
PHPUnit เป็น Unit Test Framework สำหรับ PHP ใครใช้ JUnit มาแล้วก็อารมณ์เดียวกัน แค่เปลี่ยนจาก Java มาเป็น PHP
ก่อนอื่น ผมติดตั้งใน Mac OS X วิธีคงไม่ต่างกันมากนักกับ Linux แต่สำหรับ Windows อันนี้ไม่แน่ใจครับ เพราะเลิกใช้นานแล้ว
วิธีการติดตั้ง
- ให้แน่ใจว่าใช้คำสั่ง php ที่ terminal ได้
- PHPUnit ต้องการ pear ด้วย สำหรับใครที่ใช้ Windows ก็ต้องโหลดมาเพิ่ม ได้ที่ pear.php.net ส่วน Linux และ OS X ไม่ต้องเพราะมีแล้ว
- โหลด PHPUnit จาก pear.phpunit.de/get เลือกเอาตามชอบครับ ผมเลือกเป็น PHPUnit-3.4.9
- ไฟล์ที่ได้จะเป็นไฟล์ PHPUnit-x.x.x.tgz ใช้คำสั่งด้านล่างเพื่อแตกไฟล์ออก
tar xzf PHPUnit-x.x.x.tgz
จะได้โฟล์เดอร์ PHPUnit-x.x.x
- ในโฟล์เดอร์ PHPUnit-x.x.x จะมีไฟล์ phpunit.php คือไฟล์ที่เราต้องการ เปลี่ยน phpunit.php -> phpunit ก็ได้ไม่มีปัญหา
- ในไฟล์ phpunit.php บรรทัดที่ 43 เพื่อใช้ได้แน่นอนให้เปลี่ยน
dirname(__FILE__) เป็น '/path/to/PHPUnit-x.x.x'
- และเพื่อให้ใช้คำสั่งจากที่ไหนก็ได้ ก็แก้ไขค่าใน .profile นิดหน่อย
# vi ~/.profile
...
export PHPUNIT_HOME=/path/to/PHPUnit-x.x.x
export PATH=$PHPUNIT_HOME:$PATH
:wq
# source ~/.profile
- ลองเขียนโปรแกรมเล็กๆ ทดสอบดู
<?php
# StackTest.php
require_once 'PHPUnit/Framework.php';
class StackTest extends PHPUnit_Framework_TestCase
{
public function testPushAndPop()
{
$stack = array();
$this->assertEquals(0, count($stack));
}
}
- จะได้ผลลัพธ์ดังนี้ ถือว่าสำเร็จใช้ได้

PHPUnit
ข้อมูลเพิ่มเติม: PHPUnit Book [PDF]
Posted in Diary, Introduction | Tags: Tutorail | View Comments
March 31st, 2010
ช่วงนี้เกิดอาการกระแดะเบื่อ Nokia 5800 ซะงั้น เพราะนิ้วใหญ่ จอเล็กเลยจิ้มลำบากมั้ง ตอนนี้เลยซื้อ Spica มาแล้ว อยากเอามาเขียนโปรแกรมเต็มแก่ แต่ไม่รู้ว่าจะมีความอยากได้นานเท่าไหร่
แต่เรื่องแรกที่เซ็งคือเครื่องที่ได้มาลำโพงดันแหลมพร่าซะงั้น (ออกแนวลำโพงแตก) ตอนนี้อัพเป็น 2.1 แล้วซะด้วย เหลือแค่ดาวน์เกรดเป็น 1.5 เหมือนเดิม แล้วค่อยเอาไปทะเลาะกับศูนย์ซัมซุงให้ช่างออกใบรับรองให้ก่อนว่าลำโพงมันเจ๊งจริงๆ เราไม่ได้อุบอิ๊บคิดไปเองว่ามันเสียงแตก จากนั้นค่อยเอาไปเปลี่ยนที่ร้านเพราะโชคดีที่ว่ามันยังอยู่ในระยะเวลาประกัน 7 วัน (เป็นขึ้นตอนมาตรฐานที่ call center ของ samsung บอกมาอีกที) วันศุกร์คงได้เอาไปเปลี่ยน
ถ้าเปลี่ยนไม่ได้คงเห็นข่าวร้าน J-Mart ที่ฟิวเจอร์รังสิตไฟไหม้แน่นอน
Posted in Projects | View Comments