Theppitak's blog

My personal blog.

16 กันยายน 2562

Thanks

ขอขอบคุณ ท่านที่ได้ สนับสนุน งานพัฒนาซอฟต์แวร์เสรีของผมในช่วงที่ผ่านมาครับ

นับจาก ครั้งที่แล้ว ขอขอบคุณผู้สนับสนุนงานของผมดังนี้:

  • เดือนกุมภาพันธ์ 2562
    • คุณวิทยา ไตรสารวัฒนะ
  • เดือนสิงหาคม 2562
    • ผู้ไม่ประสงค์จะออกนาม 1 ท่าน

ขอให้ทั้งสองท่านประสบความสำเร็จในหน้าที่การงาน สุขภาพแข็งแรงครับ

ปีนี้อาจเป็นปีที่งานพัฒนาซอฟต์แวร์ของผมขาดช่วงไปบ้าง เนื่องจากรับงานสอนพิเศษนักเรียนอยู่ช่วงหนึ่ง แต่ก็พอสรุปงานตั้งแต่ต้นปีได้ดังนี้:

  • งานแปล
    • ระดมแปล Xfce เพื่อเตรียมพร้อมสำหรับ Xfce 4.14 ซึ่งก็ได้ออกรุ่นไปแล้วเมื่อ 12 สิงหาคมที่ผ่านมา
  • Fonts-Arundina (ยังไม่ release):
    • ตรวจสอบปัญหา build reproducibility ต่อ สุดท้ายพบว่าเป็นปัญหาของ FontForge ใน Debian ที่ยังอัปเดตไม่ครบสำหรับฟอนต์ PostScript จึงคอมเมนต์ไปใน Debian #774274 เพื่อขออัปเดต
    • ทยอยปรับ quadratic spline ในเลเยอร์ Quad ต่อ (ยังไม่เสร็จ งานนี้เป็นงานมาราธอน)
  • งานต้นน้ำ:
    • release gtk-im-libthai 0.2.2 เพื่อปล่อยสิ่งที่ค้างอยู่ใน repository ถึงเกือบ 8 ปี โดยสิ่งเปลี่ยนแปลงหลัก ๆ คือการกำจัดการใช้ GTK+ API ที่ deprecated
  • Debian packaging:
    • ย้ายไป debhelper level 12 พร้อมกับใช้ debhelper-compat dependency แทน debian/compat และแก้ปัญหาที่เกิดกับ dh_missing ใน level 12 นี้
    • ปรับโครงสร้าง Git repository ตาม DEP-14 ครบทุกแพกเกจในความดูแล (แต่ยังรออัปโหลดอยู่ 2 แพกเกจ)
    • ปรับแพกเกจที่สร้าง udeb โดยให้ dh_makeshlibs สแกนหา udeb โอยอัตโนมัติแทนการใช้ option --add-udeb สำหรับ debhelper รุ่น 12.3 ขึ้นไป
    • ตรวจสอบและตัดสิ่งที่เก่าเกินไปจนไม่จำเป็นสำหรับ Bullseye แล้ว
    • อัปเดตทั่วไป
  • Debian อื่น ๆ:
    • file Debian #934804 สำหรับ bsdmainutils เพื่อขอปรับข้อมูลวันหยุดของไทยเพิ่มเติมในคำสั่ง calendar อันเนื่องมาจากพระราชพิธีบรมราชาภิเษก
  • OpenStreetMap
    • ปรับข้อมูลแผนที่ในตัวเมืองขอนแก่น
    • เป็นวิทยากรฝึกอบรมการสร้างแผนที่ OSM ที่ Thailand ICT Camp 2019 (ชะอำ) ร่วมกับคุณ Mishari Muqbil
    • เริ่มทดลองเก็บข้อมูล Mapillary ในตัวเมืองขอนแก่นตามคำแนะนำของคุณ Mishari
    • ปรับข้อมูลแผนที่รายทางที่ชะอำ และแผนที่อุทยานสิ่งแวดล้อมนานาชาติสิรินธร
    • ปรับข้อมูลแผนที่บริเวณ ต.นาจอมเทียน อ.สัตหีบ จ.ชลบุรี
    • เริ่มทำแผนที่จุดรับขยะอันตรายในเขตเทศบาลนครขอนแก่น

ป้ายกำกับ: , , , ,

05 พฤษภาคม 2557

Thanks

ขอขอบคุณย้อนหลัง สำหรับผู้สนับสนุนงานพัฒนาซอฟต์แวร์เสรีของผมในช่วงเดือนกุมภาพันธ์-เมษายนที่ผ่านมา คือ:

ผมอาจจะสวัสดีปีใหม่ไทยช้าไปนิด ก็ขอให้ทุกท่านที่เอ่ยมาจงร่มเย็นเป็นสุขทุกท่านครับ

หากท่านอ่าน blog ขอบคุณของผมมาหลายครั้งแล้ว และสงสัยว่าจะสนับสนุนงานพัฒนาของผมได้อย่างไร ก็เชิญได้ที่หน้า การสนับสนุนงานพัฒนา ครับ

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

