วันศุกร์ที่ 28 กันยายน พ.ศ. 2555

จัดการ VirtualBox ผ่านเว็บไซต์ด้วย phpvirtualbox

เมื่ออาทิตย์ที่แล้วพี่อดุลย์แห่ง NanoSoftTech ทักผ่าน Facebook มาถกปัญหาเกี่ยวกับ phpvirtualbox ซึ่งนานๆ ติดตั้งทีก็เล่นเอาลืมเหมือนกัน และการตั้งค่าในเวอร์ชั่นใหม่มันจุกจิกกว่าเดิมนิดหน่อย เอาล่ะเพื่อกันลืมก็ขอเขียนเป็น How-To ไว้ซักหน่อยแก้ลืมครับ มาลงมือกัน ก่อนอื่นเราต้องมี VirtualBox ก่อน ต้องใช้รุ่น Oracle เท่านั้น ใช้ Open Source Edition ไม่ได้นะครับ :)



แปลงร่างกันก่อน



sudo -s



จากนั้นใช้คำสั่ง wget เพื่อเอา VirtualBox มาติดตั้ง เลือกรุ่นที่ต้องการให้ดูจากหน้าดาวน์โหลดของ VirtualBox ของผมใช้ Ubuntu Server 12.04 LTS รุ่น Precise Pagolin ครับ



wget http://download.virtualbox.org/virtualbox/4.2.0/virtualbox-4.2_4.2.0-80737~Ubuntu~precise_amd64.deb



จากนั้นสั่งติดตั้งด้วยคำสั่ง



dpkg -i virtualbox-4.2_4.2.0-80737~Ubuntu~precise_amd64.deb



เมื่อติดตั้งได้แล้ว ให้เพิ่มผู้ใช้ vbox และกำหนดให้อยู่ในกลุ่ม vboxusers



useradd -m vbox -G vboxusers



กำหนดรหัสผ่านให้ผู้ใช้ vbox



passwd vbox



สร้างไฟล์ /etc/default/virtualbox เพื่อเก็บ config ของ VirtualBox



vi /etc/default/virtualbox



ใส่ข้อมูลลงไปดังนี้



VBOXWEB_USER=vbox



จากนั้นกำหนดให้ Web Services ของ VirtualBox ทำงานทุกครั้งที่เปิดเครื่อง และสั่ง start service โดยใช้คำสั่ง



update-rc.d vboxweb-service defaults
/etc/init.d/vboxweb-service start



ตอนนี้เราก็ได้ VirtualBox ที่เราเรียกกันว่า VirtualBox Headless กันแล้ว ทีนี้มาติดตั้ง phpvirtualbox กันครับ ติดตั้งแพคเกจที่จำเป็นต้องใช้กันก่อน



apt-get install apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common apache2 apache2-doc apache2-suexec libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libapr1 php5-common php5-mysql php5-suhosin php-pear wget



ดาวน์โหลด phpvirtualbox จากเว็บไซต์โครงการ http://code.google.com/p/phpvirtualbox



wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-10.zip



แตกไฟล์ zip แล้วคัดลอกไปยัง /var/www



unzip phpvirtualbox-4.1-10.zip
mv phpvirtualbox-4.1-10 phpvirtualbox



แก้ไขค่า config ใน /var/www/phpvirtualbox ดังนี้



cp config.php-example config.php
vi config.php



ใส่ข้อมูลในไฟล์ ดังนี้



var $username = 'vbox';
var $password = 'very-secret-password';



เมื่อตั้งค่าเสร็จให้คุณสั่ง start หรือ restart Apache



/etc/init.d/apache restart



แล้วเปิดเว็บ browser ไปยังเซิร์ฟเวอร์ของเราได้เลย ตัวอย่างเช่น http://my-virtualbox-server.com/virtualbox/ จะปรากฎหน้าจอให้เราใส่ username และ password คือ admin ที่เหลือก็เหมือนการทำงานบน GUI ปกติแล้วครับ :)


