วันจันทร์ที่ 3 พฤษภาคม พ.ศ. 2553

คอนฟิก proxy ให้ svn

ให้แก้ไขไฟล์ ~/.subversion/servers ด้วยคำสั่ง
#gedit ~/.subversion/servers
เพิ่มรายละเอียดลงไปในส่วนของ [global] ตัวอย่าง
[global]
http-proxy-host = myproxyserver
http-proxy-port = 8080
http-proxy-username = foo
http-proxy-password = bar

วันจันทร์ที่ 19 เมษายน พ.ศ. 2553

EJB 3.0 @Stateless @EJB @Resource and JNDI clarity

EJB 3.0 @Stateless @EJB @Resource and JNDI clarity
การกำหนดชื่อของ Service
  • property name เทียบกับ ejb-jar.xml คือ ejb-name

  • property mappedName ใช้กำหนด global JNDI name
ตัวอย่าง
@Stateless // name() defaults to "A2"
public class A1 implements A { ... }

@Stateless(name="A2", mappedName="A2Global") // force product-specific JNDI name to "A1Global"
public class A2 implements A { ... }

การเรียกใช้
  • property name เทียบกับ ejb-jar.xml คือ ejb-ref-name ไว้สำหรับใช้เรียกผ่าน java:comp/env

  • property beanName เทียบกับ ejb-jar.xml คือ ejb-link

  • property mappedName เทียบกับ ejb-jar.xml คือ mapped-name ไว้เรียก global JNDI name
ตัวอย่าง
ภายใต้ application เดียวกัน(อยู่ภายใต้ ear เดียวกัน)
@EJB
private A a;

@EJB(beanName="A2")
private A a;

ต่าง application กัน
@EJB(mappedName="A1/local") // for JBoss
private A a;

@EJB(mappedName="A2Global")
private A a;

หมายเหตุ mappedName เป็น product-specific JNDI name ฉะนั้นระวังด้วยหาก application ต้องการความสามารถ portability ซึ่งใน EJB 3.1 ที่มีการกำหนดเรื่อง portable JNDI name ไว้ แนะนำให้ใช้ property lookup แทน

อ้างอิง
forums.sun.com
What is the relationship between @EJB and ejb-ref/ejb-local-ref?
Partial Deployment Descriptors

วันพฤหัสบดีที่ 8 เมษายน พ.ศ. 2553

HTTP method in REST protocol with Dojo's JsonRestStore

มาดูกันว่า dojox.data.JsonRestStore ใช้ HTTP method ไหนทำอะไรบ้าง

  • HTTP GET request to retrieve data

  • PUT request to change items

  • DELETE request to delete items

  • POST request to create new items

JsonRestStore ของ Dojo ทำงานคล้ายกับ Datasource ฝั่ง server การเปลี่ยนแปลงข้อมูลบน JsonRestStore (CRUD) จะส่งการเปลี่ยนแปลงนั้นผ่าน REST ไปยัง server ให้เลย ดังนั้นจึงสะดวกมากที่จะเขียนโปรแกรม CRUD โดยใช้ REST

เบื้องหลัง JsonRestStore นั้นใช้ dojox.rpc.JsonRest ทำหน้าที่ REST service นั่นเอง
ส่วนรายละเอียดและการใช้งานสามารถอ่านเพิ่มจาก RESTful JSON + Dojo Data

วันพุธที่ 7 เมษายน พ.ศ. 2553

หลากหลายวิธีใช้ XHR ข้าม domain ด้วย Dojo toolkit

เกริ่นก่อน เดิมการใช้ dojo.xhr-() น่าจะรวมถึงใช้ XMLHttpRequest ตรงๆด้วย จะไม่สามารถเรียก resource หรือ service ต่าง domain กันได้เช่น

จากหน้า http://foo.com/index.html ต้องการเรียกไปที่ http://bar.com/xxx แบบนี้จะไม่สามารถทำได้

