Aug 24, 2009

JoomlaDay Bangkok 2009!!

วันนี้ชม JoomlaDay Bangkok 2009 ดูแล้ว Joomla 1.6 มีอะไรน่าเล่นเยอะเลยทีเดียว วิทยากรที่มาบรรยายดีมากครับ ราคาค่าร่วมสัมนากับทีมงานก็ค่อนข้างลงตัวครับ ได้เสื้อไปใส่กันด้วย ส่วนผมก็ได้แต่ติดตามดูอยู่ที่ live.fukduk.tv ครับ ที่สำคัญคือทีมงานทำงานด้วยใจจริงๆ ครับ จัดงานด้วยงบเพียงแค่นี้ ต้องขอขอบคุณทีมงาน Marvelic กันทุกคนและขอบคุณทีมงานทั้งหมดรวมถึงมหาวิทยาลัยศรีปทุมด้วยครับ ที่ทำให้ได้อะไรจากงานนี้เยอะแยะเลย ผมก็แอบสนใจเขียน extension นะเนี่ย (ฮา) เห็นมีว่าจะ upload slide ในเว็บ ก็ไว้ไปโหลดกันได้นะครับ ที่ http://www.joomladay.in.th/ รวมถึง community ในไทย joomla.or.th

Alfresco กับ XForm

XForm นั้นเป็น Specification ที่น่าจะกลายเป็นมาตรฐานในอนาคตเนื่องจากเว็บต่างจำเป็นต้องใช้ Form ในการติดต่อกับผู้ใช้เป็นส่วนใหญ่ ส่วนตัว implement นั้นมีหลายตัวด้วยกันไว้ผมจะเอามาบอกในบทความต่อๆ ไป แต่คราวนี้เรามาดูใน Alfresco กันครับ ใน Version 3.2 นั้น Alfresco ได้เลือก Chiba ในเป็น Engine ในการจัดการกับ XForm ครับ แต่ก็นั่นแหละครับทำให้เราจำเป็นต้องลง virtual tomcat สำหรับรัน WCM (virtual tomcat คือ tomcat อีกตัวไว้สำหรับทำหน้าที่ติดต่อกับ user โดยทั่วไป หรือเรียกว่าเอาไว้เป็นหน้าด่านว่าเอกสารอะไรที่เราต้องการเผยแพร่เราก็สามารถ publish ไปยัง WCM ได้)

ตอนนี้ orbeon (เป็น XForm engine อีกตัว) สามารถทำการเชื่อมต่อกับ Alfresco ได้แล้วต่อไปถ้าเราจะสร้าง XForm คงง่ายขึ้นเป็นกองเพราะ orbeon เป็น XForm server ที่ไว้สร้าง Form แบบ virtual เลย(ลากแปะๆ แนะนำให้ลองเข้าไปเล่น demo ของ orbeon ดูครับ น่าเล่นมาก) แต่ตัวนี้ผมยังไม่ได้ลองทำดูนะครับ พอดีค้นหาเจอเลยนำมาลง blog ไว้ก่อน ไว้ถ้าทดสอบแล้วได้ความว่าอย่างไรจะมารายงานอีกรอบ

Alfresco กับการ Search ภาษาไทย

เนื่องด้วยการ Search ถือเป็นหัวใจสำคัญของงาน ECM เลยก็ว่าได้ แต่ Alfresco ณ ปัจจุบันยังไม่รองรับการ Search ด้วยภาษาไทย แต่อย่างว่า Opensource เมื่อเรารู้ว่ามันใช้ Lucene เป็น engine ในการค้นหาเอกสาร เราก็เลยแงะไปยังตัว lucene เองพบว่ามีคนส่ง Patch ในการตัดคำไทยไปให้กับ lucene เรียบร้อยแล้ว โดยคุณสัมพันธ์นั่นเอง วิธีการ Config ให้ Alfresco ตัดคำไทยได้ผมสรุปออกมาเป็นขั้นตอนได้ดังนี้ครับ
  • ไปเพิ่ม Locale ให้ Alfresco รู้จัก ใน tomcat/shared/classes/alfresco/extension/web-client-config-custom.xml ตรง tag <languages> เพิ่ม <language locale="th_TH">Thai</language>
  • เข้าไป directory: tomcat/webapps/alfresco/WEB-INF/classes/alfresco/model แล้วทำการ copy file dataTypeAnalyzers_fr.properties หรือไฟล์อื่นก็ได้ เปลี่ยนชื่อเป็น dataTypeAnalyzers_th.properties แล้วเปิดไฟล์ขึ้นมาแก้ไขให้เป็น
