Theppitak's blog

My personal blog.

28 ตุลาคม 2548

Phnom Penh Report

ผ่านไปแล้ว กับงาน Localisation workshop ที่พนมเปญ ว่าจะเขียน blog ตั้งแต่กลับมาถึง แต่เขียนไม่เสร็จ เลยอู้มานั่งเขียนต่อวันนี้

บรรยากาศของเมือง

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

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

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

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

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

ฟังภาษาเขมร จะมีเสียงรัวเยอะมาก และ ร เรือ ก็กระดกลิ้นกันชัดถ้อยชัดคำ ซึ่งถ้าจะว่าไป เท่าที่ไปฟังภาษาชาติต่างๆ มา ไม่ว่าจะภาษาแขก ภาษาสเปน อิตาลี เขามีเสียง ร กันทั้งนั้น แถมขยันออกกันชัดมากๆ เห็นจะมีแต่พี่ไทยเรานี่แหละ ที่ผ่อนคลายกฎข้อนี้กันมาก (อาจเป็นเพราะ ภาษาถิ่นหลายถิ่นของไทยไม่มีเสียง ร ด้วยแหละ)

บรรยากาศการประชุม

  • ในบรรดาประเทศแถบนี้ เวียดนามดูจะก้าวไปได้ไกลที่สุดในเรื่อง L10N เพราะเขาใช้ Latin script เลยไม่ติดปัญหาเรื่อง input/output สามารถลุยงานแปลได้ทันที แต่ก็นับว่า เขาลุยแปลไปเยอะมากๆ ไม่ใช่แค่เมนูหรือ error message แต่รวมไปถึงเอกสารต่างๆ ด้วย
  • กัมพูชาโดดเด่นมากในงานนี้ ในแง่ความเอาจริงเอาจัง คือมีแผนการทำงานชัดเจนเป็นขั้นๆ และหน่วยงานวิจัย (NiDA) ก็ผลักดันเต็มที่ ด้วยความที่เข้าร่วมในช่วงหลังจากที่ FOSS ต่างๆ ค่อนข้างพร้อมแล้ว เขาเลยกำหนดกลยุทธ์แบบโหนกระแสอย่างรวดเร็ว โดยเริ่มจากทำ FOSS บน Windows ให้ใช้ภาษาเขมรได้ก่อน กะว่าพอเริ่มมีผู้ใช้แล้ว จึงค่อยมาทำภาษาเขมรบนลินุกซ์ (ซึ่งเขาเลือก KDE เป็นเดสก์ท็อปหลัก) ความคืบหน้าล่าสุด คือแปล OpenOffice.org เป็นภาษาเขมรเสร็จแล้ว รวมทั้ง Firefox และ Thunderbird ด้วย ซึ่งสองตัวหลัง มีบาง patch ที่ Mozilla ไม่รับ และด้วยเงื่อนไขเรื่องเครื่องหมายการค้าของ Mozilla ทำให้ต้องออกรุ่นท้องถิ่นในชื่อที่ต่างออกไป คือ "เมขลา" และ "มยุรา" ตามลำดับ
  • พม่า ก็ตื่นตัวเรื่องลินุกซ์ มีการตั้ง LUG และติดตามงาน L10N ภาษาพม่าของหน่วยงานต่างๆ เช่น m17n.org, SIL อย่างใกล้ชิด เขาเล่าว่า ภาษาพม่า สามารถ render ได้ทั้งใน graphite และ pango เรียบร้อยแล้ว ส่วน input method ก็ใช้ scim นอกจากนี้ ยังมีการตั้ง คณะทำงานยูนิโค้ด ซึ่งกำลังขอเพิ่มภาษาชนกลุ่มน้อยในพม่า รวมทั้งตรวจสอบมาตรฐานยูนิโค้ดในส่วนภาษาพม่า เพื่อขอแก้ไขในส่วนที่จำเป็น
  • เนปาลนี่จ๊าบกว่าเพื่อน มีการเจรจากับไมโครซอฟท์จนได้วินโดวส์ unlimited edition ภาคภาษาเนปาล สามารถเอาไปแจกตามชนบทได้ ซึ่งทำให้คอมพิวเตอร์กระจายสู่ชนบทได้เร็วขึ้น ในขณะเดียวกัน ก็มีโครงการลินุกซ์เนปาล ซึ่งหากดูเปอร์เซ็นต์แปล GNOME ของเนปาลแล้ว เขาพุ่งพรวดพราดขึ้นไปเกือบถึง 100% แล้ว ทั้งที่เริ่มหลังเราเสียอีก ส่วน LUG ของเนปาล ก็อยู่ที่ www.linux.com.np ส่วนนโยบายรัฐบาลนั้น ยังเป็นกลางๆ ไม่สนับสนุนโอเพนซอร์สหรือ proprietary เป็นพิเศษ
  • ส่วนลาวนั้น ยังติดปัญหาบุคลากรอยู่มาก ความคืบหน้าสุดท้ายของโครงการ Laonux นั้น หลังจากแปล KDE ไปบางส่วนแล้ว ก็ต้องพักไว้ แต่ขยายขอบเขตโครงการเป็น Lao Open Source โดยหันไปแปล OpenOffice.org เสียก่อน ซึ่งขณะนี้ แปลไปได้ 80% แล้ว และยังได้พัฒนาฟอนต์ OpenType สาธารณะโดยภาครัฐอีกด้วย

