Theppitak's blog

My personal blog.

28 สิงหาคม 2550

New LibThai

ในที่สุดก็เบ่ง libdatrie 0.1.2 และ libthai 0.1.9 ออกไปแล้ว รุ่นใหม่นี้ สำหรับ libdatrie เน้นแก้บั๊กโปรแกรมพังเป็นหลัก หลังจากถูกแกล้งระหว่างทำ libthai ตัวใหม่ ส่วน libthai เอง ก็สนับสนุน UAX#14 และตัดคำโดยรู้จักคำประสมมากขึ้น

libdatrie เข้า debian sid ไปแล้ว ส่วน libthai รอ sponsor

งานต่อไป.. ไล่เช็กคำแปล GNOME 2.20 ซึ่งตอนนี้ string freeze แล้ว

ป้ายกำกับ: ,

27 สิงหาคม 2550

Sound Card Workaround

ต่อไปนี้ มีเกร็ดอะไรที่เกี่ยวกับ GNOME ผมคงพยายามโพสต์ที่ GNOME ไทย แทน (คุณ wd เริ่มไปบ้างแล้ว) อย่างเรื่อง แก้ขัดปัญหาการ์ดเสียง Intel ICH7 เสียงไม่ออก แบบไม่ต้อง update ALSA driver ซึ่งผมเจอโดยบังเอิญและใช้มาพักหนึ่งแล้ว ใครมีข้อมูลลึกกว่านั้นไหมครับ? โพสต์ตอบที่นู่นได้เลย

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

23 สิงหาคม 2550

Leftist Libertarian

ลองมั่ง ตาม ชาวบ้าน ชาวเมือง

Economic Left/Right: -6.50
Social Libertarian/Authoritarian: -1.54

เป็น leftist libertarian แต่ท่าทางซ้ายจัดเรื่องเศรษฐกิจไปหน่อยแฮะ โม้ป่าวเนี่ย

ปล. ไม่น่าบ้าจี้เล้ย.. เล่นเอาปวดตา กว่าจะทำเสร็จ :P

ป้ายกำกับ:

LibThai Dictionary Adjustment

ทำงานโอเพนซอร์สมีมากกว่าเขียนโค้ด ต้องพยายามสื่อสารกับชุมชนด้วย

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

การเขียนส่วน itemization ใหม่เมื่อสองเดือนก่อนนั้น ก็ทำให้โค้ดระดับบนเข้ากับ UAX #14 (Unicode Line Breaking Properties) ยิ่งขึ้น แต่ยังก่อน ก่อนจะ release libthai รุ่นใหม่ ยังมีอีกเรื่องหนึ่งที่ผมวางแผนไว้ คือการสนับสนุนคำประสม ซึ่งเป็นอีกประเด็นหนึ่งที่มีคนเสนอใน GNOME Bug #382437

เกณฑ์การตัดคำประสมนั้น พี่ปลา ที่เนคเทค (คนละคนกับ blaa ในห้อง ubuntu-th/tlwg) ได้ทำ สรุป ไว้ โดยประยุกต์จากหลักภาษาไทยเล็กน้อยเพื่อให้เข้ากับการตัดบรรทัด เกณฑ์นี้ ได้ออกแบบรองรับการใช้ยัติภังค์ (hyphenation) ไว้เรียบร้อย แต่เนื่องจาก libthai ยังไม่ทำ hyphenation จึงยังต้องเปลี่ยนให้เป็นแบบตัดคำล้วน ๆ

แรกเริ่มเดิมที การ maintain dictionary นี้ ผมอยากได้อาสาสมัครมาช่วยกันทำ แต่เนื่องจากยังมีประเด็นทางเทคนิคที่ผมกังวล คือ double-array trie ที่ใช้เก็บ dict นั้น ต้อง overflow แน่ ๆ เมื่อเพิ่มคำประสมเข้าไป ผมมีทางเลือกสองทาง คือเพิ่มขนาด index ใน trie ให้โตกว่า 16 บิต หรืออีกทางคือลดขนาด dict ลง โดยเลือกตัดคำโบราณที่ไม่พบในเอกสารใดทิ้ง หลังจากแก้ปัญหานี้ได้ จึงจะเปิดทางสะดวกสำหรับอาสาสมัคร

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

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

