Theppitak's blog

My personal blog.

30 กรกฎาคม 2547

Font’s Story

สืบเนื่องมาจาก bug report ของ Ruben Vermeersch ชาวเบลเยียม (เดาจาก e-mail address ใน personal mail) ผู้สนใจภาษาไทย ได้อ่านภาษาไทยผ่าน Mozilla แล้วพบว่าฟอนต์ไทยตัวเล็กมาก เมื่อเทียบกับภาษาอังกฤษ ก็เลยทำให้มีการยกประเด็นเรื่องการ scale up ฟอนต์ไทยขึ้นมาถกอีกครั้งหนึ่ง รวมทั้งที่ TLWG devel forum ด้วย ซึ่งผลที่เกิดขึ้นก็คือ:

  • ได้ข้อสรุปว่า ฟอนต์ไทยควร scale up ได้ โดยไม่ต้องกังวลเรื่อง ascender/descender ใน em square เราสามารถยืด glyph เลย ascender/descender ภาษาอังกฤษไปได้เลย โดยไม่ต้องกลัวว่าจะโดนขริบ (ใครขริบถือว่าเป็น bug) และได้ทยอยขยายขนาดฟอนต์ใน CVS บ้างแล้ว
  • มีการแตกประเด็นเรื่องการเลือกฟอนต์ของ Mozilla ซึ่งมีอยู่สามฟอนต์ที่ Moz ไม่ยอมเลือกตามที่สั่ง คือ Norasi, Garuda และ DBThaiText ตรงนี้ไม่ได้คุยต่อใน gtk-i18n-list เพราะไม่เกี่ยวข้องกับ list เลยคุยต่อผ่าน personal contact ต่างหาก ความว่า:
    • Jungshik Shin ขอให้ช่วยสร้าง test case สำหรับ bug นี้ (ที่ผมตั้งข้อหา Mozilla ไว้) ผมจึงสร้าง fonttest page ไว้
    • Jungshik ตรวจสอบภายในวันเดียวและตอบกลับมาว่า เป็นเพราะไฟล์ /usr/lib/mozilla/res/fonts/fontEncoding.properties นั้น ได้กำหนด encoding ของฟอนต์ทั้งสามไว้ให้ใช้ x-thaittf-0.wide encoder ซึ่งจะมีก็ต่อเมื่อคอมไพล์ --enable-ctl เท่านั้น ดังนั้น จึงควร comment 3 บรรทัดนี้ออก จนกว่า Mozilla จะ enable CTL by default:
      encoding.norasi.ttf = x-thaittf-0.wide
      encoding.garuda.ttf = x-thaittf-0.wide
      encoding.dbthaitext.ttf = x-thaittf-0.wide
      และได้ file Mozilla Bug #253533 ไว้แล้ว ผมทดลองตามแล้ว เป็นตามที่บอกจริง ตอนนี้ไม่มีปัญหากับฟอนต์ทั้งสามแล้ว
    • และ Jungshik ยังได้ชี้ไปยัง Mozilla Bug #215219 เกี่ยวกับการ bridge ไปยัง Pango อีกด้วย (ดูเหมือน bact' เคยพูดถึงแล้วครั้งนึง)

อีกเรื่องหนึ่งเกี่ยวกับฟอนต์ (แต่ไม่เกี่ยวกับ bug report ดังกล่าว) ก็คือ ผมได้ร่าง Spec for Thai OpenType Font Creation ไว้ เป็นส่วนหนึ่งสำหรับการทำ OTF ต่อ กำลังรอ feedback จาก Thai font developer ทั้งหลาย

29 กรกฎาคม 2547

โจทย์ติดแสตมป์

พอดีไปเจอโจทย์ในหนังสือ ว่าให้พิสูจน์ว่า:

  • ถ้ามีแสตมป์ 3 บาท และ 7 บาท จำนวนไม่จำกัด จะสามารถติดแสตมป์ราคาตั้งแต่ 12 บาทขึ้นไป ได้ทุกราคาที่เป็นจำนวนเต็ม
  • ถ้ามีแสตมป์ 4 บาท และ 9 บาท จำนวนไม่จำกัด จะสามารถติดแสตมป์ราคาตั้งแต่ 24 บาทขึ้นไป ได้ทุกราคาที่เป็นจำนวนเต็ม

ก็พิสูจน์ได้ไม่ยาก แต่ทำให้เกิดความสงสัยว่า ถ้าโจทย์เป็นอย่างนี้ล่ะ?

มีแสตมป์ราคา n และ m บาท จำนวนไม่จำกัด โดยที่ n และ m เป็นจำนวนเต็มที่ relative prime ซึ่งกันและกัน (กล่าวคือ gcd(n,m) = 1) ราคาต่ำสุดที่จะสามารถติดแสตมป์ได้ทุกราคาคือเท่าใด?

นั่งคิดไปคิดมา ยังไม่ทันออก พอดีว่าน้องชายกลับมาเยี่ยมบ้าน เลยเอามาคุยเล่นกัน ปรากฏว่ามัน solve ออกภายในไม่ถึง 20 นาที -_-!

ใครคิดออกแล้วลองดู Goldbach's conjecture ต่อละกัน ปัญหาสะท้านโลกเชียวนะนั่น

27 กรกฎาคม 2547

กลอนอักษรจีน

ติดลมครับติดลม.. ขอเขียนเรื่องที่ไม่ใช่คอมพ์ต่ออีกสักวัน

เมื่อราว 7-8 ปีก่อน (โห.. นานเหมือนกันนะ พอนึกดูแล้ว) มีพี่คนนึงเอากลอนจีนมาให้แปล บอกว่าเป็นกลอนที่จะใช้ในฉลากเหล้ายี่ห้อหนึ่ง แต่พอแปลเสร็จส่งให้ ปรากฏว่าไม่ผ่าน เพราะจริงๆ แล้ว ยี่ห้อเหล้าเป็นภาษาญี่ปุ่น แต่ผมดันแปลด้วยสำเนียงแต้จิ๋ว ไหนๆ เขาก็ไม่เอา แต่เราชอบ และก็เห็นว่ามันล่วงเลยมานานแล้ว ก็เลยเอามาบันทึกเก็บไว้

เนื้อหาพูดถึงอักษรจีน 忍 ซึ่งแปลว่า “อดทน” อันเป็นยี่ห้อเหล้าที่ผมทราบภายหลังว่าคือ “ชิโนบุ” มีเนื้อความ (ดูได้ที่ฉลากและข้างกล่อง) ว่าดังนี้

忍字心上一把刀
不忍刀下剌心窩
若能忍得一点氣
逢凶化吉災禍無

เปิดปทานุกรมไล่ทีละคำ อ่านเป็นสำเนียงแต้จิ๋วแล้ว ปรากฏว่าเป็นกลอนคล้องจองไพเราะดี (สำเนียงจีนกลางหรือญี่ปุ่นเป็นไงไม่รู้) สัมผัสคล้ายๆ กานต์ หรือกลอนหัวเดียว