อย่างไรก็ดี งานบางงานที่ไม่ได้เขียนเป็น blog ต่างหากเนื่องจากเป็นงานรูทีนอยู่แล้ว หรือเป็นงานยิบย่อย ก็ขอเล่าเพิ่มเติมจากที่ blog ไปแล้วบ้าง เช่น:

  • งานแปล Xfce ได้แปลขึ้นไปจนถึง 86% แล้ว ก่อนที่จะเกิดการจัดโครงสร้างใหม่ใน Transifex ทำให้สถิติเริ่มเพี้ยน โดยในหน้า dashboard (ภายใต้โครงสร้างใหม่ ปรากฏว่าต้องเป็นสมาชิก transifex จึงจะดูได้) รายงานอัตราการแปลของภาษาไทยที่ 69.3% แต่จำนวนข้อความที่ยังไม่แปลเหลือเพียง 1,571 ข้อความ ซึ่งน้อยกว่าภาษาฟินแลนด์ที่อัตราการแปลสูงกว่าภาษาไทย คืออยู่ที่ 70.4% แต่เหลือข้อความที่ยังไม่แปลถึง 3,653 ข้อความ จึงทำให้เกิดความสับสนในค่าสถิติที่รายงาน
  • เสนอแพตช์ใน Xfce #10311 ที่ได้รายงานไว้เมื่อปีกลาย เกี่ยวกับการบอกเวลาเป็นคำพูดโดยประมาณ โดยขอปรับปรุงให้แปลเวลาเป็นไทยได้ถูกต้องยิ่งขึ้น เช่น ทำให้รายงานเวลาแบบนี้ได้ในพาเนล:
    Thai fuzzy clock
  • ปรับคำแปล dpkg และ apt สำหรับ Debian (มีผลใน dpkg 1.17.7 และ apt 1.0.2 ตามลำดับ)
  • ปรับคำแปล ISO 3166-2 ในแพกเกจ iso-codes เล็กน้อย หลังจากได้แปลชื่อเมืองใน Orage ของ Xfce (มีผลใน iso-codes 3.53) พร้อมกันนี้ก็ได้ปรับคำแปลใน libgweather locations ของ GNOME ไปพร้อมกันด้วย

แผนงานต่อไป เรื่องหลักก็จะเป็นการผลักดันฟอนต์สารบรรณเข้า Debian ตามแผนที่วางไว้ครับ

ป้ายกำกับ: , , ,

11 กุมภาพันธ์ 2557

Thanks, and the November-January Diary

เร่งงานตามสัญญาโครงการอยู่หลายเดือน ไม่ได้เขียน blog จึงขอขอบคุณย้อนหลัง สำหรับผู้สนับสนุนงานพัฒนาของผมในเดือนพฤศจิกายน 2556 ถึงเดือนมกราคม 2557ที่ผ่านมาดังนี้ครับ:

ขออวยพรปีใหม่สากลและตรุษจีนย้อนหลังแด่ผู้สนับสนุนทุกท่าน ขอให้เจริญอายุ วรรณะ สุขะ พละ พร้อมทั้งมั่งมีศรีสุขครับ และที่สำคัญคือ 願源碼與你同在。[หงวงหง่วงแบ้อื่อลื่อตั่งต๋อ] May the Source be with you!

สามเดือนที่ผ่านมา นอกจากงานโครงการอักษรอีสานที่เป็นงานหลักแล้ว ก็มีงานพัฒนาอื่น ๆ เช่น

  • swath 0.5.2
    • แก้ปัญหา infinite loop ใน LaTeX filter ซึ่ง นิวตรอน รายงานมาทาง G+ (เป็น private share) พร้อมแพตช์แก้
    • แก้ปัญหาอักขระหายใน token ยาว ๆ ใน HTML filter ซึ่งคุณ Nicolas Brouard จากโครงการ ดีโมพีเดีย ได้พบขณะใช้ swath ช่วยเตรียมเอกสารฉบับพิมพ์ จากการใช้ base-64 encode รูปภาพในแท็ก <img src="data:image/png;base64,...> ซึ่งทำให้ token ยาวพอจะทำให้พบบั๊กได้ ถือเป็น use case ที่น่าสนใจมาก และทำให้รู้ว่ายังมีผู้ใช้ที่ใช้ HTML filter อยู่ ไม่ใช่แค่ LaTeX
    บั๊กทั้งสองนี้ เกิดจากความพยายามในการป้องกัน buffer overflow ใน swath 0.5.1 แต่แก้ไม่สมบูรณ์ (รุ่นก่อนหน้านั้นจะ segfault ในบั๊กหลังเลยทีเดียว ซึ่งเป็นช่องทางของ buffer overflow exploit ได้)
  • libdatrie 0.2.8
    • แก้ warning ใน test suite
    • แก้ปัญหาที่พบในการใช้ datrie เก็บคีย์ที่เป็นข้อมูล binary ซึ่งจะใช้ alphabet เต็มช่วงตั้งแต่ 1 ถึง 255 ทำให้พบปัญหาคีย์ซ้ำสำหรับอักขระ 255 อันเนื่องมาจากค่าสิ้นสุดการวนลูปที่ไม่ถูกต้อง รายงานโดยคุณ Naoki Youshinaga
    • แก้ให้ trie ล้มเหลวเมื่อเดินด้วยอักขระนอกช่วง alphabet แทนที่จะยอมให้อักขระดังกล่าวเดินได้ด้วยค่า 255 แล้วทำให้เกิดคีย์ปลอม ๆ ขึ้น แนะนำโดยคุณ Naoki Youshinaga เช่นกัน
    • เพิ่มเติมรายละเอียดในเอกสารประกอบ ตามที่ทักท้วงโดยคุณ Naoki Youshinaga
  • ปรับแพกเกจใน Debian โดยการเปลี่ยนแปลงที่น่าสนใจคือ
    • libdatrie-dev และ libthai-dev รองรับ multi-arch แล้ว หลังจากที่รองรับแค่ตัว lib package มาก่อนหน้านี้ ขณะนี้ dpkg รองรับการใช้แฟ้มร่วมกันระหว่างหลายแพกเกจแล้ว ทำให้สามารถใช้ header file ร่วมกันระหว่าง architecture ที่ต่างกันได้
    • รัน test suite ในการ build ทั้งใน libdatrie และ libthai ซึ่งทำให้พบ warning เพิ่มเติมใน libthai และแก้ที่ต้นน้ำแล้ว
  • ร่วมแปล VLC หลังจากพบคำสะกดผิดใน UI ก็ได้แปลเพิ่มเติมด้วยพอสมควร โดยเฉพาะชื่อภาษาต่าง ๆ ทำให้ได้ไปสอบทานกับคำแปล ISO 639 และ ISO 639-3 ในแพกเกจ iso-codes ควบคู่กันไปด้วย (ออกมาในรุ่น 3.50)
  • ตรวจทาน คำแปล GNOME ตามที่มีผู้ส่งคำแปลเข้ามา
  • งานแปล Xfce ขณะนี้แปลได้ 70% แล้ว

