เร่งความเร็วให้กับ Gentoo Portage

Posted by AnnoMundi on June 17, 2006

หลังจากที่ผมใช้ Gentoo มานานมากน่าจะเกิน 2 ปี ในเครื่องส่วนตัวและ 1 ปีกว่าๆ
สำหรับเครื่อง Colocated ของผม แต่มาช่วงหลังๆนี่ ผมเริ่มหงุดหงิดกับการที่ต้องรอ
ตอนสั่ง emerge –sync ซึ่งมันจะ Update Portage Cache ใช้เวลานานมาก
บางทีเกิดไปสั่ง emerge –sync แล้วและมันยังทำไม่เสร็จแล้วง่วงนอนก็ต้องรอ
หรือบนเครื่อง Colocated ที่เรื่องใช้เวลานานไม่เท่าไหร่แต่การที่มันกิน Process CPU นี่สิ
ผมเลยลอง Search หาวิธีที่จะทำให้มันทำงานเร็วขึ้นและไม่กิน Process CPU มาก
ผมก็ไปเจอบทความนี้เข้าลองดูตาม Link ด้านล่างนะครับ ก็เลยจัดการลองซะเลย
http://gentoo-wiki.com/TIP_speed_up_portage_with_cdb

หลังจากลองทำตามที่เขาเขียนไว้ ก็ได้ผลเป็นที่น่าพอใจมากครับ การสั่ง
emerge –sync จะใช้เวลาไม่นานเลยในส่วน Update Portage Cache นะครับ
ส่วนเวลาในการ Load ข้อมูลจากเน็ตนั้นอันนี้แล้วแต่ความเร็วเน็ตของแต่ล่ะท่าน
ยังไงใครใช้ Gentoo ลองไปทำตามบทความใน Link ที่ผมให้ไว้ดูก็แล้วกันนะครับ ^^

อัพเกรด MySQL 4.0.25 -> 4.1.14 1

Posted by AnnoMundi on October 23, 2005

จากที่ได้แต่มอง Linux ค่ายอื่นๆเขาใช้ mySQL 4.1 กันมาสักพักแล้ว ตอนนี้ในที่สุด
Gentoo ก็ปล่อย mySQL 4.1.14 มาให้อัพเกรดกันแล้ว ความจริงมันก็มีให้ลง แต่มัน
mask package ไว้ คือไม่ stable นั่นเอง แต่ตอนนี้ถ้าใครสั่ง emerge sync และ
สั่ง emarge mysql มันก็จะอัพเกรดเป็น mySQL 4.1.14 ทันที

แต่อย่าได้ทำอย่างั้นเชียวครับ ถ้าใครคิดอัพเกรดให้ลองบนเครื่องตนเองก่อนอย่าได้ลอง
ลงบนเครื่อง Production Server เชียวเพราะมันเปลี่ยนไปเยอะเหมือนกันครับ
วิธีการอัพเกรดก็ใช่ว่าจะแค่ emerge เท่านั้นนะครับ มันจะยุ่งยากกว่านั้นหน่อย
ให้ลองดูวิธีการอัพเกรดที่ทางเว็ป Gentoo ทำไว้ครับ ตามลิงก์ด้านล่างเลย

http://www.gentoo.org/doc/en/mysql-upgrading.xml

เท่าที่ผมได้ลองอัพเกรดเครื่องที่บ้านดูก็ไม่มีปัญหาครับ เพียงแต่ mySQL 4.1.x นี่
จะมีเรื่อง Charset เข้ามาเกี่ยวข้อง และเว็ปไซต์ที่มีการเก็บข้อมุลเป็นภาษาไทย
หลังจากอัพเกรดตามเอกสารของ Gentoo แล้ว Charset ของฐานข้อมูลจะเป็น Latin1
ซึ่ง script เดิมๆทั่วไป อย่าง IPB นี่ยังใชห้งานภาษาไทยได้อยู่เหมือนเดิมครับ
แต่การแสดงผลภาษาไทยใน phpmyadmin จะเห็นเป็นภาษาต่างดาว เท่านั้นเอง

