วันอาทิตย์ที่ 28 สิงหาคม พ.ศ. 2554

ความแตกต่างของ Mouse event และ Mouse event2

ในบทความตอนนี้เราจะกล่าวถึงเรื่องของ Java Bean ในส่วนของ Introspection 

อันดับแรกเรามาทำความรู้จักกับ Introspection กันก่อน ว่ามันคืออะไร ใช้เพื่ออะไร ทำงานอย่างไร?

Introspection คืออะไร ?
Introspection เป็นกลไกของ Java Bean อย่างนึง ซึ่งปกติแล้ว Java จะมี Introspection Class อยู่ใน Bean Package อยู่แล้ว 

เราใช้มันเพื่ออะไร ?
เราจะใช้ Introspection เพื่อจะให้เรามี Method ที่เป็น static method เพื่อทำให้เราสามารถดึงข้อมูลจาก Properties , methods , events หรือที่เรียกสั้นๆว่า " P M E " ขึ้นมาใช้งานได้ 

Introspection ทำงานอย่างไร ?
หากเรามี bean ชื่อว่า Mybean และเราต้องการที่จะแสดงข้อมูล P M E ของ bean ในแบบของเราเองด้วย เราจะต้องสร้างไฟล์ .java ที่มีรูปแบบดังนี้

ชื่อbeanBeanInfo.java

ตัวอย่างเช่น หาก bean ชื่อว่า Mybean จะต้องสร้างไฟล์ .java ขึ้นมาชื่อว่า MybeanBeanInfo.java 
การทำงานของ BeanInfo คือ จะเป็นเพียงแค่ข้อกำหนด BeanInfo ไม่ใช่ Bean  BeanInfo เป็นเพียงแค่ข้อมูลเกี่ยวกับ Beans นั้น และ Java Bean จะสร้าง Class จากข้อกำหนดนี้ 

*หมายเหตุ หากไม่มีไฟล์ BeanInfo Java Bean จะใช้เป็นค่า Default 

Casestudy " Mouse events & Mouse events 2 "

อันดับแรกคลิกดาวน์โหลด mouseevents + mouseevents 2 : AllMouseevent.rar

จากนั้นหากการดาวน์โหลดเรียบร้อยจะได้ ไฟล์ชื่อ AllMouseevent.rar ภายในไฟล์นี้จะมี mouseevents และ  mouseevents2

Mouseevents

ในภายโฟลเดอร์ mouseevents จะมีไฟล์

  1. mouseevent.mft 
  2. mousereceiver.java 
  3. mousesource.java 
  4. mousereceiver.class 
  5. mousesource.class

Step 1 ( เตรียมไฟล์ mouseevents )
  • ให้ทำการ complie ไฟล์  mousereceiver.java , mousesource.java ตามวิธีที่ได้กล่าวมาแล้ว ( หากใครลืมคลิก วิธี compile เพื่อสร้าง jar file ) 
  • จากนั้นหาก compile เสร็จเรียบร้อยจะได้โฟลเดอร์ mouseevents และภายในโฟลเดอร์นี้จะมีไฟล์ Mousereceiver.class และ Mousesource.class อยู่
  • สร้าง file.jar จาก minifest file ที่ให้มา 
  • หากสร้างเสร็จเรียบร้อยจะได้ไฟล์ mouseevents.jar ซึ่งเป็นไฟล์ที่พร้อมใช้งานใน Beanbox แล้ว
Step 2 ( ใช้งาน mouseevents )

  • เปิด Beanbox แล้วให้โหลดไฟล์ mouseevents.jar เข้าสู่ Beanbox 
  • หากโหลดเรียบร้อยในหน้าต่าง ToolBox จะได้ MouseReceiver และ MouseSource มาอยู่ใน list 

  • ในหน้าต่าง Beanbox ให้นำเอา MouseReceiver และ MouseSource เข้ามา
  • MouseReceiver ใช้สำหรับแสดงผลว่า MouseSource ทำอะไรบ้าง
  • MouseSource เป็นตัวรับ event จาก User
