Tag Archives: hack

Load Cycle Count !

ไม่นานมานี้ที่ http://slashdot.org มี article เรื่อง Ubuntu May Be Killing Your Laptop’s Hard Drive .. เรื่องของเรื่องก็คือ ฮาร์ดดิสก์โน้ตบุ๊คสมัยใหม่จะมีฟีเจอร์ load/unload ซึ่งทำงานคล้ายๆ กับการ park หัวอ่านของดิสก์ วิธีการ load จะเคลื่อนหัวอ่านเข้าหลังจาก spin จานจนได้รอบที่ทำให้หัวอ่านลอย และการ unload ก็จะเคลื่อนหัวเก็บก่อนแล้วค่อย spin down ฟีเจอร์ load/unload มีจำนวนรอบในการทำงานจำกัด ทำบ่อยๆ กลไกมันจะมีความแม่นยำลดลงจนอาจจะเกิดผลเสียกับแผ่นจาน ตัวเลขโดยประมาณคือที่ 600,000 รอบก็จะเริ่มมีอาการไม่ค่อยน่าเชื่อถือ .. พูดง่ายๆ คือ load/unload บ่อยๆ อาจทำให้อายุดิสก์จะสั้นลงได้ .. ทีนี้พวกฮาร์ดดิสก์ของโน้ตบุ๊คที่มี power management ก็มักจะลดการใช้พลังงานอยู่ใน stand-by mode โดยการ spin down หรือไม่ก็ sleep ไปเลย ทำให้ดิสก์ต้อง load/unload อยู่เรื่อยๆ หลังจากอ่าน article แล้วเลยดู load cycle ของเครื่องตัวเองสักหน่อย …

# smartctl -a /dev/sda
...
9 Power_On_Hours 0x0032 094 094 000 Old_age Always - 2484
...
193 Load_Cycle_Count 0x0032 076 076 000 Old_age Always - 248068
..

เฮือก! ดิสก์ข้าน้อย load/unload ชั่วโมงละ 100 ครั้ง! เป็นไปได้ไงเนี่ยะ! .. คำนวณหยาบๆ ก็ได้คำตอบว่าถ้ายังคงอัตรานี้ ดิสก์อาจหมดอายุขัยในอีก 11 – 12 เดือนข้างหน้า (- -‘)

วิธีแก้ไข ? ตรงไปตรงมาก็ปิด power management ซะ

# hdparm -B 255 -S 0 /dev/sda

ดิสก์บางตัวอาจต้องใช้ -B 254 แทน ส่วนค่า -S 0 จะเป็นการ disable stand-by timeout ถ้าไม่ชอบ ลอง man hdparm เพิ่มเติมเอาละกัน .. เอาคำสั่งนี้ไปใส่ใน /etc/rc.local และ /etc/acpi/resume.d/99-disable-disk-pm.sh เลยก็น่าจะดี … แต่ทำอย่างนี้ไม่ใช่ว่าไม่มีผลเสีย อย่างน้อยเวลาใช้ on-battery ลดลงแน่ๆ

เรื่องนี้มีข้อสังเกตหลายประการที่ทำให้มีการถกต่อไปอีก อย่างแรกคือหัว article ออกจะ FUDs พอสมควร ที่มาของเรื่องนี้เกิดจากการถกกันใน launchpad เลยจั่วหัวเป็น Ubuntu ซะงั้น ที่จริงแล้ว OS ไหนๆ ก็มีปัญหากับกรณีนี้ได้หมดแหละ ในส่วน Ubuntu เองมี script ปรับการทำงานของ power management ที่ส่งผลกับ load cycle จริง แต่มันจะทำงานเฉพาะใน Laptop Mode ซึ่ง disabled by default .. ทีนี้ทำไม load cycle มันวิ่งกระฉูดขนาด 100 cycle ต่อชั่วโมงก็ยังหาคำตอบกันไม่ได้ … อย่างที่สองคือกรณีของข้าน้อย 100 cycle ต่อนาที นี่มันผิดปกติมาก! จะเป็นตัวเลขที่ถูกต้องหรือเปล่าก็ไม่แน่ใจเหมือนกัน .. อย่างที่สามคือถกกันขำๆ ว่างานนี้สงสัย OS vendor สมคบคิดกับบริษัทผลิตดิสก์ทำให้เจ๊งไวจะได้ซื้อดิสก์ใหม่บ่อยๆ .. (- -)a … เอาเข้าไป .. ถ้าดิสก์ยี่ห้อไหนมันเจ๊งง่ายตูก็ไม่ซื้อมาใช้อยู่ดีแหละน่า .. สุดท้าย ค่า -B 255 -S 0 มีผลดีหรือเสียต่อตัวดิสก์เองหรือเปล่าก็ไม่รู้ .. เครื่องใครเครื่องมัน .. ดิสก์ใครดิสก์มัน .. ตัวใครตัวมันล่ะครับ :P