ผมทดลองพยายามเปลี่ยน charset ของ database เป็น TIS620 และ UTF-8 เท่าที่ลอง
ตอนแรกๆก็ไม่สามาถทำให้ phpmyadmin แสดงผลข้อมุลที่เป็นภาษาไทยได้ถูกต้อง
แต่ถ้าเซ้ตให้ phpmyadmin แสดงผลข้อมูลภาษาไทยใน database ถูกต้อง การแสดงผล
ภาษาไทยใน script อย่าง IPB ก็จะแสดงผลไม่ถูกต้อง – -”

จนสุดท้ายผมเลยลอง emarge mysql ใหม่ โดยใช้คำสั่งด้านล่างนี้ครับ
(อย่าลืม backup database ก่อนนะครับ)

USE="utf8" emerge mysql


เสร็จแล้วก็เปิดไฟล์ /etc/mysql/my.cnf ขึ้นมาแล้วให้เปลี่ยนค่าต่างๆในบรรดทัดเหล่านี้

character-sets-dir=latin1
default-character-set=latin1


มี่กี่ที่ให้เปลี่ยน latin1 เป็น utf8 ให้หมดเลยครับ แล้วจัดการ restart mySQL ซะ

/etc/init.d/mysqld restart

หลังจากนี้ลองดูใน phpmyadmin เปิดฐานข้อมุลที่มีข้อมุลภาษาไทยดูจะเห็นว่ามันยัง
ไม่ถูกต้องอยู่ ไม่ต้องตกใจเพราะ ให้เรา convert ไฟล์ .sql ที่เรา backup ไว้เป็น UTF8
ผมใช้ KWRITE เปิดไฟล์แล้ว save as โดยเลือก encode format เป็น UTF-8
จากนั้นผมก็ import ฐานข้อมูลกลับเข้าไป ขั้นตอนนี้ถ้าฐานข้อมูลไม่ใหญ่จะใช้ phpmyadmin
ก็ได้ครับ แต่ผมใช้คำสั่ง command line เอา รูปแบบคำสั่งก็ตามด้านล่างเลยครับ

mysql -u -p dbname < backup.sql

ซึ่งหลังจากทำทั้งหมดเสร็จแล้ว คราวนี้การแสดงผลภาษาไทยก็จะถูกต้องแล้วครับ
อย่าลืมนะครับว่า script php นั้นต้องแสดงผลด้วย encode UTF-8 ถ้าเคยใช้เป็น TIS-620
ก็เปลี่ยนด้วยครับ

ปล1. รีบเขียนไปหน่อยอ่านแล้วถ้ามึนๆ ต้องขอโทษด้วยครับ
ปล2. สำหรับเว็ปนี้ เครื่อง server ผมยังไม่ได้อัพเกรด mySQL นะครับ ยังเสียวๆ
เพราะบนเครื่องนี้มีหลายเว็ป และหลายโปรแกรมที่ใช้งาน mySQL เลยรอไปก่อนสักพัก
ถึงค่อยอัพเกรด

Gentoo เปลี่ยน config ของ apache!!!

Posted by AnnoMundi on September 20, 2005

เมื่อคืนนี้ราวๆ 9-10 น. ผมก็ทำการอัพเดทซอฟท์แวร์บนเครื่อง Server หลังจาก emerge sync เสร็จ
ผมก็ใช้คำสั่ง emerge -uDp world ดูก็ปรากฏมีหลายไฟล์ที่ให้อัพเดท เลยจัดารกอัพเดทซะทันที
ด้วยคำสั่ง emerge -uD world จากนั้นก็ไปนั่งเล่นเกมส์รอมัน upgrade/compile เสร็จ…

หลังจากเล่นเกมส์อยู่หลายชั่วโมงกลับมาดูก็ปรากฏว่าเสร็จแล้วเลยดูว่ามี config file อะไรบ้างที่ต้อง
อัพเดทหรือแก้ไข ก็เห็นว่า apache มีอยู่ 1 ไฟล์ที่ต้องอัพเดท ก็คือ /etc/init.d/apache2 ก็เลย
จัดการอัพเดทแล้วลอง Restart ปรากฏว่ามันฟ้องอะไรมาเพียบเลย เลยงงว่าทำไมลองเช็คดูก็เห็น
มีไฟล์ /etc/apache2/httpd.conf โผล่มาก็สงสัยเพราะผกติ Gentoo ไฟล์ config หลักจะคือไฟล์
/etc/apache2/conf/apache2.conf เลยเข้าเว็ป Gentoo ถึงได้รู้ว่า Gentoo เปลี่ยนระบบไฟล์คอนฟิก
ของ apache ซะแล้ว เพิ่งเปลี่ยนมาไม่กี่ชั่วโมงก่อนผมสั่งอัพเดท