จบรายงานข่าวจากสำนัก blogger เทพพิทักษ์ รายงาน

21 ตุลาคม 2548

Comp Services in Khon Kaen

คำเตือนสำหรับผู้ใช้บริการคอมพิวเตอร์ต่างๆ ในตัวเมืองขอนแก่น:

  • หลีกเลี่ยงการใช้ thumb drive แต่พยายามใช้ floppy disk แทน หรือถ้าเป็นร้านอัดรูปจากกล้องดิจิตอล ก็ไม่เป็นไร ใช้ CF หรือ memory stick ได้ แต่ถ้ามาแต่งรูปเองแล้วถ่ายลง thumb drive ถือไป จะได้รับคำตอบว่า "ไม่มี driver ครับ/ค่ะ" เกือบ 100% ทั้งนี้ รวมถึงร้านพิมพ์นามบัตรทั้งหลายด้วย

    (แต่ก็มีภาพที่ตัดกัน คือหน่วยงานต่างๆ ใช้ thumb drive และแผ่น CD-R เป็นหลัก บางแห่งถึงกับสั่งซื้อคอมพิวเตอร์โดยไม่เอา floppy drive!)

  • อย่ามั่นใจเกินไป ว่า PDF จะเป็น format ที่ใช้ได้ทุกระบบ บางร้านไม่มี Acrobat Reader ดังนั้น เพื่อความปลอดภัย ควรดาวน์โหลด Acrobat Reader สำหรับ Windows 98/ME เตรียมไปด้วย (ถ้าเขายอม install นะ) แต่สำหรับข้อนี้ ไม่ร้ายแรงมาก ถ้าขยันเดินหาสักหน่อย อาจเจอร้านที่มี

  • แม้แต่ฟอร์แมตของ MS Office ก็ใช่จะมั่นใจได้ เพราะการตรวจจับซอฟต์แวร์ละเมิดลิขสิทธิ์ ทำให้ร้านอินเทอร์เน็ตต่างๆ ลบ MS Office ทิ้งกันหมดแล้ว หรือถ้าบางร้านยังมี ก็จะเป็นรุ่นเก่า พึงหลีกเลี่ยงการใช้ Office ตั้งแต่รุ่น 2000 ขึ้นไป

  • OpenDocument นั้น อย่าเพิ่งพูดถึง รวมทั้ง .sxw ด้วย คุณอาจถูกค้อนปอนด์รูปเครื่องหมายคำถามทุบเอาได้

ทั้งหมดนั้น รวบรวมจากการใช้บริการร้านต่างๆ ในช่วงที่ผ่านมา เนื่องจาก printer ที่บ้านเสีย (รวมถึงการเป็นธุระให้คนอื่น ที่วิ่งมาหา เมื่อมีปัญหากับการพิมพ์งานที่ร้านเน็ต)

สภาพโดยทั่วไปของร้านที่ให้บริการคอมพิวเตอร์ในขอนแก่นที่เห็นมา ส่วนใหญ่ยังใช้ Windows 98 กับคอมพิวเตอร์รุ่นเก่า (ที่ floppy disk คือสื่อเดียวที่คุณถือเข้าร้านได้อย่างมั่นใจ) โดยถ้าเป็นร้านเน็ต ก็มักจะไม่มีซอฟต์แวร์สำนักงานอะไรมาก แต่จะเน้น เกม เป็นหลัก รองลงไปถึงเป็น web, chat หลายครั้งที่มองเข้าไปในร้านเน็ตแล้วเห็นกระทั่งเณรน้อย หรือบางทีเป็นพระภิกษุ นั่งเล่นเกม!

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

