Archive for August, 2011

[PHP]Unable to load dynamic library “php_mcrypt.dll”

มีโอกาสได้ใช้งาน module mcrypt ใน PHP พอเปิดใช้งานแล้วลอง start Apache ดูแต่ก็ยังใช้ไม่ได้ เปิดดู log เจอ error ดังนี้

PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\\AppServer\\AppServ\\php5\\ext\\php_mcrypt.dll' - The specified module could not be found.\r\n in Unknown on line 0

วิธีการแก้ไขปัญหา ให้ copy libmcrypt.dll ไปวางใน folder bin ของ Apache จากนั้นทำการ restart Apache ก็สามารถใช้งาน mcrypt ได้แล้ว

Format วันที่ใน Oracle ให้แสดงปี พ.ศ

ปกติแล้วเวลาต้องการแสดงวันที่ในรูปแบบ พ.ศ ผมจะนำมาจัด ูปแบบหลังจาก ดquery ข้อมูลมาจากฐานข้อมูลแล้ว เพราะเวลาเปลี่ยนฐานข้อมูลจะได้ไม่ลำบากอะไรในการแก้ไข แต่พอมาทำงานกับฐานข้อมูล Oracle เพียงอย่างเดียว และ code ก็ไม่ได้มีอะไรมาก เพราะ query ข้อมูลทุกอย่างออกมาเป็น String หมดเลยเลยต้องมาจัด format ตั้งแต่ใน query สืบเสาะหาจนได้วิํธีการมาดังนี้

SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY', 'NLS_CALENDAR=''THAI BUDDHA'' NLS_DATE_LANGUAGE=THAI') FROM DUAL

ก็จะได้ข้อมูลประมาณนี้

17/08/2554

และทำให้ทราบเพิ่มเติมว่าหาก ต้องการจัดเรียงข้อมูลตามอักษรภาษาไทยก็ใช้แบบนี้ได้เลย

ORDER BY NLSSORT(COL_NAME, 'NLS_SORT=THAI_DICTIONARY')

แหล่งข้อมูล
3 Setting Up a Globalization Support Environment

[Java] อ่านข้อมูลจาก XML โดยใช้ JDOM Parser

การอ่านข้อมูลจาก xml โดยใช้ Java นั้นมีหลายรูปแบบมากเนื่องจาก Java เองมี XML Parser อยู่หลายตัว สำหรับตัวอย่างนี้จะใช้ JDOM Parser ซึ่งเร็วกว่าตัวอื่น เนื่องจากไม่ไ่ด้ใช้ในการแก้ไขข้อมูล xml แต่เป็นการอ่านข้อมูลจาก xml เพียงอย่้างเดียว
1. โหลด jdom-x.x.jar จากนั้นก็ add เข้าไปในโปรเจค
2. ข้อมูลที่จะรับมาจาก ผู้ใช้งานโดยการ post เข้ามายัง Sevlet ที่เตรียมไว้จะมีลักษณะดังนี้

<Payments>
	<customer id='1'>
		<item>1001</item>
		<price>1000.00</price>
	</customer>
	<customer id='2'>
		<item>1002</item>
		<price>20.00</price>
	</customer>
</Payments>

3. เขียน code ดังนี้
Read more

[Java]MessageFormat : insert values between single quotes

หลังจากได้แนะนำการใช้ การจัด Format Message ก็ใช้งานมาเรื่อยจนวันนี้ ติดปัญหาเล็กน้อยในการ ใช้ MessageFormat สำหรับ format ข้อความที่มีเครื่องหมาย ” (single quotes) เนื่องจากหลังจาก format แล้วเครื่องหมาย ” จะหายไปโดยปริยาย เช่น

String msg = "Hi, '{0}' this is {1}";
String val = MessageFormat.format(msg, "test", "xx");
System.out.println(val);

ข้อความที่ได้จะกลายเป็น Hi, test this is xx
ด้วยความช่วยเหลือจาก อ.google ก็พบวิธีแก้ไขดังนี้

String msg = "Hi, ''{0}'' this is {1}";
String val = MessageFormat.format(msg, "test", "xx");
System.out.println(val);

โดยการเพิ่ม ” ครอบ ” อีกทีหนึ่ง

ลอกมาจาก
Java MessageFormat – How can I insert values between single quotes?

[Java]ปัญหาการส่งข้อมูลไปยัง Action ติดๆกัน

สืบเนื่องจากโปรแกรมเดิมที่พัฒนาด้วย Struts Framework และผ่านมาหลายสิบมือ มีปัญหาการส่งข้อมูล (summit) สองครั้งติดๆกัน ทำให้ข้อมูลซ้ำกันสองรายการ ซึ่งเสียเวลาในการแก้ไขปัญหานี้
ไป 3 ชม. เต็มๆพอแก้ไขได้แล้วก็เลยมา Note ไว้หน่อยเพราะปัญหานี้เป็นปัญหาแบบ เส้นผมบางภูเขาเหล่ากาจริงๆ ปัญหาที่ว่าเกิดจากการใช้งาน ปุ่ม summit ดังนี้

<html:submit property="bt_save" value="Save Data" onclick="doSaveAction();"/>

และ doSaveAction() เขียนประมาณนี้

function doSaveAction(){
	var form = document.getElementById("xx");  
	form.method = "post";
	form.submit();
}

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

<html:button property="bt_save" value="Save Data" onclick="doSaveAction();"/>

โปรแกรมก็ทำงานได้ปกติ แก้ปัญหาที่สะสมมานาน