วันจันทร์ที่ 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 ได้ เคยเห็นแว็บๆนานแล้ว(ไม่แน่ใจ)

วันเสาร์ที่ 28 พฤศจิกายน พ.ศ. 2552

ปิดเสียง log-in ใน Karmic

จะเห็นได้ว่าไม่สามารถปิดได้ถึงแม้ไปตั้งใน Sound Preferences แล้ว
ต้นเหตุที่ปิดไปแล้วแต่เหมือนไม่ปิดคือ หน้า log-in ทำงานคนละ User กับที่ใช้งานอยู่ โดย log-in จะใช้ User คือ gdm ดังนั้นสามารถปิดเสียงได้โดยใช้คำสั่งดังนี้
#sudo -u gdm gconftool-2 --set /desktop/gnome/sound/event_sounds --type bool false

วันศุกร์ที่ 20 พฤศจิกายน พ.ศ. 2552

SpringMVC: ตอนหนทางของ Request กว่าจะมาเป็น Response

ใครเคยเขียน SpringMVC มาบ้างคงพอจะผ่านๆตามาบ้างกับ 6 ส่วนประกอบนี้
ซึ่งเมื่อจับมาวาดเป็นแผนภาพ ก็จะทำให้เข้าใจได้มากขึ้น

เริ่มต้นกันเลยดีกว่า

  1. มีใครสักคนส่ง Request เข้ามา ด่านแรกที่ต้องเจอคือ DispatcherServlet ถูกคอนฟิกไว้ใน web.xml ถ้า Reqest ตรงกับ url-pattern ที่กำหนด DispatcherServlet นี้ก็ทำงานไป
    * เรื่องชื่อของ DispatcherServlet ที่กำหนดไว้ก็สำคัญจะกล่าวต่อไป(รอไปก่อน)

  2. Request ที่เข้ามาถูกส่งไปตีความที่ HandlerMapping ว่า Controller ไหนจะเป็นผู้รับกรรมดี
    HandlerMapping มีอยู่หลายตัวเลือก ถ้าไม่เลือกเลย SpringMVC เองมีค่าพื้นฐานอยู่แล้วคือ BeanNameUrlHandlerMapping คู่กับ DefaultAnnotationHandlerMapping (สำหรับ Java5+) เขียนไปเดี่ยวก็งงมาดูตัวอย่างการใช้ BeanNameUrlHandlerMapping กันหน่อย

    <bean name="/home" class="com.gable.train.springmvc.test2.mvc.HomeController" />

    อ่านชื่อของ BeanNameUrlHandlerMapping ก็คงพอรู้ว่ามันแมพกับ Controller ยังไง นั่นก็คือใช้ชื่อของ bean นั่นเอง

  3. หลังจาก DispatcherServlet รู้แล้วว่าเป็น Controller ตัวใด DispatcherServlet จะรอช้าอยู่ใย Controller ตัวนั้นก็ถูกเรียกทำงาน ผลลัพธ์จากการทำงานที่ได้คือ ModelAndView

  4. ModelAndView ประกอบด้วยสองส่วนคือ ชื่อของ View ซึ่งจะไปหากันต่อไปว่าชื่อที่ระบุนี้ตรงกับ View ตัวไหน ส่วน Model คือแมพอ็อพเจคที่จะเอาไปแสดงผลบน View

  5. หลังจากได้ชื่อ View มาแล้ว จะนำชื่อไปตีความที่ ViewResolver ซึ่งทำหน้าที่คล้ายคลึงกับ BeanNameUrlHandlerMapping คือแมพชื่อ View เข้ากับ View
  6. ตัวอย่างการแมพชื่อเข้ากับ View

    <bean name="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    </bean>


  7. สั่งให้ View เรนเดอร์ผลลัพธ์เป็นอันจบ การเดินทางของ Request กว่าจะมาเป็น Response ได้เดินทางมาจนถึงจุดจบที่นี่เอง

  8. หมายเหตุ HandlerMapping และ ViewResolver สามารถเซ็ตการทำงานได้ในลักษณะของโช่(chain) คือมีได้หลายตัวสามารถเซ็ตลำดับผ่าน property order ไว้ต่อตอนหน้า
    หมายเหตุ2 ใครใช้ SpringMVC แบบ Annotation อาจไม่ได้เห็นภาพตรงตามนี้เนื่องจาก SpringMVC แบบ Annotation ช่วยลดข้อยุ่งยากในการคอนฟิก และที่เห็นชัดๆเลยคือการสร้าง Controller ตัดการ implements หรือ extends คลาสที่น่าสับสนออกไป ถ้าจำไม่ผิด Controller แบบเดิมมีตั้ง 7 ชนิด

Picture Credit: SpringInAction2

วันจันทร์ที่ 26 ตุลาคม พ.ศ. 2552

Recompiling Virtualbox Kernel Module

วันนี้เอาอีกสัก blog

ใครใช้ Virtualbox แล้วอัพเดท Linux kernal น่าจะเคยเจอว่า อาจจะ start VM ไม่ขึ้น
มีข้อความว่า 'The vboxdrv kernel module was either not loaded…' แล้วบอกให้ 'Re-setup the kernel module by executing ‘/etc/init.d/vboxdrv setup’ as root.'
recompile virtualbox ใหม่ก็ได้แล้ว
#sudo /etc/init.d/vboxdrv setup

สร้าง Icon เรียกโปรแกรมบน Desktop ของ Linux

บ่นๆก่อนเลยช่วงนี้แค่งานที่ office ก็หมดแรงแล้ว(จริงๆแล้วขี้เกียจ !^^)

พอดีลง Netbean แล้วมันสร้าง icon เรียกโปรแกรมไว้บนหน้า desktop จึงได้รู้
ตัวอย่างสคริปไฟล์ ~/Desktop/netbeans-6.7.1.desktop
[Desktop Entry]
Encoding=UTF-8
Name=NetBeans IDE 6.7.1
Exec=/bin/sh "/media/src/IDE/netbeans-6.7.1/bin/netbeans"
Icon=/media/src/IDE/netbeans-6.7.1/nb6.7/netbeans.png
Categories=Application;Development;Java;IDE
Version=1.0
StartupNotify=true
Type=Application
Terminal=0

แค่อ่านรายละเอียดก็พอรู้กันแล้วใช่ไหมว่าพารามิเตอร์แต่ละตัวมีความหมายว่าอย่างไรกันบ้างเอาหลักๆแล้วกัน
- Name เป็นชื่อที่จะเห็นบนหน้า desktop
- Icon เป็นรูปที่จะแสดงบนหน้า desktop
- Exec ตำแหน่งของโปรแกรมจริงๆ
- Terminal มีค่า 0 คือไม่ต้องเปิด terminal ขึ้นเป็น background

มันสร้างให้แต่ผมลบทิ้งรก desktop แต่เอาว่าได้รู้แล้วกันว่ามันมีวิธีนี้ในการสร้าง Icon ไว้เรียกโปรแกรมได้ด้วย อ๋อ OS Linux Ubuntu นะ Windows ไม่ต้องแปลกใจเพราะมันไม่มีจะทำได้ก็แค่ link อย่างเดียว (แอบกัด Windows ซะหน่อย)