opensource project ตัวนี้มี code name ว่า bangkok
ตอนแรกนึกว่าคนไทยเขียน แต่ check ดูแล้วไม่ใช่แฮะ
Saturday, March 26, 2005
Friday, March 25, 2005
config xterm function key
ช่วงนี้มีความจำเป็นต้องกลับไปช่วย maintain ระบบเก่า
ที่ต้องใช้ terminal emulator ในการ coding
แต่มีปัญหาว่า function key ที่ xterm map ไม่ตรง
ก็เลยเขียน shell script ง่ายๆสำหรับการ override function key
อ่านเพิ่มเติมได้ที่นี่ xterm Faq
ที่ต้องใช้ terminal emulator ในการ coding
แต่มีปัญหาว่า function key ที่ xterm map ไม่ตรง
ก็เลยเขียน shell script ง่ายๆสำหรับการ override function key
xterm -title "SSO" -sb -sl 1200 -geo 80x24 \
-cr red -xrm \
"XTerm*vt100.translations: #override
ShiftF1: string(0x1b) string("Wa")
ShiftF2: string(0x1b) string("Wb")
ShiftF3: string(0x1b) string("Wc")
ShiftF4: string(0x1b) string("Wd")
ShiftF5: string(0x1b) string("We")
....
~ShiftF1: string(0x1b) string("WA")
~ShiftF2: string(0x1b) string("WB")
~ShiftF3: string(0x1b) string("WC")
~ShiftF4: string(0x1b) string("WD")
....
-e telnet 192.10.1.1 &
อ่านเพิ่มเติมได้ที่นี่ xterm Faq
Related link from Roti
Thursday, March 24, 2005
Joda Bean
อยู่ที่ Joda
หลายคนที่เคยเขียน UI คงเคยรู้ว่ามีแนวทางในการ
ส่ง business object ไปยัง UI layer อยู่ 2 พวกคือ
จุดเด่นของพวก generic ก็คือง่ายต่อการ binding เข้ากับ UI component
ส่วนข้อเสียก็คือการเปิดโอกาสให้เกิด bug หรือ runtime error ได้ง่ายขึ้น
ตัว Joda Bean จะเป็นลูกผสมของ 2 พวกนี้
คือใช้ hashMap เป็น base class แต่ก็สามารถ
set property ในลักษณะ Type Safe ได้เช่นกัน
การเขียน Joda Bean จะเชียนดังนี้
เราเพียงแต่เขียน interface
พอถึงเวลาใช้ ก็เพียงแต่
Joda จะใช้ Java 1.3 Proxy ในการสร้าง class person ให้เรา
การนำไปใช้
กรณีที่เราต้องการ binding เข้ากับ swing JTextField
Note: Joda binding ยังไม่ support พวก combobox, table component
นอกจากนี้ยังสามารถใช้ XPath ในการ access ได้ด้วย
หลายคนที่เคยเขียน UI คงเคยรู้ว่ามีแนวทางในการ
ส่ง business object ไปยัง UI layer อยู่ 2 พวกคือ
- พวกที่นิยม Type Safe พวกนี้จะใช้ Java Bean
- พวกที่นิยม Generic พวกนี้จะใช้ HashMap
จุดเด่นของพวก generic ก็คือง่ายต่อการ binding เข้ากับ UI component
ส่วนข้อเสียก็คือการเปิดโอกาสให้เกิด bug หรือ runtime error ได้ง่ายขึ้น
ตัว Joda Bean จะเป็นลูกผสมของ 2 พวกนี้
คือใช้ hashMap เป็น base class แต่ก็สามารถ
set property ในลักษณะ Type Safe ได้เช่นกัน
การเขียน Joda Bean จะเชียนดังนี้
public interface Person extends Bean {
StringProperty surname();
String getSurname();
void setSurname(String surname);
}
เราเพียงแต่เขียน interface
พอถึงเวลาใช้ ก็เพียงแต่
Person person = (Person) JodaFactory.create(Person.class);
Joda จะใช้ Java 1.3 Proxy ในการสร้าง class person ให้เรา
การนำไปใช้
กรณีที่เราต้องการ binding เข้ากับ swing JTextField
JTextField textField = new JTextField();
Person person = (Person) JodaFactory.create(Person.class);
SwingBinder binder = new SwingBinder();
binder.bind( textField, person.surname() );
Note: Joda binding ยังไม่ support พวก combobox, table component
นอกจากนี้ยังสามารถใช้ XPath ในการ access ได้ด้วย
XPath xpath = new XPath("address[2]/town/text()");
Profile profile = (Profile) JodaFactory.create(Profile.class);
String str = (String) xpath.selectSingleNode(profile);
Related link from Roti
IE send request for PDF twice
project ที่แล้วมี PDF report ที่เขียน jasper ไป 74 ตัว
ไม่เห็น issue นี้เลย (หรือว่า server จะเร็วจัดจนไม่เกิด
performance drop)
http://www.mail-archive.com/user@struts.apache.org/msg23445.html
ต้องกลับไปดู log ใหม่แล้ว
ไม่เห็น issue นี้เลย (หรือว่า server จะเร็วจัดจนไม่เกิด
performance drop)
http://www.mail-archive.com/user@struts.apache.org/msg23445.html
ต้องกลับไปดู log ใหม่แล้ว
Related link from Roti
tomcat trimspace
ได้ความรู้ใหม่มา
ปกติเวลาเรา view html source
จาก page ที่สร้างจาก jsp
เราจะเห็นบรรทัดว่างๆอยู่ทั่วไปหมด
ใน tomcat 5.5.x เราสามารถ config ไม่ให้
มี whitespace พวกนี้โดย
ปกติเวลาเรา view html source
จาก page ที่สร้างจาก jsp
เราจะเห็นบรรทัดว่างๆอยู่ทั่วไปหมด
ใน tomcat 5.5.x เราสามารถ config ไม่ให้
มี whitespace พวกนี้โดย
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Related link from Roti
Maven Eclipse Plugin
ใครที่เคยใช้ java คงจะเคยใช้ ant มากันแล้ว
ข้อเสียของ ant (จริงๆก็ไม่ใช่ข้อเสียหรอก) ก็คือ
ไม่ว่าจะเขียนกี่ project
file build.xml ก็หน้าตาอีหรอบเดิมทุกที
(คนที่เคยเขียน ant คงรู้ว่า วิธีการเขียน
ant ที่เร็วที่สุดก็คือการ copy, paste จาก
build file เก่า)
จนมีคนคิดว่า เอ๊ะทำไมเราต้องมาเขียน
อะไรซ้ำไปซ้ำมา ก็เลยเกิดเป็น maven
ขึ้นมา
การเขียน maven ถ้าเป็น project ธรรมดา
ก็เพียงเขียนแต่ project.xml ซึ่งเป็น descriptor
อธิบายรายละเอียดของ project
ซึ่ง key สำคัญตัวหนึ่งที่ maven จัดการให้ก็คือ
library dependency ซึ่ง maven จะจัดการหา
jar file ตาม version ที่เราระบุให้
โดย mavenจะ maintain jar file นั้นไว้ใน
local repository ของตัวเอง กรณีทีในเครื่อง
local ไม่มี file นั้น ก็จะทำการ download
จาก remote repository (ผมชอบ feature นี้มาก
เพราะแทนที่เราจะมี jar file ที่ใช้บ่อยๆอย่าง log4j.jar
กระจายอยู่ในทุก project ถ้าใช้ maven ก็จะ
เกิดการ share jar ไว้ที่ repository ที่เดียว)
ที่นี้ถ้าเราต้องการใช้ eclipse ร่วมกับ
maven , maven ก็มี plugin อยู่ตัว
ที่ช่วยในการ generate .project กับ
.classpath ให้เรา (เป็น file ที่ eclipse
ใช้ในขบวนการ build) ทำให้เรา
เปิด eclipse มา edit source ได้เลย
ไม่ต้องไปเสียเวลา add jar file เข้ามา
ใน build path อีก
การใช้ก็ไม่ยากอะไร
เขียน project .xml เสร็จ ก็สั่ง
ตัว file .classpath ที่ maven สร้างให้จะสร้างตามนี้
1. the build source directory
2. the build unit test source directory
3. the JRE being used
4. the appropriate version of JUnit
5. each Maven project dependency
6. an output directory for compiled code: target\classes
7. any .zip source archives
ตัวอย่าง .classpath ที่ maven gen ให้
จะสังเกตุเห็นว่า มี variable อยู่ตัวที่ชื่อ MAVEN_REPO (maven repository location)
ซึ่งเราต้องเข้าไป manual add ใน eclipse เอง
หรือไม่ก็สั่ง
แต่การสั่งแบบนี้ต้องมีการ set ค่า ${maven.eclipse.workspace}
(eclipse workspace location)
ไว้ใน project.properties ด้วย
อ่านเพิ่มเติม
ข้อเสียของ ant (จริงๆก็ไม่ใช่ข้อเสียหรอก) ก็คือ
ไม่ว่าจะเขียนกี่ project
file build.xml ก็หน้าตาอีหรอบเดิมทุกที
(คนที่เคยเขียน ant คงรู้ว่า วิธีการเขียน
ant ที่เร็วที่สุดก็คือการ copy, paste จาก
build file เก่า)
จนมีคนคิดว่า เอ๊ะทำไมเราต้องมาเขียน
อะไรซ้ำไปซ้ำมา ก็เลยเกิดเป็น maven
ขึ้นมา
การเขียน maven ถ้าเป็น project ธรรมดา
ก็เพียงเขียนแต่ project.xml ซึ่งเป็น descriptor
อธิบายรายละเอียดของ project
ซึ่ง key สำคัญตัวหนึ่งที่ maven จัดการให้ก็คือ
library dependency ซึ่ง maven จะจัดการหา
jar file ตาม version ที่เราระบุให้
โดย mavenจะ maintain jar file นั้นไว้ใน
local repository ของตัวเอง กรณีทีในเครื่อง
local ไม่มี file นั้น ก็จะทำการ download
จาก remote repository (ผมชอบ feature นี้มาก
เพราะแทนที่เราจะมี jar file ที่ใช้บ่อยๆอย่าง log4j.jar
กระจายอยู่ในทุก project ถ้าใช้ maven ก็จะ
เกิดการ share jar ไว้ที่ repository ที่เดียว)
ที่นี้ถ้าเราต้องการใช้ eclipse ร่วมกับ
maven , maven ก็มี plugin อยู่ตัว
ที่ช่วยในการ generate .project กับ
.classpath ให้เรา (เป็น file ที่ eclipse
ใช้ในขบวนการ build) ทำให้เรา
เปิด eclipse มา edit source ได้เลย
ไม่ต้องไปเสียเวลา add jar file เข้ามา
ใน build path อีก
การใช้ก็ไม่ยากอะไร
เขียน project .xml เสร็จ ก็สั่ง
maven eclipse
ตัว file .classpath ที่ maven สร้างให้จะสร้างตามนี้
1. the build source directory
2. the build unit test source directory
3. the JRE being used
4. the appropriate version of JUnit
5. each Maven project dependency
6. an output directory for compiled code: target\classes
7. any .zip source archives
ตัวอย่าง .classpath ที่ maven gen ให้
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="" kind="src" path="src/main/java">
</classpathentry>
<classpathentry excluding="" including="" kind="src" path="src/main/resources">
</classpathentry>
<classpathentry output="target/test-classes" kind="src" path="src/test/java">
</classpathentry>
<classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar">
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
</classpathentry>
<classpathentry kind="var" path="MAVEN_REPO/log4j/jars/log4j-1.2.8.jar">
</classpathentry>
<classpathentry kind="output" path="target/classes">
</classpathentry>
</classpath>
จะสังเกตุเห็นว่า มี variable อยู่ตัวที่ชื่อ MAVEN_REPO (maven repository location)
ซึ่งเราต้องเข้าไป manual add ใน eclipse เอง
หรือไม่ก็สั่ง
maven eclipse:add-maven-repo
แต่การสั่งแบบนี้ต้องมีการ set ค่า ${maven.eclipse.workspace}
(eclipse workspace location)
ไว้ใน project.properties ด้วย
อ่านเพิ่มเติม
Related link from Roti
Wednesday, March 23, 2005
ปัญหา encoding ของ eclipse
ช่วงนี้อยู่ระหว่างการย้ายสภาพแวดล้อมการทำงาน
จาก window ไปเป็น linux (ubuntu)
ก็เลยมี issue ให้จัดการเยอะหน่อย
ล่าสุดก็เป็นกรณี eclipse editor preference ไม่มี encoding thai ให้เลือก
ทดลองสั่ง LANG=th_TH ก็พบ warning ตอน start eclipse
ก็เลยต้อง reconfig locales ใหม่ให้ถูกต้อง
จาก window ไปเป็น linux (ubuntu)
ก็เลยมี issue ให้จัดการเยอะหน่อย
ล่าสุดก็เป็นกรณี eclipse editor preference ไม่มี encoding thai ให้เลือก
ทดลองสั่ง LANG=th_TH ก็พบ warning ตอน start eclipse
(process:5042): Gdk-WARNING **: locale not supported by C library
ก็เลยต้อง reconfig locales ใหม่ให้ถูกต้อง
sudo dpkg-reconfigure locales
Related link from Roti
ศึกษา ADHD case
ตอนนี้กำลังง่วนอยู่กับการศึกษา super-computer ที่บ้ายอยู่
กำลังหาหนังสืออ่านกรณี Attention Deficit Hyperactivity Disorder (ADHD)
กับกรณี Autistic Disorder
เพื่อไว้กรณี super-comp ของเราจะเข้าข่ายนี้
ปล. ใครยังไม่มีลูก ก็ลองหาลูกสักคนดูนะ
โปรแกรมยากมาก
debugger ก็ไม่มีให้ด้วย
กำลังหาหนังสืออ่านกรณี Attention Deficit Hyperactivity Disorder (ADHD)
กับกรณี Autistic Disorder
เพื่อไว้กรณี super-comp ของเราจะเข้าข่ายนี้
ปล. ใครยังไม่มีลูก ก็ลองหาลูกสักคนดูนะ
โปรแกรมยากมาก
debugger ก็ไม่มีให้ด้วย
Related link from Roti
Subscribe to:
Posts (Atom)