Theppitak's blog

My personal blog.

31 มีนาคม 2548

Speeding Up GNOME

กลับถึงขอนแก่นด้วยความเพลีย กับอากาศ 37 องศาเซลเซียส และงานทางบ้านที่รอให้มาทำต่อ อ๋อย.. อย่าเพิ่งเร่งเลยแม่ เวียนหัวจะแย่ ขอพักวันนึงก่อนนะ (อาการคล้ายๆ กับจะมีปัญหาเรื่องสายตา เพราะวิงเวียนแถวๆ หว่างคิ้ว ทำงานต่อไปไม่ไหว จนต้องพักงีบ)

อย่างไรก็ดี หลังจากไม่ได้คอมไพล์ GNOME มาอาทิตย์กว่าๆ วันนี้เลยถือโอกาส update CVS แล้วสั่งคอมไพล์ทิ้งไว้ เย็นๆ ลุกมาเช็กข่าว เจอคนโพสต์ที่ OSNews เกี่ยวกับ การเร่งความเร็ว GNOME โดยอาศัย linker option "--as-needed" ซึ่งจะทำให้ไลบรารีที่ต้องใช้จริงๆ เท่านั้น ที่จะถูกมาร์กว่า NEEDED และถูกโหลดตอนใช้งาน แล้วก็ปรากฏว่า มันลด dependency ของโปรแกรมต่างๆ ใน GNOME ลงได้อย่างฮวบฮาบ เช่น เขายกตัวอย่าง gnome-terminal ที่ลดจำนวน dependency ลงจาก 52 ไลบรารี เหลือแค่ 21 เท่านั้น!

จากความเห็นในข่าว เห็นบอกว่า Ubuntu ก็อาจจะพิจารณาใช้วิธีนี้

โฮะๆ เสียดาย เพิ่งคอมไพล์เสร็จ ไว้รอบหน้าต้องลองมั่งแล้ว :D

Update: Fedora ก็กำลังถกเรื่องนี้เหมือนกัน มี ผลการทดสอบ กับ planner และ dia เพิ่มด้วย

25 มีนาคม 2548

sl-modem

ไม่ได้ใช้ sl-modem ในโน้ตบุคเสียนาน (ตอนอยู่บ้านยืมอีกเครื่องเป็น gateway) พอจะมากรุงเทพฯ (มาร่วมงาน สัมมนา ที่ SIPA-NECTEC จัด) ก็เลยต้องเซ็ตโมเด็มไว้ต่อเน็ตระหว่างอยู่กรุง ปรากฏว่า sl-modem เดิมที่คอมไพล์ด้วย make-kpkg ของ debian ไว้ ใช้กับเคอร์เนล 2.6.10 ไม่ได้ แม้จะคอมไพล์ใหม่ เพราะเวลาโหลดมอดูล มันจะฟ้อง unresolved symbol อยู่เรื่อย (แต่กับ 2.6.9 ไม่มีปัญหา)

เลยอ่าน README.Debian เจอวิธีการใช้ module-assistant ช่วย โดยสั่ง:

# module-assistant auto-install sl-modem

มันจะจัดการเช็ก source installation แล้วก็คอมไพล์ให้โดยอัตโนมัติ ปรากฏว่า คราวนี้ พอสั่ง /etc/init.d/sl-modem-daemon start ปรากฏว่าโหลดมอดูลขึ้น แต่สร้าง device file (/dev/ttySL0) ไม่สำเร็จ ก็เลยปิ๋วอยู่ (แต่อาการดีขึ้น)

อ่าน README.Debian ต่อ พบว่ามีอีกวิธีคือใช้ ALSA driver (คุ้นๆ เหมือนกัน ว่าเห็นใน changelog ตอนที่ upgrade ระบบ แต่พอดีไฟยังไม่ลนก้น เลยไม่ได้ไปลอง) โดยแก้ไฟล์ /etc/default/sl-modem-daemon เซ็ตค่า:

SLMODEMD_DEVICE=auto

(จากเดิมที่เป็น slamr0) เพื่อให้มันลอง device ทีละตัวจนพบ ก็ปรากฏว่า พอสั่ง start daemon ใหม่ มันไปใช้อุปกรณ์ hw:1 ของ ALSA เรียบร้อย สามารถสร้าง /dev/ttySL0 ได้แล้ว และโทรออกได้ด้วย (blog นี้ก็บันทึกโดยผ่านโมเด็มนี้นี่แหละ)

