25 May 2005

ปลาที่ว่ายในสนามฟุตบอล

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

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

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

名探偵コナン:迷宮の十字路

เมื่อวานได้ DVD โคนันแบบที่เป็นหนังมา ตอน 迷宮の十字路 (คดีฆาตกรรมแห่งเมืองปริศนา) ซึ่งเคยเช่ามาดูแล้ว แต่ด้วยความที่อยากสะสม เลยต้องควักกระเป๋าไป 249 บาท ซึ่งก็ไม่แพงจนเกินไปนัก

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

24 May 2005

Apple จะเปลี่ยนไปใช้ซีพียูของ Intel

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

วันนี้เจอลิงก์จาก Freemac.net เป็นข่าวของซีเอ็นเอ็น ว่า Apple กำลังตกลงกับ Intel เพื่อจะเปลี่ยนมาใช้ซีพียูของ Intel ใน Mac รุ่นต่อไป ฟังดูแล้วไม่ค่อยน่าเชื่อเท่าไหร่ และโฆษกของ Apple ก็ออกมาบอกอย่างนั้นเหมือนกัน ดูแล้วก็แปลกดี ในขณะที่คนอื่นๆ เช่น PS3 กับ XBox 360 จะเปลี่ยนไปใช้ PowerPC แต่ Mac กลับจะใช้ Intel จะว่าไปแล้วอะไรมันก็เกิดขึ้นได้ทั้งนั้นในวงการธุรกิจ โดยส่วนตัวแล้วไม่ค่อยเชื่อเท่าไหร่ เพราะ Apple น่าลงทุนลงแรงไปเยอะกับ PowerPC แล้ว ไม่น่าจะเปลี่ยนไปใช้ Intel ง่ายๆ (ถ้าเพิ่มรุ่นที่ใช้ Intel มาด้วยก็ไม่แน่) แถมในแง่เทคโนโลยีแล้ว PowerPC ก็มีประสิทธิภาพไม่ด้อยไปกว่า Pentium อยู่แล้ว คงต้องคอยดูกันต่อไป

เพิ่มเติม:

เมื่อกี้ไปเจอข่าวที่ itmedia.co.jp ก็มีคนคิดคล้ายกับเราแฮะ ว่า Pentium Mac (ไม่รู้ใครตั้งชื่อให้) คงไม่น่าจะเกิด แต่ถ้า Apple จับมือกับ Intel สิ่งที่น่าจะเกิดขึ้น น่าจะเป็น iPod สามารถเล่นวีดีโอได้ โดยใช้ XScale มากกว่า

18 May 2005

ไม่ผูกเนคไท ไม่ใส่เสื้อนอก

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

13 May 2005

XBox 360

วันนี้เจอข่าวจาก ITmedia.co.jp ว่าไมโครซอฟท์เปิดตัว XBox รุ่นใหม่อย่างเป็นทางการแล้ว เห็นสเปคแล้วก็หนาวเลย เนื่องจากใช้ซีพียูของ PowerPC ซึ่งสามารถรัน thread ได้หกตัวพร้อมกัน คำนวณเลขทศนิยมได้เร็วถึง 115.2 GFLOPS เรียกว่าทิ้ง XBox เดิมอย่างไม่เห็นฝุ่นเลย และก็เป็นอันว่าทั้งโซนี่และไมโครซอฟท์ก็หันไปใช้ PowerPC หมดแล้ว อยากรู้จริงๆ ว่าระหว่าง Cell ที่จะใช้ใน PlayStation รุ่นต่อไป กับตัวที่ใช้ใน XBox อย่างไหนจะดีกว่ากัน

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

12 May 2005

จัดการเมลด้วย Maildir และ IMAP

หลังจากทุกอย่างเริ่มเข้าที่เข้าทาง ตอนนี้เริ่มเกิดความกังวลใหม่ เนื่องจากทุกวันนี้อ่านเมลโดยใช้โปรแกรม Mail ที่มากับ Mac OS ซึ่งก็ใช้งานสะดวกดี สามารถกรองสแปม และคัดแยกเมลได้อัตโนมัติ แต่เนื่องจากไม่รู้ว่า Mail เก็บข้อมูลต่างๆ ไว้ยังไง ทำให้เกิดความกังวลว่าต่อไป ถ้าจะย้ายไปอ่านเมลที่อื่น หรือว่าต้องการสำรองข้อมูลเมลขึ้นมาจะทำอย่างไร เนื่องจากเป็นพวกชอบเก็บเมลไว้หมด แถมยังใช้โอเอสหลายแบบอีกต่างหาก เวลาย้ายเมลไปที่เครื่องอื่นก็กลัวว่าจะมีปัญหาตามมา ทำให้ต้องเปลี่ยนวิธีอ่านเมลใหม่ เลยนำระบบ Maildir และ IMAP ที่เป็นระบบมาตรฐานใช้ได้ทุกแพลตฟอร์มมาใช้ เหมือนที่เคยทำตอนอยู่ญี่ปุ่น

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

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