ยิ่ม หยี่ ซิม เจี่ย เจ็ก ป้า ตอ
ปุ๊ก ยิ่ม ตอ เหีย ฉึ่ง ซิม ออ
เยี้ยก เหล่ง ยิ่ม ติก เจ็ก เตี้ยม ขี่
ฮ้ง เฮียง ห่วย กิก ไจ ก่วย บ๊อ

เนื้อหาก็ให้ข้อคิดดี บรรยายถึงอักษร 忍 ซึ่งประกอบด้วย 刃 (คมมีด) วางบน 心 (หัวใจ) รวมกันกลายเป็น “อดทน” ถ้าไม่ทนมีดจะหล่นเสียบหัวใจ ฯลฯ เห็นแล้ว เลยถอดความออกมาเป็นโคลงสี่สุภาพว่าอย่างนี้

๏ ตัว “ยิ่ม” หนึ่งดาบจี้   ดวงใจ
ห่อน “ยิ่ม” ทิ่มทรวงใน   แปลบสร้าน
ขืนกลืนข่มโกรธได้   สักอึด
ร้ายไป่ดีเปลี่ยนด้าน   ผ่านพ้นเงื้อมภัยฯ

26 กรกฎาคม 2547

Sunday Nostalgia

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

นั่งทบทวนตั้งแต่ต้นมา ก็สรุปชีวิตของตัวเองหลังจากออกจากที่ทำงานแรกว่า เป็นชีวิตแบบ “อดเปรี้ยวไว้กินหวาน” แต่เหมือน Tantalus ที่ไม่ได้ “กินหวาน” เสียที

ทำไมถึงเป็นอย่างนั้น? ผมพบตัวเองว่าชอบสายวิทย์ตอน ม.ต้น ตัดสินใจให้กับตัวเองได้ตอน ม.ปลาย ว่าจะเรียนสายวิศวฯ คอมพิวเตอร์ ตอนสมัครสอบเอนท์ ผมเลือกไม่ยากเลย เขาให้เลือก 6 อันดับ มี 8 เกียร์ให้เลือก โดยพระนครเหนือไม่รับทางการสอบ แล้วก็ตัด มอ. ที่ไกลบ้านออก แล้วก็กรอกเรียงคะแนนลงไปเลย ติดอันไหนเอาอันนั้น สถาบันไม่ค่อยสำคัญ ขอให้ได้เรียนสายที่ต้องการเป็นพอ

เรียนไปๆ ก็พบได้ไม่ยากว่าตัวเองทำได้ดีในสายทฤษฎีและซอฟต์แวร์ (จริงๆ น่าจะเรียน comp sci ไปซะ แต่ตอนนั้น มธ เพิ่งเปิดที่เดียว) ส่วนฮาร์ดแวร์นั้น ทำได้แค่พอผ่าน จบมาก็ตรงดิ่งเข้า software house แล้วก็ทำงาน coding อย่างเมามัน เรียกได้ว่า เป็นชีวิตที่ดำเนินแบบไม่ต้องคิดมากเลย รู้สึกเหมือนว่า สามารถใช้ความสามารถถึงขีดสุดเท่าที่ต้องการ จะบอกว่ามีกลีบกุหลาบโรยไว้ก็ไม่ผิดนัก

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

นั่นแหละ ถึงได้มาอยู่เนคเทค แล็บที่สมัครเข้าไปนั้น เป็นแล็บ NLP ถึงแม้ NLP จะเป็นวิชาที่ไม่ถนัด แต่ก็คิดว่าฉันทะใน AI กับ software engineering ของตัวเองน่าจะช่วยได้ แต่ก็นั่นแหละ เป็นการเริ่มชีวิตแบบ “อดเปรี้ยวไว้กินหวาน” ของผมละ คืออยากจะทำงานวิจัยกับเขาบ้าง แต่ก็ไม่มีความถนัดในเรื่องที่เขาต้องการ ส่วนความถนัดที่มี ก็ไม่ค่อยเป็นที่ต้องการ :-P ก็เลยรับลุยแต่งาน develop จนจับพลัดจับผลูได้มาทำระบบภาษาไทย ก็ตีวงไว้กับตัวเอง ว่าจะทำเฉพาะในขอบเขตที่ deterministic อย่างเรื่อง encoding, sorting, input/output อะไรพวกนี้เท่านั้น ส่วนถ้าเข้าสู่ NLP จะเว้นไว้ให้คนที่ถนัดทำ

ที่พยายามเร่งระบบภาษาไทยส่วนที่เหลือให้ถึงจุดที่พอใจ ก็เพื่อจะได้กลับไปรื้อฟื้นเรื่องที่ตัวเองฝันไว้ โดยไม่รู้สึกติดค้าง และที่ตีวงไว้ก็เพื่อกันไม่ให้ตัวเองถลำไปมากเกินไป แต่ปัญหาที่ยังคงอยู่คือ จะทำสำเร็จก็ต้องใช้เงิน ทั้งเลี้ยงตัวเองและช่วยค่าใช้จ่ายของที่บ้าน แต่ทำระบบพื้นฐานอย่างนี้ มันเลี้ยงตัวไม่ได้ หานายทุนลำบาก ก็ต้องรับงานชนิดอื่นประกอบ ทั้งระบบฐานข้อมูลและระบบเครือข่าย ความจริงแล้ว การเรียนรู้เรื่องใหม่ๆ โดยเฉพาะเรื่องที่เป็นจุดอ่อนของตัวเอง ก็เป็นเรื่องดี ที่ทำให้เรารู้รอบมากขึ้น แต่ในอีกทางหนึ่ง มันก็ทำให้เหนื่อยเพิ่มขึ้น และบรรลุเป้าหมายช้าลง มันเหมือนกับ อดเปรี้ยวไว้กินหวาน แต่จะกินเปรี้ยว ก็ต้องอดขมก่อนอีก เป็นทอดๆ ไป ก็ไม่รู้นะ ที่พร่ำๆ อยู่นี่ ไม่ใช่ว่าเราขี้เกียจเรียนรู้ เพียงแต่กำลังรู้สึกว่ากำลังห่างจากเส้นทางเดิมไปเรื่อยๆ มากกว่า และชีวิตคนเราก็สั้น พอถึงจุดหนึ่ง ก็จะต้องมีความเป็น “มืออาชีพ” ไม่ใช่จะทำงานทีก็มาเริ่มอ่าน ก ข ก กา (กับเรื่องใหม่) ตลอด

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

รำพันจบ ทำงานต่อ.. :-P

24 กรกฎาคม 2547

Load Balancing in Real Life

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

  • งานเอกสาร เรียกขอข้อมูลเพิ่มเติม ตามระเบียบจุกจิกของหน่วยงานใหญ่ เลยรีบปั่นให้
  • เซิร์ฟเวอร์ใช้งานได้แล้ว ทั้งเรื่อง load balancing, DNS cache และ web proxy แต่ยังต้องจับตาดูกรณีที่ link down ซึ่งยัง recover ลำบากอยู่ รวมทั้ง name service สำหรับเครื่องภายในที่ยังไม่พร้อม
  • วันศุกร์ออกไปธุระกับแม่แต่เช้า กลับมากว่าจะทำอะไรเสร็จก็บ่าย ว่าจะเข้าไปดูเซิร์ฟเวอร์ เลยไม่ได้เข้าไป ใช้ remote เอาแทน
  • ความจริงเช้านี้แม่นัดออกไปวิ่งมาราธอนเป็นเพื่อน แต่ตื่นไม่ทัน และอยากมาอ่านเรื่อง DNS ให้เสร็จก่อน เลยเบี้ยว (คุยกับแม่ไว้ก่อนแล้ว ว่าอาจจะไปไม่ได้ ไม่ต้องรอ)
  • มีงานอีกชิ้นหนึ่ง ติดต่อเข้ามา เลยบอกเขารอไปก่อน

