เรื่องของ PEAR

PEAR ย่อมาจาก PHP Extension and Application Repository เป็นที่เก็บรวบรวม component ของ PHP ที่ใช้กันบ่อยๆ และมีประโยชน์ ซึ่งผมได้นำมาลองใช้งานแล้วก็ช่วยให้เขียนโปรแกรมได้สะดวกและรวดเร็วขึ้นมากๆ เลย คิดว่าคงจะหยิบขึ้นมาเขียนสักวัน

บทความแนะนำเกี่ยวกับ PEAR

Getting Started with PEAR – PHP’s Low Hanging Fruit
PEAR Website
ฟังก์ชันที่ผมใช้งานอยู่ในตอนนี้

Date()
ใช้หาวันและเวลาปัจจุบันในรูปแบบต่างๆ
$date->getDate( $format_constant = DATE_FORMAT_ISO )
(รายละเอียดการใช้งาน http://www.modem-help.co.uk/help/diary20040326.html)

Text_Password()
ใช้สำหรับสร้าง password ขึ้นมาในรูปแบบต่างๆ
http://pear.php.net/manual/en/package.text.text-password.php

Offsite DNS Server

ผมทำการเพิ่ม dns server ของที่ทำงานอีกตัวโดยให้อยู่คนละ network เพื่อช่วยเพิ่มความมั่นคงให้กับระบบเครือข่าย ผมดำเนินการทุกอย่างให้เรียบร้อยตั้งแต่ติดตั้ง bind และ config ให้เป็น slave ทดสอบและตรวจสอบข้อมูลทุกอย่าง จากนั้นจึงแจ้งไปที่ admin เพื่อให้เขาทำการเพิ่ม NS Record ให้กับ dns ตัวใหม่

สมมติว่าซับโดเมนของที่ทำงานผมคือ XYZ (ตัวอย่าง address ก็คือ www.XYZ.abc.ac.th)
DNS ของผมก็จะรับผิดชอบ อะไรก็ตามที่อยู่ภายใต้ XYZ.abc.ac.th

ผมต้องแจ้ง admin ที่ดูแล abc.ac.th เพื่อให้เขาเพิ่ม NS Record ของ XYZ อีกอัน
XYZ IN NS ns.newserver.com

จริงๆ ทำแค่ 5 นาทีก็น่าจะเสร็จ แต่เกิดความเข้าใจผิดของ admin ทำให้ต้องส่ง email โต้ตอบกัน 3-4 ฉบับ ฉบับสุดท้ายเขาไม่ตอบผม คาดว่าคงเกิดอาการเคืองอยู่บ้าง แต่ในที่สุดแล้วเขาก็ดำเนินการให้
ถ้ามี email โต้ตอบกันมากกว่านี้คงทำให้สถานะการณ์แย่ลงไปอีก

ผมพบว่ามีอยู่ 3 เว็บไซท์เจ๋งๆ ที่สามารถใช้ตรวจสอบการทำงานของ dns server ได้คือ

http://www.dnsreport.com/
http://www.dnsstuff.com/
http://www.squish.net/dnscheck/

เว็บไซต์ทั้ง 3 อันนี้ให้ขอมูลค่อนข้างเยอะ และยังสามารถตรวจสอบและให้คำแนะนำได้ว่าการตั้งค่าต่างๆ ถูกต้องเหมาะสมอย่างไร

ไดอารี่.th

วันนี้ผมได้โดเมนภาษาไทยสำหรับ diary.in.th คือ ไดอารี่.th

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

ระบบชื่อโดเมน (dns: domain name systems) เดิมรองรับเฉพาะโดเมนที่เป็นภาษาอังกฤษ เพื่อให้สามารถใช้งานในภาษาอื่นๆ ได้ เช่น ภาษาไทย.com จึงต้องมีการปรับปรุงระบบ dns ใหม่ให้รองรับภาษาอื่นๆ ได้ด้วยเป็น internationalized domain names ซึ่งปัจจุบันรองรับได้หลายภาษาแล้ว แต่ว่าก็ไม่ประกาศใช้ออกมาเสียที THNIC ก็เลยตัดหน้าประกาศใช้ไปก่อนเลย

เจ้าโดเมน ไดอารี่.th ของผมจริงๆ ก็ยังคงเป็นภาษาอังกฤษนะแหละครับ มีอีกชื่อหนึ่งก็คือ “xn--l3c4a3auq9f7a.th” นั่นเอง ปัจจุบันตอนนี้ THNIC ใช้วิธีการของ frame forward คือเป็น frame มาครอบเว็บตัวจริงอีกทีครับ

นี่เป็นรายชื่อโปรแกรมที่สนับสนุนการใช้งานชื่อโดเมนภาษาไทย (ผมลอกมาจาก THNIC อีกที)

เว็บเบราเซอร์ที่สามารถใช้งานชื่อโดเมนภาษาไทยได้ทันที

Mozilla ตั้งแต่รุ่น 1.4 ขึ้นไป (Windows/MacOS/Linux/etc.)
ดาวน์โหลดได้ที่ http://www.mozilla.org/download.html

Netscape ตั้งแต่รุ่น 7.1 ขึ้นไป (Windows/MacOS/Linux/etc.)
ดาวน์โหลดได้ที่ http://channels.netscape.com/ns/browsers/download.jsp

Opera ตั้งแต่รุ่น 7.2 ขึ้นไป (Windows/MacOS/Linux/etc.)
ดาวน์โหลดได้ที่ http://www.opera.com/download/

Safari ตั้งแต่รุ่น 1.2 ขึ้นไป (MacOS)
ดาวน์โหลดได้ที่ http://www.apple.com/safari/download/

Konqueror ตั้งแต่รุ่น 3.2 ขึ้นไป (Linux)
ดูรายละเอียดการติดตั้งที่ http://konqueror.kde.org/download/

เว็บเบราเซอร์ที่สามารถใช้งานชื่อโดเมนภาษาไทยได้เมื่อลงโปรแกรมเสริม (plug-in)

Internet Explorer ตั้งแต่รุ่น 5.0 ขึ้นไป (Windows)
ดาวน์โหลดได้ที่ http://www.microsoft.com/windows/ie/downloads/default.mspx
และดาวน์โหลดโปรแกรม i-Nav plug-in จากเว็บไซต์ http://www.idnnow.com/index.jsp

Google ถูกไวรัสใช้เป็นเครื่องมือ

ไม่ใช่ google ที่เดียวนะแต่ยังมี Yahoo AltaVista และ Lycos ที่โดนเจ้าไวรัส MyDoom.M และ MyDoom.O เจ้าไวรัสตัวนี้ใช้ search engine ให้เป็นประโยชน์ในการค้นหา email ของผู้ที่มันจะกระจายตัวเองต่อไป โดยใช้โดเมนของผู้ส่งเองเป็นคีย์เวิร์ด คนที่เขียนไวรัสคงเชื่อว่าหากผู้ที่รับ email ได้รับ email จากผู้ส่งที่อยู่ภายใต้โดเมนเดียวกันก็จะทำให้ไวรัสกระจายตัวเองได้ดีขึ้น ซึ่งก็มีผู้เห็นด้วยว่าน่าจะทำให้กระจายตัวได้เร็วจริงๆ แต่เจ้า MyDoom พันธุ์ใหม่นี้แพร่ระบาดได้แค่วันเดียวก็โดนปราบโดยโปรแกรมป้องกันไวรัสต่างๆ

ข้อสังเกตอย่างหนึ่งคือเจ้า MyDoom ตัวนี้ไม่ได้เกิดมาเพื่อเล่นงาน SCO เหมือนบรรพบุรุษของมันที่เล่นงาน SCO ด้วยวิธีการโจมตีแบบ DDOS

Custom Error Pages with PHP and Apache

Using PHP and Apache, you can turn your “Page Not Found” messages into more than bland error reports. You can serve an alternate page based on the name of the page that was not found, create a page on the fly from a database, or send an email about the missing page to a webmaster.

จะดีแค่ไหนถ้าเราสามารถเปลี่ยนข้อความ “Page Not Found” ที่ปรากฎเวลาคนเรียกดูไฟล์เว็บที่ไม่มีอยู่จริงให้เป็นอย่างอื่น?

PHP5 ออกมาแล้ว

PHP 5.0.0 Released! php.net ปล่อย PHP5 final release ออกมาวันที่ 13 ก.ค. ที่ผ่านมา Adam Trachtehberg ซึ่งเป็นหนึ่งในผู้แต่งหนังสือ PHP Cookbook ได้เขียนบทความเกี่ยวกับ PHP5 ไว้ที่นี่

Why PHP 5 Rocks! by Adam Trachtenberg — Adam Trachtenberg provides a quick tour around PHP 5, highlighting seven of his favorite new features. These features (including better support for OOP, bundled SQLite, iterators, and more cool stuff) will allow your PHP 5 code to be more concise, more elegant, and more flexible than ever. Adam is the author of the upcoming Upgrading to PHP 5.

ในขณะเดียวกันเดือนนี้หนังสือใหม่ของเขาชื่อ Upgrading to PHP 5 ก็จะวางแผนในเดือนก.ค.นี้ด้วย

รออีกสักพัก ผมก็คงจะทดลองใช้ PHP5 เช่นกัน ว่าแต่จะอดใจไหวมั๊ยน้อออ

Journal vs Weblog

Journal ก็คือ diary คนไทยมักจะคุ้นเคยกับคำว่า diary มากกว่า

Blog มีที่มาจาก weblog (web+log) ไปๆ มาก็กลายเป็นมาจาก we blog แล้วก็เรียกกันสั้นๆ กันว่า blog ซึ่งก็ดีเหมือนกัน เพราะพูดถึง web log ทีไรแล้วผมจะนึกถึง access_log ของ apache ทุกที

journal ต่างกับ diary ตรงไหนนั้น มีฝรั่งคนหนึ่งเขียนความแตกต่างของทั้ง 2 อย่างนี้ไว้ได้ดีเลย เข้าไปอ่านได้ที่
http://mookieriffic.mu.nu/archives/009934.html

ความเห็นของผมก็คือ มันก็ครือๆ กันนั่นแหละนะ แล้วแต่คนทำเว็บว่าจะทำมันออกมาเป็นรูปแบบไหน หนังสือเกี่ยวกับการสร้าง blog ภาษาอังกฤษก็มีเยอะพอสมควร สำหรับภาษาไทยผมเห็นของ provision อยู่เล่มเดียว เปิดดูแล้วก็ใช้ได้เหมือนกัน

ชี้เว็บเซอร์วิสภาครัฐมาตรฐานต้องรอเกิน 1 ปี

นายอาศิส อัญญะโพธิ์ ผู้จัดการส่วนวิจัยและพัฒนาการแลกเปลี่ยนข้อมูลและบริการภาครัฐ สำนักบริการเทคโนโลยีสารสนเทศภาครัฐหรือสบทร. ซึ่งเป็นหน่วยงานที่ให้บริการเครือข่าย สารสนเทศภาครัฐและ สนับสนุนการทำงานด้านเทคโนโลยีสารสนเทศของหน่วยงานภาครัฐ กล่าวระหว่างการสัมมนา “e-Government Revolution: สู่ยุคการปฏิวัติรัฐบาล อิเล็กทรอนิกส์” เมื่อเร็วๆนี้ ว่า หน่วยงานภาครัฐควรนำเทคโนโลยีเว็บเซอร์วิส มาใช้ในการทำงาน เพราะจะช่วยลดปัญหาการเปลี่ยนแปลงระบบงานเก่า ปัญหาการทำงานซ้ำซ้อนและขั้นตอนในการทำงาน พร้อมทั้งควรนำระบบแลกเปลี่ยนข้อมูล ผ่านเว็บเซอร์วิส มาให้บริการเพื่อช่วยให้ผู้ที่มาติดต่อ ที่ต้องใช่ข้อมูลเหมือนๆ กัน แต่อยู่คนละหน่วยงานมีความสะดวกและใช้เวลาน้อยลงด้วย

“ตัวอย่าง เช่น ถ้าต้องการขอเป็นผู้นำเข้า-ส่งออกสินค้าควบคุมและวัตถุอันตรายจำพวก สารคาเฟอีน การดำเนินการแต่ละครั้งต้องติดต่อทั้งกรมการค้าต่างประเทศ กรมศุลกากร กรมการค้าภายใน สำนักงานอาหารและยาและกรมโรงงานอุตสาหกรรม เป็นต้น ดังนั้น หากนำเทคโนโลยีเว็บเซอร์วิสมาให้บริการ ผู้ประกอบการก็จะสามารถทำทุกอย่าง เพียงครั้งเดียวและ ข้อมูลทั้งหมดจะถูกเชื่อมต่อไปยังทุกหน่วยงาน ช่วยลดขั้นตอนและความซ้ำซ้อนในการดำเนินการ นอกจากนั้นยังเกิดความสะดวก ทั้งหน่วยงานภาครัฐเองและประชาชนผู้มาใช้บริการด้วย” นายอาศิส กล่าว

นายอาศิส กล่าวต่อว่า สำหรับเทคโนโลยีการแลกเปลี่ยนข้อมูลระหว่างหน่วยงาน ต้องประกอบด้วย การเชื่อมโยงเว็บเซอร์วิสของแต่ละหน่วยงานผ่านเครือข่ายอินเทอร์เน็ต การใช้มาตรฐานกลาง(XML) ในการกำหนดรูปแบบของข้อมูล การใช้ HTTPS ในการเข้ารหัสข้อมูลและการใช้ PKI ในการยืนยันตัวบุคคลผู้ใช้ข้อมูล ดังนั้นคาดว่ากว่าหน่วยงานภาครัฐของไทยทุกหน่วยงาน จะดำเนินการเพื่อให้เว็บเซอร์วิสเป็น ไปตามมาตรฐานเดียวกันตามที่กล่าวคงต้องใช้เวลามากกว่า 1 ปี

ที่มา: Thairath

PHP5 กับ MySQL bug?

หลังจากที่ผมได้ทำการติดตั้ง Apache 2.0.50 กับ PHP5 ไปแล้ว ทุกอย่างก็เหมือนจะทำงานได้ดีจนกระทั่ง ผมจะเพิ่ม extension ของ php_mysql.dll เพื่อให้ PHP สามารถติดต่อกับ MySQL ได้ ปรากฎว่าทำยังไงก็ไม่สามารถเพิ่ม mysql extension ได้ และจะเกิดข้อความ error แบบตัวอย่างข้างล่างนี้แหละ ซึ่งทำให้งง เพราะไฟล์มันก็อยู่ถูกที่แล้ว ลองกี่ทีๆ ก็เหมือนกัน

ข้อความเขียนไว้ว่า
PHP Startup: Unable to load dynamic library ‘d:program filesphpextphp_mysql.dll’ – The specified module could not be found.

เลยลองเข้าไปหาดูในเว็บ พบว่ามีคนโวยวายไว้ที่นี่เหมือนกัน http://bugs.php.net/bug.php?id=29224

ผมลองทำตามที่เขาเขียนไว้ แต่ก็ไม่ได้ผล ก็เลยลองใหม่ สิ่งที่ผมทำก็คือ
1. แก้ไข php.ini ให้เรียก module mysql ด้วยคำสั่ง
extension=php_mysql.dll

2. copy ไฟล์ libmysql.dll ไปไว้ที่ d:/windows/system32/

3. อย่าลืม restart Apache Web Server ใหม่

ปรากฎว่าคราวนี้ได้ผลแฮะ!

แล้วผมก็เจอคำตอบที่ FAQ ของ PHP ที่นี่ เจ้าตัว MySQL client libaries ไม่ได้ถูก bundle มากับ PHP5 นี่เอง นอกจากนี้ยังแนะนำให้ใช้ MySQLi แทนด้วย เพราะเนื่องจากว่าเจ้า MySQL extension ตัวที่มากับ PHP5 นั้นไม่ได้สนับสนุนฟังก์ชันต่างๆ ของ MySQL ในเวอร์ชันที่มากกว่า 4.1.0 ด้วย

งั้นผมลองเปลี่ยนมาใช้ MySQLi ดีกว่า วิธีการก็คือ
1. comment MySQL ซะ ด้วยการเติม ; ไปข้างหน้า
;extension=php_mysql.dll

2. เรียก module MySQLi ด้วยการเพิ่มคำสั่ง
extension=php_mysqli.dll

3. copy ไฟล์ libmysqli.dll ไปไว้ที่ d:/windows/system32/

4. อย่าลืม restart Apache Web Server ใหม่