ป้ายกำกับ

วันเสาร์ที่ 22 ธันวาคม พ.ศ. 2555

Bugzilla sslbase Setting failed.

สำหรับใครที่ใช้ Bugzilla บน Ubuntu จะพบปัญหาว่า ถ้าอัพเกรดมาเป็น Ubuntu 12.04 LTS แล้ว จะไม่มีแพ็คเกจของ bugzilla มาให้ เนื่องจากปัญหาช่องโหว่ด้านความปลอดภัย และไม่มีอาสาสมัครเข้ามาดูแลโปรแกรมนี้เป็นเวลานาน (ถ้าจำไม่ผิด คือเกิน 6 เดือน) จึงทำให้ Debian ถอด bugzilla ออก ซึ่งก็ส่งผลกระทบมายัง Ubuntu ด้วย แต่จากการติดตามข้อมูล เข้าใจว่ามีอาสาสมัครเข้ามาดูแลและแก้ไขช่องโหว่นั้นไปนานแล้ว แต่ยังไม่ได้มีการนำ bugzilla กลับเข้ามา

อย่างไรก็ตาม ผู้ใช้ยังสามารถดาวโหลดโปรแกรมโดยตรงจากเว็บไซต์ของ bugzilla (http://www.bugzilla.org) ได้ และวิธีการติดตั้งก็ไม่ได้ยุ่งยากอะไรมากนัก ซึ่งผมคงไม่กล่าวถึงในบทความนี้ สิ่งที่อยากจะเล่าสู่กันฟังก็คือ ปัญหาตอนเริ่มต้นที่เราจะต้องเข้าไปเซ็ตค่าเริ่มต้น sslbase แล้วเกิด error โดยค่าเริ่มต้นอื่นๆคือ urlbase ssl_redirect และ cookiepath ไม่มีปัญหา

แต่เพื่อความปลอดภัย เราควรจะเซ็ตค่าให้ใช้ SSL เป็นหลัก นั่นคือ การกำหนดให้ ssl_redirect เป็น on ซึ่งถ้าผู้ใช้เรียกมาที่ urlbase (http://....) bugzilla ก็จะ redirect ไปที่ sslbase (https://...) แทน แต่ปรากฏว่าเมื่อป้อนค่าเสร็จ กดปุ่ม Save ก็เกิดข้อความ error ว่า "The new value for sslbase is invalid: Failed to connect to ...:443; unable to enable SSL." ดังภาพ



ผมได้ค้นดูจาก Google แล้ว ก็พบว่ามีคนแนะนำให้ใส่ URL ที่ต้องการ (secure url ที่ใช้ HTTPS) ไว้ที่ urlbase เลย โดยทิ้ง sslbase ให้ว่างไว้ ซึ่งก็ใช้งานได้ แต่จะไม่มีการ redirect เสมือนว่าเราเปิดใช้เฉพาะ https อย่างเดียว

ปัญหาที่เกิดขึ้นนี้ เนื่องจาก bugzilla จะตรวจสอบว่า sslbase ที่เรากรอกไว้สามารถเข้าถึงได้จริง ซึ่งเป็นการเรียกตัวเอง และปกติแล้ว เราอ้างถึงด้วย localhost ถ้าอ้างด้วยชื่อโดเมน ในบางระบบจะทำไม่ได้เนื่องจากเป็นระบบเครือข่ายภายใน ซึ่งอาจจะใช้ IP ไม่ตรงกับที่มองมาจากภายนอก

วิธีการแก้ปัญหาของผมคือ แก้ไขไฟล์ /etc/hosts โดยใส่ชื่อโดเมนที่ต้องการไว้คู่กับ localhost เช่น

127.0.0.1 localhost somchai.coe.psu.ac.th

เมื่อกรอกข้อมูลเสร็จ จะสามารถ Save ได้ไม่เกิด error อีก จากนั้น เราอาจจะแก้ไขไฟล์ /etc/hosts ให้กลับไปเหมือนเดิมก็ได้ ถ้าคงไว้ อาจจะมีปัญหาการ routing ในบางกรณี ขึ้นอยู่กับระบบเครือข่าย

สมชัย หลิมศิโรรัตน์

วันศุกร์ที่ 6 กรกฎาคม พ.ศ. 2555

Fuzzy Logic

Fuzzy Logic เป็นเรื่องของตรรกะคลุมเครือ (Uncertainty) ซึ่งจะต่างจากตรรกะปกติ (อุดมคติ) ตามที่เราได้เรียนกันมาตั้งแต่สมัยมัธยมนั้น เป็นตรรกะที่มีเพียงสองค่า (bivalent logic) คือ จริง (true) กับ เท็จ (false) เท่านั้น แต่ fuzzy จะมีตรรกะมากกว่าสองค่า หรือที่เรียกว่า multivalent logic ซึ่งโดยทั่วไปแล้วจะใช้ค่า 0 = เท็จ, 1=จริง และ ค่าระหว่าง 0-1 จะเป็นดีกรีของค่าจริง

Fuzzy Logic จะมีความเหมาะสมและตรงกับตรรกะของมนุษย์มากกว่า เพราะมนุษย์จะพูดถึงเรื่องต่างๆในแบบที่ไม่ชัดเจน หรือ ไม่แม่นยำมากนัก เช่น เวลาที่เราพูดถึงความสูงของคน ถ้าจะวัดความสูงกันจริงๆ นาย ก. สูง 170 ซม. นาย ข. สูง 150 ซม. และ นาย ค. สูง 200ซม. เป็นต้น แต่เวลาเราพูดอาจจะบอกว่า นาย ก. สูง นาย ข. ไม่สูง และ นาย ค. สูงมาก ซึ่งไม่ใช่มีแค่สูงกับไม่สูง แต่ยังมีค่าอื่นๆด้วย

Membership Functions

เมื่อเราต้องการระบุถึงสิ่งใดสิ่งหนึ่งที่มีความคลุมเครือ เราสามารถใช้ fuzzy ระบุถึงความเป็นสิ่งนั้นได้ด้วยฟังก์ชันค่าความเป็นสมาชิก หรือที่เรียกว่า membership function โดยที่ฟังก์ชันนี้จะให้ค่าอยู่ในช่วง 0-1 เป็นการระบุค่าดีกรีของความเป็นสิ่งนั้นว่ามากน้อยเพียงไร

โดยปกติแล้ว เพื่อให้ง่ายต่อการคำนวณ เรามักจะใช้สมการเส้นตรงระบุค่าความเป็นสมาชิก เช่น





Operators
เมื่อต้องการประมวลผลค่าความเป็นสมาชิกของหลายๆสิ่ง มีวิธีการคำนวณดังนี้
M(not A) = 1 - M(A)
M(A) and M(B) = MIN(M(A), M(B))
M(A) or M(B) = MAX(M(A), M(B))
ส่วนเงื่อนไข IF A THEN B นั้น ปกติแล้ว เรามีเงื่อนไขเทียบเท่าคือ not A or B
ซึ่งสามารถคำนวณด้วย not และ or ได้

แต่เพื่อความสมเหตุสมผลมากกว่านี้ Godel ได้เสนอเงื่อนไข IF A THEN B ใหม่เป็นเทียบเท่ากับ (A <= B) or B

Rules
เมื่อเรานำเอาเงื่อนไข IF A THEN B มาใช้งาน โดยใช้เป็นกฏของการพิจารณาเรื่องที่เราสนใจเป็นข้อๆ ทำให้เราสามารถสร้างเงื่อนไขที่ซับซ้อนขึ้นได้ แต่จากกฏแต่ละข้อ เราสามารถคำนวณหาค่าความเป็นสมาชิกของเงื่อนไข IF A THEN B ได้ไม่ยาก แต่เมื่อนำค่าที่ได้จากกฏหลายๆข้อมารวมกัน เราจะต้องมีวิธีการรวมกันที่เหมาะสม เช่น ถ้ากฏแต่ละข้อ เป็นเงื่อนไขของแต่ละกรณีที่ไม่เกี่ยวข้องกัน เรามักจะเอาผลลัพธ์ของกฏแต่ละข้อมารวม(บวก)กัน แต่ถ้าเป็นกฏที่ขัดแย้งกัน เราก็จะรวมกันแบบ and เป็นต้น

Defuzzification
นอกจากนี้ เนื่องจาก B ยังเป็น fuzzy อยู่ เราก็จะต้องแปลงคำตอบที่ได้กลับไปเป็นค่าจริง โดยใช้วิธีการหา center of gravity ของคำตอบ B

สมชัย หลิมศิโรรัตน์

วันอังคารที่ 12 มิถุนายน พ.ศ. 2555

Ubuntu MAAS Provision

ผมได้ทดลองติดตั้ง Ubuntu 12.04 LTS เพื่อเป็น MAAS (Metal As A Service) Server ขึ้นมา และได้ทำตามเอกสารแนะนำในเว็บไซต์แล้ว เดิมทีผมเข้าใจว่า Ubuntu MAAS จะเป็น Cloud สำเร็จรูปให้เราได้ใช้งานกันเลย แต่จริงๆแล้ว นี่เป็นเพียงแค่การเริ่มต้นเท่านั้น

เมื่อติดตั้ง maas server แล้ว สิ่งที่จะได้ตามมาก็คือ maas-provision ซึ่งมีชื่อว่า Cobbler

Cobbler เป็น provision ซึ่งไม่ใช่ hypervisor แต่มันครอบ hypervisor อีกที ตามคำอธิบายจากคำสั่ง man cobbler ที่ว่า
Cobbler is a provisioning (installation) and update server. It supports deployments via PXE (network booting), virtualization (Xen, QEMU/KVM, or VMware), and re-installs of existing Linux systems. The latter two features are enabled by usage of 'koan' on the remote system. Update server features include yum mirroring and integrating of those mirrors with kickstart. Cobbler has a command line interface, Web UI, and extensive Python and XMLRPC APIs for integration with external scripts and applications.

ตอนนี้ผมก็มีคำถามในใจว่า ถ้าต้องการจะติดตั้ง Windows OS จะต้องทำอย่างไร เพราะดูเหมือนว่าโปรแกรมนี้จะออกแบบมาสำหรับ Linux เป็นหลัก

สมชัย หลิมศิโรรัตน์

วันอาทิตย์ที่ 3 มิถุนายน พ.ศ. 2555

BPM คืออะไร

พอดีได้ค้นหาเรื่องเกี่ยวกับ workflow แล้วก็เจอคำย่อว่า BPM ก็เลยงง หาไปหามา ก็พบว่ามันย่อมาจากคำว่า Business Process Management นั่นเอง

ค้นไปค้นมาเจอแหล่งความรู้เกี่ยวกับเรื่อง workflow และ BPM ที่น่าสนใจคือ
http://www.ebizq.net/

และพบว่า มีการแบ่งเรื่องการจัดการ workflow ออกเป็น 3 แนวทาง คือ
1. Human-Centric Approach
http://www.ebizq.net/topics/workflow_management/features/13249.html

2. Process-Centric Approach
http://www.ebizq.net/goals/process_centric_bpm

3. Content-Centric Approach
http://www.ebizq.net/goals/content_collaborative_bpm

วันอาทิตย์ที่ 20 พฤษภาคม พ.ศ. 2555

เทคนิการแก้ไข image ไฟล์ของ Linux

Ubuntu 12.04 LTS ได้ถูกปล่อยออกมาแล้ว ผมก็เลยได้มีโอกาสทดลองติดตั้ง Private Cloud ดู แต่ปรากฏว่ายังติดปัญหาอยู่หลายเรื่อง แต่วันนี้ไม่ได้มาเล่าถึงปัญหาของการทำ Cloud หรอกนะครับ เพราะผมเองก็ยังแก้ปัญหานั้นยังไม่ได้ แต่อยากจะเล่าเทคนิคเล็กๆน้อยๆ สำหรับบันทึกไว้เตือนความจำตัวเองด้วย และอาจจะมีบางคนได้ใช้ประโยชน์

เรื่องของเรื่องก็คือ ในขั้นตอนการทำ Cloud นั้น มันจะมี image ไฟล์ของเครื่องโหนดลูกที่เก็บไว้ที่เครื่องหลัก image ไฟล์เหล่านี้ ก็เสมือนฮาร์ดดิสต์ที่เราติดตั้ง OS และโปรแกรมต่างๆไว้พร้อมสำหรับบู๊ตเครื่องแบบต่างๆไว้ เมื่อเราสั่งติดตั้งโหนดลูก มันก็จะใช้ image ไฟล์เหล่านี้บู๊ตเครื่องขึ้นมา ซึ่งขั้นตอนการบู๊ตเครื่องนั้น จะเป็นอย่างไรก็อยู่ที่เราสร้าง image ไฟล์ไว้นั่นเอง

ปัญหาที่ผมเจอตอนนี้ คือ image ไฟล์ที่เขาสร้างไว้นั้น ยังมีบั๊กอยู่ ทำให้การติดตั้ง Cloud สะดุด ไม่สามารถติดตั้งโหนดลูกได้สมบูรณ์ เขาแนะนำว่าต้องเพิ่มโปรแกรมบางอย่างลงไป ซึ่งตอนนี้ถ้าเรารอได้ ก็รอให้เขาทำ image ไฟล์ตัวใหม่ออกมา แล้วเราก็แค่ update แต่ถ้ารอไม่ได้ก็ต้องทำ image ไฟล์ใหม่เอง ตามขั้นตอนที่เขาแนะนำ
ผมก็เลยทำตามขั้นตอนที่เขาแนะนำ และก็เลยคิดว่าควรจะบันทึกวิธีการหลักๆไว้ เพราะมีประโยชน์ในการนำไปใช้แก้ไข Firmware ต่างๆของเครื่องที่ใช้ระบบ Linux เช่น Firmware ของ Android เป็นต้น

หมายเหตุ: ขั้นตอนต่อไปนี้อาจจะต้องใช้สิทธิ์ของ root ในการสั่งงาน

ขั้นตอนแรก คือ mount image ไฟล์นั้นๆเข้ามาก่อน เช่น สมมติว่าเรามีไฟล์อยู่ที่ /home/test/amd64-boot.img อาจจะสั่ง mount ไปไว้ที่ /mnt ดังนี้
mount /home/test/amd64-boot.img /mnt

จากนั้น ใช้คำสั่ง chroot ซึ่งจะเปลี่ยนสภาพแวดล้อมการทำงานให้เรา เสมือนว่าเราทำงานอยู่บนอีกเครื่องหนึ่งที่มี root โฟลเดอร์อยู่ตรงที่ที่เราต้องการ เช่นในกรณีนี้ เราจะทำงานเสมือนว่าเราเปิดเครื่องมามีฮาร์ดดิสต์อยู่ที่ image ไฟล์ที่เรา mount ไว้แล้วที่ /mnt ดังนี้
chroot /mnt

เมื่อเราเสมือนว่าทำงานอยู่ที่ฮาร์ดดิสต์ตัวใหม่แล้ว เราก็สามารถแก้ไขข้อมูลต่างๆภายในได้ หรือแม้แต่รันโปรแกรมต่างๆ ก็จะเสมือนรันอยู่ที่เครื่องนั้น (จะต้องเป็นเครื่องที่มีสถาปัตยกรรมเหมือนกันกับเครื่องจริงที่กำลังทำงานอยู่) แต่ปัญหาของผมก็คือ ผมจะติดตั้งโปรแกรมโดยใช้คำสั่ง apt-get install แล้วเกิดปัญหาว่า ไม่สามารถติดต่อกับเน็ตเวอร์กได้ ทั้งๆที่เครื่องที่ทำงานอยู่ สามารถใช้เครือข่ายได้ตามปกติ สาเหตุก็คือ เราจะต้อง mount โฟลเดอร์พิเศษของระบบเข้ามาให้ถูกต้องด้วย นั่นคือโฟลเดอร์ /dev, /proc, /sys ซึ่งจะต้องเรียกก่อนที่จะใช้คำสั่ง chroot ดังนี้
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt

เท่านี้ เราก็สามารถใช้คำสั่ง apt-get install เพื่อติดตั้งโปรแกรมต่างๆลงใน image ไฟล์ที่เราต้องการได้ จากนั้นเมื่อทำการแก้ไขเสร็จแล้ว ให้ออกโดยอย่าลืม umount ด้วยดังนี้
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt

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

ปัญหาการ Burn DVD+R บน Ubuntu

ประเด็นของผมวันนี้คือ ผมอยากจะบันทึกเรื่องนี้ไว้ค้นถ้าหากลืมไปอีก และจะได้ไม่เสียแผ่นไปอีกเป็นกอง อีกอย่าง ก็อยากจะให้ผู้ที่ใช้ Linux และบังเอิญซื้อแผ่น DVD+R มา แล้วเจอปัญหาเดียวกัน จะได้รู้วิธีแก้ไข เพราะหาคำตอบใน Google ได้ไม่ง่ายนัก

ก่อนอื่นต้องขอย้อนกลังไปถึงสมัยเมื่อประมาณ 10 ปีก่อน ตอนที่ผมเรียนอยู่ที่ญี่ปุ่น ผมชอบใช้ DVD+R เพราะตอนเริ่มแรกที่ทาง Sony ออกมาตรฐานนี้ เขาออกแบบมาเพื่อการเขียนข้อมูลวีดีโอ และที่ญี่ปุ่นตอนนั้นก็นิยม DVD+R มากกว่า DVD-R แต่ต่อมา ไม่ว่าจะใช้แบบไหน ก็ได้คุณภาพพอๆกัน ทำให้ช่วงหลัง DVD-R ได้รับความนิยมมากกว่า เนื่องจากมีหลายบริษัทสนับสนุน DVD-R อาจจะเป็นเพราะไม่อยากให้ Sony ผูกขาดก็เป็นได้

เมื่อนานมาแล้ว ประมาณสักปีหนึ่งเห็นจะได้ ผมได้ซื้อ DVD+R มากล่องใหญ่ แต่ปรากฏว่านำมาใช้เขียนข้อมูลบน Ubuntu แล้ว มี error ทุกครั้ง เสียแผ่นไปตั้งหลายแผ่น แรกๆผมก็คิดว่า ผมซื้อแผ่นราคาถูกๆของ TESCO มา มันคงจะเสียจริงๆ แต่พอเอาไปเขียนบนเครื่อง Windows ก็ไม่พบปัญหา ผมจึงหาทางแก้ไข จนได้รู้ว่าเป็นเพราะอะไร และแก้ปัญหานั้นไปได้นานมากแล้ว

มาถึงเมื่อไม่นานมานี้ ผมก็ลืมปัญหานี้ไปแล้ว พอเอาแผ่นมาเขียนอีก เจอปัญหาเดิม ก็คิดว่าแผ่นเสีย เอาแผ่นใหม่มาเขียนอีกก็เสียอีก ทำไปทำมา ก็เสียไปหลายแผ่น จนทำให้นึกสงสัย หลายวันต่อมาก็นึกขึ้นได้ แต่ก็จำไม่ได้แล้วว่าต้องทำอย่างไร ค้น Google ก็จะไม่เจอ เพราะ keyword ที่ใช้ มันมีเครื่องหมาย และแตกต่างจากปัญหาอื่นๆเพียงเล็กน้อย เช่น ถ้าค้นว่า cannot burn DVD+R problem ก็จะไปพบแต่กระทู้ที่เกี่ยวกับปัญหาการเขียน DVD-R เสียมากกว่า แต่ความพยายามอยู่ที่ไหน ความสำเร็จก็จะมาเยือนแน่นอน ผมนึกขึ้นได้ว่า มันมีโปรแกรมที่จะต้องเรียก ซึ่งมีคำว่า dvd อยู่ และผมก็ลงไว้ในเครื่องแล้ว ก็เลยพบโปรแกรมนั้น นั่นคือโปรแกรม dvd+rw-booktype ซึ่งมีอยู่ใน package dvd+rw-tools นะครับ

เราจะต้องเรียกคำสั่ง
sudo dvd+rw-booktype -dvd-rom -unit+r /dev/dvd
เพื่อระบุว่าเราจะใช้ DVD+R ซึ่งผลการรันก็จะแสดงข้อความว่า
Unit was instructed to brand DVD+R media as DVD-ROM
จากนั้นก็สามารถใช้โปรแกรมเขียนแผ่นได้ตามปกติ หรือใช้คำสั่ง
sudo dvd+rw-booktype -inq -unit+r /dev/dvd
ถ้ายังมีปัญหาอาจจะลองสั่ง
sudo dvd+rw-booktype -dvd+r-spec -unit+r /dev/dvd 
ถ้าใครกลัวลืม อาจจะเขียนเป็นคำสั่งไว้ในไฟล์ /etc/rc.local ก็ได้ จะทำให้ทุกๆครั้งที่เปิดเครื่อง จะเรียกคำสั่งนี้อัตโนมัติ

ปล. เวลาเขียนแผ่น ควรจะตั้งความเร็วต่ำๆนะครับ เพื่อความชัวร์

วันอาทิตย์ที่ 18 มีนาคม พ.ศ. 2555

รีวิวโปรแกรมโน๊ตสำหรับ iPad

ตั้งแต่ได้ iPad 2 มา ผมก็พยายามหาโปรแกรมต่างๆมาใช้งานเพื่อให้สามารถทำงานบนเครื่องนี้ให้ได้ ตั้งใจไว้ว่าจะเปลี่ยนวิถีชีวิตที่หนักอึ้งมาหลายปี เพราะแบกกระเป๋าโน๊ตบุ๊ค+อุปกรณ์เสริม รวมๆแล้วก็หลายกิโลกรัมแทบจะทุกวัน เปลี่ยนให้มาเป็นชีวิตที่เบาสบายกว่า ซึ่งโปรแกรมหลักๆที่มีมากับเครื่องนั้น โดยรวมก็ช่วยให้ทำงานได้ในระดับหนึ่ง ไม่ว่าจะเป็นโปรแกรม Calendar ซึ่งเป็นปฎิทินสำหรับบันทึกนัดหมายต่างๆ โปรแกรม Mail ไว้สำหรับติดต่อสื่อสาร และโปรแกรม Notes สำหรับบันทึกข้อความ ส่วนโปรแกรมทางด้านความบันเทิง หรือ มัลติมีเดียได้แก่ โปรแกรม Videos สำหรับดูหนัง โปรแกรม Music สำหรับฟังเพลง โปรแกรม Camera สำหรับถ่ายรูป หรือโปรแกรม Photo สำหรับเป็นอัลบั้มเก็บภาพต่างๆไว้ ฯลฯ เป็นต้น

สำหรับการรีวิวครั้งนี้ ผมขอเน้นไปที่โปรแกรมโน๊ตนะครับ เพราะว่าโปรแกรมประเภทนี้ ดูเหมือนว่าหลายๆคนจะมองข้ามไป เพราะคิดว่าไม่น่าจะมีอะไรมาก แต่จริงๆแล้ว ถ้าเราเลือกใช้งานโปรแกรมที่เหมาะสม มันจะช่วยงานเราได้มากทีเดียว

สำหรับโปรแกรมโน๊ตที่เลือกมารีวิวมี 5 โปรแกรมดังนี้
  1. Notes - Notes ของ Apple Inc. (ไม่จำกัดจำนวนเรื่อง)
  2. NoteMaster - NoteMaster Lite 4.2.1 ของ Kabuki Vision (7 เรื่อง)
  3. aNote - Awesome Note HD Lite 2.3 ของ BRID (bridworks.com) (10 เรื่อง)
  4. DocAs - DocAs Lite 4.0 ของ Square LLC
  5. iDesk - iDesk Lite 2.1 ของ tentouch.com
ทั้งหมดที่เลือกมา ผมเน้นเลือกเฉพาะรุ่น Lite เนื่องจากผมคิดว่าโปรแกรมโน๊ตนั้น น่าจะเป็นโปรแกรมที่ไม่ซับซ้อน ใช้งานง่ายๆ ความสามารถไม่ต้องมากนัก และก็ไม่ควรต้องเสียเงินมากด้วย ผมจึงเลือกที่ฟรีๆมาทดลองใช้ดูก่อน ทีนี้เรามาดูว่าความสามารถไหนบ้างที่จำเป็นต้องใช้

สมุดฉีกหรือหนังสือ
ก่อนอื่นต้องขอแยกประเภทของโปรแกรมออกเป็นสองกลุ่มใหญ่ๆคือ สมุดฉีก กับ หนังสือ นะครับ เนื่องจากการนำไปใช้ที่ต่างกัน ถ้าเป็นสมุดฉีก เราต้องการความรวดเร็ว ข้อความสั้น ไม่มีหน้า ส่วนหนังสือ เราต้องการเขียนแนวคิด มีลำดับ หัวข้อหนึ่งมีได้หลายหน้า และอาจจะต้องสามารถวาดภาพประกอบได้ด้วย แต่ในความคิดของผม โปแกรมที่เป็นแบบหนังสือ สามารถใช้งานในลักษณะสมุดฉีกได้ด้วย

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

แทรกภาพได้
นอกจากข้อความแล้ว เรามักจะต้องการแทรกภาพด้วย เพราะภาพสามารถใช้แทนคำบรรยายได้ดีกว่าในบางกรณี ซึ่งภาพก็มีอยู่สองแบบคือ ภาพถ่ายและภาพวาด สำหรับภาพวาดนั้น เครื่องมือที่ใช้วาดก็สำคัญ และที่มักใช้บ่อย คือ free hand และการวาดรูปทรงเรขาคณิต ถ้าจะตัดความสามารถในการวาดภาพออกไป คือเอาเฉพาะให้แทรภาพได้ ก็เพียงพอแล้ว ส่วนภาพนั้นจะสร้างมาอย่างไร ก็ขึ้นอยู่กับเครื่องมืออื่นๆที่จะนำมาวาดภาพประกอบก็พอ

บันทึกเสียงได้
การโน๊ตนั้น เราอาจจะเคยชินกับการพิมพ์ข้อความ แต่การพิมพ์บน iPad นั้น บางคนอาจจะไม่ถนัด ถ้าสามารถบันทึกเสียงแทนการพิมพ์ได้ ก็จะดีไม่น้อย

แทรกตำแหน่ง GPS
ในบางครั้งเราบันทึกการเดินทางท่องเที่ยว และแน่นอนว่าบางสถานที่นั้นอาจจะหายาก หรือไม่ก็เราอยากจะไปอีกแต่กลัวจะจำไม่ได้ เราก็ต้องการจะบันทึกไว้ แต่ถ้าจะเขียนอธิบายว่าไปอย่างไรอาจจะยืดยาวและสับสน ถ้าในเครื่องมี GPS อยู่ เราก็อยากจะบันทึกตำแหน่งนั้นไว้เลย หรือบางคนอาจจะอยากบันทึกเป็นที่ระลึกของตัวเองว่า ครั้งหนึ่งเราเคยมายืนอยู่ตรงจุดนี้แล้ว การบันทึกตำแหน่งได้ ก็เลยเป็นอีกความสามารถหนึ่งที่น่าสนใจ

การจัดการไฟล์
การจัดการไฟล์เป็นความสามารถที่จำเป็นมาก หากเรามีโน๊ตเก็บไว้มากขึ้นเรื่อยๆ ซึ่งจำเป็นต้องมีความสามารถในการค้นหาไฟล์ต่างๆ บางโปรแกรมจะให้เราสร้างโฟลเดอร์ได้ แต่บางโปรแกรมก็ไม่ได้ ซึ่งทำให้ความสามารถในการค้นหายิ่งจำเป็นมากขึ้น บางโปรแกรมให้เราติด tag ได้ และสามารถค้นหาตาม tag ได้ แต่เนื่องจากโปรแกรมที่นำมารีวิวนี้เป็นรุ่น Lite ซึ่งส่วนใหญ่จะจำกัดจำนวนไฟล์ ทำให้ไม่สามารถทดสอบการค้นหาได้อย่างเต็มที่นัก

การถ่ายโอนข้อมูล
ใน iPad นั้น แต่ละโปรแกรมจะถูกจำกัดให้เข้าถึงเนื้อที่เก็บข้อมูลเฉพาะของตัวเองเท่านั้น หากต้องการข้อมูลนั้นๆไปทำอย่างอื่น เราจะต้องถ่ายโอนข้อมูลออกไป หรือรับข้อมูลมาจากโปรแกรมอื่นก็ได้ สำหรับการรับข้อมูลเข้านั้น ผมขอไม่พูดถึงนะครับ เพราะการโน๊ตปกติแล้วเราจะเขียนขึ้นมาเอง ไม่ใช่การเอาสิ่งที่เขียนไว้มาแก้ แต่ไม่ว่าจะเป็นการรับหรือส่งเพื่อถ่ายโอนข้อมูลจะมีข้อจำกัดคือ โครงสร้างของข้อมูลจะถูกแปลง บางโปรแกรมก็ส่งเป็นข้อความอีเมลล์ บางโปรแกรมก็แปลงเป็นภาพแล้วแนบไปในอีเมลล์ หรือแปลงเป็นไฟล์ PDF ได้ก็มี นอกจากนี้ บางโปรแกรมก็สามารถส่งเข้า Dropbox ได้เลย หรือไม่ก็ sync เข้ากับ Google Doc ได้ ซึ่งมีประโยชน์มาก หากเราสามารถถ่ายโอนไปได้หลายช่องทาง

ตารางสรุปความสามารถของโปรแกรม
Y / NNoteNoteMasteraNoteDocAsiDesk
สมุดฉีก/หนังสือ
Y
Y
Y
N
Y
มีบรรทัด/ไม่มีบรรทัด
Y
Y
Y
N
N
แทรกภาพได้
N
Y
Y
Y
N(พื้นหลัง)
วาด freehand ได้
N
Y
Y
Y
Y
วาดรูปทรงเรขาคณิตได้
N
N
N
N
Y
บันทึกเสียงได้
N
N
N
N
Y
แทรกตำแหน่ง GPS ได้
N
N
Y
N
N
สร้างโฟลเดอร์ได้
N
Y
Y
Y
N
ค้นหาหัวข้อเรื่อง
Y
Y
Y
Y
N
ค้นหาเนื้อหา
Y
N
Y
N
N
ค้นหา tag
N
N
Y
N
N
อีเมลล์ข้อความ
Y
Y
Y
N
N
อีเมลล์ HTML
N
Y
Y
N
N
อีเมลล์โดยแนบภาพ
N
Y
Y(HTML)
Y
Y
อีเมลล์โดยแนบ PDF
N
N
N
N
Y
ส่งภาพเข้า Photo
N
N
N
Y
Y
ส่งเข้า Dropbox
N
N
N
N(buy)
Y
sync Google Doc
N
Y
Y
N(buy)
N

สรุป
จากตารางความสามารถที่สรุปมา จะเห็นได้ชัดว่าโปรแกรม aNote นั้นน่าใช้มาก และถ้าใช้งานร่วมกับโปรแกรม DocAs หรือ iDesk โดยใช้เป็นเครื่องมือช่วยวาดภาพ ก็จะได้เครื่องมือที่สมบูรณ์แบบ โดยส่วนตัวแล้ว ผมชอบโปรแกรม iDesk มากกว่า เพราะสามารถวาดรูปทรงเรขาคณิตได้ดีกว่า เราสามารถใช้วาดแผนผัง แผนภาพต่างๆแล้วนำเข้ามาแทรกเป็นภาพในโน๊ตของเราได้ แต่ถ้าดูที่ความสามารถ โปรแกรม DocAs จะเก่งกว่า สามารถถ่ายโอนข้อมูลได้หลากหลายช่องทางมากกว่า