ป้ายกำกับ: , , , , , , ,

24 พฤศจิกายน 2556

My GNOME Escape

หนึ่งปีเต็มที่ผมได้เปลี่ยนมาใช้ Xfce เต็มตัว (บันทึกการทดลองใช้ E17, LXDE และ Xfce ก่อนจะตกลงปลงใจที่ Xfce) รู้สึกว่าได้เดสก์ท็อปที่ลงตัว ไม่พยายามวิ่งตามแพลตฟอร์มอื่นมากเกินไป ไม่ว่าจะวินโดวส์หรือแมคหรือแอนดรอยด์ ขณะเดียวกันก็ไม่ได้อนุรักษ์นิยมกับยูนิกซ์จ๋าจนดูตกยุค เรื่อง usability ถือว่าสอบผ่าน ความยืดหยุ่นในการปรับแต่งก็มีเหนือ GNOME โปรแกรมต่าง ๆ ที่จำเป็นก็มีให้เกือบครบ บางตัวที่ไม่มี (เช่น PDF viewer) ผมก็ยืมใช้จาก GNOME ไปพลางก่อน แต่ก็ทยอยถอดถอนตัวที่ไม่จำเป็นออกไปเรื่อย ๆ และคงรุ่น GNOME app ส่วนใหญ่ไว้ที่ 3.4

สาเหตุที่ยังคงรุ่น GNOME app ไว้ที่ 3.4 ก็เพราะการอัปเกรดเกินรุ่นนี้จะทำให้เกิดความเปลี่ยนแปลงของระบบอย่างใหญ่หลวง เช่น GDM 3.8 จะลากเอา systemd มาลง (ผ่านทาง gnome-settings-daemon) ซึ่ง systemd นี้ จะเป็นดีมอนสำหรับบูตระบบซึ่งจะมาแทนที่ sysvinit ที่ Debian ใช้อยู่ และ เป็นที่ถกเถียงกันอยู่ ในหมู่นักพัฒนาแพลตฟอร์มยูนิกซ์อื่น ๆ ที่ไม่ใช่ลินุกซ์ (เช่น OpenBSD, FreeBSD, Solaris) เพราะเป็นระบบบูตที่จำเพาะเจาะจงกับลินุกซ์เท่านั้น และยังมีข้อสังเกตว่ามัน ออกแบบขัดกับปรัชญาของยูนิกซ์อย่างแรง

ไม่ใช่แต่เท่านั้น GDM 3.8 ยังใช้ GNOME Shell ทำงานเป็นหน้าล็อกอินอีกด้วย คุณอาจจะคิดว่าผมใช้ความรังเกียจ GNOME Shell มาตัดสิน แต่ถ้าคุณมองความเหมาะสมในทางเทคนิคแล้ว จะเห็นว่ามีอะไรมากกว่านั้น ในเมื่อ GDM ต้องใช้ GNOME Shell และ GNOME Shell ก็ต้องใช้แทบทุกสิ่งทุกอย่างของ GNOME เพราะ GNOME Shell เองก็ออกแบบมาให้รวมทุกสิ่งทุกอย่างของ GNOME เข้ามาในตัว ไม่ว่าจะเป็นการจัดการพลังงาน การใช้พาเนล การจัดการเครือข่าย ไปจนถึง instant messenger และ video call! (ในฐานะนักแปล ผมติดตามเรื่องนี้ได้ไม่ยากครับ ทุกครั้งที่เห็นการย้ายข้อความจากแพกเกจอื่นเข้า GNOME Shell ผมปาดเหงื่อตลอด) ซึ่งก็หมายความว่า คุณไม่สามารถติดตั้ง GDM เพียงลำพังในฐานะ display manager ของระบบเพื่อใช้ล็อกอินเข้าเดสก์ท็อปอื่น (เช่น KDE, Xfce, LXDE, E17, WindowMaker ฯลฯ) โดยไม่แถมพ่วง GNOME เกือบทั้งตัวมาด้วยได้! แล้วนิยามของ display manager คืออะไรกันแน่?

ผมผิดหวังกับ GNOME อีกครั้งที่ออกแบบ GDM ให้ไปรุกล้ำนอกวาระการเข้าระบบ เพียงเพื่อจะเพิ่มประสิทธิภาพของ GNOME โดยไม่แยแสเดสก์ท็อปอื่น ถัดจาก systemd ที่ไปรุกล้ำระบบยูนิกซ์อื่นมาแล้ว พฤติกรรมแบบนี้ ผมว่าผมเคยเห็นมาก่อนนะครับ กับระบบปฏิบัติการบางยี่ห้อ...

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

สำหรับ display manager โชคดีที่โลกนี้มีตัวอื่นให้เลือก เช่น lightdm (ผมใช้ GTK+ Greeter) และ SLiM

