Quantcast
Channel: Theppitak's blog
Viewing all 83 articles
Browse latest View live

Thanks

$
0
0

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

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

และอีกเรื่องสำหรับเดือนนี้ หลังจากที่ Debian Wheezy ออกก็คงเริ่มทยอยย้ายแพกเกจภาษาไทยจาก Debian experimental เข้า Sid/Jessie ต่อไป แล้วก็จะได้เริ่มงานพัฒนารอบใหม่ของระบบภาษาไทยด้วย โดยมี TODO list รออยู่แล้วเป็นหางว่าว..


Future of ThaiLaTeX

$
0
0

ช่วงที่ผ่านมามีความเคลื่อนไหวเกิดขึ้นอย่างมากกับโครงการ ThaiLaTeXว่ากันตามลำดับดังนี้:

feature ต่าง ๆ

  • แก้บั๊กการใช้เลขไทยในจดหมาย
  • จำกัดขอบเขตของ emergencystretchไม่ให้ไปรบกวนภาษาอื่น
  • ตัดการรองรับ emacs หลังจากที่ได้ อภิปรายในลิสต์เนื่องจากโค้ดล้าสมัยมาก และไม่มีใครสามารถดูแลปรับปรุงให้ทันสมัยได้ โดยความสะดวกเล็ก ๆ น้อย ๆ ที่ได้ ก็ไม่น่าจะตรงตามความต้องการของผู้ใช้ LaTeX บน emacs โดยทั่วไปมากนัก
  • เพิ่ม option thaiindentfirstเพื่อบังคับให้ร่นย่อหน้าแรกของ section เสมอ โดยเป็นฝีมือของ อ.พฤษภ์ขอขอบคุณมา ณ ที่นี้

แต่ปรากฏว่ามีความเปลี่ยนแปลงที่ใหญ่กว่านั้นเกิดขึ้น ซึ่งจะส่งผลต่ออนาคตของโครงการ ThaiLaTeX กล่าวคือ:

  • hyphenation pattern ได้เข้ารวมในโครงการ hyph-utf8แล้ว โดยคุณ Mojca Miklavec จากโครงการดังกล่าวได้พบข่าวประกาศของ thailatexจึงได้ติดต่อมาที่ผมว่าสามารถนำไปรวมเข้าใน hyph-utf8ได้ ซึ่งจะทำให้ hypenation มีผลกับภาษาไทยมาตั้งแต่ต้นน้ำของ TeX Liveเลย โดยไม่ต้องลง thailatexเพิ่ม ซึ่งหลังจากคุยกันพักหนึ่งก็ได้ รวมเข้าไปเรียบร้อย
  • โครงการ babelได้กลับมามีชีวิตอีกครั้ง หลังจากที่ร้างไปนาน โดยได้ผู้ดูแลคนใหม่คือ Javier Bezos ซึ่งเขาได้แยกส่วนแกนกลางกับส่วนข้อกำหนดของภาษาต่าง ๆ ออกจากกัน ทำให้สามารถเพิ่มภาษาใหม่ ๆ เข้าไปได้อย่างอิสระ ซึ่งหมายความว่า เราสามารถอัปโหลดแพกเกจที่มีไฟล์ที่จำเป็นสำหรับภาษาไทยใน babel เข้า CTAN ได้อย่างอิสระแล้วในตอนนี้

นับตั้งแต่เริ่มโครงการมา ThaiLaTeX ได้ผ่านการเปลี่ยนโครงสร้างครั้งสำคัญมาครั้งหนึ่งในรุ่น 0.4.6โดยได้ แยกฟอนต์ออกจาก ThaiLaTeX (ตาม แผนงาน) ทำให้ ThaiLaTeX เหลือเพียงข้อกำหนด babel และการรองรับ emacs เท่านั้น

การเปลี่ยนแปลงครั้งสำคัญต่อมา ก็คือรุ่น 0.5.0โดยมีการเพิ่ม hyphenation patterns (แนวคิด, การดำเนินการ, การเก็บรายละเอียด) เพื่อช่วยลดปัญหาขอบขวาคอลัมน์หยัก อันเนื่องมาจากการขาดแคลนจุดตัดบรรทัดในภาษาไทย

ต่อมา ปรากฏว่า hyphenation ที่เพิ่มเข้ามาหลังสุด ก็ได้เข้ารวมที่ต้นน้ำอย่างรวดเร็ว การรองรับ emacs ก็ถูกตัดออกแล้ว ทำให้ ThaiLaTeX เหลือเพียง babel definition เพียงอย่างเดียวเท่านั้น

ในเมื่อประตูเปิดแล้วสำหรับการส่ง babel definition เข้าต้นน้ำ ก็เท่ากับว่า ThaiLaTeX ไม่จำเป็นต้องมีอยู่อีกแล้ว! ThaiLaTeX must die! และเมื่อตายเรียบร้อย ผู้ใช้ LaTeX ก็ไม่จำเป็นต้องติดตั้งอะไรเพิ่มเพื่อจะใช้ภาษาไทยอีกต่อไปแล้ว ไม่ว่าจะใช้ OS ไหน!

แต่ช้าก่อน ไม่ใช่ว่า ThaiLaTeX จะตายอย่างสมบูรณ์ เรื่องของเรื่องก็คือ babel definition ของภาษาไทยนั้น เราจะเป็นผู้ดูแลโดยอิสระ ซึ่งก็หมายความว่า เรายังต้องแก้ไข ออกรุ่น อัปโหลดเข้าที่ต้นน้ำเองอยู่ การสลายร่างของ ThaiLaTeX จึงเป็นเพียงการเกิดใหม่ในชื่อ babel-thaiเท่านั้น แม้ในแง่ของผู้ใช้จะไม่จำเป็นต้องรู้จัก ThaiLaTeX อีกต่อไป แต่สำหรับผู้พัฒนา ก็ยังคงพัฒนาต่อไป ซึ่งรวมถึงการดูแล hyphenation patterns ที่ hyph-utf8ด้วย

งานของผมที่จะหายไป ก็คือการดูแล debian package ของ ThaiLaTeX (เหลือแต่งานที่ต้นน้ำแทน) งานของผู้ใช้ที่จะหายไป ก็คือการพยายามติดตั้ง ThaiLaTeX เพื่อใช้ภาษาไทยครับ

ทั้งหมดนี้กำลังอยู่ระหว่างดำเนินงาน ถ้ามีความคืบหน้าจะรายงานอีกทีครับ

อ้อ.. แต่ยังเหลืออีกชิ้นหนึ่งที่ยังหาที่ลงที่ต้นน้ำไม่ได้ คือ swath ครับผม อันนี้ไว้ต้องหารือกับเขาต่อไป

Thanks

$
0
0

ขอขอบคุณอ.พฤษภ์ บุญมา ที่ได้หย่อนสตางค์ลงหมวกเพื่อสนับสนุนงานพัฒนาซอฟต์แวร์เสรีของผมในเดือนพฤษภาคมที่ผ่านมาครับ ซึ่งนอกจากจะสนับสนุนเป็นตัวเงินแล้ว ก่อนหน้านี้ อ.พฤษภ์ ยังได้สมทบแพตช์สำหรับ ThaiLaTeXซึ่งขณะนี้ได้กลายร่างเป็น Babel-Thaiเรียบร้อยแล้ว ขอให้โอเพนซอร์สเมืองไทยจงเจริญครับ!

เดือนที่ผ่านมา นอกจากการประสานงานกับนักพัฒนา TeX Live เพื่อผลักดัน ThaiLaTeX เข้าสู่กระแสหลักแล้ว งานพัฒนาอื่น ๆ ก็มีเรื่องการย้ายแพกเกจใน Debian ที่ผมอัปโหลดไว้ที่ experimental ในระหว่างที่ Wheezy freeze อยู่ เข้ามาที่ unstable ซึ่งขณะนี้แพกเกจเกือบทั้งหมดก็ได้ย้ายเข้า testing ไปแล้ว และอีกงานหนึ่งคือการปรับปรุงฟอนต์ในโครงการอักษรอีสานเพื่อให้ครอบคลุมกรณีต่าง ๆ ที่ขาดตกบกพร่องอยู่ เช่น การจัดการไม้อังแล่นตามข้อกำหนดแบบไม่ใช้วิรามหรือพินทุ (รายละเอียดยังอยู่ระหว่างอภิปราย), การจัดเรียงสระใต้บรรทัดเมื่อมีตัวเฟื้อง, การใช้วรรณยุกต์, การจัดการสระอำเจ้าปัญหา (อักษรธรรมไม่ได้ encode สระอำ แต่ใช้สระอา + นิคหิต ประกอบกัน แต่ก็ไม่ได้ทำให้หมดปัญหา ตราบใดที่ยัง encode แบบ phonetic order อยู่), เริ่มเพิ่ม OpenType feature ให้อักษรไทน้อยบ้าง

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

