Month: October 2011

Unity vs Gnome3 หนีเสือปะจระเข้

เจ็บกว่านี้มีอีกไหม?

  • จากที่ใช้ลีนุกซ์มาหลายปีดีดัก Ubuntu นำลีนุกซ์เข้าสู่ยุคที่แสนจะใช้ง่ายที่เรียกว่าแกะกล่องใช้งานได้เลย (Work out of the box) จากวันนั้นเป็นต้นมาทุกอย่างดูลี่นไหลตลอดจนกระทั่งที่ผ่านมาสักปีหนึ่ง ผมจะเรียบเรียงความเจ็บที่ผมเจอ พร้อมทั้งแสดงวิธีแก้ช้ำ หลีกเลี่ยง หรือกระทั่งจะเลิกคบกันไปเลย

อันดับ 1 คือ Grub2

  •  ใช้งานได้ยากเย็นเหลือเกิน สละความง่ายไปเลือกความยาก (สำหรับผู้ใช้) การปรับแต่งไม่ยืดหยุ่นเหมือนเดิม ทุกครั้งที่ผมติดตั้ง Ubuntu หลัง PCLinuxOS ตัว Entry เข้า PCLinuxOS ที่ grub เขียนให้ไม่สามารถใช้ได้ ร้ายแรงขนาดกดสวิชต์โน๊ตบุ๊คไม่ดับ ต้องพลิกเครื่องมากถอดแบ๊ตเตอรีออก ถ้าพยายามเข้าไปแก้ grub.conf จะเจอแบบนี้ ที่ระบุว่าห้ามแก้ไข คู่มือแนะนำให้ไปแก้ไขใน grub.d ซึ่งก็เป็นอะไรที่ทำให้งง เมาหมัดเป็นชุด
ไฟล์คอนฟิค grub.cfg ที่ห้ามแก้ไข
  • วิธีบ่งหนองออกแก้ช้ำ ผมต้องใช้การบู๊ตด้วย LiveCD ของ SystemRescueCD มาแก้ grub ให้ไปใช้ของ PCLinuxOS ซึ่งยังเป็น grub 0.9 (legacy) อยู่ ซึ่งหลายๆดิสโทรยังไม่ยอมเปลี่ยนไปใช้ grub2 ความนี้ย่อมมีสาเหตุ

อันดับ 2 Unity

  • ก่อนหน้านี้เป็นสงครามวิวาทะกันพอสมควรระหว่างทีมพัฒนา  Gnome3 กับ Canocial ผู้พัฒนา Ubuntu ที่ไม่ลงรอยกันหลายๆเรื่องจนกระทั่ง Canocial ตัดสินใจทำ Desktop Environment ใหม่ขึ้นมาก็คือ Unity ที่ทำเอาผมเสียศูนย์ไปเลย 555 ตัว Compiz สุดที่รักมีอันต้องเป็นไป พยายามจูนมาใช้ ปรากฎว่าใช้ได้ประมาณ 1 ใน 4
  •  เมนูหลักเดิมหายไปไหน จะคลิกโปรแกรมแต่ละโปรแกรมทำไมมันต้องหลายคลิกเหลือเกิน คลิกซ้าย คลิกขวาตรง desktop เมนูหายไปไหนหมด  ปรับฟอนต์ระบบให้ใหญ่เล็กไม่ได้ (ทำได้ต้องหันไปติดตั้งและใช้ทูลส์ gnome-tweak-tool ยุ่งจริงๆ) ปรับฟอนต์ไม่ได้เพิ่มฟอนต์ก็ไม่ได้
หน้าจอ Unity ที่ Panel ด้านซ้ายดูทื่อเหลือเกิน
effects ใน compiz ใช้ได้ไม่ถึงครึ่ง
  • วิธีแก้ช้ำ ติดตั้งโปรแกรมจำพวก avant-window-navigator หรือไม่ก็ cairo-dock มาช่วย หนึ่งคลิกก็รันโปรแกรมที่เลือกได้แล้ว