Iceweasel 2.0.0.1 for Edgy (again)

แจ้งเพื่อทราบ .. iceweasel สำหรับ edgy ที่รีลีสไป ตอนนี้เอาออกจาก kitty repo ก่อน เพราะยังติดปัญหาตอนติดตั้งกับถอดออกจากระบบ มีไฟล์บางส่วนทับกับ firefox และติดที่ใช้ pango โดยปริยายซึ่งมันจะแสดงผลภาษาไทยเพี้ยนๆ

ใครที่พบปัญหาให้ set

MOZ_DISABLE_PANGO=1

ก็พอจะช่วยได้ (credit to พี่เทพ)

kitty repo. คงไม่ maintain iceweasel นะครับ .. ไว้รอ official ของ ubuntu + pango แก้ไขเลยดีกว่า :P

TIS-620 in Evolution

เคยแจ้ง bug นี้ พร้อมกับส่ง patch ไปตั้งแต่สมัย Evolution 1.4.x .. จากนั้น ximian (ในสมัยนั้น) ก็เงียบๆ ไป .. ต่างคนต่างเงียบ กระทั่งเกือบสองปีต่อมาถึงเริ่มมีการเคลื่อนไหวอีกครั้ง ล่าสุดช่วงนี้ gnome 2.14 ก็จวนแล้ว ทาง Andre Klapper ที่กำกับดูแล patch เริ่มก็มาตามจี้ให้ทัน Evolution 2.6 พี่เทพเลยมาช่วยสานต่อและกระตุ้นให้ช่วยกันดันให้ผ่าน .. ปรากฏว่า พี่เทพเจอบั๊กอีกตัวที่ทำให้ทดสอบ gnome cvs ไม่ได้ .. ส่วนผมเอาแค่ checkout ตัว cvs ออกมายังได้ไม่ครบด้วยซ้ำ (- -‘) … เลยได้แค่รายงาน based on evolution 2.4.1 ไปว่าปัญหามันเกิดขึ้นเพราะอะไร

เรื่องของเรื่องก็คือ header ของเมลจะมีการระบุว่า content ใช้ charset อะไร .. กรณี header ระบุเป็น TIS-620 หรือ UTF-8 แล้วใช้ตามนั้นจริงๆ จะไม่มีปัญหา .. แต่จะมีเมลภาษาไทยจำนวนไม่น้อย (เท่าที่มีอยู่ใน box ก็ ประมาณ 30-40%) ที่ encode เป็น TIS-620 แต่ header กลับระบุว่า charset เป็น ISO-8859-1 กรณีนี้โปรแกรมอ่านเมล (แทบ) ทุกตัวจะพยายามแสดงผลเป็น ISO-8859-1 ทำให้เมลภาษาไทยแสดงเป็นภาษาขอม .. ถ้าจะให้แสดงผลถูกต้องก็ต้องบังคับ character encoding ซึ่งโปรแกรมอ่านเมลที่นิยมใช้กันจะเลือกจากเมนูได้ .. ที่ผ่านมา เมนู character encoding ของ evolution จะไม่มีภาษาไทย (TIS-620) ให้เลือก .. patch ที่ผมทำก็แค่ enable ให้มันมีให้เลือกเท่านั้นเอง