จากข้อดี และความเป็นมาตรฐานของระบบ IMAP ทำให้เมื่อวานตัดสินใจติดตั้งเซิร์ฟเวอร์ IMAP บนโน้ตบุคของตัวเอง ใช้โปรแกรมดึงเมลมาเก็บไว้ที่ Maildir ที่กำหนดไว้ก่อน จากนั้นค่อยอ่านเมลผ่าน IMAP ที่อยู่บนเครื่องตัวเอง แค่นี้ก็สะดวกขึ้นเยอะแล้ว ถ้าจะเปลี่ยนเครื่อง หรือเปลี่ยนระบบที ก็เพียงแค่ย้าย Maildir นั้นไปเก็บที่อื่น ก็แค่นั้นเอง สำหรับการติดตั้งนั้นใช้ระบบ DarwinPorts ซึ่งช่วยอำนวยความสะดวกในการติดตั้งซอฟท์แวร์เสรีต่างๆ หลังจากติดตั้ง DarwinPorts ตามขั้นตอนแล้ว ก็เลือกติดตั้ง courier-imap เซิร์ฟเวอร์แบบ IMAP ที่คุ้นเคย โดยใช้คำสั่ง

$ sudo port install courier-imap

เมื่อติดตั้งเสร็จเรียบร้อยก็ทำการสร้าง Maildir สำหรับเก็บเมลของเรา โดย courier-imap กำหนดไว้ว่าจะมาดึงเมลจาก ~/Maildir ซึ่งอยู่ในโฮมของตัวเอง การสร้างก็ใช้คำสั่ง

$ maildirmake ~/Maildir

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

$ sudo /opt/local/etc/rc.d/imapd.sh start

จากนั้นเราก็สามารถเซ็ตให้โปรแกรมอ่านเมล มาดึงเมลจาก IMAP ได้ เพียงแต่ว่ายังคงไม่มีเมล ขั้นตอนต่อไปก็ต้องติดตั้งโปรแกรมดึงเมล เพื่อดึงเมลจาก POP3 ขององค์กรมาเก็บไว้ที่ Maildir เพื่อให้มีเมลใหม่เข้ามาเสมอ โดยจะใช้โปรแกรม fetchmail ซึ่งเป็นโปรแกรมมาตรฐานบนยูนิกซ์ แต่เนื่องจาก fetchmail ยังไม่สนับสนุน Maildir เลยต้องใช้ procmail ซึ่งเป็นโปรแกรมจัดการคัดแยกเมลเข้ามาช่วย โดยติดตั้งจาก

$ sudo port install fetchmail
$ sudo port install procmail

เมื่อติดตั้งเสร็จก็ต้องตั้งค่าต่างๆ โดยกำหนดไว้ในไฟล์ .fetchmailrc และ .procmailrc โดย

poll thaigate.nii.ac.jp proto POP3 port 110 user "cholwich" 
password "mypass" options fetchall fetchsizelimit 1 
mda "/opt/local/bin/procmail"

เป็นการกำหนดให้ไปดึงเมลจาก thaigate.nii.ac.jp โดยใช้โปรโตคอลแบบ POP3 มีการระบุชื่อผู้ใช้และรหัสผ่าน จากนั้นก็กำหนดให้ส่งเมลต่อไปยังโปรแกรม procmail ส่วนใน .procmailrc ก้กำหนดว่า

MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR
LOGFILE=$HOME/.procmail.log
LOCKFILE=$HOME/.procmail.lock
VERBOSE=on

:0
./

ซึ่งระบุให้นำเมลทั้งหมดไปเก็บไว้ที่ root ของ Maildir ซึ่งอยู่ที่ $HOME/Maildir ถ้าอยากจะให้ procmail คัดแยกเมลให้ด้วย ก็สามารถระบุเงื่อนไขต่างๆ ไว้ในนี้ได้เลย แต่ตอนนี้ขี้เกียจระบุ ให้โปรแกรมสำหรับอ่านเมลจัดการเองล่ะกัน เลยระบุไว้เพียงแค่นี้ จากนั้นก็ต้องสั่งให้ fetchmail ด้วยคำสั่ง

$ fetchmail -d 300