แล้ว blog หน้า ผมจะมาเขียนถึงการใช้งาน Xfce ในฐานะ GNOME refugee ต่อไปครับ

ป้ายกำกับ: , ,

08 พฤศจิกายน 2556

Thanks, and the September-October Diary

ขอขอบคุณผู้สนับสนุนงานพัฒนาของผมในเดือนกันยายน-ตุลาคมที่ผ่านมาดังนี้ครับ:

เป็นอีกครั้งหนึ่งที่ต้องเขียน blog แบบรวบสองเดือน เนื่องจากภารกิจต่าง ๆ ค่อนข้างเร่งรัด จนอยากใช้เวลาสะสางงานให้เต็มที่มากกว่า

งานในช่วงสองเดือนที่ผ่านมา แบ่งเป็นหมวด ๆ ดังนี้ครับ:

โครงการอักษรอีสาน

งานพัฒนาที่ LTN และ Debian

เป็นการปล่อยสิ่งที่พัฒนาสะสมมาตั้งแต่ระลอกที่แล้วเมื่อต้นปี โดยทยอยตรวจสอบความเรียบร้อยและออกรุ่นซอฟต์แวร์ต่าง ๆ ดังนี้:

  • libdatrie 0.2.7
    • แก้ไขประเด็นเรื่อง portability เกี่ยวกับ void pointer arithmatics ซึ่งจะมีปัญหากับคอมไพเลอร์ที่ไม่ใช่ GCC โดยได้รับรายงานจากคุณ Mikhail Korobov ว่าคุณ Gabi Daver ได้พบปัญหานี้ขณะคอมไพล์ด้วย Visual C++ พร้อมแพตช์แก้
    • ระหว่างแก้ ได้ทดลองคอมไพล์ด้วยตัวเลือก -Wall ทำให้เจอ warning เพิ่มเติม และแก้ไขจนหมด
    • เขียน test case เพื่อให้สามารถตรวจสอบความถูกต้องเวลาแก้โค้ดได้ในอนาคต ที่ผ่านมาจะทดสอบผ่าน libthai เป็นหลัก แต่เขียน test case เป็นเรื่องเป็นราวน่าจะสะดวกกว่า ซึ่งในระหว่างที่เขียน test case ก็ทำให้ได้อ่านเอกสารประกอบและแก้ไขที่ผิด พร้อมกับได้เพิ่ม API เพื่อความสะดวกในการใช้งานด้วย
    • ปรับ Doxyfile ที่ใช้สร้างเอกสาร เพื่อตัดสิ่งที่เลิกใช้แล้วใน doxygen 1.8.4
    • ออก libdatrie 0.2.7.1 ตามมา หลังจากพบว่าลืมปรับค่า library version เพื่อให้ SONAME สะท้อนการเพิ่ม API ที่เกิดขึ้น
    • อัปโหลด 0.2.7.1-1 เข้า Debian sid
  • thaixfonts 1.2.6
    • มีการปรับระบบ build ตาม autoconf รุ่นใหม่ และเปลี่ยนมาใช้ XZ tarball แทน GZ tarball ซึ่งเป็นสิ่งที่ทำไว้นานแล้ว ก็ออกรุ่นมาเพื่อปรับตามซอฟต์แวร์อื่นเท่านั้น ส่วนตัวเนื้อหาฟอนต์ไม่มีการเปลี่ยนแปลงอะไร
    • อัปโหลด 1:1.2.6-1 เข้า Debian sid
  • LibThai 0.1.20
    • ปรับข้อมูลพจนานุกรมตัดคำตามที่พบกรณีต่าง ๆ ในช่วงที่ผ่านมา [เกร็ด: รุ่นนี้รู้จักอำเภอขนอมที่ไม่ใช่ ขน-อม แล้ว ;-)]
    • แก้ compiler warning ที่พบใน test case ต่าง ๆ
    • อัปโหลด 0.1.20-1 เข้า Debian sid
  • TeX hyphenation patterns
    • sync ข้อมูลพจนานุกรมตัดคำจาก libthai เข้าไปที่ ThaiLaTeX SVN พร้อมกับปรับแก้ hyphenation patterns ตามข้อมูลใหม่
    • แจ้งไปที่โครงการ tex-hyphen ว่าขอปรับข้อมูล hyphenation patterns ภาษาไทย พร้อมกับรายงานปัญหาของสคริปต์บางตัวที่ใช้สร้างข้อมูลอัตโนมัติ คุณ Mojca Miklavec ก็ได้ช่วยแก้สคริปต์ให้ (rev 652, 653) และรับแพตช์ปรับข้อมูลภาษาไทยไปรวมให้ (rev 654)
    • สอบถามและขอ import source ของ hyphenation patterns ภาษาไทยเข้าใน tex-hyphen โดยตรง เพื่อที่ต่อไปจะได้ไปทำงานที่นั่นแทนที่จะต้องผ่าน ThaiLaTeX แบบนี้ ทั้งนี้เพื่อให้เป็นไปตามแผน ที่เคยคุยกันไว้ จนกระทั่งได้ import source ใน rev 655
    • ไม่มีการอัปโหลดอะไรใน Debian แค่รอ Debian อัปเดตแพกเกจ texlive-base เท่านั้น
    • request ขอลบ thailatex ออกจาก Debian unstable เพื่อไม่ให้มีซอร์สตกค้างอยู่ (ลบแล้ว)
  • swath 0.5.1
    • แก้รหัสตัดคำของ Lambda จาก U+200C (ZWNJ) เป็น U+200B (ZWSP) ...ว่าแต่มีใครใช้ฟีเจอร์นี้ไหมเนี่ย?
    • sync ข้อมูลพจนานุกรมตัดคำจาก ThaiLaTeX/hyph-utf8 (ซึ่ง sync มาจาก LibThai อีกที) เพื่อให้ตัวตัดคำ LaTeX ทำงานสอดคล้องกับ hyphenation patterns
    • ก่อนออกก็ปรับซอร์สโค้ดของ swath เพื่อให้แต่ละรุ่นมีการปรับปรุงด้านความปลอดภัยไปทีละน้อย โดยในรุ่นนี้ได้ป้องกัน buffer overflow ใน file filter ต่าง ๆ (ยังมีให้แก้อีกเยอะในรุ่นถัด ๆ ไป :-P )
    • อัปโหลด 0.5.1-1 เข้า Debian sid
  • IBus-LibThai 0.1.2
    • แก้ปัญหาการกด shortcut (เช่น Ctrl-C) ใน IBus 1.5 อันเนื่องมาจากการเชื่อมรวมกับ XKB ของ IBus รุ่นนี้ ทำให้ผังแป้นพิมพ์ที่ระบุใน metadata ของ IBus-LibThai ว่าเป็น th ทำให้กด Ctrl-C ได้เป็น Ctrl-แ เสมอ แก้ไขโดยปรับผังแป้นพิมพ์เป็น us เท่านั้น
    • อย่างไรก็ดี การแก้ปัญหาในรายการที่แล้วทำให้เกิดปัญหาใหม่ คือทำให้กด accelerator ใน GUI ที่แปลเป็นไทย (เช่น Alt-ฟ เพื่อเรียกเมนู แฟ้ม) ไม่ได้ วิธีแก้ที่เหมาะสมจึงควรให้ IBus-LibThai พยายามแปลง key event ที่มีการกดปุ่มประกอบให้เป็นภาษาไทย แต่ปรากฏว่าไม่สามารถส่ง event ที่แปลงแล้วกลับไปหา event queue ได้ เนื่องจากฟังก์ชัน ibus_engine_forward_key_event() ไม่ทำงานอย่างที่คาด งมอยู่นานก็ไม่สามารถแก้ได้ เวลามีจำกัดจึงใช้วิธีกำหนดผังแป้นพิมพ์เป็น us,th เพื่อให้ GTK+ กับ XKB ไปคุยกันเอง ซึ่งก็ได้ผล แต่ปัญหาคือ มันจะแปลงอักขระตามผังเกษมณีเท่านั้น ใครใช้ผังปัตตะโชติใน IBus-LibThai ก็จะงง ไว้หาวิธีแก้ต่อไปในรุ่นหน้า
    • เพิ่มการรองรับการป้อนเลขไทยด้วยแป้นตัวเลข โดยอาศัยการกด CapsLock ล็อคไว้ หรือใช้การยกแคร่ระดับ 3 (Alt ขวา) อนึ่ง ตามที่เคยได้ ออกแบบไว้ เมื่อสองปีก่อนนั้น จะใช้ ScrollLock ไม่ใช่ CapsLock เนื่องจาก CapsLock จะไปเพิ่มขั้นตอนขณะสลับภาษาไปเป็นภาษาอังกฤษที่จะต้องปลด CapsLock อีกขั้นหนึ่งด้วย แต่ในครั้งนี้ได้ตัดสินใจเปลี่ยนเป็น CapsLock ด้วยเหตุผลสองประการ ประการแรกคือการตรวจสอบสถานะของ ScrollLock ด้วย API ของ IBus เป็นไปได้ยาก เพราะไม่มีการเตรียมการรองรับไว้ ประการที่สองคือในแป้นพิมพ์ย่อส่วน เช่นแป้นพิมพ์โน้ตบุ๊ก หลายรุ่นได้ตัดปุ่ม ScrollLock ออกไปแล้ว ตามที่ วิกิพีเดียว่าไว้ (โน้ตบุ๊กผมก็ไม่มี)
    • อัปโหลด 0.1.2-1 เข้า Debian sid

