Community V.S. Commercial เลือกอย่างไรดี

ก่อนบทความนี้ทำใจให้เป็นกลางและเปิดใจรับในสิ่งที่ผมกำลังจะบอกเล่าว่าทำไม คุณควรเลือก Commercial หรือควรเลือก Community ผมมองดูความก้าวหน้าของกระบวนการผลิตซอฟต์แวร์ไม่ว่าจะอยู่ใน platform ใดๆ Windows, Linux, Mac หรือ Solaris สิ่งที่หลากหลายบริษัทที่พัฒนาซอฟต์แวร์ในแนวทางโอเพนซอร์สมักจะทำคือการ เปิดให้ซอฟต์แวร์ของตัวเองเป็นโอเพนซอร์ส 1 เวอร์ชัน ส่วนอีกเวอร์ชันนึงขาย แต่ก้อไม่เสมอไปเพราะเวอร์ชันที่เป็นโอเพนซอร์สบริษัทเหล่านั้นก้อยังสามารถ หารายได้จากการซัพพอร์ทได้อีกเช่นกัน หลายๆคนอาจเคยได้ยินเรื่อง Duel Licensing หรือซอฟต์แวร์ที่ใช้สัญญาอนุญาติแบบคู่ คือเป็นโอเพนซอร์สและเป็น commercial ด้วย วิธีการแบบนี้มีเยอะให้เห็นจนชินตา เอาเป็นว่าอย่างไปยุ่งกับเขาเลยครับ เราเป็นผู้บริโภค เรามีสิทธิ์เลือกที่จะใช้ซอฟต์แวร์โอเพนซอร์สในแบบใด Pure Open Source หรือ Commercial Open Source
เอาล่ะถ้าเราคิดกันเล่นๆ การที่ผลิตซอฟต์แวร์ออกมา 2 เวอร์ชั่น รุ่นหนึ่งเป็น Open Source สำหรับชุมชน สำหรับลุกค้าหน้าใหม่ สำหรับคนอยากลอง อีกรุ่นหนึ่งเป็น Commercial สำหรับองค์กรที่อยากใช้จริงๆ จังๆ ผู้มีกระเป๋าหนัก? ผู้ที่ต้องการซัพพอร์ท ฯลฯ 108 เหตุผลที่จะเอามาอ้างกันนะครับ มีอย่างหนึ่งที่เป็นเรื่องที่น่าคิดคือเรื่อง TCO (Total Cost Ownership)? ที่ถูกนำมาเป็นจุดตัดสินใจของลูกค้า เอาล่ะอย่างน้อยก้อเรื่อง feature และ price performance ล่ะ ยกตัวอย่างเช่น ผมอยากได้ Open Source Mail Solution สักตัวหนึ่งเขามี feature เยอะมากประมาณว่าเห็นแล้วอยากใช้เลยล่ะ แต่ทางบริษัทที่เป็นตัวแทนจำหน่ายและรับ Implement มีทางเลือกให้ คือ Community Version และ Commercial Version ซึ่งแน่นอนต้องมีตารางเปรียบเทียบ feature และการบริการต่างๆ อย่างแน่นอน ซึ่งก้อรู้อยู่แล้วว่าอันที่เสียเงินมันย่อมดีกว่า และ feature คุ้มค่ากับการลงทุนจริงๆ มีบาง feature ก้อแทบไม่ได้จำเป็นต้องใช้เลยก้อมี เอ้าแล้วจะเลือกอย่างไร? หากมองที่ TCO ผมจะยกตัวอย่างโอเพนซอร์ซอฟต์แวร์ระบบบริหารจัดการฐานข้อมูลตัวหนึ่งก้อ แล้วกันครับ ซอฟต์แวร์โอเพนซอร์ตัวที่ว่านี้คือ MySQL คงจะคุ้นๆ นะครับ Continue reading Community V.S. Commercial เลือกอย่างไรดี

มาออกแบบ field form ใน OpenOffice.Org กัน

