CWT powered by Python!

Moblin 2.1 กับภาษาไทย และ wireless

เมื่อวันเสาร์ที่ผ่านมาผมได้ไปต่อแถวซื้อ Windows 7 (ราคาโปรโมชั่น) พอได้ก็รีบเอามาลองใน netbook (Lenovo S10) ปรากฏว่ายังไม่ถูกใจเท่าไหร่ ประกอบกับตอนนี้ที่ office มี laptop อีกตัวให้ใช้ทำงานแล้ว เจ้า netbook นี่เลยกลายเป็นของที่ผมจะลงอะไรเล่นก็ได้ ก็เลยลองเอา Moblin 2.1 ซึ่งยังเป็นตัว preview มาลองดู ซึ่งวิธีการลงก็ง่ายมากครับ แค่ download image มาเขียนลง flash drive หรือ DVD แล้วก็ boot ได้เลย ตอน boot จะมี menu ถามว่าจะ run แบบ live image หรือจะ install ซึ่งผมก็ เลือก install

ขั้นตอนการลงก็ไม่ได้ต่างจากการลง Linux distro อื่นๆ นัก แต่ตัดขั้นตอนต่างๆ ให้ง่ายกว่าเดิม พอลงเสร็จ และ reboot เครื่องก็พบกับสิ่งที่น่าประทับใจทันที นั่นคือการ boot ที่เร็วอย่างไม่น่าเชื่อ แค่ประมาณ 15 วินาทีเท่านั้น เสร็จนี่คือพร้อมใช้งานเลยนะครับ harddisk ก็หยุดการอ่านแล้ว GUI ขึ้นมาพร้อมใช้งานได้ทันที

สิ่งแรกที่ผมตรวจสอบเจ้า Moblin ที่ boot ขึ้นมาคือการเชื่อมต่อกับ network ซึ่งก็พบว่า wireless นั้นใช้ไม่ได้ แต่ใช้ LAN และ Bluetooth ได้ทันที ซึ่งก็ไม่น่าแปลกใจเพราะเจ้า S10 นี้ใช้ chip wireless ของ broadcom ซึ่งยังไม่มี driver แบบ opensource ดังนั้นผมจึงต้องเสียบสาย LAN ไปก่อนเพื่อไป download driver

เนื่องจาก Moblin นี้มีระบบการจัดการ package ที่อินเทลใช้คำว่า "ยืม" มาจาก Fedora ดังนั้นผมจึงเปิด terminal แล้ว sudo -i เป็น root shell จากนั้นก็สั่ง

# yum upgrade

เพื่อทำการ upgrade ทุกๆ package ให้เป็นตัวล่าสุดเสียก่อน จากนั้นก็ reboot หนึ่งรอบ แล้วก็ลง kernel-headers, kernel-netbook-devel และ "Development Tools" เพราะผมต้องการจะ compile wireless driver เอง

# yum install kernel-headers
# yum install kernel-netbook-devel
# yum groupinstall "Development Tools"