สำหรับเดือนนี้ ผมคิดว่าจะเริ่มจากการเคลียร์งานแปล GNOMEที่มีผู้ส่งคำแปลเข้ามารอไว้นานแล้วในระหว่างที่ผมไปทำงานอื่นอยู่ จากนั้นก็อาจจะสลับไปอัปเดตชื่อเมืองต่าง ๆ ใน iso-codesและแพกเกจที่คล้ายกัน หลังจากได้ไอเดียว่าจะใช้ชื่อตามแผนที่ภูมิศาสตร์ฉบับภาษาไทย จากนั้นก็ไปที่งานอื่นตามแต่โอกาสจะอำนวยครับ

INET Bangkok 2013

$
0
0

bact'ในนามของ เครือข่ายพลเมืองเน็ตชวนผมมางาน INET Bangkok 2013 (พรุ่งนี้ต่องาน Netizen Meetupอีกงานหนึ่ง)

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

  • การเข้าถึงอินเทอร์เน็ตในชนบทผมเข้าใจผิดเรื่องตารางเวลา เลยไม่ทันครึ่งแรก (ทราบแต่ว่ามีเรื่อง mesh network ที่ ดร.อภินันท์ [เพื่อนผม] บรรยายไป ซึ่งถูกพาดพิงถึงอยู่หลายครั้งในครึ่งหลัง) ในครึ่งหลังนั้น ได้รู้ถึงความพยายามต่าง ๆ ที่จะให้อินเทอร์เน็ตเข้าถึงพื้นที่ห่างไกลให้ได้มากที่สุด ตั้งแต่:
    • การฝึกคนในชุมชนให้ใช้ประโยชน์จากอินเทอร์เน็ต ตั้งแต่เป็นช่องทางขายของ, เข้าถึงบริการภาครัฐ และเผยแพร่เอกลักษณ์ท้องถิ่น
    • มุมมองของ ISP ที่อยากให้ราคา ADSL ถูกลง, คุณภาพเครือข่ายดีขึ้นเพื่อรองรับพฤติกรรมการใช้เน็ตที่เน้นวิดีโอมากขึ้น, การเรียกร้องภาครัฐให้เปิด content มากขึ้น
    • การลากสายอินเทอร์เน็ตไปตามสถานศึกษาของ UniNet พร้อมกับช่วยโรงเรียนออกแบบระบบเพื่อรองรับการใช้งานที่เริ่มเปลี่ยนเป็น mobile มากขึ้น, การดูแลอุปกรณ์และสายสัญญาณต่าง ๆ ซึ่งจะเจอปัญหาไม่คาดคิด เช่น มดเข้าไปทำรัง กระรอกกัดสาย ฯลฯ
    • กิจกรรมส่งเสริมทีวีท้องถิ่น คอมพิวเตอร์เพื่อน้องในชนบท และการสื่อสารในพื้นที่ภัยพิบัติของมูลนิธิกระจกเงา (อย่างหลังสุด พบว่าวิทยุสื่อสารคือสิ่งที่ช่วยได้มากที่สุด ไม่ใช่อินเทอร์เน็ตหรือโทรศัพท์มือถือ)
    • การสร้าง eco-system ของ Google ตั้งแต่การเสนอช่วยเก็บ content ที่มีคุณภาพ (เช่น กระทู้พันทิป), telemedicine โดยใช้แฮงเอาท์ของ Google+ และกระทั่ง Google map, การช่วยโรงเรียนจัดการเรื่องเครือข่ายอินเทอร์เน็ต โดย Google ยึดหลักว่าไม่ทำแบบทั่วทั้งประเทศ แต่ทำแค่บางแห่งเพื่อค้นหา best practice เป็นต้นแบบให้ที่อื่นทำตาม
  • Open Dataน่าจะเป็นประเด็นที่ได้ยินมากที่สุดในงานนี้ กล่าวคือ จากแนวคิดซอฟต์แวร์โอเพนซอร์ส ได้ขยายไปถึงสาขาอื่น ๆ หนึ่งในนั้นคือ open dataโดยข้อมูลที่เปิดนั้น ไม่ใช่แค่เอาขึ้นเว็บแล้วก็จบ แต่ต้องเป็นข้อมูลที่เครื่องสามารถประมวลผลเป็นสารสนเทศที่เป็นประโยชน์ได้ด้วย ซึ่งรัฐบาลประเทศต่าง ๆ ได้ทยอยเปิดข้อมูลในลักษณะนี้ไปมากแล้ว ส่วนประเทศไทยก็กำลังจะมีข่าวดีจาก สำนักงานรัฐบาลอิเล็กทรอนิกส์ (สรอ.)ว่าอาจจะมี data.go.th เร็ว ๆ นี้ นอกจากนี้ ยังได้ฟังกรณีตัวอย่างของความเคลื่อนไหวภาคประชาชนทั้งจากไต้หวันและเชียงใหม่ด้วย

และยังมีประเด็นอีกมากมายใน closing session แต่ความรู้สึกรวม ๆ ที่เกิดขึ้นจากการฟังในงานนี้ก็คือ มันคล้ายเป็นอีกกรณีหนึ่งของประเทศไทย ถัดจากเรื่องรถไฟ, วงการซอฟต์แวร์ จนถึงวงการลินุกซ์/โอเพนซอร์ส ที่ไทยเริ่มก่อนใครในภูมิภาค แต่ก็ไปอย่างเชื่องช้า (บางเรื่องแทบหยุดนิ่ง) จนประเทศที่เริ่มทีหลังเขาแซงหน้ากันไปหมด

หรือประเทศเราจะถูกสาปให้เป็นเช่นนั้น?!

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

Thanks, and the June Diary

$
0
0

เดือนมิถุนายนที่ผ่านมา อ.พฤษภ์ บุญมา ได้หย่อนสตางค์ลงหมวกเพื่อสนับสนุนงานพัฒนาของผม ขอขอบคุณอีกครั้งครับ

สำหรับเดือนมิถุนายนที่ผ่านมา งานหลักก็ยังคงเป็นโครงการอักษรอีสานยืนพื้น โดยมีการตัดสินใจลงมือกระทำบางอย่าง คือ

  • ตั้งกลุ่มอักษรอีสานใน Facebook เพื่อเรียนเชิญอาจารย์ผู้เชี่ยวชาญอักษรอีสานมาช่วยให้ข้อแนะนำ หลังจากที่ผมได้พบผู้รู้ทาง Facebook มาหลายท่านก่อนหน้านี้
  • ตัดสินใจใช้รหัสยูนิโค้ด U+0324 COMBINING DIAERESIS BELOW แทนตัวสะกดแม่กกจุดคู่ในอักษรธรรมอีสานไปพลางก่อน โดยปรับเพิ่มทั้งในฟอนต์โคตรบูรณ์และ ระบบป้อนข้อความล้านช้างพร้อมกันนี้ก็ได้ปรับปรุงร่างข้อเสนอขอเพิ่มอักขระอักษรธรรมเพื่อให้อ้างอิงได้สะดวกในตัวเองด้วย
  • ทดลองใช้ระบบวิราม (virama) สำหรับตัวเฟื้องของอักษรไทน้อยที่ยืมมาจากอักษรธรรม โดยทดลองใช้กับการปริวรรตหนังสือใบลานเรื่อง พญาคันคากปรากฏว่า Pango/Harfbuzz มันวาดให้ใน GTK+ ขณะเตรียมข้อมูลก็จริง แต่ Firefox ไม่ยอมวาดตัวเฟื้องบนเว็บให้ คาดว่าระบบจัดแสดงข้อความของ Firefox คงมีการกลั่นกรองอักขระยูนิโค้ดเข้มงวด ทำให้ได้แนวทางว่าควรจะถอยมาใช้วิธีกำหนดอักษรเป็นตัว ๆ ตามแนวทางเดิมของอักษรไทย-ลาวไปพลางก่อน เมื่อได้ข้อกำหนดที่เป็นมาตรฐานสุดท้ายแล้วค่อยมาปรับแก้ตามมาตรฐานทีหลัง
  • ตัดลำดับ SAKOT + อ อักษรธรรมออกจากฟอนต์โคตรบูรณ์ เพราะเป็นลำดับที่ไม่ถูกต้อง แต่ผู้ใช้มักจะชอบใช้มากกว่าจะใช้สระออล่าง (U+1A6C) ที่ถูกต้อง เพื่อป้องกันการเกิดข้อมูลที่ผิดมาตรฐาน จึงตัด fallback นี้ออก
  • ปรับวิธี map ปุ่มในระบบป้อนข้อมูลล้านช้าง จากเดิมที่ map อักขระ ASCII ไปเป็นอักษรธรรม มาเป็นการ map จากตำแหน่งปุ่มโดยตรง เนื่องจากการ map จาก ASCII จะมีปัญหาเมื่อผู้ใช้พยายามสลับผังแป้นพิมพ์ด้วย XKB แทนการสลับ IBus engine โดยในผังแป้นพิมพ์ไทยจะยังมีบางปุ่มที่เป็นอักขระ ASCII อยู่ เช่น / - , . ? แต่พอผู้ใช้พยายามกดอักขระเหล่านี้ในผังแป้นพิมพ์ไทย ล้านช้างจะแปลงอักขระเหล่านี้เป็นอักษรธรรมเสีย ซึ่งไม่ใช่สิ่งที่ผู้ใช้ต้องการ
  • ปรับโค้ดใน IBus-LibThai ในทำนองเดียวกันด้วย (ผมเคย blogไปแล้ว ว่า IBus-LibThai สำหรับภาษาไทยนั้น เกิดขึ้นได้ด้วยแรงกระตุ้นจากโครงการอักษรอีสาน แม้การพัฒนาในระยะต่อมาก็ยังเป็นจริงอยู่ IBus-LibThai นั้น เข้า Debianและ Ubuntuไปแล้ว แต่ IBus-Lanxang ยังต้องรอความชัดเจนอีกสักหน่อยเกี่ยวกับตัวมาตรฐาน)