ผมได้เอกสารมาฉบับหนึ่งเป็นเอกสารการเข้าจอดเรือของท่าเรืออะไรสักอย่างที่ ประเทศนิวซีแลนด์ เอกสารเป็น ODF ครับ และแน่นอนใช้ OpenOffice.Org ซึ่งแบบฟอร์มที่ผมได้มาเป็นเอกสารแบบ field form คือมี field แถบเทาๆ เวลาคลิกที่ field ที่ต้องการจะใส่ข้อมูลก้อจะมี input box มาให้เรากรอกข้อมูล OpenOffice.Org สนับสนุนการใช้ field form และ input field มาตั้งแต่เวอร์ชั่น 2.4 แล้วครับแต่ไม่ได้เขียนเป็น how-to มาแนะนำวิธีการใช้งานกันสักที เอาเป็นว่าวันนี้ผมจะมาแนะนำการประยุกต์เอกสารธรรมดาๆ ให้เป็น field form ง่ายๆ เอาไว้กรอกข้อมูลให้เป็นระเบียบเรียบร้อยและดูสวยงามครับ
ก่อนจะเข้าสู่ขั้นตอนการทำจะขออธิบายข้อดีของการทำ field form นอกจากจะทำให้เอกสารดูสวยงามแล้ว การใส่ข้อมูลก้อง่ายอีกด้วย และที่สำคัญคุณสามารถกำหนดเขตข้อมูลได้เองด้วย เดี๋ยวเรามาลองดูตัวอย่างเอกสารนี้กันครับแบบฟอร์ม “ใบสัญญาเป็นแฟนกัน” เอาสนุกนะครับอย่าคิดมาก 🙂

Continue reading มาออกแบบ field form ใน OpenOffice.Org กัน

ติด OpenBravo ERP อย่างเซียน

OpenBravo ERP เป็นโอเพนซอร์ส ERP ที่ออกแบบมาให้เหมาะสมกับธุรกิจ SMEs ซึ่งพัฒนาเป็นเว็บแอพลิเคชั่น รวบรวมความสามารถหลายๆ เรื่องทั้งในเรื่อง procurement, warehouse management, project management, service manangement, production management และ financial managment อยากทราบรายละเอียด feature ของ OpenBravo อ่านเพิ่มเติมได้ที่ http://www.openbravo.com/product/product-features/

Continue reading ติด OpenBravo ERP อย่างเซียน

ติดตั้ง SugarCRM บน Ubuntu อย่างเซียน

SugarCRM เป็น CRM Solution ใช้งานบนเว็บพัฒนาด้วยภาษา PHP ที่ผ่านมาเราจะนึกถึง SugarCRM เป็นชื่อแรกๆ เนื่องจากได้รับความนิยมสูงที่สุดตัวหนึ่งในบรรดา Open Source CRM Solution ตัว SugarCRM มีหลายรุ่นด้วยกันหากใครเป็นแฟนพันธ์แท้ก้อคงจะทราบแล้วว่า SugarCRM มีด้วยกัน 3 รุ่น คือ Enterorise, Profestional และ Community ซึ่งแต่ละรุ่นก้อมีคุณสมบัติแตกต่างกัน หากสนใจเข้าไปดูรายละเอียดจากเว็บไซต์ข้างล่างนะครับ ใน How-to นี้เราจะมาติดตั้ง SugarCRM Community อย่างเซียนกันครับ เหมาะสำหรับ SMEs ที่ต้องการมี CRM Solution เอาไว้ใช้งานโดยลงทุนไม่มากนัก
ระบบปฏิบัติการที่ผมเลือกใช้คือ Ubuntu 8.10 โดยโมดูลใน SugarCRM ที่เราจะใช้กันคือ My Portal, Calendar, Activities, Contacts. Accounts, Leads, Opportunities. Case, Bugtracker, Document และที่ขาดไม่ได้คือ Email ครับ ซึ่งใน SugarCRM Community Edition มีโมดูลพื้นฐานพร้อมสรรพสำหรับองค์กรหรือ SMEs ขนาดย่อมๆ ใช้งานได้เลยล่ะครับ โดยไม่ต้องลงทุนซื้อรุ่น Enterprise ราคาแพงๆ แต่อย่างใด เอาละเรามาเริ่มติดตั้งกันเลยครับ
Continue reading ติดตั้ง SugarCRM บน Ubuntu อย่างเซียน

