Thursday, August 27, 2009
ก่อนจะไป Narisa tech talk 7
เนื่องจากวันเสาร์ที่ 27/08/2009 นี้จะมีงาน narisa tech talk ครั้งที่ 7 ผมในนามของคนที่มีอาชีพแขวนอยู่บนคอมพิวเตอร์และ โปรแกรมมิ่ง จึงอยากจะไปเปิดหูเปิดตาบ้างโดยจุดมุ่งหวังในครั้งนี้ของผมนั้นคือจะได้รู้จัก หัวข้อต่างๆที่พวกพี่ๆนำมาพูดกัน เพราะความรู้ของผมค่อนข้างจะแคบจริงๆ ได้เข้าใจก็จะดีมากแล้วครับ
Tuesday, July 14, 2009
Log4j JDBCAppender
การ config log ลง database โดยใช้ log4j
1. config log4j.properties eg.
2. สร้าง TABLE LOGTABLE สำหรับลง LOG
*Conversion Character
1. config log4j.properties eg.
log4j.logger.jdbclog4j=INFO, A2,D1
#กำหนดให้ใช้ JDBCAppender ซึ่งจะ writelog ลง database
log4j.appender.D1=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.D1.URL=jdbc:derby://localhost:1527/sun-appserv-samples
log4j.appender.D1.User=app
log4j.appender.D1.Password=app
log4j.appender.D1.layout=org.apache.log4j.PatternLayout
log4j.appender.D1.layout.ConversionPattern=%5r %-5p [%t] %c{2} - %m%n
#SQLstatement ที่จะ insert ลง database จะต้อง สร้าง TABLE รองรับ
log4j.appender.D1.sql = insert into LogTable (Thread, Class, Message) values ('%t', '%c', '%m')
2. สร้าง TABLE LOGTABLE สำหรับลง LOG
CREATE TABLE LOGTABLE
(
SEQ_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
THREAD VARCHAR(255),
CLASS VARCHAR(255),
MESSAGE VARCHAR(255)=,
UNIQUE (SEQ_ID)
)
*Conversion Character
d For example, %d{HH:mm:ss,SSS} or %d{dd MMM yyyy HH:mm:ss,SSS}
Friday, February 13, 2009
การสร้าง DATABASE LINK (Oracle)
ดังนี้
บรรยายตัวแปร
LINK_NAME = ชื่อ link ที่เราจะใช้อ้าง
remoteUser = username ของ database ปลายทางที่จะ remote ไป
remotePassword = password ของ database ปลายทางที่จะ remote ไป
destinationDB = ชื่อ database ที่จะ remote ไป
eg.
ตัวอย่างการใช้งาน
มี db สองตัวคือ mydb1 มี table name และ mydb2 มี table surname หากต้องการ query จาก mydb1 ต้องสร้าง dbLink ชื่อ mydb2link ที่ mydb1 และใช้คำสั่ง query ตัวอย่างดังนี้้
eg. select * from surname@mydb2link
เป็นต้น
CREATE DATABASE LINK "LINK_NAME" CONNECT TO "remoteUser" IDENTIFIED by "remotePassword" USING 'destinationDB'
บรรยายตัวแปร
LINK_NAME = ชื่อ link ที่เราจะใช้อ้าง
remoteUser = username ของ database ปลายทางที่จะ remote ไป
remotePassword = password ของ database ปลายทางที่จะ remote ไป
destinationDB = ชื่อ database ที่จะ remote ไป
eg.
CREATE DATABASE LINK "LINK_2.REGRESS.RDBMS.DEV.US.ORACLE.COM" CONNECT TO "BKUSER" IDENTIFIED by "**********" USING 'SOBETDB'
ตัวอย่างการใช้งาน
มี db สองตัวคือ mydb1 มี table name และ mydb2 มี table surname หากต้องการ query จาก mydb1 ต้องสร้าง dbLink ชื่อ mydb2link ที่ mydb1 และใช้คำสั่ง query ตัวอย่างดังนี้้
eg. select * from surname@mydb2link
เป็นต้น
Wednesday, January 28, 2009
simple xml-parser by Apache-Digester
example.
create file example.xml
coding main.java
coding SalePointSync.java
coding Derivered.java
create file example.xml
<ATSSYNC>
<DERIVERED>
<SERIAL></SERIAL>
<SERIAL></SERIAL>
</DERIVERED>
<EFFECTIVEDATE>12JUNE09</EFFECTIVEDATE>
</ATSSYNC>
coding main.java
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("ATSSYNC", SalePointSync.class);
digester.addBeanPropertySetter("ATSSYNC/EFFECTIVEDATE", "effectiveDate");
digester.addObjectCreate("ATSSYNC/DERIVERED", Derivered.class);
digester.addCallMethod("ATSSYNC/DERIVERED/SERIAL", "addSerial", 1);
digester.addCallParam("ATSSYNC/DERIVERED/SERIAL", 0);
digester.addSetNext("ATSSYNC/DERIVERED", "addDerivered");
File inputFile = new File("example.xml");
SalePointSync salePointSync = null;
salePointSync = (SalePointSync) digester.parse(inputFile);
System.out.println(salePointSync.toXML());
coding SalePointSync.java
public class SalePointSync {
private Vector derivered;
private Vector returning;
private String effectiveDate;
public SalePointSync() {
derivered = new Vector();
returning = new Vector();
}
public void addDerivered(Derivered derivered){
this.derivered.addElement(derivered);
}
public Vector getDerivered() {
return derivered;
}
public void addReturning(Returning returning){
this.returning.addElement(returning);
}
public Vector getReturning() {
return returning;
}
public String getEffectiveDate() {
return effectiveDate;
}
public void setEffectiveDate(String effectiveDate) {
this.effectiveDate = effectiveDate;
}
public String toXML() {
StringBuffer sb = new StringBuffer();
sb.append("");
for(int i=0;i"); " + getEffectiveDate() + " ");
sb.append("
return sb.toString();
}
}
coding Derivered.java
public class Derivered {
private Vector serial;
public Derivered(){
serial = new Vector();
}
public Vector getSerial() {
return serial;
}
public void addSerial(String serial) {
this.serial.addElement(serial);
}
public String toXML(){
StringBuffer sb = new StringBuffer();
sb.append("");
for(int i=0;i"); "+s+" ");
}
sb.append("
return sb.toString();
}
}
Monday, December 1, 2008
maven: working with manifests (MANIFEST.MF)
mในกรณีการทำ excution jar จะต้องมีการกำหนด main-class ,classpath ใน /META-INF/MANIFEST.MF
เพื่อให้สามารถรันได้ maven จะช่วยให้ง่ายขึ้น
ตัวอย่าง แก้ไขไฟล์ pom.xml โดยเพิ่ม plugin ดังนี้
เพื่อให้สามารถรันได้ maven จะช่วยให้ง่ายขึ้น
ตัวอย่าง แก้ไขไฟล์ pom.xml โดยเพิ่ม plugin ดังนี้
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<mainClass>com.gosoft.app.App</mainClass>
<packageName>com.gosoft.app</packageName>
<addClasspath>true</addClasspath>
<addExtensions />
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>ddddd</url>
</manifestEntries>
</archive>
</configuration>
</plugin>
maven: copy libraries to classpath
การเพิ่มคำสั่งให้ maven copy library ที่ dependencies ไปยัง target path ที่ทำการ package .jar ของเราเอาไว้
ตัวอย่าง แ้ก้ไขที่ pom.xml เพิ่ม plug-in ที่ช่วย copy library ไปยัง targetpath
ตัวอย่าง แ้ก้ไขที่ pom.xml เพิ่ม plug-in ที่ช่วย copy library ไปยัง targetpath
.......
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNever>true</overWriteIfNever>
</configuration>
</execution>
</executions>
</plugin>
.......
Tuesday, November 11, 2008
use flex Object like java.util.Map
it, easiest
End. let try..
private var myobject:Object = new Object();
myobject["A"] = "Hello";
myobject["B"] = "World";
myobject["C"] = "foobar";
//trace object
trace(myobject["A"]);
trace(myobject["B"]);
trance(myobject["C"]);
//result
// "Hello World foobar"
End. let try..
Subscribe to:
Comments (Atom)