งานอื่นที่เกิดขึ้นในเดือนมิถุนายน:

  • ปรับคำแปล ISO 3166-2 ในโครงการ iso-codesโดยอ้างอิงหนังสือแผนที่ภูมิศาสตร์ ทำให้คำแปลปรับจาก (732 translated, 218 fuzzy, 3749 untranslated) ไปเป็น (1829 translated, 58 fuzzy, 2812 untranslated)
  • edit แผนที่ OSM ในกรุงเทพฯ และขอนแก่น อันเป็นควันหลงจากงาน INET Bangkok 2013และ Netizen Meetupโดยได้รับความร่วมมือจากสมาชิก KKLUGด้วย

สำหรับเดือนกรกฎาคมนี้ ก็คงจะเดินหน้าโครงการอักษรอีสานต่อไปครับ โดยจะไปเน้นที่อักษรไทน้อยมากขึ้น

Thanks, and the July-August Diary

$
0
0

ผู้หย่อนสตางค์ลงหมวกเพื่อสนับสนุนงานพัฒนาของผมในเดือนกรฎาคม-สิงหาคมที่ผ่านมา คือ อ.พฤษภ์ บุญมา และคุณวิทยา ไตรสารวัฒนะ โดยทั้งสองท่านได้หย่อนสตางค์ทั้งสองเดือน ขอขอบคุณอีกครั้งครับ 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 ตามแต่โอกาสจะอำนวย

Thanks, and the September-October Diary

$
0
0

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

เป็นอีกครั้งหนึ่งที่ต้องเขียน 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 นี้ก็เลยยาวหน่อย ขอขอบคุณทุกท่านที่ติดตามครับ

My GNOME Escape

$
0
0

หนึ่งปีเต็มที่ผมได้เปลี่ยนมาใช้ 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 ต่อไปครับ


Thanks, and the November-January Diary

$
0
0

เร่งงานตามสัญญาโครงการอยู่หลายเดือน ไม่ได้เขียน 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% แล้ว

Fonts-TLWG 0.6.0

$
0
0

ออกไปแล้วเมื่อวาน สำหรับ Fonts-TLWG 0.6.0สำหรับรุ่นนี้ การเปลี่ยนแปลงที่สำคัญที่ทำให้ถึงกับต้องเพิ่มเลขรุ่นที่เลขกลาง ก็คือการรองรับภาษาชาติพันธุ์อย่างมีการเตรียมการ

สำหรับข้อมูลเบื้องต้นเกี่ยวกับภาษาชาติพันธุ์ กรุณาอ่าน blog เก่าและ บทความของคุณอนงค์เพิ่มเติม

ที่ว่า รองรับอย่างมีการเตรียมการก็เพราะในรุ่นก่อนก็สามารถรองรับได้ในระดับหนึ่ง หลังจากที่ Pango 1.31.0 (GNOME 3.6) ขึ้นไปได้โละ engine ภาษาไทยที่ใช้ วทท. 2.0 (มอก. 1566-2541) ทิ้ง และย้ายไปใช้ HarfBuzzจัดการแทน ก็ทำให้กระบวนการวาดภาษาไทยย้ายหนีจาก วทท. 2.0 มาเป็น normalization ตามข้อกำหนดยูนิโค้ดโดยปริยาย ซึ่งข้อกำหนดนี้จะผ่อนคลายกว่า วทท. 2.0 ที่ผูกติดกับภาษาไทยเพียงภาษาเดียว เพราะยูนิโค้ดได้เตรียมการเผื่อการใช้อักษรไทยเขียนภาษาชาติพันธุ์ต่าง ๆ เอาไว้ด้วย ทำให้ฟอนต์ชุด TLWG รุ่นเก่าก็สามารถใช้เขียนภาษาชาติพันธุ์ได้ทันที แต่จะเป็นการวางอักขระซ้อนกันแบบไม่มีการจัดตำแหน่ง บางกรณีก็วางแล้วไม่ซ้อนกัน บางกรณีก็ซ้อนทับกัน แต่ในฟอนต์รุ่น 0.6.0 นี้ มีการออกแบบเพื่อรองรับกรณีต่าง ๆ ให้จัดวางอักขระได้อย่างสวยงาม

ข้อกำหนด วทท. 2.0 นั้น มีลำดับการซ้อนสระและวรรณยุกต์ตายตัวตามอักขรวิธีภาษาไทย แต่เมื่ออักษรไทยถูกใช้เขียนภาษาชาติพันธุ์ จะมีการดัดแปลงอักขระบางตัวเพิ่มเติม เช่น ใช้ไม้ไต่คู้กำกับเหนือสระบน ใช้วรรณยุกต์เหนือไม้ไต่คู้ ใช้ทัณฑฆาตหรือยามักการเป็นวรรณยุกต์เพิ่มเติม การประพินทุใต้สระ การวางสระบนเหนือสระอา หรือกระทั่งดัดแปลงไม้ตรีใช้เป็นสระพิเศษ!

Ethnic languages using Garuda font

ภาษาชาติพันธุ์ที่ใช้ในรูป (ตั้งแต่บรรทัดที่สองเป็นต้นไป ส่วนบรรทัดแรกใช้ทดสอบฟอนต์ตามข้อกำหนดยูนิโค้ดเท่านั้น) :-

  • ภาษากูย/ส่วย (สุรินทร์) [1]:
    • ปะเฺติ็ลฺ = ขันตักน้ำ
    • โฺญฺ็จฺ = หยุดกึกเพราะกลัวหรือตกใจ
  • ภาษาเขมรถิ่นไทย (สุรินทร์):
    • ปั็วฮฺ
    • ทฺ็อง
    • เปฺิ็ว
    • มูํย
  • ภาษาบรู/ข่า:
    • แต็่ง = to spread
    • เจฺํอ = already
    • เปรฺิ่ห์ = dirty
    • โจ๊่ = bunch of bamboo
    • เปฺี่ย = to mix
  • ภาษาโส้:
    • โฺทร = โส้ (ชื่อภาษา)
  • ภาษาช์อง (จันทบุรี):
    • ม็่อง
  • ภาษาญัฮกุร [อ่านว่า ญะกุ้น] (ชัยภูมิ):
    • เติ็ง
  • ภาษาละว้า:
    • อาื = chase
    • ยาึ = mine
  • ภาษามลายูปาตานี [2]:
    • จือรฺุ
    • การฺู

การใช้งานเหล่านี้ นอกจากทำให้ต้องยกเครื่องจาก วทท. 2.0 เป็นยูนิโค้ดแล้ว ยังมีผลต่อการออกแบบฟอนต์ที่ต้องรองรับกรณีพิเศษเพิ่มเติมด้วย

สำหรับฟอนต์ TrueType/OpenType สิ่งที่ทำเพิ่มก็คือ:

  • เพิ่ม glyph สำหรับอักขระยกสูงเพิ่มเติม นอกจากชุดวรรณยุกต์ปกติในฟอนต์ทั่วไปแล้ว ก็ต้องมีไม้ไต่คู้ นิคหิต และยามักการยกสูงเพิ่มด้วย โดย glyph ชุดนี้จะมีขนาดย่อส่วนลงเล็กน้อย แต่ไม่ใช่ scale down ตามปติ เพราะจะทำให้ได้เส้นที่บางลง แต่จะเป็นการวาดด้วยเส้นหนาเท่าเดิมให้ตัวเล็กลง
  • เพิ่มกฎ GSUB ในการแปลงอักขระชุดดังกล่าวให้เป็นตัวยกสูง โดยต้องครอบคลุมทุก combination ไม่ใช่แค่ที่มีในภาษาไทย
  • เพิ่ม anchor ให้กับอักขระเหนือบรรทัด ให้สามารถซ้อนกันได้ครบทุกคู่ ไม่ใช่แค่ที่มีในภาษาไทย
  • เพิ่ม anchor ชนิด BelowMark อีกชนิดหนึ่งในตาราง 'mkmk' (mark to mark) เพื่อรองรับการซ้อนสระล่างใต้พินทุ พร้อมทั้งเพิ่ม anchor ให้กับ glyph แต่ละ glyph ให้ครบ

นอกจากนี้ ยังได้ ส่งแพตช์สำหรับแก้ให้ HarfBuzz normalize อักขระใต้บรรทัดให้พินทุมาก่อนสระล่างอย่างถูกต้องด้วย ซึ่งแพตช์ยังอยู่ระหว่างอภิปราย