ปล. อยากเห็นร้านเน็ตที่รับผิดชอบต่อสังคมแบบร้าน คุณหน่อย จัง :-) ส่วนร้านคุณ McGuyver ก็เคยไปใช้บริการอยู่สองสามครั้ง ตั้งแต่สมัยแกยังใช้ Linux อยู่ จนตอนนี้เป็น Windows ไปแล้ว แต่ก็ยังเป็นร้านที่น่าเข้าอยู่ เพราะบรรยากาศดีกว่าร้านอื่นหลายร้าน และเจ้าของก็คุยกันถูกคอ :-)

20 ตุลาคม 2548

Update สถานะ OO.o + Firefox

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

เรื่องอื่นๆ พอจะมีข้อมูลจากการติดตามอยู่แล้ว เมื่อวานนี้ ก็มาถึงเรื่องที่ไม่ได้จับต้องมานาน คือ OpenOffice.org และ Firefox

OpenOffice.org

ตัวนี้ ได้ หิน ช่วยทดสอบ/ให้ข้อมูล ได้ข้อสรุปว่า

  • ฟอนต์จาก thaifonts-scalable ที่ว่ามีปัญหาวรรณยุกต์ลอยกับ OO.o นั้น พบว่าถ้า generate TTF ใหม่โดยตัดตาราง OpenType ออก ก็จะ shape สวยงาม

    ก็แปลกดี กลายเป็นว่า ถ้าจะใช้ OpenType กับ GTK+/Pango ก็จะติดปัญหากับ OO.o ทำให้หลายคนคงเลือก downgrade ฟอนต์กลับไปใช้ non-OpenType.. ซึ่งตรงนี้ คงต้องฝากทีม OO.o ช่วยตรวจสอบให้ด้วย

    เพื่อไม่ให้การพัฒนาฟอนต์หยุดชะงักเพราะ OO.o ใครอยากใช้ OpenType กับ GNOME ก็คงต้อง generate ฟอนต์สองแบบ แบบมีและไม่มี OpenType โดยตั้งชื่อให้ต่างกัน แล้วใช้ OpenType กับ GNOME และ non-OpenType กับ OO.o

  • input method ภายในของ OO.o สามารถตรวจลำดับการพิมพ์ภาษาไทยได้ โดยไปที่ Tools > Options > Language Settings > Complex Text Layout แล้วเลือก Use sequence checking ซึ่งในรุ่น 2.0 นี้ หินบอกว่า ตรวจได้อย่างเดียว ส่วนเรื่องการแก้ลำดับการพิมพ์ ต้องรอรุ่นหน้า (ข้อมูลเพิ่มเติม: คุณ James Clark เสนอ issue แล้ว และโค้ดก็ check-in เข้า CVS แล้วด้วย!)

  • XIM integration ของ OO.o ยังไม่มีการ peek context ทำให้ถ้าใช้ XIM โดยไม่ใช้ input method ภายใน การตรวจลำดับจะเป็นแบบ short term คือจะไม่รับสระบน-ล่างอีก ถ้ากลับไปแก้ข้อความเดิมที่มีอยู่

  • IIIMF integration ยังเซ็ตไม่สำเร็จ (ผมใช้กับ GNOME ได้แล้ว แต่ไม่รู้จะเซ็ต OO.o ยังไงให้ใช้ IIIMF ได้)

FireFox

จะว่าเชยก็เชย ผมได้ยินเรื่อง pango patch ใน Mozilla มานาน แต่ไม่เคย build ได้เลย ซึ่งมาพบว่าเป็นเพราะตัวเอง build ผ่าน jhbuild เพื่อใช้กับ GNOME ด้วย ซึ่ง GNOME ใช้ 1.7 branch แต่ pango patch นั้น เขาไปเข้าที่ trunk สรุปว่าถ้าอยากจะใช้ full pango ก็ต้อง build จาก trunk

ว่าแล้วก็ check out มาใหม่ แล้วก็นั่ง build หลายชั่วโมงผ่านไป ก็ได้ มฤคทายวัน (Deer Park) แบบ --enable-pango มาใช้ ก็ปรากฏว่า shape ภาษาไทยสวยงาม

แต่ปัญหา ซึ่ง MrChoke บ่นให้ฟังทาง ICQ มาหลายรอบก็คือ pango มันมีปัญหากับ column-justified paragraph ลองแล้วก็เจอปัญหาจริง ซึ่งรวมไปถึงการใช้ letter spacing ใน stylesheet ด้วย แต่ปัญหานี้ ดูจะ มีมาก่อนจะใช้ pango แล้ว (กับ --enable-ctl ซึ่งใช้ pango-lite)