พลาดไม่ได้กับการแข่งขันพัฒนา Workflow Application ด้วย Joget Workflow Management

หากคุณมีความสนใจในการพัฒนา Workflow Application ด้วย Joget Workflow Management พลาดไม่ได้กับการแข่งขันการพัฒนา Workflow Application ชิงเงินรางวัลกว่า 100,000 บาท พร้อมรับโอกาสการได้งานทำหรือเป็นผู้ประกอบการใหม่ในงาน Global Entrepreneurship Week Thailand 2012 ซึ่งเป็นงานรวบรวมผู้ประกอบการและนักลงทุนทั่วโลก!



การแข่งขันจะเป็นการแข่งขันแบบเปิดไม่ต้องมานั่งแข่งขันกันในงาน ไม่ต้องเสียเวลาเดินทาง เพียงคุณลงทะเบียนเข้าร่วมการแข่งขันที่ http://joget.gewthailand.com เลือกโจทก์ที่ต้องการทำ ให้เวลาการพัฒนา 1 เดือน



กำหนดการ




  • วันที่ 11-21 ตุลาคม 2555 ลงทะเบียนเข้าร่วมแข่งขัน

  • วันที่ 11 13 พฤศจิกายน 2555 ส่งผลงานผ่านเว็บ

  • วันที่ 13-16 พฤศจิกายน 2555 ตัดสินผลงานและประกาศผู้ชนะเลิศ 3 อันดับ

  • วันที่ 18 พฤศจิกายน 2555 ผู้ที่ชนะเลิศ 3 อันดับ รับรางวัลในงาน Global Entrepreneurship Week Thailand 2012

    รางวัล


  • ชนะเลิศอันดับ 1 เงินรางวัล 50,000 บาท พร้อมฝึกงานที่ SIPA


  • ชนะเลิศอันดับ 2 เงินรางวัล 30,000 บาท พร้อมฝึกงานที่ SIPA

  • ชนะเลิศอันดับ 3 เงินรางวัล 20,000 บาท พร้อมฝึกงานที่ SIPA



รู้จัก Joget Workflow Management



Joget Workflow Management เป็นซอฟต์แวร์ช่วยสร้าง Workflow Application อยู่ในรูปแบบ Web Application เพียงแค่กำหนด Workflow สร้าง Form กำหนด Data List และกำหนดรูปแบบการแสดงผลเท่านี้คุณก็สามารถสร้าง Workflow Application ได้แล้วโดยไม่ต้องลงมือเขียนโปรแกรม





หากคุณยังไม่ได้ลอง Joget Workflow Management สามารถดาวน์โหลดโปรแกรมได้ที่ http://www.joget.org ติดปัญหาไม่ทราบจะสอบถามใคร ติดต่อชุมชนผู้ใช้ที่ http://community.joget.org


วันพฤหัสบดีที่ 13 กันยายน พ.ศ. 2555

อบรมการพัฒนา Workflow Application ด้วย JoGet Workflow Management ฟรี!

SIPA ร่วมกับ Open Dynamic อบรมการพัฒนา Workflow Application ด้วย JoGet Workflow Management ให้กับมหาวิทยาลัยเข้าร่วมโครงการ 4 แห่ง เพื่อเรียนรู้การพัฒนา Workflow Application และเป็นการเตรียมตัวเข้าร่วมการแข่งขัน Workflow App Building Compettition ชิงเงินรางวัลกว่า 100,000 บาท สำหรับท่านที่พลาดการอบรม หรือต้องการเรียน JoGet Workflow Management เพิ่มเติม สามารถสมัครอบรม JoGet อีกรอบได้ที่ http://bit.ly/jogetworkflow ด่วน! รับจำนวนจำกัดเท่านั้น




  • การอบรมเป็นภาษาอังกฤษ ไม่มี Sub Thai

  • เรียนที่ห้อง Lab ของ SIPA รับเพียง 30 ท่านเท่านั้น

  • เครื่องคอมพิวเตอร์ใช้ระบบปฏิบัติการ Linux เครื่องมือครบครัน (หากไม่ถนัดสามารถเอาโน๊ตบุคมาเองได้ กรุณาเอาปลักพ่วงมาด้วย)

  • ฟรี! สิทธิ์เข้าร่วมแข่งขัน Workflow App Builder Competition

  • ฟรี! ไม่เสียค่าใช้จ่าย