แต่เนื่องจากฟอนต์ชุด TLWG ยังมีการใช้งานใน LaTeX (pdfTeX engine) ด้วย ซึ่งใน LaTeX ยังคงใช้ PUA glyph แบบเก่า (ที่เรียกกันว่า ตัวหลบ) อยู่ ไม่สามารถใช้ประโยชน์จากการปรับข้อมูล OpenType ข้างต้นได้ จึงต้องปรับขยายกฎ LIGKERN ให้ครอบคลุมกรณีของภาษาชาติพันธุ์เพิ่มเติม กล่าวคือ ต้องเพิ่มกฎต่อไปนี้:

  • ใช้วรรณยุกต์ยกสูงถ้าตามหลังไม้ไต่คู้ วรรณยุกต์ หรือทัณฑฆาต (กฎ LIGKERN ใน LaTeX จะใช้วรรณยุกต์ตัวลดต่ำโดยปริยาย แล้วค่อยใช้กฎ LIGKERN ยกให้สูงขึ้น ซึ่งจะกลับกันกับฟอนต์บนเดสก์ท็อป)
  • ใช้วรรณยุกต์ยกสูงหลบซ้ายถ้าตามหลังไม้ไต่คู้ วรรณยุกต์ หรือทัณฑฆาตที่หลบซ้าย
  • ใช้สระบนที่หลบซ้ายถ้าตามหลังพินทุที่ตามหลังพยัญชนะหางยาว (ป ฝ ฟ ฬ)
  • ใช้สระอุ อู ลดต่ำเมื่อตามหลังพินทุ
  • generalize กฎอื่น ๆ ที่บังเอิญเจาะจงเฉพาะกรณีที่ปรากฏในภาษาไทยไว้ เช่น ใช้นิคหิตหลบซ้ายหลังสระอูและพินทุที่ตามหลังพยัญชนะหางยาว, ใช้สระบนหลบซ้ายถ้าตามหลังสระอุ อู ที่ตามหลังพยัญชนะหางยาว)

นั่นคือสิ่งที่ทำได้ในตอนนี้สำหรับ LaTeX ยังมีกรณีที่ขาดเหลืออยู่ซึ่งยังไม่สามารถทำได้ เนื่องจากตาราง LTH encoding เต็มแล้ว ไม่มีช่องเหลือให้เพิ่ม PUA glyph เช่น

  • ยามักการยกสูง
  • ไม้ไต่คู้ นิคหิต ยามักการ ที่ยกสูงและหลบซ้าย

ถือเป็นข้อจำกัดที่ต้องพยายามหาทางแก้ไขในรุ่นถัดไป แต่ขณะนี้ก็ถือว่าครอบคลุมกรณีในภาษาชาติพันธุ์ได้พอสมควรแล้ว (ข้อจำกัดนี้มีเฉพาะสำหรับ pdfTeX เท่านั้น ส่วนฟอนต์บนเดสก์ท็อป หรือ XeTeX รองรับครบทุกกรณี)

Ethnic languages in LaTeX

ผลพลอยได้ระหว่าง fine-tune ฟอนต์ก็คือ ได้เพิ่มฟอนต์ Umpush Light สำหรับการใช้งานใน LaTeX แล้วด้วย โดยสามารถกำหนดฟอนต์ด้วยคำสั่ง \usefontเช่น

  \usefont{LTH}{umpush}{l}{n}   % ตัวตรง
  \usefont{LTH}{umpush}{l}{it}  % ตัวเอียง

Umpush Light in LaTeX

ฟอนต์รุ่นนี้ ได้อัปโหลดเข้า Debian sid (สำหรับเดสก์ท็อป) และที่ CTAN (สำหรับ LaTeX) แล้วทันทีหลังจากออกรุ่นที่ต้นน้ำ สำหรับ LaTeX ใน Debian นั้น ต้องรอทีม TeX ของ Debian อัปเดตพร้อมกับภาษาอื่น ๆ ในแพกเกจ texlive-lang-otherต่อไป

อ้างอิง:

[1]
นเรศ นโรปกรณ์. (๒๕๓๖). อัจฉริยลักษณ์และความเป็นวิทยาศาสตร์ของลายสือไทย.พิมพ์ครั้งที่ ๑. กรุงเทพฯ : โอเดียนสโตร์. ISBN 974-276-975-3.
[2]
ราชบัณฑิตยสถาน. (๒๕๕๓). คู่มือระบบเขียนภาษามลายูปาตานีอักษรไทย ฉบับราชบัณฑิตยสถาน.พิมพ์ครั้งที่ ๑. กรุงเทพฯ : ราชบัณฑิตยสถาน. ISBN 978-616-7073-25-5.

Sarabun Plan

$
0
0

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

ความต้องการ

พูดถึง requirement เกี่ยวกับฟอนต์สารบรรณ มีเงื่อนไขสองเรื่องหลักที่ต้องพิจารณา คือ

  1. Licenseจะต้องเสรี ไม่เป็น postcardwarelicense
  2. การใช้งานกับ LaTeXซึ่งมีผู้ใช้สอบถามเข้ามาหลายครั้ง หลังจากที่หน่วยงานต่าง ๆ ถูกบังคับให้ต้องใช้ฟอนต์สารบรรณในหนังสือราชการต่างๆ ผู้ที่ใช้ LaTeX เตรียมเอกสารจึงต้องสามารถใช้ฟอนต์นี้ได้ ซึ่งแน่นอนว่าการดัดแปลงฟอนต์จำเป็นต้องผ่านเงื่อนไขความเสรีของ license มาก่อน

ทรัพยากรที่มีอยู่

ฟอนต์สารบรรณมีการออกรุ่นอย่างเป็นทางการจากต้นน้ำสองรุ่น และแตกแขนงไปอีกอย่างน้อยสองรุ่น กล่าวคือ:

  • TH Sarabun PSKซึ่งอยู่ในชุดเริ่มแรกของ ฟอนต์มาตรฐานราชการไทยที่เผยแพร่โดยกรมทรัพย์สินทางปัญญาร่วมกับ SIPA ซึ่งเป็น postcardware
  • TH Sarabun Newซึ่งปรับปรุงใหม่โดย SIPA ร่วมกับคุณศุภกิจ เฉลิมลาภ ผู้พัฒนา TH Sarabun PSK โดยออกรุ่นภายใต้สัญญาอนุญาต GPL 2 + Font Exception เผยแพร่อยู่ที่ f0nt.com
  • SP Laksamanซึ่งผมดัดแปลงจาก TH Sarabun PSK ในชุด ThaiFonts-Siampradeshภายใต้การว่าจ้างของ SIPA ผ่านบริษัทเมตามีเดีย เทคโนโลยี ซึ่งแน่นอนว่ายังใช้สัญญาอนุญาตแบบ postcardware ตาม TH Sarabun PSK การดัดแปลงที่สำคัญได้แก่การขยายขนาดตัวอักษรทั้งหมด โดยใช้อัตราส่วนที่ทำให้ตัวโรมันมีขนาดเท่า ๆ กับฟอนต์ตะวันตกที่ point size เดียวกัน และการแปลงเส้นโค้งจาก quadratic เป็น cubic พร้อมทำความสะอาดเพื่อเตรียมพร้อมสำหรับการแก้ไขดัดแปลงต่อไป
  • Sarabunภายใต้โครงการ googlefontdirectoryซึ่งได้รับอนุญาตจากเจ้าของลิขสิทธิ์ให้เผยแพร่ภายใต้สัญญาอนุญาต OFL

อย่างไรก็ดี มีอีกปัจจัยหนึ่งที่ต้องพิจารณาประกอบ คือ การอนุญาตให้ relicense ฟอนต์ชุดมาตรฐานราชการไทยซึ่งยังคงค้างอยู่ที่การรอการเผยแพร่ฟอนต์ภายใต้ license ใหม่จากต้นน้ำอย่างเป็นทางการ ซึ่งหากดำเนินการเสร็จ เราจะได้ฟอนต์ที่เสรีอย่างแท้จริงถึง 10 หรือ 13 ฟอนต์ (ขึ้นอยู่กับ 3 ฟอนต์ที่ผู้สร้างยังประกาศถือครองลิขสิทธิ์อยู่ในตัวฟอนต์ ไม่ได้ยกให้กรมทรัพย์สินทางปัญญาและ SIPA) ซึ่งเรื่องได้ค้างอยู่ตรงนี้มาเกือบ 3 ปีแล้ว

ทางเลือกที่เป็นไปได้