ซึ่งจะไปเช็คเมลให้ทุกห้านาที แต่ก็ติดขัดที่ต้องเรียก fetchmail ทุกครั้งที่บูตเครื่องใหม่ ถ้าขี้เกียจก็สามารถเอาไฟล์ .fetchmailrc ไปเก็บไว้ที่ /opt/local/etc/fetchmailrc ก็ได้ อาจจะต้องไปแก้ค่าเกี่ยวกับ procmail ด้วยนิดหน่อย แต่คิดว่าไม่น่ายาก แค่นี้ก็สามารถจัดการเมลได้เรียบร้อย

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

ป.ล. เขียนไปเขียนมา ยาวเลยแฮะ

11 May 2005

Picasa และ Hello

วันนี้เพิ่งมีโอกาสลองใช้ Picasa กับ Hello ซึ่งเป็นโปรแกรมจัดการรูปบน Windows ที่ Google แจกให้ใช้ฟรี ใ้ช้งานง่ายดี Picasa เป็นโปรแกรมจัดการรูปภาพหน้าตาคล้าย iPhoto บน Mac สามารถตกแต่งภาพแบบง่ายๆ ได้ ใช้งานสะดวก ส่วน Hello เป็นโปรแกรมแบบ IM แต่มีหน้าที่หลักคือใช้ส่งรูประหว่างโปรแกรม และเนื่องจาก Blogger ที่ใช้อยู่ ก็เป็นของ Google ทำให้สามารถเอารูปมาแปะบนบลอกได้ง่ายๆ ข้อเสียอย่างใหญ่หลวงก็คือ ตอนนี้ทำงานได้บน Windows เท่านั้น สำหรับ Mac และ Linux คงต้องรอกันต่อไป

Posted by Hello

ป.ล. เพิ่งไปเจอว่า Blogger แนะนำให้ใช้ flickr แทนสำหรับคนที่ไม่ได้ใช้ Windows

10 May 2005

ครบรอบหนึ่งปี

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

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

GCC 4.0 และ Autovectorization

อ่านข่าวมาหลายวันแล้ว ว่า GCC ออกเวอร์ชันใหม่คือ 4.0 ซึ่งมีฟีเจอร์ใหม่ที่น่าสนใจคือ Autovectorization ซึ่งทำให้สามารถ optimize โปรแกรมที่คอมไพล์ และเลือกใช้พวก Altivec หรือ MMX/SSE ได้อัตโนมัติ โดยไม่จำเป็นต้องเขียนโปรแกรมเองต่างหาก เขาเรียกว่าเป็น Loop vectorizer คือจัดการกับกรณีที่เป็นลูปซึ่งค่อนข้างมีกฎเกณฑ์แน่นอนอยู่แล้ว น่าใช้เหมือนกันแฮะ ได้ข่าวว่า GCC รุ่นนี้มาพร้อมกับ Mac OS X 10.4 เลย คงได้ใช้กันแล้ว ส่วน Linux คงต้องรออีกพักใหญ่ (หลายเดือน) เพื่อใช้ดิสตริบิวชันต่างๆ ปรับมาใช้รุ่นนี้ อย่าง Gentoo ก็ยังเพิ่งจะปรับจาก 3.3 มาเป็น 3.4 ไม่นานนี้เอง ดูเหมือนยังปรับไม่ครบทุกแพลตฟอร์มด้วย แต่ลองดูในฟอรัมก็เริ่มคุยกันเรื่อง 4.0 แล้ว คงจะเริ่มลองกันแล้วมั้ง แสดงว่าอีกไม่นานคงจะได้ลองใช้ ว่าแต่หลังจากกลับมาอยู่เมืองไทยไม่ได้ใช้ Gentoo เลย เนื่องด้วยเหตุผลหลายๆ ประการ ไว้ได้เครื่องใหม่มาแล้วคงจะได้ฤกษ์ลองซะที

03 May 2005

Gentoo Handbook on PDA

เจอข่าวรายสัปดาห์จาก Gentoo ว่ามีคนเอา Handbook ซึ่งเป็นเอกสารสำหรับการติดตั้งของ Gentoo มาแปลงเป็นรูปแบบ Plucker เพื่อให้อ่านบน PDA ต่างๆ ได้ เพิ่มความสะดวกในเวลาติดตั้ง Gentoo เพราะไม่จำเป็นต้องพิมพ์ handbook ออกมาอ่านก่อน สามารถอ่านบน PDA ได้เลย เป็นการประหยัดกระดาษได้ด้วย

นอกจากนี้ทำให้รู้จักว่ามีโปรแกรมชื่อว่า Plucker ซึ่งช่วยแปลงเอกสารในรูปแบบต่างๆ เพื่อนำไปแสดงบน PDA ได้สะดวก ไว้ต้องลองเอามาใช้บ้างแล้ว

Gentoo Handbook on PDA