22 กรกฎาคม 2547

Reading: Advanced Routing

สรุปเอกสารที่อ่านมา เพื่อจะเซ็ต routing policy

  • Guide to IP Layer Network Administration with Linux (ฉบับ HTML) ปูพื้นเกี่ยวกับ IP networking ตั้งแต่พื้นฐานไปจนถึงขั้นสูง
  • Linux Advanced Routing & Traffic Control (ฉบับ HTML) ว่าด้วยเรื่อง advanced routing โดยเฉพาะ ที่ได้ใช้จะอยู่ที่บทที่ 3-4 ส่วนที่เหลือนั้นเป็นขั้นสูง
  • Kernel Packet Traveling Diagram ผังสรุปขั้นตอนการจัดการ network packet ใน netfilter ของเคอร์เนล เพื่อความเข้าใจพื้นฐานสำหรับการใช้ iptables
  • Iptables Tutorial 1.1.19 เกี่ยวกับการใช้ iptables ฉบับนี้ยังไม่ได้อ่านละเอียด แต่คิดว่าต้องกลับมาอ่าน ถ้าต้องเซ็ตอะไรที่ละเอียดขึ้น
  • Static, Alternative Routes, Dead Gateway Detection, NAT เป็น kernel patch ของ Julian Anastasov ที่
    • แก้ให้ netfilter maintain route entry ที่เป็น "proto static" ด้วย โดยไม่ต้องลบ cache ถ้า link down เพื่อที่จะสามารถ route ต่อได้เมื่อ link กลับมาใช้ได้อีก
    • แก้ให้ route table สนับสนุนการ route ผ่าน gateway หลายทาง โดยเพิ่มการ index route table จากใช้แค่ source กับ destination address มาเพิ่ม index ด้วย device และ gateway อีก ทำให้ route ที่ผ่าน gateway ที่ต่างกัน กลายเป็นคนละ entry และทำให้เปลี่ยนเส้นทางการ route ได้
    มี Nano-Howto อธิบายการทำ load balancing ด้วย kernel patch นี้ รวมทั้งสามารถ detect link down และ resume ได้ง่ายๆ ด้วยการ ping เท่านั้น โดยในระหว่างที่ link down ก็จะสามารถ route ผ่านทางอื่นได้ตามปกติ (อะไรจะเพอร์เฟกต์ขนาดนั้น)

ปล. วันนี้เพิ่งได้เห็น blog ตัวเองใน IE แหวะ ดูไม่ได้เลย มัน render CSS เพี้ยนๆ นะ transparent png ก็ไม่ใส แถม Unicode glyph ก็หายไปหลายตัว เดี๋ยวหาไอคอน "Take back the web" ของ Firefox มาแปะดีกว่า :-P

Get Firefox

20 กรกฎาคม 2547

Thep learns to route

งานเซ็ตเซิร์ฟเวอร์นี้ไม่หมูเท่าไหร่ พอดีเคยเซ็ตเน็ตเล็กๆ ในบ้านโดยทำ IP masquerade ผ่าน wireless กับ ppp แต่ยังไม่ได้เซ็ต service อื่นต่อ (เช่น DNS cache, web proxy) ก็พอดีให้น้องยืมเครื่องไปใช้ นี่ยกกลับมาคืนแล้ว (เพราะแกพยายามลงวินโดวส์แล้วไม่สำเร็จ ต้องกลับมาหาลินุกซ์ เอิ๊ก เพิ่งเคยเจอนี่แหละ ☺) แต่จนแล้วจนรอด ก็ยังไม่ได้เซ็ตต่อ

คราวนี้ เพื่อทดสอบเซิร์ฟเวอร์ เลยได้โอกาสเอาเครื่องทั้งหลายมา upgrade debian แล้วต่อเป็นลูกข่ายดู.. อัพสามเครื่องเป็นเคอร์เนล 2.6.7 + netfilter ให้หมด คอนฟิกไดรเวอร์ต่างๆ ใหม่ ปรากฏว่า โน้ตบุกที่เป็น i830 สามารถ resume จาก swsusp ได้แล้วแฮะ ส่วนอุปกรณ์ D-Link DWL-120 version E1 USB wireless นั้น Atmel driver ใน kernel 2.6.7 ยังไม่ support (ในนั้นมีแต่ PCI กับ PCMCIA) ต้องไปเอา at76c503a มาคอมไพล์ (สำหรับเคอร์เนล 2.6 ยังต้องใช้โค้ดใน CVS ส่วน atmelwlandriver ที่ sourceforge นั้น ดูไม่ค่อยน่าใช้ เพราะต้อง patch kernel เพิ่ม เลยข้ามไป) ส่วนอีกสองเครื่องที่เหลือ เป็น Prism 2 ทั้งคู่ ขี้เกียจคอมไพล์ hostap ใหม่ เลยเปลี่ยนมาใช้ orinoco ใน kernel ซะ เห็น MrChoke เคยบอกว่าใช้ได้เหมือนกัน ปรากฏว่าเซ็ต ad-hoc mode ได้ด้วย แต่ไม่ค่อยราบรื่นเท่า hostap แถมไม่มีข้อมูลความแรงของสัญญาณ แต่ยังนับว่าดีกว่าของ linux-wlan-ng ที่เคยใช้ อันนั้นยังหาวิธีเซ็ต ad-hoc mode ไม่ได้เลย

ระหว่างรอคอมไพล์ทั้งสามเครื่อง ก็มานั่งอ่านเรื่อง advanced routing ต่อ เซิร์ฟเวอร์ที่เซ็ตไว้นั้น ทำเรื่องพื้นฐานเสร็จแล้วตั้งแต่วันอาทิตย์ debian ทำ IP masquerade ง่ายมากๆ แค่คอมไพล์เคอร์เนลให้สนับสนุน netfilter แล้วก็ apt-get install ipmasq จากนั้น พอสั่ง /usr/sbin/ipmasq มันจะตรวจสอบแยกแยะ internal/external interface ให้ แล้วก็ทำ iptables rule ที่เป็น firewall + IP masquerade ให้เลย ในเครื่องเก่าที่เคยเซ็ตนั้น ยังใช้วิธีเขียน iptables สั่งใน rc.local อยู่เลย ตอนนี้ใช้วิธีนี้ดีกว่า ☺ ส่วน DHCP ก็แจก IP ได้ไม่ยาก (เคยเซ็ตแล้วในเครื่องเก่า)

