บันทึกการย้าย Web Hosting ครั้งยิ่งใหญ่ที่สุดในชีวิต

สองสามวันมานี้อดหลับอดนอนเพราะเรื่องการย้าย Web Hosting นี่แหละครับ ขอจดไว้หน่อยว่าทำอะไรไปบ้าง (ผม admin มือสมัครเล่นครับ)
- ถ้าเว็บมี maintenance mode จงเปิดมันก่อนเลย
- เปลี่ยน NAME SERVER ทันที เพราะบางที DNS มันก็อัพเดทกันช้าเหลือเกิน
- การ load dump ของ MySQL นั้น ถ้าไม่ใหญ่มากก็ใช้ phpMyAdmin ได้ แต่ถ้าใหญ่มากๆควรใข้ BigDump แทน หรือถ้าจะเอาเป็นเรื่องเป็นราวเลยก็ต้อง MySQLDumper
- เรื่องภาษาไทย ที่ไม่ว่า Programmer/Developer รุ่นไหนๆก็ต้องเจอ ฮา…
ถ้า default charset ของ mysql (ซึ่งส่วนมากจะเป็น utf8) ไม่ได้เป็นตัวเดียวกับที่เราใช้ก็ต้องเพิ่ม code นี้
mysql_query(“SET NAMES tis620″, $connect);
- การ load dump file ที่เป็น [...]

ปัญหาภาษาไทย TIS-620 กับ AJAX

พอดีเมื่อวานนี้มีเพื่อนถามมาทาง MSN ว่าเว็บมีปัญหาใช้ภาษาไทยกับ AJAX ไม่ได้ คือส่งภาษาไทยไปแล้ว อ่านไม่ออกใน MySQL
ส่วนตัวนั้นมีประสบการณ์เกี่ยวกับปัญหาภาษาไทยมาบ้าง ถึงจะไม่มาก แต่ก็พอจะมั่นใจได้ว่า AJAX ไม่น่ามีปัญหากับภาษาไทย แต่มันไม่ใช่กับกรณีนี้
มาดูกันที่ส่วนประกอบต่างๆกันก่อน
Web Page (TIS-620) + AJAX (TIS-620) <–> PHP(TIS-620) <–> MySQL (TIS-620)
ดูๆจากข้างต้นก็ไม่น่าจะมีปัญหาอะไร
อย่างแรกผมเอา FireBug จับ XHR ดูก่อนเลย เป็น HTTP Post และพบว่าอ่านไทยไม่ออกครับ ผมแปลกใจมากๆ ทั้งๆที่ Header บอกว่า charset เป็น TIS-620
ลองถาม Google ดูจึงพบว่า AJAX มีปัญหากับ TIS-620 จริงๆด้วย เพราะมันส่งเป็น UTF-8 (จริงๆมีวิธีเปลี่ยนแต่ค่อนข้างยุ่งยาก)
ดังนั้นภาพข้างบนจึงผิด จริงๆต้องเป็นแบบนี้
Web Page (TIS-620) + AJAX (UTF-8) <–> PHP(UTF-8) [...]

Playing with Google App Engine (Java API)

บันทึกไว้ซะหน่อยว่าเล่นอะไรไปกับ Google App Engine ในส่วนของ Java API บ้าง
1. URL Fetch Service
มีข้อจำกัดว่า timeout นั้นสูงสุดที่ 10 seconds และต้อง set ค่าทุกครั้ง เพราะ default คือ 5 seconds
2. JDO
รายละเอียดเยอะ แต่เอกสารของ Google ทำได้ดีในระดับหนึ่ง และดูเหมือนว่า Google แนะนำให้ใช้ JDO มากกว่า JPA
3. Local Admin Console
ถ้าอยากดูว่าใน Local Datastore มีอะไรอยู่บ้างให้เปิดไปที่ http://localhost:8080/_ah/admin โดยสามารถแสดงรายการ กับลบ entities ได้เท่านั้น ไม่สามารถ เพิ่ม, แก้ไข, หรือแม้แต่ search ได้
ถ้าอยากได้ความสามารถเพิ่มต้องลง 3rd party ที่ชื่อ gae-data-viewer
ส่วนไฟล์จะเก็บอยู่ที่ \war\WEB-INF\appengine-generated\local_db.bin [...]

กทพ. เลื่อนเปิดให้บริการระบบเก็บค่าผ่านทางอัตโนมัติ (Easy Pass) ไปต้นปี 2553

ระบบก็ไม่ได้คิดค้นพัฒนาอะไรขึ้นมาใหม่ ซื้อเทคโนโลยีเขามา implement ทั้งนั้น
ยังไม่สามารถทำให้ตรงตามกำหนดเวลาได้ สุดท้ายก็อ้างขัดข้องทางเทคนิคอีกเช่นเคย
ถ้าไม่พร้อมแล้วคุณจะรีบเก็บเงินประชาชนไปดองเอาไว้ทำไมมิทราบครับ…

How to implement Licensing in Flex and AIR

There are a lot of questions about how to implement Licensing in Flex and AIR.
I cannot explain you 100% how it works but below is list of libraries/functions for my solution.

codegenas3 – AS3 library for generating system/machine id.
as3crypto – AS3 library for encryption/decryption.
Local Shared Object – AS3 Class for storing license information (similar to Windows [...]