เขียนโปรแกรมแบบ GUI ด้วย Python + Glade

ปกติผมเขียน GUI โปรแกรมบน .NET แต่พอมาเขียนโปรแกรมบน Linux ต้องบังคับตัวเองให้เขียน C# บน Mono ซึ่งก้อไม่ได้ต่างจาก C# สักเท่าไร แต่ Widget มันเป็น gtk นี่ล่ะสิ เขียน Mono gtk ก้อเล่นเอามึนไปเหมือนกัน อีกอย่าง IDE เจ๋งๆ อย่าง Microsoft Vistual Studio ไม่มีใน Linux หวังพึ่ง Mono Dev ไม่ค่อยจะได้เท่าไร อ้อผมเคยเขียน Kylix มาพักนึงแต่ก้อตายสนิท ก้อเลยลองหาภาษาที่ศึกษาได้เร็วๆ และไม่ต้องติดตั้งอะไรเพิ่มมากมายก้อสามารถเอาโปรแกรมไป run ได้เลย ทำให้ได้มาจับ python ดูบ้าง ศึกษา python พื้นฐาน จาก codenone ไปพลางๆ แล้วก้อมาหัดเขียน PyGtk ต่อโดยออกแบบ GUI โดยใช้ Glade ซึ่งทำให้เรา ออกแบบหน้าจอโปรแกรมได้เร็วดี และเอา Python เรียกใช้ GUI จาก glade ได้เลย โดยใช้ PyGtk นี่แหละครับ เมื่อวันก่อนเจอ Video ใน Google เห็นว่าเข้าท่าดีเอามาแปะได้ได้ศึกษากัน

** ผมไม่ได้เป็นแฟน Python นะครับ แต่หาทางเขียนโปรแกรมแบบ GUI บน Linux ไม่ได้สักที สงสัย Python + PyGtk + Glade คงเป็นทางรอดของผมล่ะ เอาไว้ให้ผมศึกษามากกว่านี้ก่อนแล้วจะมาทะยอยเล่าให้ฟังอีกทีว่าเขียน GUI Application บน Linux แบบง่ายๆ ทำกันยังไง ตอนนี้ก้อดู Google Video ข้างบนไปพลางๆ ก่อนละกันครับ 🙂

แก้ปัญหาคนลิงค์ภาพจากเว็บเรา

ผมเห็นคนชอบ link ภาพจากเว็บโน่นนี่บางทีก้อสร้างปัญหาประมาณว่าไม่สร้างภาพเอง ใช้ tag img ชี้ลิงค์ไปง่ายดี ปัญหาที่ตามมาคือปริมาณ traffic ที่มากขึ้นของเว็บที่ถูก link ลองนึกดูเล่นๆ หากเว็บคุณมีคนดูมาก แถมมีภาพสวยสวยๆ เยอะ มีคนเข้าเยอะและหวังดี เอาภาพจากเว็บเราไปโชว์ในเว็บอื่นซึ่งก้อคงเป็นเว็บคล้ายๆ กัน ปริมาณ traffic ที่มากขึ้นที่ไม่ได้มาจากเว็บตัวเองก้อทำให้เสียค่าใช้จ่ายในเรื่อง data transfer มากขึ้นด้วย วิธีแก้ไขง่ายๆ ก้อคือใช้ htaccess นี่แหละครับ มาดูวิธีกันครับ
ใส่ .htaccess แบบนี้จะไม่โชว์อะไรเลย

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/.*$ [NC]
RewriteRule ^.*\.(bmp|tif|gif|jpg|jpeg|jpe|png)$ - [F]