งานแปล

  • ตรวจทาน คำแปล GNOME ตามที่มีผู้ส่งคำแปลเข้ามา โดยที่ผมไม่ได้แอคทีฟตามแปลเองอีกต่อไปแล้ว
  • แปล Xfce เป็นไทย เพิ่มเติม โดยล่าสุด ได้แปล core package ต่าง ๆ ครบแล้ว พร้อมกับปรับคำแปลทั้งหมดจาก master กลับไปที่ branch xfce-4.10 ด้วย และแปลปลั๊กอินที่ผมใช้อีกนิดหน่อยเพิ่มเติม ทำให้ขณะนี้อัตราการแปลของภาษาไทยอยู่ที่ 54% แล้ว

blog นี้ก็เลยยาวหน่อย ขอขอบคุณทุกท่านที่ติดตามครับ

ป้ายกำกับ: , , , , , , , , , ,

31 สิงหาคม 2556

Thanks, and the July-August Diary

ผู้หย่อนสตางค์ลงหมวกเพื่อสนับสนุนงานพัฒนาของผมในเดือนกรฎาคม-สิงหาคมที่ผ่านมา คือ อ.พฤษภ์ บุญมา และคุณวิทยา ไตรสารวัฒนะ โดยทั้งสองท่านได้หย่อนสตางค์ทั้งสองเดือน ขอขอบคุณอีกครั้งครับ May the Source be with you!

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

  • ปรับวิธีการเพื่อแก้ขัดสำหรับการรองรับอักษรไทน้อยในระหว่างที่ยังไม่กำหนดมาตรฐาน โดยจากการทดลองเมื่อเดือน มิ.ย. พบว่า วิธีวิรามยังต้องการการรองรับในเบราว์เซอร์เพิ่มเติม แต่ในช่วงของการบันทึกการปริวรรตเพื่อสำรวจข้อมูลในช่วงนี้ จำเป็นต้องทำให้มันทำงานได้ไปก่อน จึงปรับมาใช้การกำหนดรหัสอักขระแบบ pre-composed ไปก่อน กล่าวคือ
    • สระออย แทนด้วย U+0EBE
    • บ เฟื้อง แทนด้วย U+0EE0
    • ม เฟื้อง แทนด้วย U+0EE1
    • ล เฟื้องข้าง แทนด้วย U+0EE2
    • ส เฟื้อง แทนด้วย U+0EE3
    • พ เฟื้อง แทนด้วย U+0EE4
    • ธ เฟื้อง แทนด้วย U+0EE5
    • ด เฟื้อง แทนด้วย U+0EE6
    • ตัวควบ ขฺน แทนด้วย U+0EF0
    • ตัวควบ ขฺม แทนด้วย U+0EF1
    • ตัวควบ คฺน แทนด้วย U+0EF2
    • ตัวควบ คฺม แทนด้วย U+0EF3
    • ตัวควบ ถฺน แทนด้วย U+0EF4
    • ตัวควบ ถฺล แทนด้วย U+0EF5
    • ตัวควบ สฺน แทนด้วย U+0EF6
    • ตัวควบ สฺม แทนด้วย U+0EF7
    ทั้งนี้ ได้ทดลองใช้กับการปริวรรตใบลานเรื่อง พญาคันคาก และ ฮีตคองคะลำ เป็นตัวอย่าง โดยได้ปรับโครงสร้างของ ระบบป้อนข้อความล้านช้าง เพื่อเพิ่ม engine สำหรับอักษรไทน้อย เพื่ออำนวยความสะดวกในการเตรียมข้อมูลด้วย
  • เซ็นสัญญากับเนคเทคเพื่อเป็นที่ปรึกษาโครงการร่างมาตรฐานภาษาไทย โดยมีเรื่องอักษรอีสานอยู่ในวาระด้วย
  • เริ่มโครงการ แปล Xfce ให้เป็นภาษาไทย โดยในขณะนี้ ผมเริ่มแปลไปได้สองตัว คือ Xfce4-panel และ Xfwm4 ด้วยสิทธิ์ของ translator ธรรมดา ยังไม่ใช่ moderator โดยหวังว่าจะเรียนรู้ระบบและค่อยขยับเป็น reviewer หรือ coordinator ในที่สุด ระบบแปลของ Xfce ใช้ Transifex ซึ่งหลักการคล้าย rosetta บน launchpad ของ Ubuntu ระบบนี้จำเป็นอย่างยิ่งที่จะต้องมี reviewer ที่แอคทีฟ เพื่อควบคุมคุณภาพและความสม่ำเสมอของคำแปลให้ไปในทางเดียวกันแบบ GNOME ปัจจุบันผมจึงยังไม่ประสานงานกับนักแปลอื่นจนกว่าจะมีสิทธิ์ทำอะไรได้มากกว่านี้
  • ตรวจทานคำแปล GNOME ตามที่มีผู้ส่งคำแปลเข้ามา สำหรับ GNOME นี้ ผมเลิกแอคทีฟไปแล้ว หลังจากเปลี่ยนมาใช้ Xfce แทน แต่ผมจะยังแปลเฉพาะในส่วนที่เป็นประโยชน์ต่อ Xfce (เช่น GLib, GTK+, Evince, Zenity) เท่านั้น ส่วนอื่น ๆ นั้น หากมีผู้ส่งคำแปลเข้ามา ผมก็ยังยินดีตรวจทานและ commit ให้ครับ เพียงแต่ผมจะไม่ไปไล่แปลเองอย่างเคยเท่านั้น

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

