วันจันทร์ที่ 4 มีนาคม พ.ศ. 2556

Restore DB2 Database command db2exc_952_WIN_x86

**************** Software db2exc_952_WIN_x86 Setup Os :win7 **************** หลังจากติดตั้งเสร็จ ก็ให้ทำการสร้าง folder สำหรับ restore database&store procedures สร้าง C:\DB2NameSpace RESTORE DATABASE TESTDB FROM "C:/_BACKUP_TG_DATA_DB2" TAKEN AT 20120909143815 WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING OK...

วันอาทิตย์ที่ 11 มีนาคม พ.ศ. 2555

javascript block keyin thai language

ในโลกของทุกอย่างที่ทำงานบน internet นั้น ในหน้า form html เรามีความจำเป็นอย่างที่ต้อง filter ข้อมูลที่ keyin เข้าให้เฉพาะเจาะจง เช่นในหน้า Login Form เราสามารถ กรอกให้ User กรอกเฉพาะภาษา อังกฤษเท่านั้น
ซึ่งแสดงใน code js ข้างล่าง

//Function dont input Text in thai--
function DisplayOnlyE(e){
//alert(String.fromCharCode(e.keyCode));
key = e.keyCode;
e.returnValue = false;
if( (key > 64 && key < 91) || key == 32 || key == 46){ //BIG English
e.returnValue = true;
}else if( (key > 96 && key < 123) || key == 32 || key == 46 ){
e.returnValue = true;
}else if( key > 47 && key < 58 ){
e.returnValue = true;
}
}

//ใช้งาน
<html:password onkeypress="DisplayOnlyE(event);" property="password" value="ar00201n05" style="width:169px ; background-color:#FFF ; border:0px ; height:20px ; font-family:DBAdmanXRegular ; color:#000 ; font-size:18px"> </html:password>

Java Get IP Address ทะลุทะลวง proxy

ปัจจุบัน ระบบข้างในที่เปิดให้บริการจะมี พวก proxy มาเกี่ยวข้อง เวลาเขียนโปรแกรมเพื่อต้องการ get เอา IP ของ Client ที่เรียกหรือใช้บริการ บางคร้ังเราจะได้ ip ของ proxy ภายใจดังนั้น code ข้างล่างนี้จะช่วยท่านได้
โดยจะ จะได้ IP ของ client ที่เรียกเข้ามา


String ipAddress = request.getHeader("proxy-ip");
if (ipAddress == null) {
ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null){
ipAddress = request.getRemoteAddr();
}
}

iText print out PDF R java.io.IOException: trailer not found.

ความต้องการ :
ต้องการออกรายงาน หรือเอกสารที่เป็น PDF file สำหรับทำสัญญา โดยที่ มี pdf template อยู่แล้วจากนั้นก็อ่าน Stream buffer เข้ามาซึ่งในระบบ
ใช้ iText ในการ GenPDF ไฟล์ ออกผ่านหน้า Browser
ปัญหา :
[2/13/12 11:48:32:581 ICT] 00000025 SystemErr R java.io.IOException: trailer not found.
[2/13/12 11:48:32:581 ICT] 00000025 SystemErr R at com.lowagie.text.pdf.PdfReader.readXref(Unknown Source)
[2/13/12 11:48:32:581 ICT] 00000025 SystemErr R at com.lowagie.text.pdf.PdfReader.readPdf(Unknown Source)
[2/13/12 11:48:32:581 ICT] 00000025 SystemErr R at com.lowagie.text.pdf.PdfReader.(Unknown Source)

วิธีแก้ไข:
ถ้าเกิด Exception แบบนี้ในการ Gen PDF ไฟล์ สำหรับ iText ให้ลองตรวจสอบ version ที่ Convert pdf ไฟล์
ด้วยว่าเ

วันอังคารที่ 27 ธันวาคม พ.ศ. 2554

การแก้ปัญหาระบบช้า part.1