พูดแล้วอายจัง เวลามีใครถาม ว่าทำ dict ยังไง ได้ข้อมูลจากไหน.. พวกแล็บ NLP ทั้งหลาย เขามีการสร้าง corpus tools สำหรับประมวลผลอัตโนมัติ ถามว่าผมใช้วิธีไหน เป็นวิธีโบราณสุด ๆ ครับ คือใช้แรงงานคน บวกกับ google นี่แหละ เพียงแต่ว่า ไม่ได้เริ่มจากศูนย์ เนื่องจากมี word list ที่ทางราชบัณฑิตยสถานเผยแพร่ผ่านเนคเทคเมื่อหลายปีก่อน (ผมเองแหละ ที่เป็นคนสกัด word list ออกมาจากข้อมูลดิบของพจนานุกรมในตอนนั้น :P) ผมไม่แน่ใจว่าตัวข้อมูลในแหล่งดาวน์โหลดต้นฉบับยังอยู่หรือเปล่า แต่ถ้าใครสนใจจะใช้ข้อมูล ก็ยังมีสำเนาที่ import ไว้ที่ LTN CVS นะครับ

กลับมาที่ libthai ต่อ ปรากฏว่า การปรับ dict ที่ว่า ต้องใช้เวลามากกว่าที่คิด เพราะผมดันป่วยเป็นโรคตาแห้งซะนี่ ก็เลยทำ ๆ พัก ๆ วันละนิดละหน่อย เก็บเล็กผสมน้อยตลอดเดือนสองเดือนที่แทบไม่ได้ blog ถึงงานพัฒนาเลย (ยกเว้นงานช่วยชาติอย่าง mozilla) ว่าจะ blog เล่า (เดี๋ยวใครจะว่ามุบมิบทำ ไม่ให้สาธารณชนรับทราบ :P) ก็ผัดวันประกันพรุ่งมาเรื่อย เพราะแสบตา ตอนนี้ ใกล้เสร็จแล้วแหละครับ

ในตอนท้าย ก็มาถึงจุด overflow จริง ๆ ทำให้มีโอกาสได้ปรับโค้ด double-array trie ให้จัดการกับ edge case ได้ดียิ่งขึ้นด้วย ประเดี๋ยวเมื่อทุกอย่างเรียบร้อย คงไล่ release ทีละตัว และที่ว่าจะให้อาสาสมัครช่วย ก็อาจต้องเลื่อนออกไป เพราะตอนนี้ dict ปริ่มเต็มพอดี (แต่อาจเพิ่มคำได้บ้างเป็นบางคำ ถ้าบังเอิญยัดลงไปได้ ใครมีคำจะเสนอเพิ่มก็ลองเสนอได้ครับ อย่างเช่น คำที่พบในข่าวปัจจุบันอย่าง "อมาตยาธิปไตย" เนี่ย ผมเพิ่มไปละ)

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

ป้ายกำกับ:

19 สิงหาคม 2550

Please Don't Abuse my Vote

การลงประชามติร่างรัฐธรรมนูญครั้งนี้ ตัดสินยากจริง ๆ เพราะลำพังประเด็นเนื้อหารัฐธรรมนูญ ก็มีรายละเอียดต้องพิจารณามากอยู่แล้ว แต่ยังมีนัยทางการเมืองเบื้องหลังอีก

ใครที่เห็นชอบกับร่าง อาจถูกเหมารวมว่าอยู่ฝ่ายตรงข้ามกับอำนาจเก่า และสนับสนุนรัฐประหาร

ใครที่ไม่เห็นชอบร่าง ก็อาจถูกตีความได้หลายทาง คืออาจจะสนับสนุนอำนาจเก่า หรือต่อต้านการรัฐประหาร หรือทั้งสองอย่าง นี่ถ้าประเด็นบรรจุพระพุทธศาสนายังไม่จบ ก็คงกลายเป็นอีกประเด็นหนึ่ง

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

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

ฉะนั้น หวังว่าจะไม่มีการตีความคะแนวโหวตของผมไปในทางอื่นที่ไม่ใช่สาระของร่างรัฐธรรมนูญ

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

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

ป้ายกำกับ:

17 สิงหาคม 2550

Mirrors Return

ไม่ว่าจะด้วยเหตุผลอะไร Debian mirror ในประเทศที่เคย พูดถึง ว่าตายไป ได้กลับมาทำงานเป็นปกติกันหมดแล้ว (ยกเว้น mirror แห่งชาติปางก่อน) ต้องขอขอบคุณผู้ดูแลด้วยครับ โดยเฉพาะ thaios.net ที่มีครบทุก arch นั้น ช่วยให้ผมโป๊วของมาลง LTN mirror ได้ ก่อนที่จะ sync กับต่างประเทศต่อ

