Theppitak's blog

My personal blog.

28 ธันวาคม 2552

The CapsLock Key

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

เพื่อเป็นการยืนยัน เลยไปรื้อแป้นพิมพ์เก่าของคอมพิวเตอร์เครื่องแรกในชีวิต เป็น 8086 IBM PC compatible ยี่ห้อ Acer พร้อมระบบภาษาไทยของสหวิริยา สภาพเก่าหน่อยนะครับ เพราะอายุมันก็มากแล้ว

ซูมมาที่ตำแหน่งปุ่ม Ctrl และ Alt เขาวางปุ่มง่าย ๆ อย่างนี้เลย ก่อนที่ต่อมาเขาจะย้าย Ctrl ลงมาเบียด Alt เข้าไป แล้วยังมีปุ่ม Windows แทรกเข้ามาอีกทีหลังด้วย

สมัยที่ใช้ DOS นั้น ปุ่ม Alt ยังไม่ได้ใช้งานมากเหมือนตอนที่เป็น Windows แล้ว เวลาเรียกเมนูก็มักจะใช้ปุ่ม F10 หรือ Esc แล้วแต่โปรแกรม ดังนั้น การวางปุ่ม Alt ไว้ตรงนี้ก็ไม่ได้สร้างปัญหามากนัก แต่ถ้าเป็นสมัย GUI อย่างตอนนี้ ปุ่ม Alt อยู่ตำแหน่งนี้จะกดยากเหมือนกับที่กด Ctrl ในสมัยนี้ กดเยอะ ๆ นิ้วก้อยจะหงิกเอา

ส่วนปุ่ม CapsLock นั้น เขาเอาไปวางไว้มุมล่างขวาครับ