สร้าง Work Flow Application ง่ายๆ ด้วย JoGet

เก็บตกจากอบรมที่มหาวิทยาลัยรังสิตและมหาวิทยาลัยนอร์ทกรุงเทพซึ่งการอบรมสนุกสนานเกินไปหน่อย ออกแนวๆ ดูหนัง sound track แบบไม่มีซับไทย เล่นเอานักศึกษาหลายคนเหวอไปกับอาจารย์ฮิวโก้เลยล่ะ เนื่องจากตามกันไม่ค่อยทันผมก็เลยขอยกตัวอย่าง Work Flow Application ง่ายๆ ซักตัวเผื่อระรึกความหลังกันได้บ้าง ตัวอย่างคือ โปรแกรมใบลา แบบง่ายๆ (คุ้นมั๊ย) สถานการณ์เราเป็นแบบนี้ครับ



" พนักงานที่ต้องการลาต้องกรอกใบลาให้กับผู้จัดการอนุมัติ หากผู้จัดการอนุมัติให้ลาได้ก็ทำการแจ้งให้กับผู้ขออนุญาติทราบผ่านทาง E-mail และอัพเดทฐานข้อมูล(อะไรซักอย่าง เดี๋ยวตอนหน้ามาเล่นกัน) หากไม่อนุญาติก็แจ้งให้ทราบผ่านทาง E-mail เช่นกัน "



จากสถานการณ์ข้างต้นเราจะพบว่ามี Paticipant อยู่ 2 คนด้วยกัน คือ พนักงาน (Applicant) และ ผู้จัดการ (Approver/Manager) อีกส่วนหนึ่งคือ Paticipant ที่ไม่ใช้คนคือ System ที่จะทำหน้าที่เกี่ยวกับการส่ง E-Mail และอัพเดทฐานข้อมูล (หัด Route แบบ AND) เอาล่ะมาลงมือกันเลย



Workflow จะมีหน้าตาแบบนี้ครับ



ภาพ Workflow



มาสร้าง Application กันก่อนให้ชื่อว่า Leave Application กำหนด



App ID : leaveApp
App Name : Leave Application



กดปุ่ม Launch Workflow Designer สร้าง Workflow หน้าตาเหมือนภาพข้างบนครับ



ข้อมูล Process Properties กำหนดดังนี้



Name : Leave Process
ID : leave_process
Workflow Varible : status



ข้อมูล Human Paticipant



Name : Applicant
ID : applicant
Type : Paticipant



Name : Approver
ID : approver
Type : Paticipant



ข้อมูล System Paticipant



Name : System
ID : system
Type : System



ข้อมูล Activity



Name : Apply Leave Form
ID : applyleaveform



Name : Approve Leave Application
ID : approveleaveapplication



ข้อมูล Tool



Name : Notification Rejected
ID : notification_rejected



Name : Update Database
ID : update_database



Name : Notification Approved
ID : notification_approved



ข้อมูล Transition ตรงที่มี varible (เส้นทึบสีฟ้า) กำหนดดังนี้



Type : Condition
Expression : status=="Approved"



ข้อมูล Route แบบ AND (ที่มีเครื่องหมายบวกตรงกลาง) กำหนดดังนี้



Split Type : AND