นอกจากนี้ ดูเหมือนแบนด์วิดท์ต่างประเทศของ LTN ก็กลับสู่สภาพปกติแล้วด้วย ตอนนี้ สามารถใช้ Debian mirror กันได้เหมือนเดิมแล้ว

ขอขอบคุณผู้ที่เกี่ยวข้องที่ผมไม่อาจทราบว่ามีใครบ้างมา ณ ที่นี้ครับ

ขั้นต่อไป คือรอฟื้น debianclub

Update: (2007-08-17 15:20): แก้ลิงก์ไปบล็อกก่อน

ป้ายกำกับ: ,

13 สิงหาคม 2550

GNOME 2.20 Sneak Peek

มาช่วยกันเขียนบทความลง th.gnome.org กันเถอะ จะใช้ distro ไหนก็ไม่เกี่ยง ขอให้เป็น GNOME เป็นใช้ได้

เรื่องหนึ่งคือ แอบดู GNOME 2.20 เคยชวนหลายคนที่ตามอยู่มาช่วยกันเขียนเหมือนกัน บางที คนที่ใช้ Ubuntu gutsy หรือ Debian experimental หรือ distro อื่นอย่าง Fedora, Mandriva, OpenSUSE ก็คงมี GNOME 2.19 ให้ทดสอบได้ ส่วนข้าพเจ้านั้น ถึงจะตาม build ดูด้วย jhbuild อยู่ แต่ก็ไม่สะดวกที่จะเขียน แต่ไม่มีใครเขียน เขียนเองก็ได้ :P

ผมจับ screenshot เท่าที่สังเกตและสามารถ build มาจับได้นะครับ ใครจะเพิ่มเติมอะไรก็เชิญ comment เพิ่มได้ที่นั่น

ป้ายกำกับ:

06 สิงหาคม 2550

When your mirror is slower than you

เป็นเวลาสองสัปดาห์เต็มแล้ว ที่ LTN ถูกจำกัดแบนด์วิดท์ต่างประเทศ ทำให้ Debian mirror ไม่สามารถ sync ได้ทันกับการเปลี่ยนแปลงของต้นฉบับ

ผมพยายามแก้สคริปต์ rsync เพื่อให้ใช้แบนด์วิดท์ให้มีประสิทธิภาพสูงสุด ตั้งแต่เลือกหา official mirror ที่อยู่ใกล้ที่สุด รวมทั้งเก็บ partial file ไว้ resume ครั้งต่อไป ไม่ให้ต้องเริ่มต้นดาวน์โหลดใหม่ในรอบต่อไป แต่อัตราการส่งถ่ายที่ไม่เคยเกิน 5 KB/s แถมยัง stall เป็นเวลานานจน time out ต้องเริ่มต้นใหม่อยู่เรื่อย ๆ ทำให้ sync deb ได้ไม่เคยเกินตัว c แถมในการเริ่มใหม่แต่ละครั้ง ยังต้องเสียแบนด์วิดท์ไปกับการ receive file list ตอนเริ่มต้นของกระบวนการ rsync ราวชั่วโมงเศษอีกด้วย

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

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

thaios.net นั้น ผมยกย่องในความพยายามที่อุตส่าห์ mirror ครบทุก arch แต่ก็เหมือนหมดแรงไปเดือนเศษแล้ว ตั้งแต่ราว 23 มิ.ย. แต่ก่อนหน้านั้น ขอบอกว่าผมได้ใช้ประโยชน์พอสมควรเลยแหละครับ

PSU ก็เป็นอีกแหล่งที่เป็นที่พึ่งได้สำหรับผู้ใช้ i386 เสมอมา จนกระทั่งหยุด update ในที่สุดราว 27 ก.ค. (หลังจากที่ LTN ถูกจำกัดแบนด์วิดท์ประมาณ 3-4 วัน) แหล่งนี้ก็เป็นแหล่งหนึ่งที่ผมเคยใช้ maintain partial mirror ที่โรงเรียน

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

ขอแนะนำผู้ใช้ debian นะครับ ว่ามี official mirror ต่างประเทศที่อยู่ใกล้ตามลำดับดังนี้ (นับจากเครือข่ายที่ผมใช้):

  1. ftp.tw.debian.org
  2. ftp.hk.debian.org
  3. ftp.kr.debian.org
  4. ftp.jp.debian.org