เอาแบบโชว์ภาพอื่นแทนภาพที่ link จากเราไปก้อได้ครับ ตั้งค่าแบบนี้

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ http://www.domain.com/boooh.jpg [R,NC,L]

เอาภาพหน้าผีไปโชว์เล้ย เห่อๆ ชอบ link ภาพจากเว็บคนอื่นนัก 😛

ซอฟต์แวร์ผิดกฏหมายในต่างจังหวัด

เมื่อเสาร์อาทิตย์ที่ผ่านมาได้มีโอกาสไปต่างจังหวัด สาเหตุที่ไปก็เพราะว่าต้องไปซื้อเครื่องคอมพิวเตอร์2 เครื่อง เพื่อใช้ในร้านอินเทอร์เน็ตเล็กๆ หลังจากนับเงินในกระเป๋าและคิดว่าจะได้ซื้อเครื่องได้สัก 2 เครื่องพร้อมโต๊ะและเครื่องสำรองไฟ ก็คิดว่าราคาใช้ได้เลยทีเดียว เพียง 1 หมื่นต้นๆ หลังจากที่ทางร้านประกอบเครื่องเสร็จ ผมเดินขึ้นไปดู Windows XP Pro ที่ IT City เพราะลดราคาเหลืออยู่ 5 พันนิดๆ และราคาก็ไม่เกินงบมากนัก หลังจากที่เช็คราคารวมเครื่องพร้อม Windows แล้วก็เดินกลับมาที่ร้านเพื่อดูสภาพเครื่องว่าเป็นอย่างไรบ้าง ปรากฏว่าทางร้าน clone ฮาร์ดดิสพร้อมโปรแกรมสารพัดให้เรียบร้อยซะแล้ว หลังจากที่สอบถามทางร้านก็ได้ข้อมูลว่าทางร้านไม่ได้เป็นตัวแทนจำหน่าย Windows ที่มีลิขสิทธิ์ถูกต้อง และการ clone ฮาร์สดิสก็ทำกันอยู่แล้วทั้งห้าง เป็นเรื่องปกติ!
เผลอคุยกับแป๊ป เดียวช่างที่ร้านก็ pack กล่องเสร็จเรียบร้อยซะงั้น เอาเป็นว่าได้ Windows เถื่อนพร้อมโปรแกรมเถื่อน ราคาเครื่องรวมซอฟต์แวร์ก็ตก 10,350 บาท ถ้าซื้อ Windows XP Pro ที่ IT City เพิ่มอีกราคาเป็น 16,250 บาท ซึ่งราคาก็ไม่ได้เกินงบไปสักเท่าไรนัก เลยลองแอบถามว่า Windows ที่ติดตั้งให้เป็น Windows อะไร? ช่างตอบคำถามด้วยน้ำเสียงหนักแน่นว่า “รุ่น Master Phong” รุ่นนี้ไม่มีปัญหาใช้งานได้ดี ตอนนี้เครื่อง 2 เครื่องที่ได้มาก็เอาไปไว้ที่ร้านอินเทอร์เน็ตเล็กๆ เรียบร้อยแล้ว แต่ยังใช้อินเตอร์เน็ตไม่ได้เพราะไม่มีโทรศัพท์ พี่พนักงาน TOT ที่ทำหน้าที่บริการเรื่องโทรศัพท์กลับมาถามว่ามีเครื่องพร้อมแล้วหรือยัง? เพราะจะได้ทำเรื่องเดินสายโทรศัพท์พร้อม ADSL 3 Mbps มาให้ เลยได้แต่ตอบกลับไปว่าได้เครื่องมา 2 เครื่องแถมโปรแกรมอีกเพียบ พี่พนักงานพูดด้วยความเป็นห่วงกลัวจะโดนจับเรื่องลิขสิทธิ์ผิดกฏหมาย เลยอาสาจะมาติดตั้ง Linux TLE ให้ เอาเป็นว่าวันนี้น่าจะได้เดินเรื่องสายโทรศัพท์ และมีคนมาติด Linux TLE ให้ด้วยดีใจจัง 🙂 ว่าแต่ว่าใครเคยทำร้านอินเตอร์เน็ตที่มีเครื่องให้บริการ 2 เครื่องบ้าง? กลับมาคิดตัวเลขกันใหม่ ถ้าต่อรองราคาเครื่องจาก 10,350 เหลือ 10,000 ได้ก็คงจะดี เลขสวยกลมดิ๊ก แถมมีคนมาติด Linux TLE ให้ด้วย ลดรายจ่ายเรื่องเครื่องไปได้เยอะ เอาไปจ่ายค่าไฟกับค่า ADSL รายเดือนได้สบายๆ
เอาเป็นว่างานนี้พบปัญหาเรื่องซอฟต์แวร์ผิดกฏหมาย ในต่างจังหวัดซึ่งก็ไม่น่าแปลกใจนัก เพราะที่กรุงเทพเองก็มีตั้งหลายแหล่งอยากให้ร้านค้าหลายแห่งลองมาตรึกตรองดู โจรขโมยซอฟต์แวร์มาแคร็ก,แฮ็กก็เป็นซอฟต์แวร์โจร ซื้อเครื่องที่มีซอฟต์แวร์ผิดกฏหมายก็เหมือนกับซื้อของโจร หากใช้ซอฟต์แวร์โจรก็เหมือนกับรับของโจร แคมเปนจ์นี้ก็เข้าท่าดีแฮะ