คราวนี้ ที่กินเวลามากๆ ก็คงเป็นโจทย์เรื่องการมี 2 ISP แล้วต้องทำ routing policy เอาล่ะสิ.. อันนี้เริ่มรู้สึกว่าเกินความรู้เดิมจริงๆ เลยต้องนั่งอ่านจนตาแฉะ ไว้ทำเสร็จแล้วค่อยมาสรุปลง blog อีกที ว่าไปอ่านอะไรมามั่ง ตอนนี้พยายามใช้ iproute2 แหละ แต่ยังสั่งอะไรไม่ค่อยออก พอดีตอนเรียนดัน drop วิชา network ไปซะนี่ ^_^'

งานนี้ ถ้าสำเร็จต้องให้เครดิตเด่นสิน ที่ทำให้ผมได้ความรู้เพิ่มขนาดนี้ ☺

17 กรกฎาคม 2547

สะโหลสะเหล

(^ คำนี้ไม่มีในพจนานุกรม ฉบับราชบัณฑิตยสถาน พ.ศ. ๒๕๔๒ แฮะ มีแต่ สะลึมสะลือ)

เขียน blog รวบสามวันเลยคราวนี้.. เป็นช่วงที่โทรมมากๆ เมื่อหลายเรื่องประดังเข้ามาพร้อมกัน ทั้งเรื่องงานและเรื่องส่วนตัว

  • วันพฤหัส-ศุกร์ เด่นมาหา พร้อมกับเอางานมาให้ งานมา เงินมา ก็เป็นเรื่องดี ติดแต่ว่า มันเป็นงานเซ็ตเซิร์ฟเวอร์และเครือข่าย ซึ่งไม่ค่อยถนัด ความจริงไม่อยากฝืนรับ แต่เจ้าตัวยืนยันว่าจะช่วย remote ให้ ถึงได้ยอม..
  • ไปถึงไซต์ตอนบ่ายๆ พยายามเซ็ตให้เสร็จก่อนเขาจะกลับ เลยนั่งทำเสียดึก ติดปัญหานิดหน่อยกับ RAID harddisk ซึ่งแผ่น debian install CD ที่ทำเองมัน detect ไม่เจอ โชคดีที่เด่นลง slackware ไว้แล้ว (ด้วยกำลังภายในลับเฉพาะ) เลยจัดการ debootstrap ทำ debian chroot จาก slackware ใน partition เดียวกัน (harddisk เดิมแบ่งไว้ partition เดียว กับ swap อีกหนึ่ง เต็มหมดแล้ว เลยแบ่งใหม่ไม่ได้) แต่ด้วยความที่รีบ เลยมีการลัดขั้นตอนอะไรนิดหน่อย ปรากฏว่า ระบบที่ได้รวนอย่างหนัก คอมไพล์เคอร์เนลช้ามากๆ เลยปล่อยทิ้งไว้ แล้วออกไปกินข้าวรอบดึก
  • เช้าวันศุกร์งัวเงียมาทำต่อ รู้สึกว่าสมองไม่แล่นเท่าไร ด้วยความช่วยเหลือของ grub boot disk ที่ทำไว้ใช้ฉุกเฉิน ทำให้เลือกเคอร์เนลบูตได้ตามใจชอบ แต่ปัญหาคือ debian ใหม่ดัน init เจ๊ง คือมีข้อความ ‘INIT: Id "x" respawn too fast’ มุ่งประเด็นไปที่ /dev/tty* แต่ทำจนได้เวลาจะกลับกันแล้ว ก็ยังไม่ได้ เลยขอยกเครื่องมาเซ็ตที่บ้าน
  • กลับถึงบ้าน สมองยังตื้ออยู่ เลยพยายามงีบเอาแรงก่อน ตกตอนค่ำยกเครื่องมาต่อแล้วปล้ำใหม่ คราวนี้เริ่มตั้งสติ debootstrap ใหม่ ทำทีละขั้นตั้งแต่ base system ก่อน (คราวก่อนลงทั้ง base ทั้ง app ที่จะใช้พร้อมกันหมด เลย trace ยาก ว่าพลาดตรงไหน) ประมาณตีหนึ่ง ลง base เสร็จพร้อมเคอร์เนลที่คอมไพล์เสร็จ ตาจะปิดแล้ว เลยปิดเครื่องก่อน แล้วคลานไปนอน
  • เช้าตื่นมาทำต่อ คราวนี้ราบรื่นทุกอย่าง เลยได้ข้อคิดว่า จะทำงานนั้น อย่าห่วงเรื่องเวลาให้มากนัก ยิ่งกลัวเสร็จไม่ทันเท่าไร มันก็จะยิ่งไม่เสร็จ ดูอย่างคราวนี้ เรื่องง่ายๆ อย่างติดตั้งลินุกซ์ ถึงกับกินเวลาข้ามวัน
  • สายๆ แม่มาตามให้ไปงานตลาดหลักทรัพย์สัญจรเป็นเพื่อน ตามที่เคยตกลงกันไว้ (สงสัยเห็นเราหมกมุ่นกับ free software มากเกินไป เลยกะจะพาไปล้างสมอง) เลยสะบัดหัวตื้อๆ ลงไปอาบน้ำ เดินสะโหลสะเหลออกไป กะว่าได้ base system แล้ว เดี๋ยวค่อยกลับมา config service ต่อ.. (จะเริ่มเข้าสู่ส่วนที่ไม่ถนัดละ)
  • มีเรื่องส่วนตัวอื่นๆ รอจ่อคิวอาทิตย์หน้า T_T

14 กรกฎาคม 2547

วันมามาก

จัดให้ตาม คำขอ ของพี่จอย :-P

  • วันนี้มีเถียงกันเล็กน้อยในวันกำหนดส่ง เพราะคนนึงบอกให้แก้ อีกคนบอกว่าแก้ไปแล้ว เอาไปเอามา เป็นเพราะ information loss ระหว่าง OO.o กับ Word เอาน่ะ ยังดีที่รู้สาเหตุ
  • เจอ Mathieu's Gnome Papers paper เกี่ยวกับ GNOME architecture แยกเป็นเรื่องๆ เลยเอามาแนะนำ ตัวอย่างเช่น
  • เก็บกวาด homepage อีกนิด เขียน HTML สุมๆ กันมานาน ชักปนกันหลายสไตล์ เลยนั่งรื้อให้เป็น XHTML ไปหลายหน้า แล้วก็เริ่มใช้ utf-8 ด้วย
  • แปล revision history ของ HtN แล้ว (จนได้)

Update: คำว่า “อาทิเช่น” นั้น ใช้ผิดความหมาย อ่าน blog ตัวเองอีกรอบแล้วทนไม่ได้ ต้องเปลี่ยนเป็น “ตัวอย่างเช่น”

13 กรกฎาคม 2547

วันธรรมดา

  • Matthias Clasen มาเพิ่ม priority ให้กับ GNOME Bug #119891 (การลบด้วย backspace) เป็น High แล้ว เลยไปทำ patch ที่ GNOME Bug #141993 (GtkSourceView undo manager) ให้เป็น attachment แล้ว obsolete patch เก่า พร้อมทั้งเพิ่ม dependency รอไว้ด้วย (ให้เป็นที่สังเกตก่อนเกิด bug ที่เป็นผลข้างเคียง)
  • งานเอกสารยังไม่จบ มีข้อมูลบางส่วน lost ไประหว่าง convert จาก OO.o เป็น .doc เลยต้องอธิบายไป ให้คนมี Word แก้ให้ (เพราะไม่งั้นก็ lost อยู่ดี)
  • จัด homepage อีกนิดนึง เพิ่มหัวข้องานแปล