เจอข่าวรายสัปดาห์จาก Gentoo ว่ามีคนเอา Handbook ซึ่งเป็นเอกสารสำหรับการติดตั้งของ Gentoo มาแปลงเป็นรูปแบบ Plucker เพื่อให้อ่านบน PDA ต่างๆ ได้ เพิ่มความสะดวกในเวลาติดตั้ง Gentoo เพราะไม่จำเป็นต้องพิมพ์ handbook ออกมาอ่านก่อน สามารถอ่านบน PDA ได้เลย เป็นการประหยัดกระดาษได้ด้วย

นอกจากนี้ทำให้รู้จักว่ามีโปรแกรมชื่อว่า Plucker ซึ่งช่วยแปลงเอกสารในรูปแบบต่างๆ เพื่อนำไปแสดงบน PDA ได้สะดวก ไว้ต้องลองเอามาใช้บ้างแล้ว

Altivec รอบสอง

เคยเขียนถึง Altivec หรือ Velocity Engine ซึ่งเป็นตัวประมวลผลแบบเวคเตอร์ของซีพียูตระกูล Power ซึ่งนำมาใช้ใน Mac ไปแล้วรอบนึง วันนี้กำลังพัฒนาระบบขึ้นมาใช้งานใหม่ เลยอยากรู้ว่า Altivec จะทำงานได้เร็วกว่าตัวประมวลผลแบบปกติแค่ไหน เลยลองเขียนโปรแกรมหาระยะทางแบบยูคลิดดู ซึ่งถ้าเขียนแบบธรรมดาก็จะเขียนได้ง่ายๆ แบบข้างล่างนี้

float eucidean(int len, float *x, float *y) {
 int i;
 float sum=0.0;
 
 for(i=0; i<len; i++) {
   sum += (x[i]-y[i])*(x[i]-y[i]);
 }
 return sqrt(sum);
}

โปรแกรมนี้ก็ทำงานง่ายๆ โดยเอาข้อมูลใส่ไว้ในอะเรย์แบบ float สองตัว (x กับ y) แล้วก็วนรอบคำนวณทีละตัวจนครบทุกตัว ส่วนโปรแกรมที่ทำงานแบบเวคเตอร์นั้น จะแบ่งมาคำนวณทีละ 4 ตัว ตามความสามารถของซีพียู G4 ที่ใช้อยู่ตอนนี้ เลยจะได้โปรแกรมอย่างข้างล่าง

float eucidean_altivec(int len, float *x, float *y) {
 int i=0,l;
 vector float vx,vy,vz,vsum=(vector float)vec_splat_s8(0);
 float sum=0.0;
 
 while(len>0) {
  /* Warning!!! size of float array must be divided by 4 */
  vx = (vector float)vec_ld(0, x+i);
  vy = (vector float)vec_ld(0, y+i);
  vz = vec_sub(vx, vy);
  vsum = vec_madd(vz, vz, vsum);
  len -= 4;
  i += 4;
 }
 vsum = vec_add(vsum, vec_sld(vsum,vsum,4));
 vsum = vec_add(vsum, vec_sld(vsum,vsum,8));
 vec_ste(vsum, 0, &sum);
 return sqrt(sum);
}

โปรแกรมนี้จะเริ่มจากการโหลดข้อมูลจากอะเรย์ไปเก็บไว้ในเวคเตอร์ (vx, vy) โดยใช้คำสั่ง vec_ld จากนั้นเอามาลบกันด้วย vec_sub เก็บไว้ที่ vz เสร็จแล้วก็เอายกกำลังสอง (คูณกันเอง) แล้วบวกเก็บไว้ที่ vsum สุดท้ายจะได้เวคเตอร์ที่เก็บผลรวมไว้ แต่ยังแยกเป็นสี่กลุ่ม ก็เลยเอา vsum มาเลื่อนไปมา ด้วยคำสั่ง vec_sld แล้วก็เอามาบวกกัน สุดท้ายจะได้ผลรวมอยู่ที่ตำแหน่งแรกสุด ซึ่งก็คือค่าที่ต้องการหา

ลองเทียบความเร็วด้วยการคำนวณหาระยะทางโดยให้ x และ y เป็นจุดในพื้นที่ 120 มิติ แล้วให้ทำงานหนึ่งล้านครั้ง โดยไม่มีการ optimize ตอนคอมไพล์ ได้เวลาที่แตกต่างกันเยอะพอสมควร โดยแบบธรรมดาจะใช้เวลา

real    0m4.989s
user    0m4.800s
sys     0m0.020s

ส่วนแบบใช้ Altivec ใช้เวลา

real    0m1.303s
user    0m1.260s
sys     0m0.020s

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