ป้ายกำกับ: , , , ,

28 พฤศจิกายน 2555

My Alternative Desktops (3) - Xfce

จาก E17 และ LXDE ก็ถึงคราวของ Xfce ละ

Xfce 4 วางตัวไว้เป็น desktop environment ที่ใช้ GTK+ เป็นหลัก จึงเป็นทางเลือกที่ใกล้เคียงกับ GNOME แต่เบากว่า ผมเองเคยใช้แบบโฉบ ๆ เมื่อหลายปีก่อน แล้วก็กลับไปใช้ GNOME เหมือนเดิมเพราะยังมีพันธกิจกับ GNOME อยู่

หน้าจอที่ปรับแต่งจนสามารถใช้สองจอแล้ว เป็นแบบนี้:

Xfce dual monitor screenshot

ซึ่งผ่านการปรับแต่งดังนี้

สองจอ

Xfce ก็เหมือนกับ LXDE ตรงที่เครื่องมือตั้งค่าจอภาพ คือ xfce4-display-settings ตั้งได้แค่การเปิด/ปิดจอภาพ ความละเอียด ความถี่การรีเฟรช และบวกการหมุนจอและกลับซ้ายเป็นขวาได้ด้วย แต่ไม่สามารถตั้งค่าการต่อชนพื้นที่จอได้

Xfce4 Display Settings

ก็ต้องกลับไปพึ่ง ARandR เหมือนคราว LXDE (อ่านวิธีการได้จาก ตอนที่แล้ว) เพียงแต่สถานการณ์หลังจากนั้นของ Xfce ดีกว่า LXDE มาก เพราะ Xfce รองรับการใช้สองจอเป็นอย่างดี ตัวพาเนลวางพาดลงในจอเดียวอย่างรู้งาน แถมสามารถตั้งพื้นหลังแยกต่างกันสองจอได้อีกต่างหาก

Xfce4 Background Settings