12 กรกฎาคม 2547

สิ้นสุดกันที

กลั้นใจตรวจเอกสารขั้นสุดท้ายจนเสร็จ ตรวจเสร็จแล้ว เกิดแรงบันดาลใจอย่างแรงกล้า ที่จะแปลข้อเขียน We Can Put an End to Word Attachments (เราหยุดการแนบไฟล์เวิร์ดได้) รวดเดียวจบ ไว้เดี๋ยวตรวจคำแปลอีกรอบค่อยส่งให้ FSF ถือเสียว่า ได้ปลงอาบัติแล้ว ☺

10 กรกฎาคม 2547

Eat that Doc!

  • เมื่อวานแปลบรรณานุกรมและกิตติกรรมประกาศของ HtN (charset = TIS-620) เสร็จแล้ว ก็คิดว่าน่าจะถือได้ว่าแปลเสร็จแล้ว เหลือตรง Revision History กำลังคิดอยู่ว่าจะแปลดีหรือตัดทิ้งดี (แต่คิดว่าแปลดีกว่า) ไว้ว่างๆ ☺
  • เมื่อวานนี้อีกเช่นกัน งานเอกสารที่ส่งไป พิสูจน์อักษรเสร็จแล้ว ส่งมาให้ตรวจอีกรอบ ที่อารมณ์เสียคือ ส่งไปเป็น OO.o กลับมาเป็น .doc โดยที่ format เสียหายไปเยอะเลย ☹ แถมยังบอกว่า จะใช้ .doc นี่แหละ เป็น format ทางการ ไม่รู้จะว่ายังไง แล้วนี่ตูนั่งจัดเอกสารแทบตายทำไมฟะเนี่ย นั่งตรวจไปโมโหไป
  • วันนี้จะตรวจต่อ ก็ยังไม่หายโมโหอีก เลยไปทำอย่างอื่นก่อน เขาว่าศิลปะช่วยทำให้อารมณ์เย็นลงได้ เลยนั่งวาดไอคอนด้วย GIMP ดู แต่เล่นเทคนิคยากๆ ไม่ค่อยเป็น เลยจัดแจงพลิกตำรา Grokking the GIMP อ่านไปทำไป เออ.. พอถูไถได้นิดหน่อย แต่ไม่อยากเสียเวลามาก พอเริ่มอารมณ์เย็นลงได้ ก็ค่อยไปตรวจเอกสารต่อ ก็ผ่านไปได้เยอะอยู่ แต่ยังไม่เสร็จ
  • พอดีใครบางคนถามเรื่องการ sort ภาษาไทยใน PostgreSQL เลยเขียน สรุป เอาไว้
  • GLib 2.4.4 และ GTK+ 2.4.4 ออกแล้ว ในรุ่นนี้แก้ bug ที่เกี่ยวกับการเลื่อนเคอร์เซอร์ใน GtkEntry ไปแล้ว แต่เรื่องการลบอักขระด้วย backspace นั้น ถูกเลื่อนออกไปที่ 2.4.5 ส่วน Pango 1.4.1 นั้น ยังไม่มีวี่แวว

08 กรกฎาคม 2547

กับคำว่า Hacker

และแล้วก็อดเขียนเรื่องนี้ไม่ได้ กับคำว่า “แฮ็กเกอร์” (hacker) ที่ใช้ในความหมายที่ไม่เหมือนกัน บังเอิญว่าพักนี้เจอคำนี้บ่อย ทั้งจากงานแปล บทความของ ESR ว่าด้วยวัฒนธรรมแฮ็กเกอร์ ทั้งจากกรณี LTN ถูกแจ้งว่า “ถูกแฮ็ก” หรือกรณีคมชัดลึกถูก “แฮ็กเกอร์มือดี” เจาะขายทอดตลาด แล้ววันนี้ รายการ IT Genius ก็ถามเรื่องเกี่ยวกับ security พอดีได้ฟังตอนท้ายๆ ได้ยินไม่ถนัดว่าเรียกนักเจาะระบบว่า “แฮ็กเกอร์” หรือ “แคร็กเกอร์” ดีที่ยังมีคำถามสุดท้าย ถามว่า ผู้ที่เจาะทำลายระบบของผู้อื่นโดยสร้างความเสียหาย เรียกว่าอะไร ระหว่าง cracker กับ hacker แล้วก็เฉลยว่า cracker หึๆ ไม่งั้นคงจะคาใจอยู่

ผมเจอปัญหาเรื่องคำนี้กับตัวเองเป็นครั้งแรก ก็ตอนที่ออกรายการวิทยุ อสมท. ครั้งแรกเมื่อหลายปีก่อน เรื่องเกี่ยวกับลินุกซ์ โดยพิธีกรมอบให้ผมเล่าปูพื้น เกี่ยวกับประวัติของลินุกซ์และโอเพนซอร์ส ปรากฏว่า ผมใช้คำว่า “แฮ็กเกอร์” ด้วยความเคยชิน ว่าเป็นกลุ่มที่ให้กำเนิดแนวคิดโอเพนซอร์ส และซอฟต์แวร์เสรี ด้วยการแลกเปลี่ยนซอร์สกัน แล้วพัฒนาให้ดีขึ้น ปรากฏว่า พอสรุปลงเว็บ เขาบอกว่า ลินุกซ์เกิดมาจากนักเจาะทำลายระบบ ปลดล็อกซอฟต์แวร์ เล่นเอาเสียหายหลายแสน ภายในวันนั้น ผมเมลไปทักท้วงกับทางผู้จัด ว่าตีความหมายผมผิด ขอให้ช่วยแก้ไข แต่ก็หายเข้ากลีบเมฆ หลังจากครั้งนั้น จึงรู้สึกระมัดระวังตัวเป็นพิเศษ ถ้าจะต้องพูดอะไรกับสื่อมวลชน เป็นคนกลัวสื่ออยู่แล้ว ยิ่งกลัวเข้าไปหนัก กลัวคุยกันไม่รู้เรื่อง ☹

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

วันนี้แปลเชิงอรรถของ HtN (charset = TIS-620) เสร็จแล้ว ยาวใช่เล่น (เมื่อวานสมองเดี้ยง หลังจาก chat ดึกเกินไป อู้ไปหนึ่งวัน) เหลือบรรณานุกรมกับกิติกรรมประกาศ คิดว่าน่าจะเสร็จได้พรุ่งนี้

07 กรกฎาคม 2547

Future of rendering in GNOME