รูปแสดง Event ของ MouseSource

รูปแสดง Event ของ MouseReceiver

  • จะสร้างสัมพันธ์ระหว่าง MouseReceiver และ MouseSource โดยจะยกตัวอย่าง event เป็น mouseClicked

  • หาก click ที่ MouseSorce แล้ว MouseReceiver จะปรากฏ event ที่เราได้สร้างความสัมพันธ์ไว้
Mouseevents2

ในภายโฟลเดอร์ mouseevents2 จะมีไฟล์
  1. mouseevent2.mft
  2. Mousereceiver2.java
  3. Mousesource2.java
  4. Mousereceiver2BeanInfo.java  
  5. Mousesource2BeanInfo.java 
  6. Mousereceiver2.class
  7. Mousesource2.class
  8. Mousereceiver2BeanInfo.class
  9. Mousesource2BeanInfo.class
จะเห็นได้ว่าใน Mouseevents2 นี้จะมีไฟล์ Mousereceiver2BeanInfo.java , Mousesource2BeanInfo.java เพิ่มขึ้นมา ซึ่งจะเป็นการใช้กลไก Introspection นั่นเอง

Step 1 ในการเตรียมไฟล์ Mouseevents2 เพื่อใช้ใน Beanbox นั้น สามารถทำวิธีเดียวกับการเตรียมไฟล์ Mouseevent ได้

Step 2 
  • การ LoadJar เข้ามาใน Beanbox สามารถทำวิธีเดียวกับ Mouseevent ได้
  • หากโหลด mouseevents2.jar เข้ามาแล้ว ในหน้าต่างของ toolbox จะมี Mousereceiver2 และ Mousesource2 อยู่ใน list
  • ในหน้าต่าง Beanbox ให้นำเอา MouseReceiver2 และ MouseSource2 เข้ามา
  • หาคลิกเลือก Mousesource2 และ Mousereceiver2 ในหน้าต่าง Beanbox แล้ว คลิก Edit > Event จะเห็นได้ว่า ในส่วนของ Mousesource2 Event จะเหลือแค่ mouse , mouseMotion เท่านั้น และในส่วนของ Mousereceiver2 จะซ่อน event ไว้ทั้งหมด นั่นเป็นเพราะว่า Mouseevents2 นั้นใช้กลไกลของ Introspection นั่นเอง
รูปแสดง Event ของ Mousesource2

รูปแสดง Event ของ Mousereceiver2

สรุป
ความแตกต่างของ Mouseevents กับ Mouseevents2 คือ
  • Mouseevents จะเป็น Bean ธรรมดาซึ่งไม่ได้นำกลไกของ Introspection มาใช้ ดังนั้น Java จึงใช้ค่า Default นั่นคือ เมื่อ LoadJar เข้ามาใน Beanbox แล้ว ทุก Properties จะถูกแสดงทั้งหมด
  • Mouseevents2 เป็น Bean ที่ได้นำกลไกของ Introspection เข้ามาใช้ในส่วนของ Feature Descriptor นั่นคือใช้ EventDescriptor และ MethodDescriptor เพื่อที่จะแสดงแค่ Event ที่เราต้องการใช้เท่านั้น เมื่อ LoadJar เข้ามาใน Beanbox แล้ว จะแสดงเพียงแค่ Event ที่ต้องการให้แสดงเท่านั้น
ในส่วนของ ความแตกต่างของ Mouseevents และ Mouseevents2 ก็มีเพียงเท่านี้ ในตอนต่อไปมาติดตามกันว่าจะมีบทความดีๆเรื่องอะไร มาแชร์กันอีกนะคะ ขอบคุณที่ติดตามมาถึงจุดนี้ค่ะ .

วันพฤหัสบดีที่ 25 สิงหาคม พ.ศ. 2554