จากความต้องการและสิ่งที่มีอยู่ พอจะคิดทางเลือกออกมาได้ดังนี้:

  1. ใช้ SP Laksaman เป็นฐานซึ่งต้องผ่านขั้นตอนทางกฎหมายเสียก่อน พร้อม ๆ กับอีก 9 ฟอนต์ที่เหลือ ข้อดีคือฟอนต์พร้อมแก้ไขแล้ว และจะได้ฟอนต์โพสต์สคริปต์ที่ทำความสะอาดแล้วด้วย เหมาะกับการดัดแปลงใช้กับ LaTeX อย่างเต็มที่ แต่ข้อเสียคือยังขาดความชัดเจนในข้อกฎหมาย ซึ่งถ้าชัดเจนแล้วก็อาจจะได้ฟอนต์ Siampradesh ทั้ง 10 ฟอนต์มาพร้อมกันเลย
  2. ใช้ TH Sarabun New เป็นฐานไม่มีปัญหาเรื่องข้อกฎหมาย โดยอาจมีการดัดแปลงเพื่อใช้กับ LaTeX หรือมิฉะนั้นก็พยายามใช้ฟอนต์ TrueType กับ LaTeX โดยตรง ทางเลือกนี้มีข้อดีคือฟอนต์จะเหมือนกับสารบรรณที่ใช้โดยราชการไทยทุกประการ ข้อเสียคืออาจไม่คล่องตัวนักในการแก้ไขดัดแปลงเพราะผูกติดกับชื่อฟอนต์อยู่
  3. ใช้ Google Sarabun เป็นฐานไม่มีปัญหาเรื่องข้อกฎหมายเช่นกัน ข้อดีข้อเสียคล้ายกับการใช้ TH Sarabun New สิ่งที่แตกต่างอาจเป็นผู้ดูแลต้นน้ำเท่านั้น และทางเลือกนี้ดูจะมีช่องทางติดตั้งโดยตรงใน Debian อยู่แล้ว (ผ่านแพกเกจ typecacherแต่ขณะนี้ยังไม่มี Sarabun ในรายชื่อ) แต่จะขาดการรองรับการใช้งานใน LaTeX (pdfTeX) เท่านั้น
  4. ใช้ Fonts-TLWG เป็นฐานเป็นอีกทางเลือกหนึ่งที่เป็นไปได้ เนื่องจาก Fonts-TLWG จะรวบรวมฟอนต์เสรีมาปรับต่ออยู่แล้ว ทำไมจะเพิ่มฟอนต์อีกสักตัวไม่ได้? แนวทางนี้อาจหยิบฟอนต์สารบรรณหรือลักษมัณมาปรับตามมาตรฐานฟอนต์ TLWG โดยใช้ฟีเจอร์ OpenType (GPOS, GSUB) เต็มรูปแบบ ตัด hack ทิ้ง พร้อมปรับใช้กับ LaTeX (pdfTeX) ด้วยโครงสร้างที่พัฒนาใน TLWG มาอยู่แล้ว

หลังจากพิจารณาทางเลือกต่าง ๆ ทางเลือกที่เป็นอุดมคติสำหรับผมคือการพัฒนาต่อจากฟอนต์ชุด Siampradesh (ทางเลือกที่ 1) เพราะได้เตรียมการไว้พร้อมหมดแล้วทั้ง 10 ฟอนต์ แต่ความไม่ชัดเจนในข้อกฎหมายทำให้ยังไม่กล้าลงมือทำ หนังสือราชการที่เวียนเป็นการภายในของ SIPA และกรมทรัพย์สินทางปัญญาจะเพียงพอหรือไม่ที่ผมจะ relicense ฟอนต์ Siampradesh เอง? ทางเลือกที่ผู้ใช้ส่วนใหญ่อยากได้ที่สุดน่าจะเป็น 2 หรือ 3 คือผลักดันเข้าไปตรง ๆ โดยไม่ต้องไปแตะต้องอะไรมันเลย แต่การปรับใช้กับ LaTeX จะเป็นเรื่องไม่สะดวกเอามาก ๆ รวมถึงการปรับปรุงทางเทคนิคให้เข้ากับข้อกำหนดต่าง ๆ ก็ขึ้นอยู่กับผู้ดูแลต้นน้ำเป็นหลัก ซึ่งพิจารณาดูแล้ว แม้แต่ Google เองซึ่งมีผู้เชี่ยวชาญ typography มาดูแล ก็ยังไม่ได้ทำอะไรกับรายละเอียดทางเทคนิคในตัวฟอนต์เลย

ดังนั้น ทางเลือกที่ 4 (ใช้ Fonts-TLWG เป็นฐาน) จึงเป็นทางเลือกที่ผมคิดว่าดีที่สุด และเมื่อได้ลองหยั่งเสียงสมาชิก KKLUGในการประชุม โสเหล่ 57.04ที่ผ่านมา ก็ดูจะเห็นตรงกัน จึงคิดว่าจะเริ่มดำเนินการตามนี้เร็ว ๆ นี้ครับ

Thanks

$
0
0

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

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

หากท่านอ่าน 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 ตามแผนที่วางไว้ครับ

Laksaman Font

$
0
0

จาก แผนการที่วางไว้สำหรับการดัดแปลงฟอนต์สารบรรณเพื่อผลักดันเข้า Debian ว่าจะตกลงใช้ Fonts-TLWG เป็นฐาน ก็ได้ใช้เวลาว่างทำเก็บเล็กผสมน้อยวันละนิด ขณะนี้ก็เริ่มเป็นรูปเป็นร่างแล้ว

สรุปสิ่งที่ปรับจาก TH Sarabun New

  • เปลี่ยนชื่อฟอนต์เป็น Laksaman (ลักษมัณ) โดยอิงตามชื่อที่ใช้ในฟอนต์ชุด Siampradeshแต่ตัด prefix SP ออก
  • ขยายตัวอักษรเป็น 150.42% เพื่อให้ match กับฟอนต์ตะวันตก และเข้ากันกับฟอนต์อื่นในชุด Fonts-TLWG
  • แปลง spline จาก quadratic เป็น cubic พร้อมทำความสะอาด spline
  • เพิ่ม Postscript hints
  • โละ GSUB rules ที่เกี่ยวกับภาษาไทยทิ้งทั้งหมด แล้วเพิ่ม GPOS, GSUB ตามแบบของ Fonts-TLWG
  • เพิ่ม glyph บางส่วนเพื่อรองรับภาษาชาติพันธุ์
  • เพิ่มการรองรับ LaTeX (pdfTeX) โดยเพิ่มเข้าในแพกเกจ fonts-tlwg
  • เพิ่มการสังเคราะห์ฟอนต์ TH Sarabun{PSK, New} บนเดสก์ท็อปผ่าน fontconfig

หลังจากตรวจความเรียบร้อยต่าง ๆ แล้ว คงสามารถออกรุ่นใหม่ได้เร็ว ๆ นี้ครับ

LaTeX Options for fonts-tlwg

$
0
0

การเพิ่มฟอนต์ลักษมัณในแพกเกจ Fonts-TLWGพร้อมกับรองรับใน LaTeX ด้วยนั้น ทำให้เกิดคำถามกับผมว่า ในเมื่อมีฟอนต์สองค่ายมาอยู่ด้วยกัน คือ ฟอนต์แห่งชาติของเนคเทคและ ฟอนต์มาตรฐานราชการไทยจากกรมทรัพย์สินทางปัญญาร่วมกับ SIPA (เว็บต้นทางสาบสูญไปแล้วตามระเบียบของราชการไทย) ย่อมจะเกิดทางเลือกการใช้ฟอนต์ที่เด่นชัดระหว่างสองค่ายนี้ ซึ่งผู้ใช้อาจเลือกฟอนต์ได้โดยใช้คำสั่งใน preamble เช่น เมื่อต้องการใช้ฟอนต์ลักษมัณในเอกสาร:

\renewcommand{\sffamily}{laksaman}
\AtBeginDocument{\sffamily}