ติดตั้ง Lotus Symphony

IBM Lotus Symphony เป็นชุดโปรแกรมออฟฟิสจากค่าย IBM ออกแบบหน้าตามาคล้ายๆ Eclipe แต่จัดการเอกสารแบบ Open Document Format ได้ ซึ่งโปรแกรมในชุด Lotus Symphony ประกอบด้วย Lotus Symphony Document, Lotus Symphony Spreadsheets, Lotus Symphony Presentation.? ซึ่งทั้งชุดคุณสามารถเอาไปใช้ได้โดยไม่เสียค่าใช้จ่าย ทำความรู้จัก Lotus Symphony กันพอสมควรแล้ว เรามาลองติดตั้ง Lutus Symphony บน Ubuntu กันครับ
เริ่มจากดาวน์โหลด Lutus Symphony กันก่อนที่ http://symphony.lotus.com/ คลิกตรง Download

Continue reading ติดตั้ง Lotus Symphony

ติดตั้ง Subversion

Subversion เป็นโปรแกรมระบบควบคุมเวอร์ชั่นที่เป็นโอเพนซอร์ส การใช้งาน Subverson คุณสามารถบันทึกประวัติของโค้ด ไฟล์ และเอกสาร ต่างๆ ได้ง่าย การเก็บข้อมูลของ Subversion เราเรียกว่า repository ซึ่งคล้ายๆ กับ file server ยกเว้นแต่ว่ามันจำได้ว่าไฟล์หรือไดเรคทอรีนั้นๆ เปลี่ยนแปลงตรงไหนอย่างไร เรามาลองติดตั้ง SVN Server บน Ubuntu และเรียกใช้งาน SVN กันครับ
วิธีการติดตั้ง เราต้องกำหนด SVN Repository กันก่อน อาจเก็บไว้ที่ /home/svn แล้วเราจะมีโปรเจคย่อยๆ ในนั้น เช่น myproject เป็นต้น ให้คุณสร้างไดเรคทอรีสำหรับ SVN Repository ดังนี้

sudo mkdir /home/svn
cd /home/svn
sudo mkdir myproject
sudo chown -R www-data myproject
sudo chgrp -R subversion myproject
sudo chmod -R g+rws myproject

จากนั้นสร้าง project config file โดยใช้คำสั่งดังนี้

sudo svnadmin create /home/svn/myproject