นอกจาก compiz แล้วตัวสุดโปรดของผมคือ Cairo-Dock
  • วิธีแก้ถาวร ใช้สำนวนของกิมย้ง เรื่องอุ้ยเสี่ยวป้อที่พาลูกๆเมียๆหนีฮ่องเต้  “นับแต่นี้จะหลบเร้นหนีหาย” 555 คือหันไปใช้ Desktop ตัวอื่นเช่น Xfce หรือไม่ก็ KDE

อันดับ 3 Gnome3

  • Gnome3 ได้ชื่อว่าใช้ระยะเวลาในการพัฒนานานมากหลายๆปี แฟนๆ Gnome อย่างผมก็ตั้งหน้าตั้งตารอ หนีจาก Unity ก็ไปปะ Gnome3 เข้า ประมาณหนีเสือปะจระเข้ อะไรประมาณนั้น เจ็บๆไม่เจ็บยังไงดู comment ของคุณ Linus Torvalds ที่มีต่อ Gnome3 ว่า “Unholy mess” อู๊ย…..เจ็บไม่รู้จะเอาอะไรมาบรรยายแล้วครับ
  • Compiz นี้หนักกว่า Unity คือใช้ไม่ได้เลย ลักษณะการคลิกเรียกโปรแกรมต้องคลิกผ่าน Activities จำนวนการคลิกไม่ต่างจาก Unity แถบด้านซ้ายจะเรียกอะไรก็แล้วแต่ดูดีกว่า Unity  ที่เหมือน Unity มากคือ Desktop ไม่ใช่ที่วาง icon ของเราอีกต่อไป
Fedora 15 64bit รุ่น Gnome3 ที่ผมลองใช้งานอยู่
fedora 15 ในมุมหน้าต่างและ workspace
  • วิธีแก้ชั้ำชั่วคราว คือใช้ให้น้อยลง ไปลอง KDE ซึ่งตั้งแต่รุ่น 4.5 เป็นต้นมาใช้ได้ลื่นไหล สวย เนียน ลูกเล่นเยอะ ใช้ง่าย ใช้ไปนานๆมีอาการอืดๆนิดๆบ้าง ก็ไม่เป็นไร มี KWin ที่มาแทน Compiz ถึงจะไม่เทียบเท่าแต่ก็พอแทนกันได้ และแน่นอนอนาคตคงเพิ่ม effects จนไม่เห็นความแตกต่าง
  • หรือตัว Desktop Environment ที่กินทรัพยากรน้อยๆ บางเบาก็ต้องนุ่น Xfce ที่คุณ Linus Torvalds หันไปใช้นั่นแล

คำเตือน

  • นี่เป็นทัศนะส่วนบุคคลนะครับ ใครเป็นแฟนๆลีนุกซ์ดิสโทรไหนอย่าว่ากัน อ่านแล้วใช้วิจารณญาณด้วย ไปแล้วครับ 555…..

FSArchiver เครื่องมือเขียน Image ของฮาร์ดดิสค์ มาแบบเงียบและทรงพลัง

FSArchiver

  • เป็นเครื่องมือระบบในการจัดเก็บไฟล์ ไดเรคทอรีหรือแม้กระทั่งพาร์ทิชั่นแบบบีบอัดไปยังไฟล์ปลายทาง สามารถนำมาแบ็คอัพข้อมูลได้หรือเขียน image ของฮาร์ดดิสค์ได้เป็นอย่างดี (หรือที่ชอบเรียกกันว่าโคลนนิ่งฮาร์ดดิสค์หรือโคลนนิ่งพาร์ทิชั่น) และในภายหลังสามารถนำไฟล์มา restore ได้
  • ความสามารถที่เหนือกว่า Partimage ที่ผมเคยเขียนไปแล้วมีหลายอย่าง ที่สำคัญมากคือสามารถอ่านและเขียนระบบไฟล์ ext4 ของลินุกซ์ได้ และอีกอย่างคือสามารถอ่านและเขียนจากพาร์ทิชั่นต้นทางไปยังพาร์ทิชั่นปลายทางที่มีขนาดต่างกันได้ ตราบเท่าที่ขนาดพาร์ทิชั่นปลายทางยังมีเนื้อที่พอให้เขียน
  • สนใจ FSArchiver ติดตามได้ที่นี่