การ solving หรือ solution ที่เป็นเทคนิคสำคัญในการแก้ปัญหาระบบช้า เพื่อให้ตอบสนอง การใช้งานอย่างมีประสิทธิภาพ
คือการทำ System Design ซึ่งจะเป็นการออกแบบระบบที่มีประสิทธิภาพ แม่นยำ ถูกต้อง ง่ายต่อการใช้งาน และ ง่ายต่อการบริหารจัดการ
หรือแก้ไขระบบในภายหลัง
ถ้าต้องการให้ระบบที่ implement ทำงานมีประสิทธิภาพ มีกระบวนการ Design ดังนี้
1. pattern และ style การ coding
เช่น การเเบ่ง class หรือแบ่งงานที่ทำหน้าที่ต่างๆ ในรูปของ MVC เช่น Model ,View ,Controller หรือ Layer Access Database
2. Database Design
การจัดการเกี่ยวกับ Database มีผลต่อการใช้งานของ User เมื่อมีข้อมูลเยอะ ดังนั้นการเขียน SQL ในรูปของ Stroreprocedure หรือ PL/SQL เพื่อโยนความรับผิดชอบในการ
อ่าน,เขียน,ลบ,ค้นหา ให้ Database Server รับผิดชอบแต่เพียงผู้เดียว (ขึ้นอยู่กับ ยี่ห้อ Database)
ดังนั้นจะเห็นว่า code หรือตัวภาษาจะเป็นสือการในการ Input,Output ข้อมูล เท่านั้นเอง ซึ่งการทำงานก็จะเร็วขึ้นและมีประสิทธิภาพ ลด traffic และ Over head ระหว่าง
WebServer กับ Database Server แต่ถ้ามีข้อมูลเยอะๆ มีเทคนิคในการแก้ปัญหาอย่างไร? วิธีหนึ่งที่เห็นในการแก้ปัญหาคือการ ลมข้อมูลใน record ที่ไม่ใช้งานหรือข้อมูลที่เก่า
การทำเช่นนี้ก็ต้องทำการ table ที่เป็น transaction เพราะจะทำให้ระบบทำงานได้ดีขึ้น แต่ถ้าเป็นระบบที่มีการ Design ดีๆ ก็จะมีการ ย้ายข้อมูลที่เป็น transaction ไปไว้ใน table backup
ดังนั้นการทำงานของระบบก็จะมีประสิทธิภาพ ได้ดีขึ้น ซึ่งการจะทำอย่างนี้ก็ต้องมีการ Filter หรือ select และต้อง Difine ว่าจะทำอย่างไร เวลาเท่าไร เช่นเลือก table transaction ที่มีการใช้งานมาที่สุด
มา ย้ายไปที่ tabale back up โดยมีการย้ายทุกๆ 1 เดือน หรือ 3 เดือนขึ้นอยู่กับความสำคัญของข้อมูล เป็นต้น ซึ่งทั้งนี้ทั้งนั้นก็ขึ้นอยู่กับ การใช้งาน ข้อมูล ความต้องการ และ ความเหมาะสมกับระบบ
นั้นๆด้วย
3. System Design
การออกแบบระบบ ที่ดีเมื่อเริ่มการการ code cleaning,Database design บางครั้งก็ต้องทำการ tuning system เพื่อให้เหมาะสมกับระบบและการใช้งาน
4. Hardware
แน่นอนครับ hardware เป็นสิ่งที่ควรปรับปรุงให้เหมาะสมกับ software

วันอังคารที่ 11 ตุลาคม พ.ศ. 2554

Error ResultSet is closed.

ช่วงนี้ได้แก้ไขระบบงานของ บ เอกชนแห่งหนึ่งย่านสาทร ซึ่งระบบงานค่อนข้างซับซ้อนมากมายเนื่องจากข้อมูลเยอะมากและเกี่ยวเนื่องกัน สิ่งที่ต้องเจอในการ code program คงหนีไม่พ้นเรื่อง query,insert,update ,delete ตาม logic business แน่นอนครับ เมื่อระบบงานที่มี logic เยอะแยะมากมายตามความต้องการของระบบหรือ ตาม privacy ก็ตามแต่ program ทีี่เราเขียนก็มีความจำเป็นต้องมีการการพวก Result set, statement มากกว่า 1 Object ในการจัดการกับ database เพื่อดึงข้อมูลหรือ update ข้อมูล ดังนั้นจึงมีการเขียน statement ซ้อน statement จึงเป็นสาเหตุให้เราต้องเจอ Errors ResultSet is closed.

วิธีแก้ ให้ตรวจสอบ statement ,result set จากข้างใน ว่าเป็น object เดียวกันไหม แล้วค่อยไล่ statement ข้างนอกก็จะเจอ bug ตัวใหญ่

ซึ่งเกิดจากการเขียน code ผิดของเราเอง ^^!

java class to String

บางครั้งในการเขียนโปรแกรมซึ่งเรามีความจำเป็นต้องสร้าง java class ขึ้นมาเพื่อเป็นที่พักข้อมูลที่เป็น Object เช่น Bean ต่างๆ ซึ่งใน class java จะมี method สำหรับ get,set สำหรับกำหนดค่าและนำค่าไปใช้ ดังนี้ เรามีความจำเป็นต้องการรู้ค่าต่างๆใน java class นั้นๆ โดยใช้ method toString() ซึ่งในตัวอย่างเป็น code Override toString โดยไม่ต้องไปสนใจว่าเรามีจำนวน Field หรือ attribute ใน class มากขนาดไหน โดยเขียน code ได้ดังนี้

public class testBean{

private String id;

private String name;

.....

getXX,setXX

....

@Override

public String toString() {
Class cl = this.getClass();
StringBuilder buffer = new StringBuilder();
for (Field field : cl.getDeclaredFields()) {
try {
buffer.append(" ");
buffer.append(field.getName());
buffer.append(":");
buffer.append(field.get(this));
} catch (IllegalArgumentException ex) {
ex.fillInStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
}
}
return buffer.toString();

}

}

จะเห็นว่า method toString จะเป็นการ วนวูบ get ชื่อ attribute และ value มาใส่ StringBuffer เพื่อแสดงข้อมูล ซึ่งสามารถนำเอาไปใช้ประโยชน์ทั้งการดู data ,print out console,debug ต่างๆ เป็นต้น