เมื่อมีปัญหาก็ต้องมีทางออก วิธีต่อไปนี้เป็นวิธีแก้ไขสำหรับ Dojo toolkit มีหลายๆวิธีดังนี้

สำหรับจาวาสคริปท์เพียวๆก็น่าจะมีเหมือนกันแต่พอดีใช้ framework นี้อยู่ ใช้จาวาสคริปท์บน framework มันใช้ง่ายดี ไม่ฮาร์ดคอเท่าเพียวจาวาสคริปท์ ที่ต้องกังวลอีกหลายๆเรื่องเช่น cross-browser เป็นต้น

วันจันทร์ที่ 8 มีนาคม พ.ศ. 2553

แก้ปัญหา GPG Error เวลา Update Ubuntu

เมื่อสั่ง update package index ด้วย Update Manager หรือ apt-get update แล้วเกิด error ดังเช่น
W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures were invalid: BADSIG 584BD6410AAFAD78 Launchpad merlwiz79

วิธีแก้ไข
วิธีแรก ลอง update PGP key ใหม่ก่อนด้วยคำสั่ง
#sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 584BD6410AAFAD78

ตำแหน่งสีแดงให้แทนด้วย key ที่เตือนออกมา ถ้า add key ใหม่ได้ไม่มีปัญหา ก็จบไป แสดงว่า PGP key เปลี่ยน หลักจากนั้นสามารถ update package ได้เหมือนปกติ

แต่ถ้ามีข้อความ
gpg: requesting key 0AAFAD78 from hkp server keyserver.ubuntu.com
gpg: key 0AAFAD78: "Launchpad merlwiz79" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
แสดงว่า PGP key ไม่ได้เปลี่ยนแปลงให้แก้ไขด้วยวิธีที่สอง

วิธีที่สอง
ลบ package index ใน /var/lib/apt/lists/ แล้วให้ update ใหม่ ด้วยคำสั่งดังนี้
#sudo -i
#apt-get clean
#cd /var/lib/apt
#mv lists lists.old
#mkdir -p lists/partial
#apt-get clean
#apt-get update

เมื่อทำเสร็จแล้วจะลบ /var/lib/apt/lists.old/ ที่ backup ไว้ก็ได้

วันอาทิตย์ที่ 17 มกราคม พ.ศ. 2553

Sorting MP3 for Honda CIVIC 2010

ตาม topic เลยคืออยากให้เครื่องเสียงในรถเล่นไฟล์ MP3 จาก thumb drive ให้เหมือนกับที่เรียงในคอมฯ อุตส่าห์เปลี่ยนชื่อไฟล์เป็น 01, 02, ... ก็แล้ว เอามาเสียบฟังก็ยังไม่ยอมเล่นไฟล์เรียงตามตัวอักษร (alphabetical sort) เหมือนที่เห็นในคอม
ค้นไปเรื่อยๆเจอกับ FATSort ลงก็ง่ายๆเลย บน Linux - Ubuntu เปิด terminal ขึ้นมาสั่งติดตั้งด้วยคำสั่ง
#sudo apt-get install fatsort

โปรแกรมนี้จะทำหน้าที่เรียง FAT table ของไฟล์ใน thumb drive ตามตัวอักษร (alphabetical sort) แบบที่เห็นในคอม ซึ่งเครื่องเสียงในรถมันอ่านจาก FAT table นี่แหละ
เสียบ thumb drive เข้าไป copy เพลงลง thumb drive จะสร้างโฟล์เดอร์แยก album ก็ตามใจ หรือจะรวมๆเพลงเพราะๆไว้ในโฟล์เดอร์นึงแล้วเปลี่ยนชื่อไฟล์ด้วย 01, 02 ... เพื่อเรียงเพลงตามต้องการ
เสร็จแล้วก็ถึงคิวพระเอกของเรา FatSort ก่อนอื่นต้อง unmount thumb drive ก่อน ถ้าเทียบกับบน Windows คงเป็นการ save to remove storage device ก่อนจะถอด thumb drive (คนใช้ linux อยู่แล้วคงหาตำแหน่งของ device drive เป็นนะ ถ้าไม่เป็นก็ถามมา)
#umount /dev/sdc1