เรียกได้ว่า กลไกภายในรองรับการใช้สองจอเต็มที่แล้ว ยังขาดก็แต่การตั้งค่าจอภาพในเครื่องมือตั้งค่า!

สำหรับ Xfce ไม่จำเป็นต้องตั้งปุ่มลัดสำหรับสลับการใช้จอเดียว/สองจอ สามารถบังคับใช้สองจอได้เลย ถ้าถอดจอนอกออก มันจะปรับ layout เป็นจอเดียวโดยอัตโนมัติ และเมื่อต่อจอนอกเข้ามาใหม่ มันก็จะปรับเป็นสองจอโดยอัตโนมัติเช่นกัน ดังนั้น สคริปต์ที่ต้องใช้จากคราวที่แล้วจึงมีเพียง dual.sh เท่านั้น

เนื่องจากอาจมีการกำหนดอย่างอื่นอีกในอนาคตนอกเหนือจากเรื่องจอภาพ ผมจึงไม่เรียก dual.sh ตรง ๆ แต่จะเรียกผ่านสคริปต์ ~/bin/xfce-init ที่เขียนขึ้นเองแทน:

$ cat > ~/bin/xfce-init <<EOF
#!/bin/sh

$HOME/.screenlayout/dual.sh
EOF
$ chmod +x ~/bin/xfce-init

จากนั้น ก็ไปกำหนดให้วาระของ Xfce เรียกสคริปต์นี้ในตอนเริ่มด้วย โดยใช้เมนู Settings > Session and Startup > Application Autostart

Xfce Session Startup

เกจ์วัดต่าง ๆ

Xfce ปกตินั้น ไม่มีเครื่องมือแสดงสถานะเครื่องอะไรมากนัก แต่มีปลั๊กอินเพิ่มเติมจาก Xfce Goodies ที่สามารถติดตั้งเพิ่มเติมได้ มีแพกเกจใน Debian ด้วย โดยถ้าติดตั้ง xfce4-goodies ก็จะได้ปลั๊กอินทั้งหมด แต่ผมเลือกติดตั้งเฉพาะที่ใช้ คือ:

  • xfce4-cpugraph-plugin (แสดงโหลดของซีพียูคอร์ต่าง ๆ พร้อมกราฟ)
  • xfce4-netload-plugin (แสดงขีดปริมาณข้อมูลเครือข่ายขาเข้า-ออก)
  • xfce4-places-plugin (เมนูไดเรกทอรีต่าง ๆ สำหรับสั่งเปิดด้วย file manager หรือเทอร์มินัลก็ได้)
  • xfce4-sensors-plugin (แสดงขีดอุณหภูมิต่างของซีพียู ฮาร์ดดิสก์)
  • xfce4-systemload-plugin (แสดงขีดการใช้ทรัพยากรต่าง ๆ ของระบบ)
  • xfce4-weather-plugin (แสดงรายงานอากาศ)

อื่น ๆ

  • ธีมของวิดเจ็ต (Settings > Appearance > Style หรือ xfce4-appearance-settings)
  • ธีมของหน้าต่าง (Settings > Window Manager หรือ xfwm4-settings) พร้อมกับตั้งให้ snap หน้าต่างกับขอบหน้าต่างอื่นด้วย (Advanced > Windows snapping > Snap windows to other windows)
  • ภาพพื้นหลัง (Settings > Desktop > Style หรือ xfdesktop-settings)
  • ปุ่มลัดสำหรับเรียกโปรแกรม (Settings > Keyboard > Application Shortcuts หรือ xfce4-keyboard-settings)
  • Xfce สามารถเปิดใช้ compositing ได้ถ้าต้องการ (Settings > Window Manager Tweaks หรือ xfwm4-tweaks-settings ที่แท็บ Compositor) แต่ตอนนี้ยังก่อน

ปัญหา Slow key

ผมใช้ Xfce อยู่หลายวัน ก็รู้สึกสบายดี เป็นธรรมชาติ มีเฟอร์นิเจอร์ที่ต้องการครบครัน แต่มีเรื่องกวนใจอยู่เรื่องหนึ่ง คือถ้าผมกดปุ่ม Shift ค้างเกิน 10 วินาที เช่น อาจเป็นตอนเลือกด้วยเมาส์ด้วยการกด Shift ประกอบ ปรากฏว่าจะมี notification ว่า Slow key is enabled ซึ่งเป็นการเปิดฟังก์ชันสิ่งอำนวยความสะดวก (accessibility) ป้องกันการรัวปุ่มสำหรับคนที่นิ้วมีปัญหายกขึ้นเร็วไม่ได้ แต่ละปุ่มต้องกดค้างประมาณ 1 วินาทีถึงจะได้ตัวอักษร ซึ่งทำให้ผมแทบพิมพ์อะไรไม่ได้เลย ต้องไปคอยสั่งปิดที่ Settings > Accessibility ด้วยการสั่งเปิดครั้งหนึ่ง แล้วสั่งปิดอีกครั้ง (เพราะค่าตั้งตรงนั้นก็ไม่ได้เปิดอยู่)

จาก Debian #657969 ทำให้ได้รู้ว่าเป็นปัญหาเฉพาะกับผู้ที่เข้าระบบผ่าน GDM เท่านั้น โดย GDM จะเปิดฟังก์ชัน AccessX ไว้ ทำให้มีการตรวจสอบพฤติกรรมแป้นพิมพ์เพื่อเปิดใช้สิ่งอำนวยความสะดวก และความเห็นหนึ่งใน RedHat #816764 ได้บอกว่าได้ติดต่อนักพัฒนาต้นน้ำแล้ว ซึ่งต้นน้ำได้แก้ปัญหานี้ทันทีใน git และผู้ดูแลแพกเกจ Xfce ใน Debian กำลังปรึกษา release team ว่าสามารถแก้ปัญหานี้ใน Wheezy ที่กำลัง freeze อยู่ได้หรือไม่ แต่ในระหว่างนี้ ผู้ใช้สามารถแก้ขัดได้โดยใช้คำสั่ง xkbset -a