แต่ด้วยแนวโน้มของความต้องการที่น่าจะสูงพอ ผมจึงตัดสินใจเพิ่ม option ให้กับแพกเกจ fonts-tlwgเสียเลย โดยผู้ใช้สามารถใส่ option ขณะ \usepackageได้เลย โดยแบ่งหมวดหมู่ของ option ดังนี้:

  • การใช้ฟอนต์ sans-serif แทนค่าปกติที่เป็นฟอนต์ roman:
    • sans : ใช้ฟอนต์ sans-serif เป็นฟอนต์ปกติของเอกสาร
  • การกำหนดฟอนต์ roman, sans-serif, และ teletype ของเอกสาร:
    • rmkinnari : ให้ฟอนต์ kinnari เป็นฟอนต์ roman ปริยาย
    • rmnorasi : ให้ฟอนต์ norasi เป็นฟอนต์ roman ปริยาย
    • sfgaruda : ให้ฟอนต์ garuda เป็นฟอนต์ sans-serif ปริยาย
    • sflaksaman : ให้ฟอนต์ laksaman เป็นฟอนต์ sans-serif ปริยาย
    • sfumpush : ให้ฟอนต์ umpush เป็นฟอนต์ sans-serif ปริยาย
    • sfloma : ให้ฟอนต์ loma เป็นฟอนต์ sans-serif ปริยาย
    • sfwaree : ให้ฟอนต์ waree เป็นฟอนต์ sans-serif ปริยาย
    • ttttype : ให้ฟอนต์ ttype เป็นฟอนต์ teletype ปริยาย
    • ttttypist : ให้ฟอนต์ ttypist เป็นฟอนต์ teletype ปริยาย
    ตัวเลือกกลุ่มนี้ไม่ได้เปลี่ยนฟอนต์ปริยายของเอกสารโดยตรง แต่เปลี่ยนฟอนต์ทั้งสามตระกูลสำหรับใช้คละกันในเอกสาร
  • การกำหนดฟอนต์ปริยายของเอกสาร:
    • kinnari : ให้ฟอนต์ kinnari เป็นฟอนต์ปริยายของเอกสาร
    • garuda : ให้ฟอนต์ garuda เป็นฟอนต์ปริยายของเอกสาร
    • norasi : ให้ฟอนต์ norasi เป็นฟอนต์ปริยายของเอกสาร
    • laksaman : ให้ฟอนต์ laksaman เป็นฟอนต์ปริยายของเอกสาร
    • loma : ให้ฟอนต์ loma เป็นฟอนต์ปริยายของเอกสาร
    • purisa : ให้ฟอนต์ purisa เป็นฟอนต์ปริยายของเอกสาร
    • sawasdee : ให้ฟอนต์ sawasdee เป็นฟอนต์ปริยายของเอกสาร
    • ttype : ให้ฟอนต์ ttype เป็นฟอนต์ปริยายของเอกสาร
    • ttypist : ให้ฟอนต์ ttypist เป็นฟอนต์ปริยายของเอกสาร
    • umpush : ให้ฟอนต์ umpush เป็นฟอนต์ปริยายของเอกสาร
    • waree : ให้ฟอนต์ waree เป็นฟอนต์ปริยายของเอกสาร
    ตัวเลือกกลุ่มนี้กำหนดฟอนต์ปริยายของทั้งเอกสาร โดยไม่ได้เปลี่ยนฟอนต์ทั้งสามตระกูล (อาจจะเหมาะกับเอกสารที่ใช้ฟอนต์เดียวทั้งเอกสาร เช่นหนังสือราชการไทยที่บังคับใช้ฟอนต์สารบรรณ)

ตัวอย่าง use case:

  • ต้องการใช้ฟอนต์ลักษมัณ (ดัดแปลงจากสารบรรณ) ทั้งเอกสาร (เช่น ในหนังสือราชการ):
    \usepackage[laksaman]{fonts-tlwg}
    
  • ต้องการใช้ฟอนต์ลักษมัณเป็น sans-serif (เช่น ในคำสั่ง \textsf{}) แทนฟอนต์ครุฑ (ฟอนต์ปริยายยังคงเป็น norasi):
    \usepackage[sflaksaman]{fonts-tlwg}
    
  • ต้องการใช้ฟอนต์ลักษมัณเป็นฟอนต์ปริยาย โดยต้องการผสมกับฟอนต์ roman, teletype ปกติ:
    \usepackage[sans,sflaksaman]{fonts-tlwg}
    
  • ต้องการใช้ฟอนต์ลักษมัณผสมกับฟอนต์กินรี โดยลักษมัณเป็นฟอนต์ปริยาย:
    \usepackage[sans,sflaksaman,rmkinnari]{fonts-tlwg}
    
  • ต้องการใช้ฟอนต์กินรีอย่างเดียวทั้งเอกสาร:
    \usepackage[kinnari]{fonts-tlwg}
    
  • ต้องการใช้ฟอนต์ครุฑผสมกับฟอนต์กินรี โดยฟอนต์ครุฑเป็นฟอนต์ปริยาย:
    \usepackage[sans,sfgaruda,rmkinnari]{fonts-tlwg}
    

เป็นฟีเจอร์ใหม่สำหรับ fonts-tlwgรุ่นหน้าที่จะรอออกรุ่นต่อไปครับ

Fonts-TLWG 0.6.1

$
0
0

Fonts-TLWG 0.6.1ออกไปแล้วเมื่อวานนี้ สรุปความเปลี่ยนแปลงในรุ่นนี้คือ:

  • ฟอนต์ใหม่: ลักษมัณ (Laksaman)ซึ่งดัดแปลงจากฟอนต์ TH Sarabun New ของคุณศุภกิจ เฉลิมลาภ และ SIPA
  • แตกแฟ้ม fontconfig จากแฟ้มเดี่ยวๆ เป็นแฟ้มย่อย เพื่อให้สามารถเลือกติดตั้งฟอนต์เพียงบางส่วนได้ ซึ่งเป็นสิ่งที่ดัดแปลงไว้ในแพกเกจของ Debian ก็เพียงแต่ merge เข้ามาที่ต้นน้ำเท่านั้น
  • Option ใหม่สำหรับ LaTeXเพื่อให้สามารถกำหนดฟอนต์ปริยายของเอกสารได้โดยสะดวก

มีผลข้างเคียงอีกเรื่องหนึ่งที่ไม่ได้กล่าวไว้ใน blog ก่อน ๆ คือเรื่องการตัดการวาด ฤาเป็น ฤๅของฟอนต์สารบรรณออกในฟอนต์ลักษมัณ ซึ่งการวาดดังกล่าวผมถือว่าผิดหลักการ เพราะสตริงทั้งสองถือว่าเป็นสตริงที่ต่างกันทั้งในรหัส มอก.620-2533 และในยูนิโค้ด ผู้ใช้ควรสามารถแยกความแตกต่างได้ว่าเป็นสตริงที่ต่างกัน

พฤติกรรมนี้อาจมาจากการพยายามแก้การพิมพ์ผิดอย่างกลาดเกลื่อนของผู้ใช้ทั่วไป ที่มักจะพิมพ์ ฤๅและ ฦๅโดยใช้สระอาแทนลากข้างยาว แต่การแก้ที่ฟอนต์ถือว่าไม่ถูกต้อง เพราะเป็นการอำพรางความแตกต่างของข้อมูลจริง หากจะแก้ปัญหาให้ถูก ควรแก้ที่ input method ซึ่งประเด็นที่คล้ายกันนี้ผมเคยเขียนถึงไปแล้วใน กรณีฟอนต์ Sarabun IT9การแก้ปัญหาที่ฟอนต์จะยิ่งเป็นการส่งเสริมการป้อนข้อมูลที่ผิดให้กว้างขวางยิ่งขึ้น ดังนั้นผมจึงตัดกฎข้อนี้ออกในฟอนต์ลักษมัณ และถ้าเป็นไปได้ก็อยากให้แก้ในฟอนต์มาตรฐานราชการไทยทั้ง 13 ฟอนต์ด้วย

ได้อัปโหลด Debian package เข้า sid ไปแล้ว แต่ยังรออยู่ในคิว NEW เนื่องจากมีแพกเกจใหม่ของฟอนต์ลักษมัณเพิ่มเข้ามา พร้อมกันนี้ก็ได้อัปโหลดแพกเกจ LaTeX ไปที่ CTANแล้วด้วย ผู้ใช้ TeXLive ก็รอพบได้จากแพกเกจ texlive-lang-other รุ่นถัดไปครับ


LibThai 0.1.21

$
0
0

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

ตอนที่ยกเครื่องตัวตัดคำของ LibThai เขียนใหม่เมื่อ 8 ปีที่แล้วนั้น (การประเมินผลขณะ merge เข้า trunk) ก็ได้คิดเผื่ออัลกอริทึมแบบอื่นไว้ขณะออกแบบเหมือนกัน กะว่าอาจมาปรับเพิ่มในอนาคต แต่ก็ไม่ได้กลับไปดู จนมาถูกกระตุ้นด้วยการเปิดไฟล์ HTML บางไฟล์ด้วย Firefox/Iceweasel แล้ว พบว่าใช้เวลานาน จึงได้เอาความคิดนี้มาปัดฝุ่นใหม่ โดยพยายาม refactor โค้ดเตรียมรองรับอัลกอริทึมอื่นไว้

และก็ได้คิดออกแบบอัลกอริทึมแบบ longest matching ดู โดยอาศัยโครงจากอัลกอริทึม maximal matching ปัจจุบัน แต่ขณะสำรวจและวิเคราะห์โค้ดเดิม ก็กลับเกิดไอเดียที่จะลดขั้นตอนของโค้ดเดิมขึ้นมาแทน

ผมใช้ callgrind วัดเวลาที่ใช้ในฟังก์ชันต่าง ๆ ก็พบว่าฟังก์ชันที่กินเวลามากที่สุดคือ brk_recover_try()ซึ่งใช้สำหรับหาจุด recover จากคำที่ไม่อยู่ในพจนานุกรม จึงพยายามมุ่งมาลดขั้นตอนในฟังก์ชันนี้

