เพิ่งอ่าน นิยายเด่นในฉบับ ของ บางกอกรายสัปดาห์ จบ … ขอบคุณพี่หน่อยมากๆ ที่เอามาฝากกันในห้อง #tlwg … ระหว่างอ่าน น้ำตาไหลไปหลายรอบ ..
ถ้ายังไม่เ่คยอ่าน ก็ขอแนะนำครับ
.. เรื่องนี้ยาวประมาณ 6-8 ชั่วโมงอ่าน ..bookmark ไว้ได้เลย :D
เพิ่งอ่าน นิยายเด่นในฉบับ ของ บางกอกรายสัปดาห์ จบ … ขอบคุณพี่หน่อยมากๆ ที่เอามาฝากกันในห้อง #tlwg … ระหว่างอ่าน น้ำตาไหลไปหลายรอบ ..
ถ้ายังไม่เ่คยอ่าน ก็ขอแนะนำครับ
.. เรื่องนี้ยาวประมาณ 6-8 ชั่วโมงอ่าน ..bookmark ไว้ได้เลย :D
โปรแกรมอ่านเมลเป็นโปรแกรมที่หาถูกใจได้ยากที่สุด บนลินุกซ์นี่เคยลองโปรแกรมอ่านเมลมาเป็นสิบตัว ตั้งแต่ pine, mutt, .. สุดท้ายก็มาลงที่ sylpheed ทำงานเร็ว กินหน่วยความจำก็น้อย ภาษาไทย ok บันทึกเป็น MH export เป็น mbox ได้ ใช้ GTK+ 1.x .. ระยะหลังๆ พยายามปรับเข้า GTK 2.x / GNOME 2.x เลยได้ตามหาโปรแกรมอ่านเมลอีกรอบ ..
สุดท้าย ก็มาใช้ Evolution จนได้ .. กินหน่วยความจำพอสมควร แต่ไม่บ้าเลือดเหมือน Tbird .. เวอร์ชัน 2.0.1 นี่ถอดชนวนระเบิดไปหลายจุด เท่าที่ใช้มาก็ยังไม่มีอาการแครชอย่างที่เคยเจอกับ 1.5.x/2.0.0 … แสดงผลภาษาไทยก็ ok … อืม คงลองใช้ดูสักวันสองวัน …
สัปดาห์ก่อนโน้นออกตุนเสบียง ไปเจอลูกอมยี่ห้อ UNIX กับมาม่าต้มยำเส้นชาเขียว (- -‘) … สอยมาซะ
SCO จะฟ้องมั้ยวะเนี่ยะ ลอล .. (ที่จริงคนที่ฟ้องได้น่าจะเป็น Open Group ซึ่งถือสิทธิ์ TM ของ UNIX)
แกะมาม่าใส่ถ้วย .. (อันนี้ถ้วยบะหมี่เอฟเอฟ ขนาดกำลังพอดี มีฝาให้ด้วย)
เส้นมาม่าผสมชาเขียว …
สุกแล้ว รสต้มยำ มีแต่เครื่องปรุงกับ พริก ไม่ให้น้ำมัน พริกเผา .. กินแล้วก็ ok เอาอะไรมาก บะหมี่กึ่งสำเร็จรูป
แจ้งที่ผิด ของ blog เมื่อวานนะครับ .. สำหรับ udev จะให้ทำงานได้ต้อง enable ramdisk (CONFIG_BLK_DEV_RAM) ไม่ใช่ tmpfs .. และควรตั้ง Initial RAM disk support (CONFIG_BLK_DEV_INITRD) ด้วย .. :P
เริ่มทยอยทำ Extras packages สำหรับ TLE 7.0 แล้ว .. อยากคอมไพล์ด้วย GCC 3.4 ให้ได้ทั้งหมด (TLE 7.0 ใช้ GCC 3.4 เป็นตัวหลัก และ GCC 3.3 เป็นตัว compat.) บางแพ็กเกจก็คอมไพล์ยากเป็นบ้าทั้งที่ใช้ GCC 3.3 แล้วผ่านฉลุย …. GCC 3.4 มันคงเข้มงวดมากขึ้นแหละ โดยเฉพาะ C++
สองสามวันมานี้ #tlwg สนทนาธรรมกันบ่อย โยงไปถึงกลศาสตร์ควอนตัม (quantum mechanics) ด้วย .. ในบางมุมมองแล้ว ทั้งสองเรื่องเป็นการพยายามอธิบายสิ่งเดียวกันนั่นแหละ .. :)
อย่างที่บอกไปวันก่อนเรื่อง gnome-volume-manager ว่ามันอาศัยการทำงานของโปรแกรมอื่นๆ อีกหลายตัว ซึ่งยุ่งๆ อยู่ประมาณนึงเหมือนกัน .. สมมติ ว่าเสียบ USB drive เข้ากับ USB port การทำงานจะประมาณนี้
usb -> kernel -> /sbin/hotplug -> udev -[dbus] -> hald – [dbus] -> g-v-m
เมื่อมีอุปกรณ์ใหม่ปรากฏในระบบ hotplug ในเคอร์เนลจะได้รับสัญญาณจากฮาร์ดแวร์ เคอร์เนลจะแจ้งเตือน userspace ผ่านทาง /sbin/hotplug .. สคริปต์ของ hotplug จะเรียกใช้ udev ซึ่งทำหน้าทีสร้างไฟล์ใน /dev เพื่อใช้ในการอ้างอิง USB drive จากนั้น HAL (daemon/agent) จะได้รับสัญญาณผ่านทาง D-BUS ว่ามีอุปกรณ์เพิ่มเข้ามาในระบบ .. HAL จะเป็นตัวแจ้งผ่านทาง D-BUS ไปยัง applications ต่างๆ เพื่อให้รู้ว่ามี USB drive ต่อพ่วงเข้ามา (สำหรับกรณีนี้ HAL จะทำหน้าที่ update /etc/fstab ด้วย) .. g-v-m ก็จะได้รับแจ้ง และทำงานตามคอนฟิกที่ผู้ใช้กำหนดไว้ (e.g., load kernel modules & mount USB drive)
สำหรับการติดตั้งใช้งาน จะวุ่นวายหน่อยก็ตรง udev ซึ่งจะควรจะทำงานเป็นอันดับแรกๆ ใน init scripts ตามหลัง sysfs ติดๆ (udev ต้องใช้ข้อมูลจาก sysfs ในการทำงาน) แปลว่า udev ต้องสามารถสร้างไฟล์ใน /dev ได้ก่อนที่จะ remount / เป็น read/write หลายๆ ดิสโตรจึงเลือกให้ udev ทำงานบน tmpfs แทนสตอเรจจริงๆ .. ใครที่คอมไพล์เคอร์เนลเองก็อย่าลืม enable tmpfs ไว้ด้วยเน้อะ
ดราฟต์โลโก้ ‘โลมา’ เป็น svg จากภาพบิตแม็พ 48×48 จุด .. ลอกอยู่พักใหญ่ก็เลิก วาดใหม่หมดเลยดีกว่า โดยให้ออกมาคล้ายๆ โลโก้เดิม จะได้ไม่ผิดสังเกตมาก .. ผลลัพธ์ออกมาเป็นแบบนี้:
ดูแล้วมั่วๆ พอสมควร แต่พอย่อเป็นไอคอนแล้วก็คงไม่เห็นความมั่วหรอกน่า :P
PS: ‘โลมา’ ไม่ใช่ ‘ปลาโลมา’.. โลโก้วาดบน Inkscape 0.39 / Aowthai
หนึ่งในฟีเจอร์ที่น่าสนใจของ GNOME 2.8 คือ gnome-volume-manager (g-v-m) ซึ่งช่วยให้ใช้งาน removeable storage ต่างๆ ได้ง่ายขึ้น เช่น เสียบ USB drive หรือแผ่นซีดีแล้ว mount ให้อัตโนมัติ แสดงไอคอนบนเดสก์ท็อปให้เลย หรือเสียบกล้องดิจิทัลก็จะเรียกโปรแกรมจัดการภาพถ่าย (e.g., gphoto, gthumb) ให้ โหลดแผ่น DVD แล้ว Xine playback ให้เลย ฯลฯ
g-v-m อาศัยการทำงานร่วมกับ HAL, D-BUS, udev และ Hotplug ซึ่งโยงเข้าไปถึงในเคอร์เนล .. ติดตั้งใช้งาน ไม่ยาก default config ทุกดิสโตรเตรียมไว้หมดแล้ว ก็ควรจะทำงานได้เลย .. แต่ถ้าอยากรู้รายละเอียดลึกๆ แล้วค่อนข้างวุ่นวายอยู่เหมือนกัน ตอนนี้พอจับใจความได้บ้างแล้ว ไว้รู้เรื่องมากกว่านี้จะมาเล่าให้ฟังอีกที :P
เก็บตก packages ของทะเล
พักนี้วุ่นวายกับงานเอกสาร .. เขียน document class ของ LaTeX เองนี่ัมันยากเหมือนกันแฮะ T_T
สัปดาห์ที่แล้ว MrChoke แจ้งมาว่า ทะเลจะใช้ GCC 3.4 เป็นคอมไพเลอร์หลัก และใช้ GCC 3.3 เป็น compat .. แปลว่า ต้อง rebuild แพ็กเกจทั้งหมด (T_T) .. นั่งปั่น เสาร์-อาทิตย์ สองวันเสร็จ ทั้งหมด 319 RPMS / 199 SRPMS .. เข้า people เรียบร้อยแล้ว :)
ยังเหลือ extras ที่มีจำนวนพอๆ กัน .. แต่อันนี้ทยอยทำไปเรื่อยๆ ได้
สั่ง apt-get update/upgrade จาก NECTEC ปรากฏว่ารีบูตแล้วค้าง .. ไม่มี /dev/console ! .. เลยบูตแผ่นทะเล สั่ง linux rescue เข้าไป MAKEDEV .. make อะไรได้เอาหมดเลย ตอนนี้ /dev เกือบๆ หมื่นไฟล์ (- -‘) .. ก็ยังดีกว่าใช้งานไม่ได้แหละ .. เฮ่อ
แก้โค้ด atom feed นิดหน่อย ตอนนี้โปรแกรม feed reader อย่าง sage หรือ thunderbird ควรจะรับ feed จาก kitty.in.th ได้แล้ว :)
หลังอัปเกรดเป็น Xorg 6.8/6.8.1 พบว่า FPS ของ glxgears ลดลงไปเกือบครึ่ง ทีแรกเข้าใจว่าเป็นเพราะ Xorg มันช้าเอง .. แต่พอมาเห็น syslog ถึงได้รู้ว่าไดรเวอร์ DRM ของ i830 ในเคอร์เนลมันมีปัญหา เวลาจะโหลดทำงานจะเกิด Oops! .. พอ i830 DRM มันโหลดไม่ได้ Direct Rendering เลยไม่ทำงาน ..
อาการก็จะประมาณนี้
Sep 19 12:05:51 peorth kernel: [drm:i830_dma_initialize] *ERROR* can not find dma buffer map! Sep 19 12:05:51 peorth kernel: [drm:i830_irq_emit] *ERROR* i830_irq_emit called without lock held Sep 19 12:05:51 peorth kernel: mtrr: 0x98000000,0x8000000 overlaps existing 0x98000000,0x200000 Sep 19 12:05:51 peorth kernel: Unable to handle kernel paging request at virtual address f000e2d3 Sep 19 12:05:51 peorth kernel: printing eip: Sep 19 12:05:51 peorth kernel: b023b091 Sep 19 12:05:51 peorth kernel: *pde = 00000000 Sep 19 12:05:51 peorth kernel: Oops: 0000 [#1] Sep 19 12:05:51 peorth kernel: Modules linked in: ipv6 ohci1394 ieee1394 usbhid yenta_socket uhci_hcd usbcore snd_intel8x0 snd_ac97_codec snd_pcm snd_timer snd_page_alloc snd_mpu401_uart snd_rawmidi snd_seq_device snd soundcore orinoco_cs ds pcmcia_core orinoco hermes e100 sg scsi_mod Sep 19 12:05:51 peorth kernel: CPU: 0 Sep 19 12:05:51 peorth kernel: EIP: 0060:[] Not tainted Sep 19 12:05:51 peorth kernel: EFLAGS: 00013296 (2.6.8.1-ck6) Sep 19 12:05:51 peorth kernel: EIP is at i830_kernel_lost_context+0x11/0x70 Sep 19 12:05:51 peorth kernel: eax: f000e2c3 ebx: 00000000 ecx: 00000010 edx: bf15cc10 Sep 19 12:05:51 peorth kernel: esi: b03f76a0 edi: bedbe000 ebp: b03f7820 esp: bedbeed0 Sep 19 12:05:51 peorth kernel: ds: 007b es: 007b ss: 0068 Sep 19 12:05:51 peorth kernel: Process X (pid: 1027, threadinfo=bedbe000 task=bf15cc10) Sep 19 12:05:51 peorth kernel: Stack: 00000000 b023d207 b03f76a0 affff718 00003286 00000000 b03f76a0 b02372e3 Sep 19 12:05:51 peorth kernel: b03f76a0 b03f7d0c b03f7d14 b014d8c0 bedbef14 08806bf0 00000000 00000001 Sep 19 12:05:51 peorth kernel: 0000000a 00000000 bf15cc10 b01163f0 00000000 00000000 beeb7d80 bf2d01e8 Sep 19 12:05:51 peorth kernel: Call Trace: Sep 19 12:05:51 peorth kernel: [] i830_dma_quiescent+0x17/0xb0 Sep 19 12:05:51 peorth kernel: [] i830_lock+0x203/0x2b0 Sep 19 12:05:51 peorth cups-config-daemon: cups-config-daemon startup succeeded Sep 19 12:05:51 peorth kernel: [] do_sync_read+0x80/0xb0 Sep 19 12:05:51 peorth kernel: [] default_wake_function+0x0/0x20 Sep 19 12:05:51 peorth kernel: [] default_wake_function+0x0/0x20 Sep 19 12:05:51 peorth kernel: [] i830_ioctl+0xe4/0x160 Sep 19 12:05:51 peorth kernel: [] sys_ioctl+0xc9/0x240 Sep 19 12:05:51 peorth kernel: [] sysenter_past_esp+0x52/0x71 Sep 19 12:05:51 peorth kernel: Code: 8b 40 10 8b 90 34 20 00 00 81 e2 fc ff 1f 0 0 89 51 14 8b 43
และถ้าดูด้วย glxinfo หรือ xdriinfo โปรแกรมก็จะรายงานว่า direct rendering มันไม่ทำงาน
ทางแก้ เท่าที่หาเจอเวลานี้ มีสองทาง
ติดตั้งเคอร์เนล >= 2.6.9 RC2 ซึ่งรวมไดรเวอร์ตัวใหม่เข้าไปแล้ว ไดรเวอร์ใหม่นี้ชื่อ i915 รองรับกราฟิกชิปของอินเทล ตระกูล 830 845G 852GM 855GM 865G 915G เป็นไดรเวอร์ที่ใช้กับ Xorg >= 6.8 และ XFree86 > 4.4 .. ส่วน Xorg < 6.8 และ XFree86
.. ได้คำตอบแล้วว่า สายพานไทม์มิ่งอันที่ เปลี่ยนกับศูนย์มิตซูฯ ตอนแสนกิโลและขาดไปเมื่อวาน ไม่ไช่อะไหล่แท้ของศูนย์ฯ .. เวรแล้วมั้ยล่ะ .. เรื่องนี้สอนให้รู้ว่า ต่อให้เป็นศูนย์ฯ ของรถยี่ห้อนั้นๆ ก็ใช่ว่าจะไว้ใจได้ … เซ็งจริงๆ … วันนี้เลยใช้รถอีกคัน ขับมากรุงเทพฯ .. กลับช้ากว่ากำหนดการเดิมหนึ่งวัน ตารางงานเลยอัดแน่นเข้าไปอีก ..
อ่อ ไหนๆ ก็ไหนๆ พูดถึงคำว่า ‘กำหนดการ’ ซักหน่อย หลายๆ คนมักจะไปใช้คำว่า ‘หมายกำหนดการ’ แทนโดยไม่รู้ว่า ‘หมายกำหนดการ’ เป็นคำราชาศัพท์ ใช้ในความหมายของลำดับขั้นตอนในราชพิธี .. พิธีการของสามัญชนให้ใช้ ‘กำหนดการ’ เฉยๆ เน้อะ ..
อีกคำที่เจอบ่อยมากคือ ‘เนื่องด้วย..’ ซึ่งเป็นคำที่ไม่มีความหมาย ถ้าจำไม่ผิด อ. สุนีย์ เป็นผู้ที่ออกมาติงเรื่องการนำคำนี้ไปใช้เมื่อหลายปีก่อน (ถ้าผิดก็ขออภัย ..) แต่ทุกวันนี้ใช้กันจนไม่รู้ผิดถูกแล้ว โดยเฉพาะจดหมายราชการนี่แหละที่เป็นตัวอย่างให้เห็นเป็นประจำ .. หากจะใช้ให้ถูก มีให้เลือกเป็นคำว่า ‘เนื่องจาก .. ‘ หรือ ‘ด้วย ..’ เฉยๆ ก็ได้
ลองกูเกิ้ลดู จะรู้ว่าคนไทยใช้สองคำนี้ผิดมากขนาดไหน :P