คำเตือน

  • ก่อนจะเอาไปใช้ดูคำเตือนของโปรแกรมด้วย “ยังเป็นรุ่นที่กำลังพัฒนาอยู่ อย่านำไปใช้กับข้อมูลที่สำคัญยิ่งยวด” เท่าที่ผมใช้งานยังไม่พบปัญหาเลยครับ

การประยุกต์ใช้งาน

  • FSArchiver นั้นถูกรวมมากับ SystemRescueCD เวลาใช้งานคือไปดาวน์โหลด SystemRescueCD เป็นไฟล์ ISO จากนั้นจัดการทำบู๊ตด้วยแผ่น CD หรือด้วย Flash drive ก็ยิ่งดีเพราะสามารถฟอร์แม็ตทิ้งแล้วนำไปใช้งานอื่นต่อได้ เมื่อต้องการบู๊ต SystemRescurCD ก็สามารถนำมาทำใหม่ได้
  • การทำบู๊ตด้วย flash drive มีหลายวิธีที่เว็ปไซค์ของ SystemRescueCD แนะนำคือใช้โปรแกรม linuxliveusb เป็นทูลส์ตัวเล็กๆรันบนวินโดส์เท่านั้น ฟรี opensource ใช้ง่าย เขียนบู๊ตได้กับลินุกซ์ได้เกือบทุกดิสโทร

ข้อจำกัดการใช้งานคือใช้ไม่ได้กับ Ubuntu ก่อนรุ่น 8.04, Mandriva และ ISO สำหรับบู๊ตวินโดส์

  • ผมเสียดาย Unetbootin หลังจาก SystemRescueCD รุ่น 1.5.x  เป็นต้นมาไม่สามารถนำมาใช้งานได้ ทั้งที่ยังใช้งานทำบู๊ตให้กับลีนุกซ์อื่นๆได้เกือบทุกดิสโทร
  • ข้อจำกัดของ FSArchiver คือเป็นคำสั่งมือ (command line) แต่ขอบอกว่ามันง่ายมากเลยแค่บรรทัดเดียว ขอให้ผู้ใช้มีความรู้ด้านการเมาท์พาร์ทิชั่นก่อนจะสั่ง FSArchiver ทำงานก็พอ

วิธีการใช้งาน

บู๊ต

  • มาดูการใช้งานหลังจากทำบู๊ตด้วย flash drive แล้วทำการบู๊ตเครื่องเข้า SystemRescueCD ใช้คำสั่ง startx เพื่อเข้าสู่โหมดกราฟฟิค

#startx

เมาท์พาร์ทิชั่น

  • ตรวจดูพาร์ทิชั่นที่จะเมาท์เพื่อเก็บ image ใช้ GParted ก็ได้แต่ง่ายที่สุดคือใช้ FSArchiver ด้วย option ต่อไปนี้

#fsarchiver probe simple

แสดงพาร์ชั่นต้นทางและปลายทาง
  • รูปด้านบนผมมี external hard disk เสียบอยู่กับคอมพิวเตอร์ device ที่เห็นคือ sdd พาร์ทิชั่นที่ต้องการจัดเก็บคือ sdd1 ส่วนฮาร์ดดิสค์ลูกที่อยู่ในเครื่องคือ sda และพาร์ทิชั่นที่ต้องการเขียนเป็น Kubuntu คือ sda9 ก่อนจะทำการเมาท์ต้องสร้างไดเรคทอรีก่อนผมตั้งชื่อ 500ext4 เพื่อให้สอดคล้องกับชื่อ label ที่ตั้งไว้คือ PJ500GBExt4 (ขนาด 500 GB ระบบไฟล์เป็น ext4) เมาท์ด้วยคำสั่ง mount เพราะระบบไฟล์เป็น ext4 (ถ้าระบบไฟล์เป็น ntfs ต้องใช้คำสั่ง ntfs-3g)