ผมมีสมมุติฐานมากมาย ตั้งแต่การลดการ assign การคัดลอก และการตรวจค่าเล็ก ๆ น้อย ๆ ที่ไม่จำเป็นออก ไปจนถึงการปรับกระบวนการคิดของอัลกอริทึม แล้วก็ต้องโยนทิ้งไปหลายเรื่อง เพราะบางเรื่องเอาเข้าจริงกลับทำให้ใช้เวลาเพิ่มขึ้น มีเพียงเรื่องเดียวที่ทำให้ลดเวลาได้อย่างจริงจัง คือการปรับวิธีตรวจสอบจุด recover จากการ match คล้ายการตัดคำปกติ มาเป็นการ match แบบละโมบ (greedy) โดยพยายาม match คำให้ได้มากคำที่สุดสำหรับแต่ละทางเลือกที่หยิบออกมา ซึ่งมีผลทำให้พบคำตอบได้อย่างรวดเร็วในกรณีที่จุดนั้นสามารถ recover ได้ อีกทั้งไม่ต้องไปเสียเวลาเลือกทางเลือกมาพิจารณาให้มากเกินไป เพราะจุดประสงค์ของการ recover ก็แค่พิจารณาว่าแต่ละจุดสามารถ recover จาก error ได้หรือไม่เท่านั้น ไม่ได้ต้องการ solution ที่สวยงามว่า recover แล้วต้องได้การตัดคำที่ดีที่สุด

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

แนวคิดอื่นที่ยังทำไม่สำเร็จก็เช่น ลดจำนวนการ recover ลง, ลดขนาดของ search space ลง, ทำ cut-off แต่ไว้ค่อยคิดต่อไป รวมถึงการสร้างอัลกอริทึมแบบอื่นด้วย แต่ตอนนี้ขอออกรุ่นที่ปรับสมรรถนะเล็กน้อยนี้ก่อน ให้ทันใช้ใน Jessie ที่กำลังจะ freeze ในเดือนตุลานี้โดยถือหลัก ออกเนิ่น ๆ ออกถี่ ๆ (release early, release often) เพื่อให้ตัวไลบรารีถูกทดสอบแต่เนิ่น ๆ ด้วย

สำหรับสมรรถนะตัวตัดคำที่เพิ่มขึ้นในรุ่นนี้ วัดเวลาจากกรณีทดสอบโดยใช้ callgrind:

  • ก่อนปรับ: 48,094,350
  • หลังปรับ: 46,893,901

คิดเป็นเวลาที่ลดลง = 2.50%

แต่นี่นับรวมทั้งหมดตั้งแต่เปิดพจนานุกรม, ตัดคำ, ปิดพจนานุกรม ซึ่งเวลาที่ใช้เกี่ยวกับพจนานุกรมนับเป็นสัดส่วนที่มากเอาการอยู่ และเป็น fixed cost ที่เกิดเพียงครั้งเดียวเท่านั้นตลอดโพรเซสที่เรียกตัวตัดคำของ libthai ดังนั้น ผมจึงวัดเวลาที่ใช้ในการเปิด-ปิดพจนานุกรมมาหักลบใหม่:

  • เฉพาะเปิด-ปิดพจนานุกรม: 32,961,393

เมื่อหักลบเวลาเปิด-ปิดพจนานุกรม จะเหลือเวลาสำหรับช่วงตัดคำจริง ๆ คือ:

  • ก่อนปรับ: 15,132,957
  • หลังปรับ: 13,932,508

คิดเป็นเวลาที่ลดลง = 7.93%

หรืออัตราเร็วที่เพิ่มขึ้น = 1 / (1 - 0.0793) - 1 = 0.0861 หรือ 8.61%

swath 0.5.3

$
0
0

swath 0.5.3 ออกแล้วเมื่อวานนี้รุ่นนี้เป็นการปรับพจนานุกรมตามหลัง การอัปเดต TeX hyphenation patternซึ่งปรับตามพจนานุกรมของ LibThai 0.1.21อีกทอดหนึ่ง แต่พร้อมกันนี้ก็มีการเปลี่ยนแปลงอย่างอื่นที่น่าสนใจด้วย

คุณ +Sorawee Porncharoenwaseรายงานมาใน Google+ ส่วนตัวว่าพบบั๊ก 2 ตัวใน swath เมื่อใช้งานกับ plain text:

  • เมื่อป้อนข้อความ UTF-8 ยาว ๆ ผ่านคำสั่ง swath -u u,uปรากฏว่าข้อความจะถูกตัดท้ายก่อนจบ
  • swath ทะลึ่งไปแทรกรหัสตัดคำในภาษาอังกฤษและหลังเครื่องหมายวรรคตอนบางตัวในโซนภาษาไทยด้วย เช่น:
    hello (|world)
    สวัสดี (|ครับ|)
    

บั๊กแรกนั้น ความจริง swath จองที่ไว้สำหรับบรรทัดยาวถึง 2000 อักขระ ซึ่งข้อความตัวอย่างที่คุณ Sorawee ให้มาก็ไม่ได้เกินนั้น เมื่อตรวจสอบก็พบว่ามาจากโค้ดส่วนอ่าน-เขียน UTF-8 ที่จองบัฟเฟอร์ไว้รองรับแค่ 1 ไบต์ต่ออักขระ ในขณะที่ UTF-8 ต้องการถึง 6 ไบต์ต่ออักขระใน extreme case จึงได้จองเนื้อที่ไว้ให้เพียงพอ ก็แก้ปัญหาได้

บั๊กที่สอง มีวิธีแก้ได้สองวิธี คือเข้าไปล้วงในอัลกอริทึมตัดคำระดับล่างของ swath เลย หรือแก้ที่ตัวอ่าน token เพื่อให้ส่งเฉพาะภาษาไทยเข้าสู่อัลกอริทึมตัดคำเท่านั้น ผมเลือกอย่างหลัง ด้วยเหตุผลสองประการ:

  1. โค้ดระดับล่างของ swath นั้น เป็นโค้ดที่คนเขียน (ซึ่งไม่ใช่ผม) อ่านรู้เรื่องคนเดียว และไม่ได้ออกแบบให้รองรับการปรับเปลี่ยนอะไรมากนัก การเข้าไปแตะโค้ดส่วนนี้จึงเสี่ยงเกินไป
  2. ใน file filter ทั้งหลาย ทั้งสำหรับ LaTeX, HTML และ RTF ต่างก็ใช้วิธีส่งเฉพาะ token ภาษาไทยไปให้อัลกอริทึมตัดคำทั้งนั้น ในขณะที่ส่วนจัดการ plain text กลับส่งเข้าไปทั้งก้อนโดยไม่แยก การแก้ส่วนจัดการ plain text ให้ทำงานแบบเดียวกันจึงดูสมเหตุสมผล

และก่อนที่จะออก swath ในแต่ละรุ่น ผมพยายามจะทำความสะอาดโค้ดไปทีละนิด สำหรับรุ่นนี้ สิ่งที่ทำคือตัดโค้ดที่ไม่ได้ใช้งานทิ้ง ได้แก่โค้ดส่วนทำ shaping ภาษาไทยใน LaTeX filter ซึ่งไม่มีการเรียกใช้มานานมากแล้ว ตั้งแต่มี thailatex (ซึ่งปัจจุบันคือ babel-thaiใน CTAN) ที่รองรับการทำ shaping ผ่าน virtual font มาตั้งแต่ต้น เมื่อตัดโค้ดส่วนนี้ไป ก็ทำให้ขนาดของโปรแกรมที่ strip แล้วลดลงประมาณ 4 KiB

นอกจากนี้ ก็ได้ปรับข้อความใน man page นิดหน่อยด้วย หลังจากที่ thailatex เปลี่ยนเป็น babel-thaiมาระยะหนึ่งแล้ว (ประกาศเมื่อปีกลาย) ก็กล่าวถึง babel-thai ให้เหมาะสม

อัปโหลดเข้า Debian Sidแล้วครับ คุณควรจะเจอแพกเกจใหม่ตั้งแต่เมื่อเช้าแล้วแหละ

Thanks

$
0
0

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

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

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

ช่วงที่ผ่านมา นอกจากงานที่ได้เขียน blog บันทึกมาเป็นระยะแล้ว ก็ยังมีงานแปล GNOME, Debian, Xfce ที่ยังคงทำเป็นระยะเช่นเคย โดยยังได้เข้าร่วม ทีมไทยใน Translation Projectเพิ่มเติมด้วย (เริ่มที่ leafpadตัวเดียวก่อน เพื่อเรียนรู้ระบบ)

และในช่วงเดือนกันยายนที่ผ่านมา ผมก็ได้รับคำท้า IceBucketChallenge จากพี่โดมทาง FB โดยผมเลือกที่จะแปรคำท้าเป็น Iceweasel Challenge ด้วยการบริจาคแพตช์ให้ Firefox/Iceweasel ซึ่งผมได้เลือก Bug #425915ว่าด้วยการวิเคราะห์ขอบเขตของคำไทยในข้อความทั่วไป ซึ่งจะส่งผลถึงการเลื่อนเคอร์เซอร์ทีละคำ, การเลือกคำด้วยดับเบิลคลิก, การส่งคำให้ระบบอำนวยความสะดวกแก่ผู้บกพร่องทางกายภาพ (accessibility) ฯลฯ ปรากฏว่าบั๊กนี้ไม่หมูอย่างที่คิดครับ นับแต่แพตช์แรกจนถึงวันนี้ก็ปรับแก้มาเรื่อย ๆ จนผ่านไป 1 เดือนก็ยังไม่แล้วเสร็จ แล้วผมค่อยเขียน blog เล่าในโอกาสต่อไปนะครับ