เมื่อ X architecture เปลี่ยน ก็มาดูทางด้าน desktop บ้าง ในงาน GUADEC 2004, Owen Taylor ได้เสนอหัวข้อ The future of rendering in GNOME เนื้อหาหลักคือการรวม rendering API ทั้งหลายใน GNOME ให้เป็นอันหนึ่งอันเดียวกัน โดยอาศัยความสามารถของ Cairo เข้าช่วย สรุปมาสั้นๆ ดังนี้

  • rendering API ปัจจุบันของ GNOME
    • GDK : Xlib wrapper โดย GTK+ จะพยายามใช้ RENDER extension ถ้ามีให้
    • GNOME Canvas : มีสอง mode คือ GDK (non-anti-aliased) และ libart (anti-aliased)
    • gnome-print : สำหรับงานพิมพ์; interface คล้าย postscript + มี alpha channel
  • Update: ลืมเน้นตรงนี้ว่า ปัญหาคือ API หลากหลายเกินไป → ควร unify API (ซึ่งข้างล่างนี้คือแนวทางการ unify)
  • Cairo สร้าง interface หนึ่งเดียว สำหรับทั้งวาดบนจอและออกเครื่องพิมพ์ รูปแบบคล้าย SVG หรือ PDF-1.4 พร้อมมี backend หลากหลาย
  • GTK+ integration
    • GDK : ไม่ wrap Cairo เพราะ Cairo เป็น neutral API อยู่แล้ว → GTK+ app เรียก Cairo โดยตรง โดยมีฟังก์ชัน gdk_drawable_update_cairo() เชื่อม cairo_t กับ GdkDrawable
    • GDK : เพิ่ม RGBA colormap เพื่อสนับสนุนการวาดแบบมี alpha channel (ที่ผ่านมา GTK+ ทำเรื่อง alpha channel เพิ่มเอง) และ API อีกตัวสำหรับสนับสนุนการวาด widget ผ่าน COMPOSITE extension
    • Pango : GTK+ จะไม่ใช้ Cairo API สำหรับวาด text เพราะ Pango สมบูรณ์กว่า แต่จะเพิ่มการเชื่อมกับ Cairo ใน Pango API เอา
  • Theme : ต้องยืดหยุ่นต่อการวาดแบบ native ใน platform ต่างๆ แต่ spec ต้อง declarative ที่สุดเท่าที่จะทำได้ เพื่อลดความจำเป็นของการเขียน theme engine (รายละเอียดมีพูดถึงต่างหากในเอกสาร อีกฉบับ)
  • Printing : ทำใน GTK+ โดยอาศัย Cairo ช่วย แต่ที่ต้องทำเพิ่มคือ interface สำหรับเลือกเครื่องพิมพ์ ซึ่งโค้ดมีแล้วใน libgnomeprint และ libgnomeprintui (แต่ต้องทำให้สนับสนุน Cairo backend สำหรับ native platform ได้ด้วย) ซึ่ง app ก็จะ get GtkPrintContext มาใช้วาดด้วย Cairo ได้

เคลียร์ครับ ว่า GNOME ในอนาคตจะใช้ Cairo แน่ๆ และการพิมพ์ก็จะเหลือแค่ที่ GTK+ ที่เดียว ส่วน KDE กับ GNUstep จะเป็นยังไงนั้น ไม่บังอาจเขียน เพราะไม่รู้เรื่องเลย ☺

06 กรกฎาคม 2547

X (Re)Architecture

อ่าน paper เกี่ยวกับ X เสียหน่อย ช่วงนี้ หลังจาก XFree86 relicensing ซึ่งเป็นฟางเส้นสุดท้าย ทำให้ X developer กรูกันไปยึดหัวหาด X.org แล้วก็ active กันใหญ่ มี desktop developer conference กันถี่ยิบ อะไรๆ คงมีการเปลี่ยนแปลงเร็วๆ นี้

ปรากฏว่า ไปเจอ paper ของ Jim Gettys กับ Keith Packard ร่วมกันเขียน The (Re)Architecture of the X Window System (ฉบับ HTML) สรุปความเปลี่ยนแปลงที่เกิดกับ X11 ทั้งหมดที่ผ่านมา และที่จะมีต่อไปในอนาคต อ่านฉบับนี้แล้วเหมือนมีลายแทงให้ไปค้นต่อ ว่างั้นเหอะ

สรุปคร่าวๆ ว่าเริ่มจากเล่าเรื่องการ render bitmap แบบเดิมนั้นไม่เพียงพอ จึงเกิด X Rendering Extension เพื่อการ compose รูปภาพที่เนียนยิ่งขึ้น ซึ่งทำให้วาด text แบบ anti-alias ได้ด้วย

จากนั้น เป็นเรื่องของ client-side font ว่ามาจากความต้องการเรื่องการทำ WYSIWYG บวกกับ การวิเคราะห์ network performance ระบุว่า การย้ายฟอนต์มาที่ฝั่ง client ช่วยลด round trip ลงได้ เลยเกิด Xft1 เป็น implementation แรก จัดการวาดฟอนต์ที่ฝั่ง client โดยอาศัย X Rendering extension และ FreeType library แต่ปัญหาคือ require extension นี้ที่ฝั่ง server ซึ่ง X server มีหลากหลาย เพิ่มไม่หมด ต่อมาจึงมี Xft2 ที่ไม่ require X Rendering และยังได้แยกส่วน font configuration ออกมาต่างหาก เป็น Fontconfig library

แต่ X Rendering ก็ยังขาดความสามารถหลายอย่างในการวาด graphics เช่น spline, stroke ต่างๆ จึงเกิด Xr library ซึ่งต่อมาเปลี่ยนชื่อเป็น Cairo โดยอ้างอิงโมเดลการวาดแบบ PDF 1.4 ซึ่งตรงนี้น้องฝ้ายบอกว่าจะกลายเป็นอนาคตของ desktop ผมเองเพิ่งนั่งอ่าน presentation เรื่อง Cairo ไปนิดหน่อยเมื่อเดือนก่อน ก็เห็นด้วยแฮะ

นอกจากนี้ยังมีส่วนอื่นๆ อีก ถ้าเขียนหมดเกรง blog จะยาวเกินไป ถ้าเอาแต่ keyword ก็ off-screen window composing (ช่วยให้ทำ translucent window และลูกเล่นอื่นๆ ได้), X บน OpenGL ใช้ 3D เป็นหลัก, การแบ่งหน้าที่ชัดเจนในการคุมฮาร์ดแวร์ ระหว่าง X server, kernel และ extension ต่างๆ ซึ่งอาจช่วยลด latency ได้ด้วย, ทำ Xlib replacement ที่เบาลง ได้แก่ XCB/XCL ฯลฯ

blog ไว้เฉยๆ ตรงส่วนตั้งแต่ Cairo ลงมา อย่าเพิ่งถาม เพราะยังไม่ได้อ่าน :-P

05 กรกฎาคม 2547

Debugging my Eyes