#mkdir /mnt/500ext4

#mount /dev/sdd1 /mnt/500ext4

เขียน Image

  • ทำการเขียน image ด้วยคำสั่ง fsarchiver  ด้วย optionแรก savefs ระบุว่าต้องการจัดเก็บระบบไฟล์ option ที่สองคือปลายทางไฟล์และพาทที่ต้องการจัดเก็บไปไว้(ไฟล์ชื่อ kubuntu2 ซึ่ง fsarchiver จะเพิ่ม extension เป็น fsa ให้อัตโนมัติ) option สุดท้ายคือพาร์ทิชั่นต้นทางที่ต้องการเขียน image หรือโคลน

#fsarchiver savefs /mnt/500ext4/partimages/kubuntu/kubuntu2 /dev/sda9

มาแบบเงียบๆ

  • ที่จั่วหัวว่ามาแบบเงียบๆ ก็ตรงที่เขียน image ไม่มีการบอก progress อะไรๆทั้งสิ้น ไม่มีการบอกเวลาที่จะสิ้นสุด แต่ทำงานเร็วมาก ความรู้สึกว่าเร็วกว่า partimage มาก ต่อไปในขณะที่อ่านและเขียน จะแอบไปดูปลายทางกันว่าได้ไฟล์ขนาดเท่าไหร่แล้ว เปิด terminal มาอีกตัว ใช้คำสั่ง cd เข้าไปแล้วใช้คำสั่ง list ดูชื่อไฟล์และขนาด
ขนาดของไฟล์ image เพิ่มขึ้น

สิ้นสุดการอ่านและเขียน

  • สำหรับพาร์ทิชั่นของ Kubuntu ของผมไม่ใหญ่มากขนาดประมาณ 20 GB ใช้ไปประมาณ 13.6 GBบีบแล้วได้ขนาดประมาณ 6.7 GB เมื่อ process สิ้นสุด FSArchiver จะแสดงข้อความว่าทำอะไรไปบ้าง
แสดงสถานะของ fsarchiver หลังเขียน image เสร็จ

การ Restore Archive

  • เมื่อต้องการ restore image กลับมาเหมือนเดิม ขั้นตอนคล้ายข้างต้นตั้งแต่บู๊ต เมาท์พาร์ทิชั่นเสร็จแล้วจะใช้คำสั่ง fsarchiver โดยมี option แรกเป็น restfs ส่วน option สุดท้ายต้องระบุ id ของไฟล์ด้วย เพราะ fsarchiver นั้นเก่งสามารถเขียน image หลายๆพาร์ทิชั่นพร้อมกันแล้วเก็บปลายทางที่ไฟล์ๆเดียวได้ แต่ส่วนใหญ่ผมไม่ได้ใช้ การระบุทำได้โดยใช้ id=0 ดูตัวอย่างด้านล่าง

#fsarchiver restfs /mnt/500ext4/partimages/kubuntu/kubuntu2.fsa id=0,dest=/dev/sda9

  • การ restore เร็วกว่าตอนเขียนมากแป๊ปเดียวก็เสร็จ

คอมไพล์และติดตั้ง Lazarus ด้วย Qt widgets บนลีนุกซ์ KDE