พอแจ้งไป Andre ก็เลยอยากให้ช่วยส่งตัวอย่างเมลไปให้ทดสอบ ท้ายที่สุดสถานะของ bug #251062 ปรับเป็น fixed/resolved เรียบร้อย .. เช็คจาก gnome cvs ก็เห็นว่ามี TIS-620 แล้ว .. ก็ค่อนข้างแน่นอนว่า Evolution 2.6 จะมี TIS-620 ให้เลือกในเมนู character encoding … สบายละ .. ต่อไปก็ไม่ต้อง maintain patch + build evolution เองแล้ว :)

GDictThai 0.0.1

GDictThai 0.0.1 เขียนเลียนแบบ KDictThai ของท่าน donga .. ดาวน์โหลดได้ที่นี่

 

ก็เพิ่งได้เขียน GTK+ apps ครั้งแรกก็หนนี้แหละ (ที่ผ่านมาแฮ็คโค้ดชาวบ้านตลอด) รุ่นนี้การแสดงผลยังไม่ค่อยสวย ทนๆ ใช้ไปก่อน .. เอาไว้รุ่นหน้าจะปรับปรุงการแสดงผล พร้อมกับย้ายไปใช ้libglade :P

comments | bug reports ส่งไปยัง kitty at kitty dot in dot th เน้อะ

Dillo + thai patch

Build / Rebuild ทั้งคืน + ดู Band of Brothers ไปด้วย (ฮุๆๆ ดีใจ หามาตั้งนาน) .. สถานะตอนนี้ทำมาสองวันได้ 72 แพ็กเกจแล้ว ยังเหลืออีกราวๆ 40 ที่ต้องทำต่อ ตั้งใจจะทำให้เสร็จก่อนวันจันทร์ที่จะถึงนี้

หลายวันก่อน มีคนถามใน #tlwg ว่า browser ตัวไหนทำงานได้เร็วๆ บ้าง สมาชิกในห้อง #tlwg ช่วยกันตอบ และก็มีชื่อ Dillo อยู่ในนั้นด้วย .. พูดถึง Dillo ซักนิด ..Dillo เป็นเบราเซอร์ที่เขียนด้วย C เพียวๆ มี footprint เล็กมาก ทำงานเร็ว เพราะใช้ bitmap font ใช้ GTK+ 1.x และตัดโครงสร้าง HTML ที่ซับซ้อนมากๆ ออกไปหมด ซึ่งกลายมาเป็นข้อด้อยของ Dillo คือไม่สนับสนุน CSS, HTML Tag บางตัว (เช่น frame) .. และแสดงผลเว็บได้เฉพาะภาษาอังกฤษ

วันนี้เลยพยายามแฮ็ก Dillo ให้แสดงภาษาไทยได้ หลังจากค้นในซอร์สดูก็พบว่า เหตุที่แสดงผลได้เฉพาะภาษาอังกฤษมาจากการเขียนโปรแกรมฮาร์ดโค้ดฟอนต์ที่ charset เป็น ISO-8859-1 ไว้เลย ก็เลยเปลี่ยนเป็น TIS-620 และฮาร์ดโค้ดฟอนต์ sanserif ของคุณไพศาลแทน ตอนนี้แสดงภาษาไทยได้แล้ว ทำ rpm ไว้ให้เรียบร้อย ขอเวลาทำ rpm ที่เหลือให้เสร็จก่อน ผมจะ sync ทั้ง rpm และแพตช์ขึ้นเซิร์ฟเวอร์ให้ครับ

.. จัดให้ตามคำเรียกร้อง แยก perl-SDL 1.x และ perl-SDL 2.x เพื่อให้สามารถลงขนานกันได้ ตอนนี้เรียบร่้อยแล้ว หมดปัญหาเรื่องติดตั้ง frozen-bubble ไม่ได้ซะที :P .. ยังมีไลบรารีหลายตัวที่ติดตั้งขนานกันหลายๆ เวอร์ชันไม่ได้ ซึ่งต้องเร่งแก้ภายใน 1-2 สัปดาห์หลัง MrChoke ออก base สำหรับผลิตทะเลเวอร์ชันถัดไป (จะเอาเป็น stage3 จริงๆ อะ ?)