เท่านี้ก็พร้อมที่จะ compile wireless driver แล้วครับ ต่อไปก็ download driver จากเว็บ broadcom (http://www.broadcom.com/support/802.11/linux_sta.php) ก็เลือกเอาตัว 32-bit มาครับ เพราะ Atom N270 ใช้ 64-bit ไม่ได้อยู่แล้ว และเจ้า Moblin ก็ยังไม่ได้ออก image สำหรับ 64-bit ด้วย

พอได้ driver มาเสร็จก็ compile

# mkdir wl
# cd wl
# tar zxvf <path-to-file>/hybrid-portsrc-x86_32-v5.10.91.9.3.tar.gz
# make
# make install

เป็นอันเสร็จสำหรับเรื่อง wireless ไปอย่างครับ ลอง reboot ดู wireless ควรจะ "ON" และเจอ SSID ที่อยู่รอบๆ ได้ สำหรับผม ก็จัดการ ถอดสาย LAN แล้ว connect เข้า wireless router แทน

ขั้นต่อไปก็คือเรื่อง font ภาษาไทย ที่โครงการ Moblin ยังไม่มีมาให้ ผมจึงไป download SRPM "thai-scalable-fonts" ของ Fedora 11 มาแล้วแก้ SPEC นิดหน่อยให้มันใช้ ThaiFonts-Scalable ตัวล่าสุด แล้วก็สร้างเป็น RPM ซึ่งมีขั้นตอนค่อนข้างยาว และยุ่งยาก ผมจึง upload RPM ที่ทำเสร็จแล้วไว้ที่ http://cwt.bashell.com/files/moblin/ คนที่ต้องการสามารถเอาไปใช้ได้เลย เช่นถ้า download ทุกไฟล์ไว้ในที่เดียวกันหมด ก็สั่ง

# rpm -Uvh *.rpm

ได้ทันที แต่พอลงเสร็จแล้วจะต้องมีการปรับแต่งนิดหน่อยเพื่อการแสดงผลที่สวยงาม เริ่มจากจับ fonts เหล่านี้ไปเข้ากลุ่มที่มันควรอยู่ (serif, sans-serif, monospace)

# cd /etc/fonts/conf.d
# ln -s ../conf.avail/64-ttf-thai-tlwg.conf

แล้วก็ไปที่ tab (menu) ของ Moblin เลือก application มันจะมีช่องสำหรับค้นหา applications ต่างๆ ในเครื่อง ก็พิมพ์ "font" ลงไป จะเจอ "Wallpaper and Fonts" นั่นแหละครับ เปิดมาตั้งค่า font ได้เลย โดยปกติ Moblin จะเลือก font ตระกูล Droid มาให้ ก็เปลี่ยนเป็น Sans หรือ Serif ตามใจชอบ แต่ Fixed width font ผมยังใช้ Droid Sans Mono อยู่นะครับ มันสวยดี

ส่วน Rendering เลือกเป็นแบบ Subpixel smoothing (LCDs) ด้วยก็ดีครับ ผมว่ามันคมขึ้นกว่าเดิม อันนี้ก็แล้วแต่ความชอบของแต่ละคน

ตอนนี้ก็มี font แล้ว อ่านไทยได้แล้ว ก็ต้องทำให้มันพิมพ์ไทยได้ด้วยถึงจะครบ ก็เข้าไปที่ applications อีกครับ คราวนี้ search keyboard จะเจอ Keyboard กับ Keyboard Shortcuts ครับ ให้เลือก Keyboard แล้วก็เพิ่ม Layouts "Thailand" ลงไปได้เลย อย่าลืมเลือกปุ่มเปลี่ยนภาษาใน "Layout Options..." ด้วย สำหรับผมก็ใช้ Alt+Shift กับ Alt+Space ครับ (ติดจาก OSX) เสร็จแล้วครับ แต่การเปลี่ยนภาษาใน Moblin นี่จะไม่มีอะไรบอกเรานะครับว่าตอนนี้ใช้ภาษาอะไรอยู่ ก็ต้องลองพิมพ์ดูครับ ถ้าไม่ใช่ภาษาที่ต้องการก็กดปุ่มเปลี่ยนภาษาเอา

ขอให้โชคดีและสนุกกับ Moblin ครับ

0 comment(s) 2/11/2009 23:10

STOU Graduate

STOU Graduate

0 comment(s) 28/9/2009 19:45

Google Wave Workshop - Day 1

ในที่สุด bot ก็คุยกับผมได้แล้ว ใส่คำสั่งภาษา python ลงไปให้มันทำงานได้ด้วย

cwtbot1

code ที่ใช้

# -*- encoding: utf-8 -*-
from waveapi import events
from waveapi import model
from waveapi import robot
from waveapi import document
import logging

def OnParticipantsChanged(properties, context):
    """Invoked when any participants have been added/removed."""
    added = properties['participantsAdded']
    for p in added:
        Notify(properties, context)

def OnRobotAdded(properties, context):
    """Invoked when the robot has been added."""
    root_wavelet = context.GetRootWavelet()
    root_wavelet.CreateBlip().GetDocument().SetText("Wazzup!")

def Notify(properties, context):
    root_wavelet = context.GetRootWavelet()
    root_wavelet.CreateBlip().GetDocument().SetText("Yo Man!")

def on_blip_submitted(properties, context):
    blip = context.GetBlipById(properties['blipId'])
    contents = blip.GetDocument().GetText()
    if 'mr.fusion' in contents.lower():
        man_img = document.Image('http://www.pantip.com/cafe/toy/image/man.gif')
        new_blip = blip.CreateChild()
        new_blip.GetDocument().AppendElement(man_img)
        new_blip.GetDocument().AppendText(u'...เข้ามาดู')
    else:
        try:
            pyobj = eval(contents)
        except Exception, e:
            pyobj = u'%s' % contents
        new_blip = blip.CreateChild()
        new_blip.GetDocument().SetText(unicode(pyobj))

if __name__ == '__main__':
    myRobot = robot.Robot('chaiwat-suttipongsakul',
        image_url='http://cwt.bashell.com/files/img/cwt.png',
        version='9',
        profile_url='http://cwt.bashell.com/')
    myRobot.RegisterHandler(events.WAVELET_PARTICIPANTS_CHANGED, OnParticipantsChanged)
    myRobot.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)
    myRobot.RegisterHandler(events.BLIP_SUBMITTED, on_blip_submitted)
    myRobot.Run()
2 comment(s) 18/7/2009 23:11

ภาพ HDR

เคยถ่ายภาพแล้วเอามาทำ HDR ไว้ตั้งแต่ตอนไปทำงานที่ New York

HDR

อยากรู้เรื่อง HDR ก็ต้องรู้เรื่อง DR (Dynamic Range) ก่อน ลองหาด้วย google แล้วเจอ บทความนี้ เกี่ยวกับการมองเห็นของมนุษย์ครับ และเรื่อง HDR จาก wikipedia ลองอ่านดูเลย

0 comment(s) 29/4/2009 0:49
CWT
:::All Blogs:::
Moblin 2.1 กับภาษาไทย และ wireless
STOU Graduate
Google Wave Workshop - Day 1
ภาพ HDR
หน้าต่างคอนโด
ทดสอบ libthai บน Mac OS X
วันเกิดแป๋ม
สามัญสำนึกใช่ว่าจะถูกเสมอไป
โปรดระวังการใช้ emoticon ใน pantip.com
ทดสอบ javascript ของ WebKit เทียบกับ Firefox
diff list by set part 2
diff list by set
ICT Block Web
The Cathedral And The Bazaar
สวนหลวง ร.9
โฆษณาบ่งบอกความใส่ใจ
run Django ใน mode prefork นี่น่ากลัวแฮะ
อักษรพิเศษใน Title
Thai locale in Django-SVN
เบื่อและเซ็ง
Code Sprint VS. Dev Fest
My Real Nickname and The Story of My Alias Name
My Books
หมอนรองกระดูกทับเส้นประสาท
python-markdown2
การใช้ Nginx กับ Django
ลองเล่น Django's Comments Framework
Bashell Upgraded
ช่วงนี้ซื้อแต่ HP
Work@NY - Day1
Blog เริ่มใช้งานได้แล้ว
Penguin and Dolphin
Use Squid proxy on Windows Server
Test Markdown
A Django project.
Valid XHTML 1.0 Transitio
nal