Archive for January, 2010

delete , update with Join statement

สืบเนื่องจากเพื่อนผมไปเจอ Blog การ Update หรือ Delete โดย Join เงื่อนไขจากตารางอื่น มาแล้วเกิืดความสงสัยว่า เอ๋ แล้วมันเป็นคำสั่งมาตรฐานหรือเปล่า ผมก็เลยลองนำมาทดลองใช้กับ MySQL ครับ
Delete

DELETE T1.*,T2.* FROM TEST1 T1 INNER JOIN TEST2 T2 ON T1.ID = T2.ID 

สรุปว่าใน MySQL (Version 5.1) ที่ผมใช้อยู่สามารถใช้งานคำสั่ง Delete แล้วทำการ join ได้ครับ ที่ยังไม่ได้ทดลองก็มี Oracle , MS SQL Server ถ้าทดสอบแล้วจะมา Update
Update

UPDATE T1 SET T.NAME = 'TEST_UPDATE',T2.NAME = 'TEST_UPDATE2' FROM 
TEST1 T1 INNER JOIN TEST2 T2

อันนี้ไม่ Error ก็ลองเปลี่ยนเป็น

UPDATE T1 SET T.NAME = 'TEST_UPDATE' FROM 
TEST1 T1 INNER JOIN TEST2 T2 WHERE T1.ID = 1

และ

UPDATE T1 SET T.NAME = 'TEST_UPDATE',T2.NAME = 'TEST_UPDATE2' FROM 
TEST1 T1 INNER JOIN TEST2 T2

เกิด Error ครับ แสดงว่า MySQL สนับสนุนการ delete แบบ join และไม่สนับสนุนการ update

Count number of charactor in String

จากโจทย์การเขียนโปรแกรมแก้ปัญหา ปัญหาเขียนโปรแกรมตอนเจ็ด, นับสระในประโยคภาษาอังกฤษ ทำให้ผมลองเขียนโปรแกรมเพื่อตรวจสอบตามโจทย์ ซึ่งก็ได้ตามนี้ ส่วนภาษาอื่นๆนั้นสนใจภาษาใด ก็ตามไปดูตาม link ได้เลยครับ

/**
 * File Name : CountCharInStr.java
 * Created Date : Jan 11, 2010 : 1:26:41 PM
 * Copyright © 2010 www.fun4station.com
 */
package com.fun4station.example;

/**
 * @Author Supot Saelao 
 * @Version 1.0
 */
public class CountCharInStr {
	public static void main(String[] args) {
		String str = "This is a example text we want to count.";
		int found = 0;
		
		// 1. Commond solution
		for (int i = 0; i < str.length(); i++) {
			char tmp = str.charAt(i);
			if('a' == tmp || 'e' == tmp || 'i' == tmp 
					|| 'o' == tmp || 'u' == tmp){
				found++;
			}								
		}
		System.out.println("1. found : "+found);
		
		// 2. Use regular expression
		found = str.replaceAll("[^aeiou]","").length();
		System.out.println("2. found : "+found);		
	}
}

หากเอาทั้งตัวเล็กตัวใหญ่ก็ เพิ่มการตรวจสอบเข้าไป ทั้งในส่วนแบบที่หนึ่ง และ แบบที่สอง
อ้างอิง
http://www.regular-expressions.info/captureall.html

ข้อแตกต่างระหว่าง getSession(boolean) กับ getSession()

Note ไว้เป็นข้อจดจำเนื่องจากความจำไม่ดี เวลามีการดึงข้อมูลที่ถูกเก็บไว้ใน session มาใช้งานนั้น จะเห็นว่ามี method ในการ getSession อยู่สองตัวก็คือ getSession(boolean) กับ getSession() ข้อแตกต่างของ method ทั้งสองเป็นดังนี้
1. getSession() ถ้า request ที่เข้ามานั้นมี session อยู่แล้วก็จะทำการส่ง session นั้นคืนมาให้ผู้เรียก แต่ถ้ายังไม่มีก็จะทำการสร้าง sesion ใหม่พร้อมกับสร้าง session id ให้ด้วย ตัวอย่างเช่น

protected void doGet(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
		
	HttpSession ss = request.getSession();
	String data = (String) ss.getAttribute("data");
	System.out.println("session data : "+data);
}

ดังนั้นในบรรทัดที่ 5 จะไม่เกิด Error ขึ้นเวลาให้ ss.getAttribute(“xx”);
2. ส่วน getSession(boolean) นั้น parameter boolean ที่ส่งเข้ามาเป็นตัวบ่งบอกว่า ในกรณีที่ยังไม่มี session มาก่อนจะให้สร้าง session ขึ้นมาใหม่หรือไม่ ถ้าเป็น true จะสร้างใหม่ ถ้าเป็น false จะม่มีการสร้าง session ใหม่กรณีที่ยังไม่มี session ตัวอย่างเช่น (Code จากข้อ 1 เปลี่ยนแค่ บรรทัดที่ 5)

HttpSession ss = request.getSession(true);

จะไม่เกิดข้อผิดพลาดในบบรทัดที่ 5 แต่ถ้าเป็นเปลี่ยนเป็น

HttpSession ss = request.getSession(false);

จะเกิด error เป็น java.lang.NullPointerException ที่บรรทัดที่ 5
หมายเหตุ : โดยปกติ session จะถูกสร้างโดยอัตโนมัติ อยู่แล้ว อยากอยากเห็นผลการทำงานให้ทำการ Disable cookies ใน browser ที่ใช้งานก่อน

Tutorial : การใช้งาน DWR เบื้องต้น

สำหรับ DWR(Direct Web Remoting) เป็น Java library ที่ทำการ Convert Service ของ Java ไปเป็น JavaScript ทำให้ในฝั่งของ JavaScript สามารถเรียกใช้ method ใน class java ได้โดยตรง คำอธิบายสั้นๆจาก เว็บไซต์ DWR

DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible.

DWR is Easy Ajax for Java

สำหรับการทำงานโดยคร่าวๆเป็นดังภาพ

หรืออ่านแบบเต็มๆได้จาก DWR: Easy AJAX for JAVA

เครื่องไม้เครื่องมือที่ใช้
1. Windows XP Professional SP3
2. DWR Library Version 2.0.5
3. Eclipse IDE 3.5
4. Tomcat 6.0.18

ขั้นตอนในการพัฒนา
0. ขอข้ามขั้นตอนการติดตั้ง Tomcat , การ Download Eclipse ซึ่งคิดว่าน่าจะติดตั้งกันเป็นอยู่
1. ทำการ Download DWR จากเว็บ http://directwebremoting.org/dwr/download.html Downlaod เฉพาะ .jar มา
Read more