เมื่อได้ Workflow แล้วกด Deploy Workflow ที่เราสร้างขึ้นไปยัง Server ของเราได้เลย หลังจากนี้ให้ทดสอบ Flow โดยการสั่ง Run Process แล้วตามดูจาก Running Processes Monitor, Complete Process หรือใช้ Audit Trail เพื่อดูการทำงานของ Flow ว่าทำงานถูกต้องหรือไม่ จากนั้นเราจะมาทำการกำหนดผู้ใช้ให้กับ Application ให้ดู ตรง Tab ชื่อ Map Participants to Users ก่อน ~ ถ้าดูยากไปกำหนดให้ใครซักคนเป็น Applicant และ Approver ก่อนก็ได้ครับ :P



กำหนดผู้ใช้ในส่วน Applicant เป็น



Type : Performer
Value : Activity Definition Id :runProcess



กำหนดผู้ใช้ในส่วน Approver เป็น



Type : Group
Value : Managers



เมื่อกำหนดผู้ใช้ได้แล้วเราจะมาสร้าง Form กัน ให้คลิกไปที่ Tab ที่ 2 คือ Map Activities to Form ส่วน Acitiviy แรกคือ Apply Leave Form กดปุ่ม Add/Edit Form จากนั้นจะมีหน้าต่างให้เราเลือกฟอร์ม ให้กด Create New Form เราจะสร้างฟอร์มหน้าตาอย่างนี้ครับ



Apply Leave Form



กำหนดค่าดังนี้



Form Name : Leave Application
Form ID : leaveForm
Table : leaves



กำหนดค่า Section ดังนี้



Label : Leave Application Form



ส่วน Field ต่างๆ กำหนดดังนี้



Label : Name
Type : Text Field
Validation : Mandtory



Label : Start Date
Type : Date Picker
Validation : Mandtory



Label : End Date
Type : Date Picker
Validation : Mandtory



Label : Reason
Type : Text Area



เมื่อได้ฟอร์มแล้วกด Save หากต้องการดูว่าหน้าตาออกมาเป็นยังไงกดปุ่ม Preview ข้างบนครับ :) จากนั้นกลับไปที่หน้า Map Activities to Form อีกครั้ง ในส่วน Approve Leave Application กด Add/Edit Form เราจะสร้างฟอร์มหน้าตาอย่างนี้ครับ



Approve Leave Application



กำหนดค่าดังนี้



Form Name : Approve Leave Application
Form ID : approveleaveapplication
Table : leaves



กำหนดค่า Section ดังนี้



Label : Approve Leave Application



เพิ่ม Sub Form เข้ามาและกำหนดค่าดังนี้



Label : (ลบชื่อ Label ออก)
Form ID : Leave Application
Readonly : (กด checkbox กำหนดให้อ่านได้อย่างเดียว)



ขั้นตอนนี้เราจะได้หน้าตาของแบบฟอร์ม Leave Application โผล่ออกมา จากนั้นเราจะเพิ่ม Radio Button เพื่อกำหนดเป็น Approved และ Rejected กำหนดค่าดังนี้



Label : Approval
Type : Radio
ID : approval
Options :




  • ค่าแรก




    • Value : Approved

    • Label : Approved


  • ค่าที่สอง




    • Value : Rejected

    • Label : Rejected




Validation : Mandtory
Workflow Variables : status



เพิ่มลูกเล่นให้กับ Form ของเราอีกนิดหน่อย หากว่า Approver/Manager ไม่อนุมัติในลาให้เรา คลิกที่ปุ่ม Rejected แล้วแบบฟอร์มจะแสดงกล่อง Text Area ให้กรอกหมายเหตุเพิ่มเติม วิธีการทำมีดังนี้



ให้เพิ่ม Section มาอีก 1 อันกำหนดค่าดังนี้



Label : Rejected
Visibility :
Field ID to control this Section : approval
Field value to display this Section : Rejected



จากนั้นเพิ่ม Text Area เข้าไปกำหนดค่าดังนี้