มีข่าวแว่วๆ มาจาก #tlwg ว่าพี่โดมจะจัดคอร์ส LaTeX โดยเชิญพี่เทพมาเป็นวิทยากร ค่าอบรมยังไม่กำหนด (มั๊ง .. ) .. น้องฝ้ายว่า GTK+ น่าจะได้คนเยอะกว่า (ก็อาจจะเป็นอีกคอร์สที่จะจัดต่อจาก LaTeX ?) … ทั้งสองคอร์ส ถ้าจัดกันจริงๆ และผมไม่ติดอะไร ไม่พลาดแน่ :)

Kernel Hacking (again)

เข้ามาเขียน blog วันนี้ตกใจมาก counter ของ blog วิ่งไปเกือบหกร้อย ในวันเดียว (ปกติร้อยเดียวก็ถือว่าเยอะแล้ว) .. คิดๆ ดู มันเป็นไปไม่ได้อยู่แล้วว่าอยู่ๆ blog ผมมันจะฮ็อตโคตรๆ ขนาดนั้น เลยอนุมานไปว่า เบลดันดี (belldandy – ชื่อเซิร์ฟเวอร์) จะโดนอะไรเข้าแล้วหรือเปล่า ? .. เช็ค http-access ปรากฏว่า 2 ใน 3 มาจากไอพีเดียวของอุทยานวิทยาศาสตร์ (ก็ science park นั่นแหละ) ดูคล้ายๆ พวกโปรแกรมดูดเว็บเพจ หรือไม่ก็แคช ? .. ขี้เกียจหาต่อ .. เอาเป็นว่าคงไม่ใช่โดนโจมตี หรือไวรัส .. พอแล้ว

วุ่นวายกับเคอร์เนลอีกรอบ .. แดเนียล ริตซ์ ตอบเมลมาว่า โค้ดท่ี่ให้มาคราวที่แล้วทำงานไม่ได้ชัวร์ๆ เพราะ กำหนดค่าให้ผิดตัวแปร ฮากลิ้งครับ .. ประมาณเขากำหนด pirq = info->irq[pin].link ไว้ชั่วคราว .. แล้วเราก็แก้เฉพาะ pirq แต่ไม่ได้แก้ irq[pin].link ซึ่งเป็นตัวแปรในโครงสร้างที่จะเอาไปหา irq อีกที วันนี้เลยแก้เป็น pirq = info->irq[pin].link = 0x68 .. ผล ล้มเหลว อีกแล้ว .. ผมลองสั่งให้พิมพ์ค่าออกมา ปรากฏว่า ผลที่ได้คือ pirq = 0x68 แต่ irq[pin].link = 0x63 !! .. เพี้ยนโคตร พลาดอะไรไปหรือเปล่าหว่าเรา ??

งานที่สอง แดเนียลให้ลองใช้ irq 9 ดู (ผมเคยบอกไปว่าบน MS Windows กำหนด CardBus เป็น irq 9) .. ว่าแล้วก็ฮาร์ดโค้ด irq = 9 ลงไป รีคอมไพล์ บูตขึ้นมา IRQ 10 No body cared! จ๋อย .. แบบนี้แปลว่ามันจะใช้ irq 10 เหมือนเดิม .. ส่งผลกลับไปให้แดเนียลดู .. CardBus ตัวนี้ถ้าไม่บังคับ irq สงสัยจะไม่ได้จริงๆ แฮะ .. คิดในแง่ดี อย่างน้อยก็รู้ว่าแบบไหนทำงานไม่ได้

งานที่สาม อัปเดตแพ็กเกจอีกนิดหน่อย liferea โปรแกรม RSS reader ขึ้นมาเป็น 0.4.8 แล้ว .. ใช้ gtkmozembed เสยย เลยใส่ depend mozilla เข้าไปอีกตัว ..ไม่รู้เอาไปทำอะไร เพราะเดิม liferea ใช้ gtkhtml อยู่แล้วนี่หว่า ?

งานสุดท้าย เตรียม screenshot ไปอวดในงานโอเพนซอร์ส เอาให้ตาแฉะไปเลย ฮา..