23 ก.พ. 2552

John Stephen Akhawari : เขาส่งผมมาเพื่อแข่งให้เสร็จ

ในการแข่งขันมาราธอนในกีฬาโอลิมปีที่เม็กซิโก ปี 1968 John Stephen Akhwari จากแทนซาเนีย เดินกะโผลกกะเผลกเข้าเส้นชัยตอนพลบค่ำหลังผู้ชนะเลิศกว่าชั่วโมง ในสภาพที่เต็มไปด้วยเลือดและผ้าพันแผลที่ขา


บรรดาผู้ชมต่างทยอยกลับไปเกือบหมดแล้ว ส่วนที่เหลืออยู่ก็ปรบมือให้กำลังใจนักกีฬาที่เข้าเส้นชัยคนสุดท้ายนี้

หลังการแข่งขันสิ้นสุด ผู้สื่อข่าวถามถึงสาเหตุที่เขาไม่ยอมออกจากการแข่งขันทั้งๆ ที่ไม่มีโอกาสชนะ เขาดูจะสับสนก่อนจะตอบมาว่า
"ประเทศผมไม่ได้ส่งผมมาเพื่อเริ่มการแข่ง เขาส่งผมมาเพื่อแข่งให้เสร็จ"

ที่มา
- มติชนสุดสัปดาห์
- http://en.beijing2008.cn/29/16/article212011629.shtml

Byte Order Mark : BOM

ขณะที่กำลังหัดเขียนสคริปต์ PHP ตามแบบฝึกหัดที่เกี่ยวกับกับฟังก์ชัน session_start() ผมได้กำหนดให้คริปต์ที่เขียนมีการ Endoding แบบ UTF-8 ปรากฎว่ามีความผิดพลาดเกิดขึ้น จึงเริ่มจำกัดขอบเขตของปัญหาโดยตัดสิ่งที่ไม่เกี่ยวข้องออกจนหมด จนเหลือสคริปต์บรรทัดเดียว คือ

session_start();

เมื่อลองรัน PHP ก็ยังพบคำเตือนเหมือนเดิม
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

หลังจากลองอะไรเรื่อยเปื่อยหลายชั่วโมงผมก็ได้คำตอบว่า แฟ้มที่จะถูก Encoding ด้วย UTF-8 อาจจะมีการฝังอักขระตัวหนึ่งทีชื่อ Byte Order Mark (BOM)ไปไว้ตัวแรกสุด เพื่อช่วยบอกรายละเอียดในการ Encoding ทำให้มีปัญหากับบางฟังก์ชัน โดยเฉพาะฟังก์ชันบางตัวที่จะทำงานตามปกติก็ต่อเมือถูกเรียกให้ทำงานเป็นส่วนแรกสุดของสคริปต์


แม้เราจะไม่ได้สั่งให้แทรกอักขระ โปรแกรม Editor ที่เราใช้งานอยู่ก็หวังดีใส่ไปให้ ดังนั้นเราต้องตรวจสอบด้วยว่าสคริปต์ของเราจะไม่มี BOM อยู่ และขอแนะนำข้อมูลที่เกี่ยวกับ BOM สำหรับอ่านเพิ่มเติมดังต่อไปนี้

1. คำอธิบายคร่าวๆ เกี่ยวกับ BOM จากกระทู้ใน paradizex
2. คำอธิบายเกี่ยกับความผิดพลาด cannot modify header ปัญหาที่พบคงจะเป็นกรณีที่ 3 เพราะถือได้ว่า BOM เป็นอักขระ White Space อีกตัวหนึ่ง

19 ก.พ. 2552

Impossible is nothing



คนบางคนฟังตัวเองมากกว่าจะฟังคนอื่น

เราไม่พบคนเหล่านี้บ่อยนัก
แต่ทันที่เราได้พบ

พวกเขาจะช่วยเตือนเราว่า
การที่เราเคยเชื่อว่าสิ่งต่างๆ "ไม่สามารถ"
"ไม่น่าจะเป็น" หรือ "เป็นไปไม่ได้" ไม่มีอยู่จริง

พวกเขาได้แสดงให้เห็นว่า "สิ่งต่างๆ ย่อมเป็นไปได้เสมอ"

5 ก.พ. 2552

ประสบการณ์จากการใช้งาน WAMP Stack