พักนี้รู้สึกตึงๆ ในกระบอกตาขวาหลายวันแล้วแฮะ คาดว่าเป็นเพราะใช้สายตาเพ่งจอมากเกินไป ทำงานได้สักพักก็เวียนหัว นี่ขนาดพยายามพักสายตา + คลึงนวดกระบอกตาด้วยอุ้งมือแล้วนะ โปรแกรมเสีย debug ได้ แต่ถ้าร่างกายเสียเนี่ย debug ยาก ต้องสร้างสภาวะเหมาะสมต่อการฟื้นสภาพเอง (เอ.. คุ้นๆ แฮะ เขาว่าโปรแกรมที่ใช้พวก neural network ก็ debug ลำบากทำนองนี้เหมือนกันนิ)

  • หลังจากเพิ่ม priority และกำหนด target milestone เมื่อคืนนี้ Matthias Clasen ก็ได้ commit patch และ resolve GNOME Bug #141728 (การเลื่อนเคอร์เซอร์ท้าย GtkEntry) ให้แล้ว ดูจาก ChangeLog ก็ commit ไปเมื่อวันเสาร์ (3 ก.ค.)
  • แปล HtN ในส่วนเชิงอรรถไปได้นิดหน่อย เพิ่งได้ครึ่งเดียว (ยังไม่ได้ commit)
  • คอมไพล์เคอร์เนล 2.6.7 (เสียที)

04 กรกฎาคม 2547

เมืองแถน

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

(ค้นเว็บแล้ว เจอกระทู้ ต้นกำเนิดอาณาจักรล้านช้าง มีแผนที่ประกอบด้วย)

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

หนองแส คือหนองน้ำอันกว้างใหญ่ อยู่ทางตะวันออกของแม่น้ำโขง ในเขตมณฑลยูนนานของจีนในปัจจุบัน ในสมัยโบราณเรียกว่า “หนองแส” หรือ “หนองกระแสแสนย่าน” จีนเรียกว่า “ตาลีฟู”

เมื่อเมืองแถนแรก คือเพงายถูกจีนยึดครองนั้น คนไทส่วนมาก (ในพงศาวดารลาว จะใช้คำว่า “คนลาว” ไม่ใช่ “คนไท”) ได้อพยพมาตั้งถิ่นฐานที่หนองแสนี้ พอดีแผ่นดินจีนเกิดจลาจลสามก๊ก คนไทจึงมีโอกาสตั้งตัว โดยสร้างเมืองใหญ่ๆ ถึง ๖ เมือง คือ ซีล่ง ม่งเส ล่างกง มุ่งซุย เอี้ยแซ และเท่งเซี้ยง โดยที่ม่งเส (หนองแส) เป็นเมืองใหญ่และเป็นเมืองหลวงของประเทศ ชื่อของอาณาจักรใหม่นี้ จึงชื่อว่า อาณาจักรหนองแส หรือที่ฝ่ายจีนเรียกว่า “น่านเจ้า” แต่ต่อมาก็ถูกขงเบ้งรุกราน จนต้องตกเป็นเมืองขึ้นของจีน ก่อนจะมากู้อิสรภาพได้อีกครั้งใน พ.ศ. ๙๓๘

จากนั้น น่านเจ้าปกครองตนเองมาจนถึง พ.ศ. ๑๑๙๒ จึงมีกษัตริย์พระองค์หนึ่ง ทรงพระนามว่า “สินุโล” ได้รวบรวมการปกครองเมืองทั้งหกเข้าด้วยกัน ทำให้น่านเจ้าเป็นปึกแผ่น และเจริญขึ้นมาก พระเจ้าสินุโลได้ใช้นโยบายเจริญสัมพันธไมตรีกับจีน เพื่อป้องกันการรุกราน ต่อจากนั้นก็มีกษัตริย์ปกครองต่อมาอีก ๔ พระองค์ ก็มาถึงขุนบรมราชาธิราช (พีล่อโก๊ะ) ทรงเห็นว่า จีนมีกำลังทหารเข้มแข็ง แม้จะผูกไมตรีก็ยังไม่น่าไว้ใจ จึงเกณฑ์ไพร่พลลงมาสร้างเมืองใหม่ ที่ทุ่งนาน้อยอ้อยหมู ซึ่งก็คือ “เมืองแถน” แห่งใหม่ เรียกอีกชื่อว่าเมือง “กาหลง” นั่นเอง

ที่ตั้งของเมือง “กาหลง” นี้ มหาสิลาบอกว่า ได้แก่เมืองเชียงรุ้งในปัจจุบัน แต่พงศาวดารไทยของพระบริรักษ์เทพธานีกล่าวว่า เมืองกาหลงนั้นตั้งอยู่ที่ตำบลฝาย อำเภอเวียงป่าเป้า จังหวัดเชียงราย

ขุนบรม (พีล่อโก๊ะ) ได้ประทับที่เมืองกาหลงอยู่ ๘ ปี โดยในระหว่างนี้ได้ตีหัวเมืองจีนได้หลายเมือง และสั่งให้พวกม่านสีสร้างเมือง “ต้าหอ” แล้วเสด็จขึ้นไปประทับ

ขุนบรมเป็นกษัตริย์นักรบ ได้ขยายอาณาเขตน่านเจ้าไปมาก หลายเมืองมาอ่อนน้อม โดยได้สมัญญาว่า “ยูนนานอ๋อง” นโยบายขยายอาณาเขตอย่างหนึ่งคือ การส่งโอรส ๗ องค์ แยกย้ายไปปกครองเมืองทางใต้และตะวันออกเฉียงใต้ คือ (ตามตำนานขุนบรม)

  • ขุนลอ ครองเมืองชวา (เชียงทอง หลวงพระบาง ล้านช้าง)
  • ผาล้าน ครองเมืองต้าหอ หรือหอแต (สิบสองปันนา)
  • ท้าวจูสง ครองเมืองจูฬนี คือเมืองญวน (หัวพันทั้งห้าทั้งหก)
  • ท้าวคำผง ครองเมืองโยนก คือล้านนา
  • ท้าวอิน ครองเมืองลานเพีย คืออยุธยา
  • ท้าวกม ครองเมืองหล้าคำม่วน (มอญ)
  • ท้าวเจือง ครองเมืองปะกันเชียงขวาง

ต่อมา ขุนบรมก็ย้ายมาประทับที่หนองแสตามเดิม ให้ผาล้านครองเมืองต้าหอแทน เมื่อขุนบรมสวรรคต ขุนลอ (โก๊ะล่อฝง) ก็เสด็จมาหนองแส ปกครองน่านเจ้าต่อ ก่อนจะย้ายมาเมืองกาหลง (เมืองแถน) โดยมอบราชสมบัติให้ อีเมาชีน โอรสท้าวผาล้าน ครองหนองแสต่อ