KDE

  • ปกติผมเป็นแฟนของ Gnome มากกว่า KDE ตั้งแต่ KDE ออกรุ่น 4 เป็นต้นมามีการเปลี่ยนแปลงไปมาก แรกๆออกรุ่น 4 มารู้สึกจะได้ก้อนอิฐมากกว่าดอกไม้ เสียงบ่นกันขรมทีเดียวแต่รุ่นหลัง 4.5 ดีขึ้นผิดหูผิดตาคือไม่ค่อยตุกติกใช้ยากเหมือนก่อนหน้านี้ ก็ลองต้องมาดูกันใหม่ ประเภทสวย เนียน ดีอะไรประมาณนั้น ตอนนี้ก็เลยใช้ KDE มากขึ้นๆๆๆ แต่ไม่ถึงกับทิ้ง Gnome หรอกนักยังรักเหมือนเดิม 555 ถึงแม้เจ้า Unity ของ Ubuntu จะทำผมแทบเสียศูนย์ก็ตาม (ไม่ใช่ความผิดของ Gnome แต่เป็นของ Conocial)
Kubuntu

Qt (framework)

  • Qt (framework) เป็นเครื่องมือพัฒนาโปรแกรมแบบ cross-platform ใช้ได้หลากหลายเช่น Windows, MacOX, Linux กับหลากหลายอุปกรณ์ รวมทั้งอุปกรณ์ประเภทที่ใช้มือถือด้วย ส่วน application ที่ใช้ Qt ได้แก่ VLC, Maya, QGIS, Skype รวมถึง KDE ในลินุกซ์ด้วย เจ้าของคือ Nokia ซึ่งจะโละ Symbian ทิ้งแทนที่ด้วย Qt ผมเองเห็น demo ของ Qt มานานหลายปีแล้วรู้สึกทึ่ง แต่ปัจจุบันการเข้ามาของ Android หรือ IPad ก็เลยทำให้ Qt ดูธรรมดาไป  หลังๆมีคน port ไปใช้บน Android ด้วย
  • สำหรับผู้พัฒนาโปรแกรมด้วย Lazarus ใช้Qt Widgets เพื่อให้โปรแกรมสามารถนำไปใช้ดับ platform ที่ใช้ Qt โดยไม่ต้องติดตั้งไลบรารีของ Qt เพิ่มเติมและดูเป็นธรรมชาติไปกับ platform นั้นๆ ในฐานะของผู้พัฒนาไม่จำเป็นต้องเรียนรู้ API ของ Qt เพราะ Lazarus จัดการให้หมดผ่าน Qt Widgets LCL
แสดง Lazarus บน Qt

ติดตั้ง libQt4Pas ก่อนคอมไพล์ Lazarus

  • ก่อนจะคอมไพล์ต้องติดตั้งไลบรารี libQt4Pas.so สำหรับ binding  ซึ่งขณะนี้เป็นรุ่น 5.2.1 บน PCLinuxOS และ Kubuntu ใช้คำสั่ง

$sudo apt-get install libQt4Pas5 libQt4Pas-dev

เมื่อ Lazarus เกิด Error กับ Qt บน KDE

  • ผมลองใน PCLinuxOS กับ Kubuntu ซึ่งสองดิสโทรนี้ใช้ KDE ต้องยอมรับว่าบน PCLinuxOS เหงื่อตกเพราะนานมาแล้วไม่ได้ลองบน KDE ปัจจุบันที่เขียนอยู่นี้ KDE v. 4.5.3 ถ้าคอมไพล์และบิวด์ปกติโดยยังไม่ได้ patch จะผ่านแต่ตอนรันจะไม่ผ่าน แต่ใน Kubuntu ตอนนี้เป็นรุ่นที่ patch แล้วจึงไม่มีปัญหา
  • ใน PCLinuxOS ยังต้อง patch ตอนเรียกใช้ด้วยคำสั่ง startlazarus ซึ่งตอนนี้เป็นช่วง binding กับไลบรารี libQt4Pas.so จะเห็นหน้าตาของ Lazarus แวบออกมาแต่สักพักจะปิดตัวเองแล้วเห็น error ประมาณนี้