FOSS Behind my Wedding

$
0
0

blog นี้เป็น blog แรกที่ผมเขียนภายใต้สถานภาพ สมรสหลังจากที่ได้เข้าพิธีแต่งงานไปเมื่อวันที่ 26 ต.ค. ที่ผ่านมา (นับถึงวันที่ 25 พ.ย. ที่เขียน blog นี้ ก็ครบ 30 วันพอดี)

ชีวิตผมซึ่งอยู่กับ ซอฟต์แวร์เสรีและ โอเพนซอร์สอยู่แล้ว ก็เป็นธรรมดาที่จะมีสิ่งนี้เข้ามาพัวพันกับงานครั้งนี้

วีดิทัศน์

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

เครื่องมือแรกที่ใช้คือ dvd-slideshowซึ่งเป็นชุด command-line สำหรับสร้างวีดิทัศน์จากแฟ้ม spec ซึ่งเป็น text file แต่ติดปัญหาว่ามันมี error message และ gen video ไม่สำเร็จ จึงได้ file Debian #750626พร้อมเสนอแพตช์แก้ ซึ่งเริ่มมีผลในรุ่น 0.8.4.2-3ของ Debian

นั่นเป็นการทดลองเครื่องมือก่อน แต่เมื่อเริ่มได้รูปภาพจำนวนหนึ่งมา การจะนั่งจัดเรียงภาพด้วยการ edit text file พร้อมกับเจ้าสาวซึ่งไม่ใช่นักคอมพิวเตอร์ มันก็ลำบากอยู่ จึงได้ไปหาเครื่องมือตัวอื่น จนกระทั่งพบ imaginationซึ่งเป็น GUI โดยใช้ GTK+ 2.0 ซึ่งทำให้สามารถลากจัดลำดับรูปภาพได้ พร้อมกับมี transition ที่หลากหลายกว่า

ปัญหาเกิดขึ้นเมื่อจะ gen video กลับ gen ไม่ได้ เพราะหา FFmpeg ไม่เจอ เนื่องจาก FFmpegได้ถูกตัดออกจาก Debianไปแล้ว จึงได้ไปค้นบั๊กของ Debian พบ Debian #722293ซึ่งมีผู้รายงานไว้ และได้ forward bug ไปที่ต้นน้ำ (Imagination #78) จึงตามไปคุยและเสนอแพตช์ที่ต้นน้ำ พร้อมกลับมาแปะแพตช์ไว้ที่ Debian ด้วย

ผู้พัฒนาต้นน้ำดูจะไม่กระตือรือร้นสักเท่าไรกับแพตช์ที่เสนอ หลังจากตรวจสอบไปก็พบว่า FFmpegยังไม่ตาย ไม่ได้เปลี่ยนชื่อเป็น libav อย่างที่ผู้ดูแลแพกเกจใน Debian และ Ubuntu พยายามจะสื่อถึงผู้ใช้ แต่ libavเป็น fork หนึ่งของ FFmpeg ซึ่งทีม Debian เลือกมาใช้แทน แต่ในดิสโทรอื่นยังคงใช้กันอยู่ และผู้ใช้ Debian/Ubuntu บางส่วนก็ต้องการกลับไปใช้ FFmpeg เหมือนเดิม (อ่าน ตัวอย่างเรื่องเล่าสถานการณ์) และมีนักพัฒนา Debian เสนอกลับเข้ามาใหม่จนกระทั่ง ได้เข้า experimentalและ sidในที่สุด (แต่ไม่ทัน Jessie freeze จึงไม่มีใน Jessie)

อย่างไรก็ดี ในขณะที่ผมทำวีดิทัศน์ของผมอยู่นั้น Debian ไม่มี FFmpeg ทั้งใน testing และ unstable จึงได้ผลักดันแพตช์ให้ imagination กลับมาทำงานได้ โดยเพิ่มระดับความรุนแรงของ Debian #722293จาก important เป็น grave เพื่อให้มันกลายเป็น RC bug เพราะถึงอย่างไร FFmpeg ก็จะไม่มีใน Jessie ถ้า Debian จะออก Jessie พร้อมกับ imagination ที่ต้องการ FFmpeg มันก็จะไม่สามารถ gen video ได้เลย จนในที่สุด แพตช์ก็เริ่มมีผลในรุ่น 3.0-5ของ Debian ส่วนที่ต้นน้ำนั้น ผมเข้าใจแล้วว่าบั๊กนี้ไม่ถือว่ารุนแรงนอก Debian/Ubuntu

เป็นอันว่า กว่าผมจะเริ่มทำวีดิทัศน์ได้ ก็ได้แก้ RC bug ใน Debian ไปแล้ว 2 bug และสามารถสร้างวีดิทัศน์ได้ตามที่ต้องการ

พิมพ์ซอง

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

ผมเริ่มจากเขียน shell script เอง โดยอ่านรายชื่อจาก text file มาสร้างแฟ้ม LaTeX ก่อนคอมไพล์เป็น PDF ทีละราย แต่นั่นทำให้จำนวนไฟล์เยอะมาก PDF 1 แฟ้มต่อแขก 1 คน

ผมจึงมองหาวิธีทำ mail merge ใน LaTeX ดู ก็พบแพกเกจ mailmergeแต่ปรากฏว่าต้องใส่รายชื่อใน LaTeX source เลย แทนที่จะแยกออกมาข้างนอกต่างหาก กลายเป็นว่า PDF ไฟล์เดียวมีซองของแขกทุกคน ทำให้เพิ่มแขกที่จะเชิญทีละกลุ่มได้ลำบาก (คุณนึกออกไหม? เวลาที่นึกได้ว่าควรเชิญญาติคนนั้นเพิ่ม เพื่อนคนนู้นทวงการ์ดเชิญ เพื่อนที่ได้การ์ดแนะนำว่าควรเชิญคนนั้นคนนี้เพิ่มอีก ฯลฯ ผมจึงต้องเตรียมพร้อมที่จะพิมพ์ซองเพิ่มได้ตลอดเวลา)

จนกระทั่งพบแพกเกจ textmergที่ตอบโจทย์ของผม เพราะสามารถทำ master file ของซองเอาไว้ แล้วจัดการรายชื่อแขกในแฟ้มภายนอกต่างหาก จากนั้นสั่งคอมไพล์และจัดพิมพ์ซองทีละกลุ่ม หนึ่งกลุ่มหนึ่งไฟล์ ทำให้จำนวนไฟล์ไม่เยอะเกินไป และสามารถคัดแยกได้สะดวก ว่ากลุ่มไหนพิมพ์ซองไปบ้างแล้ว กลุ่มไหนยังไม่พิมพ์

สำหรับ LaTeX ไม่พบบั๊กอะไรครับ ใช้งานได้ราบรื่นดี รายละเอียดการใช้งานสามารถศึกษาจากเอกสารของแพกเกจได้ไม่ยาก (บน Debian ก็แค่สั่ง texdoc ชื่อแพกเกจบนเทอร์มินัล) หรือถ้ามีเวลา ผมอาจจะเขียนวิธีการในภายหลัง

นั่นคือการใช้ FOSS ในการเตรียมงานแต่งงานของผมครับ ผ่านมาได้ด้วยดี ก็บันทึกไว้เป็นกรณีศึกษาเสียหน่อย :-)

Thanks

$
0
0

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

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

  • เดือนตุลาคม 2557
    • ผู้ไม่แสดงตน 2 ท่าน
    • ผู้ไม่ประสงค์จะออกนาม 1 ท่าน
  • เดือนธันวาคม 2557
  • ต้นเดือนมกราคม 2558

ขอให้ทุกท่านการงานราบรื่น มีสุขภาพดีทั้งคนทั้งระบบคอมพิวเตอร์ที่ใช้นะครับ

และในโอกาสขึ้นปีใหม่นี้ ก็ขออวยพรให้ผู้อ่าน blog ของผมทุกท่านมีความสุข คิดสิ่งใดก็ขอให้สมความปรารถนาครับ

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

และระหว่างการเดินทางไปทำภารกิจต่าง ๆ ก็ได้ปรับแผนที่ OpenStreetMap ในตัวเมืองขอนแก่นไปด้วย

งานหนึ่งที่ยังไม่ลืม คือ Iceweasel Challenge (Bug #425915) ที่ได้รับคำท้าของพี่โดมไว้ตั้งแต่เดือนกันยายนที่ผ่านมา แต่คอมพิวเตอร์ที่ผมใช้ทำงานเกิดมีปัญหาเปิดไม่ติด ว่าจะยกไปซ่อมก็ยังไม่มีเวลา เนื่องจากมีภารกิจทางบ้านอย่างต่อเนื่องในช่วงที่ผ่านมา คาดว่าสักพักคงซาลง และสามารถกลับมาทำต่อได้ครับ

Viewing all 83 articles
Browse latest View live


Latest Images