$ sudo apt-get install xkbset
$ xkbset q | grep Accessibility
Accessibility Features (AccessX) = On
$ xkbset -a
$ xkbset q | grep Accessibility
Accessibility Features (AccessX) = Off

ก็จัดการเพิ่มคำสั่งลงใน ~/bin/xfce-init ของผมเสีย:

$ vi ~/bin/xfce-init
#!/bin/sh

$HOME/.screenlayout/dual.sh
xkbset -a

ปัญหาก็หายเป็นปลิดทิ้ง

ประเมินผล

  • เรื่องการใช้สองจอ Xfce ทำได้ดี ยกเว้นการตั้งค่าที่ยังต้องใช้ ARandR ช่วย แต่หลังจากนั้นก็ไหลลื่นตลอด ในแง่นี้ถือว่า Xfce ทำได้ดีกว่า LXDE แต่ก็ยังด้อยกว่า E17
  • การแสดงสถานะการทำงานของเครื่อง Xfce มีให้ครบตามความต้องการ
  • นาฬิกาและปฏิทิน พาเนลของ Xfce ปกติมีแต่นาฬิกา ไม่มีปฏิทิน ต้องเรียก Orage ขึ้นมาต่างหาก ซึ่งจะได้ปฏิทินที่เชื่อมรวมกับ evolution-data-server เกินความต้องการไปหน่อย แต่ก็ถือว่ามีให้ใช้
  • flash drive เสียบแล้วเมานท์ได้ ไม่มีปัญหา
  • suspend เครื่องได้ ล็อคหน้าจอได้
  • workspace จัดเรียง 2x2 ได้ เปลี่ยน workspace ด้วยแป้นพิมพ์ได้รอบทิศเหมือน GNOME 2
  • การใช้งานโดยรวม ให้ความรู้สึกเหมือน GNOME ที่คุ้นเคย ทำงานได้ไหลลื่นไม่มีสะดุด

เมื่อเทียบกันระหว่าง E17, LXDE และ Xfce แล้ว ผมชอบ Xfce ที่สุด แม้การเซ็ตจอจะขลุกขลักกว่า E17 แต่หลังจากนั้นมันอัตโนมัติหมด ถือว่ายอมรับได้ ฟีเจอร์ต่าง ๆ ก็มีครบตามที่ต้องการใช้ และยังมีความคาบเกี่ยวกับ GNOME อยู่มาก ทำให้ยังเชื่อมโยงกับงานเดิมที่ทำกับ GNOME ได้อยู่

ส่วนอีกสองตัวนั้น ผมชอบ E17 ในแง่ความเนี้ยบของกราฟิกส์ และความสมบูรณ์ของการพัฒนา ติดแต่ว่ามอดูลที่ให้มีน้อยไปหน่อย (มี third party อยู่บ้าง แต่ยังไม่มีเป็นแพกเกจใน Debian) มีปัญหาการ suspend เครื่อง และการใช้ toolkit ที่แตกต่างจาก GNOME ก็ทำให้เชื่อมโยงกับงานเก่าได้ลำบาก

ส่วน LXDE นั้น ผมชอบในความเบา ความเร็ว และการใช้ฟีเจอร์ร่วมกับ GNOME บางส่วน แต่ติดที่ความขาดแคลนต่าง ๆ โดยเฉพาะการรองรับสองจอที่ยังขาด

ตอนนี้ ผมก็เลยยึด Xfce เป็นที่พักพิงมาระยะหนึ่งแล้ว app บางตัวที่เคยเลือกใช้เพราะมัน เชื่อมรวมกับ GNOME ได้ดี จนพอมาใช้ Xfce แล้วกลายเป็น ดีเกินไป โดยมีอะไรประหลาดโผล่มาเยอะ ก็เปลี่ยนไปใช้ตัวอื่น เช่น เปลี่ยนจาก empathy กลับมาหา pidgin เพื่อหลบจากไดอะล็อกทั้งหลายของ gnome-keyring ส่วน app อื่น ๆ ก็คงจะพิจารณาเป็นกรณีไป

อ้อ! กลับมาที่การเปรียบเทียบการใช้หน่วยความจำเสียหน่อย.. ระบบที่ปรับแต่งแล้วของผมใช้หน่วยความจำดังนี้ (วัดด้วยการรีบูต เปิดเทอร์มินัล 1 หน้าต่าง และเรียก gnome-system-monitor ขึ้นมาอ่านหน่วยความจำเหมือนกันทุกตัว เพื่อให้โหลดที่เพิ่มจากระบบเปล่า ๆ มีพอ ๆ กัน):

E17 193 MB
LXDE 203 MB
Xfce 252 MB
GNOME Fallback 456 MB
GNOME Shell 544 MB

ที่ E17 กลายเป็นแชมป์แทนนั้น เกิดจากการ unload มอดูลที่ผมไม่ได้ใช้ เช่น Gadget (desklet)

Update: Xfce ที่ผมทดสอบ เป็นรุ่น 4.8 ยังไม่สามารถเซ็ตสองจอผ่านเครื่องมือของ Xfce เองได้ แต่ไปเห็นข่าวว่า Xfce 4.12 สามารถเซ็ตได้แล้ว ก็คงรอรุ่นใหม่ครับ

ป้ายกำกับ: ,

hacker emblem