TLazarusManager.Run starting /usr/local/share/lazarus/lazarus …
TMainIDE.ParseCmdLineOptions:
PrimaryConfigPath=”/home/priabroy/.lazarus”
SecondaryConfigPath=”/etc/lazarus”
TMainIDE.DoNewProject A
TApplication.HandleException Access violation
Stack trace:
$B56AB28C
QWidget::repaint: Recursive repaint detected
lazarus.pp – unhandled exception
QPaintDevice: Cannot destroy paint device that is being painted
QPaintDevice: Cannot destroy paint device that is being painted
[TMainIDE.Destroy] A
[TMainIDE.Destroy] B -> inherited Destroy… TMainIDE
[TMainIDE.Destroy] END

สาเหตุ

  • เท่าที่ค้นหาดูในอินเทอร์เน็ตระบุว่าตั้งแต่ Qt 4.7 เป็นต้นมาจะเปิด SSE2 (ชุดคำสั่งประมวลผลด้านมัลติมีเดีย) โดยปริยาย ผมสงสัยว่า SSE2 มันมีตั้งแต่ปีมะโว้แล้วทำไมเพิ่งมาเปิดตอนนี้ ไลบรารี libQt4Pas.so จะต้องคอมไพล์ด้วย qmake ด้วย options QMAKE_CXXFLAGS += -mstackrealign เอาละในฐานะ user อย่างผมจะไม่เหนื่อยต้องมาคอมไพล์แบบนี้เพราะมีคนทำไว้แล้ว

ไลบรารีตัวช่วยสำเร็จรูป

  • ตัวช่วยสำเร็จรูปจัดทำโดยคุณ Jan.Van.hijfte อยู่ที่ Free Pascal Qt4 Binding ซึ่งตอนนี้ผู้จัดทำเรียกเป็นรุ่น 2.4 แต่ผมใช้รุ่น 2.1 ซึ่ง libQt4Pas.so จะเป็นรุ่น 5.2.1 ตรงกับที่ติดตั้งผ่าน apt-get
  • มองหา X11 i386 Libray Binary ถ้า Lazarus เป็น 32 bit หรือ X11 x86-64 Libray Binary ถ้าเป็น 64 bit ดาวน์โหลดไฟล์มาแล้วแตกออก ผมใช้ Ark
libQt4Pas.so รุ่น 2.1

ติดตั้ง

  • ใช้สิทธิ์ผู้ดูแลระบบทำการ copy file => libQt4Pas.so, libQt4Pas.so.5, libQt4Pas.so.5.2 และ libQt4Pas.so.5.2.1 ไปไว้ที่ /usr/lib คือก็อปปี้ไปทับไลบรารีเดิมที่ติดตั้งผ่าน apt-get เมื่อ ls ดูจะเห็นดังรูปด้านล่าง
libQt4Pas.so ใน /usr/lib

เตรียม Lazaus

  • ผมดาวน์โหลด Lazarus แบบ subversion (svn) รุ่น 32774M เมื่อเรียบร้อยแล้วทำการคอมไพล์ดังนี้ ซึ่งใช้เวลาไม่นานนัก

$make PREFIX=/usr clean all LCL_PLATFORM=qt

$sudo make install

  • รัน Lazarus ผ่านคำสั่ง startlazarus ปรากฎว่าผ่าน ผมสังเกตว่าไม่มี gnu debugger (gdb) ติดตั้งมากับ PCLinuxOS ทำการติดตั้งด้วยคำสั่ง

$sudo apt-get install gdb

Lazarus บน PCLinuxOS
  • config ที่เมนู Tools > Options > Degubber เลือกดีบักเกอร์ เป็น GNU Debugger ตั้งพาทไปที่ /usr/bin/gdb ก็พร้อมที่จะเปิดโปรแกรมที่พัฒนามาลองรันดูได้ สำหรับ distro อื่นๆที่ใช้ KDE น่าจะเอาไปประยุกต์ใช้ได้ครับ