ตอนนี้ ถึงอยากจะไปลุยกะเขาแค่ไหน ก็ต้องอดไว้ก่อน จนกว่าจะเคลียร์งานอื่นเสร็จ T_T เอาเป็นว่า โฉบดูรอบนึงคร่าวๆ ก่อนละกัน

18 ตุลาคม 2548

Khon Kaen Map

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

เริ่มจาก แผนที่ภาคอีสาน เมื่อดูแผนที่ จะเห็นแหล่งน้ำแหล่งใหญ่ๆ สามแหล่ง คือเขื่อนอุบลรัตน์ (ขอนแก่น) เขื่อนลำปาว (กาฬสินธุ์) และเขื่อนสิรินธร (อุบลฯ) แล้วก็แหล่งรองลงไป คือเขื่อนลำตะคอง (โคราช) และหนองหาน (สกลนคร) ส่วนเขื่อนจุฬาภรณ์ (ชัยภูมิ) นั้น ไม่แน่ใจตำแหน่ง เพราะแผนที่ไม่ค่อยชัด ว่าแล้วเลย mark ไว้ซะ:

Isaan Map

ส่วนตัวเมืองขอนแก่น อาศัยการระบุเส้นรุ้งเส้นแวง ก็ซูมเข้ามาจนเจอ:

Khon Kaen Map

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

  • เส้นแนวเหนือ-ใต้ คือถนนมิตรภาพ ขึ้นเหนือจะไปถึงเวียงจันทน์ (ลาว) ลงใต้จะไปกรุงเทพฯ
  • เส้นตะวันตกคือถนนมะลิวัลย์ ไปพิษณุโลก (สี่แยกอินโดจีนอีกแห่ง) ซึ่งตรงต่อไปจะทะลุแม่สอด-เมียวดี (พม่า) หรือจะเลี้ยวขึ้นเหนือไปถึงเชียงตุง เชียงรุ้ง คุนหมิง ได้
  • เส้นตะวันออกคือถนนประชาสโมสร ซึ่งจะไปบรรจบกับถนนศรีจันทร์ที่ผ่ากลางเมืองขอนแก่นออกไป อ.เชียงยืน จ.มหาสารคาม และทะลุกาฬสินธุ์ มุกดาหาร ออกไปลาวทางสุวรรณเขต ทะลุถึงเว้ (เวียดนาม) ออกทะเลจีนใต้

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

17 ตุลาคม 2548

ชัยชนะของเทสโก-โลตัส?

ไม่ได้เขียนเรื่องทั่วไปซะนาน หลังจากธุระยุ่งหลายเรื่อง ความจริงช่วงนี้ก็ยังยุ่งอยู่ แต่ขอพักเขียนซะหน่อยน่ะ

เมื่อปีที่แล้ว เคยเขียนเรื่อง ห้างจากส่วนกลาง กับความเป็นห่วงธุรกิจท้องถิ่น และ อีกมุมมองหนึ่ง ที่ว่าอุ้มธุรกิจท้องถิ่นเกินไปก็ไม่ดี แต่เมื่อวันก่อน มีโอกาสไปเดินห้างแฟรี่ ได้เห็นแผนกซูเปอร์มาร์เก็ต ที่ปิดปรับปรุงมาระยะหนึ่งแล้ว ขึ้นป้ายหราไว้ว่า "ตลาด Tesco-Lotus"

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

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

ตลาด "Tesco-Lotus" ยังไม่เปิด แต่ก็คงเห็นการประกาศชัยชนะอยู่รำไร..

09 ตุลาคม 2548

C/C++ Doc Generator

ว่าจะอ่านเรื่องนี้มานานละ แต่ยังไม่มีโอกาส ก็พอดีว่าอยากจะใช้กับงานที่ทำอยู่ เลยได้โอกาส ก็คือเรื่องการสร้างเอกสารอัตโนมัติจาก comment ใน source code ของโปรแกรม

โปรแกรมเมอร์กับเอกสารมักเป็นไม้เบื่อไม้เมากัน แต่ถ้าเขียนโปรแกรมโดยใส่ comment ให้เป็นระเบียบล่ะก็ ไม่เหลือบ่ากว่าแรง แถมถ้ามีเครื่องมือดึงเอา comment เหล่านั้นออกมา สร้างเป็น reference manual ได้เลย ก็ยิ่งแจ๋ว ตามคอนเซ็ปต์ Literate Programming ของท่านปรมาจารย์ Knuth ซึ่งเอกสารนี้ ค่อนข้างจำเป็นเป็นพิเศษสำหรับโค้ดที่เป็น library เพื่อให้ผู้ใช้ไลบรารีใช้เป็นคู่มือสร้างโปรแกรมได้