Label : Remark
Type : Text Area
ID : remark



ทีนี้ Save และ Preview ดูนะครับว่า กดปุ่ม Rejected แล้วมี Section ส่วน Remark ขึ้นมามั๊ย เอาคร่าวๆ แค่นี้ก่อนครับ :) ทีนี้กลับมาที่หน้า Leave App ของเรา เพื่อสร้าง User View เพื่อให้ผู้ใช้เข้าใช้งาน App หน้านี้ หน้าตาของ UserView ที่จะสร้างเป็นแบบนี้





ลงมือกันเลย กดไปที่ Userview โปรแกรมจะเปิดหน้า User View ขี้นมาให้กดปุ่ม Create New Userview จากนั้นกำหนดค่าดังนี้



Name : Leave Application Portal
ID : leavePortal



โปรแกรมจะเปิดหน้า UserView Designer ขึ้นมา ให้สร้าง Category ชื่อ Main จากนั้นเพิ่ม Menu ลงไปดังนี้



Label : Home
Element : HTML Page
Content : Welcome to Leave Application Portal



Label : Inbox
Element : Inbox
Assignments to Display : Assignment for A Process Only
Process : Leave Process
UI :




  • Show Number of Rows In Menu : (check เพื่อแสดงจำนวนข้อมูลใน Inbox)



Label : New Leave
Element : Run Process
Assignments to Display : Assignment for A Process Only
Process : Leave Process
Run process without confirmation screen? : (check - เพื่อไม่ต้องถามคำถามก่อน Run Process)
Show in popup dialog? : (เอาออก - เพื่อให้แสดงผลในหน้าเดียวไม่ต้องเปิดหน้าแสดงผลแบบ Dialog)



จากนั้น Save สั่ง Publish Application แล้ว Launch App ดูครับ เราจะได้หน้าตา Application ของเราอย่างนี้



Leave Application Portal



ลองใส่ข้อมูลดูครับ





Logout แล้วลอง Login เป็น Clark (Kent)





จะพบว่ามีเอกสารรอ Approve อยู่ 1 ฉบับหน้าตาแบบนี้





กดเพื่อเข้าไปอ่าน





ถ้าเลือก Rejected แบบฟอร์มจะให้กรอกเหตุผลของการไม่อนุมัติดังภาพ





ครั้งหน้าเราจะมาลองเล่น




  • การเพิ่ม Data List

  • การ Map Tools to Plugins

  • สั่งให้ส่ง E-Mail เตือน, Update Database ฯลฯ

  • เล่นกับ Hash Variable



อ้อเกือบลืมตัวอย่างไฟล์สมารถดาวน์โหลดได้ที่ http://pub.thaiopensource.org/joget-archive/Apps/ ครับ


วันอาทิตย์ที่ 9 กันยายน พ.ศ. 2555

วิธีติดตั้ง Oracle JDK 7 บน Ubuntu 12.04 LTS

ลืมไปว่า package ที่เกี่ยวข้องกับ sun java ถูกถอดออกไปจาก repository แล้ว เนื่องจาก Oracle เปลี่ยนแปลงเรื่อง distribution license agreement พอนึกได้ก็เลยมาเขียนวิธีการติดตั้งไว้สักหน่อย สำหรับ Debian/Ubuntu จะมีวิธีการติดตั้งที่แปลกออกไป เนื่องจากการ config จะไป config path ที่ /etc/alternative กรณีที่เรามีโปรแกรมคล้ายๆ กันอยู่หลายตัว ในที่นี้คือ OpenJDK และ Oracle JDK วิธีการติดตั้งมีดังนี้



ดาวน์โหลด Oracle JDK มาจาก http://www.oracle.com/technetwork/java/javase/downloads/index.html จากนั้น คลี่ไฟล์ไปยัง /usr/lib/jvm/



เพิ่มค่า alternative ดังนี้ (ยกตัวอย่างเป็น jdk1.7.0_04)



sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_04/bin/javac 1
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_04/bin/java 1
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.7.0_04/bin/javaws 1



จากนั้นตั้งค่ารายตัวดังนี้



sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws


วันจันทร์ที่ 3 กันยายน พ.ศ. 2555

พัฒนา Foursquare ของตัวเองด้วย MongoDB บน Cloud

ทีม RedHat OpenShift ได้นำเสนอ Video พัฒนา Foursquare ของตัวเองด้วย MongoDB บน OpenShift ซึ่ง Video นี้นำเสนอความสามารถในเรื่องของการทำ index แบบ geospatial บน MongoDB และการออกแบบ collection กำหนดคุณสมบัติ ให้ทำงานได้เหมือนกับ Foursquare อยากรู้ว่าทำยังไง สามารถดูได้จาก Video ข้างล่างครับ




วันอาทิตย์ที่ 2 กันยายน พ.ศ. 2555

เก็บตกเรียน JoGet Workflow Management วันที่สอง

วันที่สองของการอบรมนี้เป็นการเรียน JoGet ในส่วน Form, User View และ Data List วันแรกเราได้สร้าง Work Flow ขึ้นมาและทดสอบ Flow ว่าทำงานถูกต้องหรือไม่ ตามเงื่อนไขต่างๆ ที่เราได้กำหนด จากนั้นก็จะเข้าสู่ขั้นตอนการสร้าง Form ซึ่งฟอร์มนี้จะถูก map เข้ากับ Activity ที่คนจะเป็นคนทำ สำหรับ Tools ที่อยุ่ในส่วน System นั้นจะถูกทำโดย Plugin ดังนั้น Activity ทั้งหมดจะต้องถูก map ไปที่ Form ครับ



หลังจากสร้างฟอร์มและ map เข้าไปยัง Activity ต่างๆ ได้แล้ว เราก็ต้องมาทำการทดสอบ WorkFlow อีกรอบโดยการ Key ข้อมูลทดสอบจาก Form เพื่อตรวจสอบการทำงานของ Form และ Binding Varible ต่างๆ อีกครั้ง จากนั้นจะเข้าสู่การสร้าง Data List และ User View เพื่อให้ผู้ใช้เข้าใช้งานจากหน้า Application เท่านั้น ไม่ใช่เข้าสู่หน้าของ JoGet โดยตรง นอกจากนี้เรายังสามารถกำหนด permission ให้กับแต่และหน้าของ User View ได้ว่าจะให้ผู้ใช้กลุ่มไหนเข้าไปดูได้บ้างอีกด้วย



สำหรับการพัฒนาเพื่อทำ Integration เข้ากับ JoGet นั้นง่ายมาก JoGet เปิดช่องทางไว้หลายรูปแบบ ทั้งการเขียนผ่าน Web Service เพื่อสั่งและรับข้อมูลในรูปแบบ JSON และ XML รวมไปถึงการเชื่อมโยงกับฐานข้อมูลโดยตรงได้เช่นกัน การย้าย Workflow Application จากระบบหนึ่งไปอีกระบบหนึ่งก็ทำได้ง่ายเช่นเดียวกัน เพียงแค่สั่ง Export Application เท่านั้น แล้วเอาไฟล์ที่ได้ไป Import อีกระบบหนึ่ง สำหรับรายงานในรูปแบบที่เราต้องการ สามารถใช้ Jasper Report เข้าใช้งานได้ หรืออาจจะใช้ข้อมูลจากการ Export จาก Data List ได้เช่นกัน สำหรับการอบรม JoGet ทั้ง 2 วันนี้อาจจะดูเร่งด่วนแต่ก็พยายามที่จะเก็บความรู้และข้อมูลให้ได้มากที่สุดครับ สำหรับ Tutorial และ How-To ภาคภาษาไทยติดตามได้ที่ http://thaiopensource.org/tag/joget ครับ