สิ่งจำเป็นอย่างหนึ่งในการพัฒนาเว็บแอพลิเคชันด้วยภาษา PHP คือ โปรแกรมจำลองเว็บเซอร์เวอร์ ซึ่งจะติดตั้งโปรแกรม Apache,ตัวแปลภาษา PHP และระบบฐานข้อมูล MYSQL ลงบนเครื่องเราเพื่อจำลองเป็นเว็บเซอร์เวอร์และเรียกกันทั่วๆ ไปว่า WAMP Stack โดยโปรแกรมเหล่านี้มีอยู่หลายตัว ที่เราคุ้นเคยกันมากๆ ก็คือ Appserve ซึ่งพัฒนาโดยคนไทย

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

1. AppServNetwork
โปรแกรมตัวนี้ต้องรันโปรแกรมติดตั้งเลยไม่ได้ลองใช้ เขียนไว้เผื่อใครจะทักว่าผมข้ามตัวนี้ไปได้อย่างไร

2. Server2go
แรกเมื่อใช้งานนั้น โปรแกรมถูกใจผมเนื่องจากมีส่วนประกอบเท่าที่จำเป็นจริงๆ และก็เคยเขียนบทความแนะนำไว้ด้วย แต่ปัญหาคือเมื่อเราเลิกใช้งาน ฐานข้อมูล MySQL ที่เราเคยสร้างหรือแก้ไขไว้จะหายไปด้วย! ผมเลยต้องหันไปหาตัวอื่น

3.Xampp
โปรแกรมนี้มีลูกเล่นครบเครื่อง ติดตั้งง่าย แต่ปัญหาที่ผมพบคือมันกินทรัพยากรมาก เมื่อรัน MySQL แล้วซีพียู Celeron 2.14 GHz พุ่งปรี๊ดไปเกือบ 100% ทำให้อืดจนทำอะไรไม่ได้ เลยต้องหาตัวใหม่มาลอง

4. The Uniform Server
ตัวนี้แค่ลองๆ ใช้ดู พบว่ายังมีอาการเดียวกับ Xammp คือ ซีพียูทำงานหนักเมื่อรัน MySQL

5. Server2go อีกครั้ง
คราวนี้พยามลองอ่านคู่มือเพิ่มซะหน่อย ทำให้ทราบแนวคิดของ Server2go คร่าวๆ ว่าโปรแกรมนี้ออกแบบสำหรับจำลองเว็บแอพลิเคชันไว้ในซีดีรอม เมื่อเรียกใช้งานจะมีการสำเนาฐานข้อมูล MySQL ที่เก็บไว้ในซีดีไปไว้ในฮาร์ดดิสก์ชั่วคราว ดังนั้นเมื่อเราปรับปรุงฐานข้อมูลจะมีผลกับฐานข้อมูลชั่วคราวในฮาร์ดดิสก์ เมื่อเราเลิกใช้งานฐานข้อมูลชั่วคราวเหล่านี้ก็จะหายไป

สำหรับวิธีเก็บการเปลี่ยนแปลงไว้นั้น เราจะต้องระบุ path ของฐานข้อมูลให้กับโปรแกรม โดยเข้าไปแก้ไขแฟ้ม pms_config.ini ตรงบรรทัดที่มีข้อความ
MirrorFolder=

ให้เพิ่ม full path ชี้ไปที่โฟลเดอร์ย่อย dbdir ดังเช่น
MirrorFolder=D:\server2go\dbdir


เพียงเท่านี้ก็จะเก็บการเปลี่ยนแปลงของฐานข้อมูลไว้ได้

ส่งท้าย
ขณะที่เขียนนี้ก็ใช้งาน Server2go อยู่และไม่แน่ใจว่าจะมีปัญหาอะไรให้แก้ไขหรือเปล่า ผมคิดว่า Wamp ตัวอื่นๆ คงมีวิธีปรับแต่ง MySQL เพื่อแก้ปัญหาทรัพยากรที่เกิดขึ้นได้เพียงแต่ผมไม่ได้เลือกแก้ปัญหาด้วยวิธีนี้ หรือสำหรับบางเครื่องแล้วปัญหานี้อาจจะไม่เกิดขึ้นก็ได้

3 ก.พ. 2552

รวมวิดิโอบรรยากาศจาก โครงการพัฒนาศัยภาพครู ศรช.

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

1. รวมภาพกิจกรรมรุ่นที่หนึ่ง


2. รวมภาพกิจกรรมรุ่นที่ 2 วันแรก


3. รวมภาพกิจกรรมรุ่นที่ 2 วันที่ 2



4. รวมภาพกิจกรรมรุ่นที่ 2 วันที่ 4