พอได้ไปอ่านหนังสือ “ชนชาติไทในนิทาน” ของ อ. ศิราพร ณ ถลาง ก็พบ “เมืองแถน” อีกอัน คือ เดียนเบียนฟู โดย “พงศาวดารเมืองแถง” ของไทดำ มีความสัมพันธ์กับ “เมืองแถน” ในพงศาวดารล้านช้างด้วย ในพงศาวดารล้านช้าง มีตำนานขุนบรมบอกว่า แถนจี้น้ำเต้าปุง ปรากฏว่ามีคนออกมาจากน้ำเต้า รุ่นแรกนั้นใช้เหล็กซีเจาะ ซึ่งได้รูเล็ก ผู้คนต้องเบียดเสียดกันออกมา ผิวกายติดเขม่าควันดำทำให้ผิวคล้ำ คือพวกข่า ขมุ รุ่นที่สองใช้สิ่วเจาะ ผิวเลยขาวกว่า เป็นพวกลาว ไทดำ ไทขาว ไทลื้อ จากนั้น แถนส่งขุนบรมมาปกครอง ขุนบรมมีลูก ๗ คน ไปสร้างบ้านแปลงเมือง ดังที่กล่าวมาข้างต้น ตรงนี้ มาตรงกับพงศาวดารเมืองแถง บอกว่าแถนเอาคนและสัตว์ใส่น้ำเต้าปุง เมื่อน้ำเต้าแตกออก มีคนออกมา ๕ พวก คือข่าแจะ ตามด้วยผู้ไทดำ ลาวพุงขาว ฮ่อ และแกว นอกจากนั้น พงศาวดารเมืองแถง ยังอ้างว่า เมืองแถงเป็นถิ่นกำเนิดของชนชาติไท เพราะบ้านน้ำเต้าปุง และนาน้อยอ้อยหนูที่อ้างถึงใน พงศาวดารเมืองแถง และ พงศาวดารล้านช้าง นั้น มีสถานที่จริงที่เมืองแถนในเวียดนามนั่นเอง

HtN Conclusion

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

  • “Acculturation Mechanisms and the Link to Academia” ว่าด้วยวิธีการถ่ายทอดวัฒนธรรม แฮ็กเกอร์ไม่ได้สอนกันโต้งๆ แต่ทำให้ดูเป็นตัวอย่าง คนที่มาใหม่ก็จะเฝ้าสังเกตแล้วประพฤติตาม แล้วก็บอกว่า วัฒนธรรมแฮ็กเกอร์นั้น คล้ายกับวงการการศึกษามาก การวิจัย การตีพิมพ์บทความวิชาการ ล้วนแต่เป็นเกมแห่งชื่อเสียง และตั้งสมมุติฐานว่า การที่สองวงการนี้คล้ายกัน น่าจะเป็นเพราะเป็นผลลัพธ์ของกระบวนการวิวัฒนาการ ที่จัดโครงสร้างสังคมจนได้รูปแบบที่เหมาะต่อธรรมชาติของงานมากที่สุด
  • “Gift Outcompetes Exchange” พูดถึงเงื่อนไขที่ gift culture (opensource) มีประสิทธิภาพกว่า exchange culture (proprietary) โดยอธิบายด้วยงานวิจัยที่ว่า การให้รางวัลเป็นการบั่นทอนประสิทธิภาพงานสร้างสรรค์ กล่าวคือ งานยิ่งซับซ้อน ยิ่งไม่ต้องการให้อะไรมารบกวนความคิดสร้างสรรค์ การใช้รางวัลเป็นเหยื่อล่อ เป็นการรบกวนอย่างหนึ่ง ทำให้เกิดความไม่อิสระทางความคิด งานที่ได้จะไม่ดีเท่ากับที่ทำโดยปราศจากรางวัล ดังนั้น แนวทางการบริหารโปรแกรมเมอร์ก็คือ ทำให้หมดภาระเรื่องการอยู่รอด (เพื่อให้ gift culture ทำงานเต็มที่) แต่ไม่ต้องเพิ่มโบนัส แล้วปล่อยให้มีอิสระเต็มที่ในการเลือกงาน ไม่ต้องเร่งด้วย deadline และทั้งหมดนี้ก็คือแนวทางที่โอเพนซอร์สสามารถพัฒนาผลิตภัณฑ์ได้ในอัตราเร็วที่สูง
  • “Conclusion: From Custom to Customary Law” เป็นบทสรุปเนื้อหาที่กล่าวมาทั้งหมด ว่าได้พูดถึงจารีตประเพณีการถือครองโครงการ ซึ่งคล้ายกับทฤษฎีกรรมสิทธิ์ที่ดินของ John Locke ได้พูดถึงลักษณะวัฒนธรรมแฮ็กเกอร์ ว่าเป็นวัฒนธรรมการให้ (gift culture) และได้พูดถึงการวิเคราะห์ความหมายของเรื่องเหล่านี้ ต่อการยุติข้อขัดแย้งในแวดวงแฮ็กเกอร์ จากนั้น ก็ทิ้งท้ายว่า ถ้าจะให้จารีตประเพณีเหล่านี้มีผลมากขึ้น และถ่ายทอดสู่คนรุ่นใหม่ที่มีขนาดประชากรเพิ่มขึ้นมากได้ดี ก็ควรบัญญัติเป็นลายลักษณ์อักษร (ESR บอกว่า กำลังทำ “Malvern Protocol” เป็นร่างบทบัญญัติอยู่)
  • “Questions for Further Research” ถามทิ้งท้ายว่า มีหลายโครงการที่ไม่ได้ใช้ระบบ benevolent dictator ซึ่งส่วนใหญ่จะล้มเหลว แต่ก็ยังมีบางโครงการที่ประสบความสำเร็จอย่างงดงาม เช่น Perl, Apache, KDE คำถามคือ มีอะไรต่างกันระหว่างโครงการที่สำเร็จกับไม่สำเร็จ? ความเข้าใจเรื่องนี้ยังไม่ชัดเจน

เอาลิงก์ของ บทความที่แปลอยู่ มาโพสต์อีกที เผื่อใครจะช่วยตรวจคำแปล บอกอีกทีว่า gen อัตโนมัติจาก DocBook ยังไม่มี tag TIS-620 ดังนั้น อาจต้องเลือก encoding จากเมนู

01 กรกฎาคม 2547

GNOME Stuffs

  • GNOME 2.6.2 ออกแล้ว bug GTK+ ที่รออยู่ fix ไม่ทัน อาจต้องรอไปถึง 2.8 เพราะดูตาม schedule แล้ว ไม่มีแผนสำหรับ stable release หลัง 2.6.2 ☹ ส่วน Pango นั้น ถึงแม้จะรับ patch เข้า CVS แล้ว แต่ก็ยังไม่มี stable release ใน pango-1-4 branch (สำหรับ GNOME 2.6) จะมีก็แต่ pango 1.5.0 สำหรับ GNOME 2.7
  • Matthias Clasen มาเพิ่ม priority ให้กับ GNOME Bug #141728 (การเลื่อนเคอร์เซอร์ที่ท้าย GtkEntry) ให้เป็น High และกำหนด target milestone ไว้ที่ 2.4.4 แต่ตัว bug เองยัง unconfirmed ☹ (target milestone หรือ priority ไม่ได้ประกันว่า bug จะถูกแก้ เพราะมันเลื่อนได้เมื่อ schedule มาถึง) มองหา non-TLE user หรือตัว TLE developer เองช่วย confirm ครับผม (เพราะได้ยินว่า TLE patch แล้ว user คง test ไม่เจอ และช่วย confirm ไม่ได้) ไม่งั้นอีกอย่างคือ ภาวนาว่า user ภาษาอื่นจะเจอปัญหาเดียวกัน
  • How to Deal with the Spatial Paradigm อีกแล้วครับท่าน สำหรับ Spatial Nautilus แต่รายนี้ เขาทำให้ดูจริงๆ ว่ามัน work ยังไง

hacker emblem