January 5th, 2010
สองสามวันมานี้อดหลับอดนอนเพราะเรื่องการย้าย 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 ที่เป็น tis620 หรือ utf8 ผ่าน BigDump อย่าลืมกำหนด charset ด้วยที่ config ชื่อ $db_connection_charset
- dump file ถ้าเป็น tis620 ตรวจดูให้แน่ใจว่า file save เป็น ANSI แล้ว (ปกติจะเป็น utf8) ไม่งั้น BigDump มันจะอ่านไม่ออก
- ถ้าเป็นไปได้ให้แก้ code ที่เป็น full path แล้วแทนที่ด้วย relative path แทน
- File/Folder Permission ลอกของเก่ามาเลย ใช้ ls -rl ช่วย แล้วดูเฉพาะตัวที่พิเศษๆเช่น 777
- ถ้าย้ายหลายเว็บจงอดทนทำทีละเว็บ ไม่งั้นอาจสับสนได้…
Tags: MySQL, PHP, Web Application, Web Hosting
Posted in Uncategorized | No Comments »
December 23rd, 2009
พอดีเมื่อวานนี้มีเพื่อนถามมาทาง 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) <–> MySQL (TIS-620)
และสิ่งที่เราต้องแก้ก็คือแปลง UTF-8 ให้เป็น TIS-620 ที่ Server Side Script ซึ่งในที่นี้คือ PHP โดยการเพิ่ม code นี้เพื่อแปลงข้อความก่อน save ลง MySQL
$msg= iconv(‘UTF-8′, ‘TIS-620′, $msg);
สรุป
- ปัญหานี้จะเกิดต่อเมื่อใช้ Post Method เพราะส่วน Body จะถูก Encode เป็น UTF-8 ส่วน Get ไม่มีปัญหาเพราะข้อความต่อท้ายไปกับ URL แทน
- ถ้าไม่มีความจำเป็นต้องใช้ TIS-620 จริงๆ ผมขอแนะนำเหมือนทุกครั้ง คือใช้ UTF-8 จะดีกว่า ใช้ได้กับหลายภาษา ไม่ใช่แค่ภาษาไทย และ open source script ส่วนใหญ่เขียนมา support UTF-8 อยู่แล้ว
Tags: AJAX, JavaScript, PHP
Posted in Uncategorized | No Comments »
December 15th, 2009
บันทึกไว้ซะหน่อยว่าเล่นอะไรไปกับ 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 ถ้าบางครั้งเกิดอาการ start web app ไม่ได้เพราะ datastore พัง ให้ delete ไฟล์นี้ทิ้งซะ
Tags: Google, Java
Posted in Uncategorized | No Comments »
November 16th, 2009
ระบบก็ไม่ได้คิดค้นพัฒนาอะไรขึ้นมาใหม่ ซื้อเทคโนโลยีเขามา implement ทั้งนั้น
ยังไม่สามารถทำให้ตรงตามกำหนดเวลาได้ สุดท้ายก็อ้างขัดข้องทางเทคนิคอีกเช่นเคย
ถ้าไม่พร้อมแล้วคุณจะรีบเก็บเงินประชาชนไปดองเอาไว้ทำไมมิทราบครับ…

Tags: Life Style
Posted in Uncategorized | No Comments »
November 4th, 2009
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 Registry).
- Mcrypt – PHP functions for encryption/decryption.
Tags: AIR, Flash, Flex, PHP
Posted in Uncategorized | No Comments »
October 26th, 2009
Tags: Liverpool
Posted in Uncategorized | No Comments »
October 8th, 2009
It’s a bug in Firefox that when you hide and then show SWF (Flex or Flash) again, it will be reloaded.
So, this is workaround.
Firstly, do not use “display: none” CSS to hide the div that contains Flash. Use “visibility: hidden ” instead.
What about layout? Yes, it may be a problem due to “visibility: hidden” just hide the div but still reserve space for it.
Therefore, we will fix it by additional CSS which is “width: 0px; height: 0px;”.
There is one side effect, the browser scroll bar will be longer than content (I’m not sure why, but you may fix it by JavaScript. It’s out of my scope, so please let me know if any).
Conclusion, in case of we have to show/hide SWF and serious about reloading, we will use “visibility: hidden; width: 0px; height: 0px;” instead of “display: none”
In my case, I use jQuery Tabs. So, I will fix CSS class from
.ui-tabs .ui-tabs-hide { display: none !important; }
to be
.ui-tabs .ui-tabs-hide { visibility: hidden; width: 0px; height: 0px; }
References:
http://pipwerks.com/lab/swfobject/hide-swf/2.0/index.html
http://stackoverflow.com/questions/298342/firefox-restarts-flash-movie-if-enclosing-div-properties-change
Thanks @tvchampion and @dogdoy for help.
Tags: CSS, Flash, Flex, jQuery
Posted in Uncategorized | 1 Comment »
October 4th, 2009
Tags: Music
Posted in Uncategorized | No Comments »
August 31st, 2009
สงสัยต่อไปนี้ต้องเวลาดูบอลไปทวีตไปต้องเป็น in english ซะแล้ว

Posted in Uncategorized | No Comments »