แล้วก็ FatSort
#sudo fatsort /dev/sdc1


แค่นี้ก็เรียบร้อย
สำหรับคนใช้ Windows ก็จะมีโปรแกรมสำหรับ Sorting FAT table ด้วยเหมือนกันชื่อ DriveSort รายละเอียดการใช้งาน Fixing the Honda Insight USB MP3 Sort Order

ขอบ่น Honda เรื่องการแก้ไขเสียง ต็อกๆ จากเครื่องยนต์หน่อยเหอะ ได้ยินคำล่ำลือเหมือนกันตอนแรกก็คิดว่าเป็นกันเยอะจริงหรอ ใครมาใส่ร้าย Civic สุดสวยของเรารึเปล่า ได้ข่าวเครื่องรุ่น 2010 แก้ปัญหาแล้ว ก็อุตส่าห์รอจนถอย Civic 2010 ออกมาตอนแรกประสบการณ์เยี่ยมจริงเครื่องนิ่มมากอัตราเร่งก็ดี ขับไปได้ 600 km. กว่าๆ มาแระต็อกๆ ไม่นึกว่าจะโดนกับตัวเองเซ็งโครต ขนาดช่วงนี้เห็นว่าเป็นช่วงรันอินขับแบบไม่เหยียบแล้วนะ

วันพุธที่ 6 มกราคม พ.ศ. 2553

BPEL or BPMN

เป็นอีกหนึ่งอย่างที่สนใจ หากมีเวลาว่าจะลองเล่นดูสักหน่อย แรกๆอ่านก็สับสนระหว่าง BPEL กับ BPMN ไปเจอความเห็นหนึ่ง เลยเอามาลงไว้ Re: Forking/contributing จากเรื่อง Open-Source BPEL takes the form of 'RiftSaw'
Depends on what you want. If you need to orchestrate services or build coarse grained WSDL services as a function of smaller grained WSDL services, then BPEL is the most obvious choice.

But if you need to manage human tasks or make the bridge between development and non technical people, then jPDL and BPMN are better suited.


Tom Baeyens
jBPM


อีกความเห็น Why use BPMN for BPEL? ของ Michael Rowley
ได้อธิบายว่าเนื่องจาก มาตราฐานของ WS-BPEL 2.0 ไม่ครอบคลุมถึง เครื่องหมาย, หรือสัญลักษณ์ต่างๆ(natation) และคงเป็นไปไม่ได้ที่จะสร้าง business process โดยเขียน BPEL ตรงๆด้วย XML ด้วยเหตุนี้ผู้ผลิตเครื่องมือ และนักพัฒนา BPEL จึงใช้ รูปภาพขึ้นมาแทน แต่เนื่องจากไม่มีมาตราฐานรองรับทำให้เครื่องมือของแต่ละเจ้าใช้ สัญลักษณ์แตกต่างกัน ซึ่งตรงนี้นี่เองที่ BPMN เข้ามาตอบโจทย์ตรงที่ทำความเข้าใจง่ายผู้ที่ไม่รู้จัก BPEL เลยหรือไม่รู้จัก BPMN เลย ก็สามารถทำความเข้าใจได้ และเมื่อใช้ BPMN ออกแบบเสร็จแล้วในการ implement ค่อยให้ผู้ที่เชี่ยวชาญ BPEL แต่ละค่ายไป implement ต่อไป ลองเข้าไปดูตามลิ้งค์มีตัวอย่าง BPEL ของ ActiveVOS, Eclipse BPEL Designer และ Oracle’s BPEL Process Manager จะเห็นว่ามีการใช้สัญลักษณ์ที่แตกต่างกัน

ปล.เหมือนคุ้นๆว่า Oracle มีเครื่องมือที่เปลี่ยน BPMN เป็น BPEL ได้ เคยเห็นแว็บๆนานแล้ว(ไม่แน่ใจ)