สรุป: kernel 2.6.10 ต้องใช้ ALSA driver สำหรับ SmartLink modem ส่วน 2.6.11.x นั้น ยังไม่ได้ฤกษ์ทดลอง :-P

ปล. เอกสารประกอบการบรรยาย งานสัมมนาวันที่ 28 มีนา เรื่อง การพัฒนาภาษาไทยใน GNOME

22 มีนาคม 2548

IIIMF ได้ซะที

หลังจากได้ยินคำว่า IIIMF (Internet/Intranet Input Method Framework) เมื่อราวปี 44 (ไล่ๆ กับยุค IMF มั้ง ฮ่าๆ) ตอนไปเจอ Hideki Hiura ที่ญี่ปุ่น แกบอกว่า IIIMF จะมาแทน XIM ในอนาคต เนื่องจากไม่ขึ้นกับ X แต่จะ cross platform และใช้ได้กับ app ทั่วไปอย่าง emacs, java ด้วย ก็เลยบันทึกคำนี้ไว้ใน agenda ว่าต้องมาดูสักวัน

ผ่านไปหลายปี ก็ยังไม่ได้ไปจับ เคยพยายามเข้าไปคุยใน mailing list แต่มีแต่ญี่ปุ่นคุยกันเอง โพสต์ไปก็ไม่ค่อยมีปฏิกิริยาตอบสนอง ไม่เหมือนคุยกับฝรั่ง เลยพักไปซะ เอาแค่ white paper กับ check out svn มาเก็บไว้ มีหลายคนถามเข้ามาเหมือนกัน ก็ตอบเขาไปว่า "ไม่รู้" ทุกที ครั้นจะลองด้วย debian package มันก็ค้างๆ โหลด CPU เกือบ 100% จนต้อง kill ทิ้งตลอด

จนได้คุยกะน้องฝ้ายเมื่อคืน เธอกำลังแกะ IIIMF เหมือนกัน ค่อยรู้สึกสนุกหน่อย เลยจัดการ update svn แล้ว rebuild ซะ โดยโละ debian package ทิ้งไปเลย ใช้ตัวที่คอมไพล์ตรงๆ ลองไปลองมาจนสำเร็จ วู้..

รุ่นใน svn ที่ check out มา (rev 2360) มีการเปลี่ยนแปลงชื่อโปรแกรมต่างๆ เช่น

  • htt (IIIM server) เปลี่ยนเป็น iiimd
  • htt_xbe (XIM adapter) เปลี่ยนเป็น iiim-xbe

ก็ดีเหมือนกันนะ ใช้ชื่อ htt มันเป็น Sun ไปหน่อย เห็นใช้มาตั้งกะ Solaris เหอๆ

สรุปขั้นตอนที่ทำคือ:

  • แก้ /etc/iiim/iiimd.xml.conf โดย uncomment ส่วน <listen> ของ "tcp" และ "unix" เพื่อเปิดบริการ
  • เป็น root เรียก "iiimd -d" รอไว้ (-d เปิด debug mode)
  • เรียก "GTK_IM_MODULE=iiim gedit" เพื่อทดสอบ (ภายใต้ th_TH locale)
    • เปลี่ยนภาษาอังกฤษ-ไทย ด้วย ctrl-space
    • เปลี่ยนโหมด วทท ด้วย F2
  • เปิด GIMLET (GNOME Input Method Language Enabling Tool) applet ใน panel แล้วเลือกภาษาเอาได้

GEdit/GIMLET screenshot

GNOME/GTK+ สนับสนุน IIIMF เต็มที่แล้ว เลยทำอย่างนี้ได้ (ความจริง ตอนพยายามขอเพิ่ม IM Module ไทย-ลาว ใน stock GTK+ ก็โดน Owen ไล่ไปดู IIIMF แล้วเหมือนกัน) (คุ้นๆ ว่า Qt ก็เริ่มสนับสนุนตามมาแล้วเหมือนกัน ไม่แน่ใจ) แต่ถ้าเป็น X app อื่นๆ อาจต้องเรียกผ่าน iiim-xbe (IIIM X BackEnd) อันนั้นไว้ลองทีหลัง แฮะๆ

แต่ iiim-thaile มันเช็กลำดับได้อย่างเดียว แก้ไม่ได้ ..หาเวลาทำ iiim-libthai เล่นดีกั่ว โฮะๆ