Google App Engine ง่ายนิดเดียว


วันนี้เรามาลองเขียน  App Engine ของ google เล่นๆ กันดูดีกว่า  แต่ในที่นี้เราจะใช้  netbean  ที่เราคุ้นเคยมาเขียนกัน
ก่อนอื่นเลย เราจะต้องติดตั้ง google app engine ใน netbean ของเราเสียก่อน
ขั้นแรก Download Google App Engine SDK for java ที่ http://googleappengine.googlecode.com/files/appengine-java-sdk-1.5.3.zip
ขั้นที่สอง  แตกไฟล์ zip แล้วไปวางที่ c:
ขั้นที่สาม เปิดโปรแกรม netbean เพื่อเพิ่ม app engine โดยเข้าไปที่  Tool ->  Plugins -> Setting แล้วกดปุ่ม add
Name -> ใส่ Google App Engine
ขั้นที่สี่ เพิ่ม Plugin โดยเข้าไปที่ Tool -> Plugins -> Availadle Plugins แล้วเลือกติดตั้ง Google App Engine Module (Server, Configuration Editor, Deployment, Editor Hints และ Samples)
ขั้นที่ห้า เลือกแทป services แล้วคลิกขวาที่ servers เลือก add server
แล้วเลือก Google App Engine แล้วกด next แล้วเลือกโฟลเดอร์ที่เก็บ Google App Engine SDK for java
จากนั้นกด next แล้วเลือก port ของ google app engine ที่ต้องการ
ต่อมาเราจะนำโปรแกรมตัวอย่างที่ netbean มีไว้ให้ทดลองเล่นอยู่แล้ว ซึ่งสามารถสร้างได้ดังนี้
ขั้นแรก File -> New Project ->Java Web -> Web Application แล้วกด Next

หน้าต่อมาจะเป็นหน้าให้ตั้งชื่อ และที่เก็บไฟล์ จากนั้นกด Next
จากนั้นจะมีหน้าต่างให้เลือก Server ก็ให้เลือก Google App Engine แล้วกด Finish
จากนั้นก็เลือกโปรแกรมตัวอย่าง  เพื่อนำมาลองใช้กับ Google App Engine โดยในที่นี้เลือกโปรแกรม HelloJsp
เมื่อทำการ Copy โปรแกรมเสร็จเรียบร้อยแล้ว ให้ทำการ run ก็จะได้รูปดังภาพ

ต่อมาก็จะเป็นการ Deploy หน้าเว็บของเราขึ้นสู่เว็บของ google  แต่ก่อนอื่น เราจะต้องมี Account ของ google เสียก่อน จากนั้นเราก็จะต้องไปสร้าง Application ที่หน้า https://appengine.google.com/start
ซึ่งก็จะมีการยืนยันตัวตนด้วยการส่งรหัสผ่านทางโทรศัพท์
เมื่อทำการยืนยันเสร็จก็จะมีหน้าให้สร้าง Application ก็ให้ทำตามขั้นตอน  เมื่อเราได้ทำตามขั้นตอนเสร็จแล้ว  ก็มาถึงการทำการ Deploy เสียที
ขั้นแรก  ทำการตั้งชื่อ Application โดยเข้าไปที่ WEB-INF -> appengine-web แล้วทำการตั้งชื่อที่ Application Name (ชื่อ Application Name จะต้องเหมือนชื่อ Application Identifier ตอนที่เราสร้าง Application บนเว็บ)
ขั้นที่สอง คลิกขวาที่ Project guestbook  แล้วเลือก Deploy to Google App Engine (ถ้าเป็นการ Deploy ครั้งแรก  จะมีการถาม e-mail และ password)
จากนั้นเราก็จะได้  web application ดังตัวอย่างนี้ http://component-kmitl.appspot.com/
ง่ายมากเลยใช่มั้ยครับ  ยังงัยก็ลองทำแล้วเอามาอวดกันบ้างนะครับ