ปุ่ม Esc จะวางไว้ที่แป้นตัวเลข สมัยนั้นปุ่ม Esc ก็ไม่ได้สำคัญอะไรนักเหมือนกัน ไปใช้เทอร์มินัลต่าง ๆ ก็ต้องควานหากันให้ควั่ก จนบางคนตัดรำคาญด้วยกการกด Ctrl-[ แทนซะเลย และในแป้นพิมพ์นี้จะไม่มี Enter ที่แป้นตัวเลข ทั้งคีย์บอร์ดจึงมี Enter แค่ปุ่มเดียวเท่านั้น

ส่วนปุ่มสลับภาษาก่อนยุค Windows จะค่อนข้างหลากหลาย สำหรับสหวิริยา เขากำหนดให้ใช้ปุ่ม Alt สลับภาษา โปรแกรม CU Writer ดูจะใช้ปุ่มอื่น เป็นปุ่ม Esc หรือ F10 ผมก็จำไม่ได้เสียแล้ว (คุ้น ๆ ว่า F10 ใช้เปิดเมนู) ใครจำได้ช่วยเตือนความจำผมที

พอมาสมัย Windows Thai Edition ที่บริษัทคนไทย localize กันเอง ปุ่มสลับภาษาแรก ๆ ก็ดูจะหลากหลายเหมือนกัน แต่ปุ่ม grave (`) ของไมโครวิซอยู่ในตลาดได้นานกว่า เพราะเป็น authorized distributor ของไมโครซอฟท์เอง จนกระทั่งกลายเป็น de facto ในเมืองไทยมาจนทุกวันนี้ แม้ว่า Windows มาตรฐานจะใช้ Alt-Shift เป็นค่าปริยายก็ตาม

กลับมาที่ปุ่ม CapsLock รู้สึกเสียดายตำแหน่งการวางปุ่มจริง ๆ เพราะ CapsLock นั้น ความถี่ในการใช้ต่ำมาก ๆ แต่กลับไปวางไว้ในตำแหน่งที่กดได้สะดวก แทนที่จะให้ตำแหน่งนั้นกับปุ่ม Ctrl ที่ใช้บ่อยกว่า

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

พอปุ่ม CapsLock แทบไม่มีที่ใช้อย่างนี้ บางคนจึงชอบตั้ง CapsLock ให้ใช้สลับภาษาแทน ซึ่งก็ดูสมเหตุสมผลเหมือนกัน แถมใกล้มือดีด้วย แต่สำหรับผม หลังจากชินกับ Alt-Shift ไปแล้ว ก็คิดว่าความสะดวกของการกด Ctrl ในแบบเดิมมีน้ำหนักมากกว่า

ป้ายกำกับ: ,

25 ธันวาคม 2552

Mozilla Thai IME Support Updated

เข้ากรุงเทพฯ มาหลายวัน ทำตัวเป็นแมลงวันตอมกลิ่น Wi-Fi เพื่อทำงาน เพราะก่อนหน้าที่จะเข้ากรุงนั้น ได้กลับมาทำงานที่ Mozilla #353776 เกี่ยวกับการรองรับการตรวจแก้ลำดับการป้อนภาษาไทยแบบอิงบริบท โดยได้ ส่งแพตช์ที่ยังมีปัญหาอยู่ไป เพื่อขอปรึกษา จากนั้นเลยต้องคอยติดตามความคืบหน้า

เท้าความสักนิด จาก ครั้งล่าสุด ที่ปรับแพตช์จากของ Akira Tagoh จนใช้ได้กับ Mozilla trunk (ซึ่งยังใช้ได้กับ Firefox/Iceweasel 3.5.x และ XULRunner 1.9.1.x) ไปนั้น มีความเห็นจาก Masayuki Nakano (Mozilla Japan) ว่าเป็นวิธีที่ไม่ดีเท่าไร เพราะลงไปแก้หลายจุด หลายเลเยอร์เกินไป ในขณะที่ใน Mozilla trunk นั้น มีการปรับโค้ดในส่วนจัดการ event ของหน้าต่าง ให้รองรับคำสั่งที่จำเป็นสำหรับงานนี้เพียงพอแล้ว สามารถ implement เรื่องนี้ได้ภายในเลเยอร์เดียว

เมื่อลองไล่โค้ดดูก็พบว่าจริง แพตช์เล็กลงเหลือสั้นนิดเดียว แต่พอทดสอบแล้วพบว่ามีปัญหาบางอย่างในการสั่งลบข้อความใน editor buffer เพื่อการแก้ไขลำดับการป้อน จึงได้ส่งแพตช์เข้าไปปรึกษาตามที่กล่าวไปข้างต้น โดยในระหว่างทำงาน ก็เกิดผลพลอยได้ คือพบบั๊กใน gtk-im-libthai และได้ แก้ไปแล้วใน SVN

สำหรับคำถามที่ถามไป ก็ปรากฏว่าได้ คำแนะนำ จาก Masayuki ว่าอาจเป็นบั๊กที่เขาเองก็เจอ (Mozilla #528396) พอเอาแพตช์ของเขามาใช้ร่วมด้วย ก็ปรากฏว่าแพตช์ของผมก็ทำงานได้เลย เพียงแต่ติดปัญหาเรื่องปริมาณการลบที่เราต้องการเจาะจงให้ละเอียดกว่าระดับเซลล์

เขาแนะนำให้ปรับแก้ event ที่เกี่ยวข้อง ก็กลับมาไล่ดู จนได้ แพตช์ที่เวิร์กจริง เป็นอันว่าสำเร็จแล้ว โดยต้องใช้ แพตช์ของ Masayuki ก่อน แล้วจึงตามด้วยแพตช์ของผม พูดอีกอย่างคือ ต้องรอ resolve Mozilla #528396 ก่อน แล้วถึงจะมาดูแพตช์ของผมได้

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

อ้อ.. อาจจะพอเดากันได้ว่าแพตช์นี้ใช้ได้กับ trunk เท่านั้นนะครับ ส่วนถ้าจะเอาไปแพตช์กับ Firefox/Iceweasel 3.5.x หรือ XULRunner 1.9.1.x ก็ต้องใช้ แพตช์เก่า ไปพลางก่อน ซึ่งเป็นแพตช์เดียวกับที่ใช้ใน xulrunner deb ที่ debclub

ทั้งหมดที่ทำมานี้ เล่นเอา Green Wi-Fi ที่ผมสมัครแบบ 1 ชั่วโมง/เดือน เอาไว้ เกือบจะหมดเลยเชียว (ตอนที่สมัครนั้น แบบ unlimited เต็มแล้ว) เลยถาม gumara ดู ว่ามี free Wi-Fi ที่ไหนให้ใช้อีกบ้าง เพื่อจะได้ตามงานต่อ จนวันหนึ่ง ไปนั่งที่จามจุรีสแควร์ เจอ free Wi-Fi แบบอืด ๆ หน่อย และตอน login ต้องเสี่ยงดวงนิด ๆ แต่ก็สามารถทำให้งานลุล่วงไปได้ โดยในระหว่างนั้นก็ใช้ commit งานแปล GNOME ที่ได้ดาวน์โหลด PO มาทำแบบออฟไลน์ตุนเอาไว้ด้วย

เดิมนั้น เวลาเข้ากรุงเทพฯ ผมมักจะออฟไลน์ตลอด แต่คราวนี้เข้ากรุงหลายวัน แถมยังมีงานค้างให้ตามด้วย ก็เลยพยายามดิ้นรนหา Wi-Fi ทำงาน พอดีว่าได้เคยทดลองทำงานผ่าน free Wi-Fi ที่กรุงเทพฯ มาแล้วในครั้งก่อน โดยได้สมัคร Green Wi-Fi เอาไว้ด้วย คราวนี้เลยไม่ต้องเริ่มต้นจากศูนย์ ส่วนตอนนี้ก็กลับมาใช้เน็ตที่บ้านที่ขอนแก่นเรียบร้อยแล้วครับ

เป็นอันว่า บั๊กของ Mozilla ก็เป็นอันเรียบร้อย ต่อจากนี้ก็รอแพตช์เข้ากระบวนการตามขั้นตอนต่อไป

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

11 ธันวาคม 2552

Thanks

ขออนุญาตขอบคุณแบบรวบยอดนะครับ หวังว่าคงไม่ว่ากัน:

ขอขอบคุณ นิวตรอน, อ.กิตติ์, ปรัชญ์ สำหรับเงินสนับสนุนเป็นเงินหยวนไต้หวันที่สนามบินในวันกลับจาก Taiwan Mini-DebConf 2009

ขอขอบคุณ อ.พฤษภ์ บุญมา สำหรับ E-book reader ที่ส่งมาให้ ซึ่งคงช่วยได้มากเรื่องการอ่านเอกสารต่าง ๆ ครับ

ขอขอบคุณ คุณวิทยา สำหรับเงินสนับสนุนที่โอนเข้าบัญชีให้ครับ

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

May the source be with you!

ป้ายกำกับ:

08 ธันวาคม 2552

My Recent Deb Migrations

บันทึกรายการ migrate debian package ในช่วงนี้:

  • เปลี่ยนที่อยู่อีเมลของ Maintainer ของผมในแพกเกจต่าง ๆ ให้มาใช้อีเมล debian.org

  • ใน Squeeze Release Goals มีเป้าหนึ่งคือ การเปลี่ยน source package format โดยหลังจากที่ dpkg ใน lenny รองรับ source package format 3.0 แล้ว ทุกแพกเกจก็สามารถเริ่มใช้ format ใหม่ได้แล้ว ซึ่งในฟอร์แมตใหม่นี้ จะแยกส่วน debian packaging ออกมาเป็น *.debian.tar.gz แทนที่จะเป็น *.diff.gz อย่างเดิม พร้อมทั้งรองรับการสร้าง debian patch แบบแยกย่อยในตัว โดยไม่ต้องพึ่งพิงระบบ dpatch, cdbs หรือ quilt อีกต่อไป

    การแยกเป็น *.debian.tar.gz นี้ มีข้อดีคือ แพกเกจที่ต้องการเพิ่ม binary file เช่น ไอคอน ไม่จำเป็นต้อง uuencode ให้เป็น text เพื่อจะใส่ใน diff อีกต่อไป

    นอกจากนี้ DebSrc3.0 ยังรองรับ upstream tarball รูปแบบ *.tar.bz2 และ *.tar.lzma ด้วย ทำให้ไม่ต้อง repack upstream tarball ที่มาในรูปแบบเหล่านี้ใหม่อีกต่อไป

    สำหรับแพกเกจที่ผมดูแล นอกเหนือจากแค่การทำตาม release goals ก็คงจะได้ใช้ประโยชน์ตรงระบบ patch เป็นหลักเวลาที่มีใครมา NMU ดังนั้น ก็ migrate source package ทั้งหมดมาเป็น DebSrc3.0 format ด้วย

  • สำหรับแพกเกจฟอนต์ Paul Wise เสนอให้ ตัดการใช้ defoma ออก เนื่องจากในปัจจุบัน ระบบ fontconfig เริ่มเข้ามาแทนที่ defoma มากขึ้นเรื่อย ๆ ดังนั้น จึงตัด defoma hints ออกจากแพกเกจฟอนต์ทั้งหมด

  • สำหรับแพกเกจที่ build ด้วย autotools (libtool, automake, autoconf) ก็เปลี่ยนจากการ update แค่ config.{sub,guess} ก่อน build มาเป็นการเรียก autoreconf เพื่อ generate ไฟล์ต่าง ๆ ใหม่หมด ซึ่งดูเหมือนจะจำเป็นสำหรับ libtool เวลาที่ต้องรองรับ architecture ต่าง ๆ ดังตัวอย่างใน Debian #558637

ณ เวลาที่เขียน blog นี้ เพิ่ง migrate เสร็จไป 5 ใน 9 แพกเกจ เดี๋ยวต้องทยอยทำต่อไป

(แน่นอนว่า ทั้งหมดนี้ จะมีผลใน Ubuntu Lucid ด้วย)

ป้ายกำกับ: ,

hacker emblem