สุดท้าย web server เดี้ยงไป 2-3 ชั่วโมงกว่าจะแก้ config ให้ใช้งานได้ เพราะมันเปลี่ยนไปเยอะจริงๆ
ระวหว่างที่ผมแก้คนอื่นที่ใช้ Gentoo และอัพเกรด apache ไปเริ่มทยอยเข้าไปโพสท์บ่นโพสท์ถาม
กันในเว็ปบอร์ดของ Gentoo เท่าที่อ่านแต่ล่ะคนเสียเวลากันหลายชั่วโมงในการแก้เพื่อให้ apache
กลับมาทำงานได้เหมือนเดิม

เฮ้อนี่ผมก็เพิ่งแก้เสร็จ แต่ยังอาจต้องมาปรับแต่งอีกเล็กน้อยให้มันเหมือนเดิม ทำเอาเซ็งไปเลยผม

การแปลงเอกสาร CHM ไปเป็น PDF บน Linux

Posted by AnnoMundi on August 26, 2005

พอดีวันนี้ผมนั่งหา eBook ที่เคยโหลดๆมาอ่านก็พบว่าหลายๆไฟล์เป็นไฟล์ CHM
ซึ่งปกติเป็นเอกสารที่ใช้กันบน Windows แต่บังเเอิญผมใช้ Linux อยู่ ก็เลย
ต้องมานั่งหาวิธีที่จะอ่านไฟล์ CHM (Compiled Help Files) ซึ่งใน Linux ก็มี
อยู่หลายตัวที่ใช้เปิดไฟล์ CHM ก็คือ xchm, kchm และ pychm แต่ว่าบังเอิญ
ที่ทุกตัวดันเป็น Mask Package หมดเลยใน Gentoo Linux ซึ่งผมก็ไม่อย่าใช้
เพราะมันไม่ stable เอามากๆ

ก็เลยต้องหาวิธีแปลงไฟล์ CHM เป็นเอกสารชนิดอื่นซึ่งก็ search เจอในฟอรั่ม
ของ Gentoo เอง ต้องใช้ chmlib และ Htmldoc ซึ่ง chmlib จะ
แตกเอกสาร CHM เป็นไฟล์ HTML (และรูป) ส่วน HtmlDoc จะเปลี่ยนไฟล์
HTML เป็นเอกสาร PDF

ขั้นตอนการทำสำหรับ Gentoo ก็คือ
1. ลง chmlib และ htmldoc
emerge chmlib htmldoc

2. ใช้ chmlib แปลงไฟล์CHM เป็น HTML
chmextract ชื่อไฟล์.chm ไดเร็กทอรี่ปลายทาง
มันก็จะแตกไฟล์ CHM ไปยังไดเร็กทอรี่ที่เราระบุ ในไดเร็กทอรี่นั้นจะมีทั้งไฟล์
HTML และรูปอยู่หลายไฟล์ขึ้นอยู่กับไฟล์ CHM มีจำนวนหน้าอกสารมากน้อย
แค่ไหน

3. เรียกโปรแกรม htmldoc อาจเรียกผ่านทาง Terminal/Shell ก็ได้
htmldoc
โปรแกรมจะมีหน้าตาดังรูปล่างครับ

HTMLDOC
การใช้งานให้เรา Add ไฟล์ HTML เข้าไปโดยต้องระวังเรื่องลำดับเอกสาร HTML
ที่เรา Add เข้าไปไม่งั้นเวลาแปลงออกมาแล้วลำดับหน้าเอกสารอาจผิดได้
ตรง Document Type ให้เลือกเป็น Web Page นะครับ จากนั้นคลิ๊กที่
Tab Output เลือกชื่อไฟล์ที่จะเซฟ และเลือก Format ซึ่งก็ให้เลือกเป็น PDF
เมื่อเราเลือก Format เป็น PDF แล้วเราจะสามารถคลิ๊กไปที่ Tab PDF ได้
ซึ่งเราสามารถเลือกว่าจะแปลงเป็นเอกสาร PDF version ไหน เมื่อเรา
เซ็ตทุกอย่างเรียบร้อยก็กดปุ่ม Generate ได้เลยก็จะได้เอกสาร PDF ออกมา