ภาษา Java จะกำหนดรูปแบบ comment พิเศษสำหรับการสร้างเอกสารด้วย Javadoc มาใน syntax ของภาษาเลย

/// ...
/** ... */

ส่วนภาษา C/C++ ก็จะใช้โปรแกรม documentation generator ซึ่งจะกำหนดรูปแบบของ comment ในลักษณะเดียวกัน เพื่อใช้สร้างเอกสารโดยเฉพาะ ตัวที่เคยได้ยินคุ้นหูจะมีสองตัว คือ Doxygen กับ DOC++ ซึ่ง DOC++ นั้น เก่ามากแล้ว รูปแบบเอกสารที่ได้ จึงดูอยู่คนละยุคกับ ของ Doxygen และหลายโครงการที่ เคยใช้ DOC++ ก็เปลี่ยนมาใช้ Doxygen กันเยอะแล้ว แบบนี้ คงตัดสินใจไม่ยากละ

เริ่มจากลง Doxygen ก่อนเลย (สำหรับ Debian)

# apt-get install doxygen

โดยอาจจะลง doxygen-doc และ doxygen-gui เพิ่มด้วย ตัวแรกเอาไว้อ่านวิธีใช้ ตัวหลังเอาไว้สร้าง config file เริ่มแรกแบบอัตโนมัติ

Doxygen จะใช้ config file ชื่อ Doxyfile ซึ่งกำหนดรูปแบบของเอกสารที่จะสร้าง ในนั้นจะมีรูปแบบเป็นการกำหนดค่าตัวแปรต่างๆ ซึ่งอ่าน เอกสาร แล้ว อาจธาตุไฟเข้าแทรกได้ อย่ากระนั้นเลย เราสร้างด้วยเครื่องมืออัตโนมัติดีกว่า:

$ doxywizard

doxywizard screenshot

แล้วก็ทำไปตามขั้นตอนของเขา ก็จะได้ output เปล่าๆ จาก C/C++ source ออกมาเลย หรือถ้าทำ comment รอไว้แล้ว ก็จะได้เนื้อเอกสารออกมาด้วย

สร้าง config file แล้ว ขั้นต่อไปก็คือ การใส่ comment ก็อาจจะใช้รูปแบบนี้ สำหรับโค้ด C++ (โดยใน config file ไม่ได้เปิดใช้ JAVADOC_AUTOBRIEF):

/// Brief description.
/**
 * Long description.
 * @param x : x description
 * @param y : y description
 */
void ClassName::method (int x, int y)
{
  // ...
}

หรือถ้าเป็นภาษา C ซึ่งไม่ได้มีคลาส แต่ใช้ global function เป็นหลัก ก็ต้องระบุว่าจะทำ document ของ file ก่อน:

/** @file hello.h */

void hello (const char* name);

แล้วไปเขียน doc ที่ตัวฟังก์ชัน (.c):

/**
 * Descriptions.
 * @param name : name description
 */
void hello (const char* name)
{ 
  /* ... */
}

พอใส่ comment เสร็จก็สั่ง:

$ doxygen

แล้วดูผลลัพธ์ตามที่ได้ config ไว้

ใครบอกผมก่อนหน้านี้นะ ว่าอยากใช้ doxygen กับ libthai? เดี๋ยวจัดให้.. (รอว่างก่อน)

01 ตุลาคม 2548

ดับไฟใต้ด้วยสันติวิธี

ดับไฟใต้ด้วยสันติวิธี บทความน่าอ่าน โดยพระไพศาล วิสาโล ที่ ศูนย์ข่าวอิศรา ศูนย์ข่าวเจาะลึกปัญหาไฟใต้ ในมิติของการมองปัญหาในพื้นที่

Update (2005-10-02): ข้อมูลเพิ่มเติมเกี่ยวกับ สันติวิธี: นักวิชาการชี้ สันติวิธีสุดขั้ว ต้นเหตุสูญเสีย 2 นาวิกฯ แต่ฝ่ายทหารก็มีคำชี้แจงที่น่าสนใจ ว่า มีแผนเผชิญเหตุรับมือ กำแพงมนุษย์ อยู่แล้ว แต่เงื่อนไขต่างๆ ทำให้ทำแบบที่นักวิชาการท่านนั้นแนะนำไม่ได้

hacker emblem