บางที LTN mirror อาจต้องหยุด update ตามแหล่งอื่นในประเทศไปในที่สุด ถ้าสภาพการณ์ยังคงเป็นเช่นนี้ต่อไป หมดแหล่งในประเทศแล้ว ก็หันไปใช้แหล่งต่างประเทศกันเถอะ โดยเฉพาะผู้ใช้ arch อื่นที่ไม่ใช่ i386 เช่น amd64 ที่อาจจะหา mirror ในประเทศได้ยากขึ้นทุกที

คงได้เวลาปลุก debianclub กันแล้วมั้ง

Update: ลืมเสริมว่า นี่ไม่รวม LTN Apt ที่เก็บ local deb นะครับ ตรงนั้นยังคงใช้งานปกติ ล่าสุดก็ update xulrunner, iceweasel จากนิวตรอนแล้ว

ป้ายกำกับ: ,

05 สิงหาคม 2550

Pidgin deb?

sothorn.org บล็อกว่า:

"...ตอนนี้ Pidgin ออกเวอร์ชัน 2.1.0 ออกมาแล้ว ทาง Pidgin ไม่ได้ทำแพ็กเก็จสำหรับ Debian หรือ Ubuntu มาให้

"ทำไงดีล่ะครับ ก็ต้องคอมไพล์เอง..."

บน debian sid:

$ dpkg -l pidgin
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  pidgin         2.1.0-1        multi-protocol instant messaging client

(ตอบ blog ด้วย blog ก็กลายเป็นการคุยกันผ่าน Planet ละ เห็นทำเป็นประเพณีกันหลายที่)

ป้ายกำกับ: ,

03 สิงหาคม 2550

PowerTop, Epiphany-WebKit, New Extinction Theory

ตามข่าวสารตามสภาพสังขารจะอำนวย

  • การประหยัดพลังงาน กำลังกลายเป็น trend ใหม่ของนักพัฒนาโอเพนซอร์ส สังเกต patch ใน GNOME และ Debian จะเห็นหลายรายการที่เกี่ยวกับการประหยัดพลังงาน (เช่น ลดความถี่ของการ poll ที่ไม่จำเป็น หรือลดการกะพริบของเคอร์เซอร์) จนกระทั่ง Intel ออก powertop สำหรับตรวจหาโปรแกรมที่กินพลังงานสูงสุด อ่านจาก known issues แล้ว มีรายการลดได้เยอะเลย ลองลง powertop ผ่าน apt มาเช็กเครื่องตัวเองดู.. ดูเหมือนพวก mozilla นี่แหละจะกินพลังงานสูงสุด ไม่ต้องถึงกับต้องให้ google ใช้พื้นดำ หรอก พวกเว็บต่าง ๆ ที่ชอบใส่ animation น่ะ เอาออกจะช่วยโลกประหยัดพลังงานได้เยอะกว่าเสียอีก
  • Epiphany จะมี WebKit backend แล้ว นอกเหนือจาก Gecko ที่ใช้อยู่ กลายเป็นตัวเลือกที่อาจจะเบากว่าเดิม ว้าว!
  • ข่าว /. บอก มี ทฤษฎีใหม่ ที่อธิบายการสูญพันธุ์ของไดโนเสาร์ และการสูญพันธุ์ครั้งใหญ่ของสิ่งมีชีวิตบนโลกในยุคก่อนหน้านั้น เพราะจังหวะเวลาการเกิด ไปพ้องกับจังหวะการเคลื่อนขึ้นลงของสุริยจักรวาลจากระนาบของแกแล็กซีทางช้างเผือก โดยตรงกับจุดที่เคลื่อนไปสูงสุด ซึ่งสันนิษฐานว่า อาจไปโดนรังสีคอสมิกจากแกแล็กซีข้างเคียงที่สามารถทะลวงผิวโลกไปทำลาย DNA ของสิ่งมีชีวิตได้ถึงระดับใต้ดิน หรืออย่างน้อยก็ทำให้เกิดการเปลี่ยนแปลงสภาพอากาศอย่างรุนแรง เป็นทฤษฎีที่น่าสนใจมาก นอกเหนือจากทฤษฎีดาวหางชนโลก หรือทฤษฎีโกลาหล (chaos)

จบข่าว.. อยากเขียนลง blognone อยู่นะ แต่ตาไม่ค่อยสู้เลย ไม่อาจเรียบเรียงเป็นเรื่องเป็นราว

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

hacker emblem