ปล. รอ iiim-dance ของน้องฝ้ายด้วย :D

21 มีนาคม 2548

Another AbiWord Bug Fixed

ไม่เพียงแต่ฝันยังไม่ดับ เมื่อคืนลองถามเข้าไปอีกครั้งเรื่องการ crash/hang ใน AbiWord อันเนื่องมาจาก bug ในการ support IM ซึ่งมีปัญหากับภาษาไทย (AbiWord Bug #8064) ปรากฏว่า Tomas Frydrych ช่วย commit patch และ fix bug ให้ทันที ว้าว ขอบคุณหลายๆ ^_^

20 มีนาคม 2548

AbiWord + Pango ฝันยังไม่ดับ

ด้วยความข้องใจ เรื่อง Pango กับ AbiWord เลย ถาม เข้าไปดูอีกที เพราะเห็น Tomas Frydrych เขียน เล่า ถึงความคืบหน้าของ Pango graphics class อยู่ ได้ความ ว่า เขากำลังทำอยู่ ไม่ถึงกับฝันดับไปเสียทีเดียว เพียงแต่ต้องใช้เวลา test นานหน่อย และอาจจะไม่ได้ default มาใน AbiWord 2.4 แต่เป็น optional เฮ่อ.. โล่งอก

แต่ก็ได้ถามถึงปัญหาไปด้วย ทำให้ได้รู้ประเด็นที่ Pango ขาดไป คือเรื่อง justification ซึ่ง Owen เองเคย พูดถึง ไว้ในแผนของ Pango 1.10 (GNOME Bug #64538 มีคนส่ง patch มาแล้ว โหะๆ มีลุ้นๆ) กับอีกเรื่องคือการกิน resource เพิ่มขึ้นมโหฬาร อันนี้คงช่วยเขาทำอะไรไม่ได้ แฮะๆ

No More Google Ads, Completely

พอแล้ว กับ google ads ที่ homepage หลังจากที่ ติด ads มา 5 เดือน (ตัดออกจาก blog ไปแล้วครั้งนึง เหลือไว้แต่ที่ homepage) ได้เครดิตมาเกินค่ากำหนดขั้นต่ำที่จะจ่ายมานานแล้ว แต่ก็ยังเงียบ แหม่ เราก็สงสัยอยู่ ว่าจ่ายจริงเร้อ.. และกว่าจะได้ยอดค่าโฆษณาสูงพอ ก็ไม่ได้ช่วยค่าใช้จ่ายเท่าไรหรอก

ขอขอบคุณทุกท่านที่ได้คลิก ads ให้นะครับ

19 มีนาคม 2548

ดับฝัน AbiWord + Pango

เมื่อมกรา มี Feature List ของ AbiWord 2.4 ออกมา หนึ่งในนั้นคือ การ render text ด้วย Pango และคุณวีร์ของเราก็ได้ ถามย้ำ เรื่องการตัดบรรทัดด้วย Pango API ซึ่ง Tomas Frydrych ก็ ตอบ ยืนยันว่าจะรวม ทำให้อนาคตภาษาไทยใน AbiWord เริ่มมีความหวังรำไร

แต่หลังจากไม่ได้ตามมานาน วันนี้ได้เมลอีกฉบับ มีคน ถาม เกี่ยวกับการใช้ pango อีก กลับได้ คำตอบดับฝัน จาก Dom Lachowicz:

It is unlikely that we'll get what we want out of Pango in the short term. It's unlikely that we want to make AbiWord depend on CVS HEAD Pango.

และยังปิดท้ายว่า:

If you want AbiWord 2.4 to be released sometime in 2008, please ignore my advice. Pango's goals are and Pango's reality are two entirely different things.

ชัด เต็มสองลูกกะตาแล้วคร้าบ.. T_T

แต่ยังดีนะ ที่ Abi สนับสนุน IM ไทยแบบเต็มอัตรา

16 มีนาคม 2548

ปัญหาภาษาไทยใน GAL (i.e. Evolution) แก้แล้ว

หลังจากที่ file Ximian Bug #68617 พร้อมแพตช์ เกี่ยวกับการจัดการ IM Context ของ gal ที่ทำให้ป้อนภาษาไทยใน Evolution ไม่ได้ และมีคนบอกให้ส่ง patch เข้า mailing list (ระบบแปลกดี ไม่เหมือน GNOME project ทั่วไป) แล้วก็เฝ้ารอว่าจะมีใครมาเหลียวแล (TLE รับแพตช์ไปแล้ว) สี่เดือนผ่านไป กระทุ้งไปอีกรอบ โดยอ้างว่าผ่านการทดสอบใน local distro แล้ว เมื่อวานซืน ก็มีคน commit patch ให้ และ gal 2.4.1 ก็ได้ release ออกมาโดยแก้ปัญหาภาษาไทยเรียบร้อย โย่วๆ เสร็จไปอีกหนึ่ง bug ^_^

บันทึกเก่า ขณะ file bug

14 มีนาคม 2548

GNOME Hacker in Thailand

อ่านเว็บ GNOME เพลินๆ ไปพบ GnomeWorldWide แสดงที่อยู่ของ GNOME hacker ทั้งหลายทั่วโลก แล้วก็พบว่ามีอยู่ในประเทศไทยคนหนึ่ง ที่ประจวบคีรีขันธ์ โอ้ ใครหนอ ช่างไม่เปิดเผยตัวตน ไล่ไปไล่มา ได้ความว่า เป็น Ross Golder (blog) ที่ย้ายมาเปิดบริษัทในเมืองไทย แหม่.. นึกว่ามี hacker ไทยแฝงตัวอยู่เสียอีก แต่อยากรู้ ว่าบริษัทอะไรหนอ..

Live Journal

เล็งๆ LiveJournal ไว้นานแล้ว ว่าอยากจะลองเล่น เพราะเห็นมี เครื่องมือ เพียบพร้อม และตัวซอฟต์แวร์ทำ blog เองก็ open source แปลว่าจะสามารถศึกษาและร่วมทำฟีเจอร์ต่างๆ ที่ต้องการได้ (ซึ่งก็ไม่รู้จะได้ทำไหม)

ว่าแล้วก็เลย สมัคร ซะ คงจะเอาไว้เขียน blog ภาษาอังกฤษเป็นหลัก ไม่รู้จะไปได้สักกี่น้ำ เหอะๆ :-P

13 มีนาคม 2548

How to Join GNOME

กำลังขี้เกียจจะเก็บตก GNOME ต่อ เพราะใน Release Notes และใน Sneak Peek ของ Davyd Madeley เจ้าเก่า เขาพูดไปเยอะแล้ว ทั้งยังมี บทความ GNOME Journal ของ Sayamindu Dasgupta (เจ้าเก่าอีกเจ้า) มาอีก ก็พอดีไปเห็นข่าว A new way for you to contribute to Gnome ที่ FootNotes เห็นว่ามีผู้สนใจ GNOME มาอ่าน blog นี้อยู่บ้าง เลยเขียนบันทึกไว้ เผื่อจะได้ contributor คนไทยเพิ่มขึ้นอีก :-)

หน้า JoinGnome รวมกิจกรรมต่างๆ ไว้ครบครัน แต่เท่าที่เคยไปแจมก็มี:

  • Bugsquad สำหรับการทดสอบแพตช์ ยืนยัน bug ตรวจสอบ bug ที่ซ้ำกัน ฯลฯ หรือเรียกง่ายๆ ว่างานล้างป่าช้า เพื่อให้จำนวน bug ใน bugzilla ลดลงเหลือเท่าที่จำเป็น เป็นการแบ่งเบางานของนักพัฒนา เหมาะสำหรับ beta tester ทั้งหลาย ซึ่งตามกำหนด เขาจะประชุมทาง irc กันทุกวันพฤหัส
  • GnomeLove สำหรับนักพัฒนาหน้าใหม่ โดย bug หลาย bug ใน bugzilla ที่แก้ไขได้ไม่ยาก จะถูกเลือกไว้ให้นักพัฒนาหน้าใหม่ได้เริ่มต้นฝึกฝีมือ และมี mailing list ให้ปรึกษาขอคำแนะนำได้
  • GNOME Translation Project สำหรับนักแปล มีทั้งแปลข้อความในโปรแกรม แปลเอกสาร สำหรับภาษาไทย ก็มีเว็บ GNOME Thai Translation สำหรับประสานงานแปล GNOME และ ThaiL10N สำหรับงานแปล FOSS ทั่วไป

แต่เรื่องอื่นๆ ก็ยังมี ตามความถนัดของแต่ละคน ตามที่เขารวมไว้ในหน้า JoinGnome ความจริงแล้ว กิจกรรมข้างบน ผมก็ไม่ค่อยได้แจมบ่อยเท่าไร (อ้าว!) ส่วนมากจะตาม mailing list ของพวกนักพัฒนา แล้วก็ลุยใน bugzilla ไปเลยน่ะ แฮะๆ

12 มีนาคม 2548

เก็บตก GNOME: Panel และ Applet

เก็บตกความเปลี่ยนแปลงใน panel, applets เสียหน่อย

  • พาเนลโปร่งใส พร้อมทั้งแอพเพล็ตก็โปร่งใสตามด้วย
  • การจับ screenshot หน้าต่าง มีการเพิ่ม effect เงาได้ทันที
  • disk usage graph ใน multiload applet
  • CPUFreq applet แสดง speed ปัจจุบันของ CPU

GNOME desktop screenshot

11 มีนาคม 2548

เก็บตก GNOME: ระบบ Menu (เพิ่มเติม)

จากข้อมูลคร่าวๆ ของเมนู GNOME ใน blog ก่อน มีรายละเอียดเพิ่มเติมว่า:

  • โค้ดใน gnome-panel เป็นผู้สร้างเมนู Applications (โปรแกรม), Places (ที่หลักๆ) และ Desktop (พื้นโต๊ะ) ตามลำดับ ดังนั้น โครงสร้างเมนูนี้จึงเรียกได้ว่า hard-coded ใน panel เลย
  • พื้นที่ส่วนเมนูโปรแกรมใน Applications (โปรแกรม) นั้น อาศัย spec ในไฟล์ของเมนูของ fd.o ที่ $XDG_CONFIG_DIRS/menus/applications.menu (เช่น $XDG_CONFIG_DIRS = /etc/xdg ในระบบทั่วไป)
  • พื้นที่ของเมนู Places (ที่หลักๆ) นั้น สร้างโดยโค้ดของโปรแกรมทั้งหมด
  • ในเมนู Desktop (พื้นโต๊ะ) นั้น จะไปอ่าน $XDG_CONFIG_DIRS/menus/settings.menu (ซึ่งจะ include preferences.menu อีกที) เพื่อเป็น spec สำหรับสร้างเมนูย่อย Settings (ดูแลระบบ) และ Preferences (ปรับแต่งพื้นโต๊ะ)
  • รายละเอียดของเมนูย่อยต่างๆ ที่อ้างใน *.menu นั้น จะบรรยายด้วยไฟล์ *.directory ใน $XDG_DATA_DIRS/desktop-directories/ (เช่น $XDG_DATA_DIRS = /usr/share ในระบบทั่วไป)
  • รายละเอียดของโปรแกรมต่างๆ ในเมนู บรรยายด้วยไฟล์ *.desktop ใน $XDG_DATA_DIRS/applications/

พอละ เขียนแค่นี้ก่อน พอดีมีธุระด่วน :P

เก็บตก GNOME: ระบบ Menu

การเปลี่ยนแปลงหนึ่งที่เห็นได้ชัดของ GNOME 2.10 คือระบบเมนู ที่เปลี่ยนมาใช้มาตรฐาน menu-spec ของ freedesktop.org จากเดิมที่ใช้ applications:/// vfolder ผ่าน gnome-vfs เพื่อให้โปรแกรมต่างๆ สามารถเพิ่มรายการเมนูได้อย่างสะดวก โดยไม่ต้องคำนึงว่าจะเป็น GNOME หรือ KDE

แต่ระบบใหม่ ก็มีหลักการไม่ต่างจากระบบเดิมเท่าไร คือ app มีหน้าที่เตรียมไฟล์ .desktop (ตาม spec desktop entries ของ fd.o) ซึ่งบรรยายตัวเองว่าอยู่ใน category ใดบ้าง จากนั้น ระบบเมนูของเดสก์ท็อป (GNOME/KDE) จะเป็นผู้กำหนดเอง ว่าเมนูย่อยแต่ละเมนู จะลิสต์ catetory อะไรบ้าง เพียงแต่ว่า fd.o มีการกำหนด DTD ของไฟล์ที่บรรยายเมนูอย่างชัดเจนขึ้น และมีการลงทะเบียน category ต่างๆ ไว้เรียบร้อย เพื่อให้ app ต่างๆ เป็นอิสระจากระบบเดสก์ท็อปที่ใช้อย่างแท้จริง

และ GNOME ก็ไม่ได้เปลี่ยนด้วยการแก้ไข applications:/// vfolder เพราะ vfolder เดิมก็มีกลไกของตัวเองที่ทับซ้อนกับ menu-spec ของ fd.o อยู่ จึง implement ใหม่หมดด้วยแพกเกจใหม่ gnome-menus เลย และจากการติดตาม mailing list ก็มีแนวโน้มที่ GNOME จะใช้ vfolder ลดลงเรื่อยๆ หลังจากที่มีคน implement vfolder หลากหลายมากมาย จนแทบจะ overload หน้าที่ของ vfolder ไปแล้ว (เช่น themus, smb, burn-cd, ppp) จึงเริ่มมีการปรามๆ กันทุกครั้งที่มีผู้เสนอ vfolder ใหม่ๆ

ตาม menu-spec ของ fd.o นั้น ผู้ใช้สามารถแก้ไขเมนูเองได้ โดยการกำหนดไฟล์เมนูเอง แต่ GNOME 2.10 ยังไม่ได้ implement GUI สำหรับการแก้ไขเมนู (แทนที่การแก้ไข applications:/// vfolder ผ่าน nautilus) แต่ก็ได้รับการบรรจุใน roadmap ของ GNOME 2.12 แล้ว

10 มีนาคม 2548

พรรคมหาโจร?

ตอนเลือกตั้ง ดูด candidate เด่นๆ ในพื้นที่ต่างๆ มาเข้าพรรค ชูจุดยืนเป็นพรรคทางเลือกแบบยุทธศาสตร์ คานอำนาจพรรคใหญ่ พอเลือกเสร็จ ส.ส. ของพรรควิ่งซบนายกฯ ออกเสียงสนับสนุนฝ่ายรัฐบาลอย่างโจ่งแจ้ง ไม่เหลือร่องรอยของการคานอำนาจตามที่ประกาศไว้ตอนหาเสียง น่าจะมี อย. ตรวจสอบการโอ้อวดสรรพคุณในฉลากมั่งเนาะ :P

ในอีกแง่หนึ่ง นี่เป็นการย้ำว่า การเมืองท้องถิ่นกับระดับประเทศ ยังเป็นคนละเรื่องกันอยู่ สอง ส.ส. นั้น ได้รับเลือกเพราะเป็นคนที่ท้องถิ่นไว้ใจ ไม่เกี่ยวกับนโยบายพรรค ท้องถิ่นเขาจำเป็นต้องเลือกคนมากกว่าเลือกพรรค การย้ายพรรคของผู้สมัครตอนเลือกตั้ง (หรือแม้แต่การ "เสียบ" หรือ "ยุบรวม" ของบางพรรค) ในบางกรณีก็ทำให้ท้องถิ่นได้ประโยชน์ คือพยายามให้ตัวแทนท้องถิ่นได้อยู่ฝ่ายรัฐบาลจะดีที่สุด การพัฒนาท้องถิ่นจะได้ราบรื่น (แต่คนใต้อาจจะคิดอีกแบบ)

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

08 มีนาคม 2548

Dark Age of Free Software?

วันนี้ไปดู เว็บ GNOME และ Planet GNOME เจอการประท้วงมติของ EC เกี่ยวกับสิทธิบัตรซอฟต์แวร์ (อีกครั้ง) เหมือนกับว่า มีการพลิกมติอีกครั้งโดยคณะผู้บริหาร เมื่อวานนี้ โดยขัดกับเสียงส่วนใหญ่ของประเทศสมาชิก EC เอง มันเรื่องอะไรกันเนี่ย

ZDNet เขียนประชด ว่าดูเหมือนบิลล์ เกตส์ จะได้มากกว่า ตำแหน่งอัศวิน (ท่ามกลาง เสียงคัดค้าน จาก UKUUG (UK Unix User Group)) กลับบ้าน

ไกลปืนเที่ยงอย่างเมืองไทย คงได้แต่นั่งดูแล้วลุ้นอย่าให้กฎหมายสิทธิบัตรซอฟต์แวร์ผ่าน อย่าว่าแต่คิดเพื่อการเคลื่อนไหวของ FOSS เลย แม้แต่ proprietary software ของประเทศกำลังพัฒนาทั้งหลายก็คงตายไม่ได้เกิดเหมือนกัน :P

07 มีนาคม 2548

GNOME 2.10 Release Notes

GNOME 2.10 จะเป็นรุ่นแรกที่มีการแปล release notes และ press release เป็นหลายภาษา ภาษาไทยเรายังไม่อยู่ในรายชื่อ supported languages 33 ภาษา (partially ก็ยังไม่อยู่ เพราะเราแปลยังไม่ถึง 50%) ก็ยังไม่เจียม อาจหาญแปล release notes ไปแล้ว (ใน CVS) แต่ยังทำ screenshot (mirror) ไม่ครบ โดย shot ที่ยังขาด ได้แก่:

  • modem applet ปัญหาคือเรียกไม่ขึ้น คาดว่าผมคงทำอะไรพลาดไประหว่างคอมไพล์
  • GnomeMeeting ตัวนี้ไม่เคย build ไม่เคยใช้เลย เลยไม่รู้จะ dump ยังไง อีกทั้งยังไม่มีการแปลด้วย คิดว่าใช้ shot ของฝรั่งก็คงไม่ต่างกัน ติดก็แต่ว่า หน้าของคนที่อยู่ในภาพ ถ้าเป็นคนไทยแทนฝรั่งได้ก็จะดีไม่น้อย :-)
  • evolution mail, evolution weather คล้ายๆ กัน คือไม่เคยใช้, build ไม่ผ่าน และยังไม่แปลไทย คิดว่าใช้ของฝรั่งไปเลยคงได้

พูดถึงระบบการแปล release notes นี่ work มากๆ เลย ใช้ xml2po ในแพกเกจ gnome-doc-utils ที่ใช้ช่วยในการแปล desktop file ตามปกติ มาดึงข้อความออกจากไฟล์ XML เป็น PO เพื่อแปลตามปกติ ก่อนจะใช้คำสั่งชุดเดิม merge คำแปลออกมาเป็น XML ฉบับแปล ซึ่งข้อดีที่เห็นๆ คือ ทุกครั้งที่ต้นฉบับมีการเปลี่ยนแปลง ข้อความที่เปลี่ยนก็จะมาปรากฏเป็นข้อความ fuzzy ใน PO ช่วยให้ผู้แปลเห็นได้ง่าย และปรับปรุงคำแปลตามได้สะดวก

ถ้าเอามาใช้กับเว็บที่มีคำแปลหลายภาษาก็เวิร์กเลย เพราะ XML ที่ใช้เป็น DocBook format ที่สามารถแปลงเป็น HTML หรือรูปแบบอื่นๆ อย่าง TeX, RTF, PDF ฯลฯ ได้ ตามสไตล์ของ XML ดังตัวอย่าง ฉบับแปลไทย

ส่วน press release นั้น ยังไม่ได้แปล แฮะๆ

Updated: 2005-03-07, 15.37: หลังจากไล่ Makefile สักพัก ก็พบวิธี generate HTML โดย apply db2html.xsl ที่เขาให้มาด้วย ด้วยคำสั่ง xsltproc จนได้ฉบับแปลไทยบนเว็บ

01 มีนาคม 2548

โค้ดที่ "เสียดาย"

เคยมีสิ่งที่ "เสียดาย" กันไหม? ผมเอง ถ้าไม่นับซอร์สโค้ดโครงงานสมัยเรียน ที่เขียนแบบไร้ดีไซน์แล้ว ก็มีซอร์สโค้ดที่รู้สึก "เสียดาย" อยู่อย่างน้อยสามชุด

ชุดแรก เป็นโปรแกรมแรกที่เขียนตอนเริ่มทำงาน หลังจากหัดเขียน C++ จากการตะลุยอ่าน "The C++ Programming Language" First Edition ของ Stroustrup แล้วก็หัดเขียนโปรแกรมบนวินโดวส์ 3.1 ด้วย OWL ของ Borland มาแล้ว ก็มาร่วมทีมเขียนโปรแกรมคล้ายๆ Print Shop ที่สมัยโน้นใช้พิมพ์โปสเตอร์ การ์ดอวยพร ฯลฯ ผสมกับความสามารถเพิ่ม/แก้ไข graphics object ต่างๆ โดย scale, rotate, shear ได้ ตอนนั้นก็ทำให้สนุกสนานกับ CG มากๆ ทำอัลกอริทึมครบหมด ทั้งวงรีเอียง, บิตแมพเอียง, hit test ของ object ชนิดต่างๆ แต่ปรากฏว่าโครงการถูกยกเลิกเสียก่อนที่จะได้ integrate กัน โค้ดที่เขียน เลยไม่ได้ใช้ และก็ทิ้งไว้ที่บริษัท

ชุดที่สอง อยู่บริษัทเดียวกัน แต่ย้ายโครงการมาเขียนเวิร์ด ซึ่งความจริงโครงการเริ่มไปเยอะแล้ว ส่วนแกนเสร็จไปพอประมาณ ผมเข้าไปช่วยเขียนต่อเติม และทำ UI เพิ่มเติมให้เป็นรูปเป็นร่าง โค้ดนี้จะว่าสนุกก็สนุก จะว่าน่าเบื่อก็น่าเบื่อ สนุกตรงที่เป็นโปรแกรมขนาดใหญ่โปรแกรมแรก และการออกแบบโครงสร้างดี ทำให้ได้พัฒนาความรู้เรื่อง OOP แต่ที่ว่าน่าเบื่อ คือเพื่อนร่วมงานมาๆ หายๆ จะ merge โค้ดทีก็ต้องนั่งรอเงกอยู่ที่ออฟฟิศ จนสุดท้าย หลังจากมีเวลาอ่านและคิดฟุ้งซ่านเรื่องกฎหมายลิขสิทธิ์กับซอฟต์แวร์ เลยตัดสินใจว่า ไม่อยากเขียนโปรแกรมโดยฝากลิขสิทธิ์ไว้กับบริษัทเอกชนแบบนี้อีกแล้ว ประกอบกับแผนกพัฒนาซอฟต์แวร์ของบริษัทก็กำลังจะยุบแหล่มิยุบแหล่ เลยลาออกมา โดยที่ไม่ได้เอาโค้ดอะไรติดมือมาเลย ทราบมาว่าหลังจากผมออก โครงการก็ยังดำเนินต่อไปช่วงหนึ่ง แต่ก็ต้องยุบในที่สุด เพราะหมดทุนทำต่อ

ชุดที่สาม เป็นโค้ดที่เขียนขึ้นระหว่างทำงานเนคเทค ซึ่งเป็นหน่วยงานภาครัฐที่สมัครเข้าไปด้วยความคิดว่า น่าจะมีโอกาสทำงานที่เป็นประโยชน์ต่อสาธารณะได้มาก ก็มีโค้ดหลายชิ้นที่ได้ทำ แต่ชิ้นที่นับเนื่องว่ารู้สึก "เสียดาย" ก็คือระบบเครือข่ายพจนานุกรม คือเป็นโครงการที่มองเอาไว้ว่า จะทำเป็นแกนสำหรับงานวิจัยระยะยาว โดยทำโครงการวิจัยย่อยๆ เพื่อมาพอกใส่แกนกลางนี้ ซึ่งก็มีการแตกเป็นงานย่อยออกมาพอสมควร เช่น อัลกอริทึมการเรียงลำดับคำไทย (ซึ่งพัฒนาต่อมาจนได้ th_TH locale ใน glibc), การอิมพลีเมนต์ double-array trie แบบเต็มๆ ตาม paper ของ Aoe, การแก้คำผิดด้วย trie และซาวน์เด็กซ์, การทำ framework สำหรับ client-server, การจัดการข้อมูล XML ฯลฯ ในโค้ดนี้ ใช้ design pattern ไปหลาย pattern อยู่ เขียนเอกสารก็ใช้ DocBook ประกอบกับ UML diagram ด้วย dia และก็ได้ให้บริการเว็บ Lexitron อยู่ช่วงหนึ่ง ก่อนที่ทีมงานใหม่จะเข้ามารับช่วงต่อ เห็นแว่วๆ ว่าเขาเขียนใหม่หมดแล้ว :P

ทั้งหมดนี้ ล้วนแต่เขียนด้วยความทุ่มเท แต่ก็ถูกปล่อยผ่านไปโดยไม่ได้ใช้ประโยชน์เท่าไร ส่วนที่ยังคงใช้ประโยชน์มาจนปัจจุบัน ก็เป็นส่วนที่เผยแพร่แบบ FOSS (Free/Open Source Software) คือ th_TH locale เท่านั้นเอง อ้อ.. มี midatrie หลุดมาอีกตัว

หลังจากรำลึกความหลังแล้ว ก็ทำให้รักแนวคิด FOSS ขึ้นเป็นกอง ไม่มีเธอ ฉันคงไร้ความหมาย..

hacker emblem