d_dictionary.datatype.d_text.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer
d_dictionary.datatype.d_content.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer
    • หลังจากนั้นเมื่อทำการ login ให้เลือก language เป็น Thai
    เพียงเท่านี้ Alfresco ของเราก็สามารถเก็บ index เป็นภาษาไทยและสามารถค้นหาเอกสารที่เป็นภาษาไทยได้แล้วครับ

    หนังสือ Opensource แจกฟรี Gimp และ Blender

    แจกหนังสือ Ebook เล่มใหม่ฟรี สนับสนุนโดย Sipa จัดทำโดยบริษัท Success Media ครับ

    • Gimp เป็นโปรแกรมไว้ตกแต่งรูปสามารถใช้ทดแทน Photoshop ได้
    • Blender 3D เป็นโปรแกรมที่ไว้สำหรับสร้าง Model 3D เทียบได้กับ 3DS Max ครับ

    โหลดหนังสือทั้งสองเล่มได้จากลิงค์ข้างล่างเลยครับ

    Aug 16, 2009

    เรื่องวุ่นๆ ของ HTML 5.0

    เป็นที่ทราบกันดีแล้วว่า HTML 5.0 นั้นยังอยู่ในช่วงการตกลง และฉบับปัจจุบันก็ยังเป็น Draft อยู่ เมื่อมี tag พิเศษที่ทุกคนรอคอยกันมาคือ <video> เข้ามา ทำให้มีปัญหาเรื่องของ codecs โดยต่างฝ่ายต่างเห็นไม่ลงลอยกันเท่าไรนัก

    โดย Mozilla ว่าจะใช้ ogg เนื่องจากมันฟรีและไม่มีปัญหาเกี่ยวกับเรื่องลิขสิทธิ์แต่เรื่องคุณภาพก็ไม่ค่อยดีนัก ส่วน Google และ Apple ว่าน่าจะใช้ H.264 ซึ่งเป็นของบริษัท On2 แต่ Google ก็ไม่ว่าอะไรถ้าจะใช้ Ogg และในไม่กี่วันนี้เอง Google ก็ได้เข้าซื้อบริษัท On2 ซึ่งอาจเป็นไปได้ว่า video tag จะถูกนำมาใช้ด้วย Codecs H.264 แต่ปัญหาก็ยังไม่วายเมื่อผู้ถือหุ้นบริษัท On2 ไม่พอใจกับราคาหุ้นที่ Google ซื้อไป
    แล้ว HTML5 จะได้ฤกษ์เมื่อไหร่เนี่ย

    Vim vs Emacs on Ubuntu Linux

    เพิ่งรู้วันนี้เองว่า Vim บน Ubuntu นั้นมันยังไม่พร้อมสำหรับการเขียนโปรแกรม เราจำเป็นต้องทำการลงมันใหม่ก่อนด้วยคำสั่งที่แสนจะเคยชิน

    sudo apt-get install vim

    พอดีกำลังจะเลือก ide บน linux ไว้หัดเขียนภาษาซีใน linux ยังลังเลระหว่าง vim กับ emacs เห็นว่ามีสงครามระหว่าง editor สองเจ้านี้ด้วยข้อดีข้อเสียของ แต่ละตัวคือ

    Vim
    • เป็นแบบ modes คือต้องเลือกว่าจะอยู่ในโหมดแก้ไขหรือว่าโหมดปกติ โหมดแก้ไขก็ได้แก่ i, a, bla bla blah โหลดปกติก็คือกด Esc ออกมา
    • ข้อดีเร็ว ( สมัยตอนที่ยังเป็น Vi นะครับ)
    • ข้อเสียคือสับสนว่าตอนนี้อยู่ในโหมดไหน
    Emacs
    • เป็นแบบ modeless ถ้าใครนึกภาพไม่ออกก็พวกโปรแกรมแบบ GUI ทั่วไปก็เป็นแบบ modeless เสียเป็นส่วนใหญ่เช่น MS Word คือเราสามารถพิมพ์ข้อความลงไปได้เลย เมื่อต้องการจะใช้คำสั่งอะไรก็กด Ctrl+ เอาแทน
    • ข้อดีคือไม่สับสนว่าอยู่ในโหมดไหน
    • ข้อเสียคือเมื่อต้องการผสมคำสั่งเยอะๆ จะจำได้ไม่หมดเช่น C-x C-c อันนี้แค่คำสั่งเดียวแต่ต้องกดทั้ง Ctrl+x กับ Ctrl+c ถึงจะออกจากโหมดได้

    Jul 25, 2009

    รำคาญ Ads ใน hi5 มั้ย?

    พอดีวันนี้เข้าไปใน hi5 ผ่าน IE เจอรูปนี้มันขึ้นหราอยู่



    นั่นหมายถึงว่า model ทาง ธุรกิจของ hi5 ได้ต้องการให้คุณจ่ายเงินเพื่อขจัดความรำคาญเหล่านั้น
    แต่เพียงแต่ผมเลือกที่จะขจัดความรำคาญด้วยวิธีอื่น นั่นคือลง Firefox แล้วลง Extension (Add-on) ไปที่ Tools > Add-ons ถ้าเป็นภาษาไทยคิดว่าน่าจะเป็น เครื่องมือ > ส่วนเสริม อะไรประมาณนี้ ไปที่ Get Add-ons (Tab อันแรกน่ะครับ ไม่แน่ใจเวอร์ชั่นภาษาไทยใช้คำว่าไร) แล้ว search คำว่า "adblock" แล้วเลือกไปที่ Adblock Plus ครับหลังจากนั้นกดปุ่ม install ได้เลย ต่อไปเราก็จะไม่มีโฆษณามาให้รบกวนอีกแล้ว ไม่ว่าจะเว็บ hi5 หรือเว็บอื่นๆ ก็ตาม

    Jul 24, 2009

    Alfresco from source

    การติดตั้ง Alfresco นั้นมีหลายวิธีด้วยกัน ผมขอแยกเป็นสามกรณีดังนี้
    • ติดตั้งจากตัว Installer ซึ่งวิธีนี้ถือว่าสะดวกที่สุดครับ เนื่องจากตัว Alfresco นั้นเตรียมเครื่องมือที่จำเป็นไว้ให้เกือบหมดแล้ว (บน Windows นี่ถือว่าพร้อมกับการทำงานทีเดียว ส่วนบน Unix จะต้องติดตั้ง MySQL ,Swf2PDF ImageMagick และ OOo - OpenOffice เองครับ เนื่องจากไม่สามารถรันได้แบบวินโดว์)
    • ติดตั้งจากตัว Compiled Binary ซึ่งจะเป็นไฟล์ zip หรือ tarball ตามแต่ระบบปฏิบัติการ
    • วิธีสุดท้ายเป็นวิธีที่ผมจะนำเสนอในตอนนี้คือการ Compile Source จาก SVN ครับ

    สองวิธีสุดท้ายนี้เราจำเป็นต้องหาพวก binary ของ third party มาลงเอง (แต่สำหรับ linux ไม่ว่าจะวิธีไหนเราก็ต้องหามาลงเองครับ)

    เราสามารถ Check out Source จาก repository จาก Alfresco ได้หลายวิธีไม่ว่าจะ Check out จาก Eclipse โดยผ่าน Subclipse หรือ Netbeans หรือแม้กระทั่ง SVN command line ก็สามารถทำได้

    ในที่นี้ผมจะขอเลือกใช้แบบ Command line ซึ่งเป็นวิธีที่สะดวกที่สุด เพราะมีมาให้กับ linux อยู่แล้วหรือหากใครใช้ Windows อยู่ ผมขอแนะนำให้ติดตั้ง SlikSVN 1.5.x เนื่องจากขั้นตอน build นั้นจำเป็นต้องใช้ svnant ในการ build และตัว lib ของ svnant นั้นจะเรียกใช้ SVN 1.5.x เท่านั้น หากใช้ version 1.6.x นั้นจะทำให้เกิด error ขึ้นตอน build file continuous.xml ครับ

    ขั้นแรกให้ check out source ออกมาก่อน


    svn co svn://svn.alfresco.com/alfresco/HEAD/root "Alfresco Source"


    อธิบายคำสั่งของ svn

    • co คือ checkout ครับ
    • svn://svn.alfresco.com/alfresco/HEAD เป็น repository ครับ ส่วน root นั้นเป็น directory ของ project ครับ ซึ่งจะเป็นตัว source code ทั้งหมดของ project ส่วน "Alfresco Source" นั้นเป็นการตั้งชื่อให้กับ Directory ในเครื่องเราครับ หากเราไม่ใส่เราจะได้ Directory ชื่อ root มาแทน

    ปล. svn:// protocal นั้นจะใช้ port 3690 หากใครโดน block port นี้ไว้ ก็ให้ใช้
    svn co http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD แทนได้ครับ ให้เติม root ต่อท้ายด้วยก็ดีครับ
    ปล2. Alfresco Community Edition 3.2 นั้น revision จะอยู่ที่ 15070 ให้เราใส่ parameter ไปด้วยเป็น -r 15070


    svn co svn://svn.alfresco.com/alfresco/HEAD/root "Alfresco Source" -r 15070


    หลังจากได้ code มาแล้วให้เราเซ็ท environment variable สามตัวหลักที่ต้องใช้คือ

    • TOMCAT_HOME
    • APP_TOMCAT_HOME
    • VIRTUAL_TOMCAT_HOME

    ใน Windows เซ็ทโดยไปที่ Control Panel > System > Advanced > Environment Variables
    ใน User Variable > New > Variable Name: TOMCAT_HOME > Variable Value:

    ใน Linux ให้ set ดังนี้
    export TOMCAT_HOME= เซ็ทให้ครบสามตัวเป็นอันเสร็จขั้นตอนเซ็ท Environment

    ต่อไปเราจะเริ่ม build ให้เราลง ant ในระบบก่อน ในที่นี้สมมติว่าทุกคนลงเรียบร้อยแล้ว หากยังเอาไว้ผมจะเขียนขั้นตอนการลงไว้ให้ครับ สามารถดูที่ tag how to หรือ search เอาก็ได้ครับ

    ให้เราเริ่ม ant build ใน folder Alfresco Source (ชื่อที่เราตั้งไว้ให้ หากไม่ได้ตั้งชื่อไว้ให้จะเป็น HEAD/root หรือ root แล้วแต่ท่านลงไว้ครับ


    ant -f build.xml build-tomcat หรือ ant เฉยๆ


    อธิบายคำสั่ง ant -f คือ file build ของ target ต่างๆ ที่เราเขียนไว้ คล้ายๆ make file ของ gnu ครับ build-tomcat คือ target ของ build หากไม่ใส่ไว้ตัว default จะเซ็ทไว้ที่ build-tomcat อยู่แล้ว โดยสามารถเข้าไปดูได้ที่ไฟล์ build.xml ครับ

    เมื่อเสร็จแล้วเราจะได้ file ต่างๆ ใน folder ตาม TOMCAT_HOME ครับ ซึ่งจะพบว่ามีไฟล์ alfresco.war และ shared.war อยู่ใน directory tomcat/webapps ครับ จากนี้เราสามารถรัน tomcat ได้แล้วครับ ตัว tomcat จะ deploy webapps เราให้อัตโนมัติครับ

    หากใครรันบน Windows แล้วไม่ผ่านให้ไปเปลี่ยน Locale ใน Control Panel > Regional and Language ก่อนครับ ให้เป็น en (en_US, en_EN)ครับเนื่องจากตัว Quartz (Job Schedule คล้ายๆ กับ crontab ใน unix ครับ) จะใช้ค่าแบบ locale เป็น en ครับ หากเจอภาษาไทยเข้าไปมันจะเอ๋อครับ

    หลังจากนั้นก็ให้เข้า http://localhost:8080/alfresco หรือ http://localhost:8080/share ได้เลยครับ
    ตัว share นั้นจะเปรียบได้กับ sharepoint ของ Microsoft เลยทีเดียว

    สามารถดูเพิ่มเติมเกี่ยวกับการ build ได้ที่ Alfresco SVN Development Environment

    Jul 21, 2009

    ติดตั้ง SVN Server บน CentOS (ตอนหนึ่ง)

    SVN หรือ Versioning Control ซึ่งจะสะดวกมาในการทำงานเป็นทีมและสามารถเลือกได้ว่าเราจะอัพเดตไปยัง Revision ไหน(เวอร์ชั่นไหน) โดยหลักๆ เราจะแบ่งโครงการออกเป็นสามส่วนคือ trunk branch และ tags โดยแต่ละส่วนจะมีการกำหนดดังนี้

    • Trunk เป็นส่วน Core ของโปรเจ็ค หรือเรียกง่ายๆ ว่าอะไรที่ Stable แล้วเราจะใส่ไว้ในส่วนนี้
    • Branch เป็นส่วนที่เป็น Feature ที่เราจะทำการเพิ่มเติมขึ้นมา ส่วนใหญ่เมื่อผ่านพ้นช่วงทดสอบต่างๆ และเป็นที่ยอมรับของทีมแล้ว เราก็จะนำเข้าไปไว้ใน Trunk
    • Tags จะเป็นตัวแบ่งเวอร์ชั่นออกจากกันเช่นเมื่อเราออกเวอร์ชั่น Stable แล้วเราก็จะ copy มาใส่ไว้ใน Tags เพื่อที่จะได้มีหลายเวอร์ชั่นให้ผู้พัฒนาได้เลือก

    เริ่มการติดตั้ง SVN Server บน CentOS กันดีกว่าครับ ใช้เครื่องมือที่เราคุ้นเคยกันดี

    yum install httpd
    chkconfig httpd on

    ซึ่ง chkconfig จะทำให้ตัว httpd server เริ่มต้นอัตโนมัติเมื่อเริ่มระบบ
    หลังจากนั้นทำการแก้ไขไฟล์ httpd.conf
    vim /etc/httpd/conf/httpd.conf
    แก้ไขตามความต้องการหากต้องการเปลี่ยน Port ก็เปลี่ยนได้เลยครับ
    หลังจากนั้นทำการแก้ไขไฟล์ subversion.conf
    vim /etc/httpd/conf.d/subversion.conf
    ทำการ uncomment บรรทัดต่อไปนี้

    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    <location /repos>
       DAV svn
       SVNParentPath /var/www/svn/repos
       # Limit write permission to list of valid users.
       #<limitexcept>
          # Require SSL connection for password protection.
          # SSLRequireSSL
          AuthType Basic
          AuthName "Authorization Realm"
          AuthUserFile /etc/svn-auth-conf
          Require valid-user
       #</limitexcept>
    </location>


    เวลาเข้าผ่าน Browser สามารถเข้าได้ผ่าน URL http://<hostname>/repos

    หลังจากนั้นจะเป็นการติดตั้ง User ที่จะใช้งาน


    htpasswd -cm /etc/svn-auth-conf yourusername
    ระบบจะให้ใส่รหัสสำหรับ User
    สองครั้ง

    หากหลังจากนี้ต้องการเพิ่ม user ให้ใช้แค่คำสั่ง htpasswd -m /etc/svn-auth-conf เพราะไฟล์ svn-auth-conf นั้นได้ถูกสร้างไว้แล้ว (-c หมายถึงให้สร้างไฟล์ htpasswd ขึ้น)

    และขั้นตอนสุดท้ายเป็นการสร้าง directory สำหรับ svn

    mkdir /var/www/svn
    cd /var/www/svn
    svnadmin create repos
    chown -R apache.apache repos
    service httpd restart


    svnadmin เป็นการใช้ svnadmin สร้าง directory repos และ chown เป็นการโดนสิทธิ์ให้กับ apache ซึ่งอยู่ในกลุ่ม apache (apache.apache <-- ตัวแรกหมายถึงกลุ่ม ตัวหลังหมายถึง user ของระบบ ไม่ใช่ของ svn นะครับ) หลังจากนั้นเป็นคำสั่งรีสตาร์ท apache server นั่นเอง

    Jul 20, 2009

    Alfresco Community Edition 3.2

    เพิ่งออกมาได้ไม่นานกับ v. 3.2 ครับ ก่อนหน้านี้ลองเล่นแบบ Preview มาก็ถือว่าดีครับ ปรับเปลี่ยนโครงสร้างจาก 3.0 Stable พอสมควร ส่วนที่แตกต่างออกไปจากเดิมคือ
    • รองรับการเข้าใช้งานผ่านมือถือมากขึ้น สามารถเข้าได้จากทาง http://:8080/mobile/p ครับ

    • ปรับปรุงการทำงานของ Document Management และทำงานเกี่ยวกับ Email ให้ดีขึ้น

    • สนับสนุน CMIS version 0.61 Specification Draft คือ Protocol ที่ทำงานผ่าน Web Service เป็นส่วนใหญ่ครับ เอาไว้สำหรับแลกเปลี่ยนเอกสารกันได้ มีหลายตัวที่เข้าร่วมครับ อาทิเช่น Joomla, Alfresco, SharePoint ซึ่งแต่ละเจ้าถือว่าไม่ธรรมดาเลยครับ และนอกจากนี้ยังสามารถติดต่อกับ IMAP ได้อีกด้วย ทำให้สามารถเก็บ Email เข้า Repository ของ Alfresco ได้ง่ายยิ่งขึ้น และยังสามารถทำ Full Text search ได้อีกด้วย

    • มีการใช้ alfresco-globals.properties เข้ามาใช้งานแทนการ config แยกไฟล์แบบเดิม ซึ่งจุดนี้เองต้องยกความดีความงามให้ Spring Framework ครับ

    • มีระบบ Form แบบใหม่ที่ใช้งานง่ายขึ้น

    • ปรับปรุง Alfresco Share ให้ดียิ่งขึ้น เทียบชั้นกับ SharePoint ได้ดีขึ้น สามารถดู Features ของ Alfresco Share 3.2 ได้ตามลิงค์เลยครับ

    • ปรับปรุง WCM (Web Content Management) ในส่วนของการ Deployment ให้ดีขึ้น

    • ปรับปรุงการ Config Server ให้ง่ายขึ้น โดยแบ่งเป็นระบบย่อยเรียกว่า Alfresco Subsystems

    • ปรับปรุง Repository ให้มี Features มากขึ้น ส่วนใหญ่จะเป็นการทำงานเกี่ยวกับ Extract Metadata ซะเป็นส่วนมาก รวมถึงการทำให้รองรับ CMIS ด้วย

    • Alfresco Full Text Search Language ทำให้สามารถ Query ข้อมูลชนิดต่างๆ ได้มากขึ้น

    • ปรับการติดตั้งให้ง่ายขึ้น โดยมีตัว MySQL Built-in มาด้วยเลย

    ถ้าสนใจสามารถ Download ใช้งานได้ตามลิงค์เลยครับ