วิธีการ access SVN มีหลายวิธีใน how-to นี้เราใช้ svn protocal (svn://hostname/project-name) ครับ สั่งเริ่มต้นการทำงานของ SVN Server โดยใช้คำสั่ง

svnserve -d --foreground -r /home/svn

เปิด terminal มาอีกหน้านึงครับแล้วลอง checkout ไฟล์ดูโดยใช้คำสั่ง

svn co svn://hostname/myproject myproject

เราจะได้ไดเรคทอรี myproject ที่ checkout มา เป็นเวอร์ชั่น 0 ให้คุณเพิ่มเติมไฟล์ลงในไดเรคทอรีนี้แล้วสั่ง add และ commit ดังนี้

cd myproject
echo "readme" > readme.txt
svn add * --force
svn commit

เท่านี้เองครับ เราก้อสามารถ commit ไฟล์ไปที่ repository ได้แล้ว ถ้าอยากทราบคำสั่งใน SVN ก้อใช้

svn help

สำหรับ SVN Client ที่ใช้ง่ายๆ โดยที่ไม่ต้องพิมพ์บน command line ก้อมี RapidSVN, TortoiseSVN เป็นต้น

เรื่องยุ่งๆ ของ Package Manager

ผมพยายามหา package manager เจ๋งๆ มาใช้งานทั้งตัว package และตัวโปรแกรมที่ทำหน้าที่ sync และ update package บนเครื่อง server และเครื่อง desktop ได้ซึ่งตอนนี้ผมจับ 4 distro หลักคือ openSolaris, Debian, Ubuntu และ Fedora เอาเป็นว่ายุบรวมเหลือเพียง 2 package manager ละกันครับ ซึ่งลักษณะการ fetch package คล้ายคลึงกันคือ การสร้าง database repo (meta data ของ package ที่มีอยู่ใน repo server ที่เราเลือกเอาไว้) อยู่ในเครื่องเรา กับไม่ได้สร้าง database repo ในเครื่องเรา วิธีการสังเกตง่ายๆ คือ การค้นหาหรือติดตั้งโปรแกรมที่เคยติดตั้งไปแล้ว (กรณีที่เก็บ package เป็น archive ไว้) package manager จะติดตั้งหรือค้าหาได้ทันที ไม่จำเป็นต้องเชื่อมต่อ internet เพื่อเข้าไป fetch ของ database repository อีกรอบหนึ่ง
ซึ่ง aptitude เป็น package manager ที่ชอบเก็บ database repo ข้อดีก้อคือกรณีเกิดการ broken database บน repo server เราสามารถใช้ repo database ในเครื่องเราสืบค้นข้อมูล package ได้ ซึ่งแตกต่างจาก yum ซึ่งพบใน fedora และ delivered distro ของ fedora เจ้าโปรแกรม yum เป็นส่วนเสริมในการจัดการ package rpm ซึ่ง yum ไม่เก็บข้อมูล repo database ในเครื่องเรา เวลาติดตั้งหรือค้นหา package ต้อง fetch หาจาก repo server ซึ่งค่อนข้างจะมีน้อยและกระจัดกระจาย ด้วยการจัดการ repo database แบบนี้ทำให้ yum ก้อมีข้อดีอย่างหนึ่งคือเราจะได้ข้อมูล package ที่สดใหม่อยู่ตลอดเวลา และรู้ว่าอะไรควรจะอัพเดทหรือไม่อัพเดท แต่ข้อเสียคือมันต้องใช้ internet คลอดเวลาค้นหา package ที่เราจำชื่อไม่ค่อยจะได้ อันนี้ผมเป็นบ่อยเพราะผมชอบค้นใน repo มากกว่าการนั่งเดาชื่อ package หรือชื่อโปรแกรมที่ผมจะติดตั้ง ซึ่งกรณีเกิด broken repo database บน repo server ก้อเตรียมทำใจได้เลยครับ เพราะจะ fetch อะไรไม่ได้และก้อต้องจำใจใช้ โปรแกรมเก่าๆ ต่อไป
เอาล่ะแล้วจะมี package manager ที่ผมชอบบ้างมั๊ย เท่าที่ลองเล่น หลายๆ distro รวมถึง opemSolaris ด้วยแล้วก้อมีจุดดีจุดเด่นแตกต่างกัน ด้วยลักษณะการจัดการ repo server และข้อมูล meta data ที่เก็บด้วย แต่ผมมีโครงสร้าง meta data ที่น่าสนใจอยุ่ตัวหนึ่งลองมาดูกันมั๊ยครับ

<dict>
<key>bundleIdentifier</key>
<string>com.nullriver.iphone.Launcher</string>
<key>name</key>
<string>Launcher</string>
<key>version</key>
<string>0.2</string>
<key>location</key>
<string>http://iphone.nullriver.com/zips/Launcher-0.2.zip</string>
<key>size</key>
<string>14581</string>
<key>description</key>
<string>A simple third party application launcher.</string>
<key>scripts</key>
<dict>
<key>preflight</key>
<array>
<array>
<string>If</string>
<array>
<array>
<string>InstalledPackage</string>
<string>com.kroo.mobilelauncher</string>
</array>
</array>
<array>
<array>
<string>AbortOperation</string>
<string>Please uninstall MobileLauncher first.</string>
</array>
</array>
</array>
</array>
<key>install</key>
<array>
<array>
<string>CopyPath</string>
<string>Launcher.app</string>
<string>/Applications/Launcher.app</string>
</array>
<array>
<string>CopyPath</string>
<string>DisplayOrder.plist</string>
<string>/System/Library/CoreServices/SpringBoard.app/DisplayOrder.plist</string>
</array>
</array>
<key>uninstall</key>
<array>
<array>
<string>RemovePath</string>
<string>/Applications/Launcher.app</string>
</array>
</array>
</dict>
</dict>

ข้างบนเป็นกรณีศึกษาของผมคือ plist ของ Nullriver Installer บน iPhone นะครับ เจ้า Nullriver Installer นี้ฮิตมากเพราะทำงานคล้ายๆ กับ synaptic คือติดโปรแกรมผ่านทาง internet ได้อ้อถ้ามีเครื่องใน office ก้อติดผ่าน wifi ได้ครับ เจ๋งมั๊ย และที่สำคัญไฟล์ package ที่เอามาติดตั้งไม่จำเป็นต้องอยู่ที่เครื่อง repository ก้อได้ (ตัวหนา) คือเครื่อง repo server ที่อยู่ใน office เป็นเพียง meta data (repo database) เท่านั้น จะติดตั้งก้อวิ่งไป download package เพื่อเอามาติดตั้งอีกที แต่ Nullriver Installer ไม่ได้ทำงานแค่นี้มันยังสามารถเก็บ repo database ในเครื่อง iPhone ด้วย นั่นหมายความว่าคุณสามารถ browse repo ได้โดยไม่ต้องเชื่อมต่อ internet อันนี้สิครับเจ๋งจริง แต่ด้วยความที่โครงสร้างของตัว repo server และ package list (plist) สามารถสร้างและแก้ไขได้ง่าย ทำให้เกิดธุรกิจทำ repo ของ iPhone โดยใช้โครงสร้าง repo ของ Nullriver เยอะมาก ปัญหาที่ตามมาคือ package ซ้ำซ้อนกันไงครับ เอาล่ะปัญหานี้กำลังถูกแก้ไขโดยโครงการ AppTapp ของ Nullriver นั่นแหละครับ ซึ่งอาจแฝงการตลาดเข้าไปด้วยก้อได้อันนี้ผมไม่ทราบนะครับ 🙂 ว่าจะมีหรือเปล่า แต่ที่แน่นอนคือ Nullriver Installer หรือ AppTpp ในอนาคตเป็นที่น่าจับตามองครับ สำหรับ package manager บน android ผมยังไม่ได้ดูเลยครับว่าเป็นยังไง ใครพอจะทราบก้อบอกเล่าแลกเปลี่ยนความรู้กันได้ครับ 🙂