Tag Archives: linux

Google Chrome for Linux

ไม่ใช่ chromium .. ไม่ใช่ chrome + wine .. อันนี้ native จริงๆ … คิดว่านะ :P

เวอร์ชั่นนี้เป็น development/unstable version ยังขาดอะไรอีกหลายอย่าง เช่นใน options บาง tab ยังไม่มีอะไรให้ set เลย แต่ที่แน่ๆ Acid3 100/100 และเร็วจนรู้สึกได้ สนใจลองโหลด *.deb ได้เลยนะ

สำหรับ i386 และ amd64

Linux TLE Repository Removed

แจ้งหยุด update/build TLE ไปตั้งแต่ประมาณปี 2548 ว่าจะคงไว้ถึงแค่ปี 49 ก็ปล่อยให้ล่วงเลยมานานแล้ว วันนี้ถึงเวลาอันสมควรจะเอาออกจาก ftp.kitty.in.th เสียที :)

ตั้งแต่วันนี้เป็นต้นไป ก็จะไม่มี ftp://ftp.kitty.in.th/pub/TLE ละนะ

เห็น packages ในนั้นแล้ว .. โบราณเหลือเกิน ฮุๆๆๆ

Arietta & Codetta

สัปดาห์ที่ผ่านมาเป็นอีกครั้งที่ได้คุยเรื่องการแสดงผล สระอำ ที่ยังมีปัญหาบน OO.o 3.0 สำหรับคนที่ใช้ฟอนต์ TTF ของวินโดว์ส ในขณะที่ฟอนต์ของลินุกซ์แสดงได้ไม่มีปัญหา แล้วก็เกิดบรรเจิดว่า ถ้าแก้ OO.o 3.0 ไม่ได้ ตูก็แก้ฟอนต์ซะก็สิ้นเรื่อง :P .. ว่าแล้วก็เริ่มทดสอบกับ Cordia New เอา FontForge เขียน GSUB แยก สระอำ เป็น นิคหิต กับ สระอา … เกิดมาก็เพิ่งได้ใช้ FontForge นี่แหละ ! .. งมไปงมมาพักใหญ่ ได้ผล ! ตัดคำถูกแล้ว :D .. ฟอนต์รุ่นนี้อาจจะมีบางคนได้เห็นในชื่อ Cordia Newer :P

แต่ ! ก็เกิดปัญหาต่อมาคือ วรรณยุกต์ลอย (อาจจะเป็นเพราะ FontForge มันอ่านมาไม่ได้) .. งั้นยำ Umpush กับ Cordia New เลยดีกว่า ก๊อปปี้ glyph ของ Cordia ไปใส่ตาราง Umpush .. rename glyph ให้ถูกกับที่ต้องใช้ใน GSUB ของ Umpush … ก็เป็นว่า วรรณยุกต์อยู่ในตำแหน่ง .. ทั้งหมดนี้แจกไม่ได้ .. จริงๆ แล้ว Cordia Newer ก็ไม่ควรจะเกิด เพราะมัน(อาจ)ละเมิดลิขสิทธิ์ฟอนต์ และ EULA ของ Microsoft .. หลังจากทดลองเสร็จเลยลบทิ้งหมด

ในเวลาเดียวกัน .. คุยกับพี่เทพได้ความว่า Cordia กับ Angsana เขาให้ใช้ฟรีแล้ว .. แต่ต้นฉบับกับพี่เทพหายไปพร้อมฮาร์ดดิสก์ .. ไปถามเอากับ Mr.Choke ได้มาเป็น TTF ที่ distribute ใน TLE 9.0 ทดลองยำไปๆ มาๆ … ก่อนจะมาเริ่มต้นทำจริงๆ จังๆ วันนี้นี่เอง ได้เป็นฟอนต์ Arietta และ Codetta ซึ่งใช้ glyphs ของ Angsana และ Cordia ตามลำดับ ทั้งสองฟอนต์ import GSUB และ GPOS ของ Umpush มาใช้ + ปรับ Anchor สำหรับสระ และวรรณยุกต์นิดหน่อย

ดูผลได้

คำว่า “แนะนำลินุกซ์” เป็นคำที่ผมใช้ทดสอบสระอำว่าทำให้สระ/วรรณยุกต์ บน/ล่างที่ตามมาแสดงผลผิดหรือเปล่า ส่วน “วิญญูมุ่งรู้พิฆาตปื้นขี้ฝุ่นเลษฏุ” ได้มาจากพี่เทพสำหรับดูตำแหน่งของสระ/วรรณยุกต์ บน/ล่างในกรณีพิเศษๆ

เพิ่มเติม  Codetta แสดงผล pangram ภาษาไทย | Arietta และ Codetta (Regular, Italic, Bold, Bold-Italic) PDF

ฟอนต์ทั้งสองดาวน์โหลดได้ที่ ftp://ftp.kitty.in.th/pub/sources/fonts/ ไฟลที่ไม่มี -ttf จะมีทั้ง *.sfd และ *.ttf ไฟล์ที่มี -ttf จะมีเฉพาะ *.ttf

ถ้าต้องการใช้แทนฟอนต์ของวินโดว์ส แก้ ~/.fonts.conf นิดหน่อย โดยเติมข้างล่างนี้เข้าไป

<!-- Synthesize Windows AngsanaUPC and Angsana New with Arietta -->
<match target="pattern">
    <test qual="any" name="family" mode="eq">
        <string>AngsanaUPC</string>
        <string>Angsana New</string>
    </test>
    <edit name="family" mode="assign" binding="same">
        <string>Arietta</string>
    </edit>
</match>
<!-- Synthesize Windows CordiaUPC and Cordia New with Codetta -->
<match target="pattern">
    <test qual="any" name="family" mode="eq">
        <string>CordiaUPC</string>
        <string>Cordia New</string>
    </test>
    <edit name="family" mode="assign" binding="same">
        <string>Codetta</string>
    </edit>
</match>

ข้อจำกัดของทั้ง Arietta และ Codetta คือมี glyphs เฉพาะอักขระไทยเท่านั้น เพราะต้นฉบับ Angsana และ Cordia มีเฉพาะ glyphs ไทย .. อย่างที่สองคือ hint มันจะไม่สวยเท่าไหร่ เข้าใจว่าต้นฉบับ Angsana/Cordia ใช้ hints คนละแบบกับตระกูล UPC/New ในไมโครซอฟต์ (ติดลิขสิทธิ์ของ hints ?)

สุดท้าย .. Arietta และ Codetta เป็นศัพท์ทางดนตรี :P

Thanks: พี่เทพ & Mr.Choke

MSN Issue on Pidgin (Again !)

ตั้งแต่วันที่ 12 ม.ค. 52 Pidgin เริ่มล็อกอินเข้าใช้งาน MSN ไม่ได้ .. ดูจาก debug windows จะเห็นอะไรประมาณนี้ ..

...
msn: Got the Address Book!
msn: AB Faultstring: Passport Authorization Failed
msn: AB Error Code: PassportAuthFail
...

ถาม อ.กู้ ก็พบว่ามีคน report bugs ไว้แล้วจำนวนหนึ่ง และเพิ่งจะพบอาการนี้ในวันเดียวกัน (อ.กู้ index ไวโคตร !) .. เฉพาะวันที่ผ่านมา ในห้อง(ผีสิง) #tlwg บ่นเรื่องเดียวกันนี้ 4-5 ราย … จะว่าไปบนลินุกซ์มีอีกหลายโปรแกรมที่ใช้ MSN ได้ เท่าที่ลองใช้งานกันวันนี้ aMSN, emesene ยังล็อกอิน MSN ได้ ไม่มีปัญหาเหมือน Pidgin .. ส่วน SIM, Kopete บน KDE ไม่ได้ลองเพราะทำใจกับขนาดของ kdelibs ไม่ได้ … หรือจะเอาอย่างข้าน้อยเนื่องจากมีของกะมือเลยใช้ Miranda-IM ใน MS Windows XP ใน VirtualBox … หรือจะใช้ Miranda-IM กับ Wine ก็ได้ (ลองแล้ว) … ดูเหมือน ใครๆ เข้าก็ใช้งาน MSN ได้ตามปกติ ยกเว้น Pidgin นี่แหละ เฮ่อ !

ระหว่างคุยๆ กัน ณ ห้อง #tlwg ป๋าเด่นก็แจ้งมาว่าบางคนลง msn-pecan แล้วใช้ได้.. ไม่รอช้า aptitude install msn-pecan แล้วก็ add WLM account … โอ้!… ใช้ได้จริงๆ ด้วย :D

msn-pecan เป็น implementation ของ MSN/Windows Live Messenger protocol สำหรับ Pidgin ลองใช้ดูแล้วก็ไม่เลว เร็วดี … ระหว่างรอแก้ bug ก็ใช้ไปก่อนละกัน :P

Leap Second

จากที่มี การประกาศเพิ่ม leap second ปลายปีนี้ +1 วินาที เลยลองเช็คเวลาจาก GPS ดูสักหน่อย ผลก็คือ

$GPZDA,235958.00,31,12,2008,00,00*6D
$GPZDA,235959.00,31,12,2008,00,00*6C
$GPZDA,235960.00,31,12,2008,00,00*66
$GPZDA,000000.00,01,01,2009,00,00*6D
$GPZDA,000001.00,01,01,2009,00,00*6C
$GPZDA,000002.00,01,01,2009,00,00*6F

จะเห็น เวลา 23:59:60 ของวันที่ 31/12/2008 ซึ่งก็คือ leap second ที่เพิ่มขึ้นมา

leap second เป็นการปรับเวลาเพราะโลกไม่ได้หมุนในอัตราคงที่ e.g. 24 ชั่วโมง/วัน พอดีเสมอไป เนื่องจากกระแสน้ำ ลม แรงเสียดทาน ฯลฯ .. IERS จะประกาศให้มีการชดเชยเวลาครั้งละ 1 วินาที บางปีไม่ปรับ บางปีปรับสองครั้งก็มี

Happy New Year 2009 !

Setup Stratum-1 Time Server

พรบ.คอมฯ 50 กำหนดไว้ว่าผู้ให้บริการต้องเก็บข้อมูลจราจรคอมพิวเตอร์ โดยมีความคลาดเคลื่อนของเวลาไม่เกิน 10 msec. จากเวลาอ้างอิง (stratum-0) ซึ่งเป็นเวลาที่ได้จากนาฬิกาอะตอม .. time source ที่เป็นนาฬิกาอะตอมไม่ได้หายากอย่างที่คิด สัญญาณจากดาวเทียม GPS ก็เป็นเวลาที่ได้จากนาฬิกาอะตอมเหมือนกัน ดังนั้นเซ็ต stratum-1 time server ก็แค่ใช้ time source จาก GPS เท่านั้นเอง

เพิ่งได้ USB GPS receiver แบบไม่มียี่ห้อ มาเมื่อหลายวันก่อน ใช้ชิปของ U-Blox ANTARIS LEA-4S ซึ่ง output เป็น NMEA messages ออกมาทาง USB ได้เลย และส่ง 1-Pulse-Per-Second (1PPS) ได้ด้วย เสียบ USB GPS Receiver เข้าคอมพิวเตอร์ (ติดตั้ง เดเบียน ลินุกซ์) ลอง cat /var/log/syslog หรือ dmesg ก็เห็นข้อความประมาณนี้

...
cdc_acm 1-1:1.0: ttyACM0: USB ACM device
usbcore: registered new driver cdc_acm
drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters
...

แปลได้ว่าลินุกซ์เห็น USB GPS receiver เชื่อมกับ USB แล้ว และกำหนด device เป็น /dev/ttyACM0 ลอง

$ lsusb
...
Bus 001 Device 002: ID 1546:01a4 U-Blox AG
...

จะเห็นว่าลินุกซ์รู้จัก U-Blox AG. ด้วย ..ว่าแล้วก็ cat /dev/ttyACM0 ดูเลย

$ cat /dev/ttyACM0
...
$GPRMC,180032.00,A,1628.32246,N,10249.53339,E,0.362,287.84,261208,,,A*62
$GPVTG,287.84,T,,M,0.362,N,0.671,K,A*3B
$GPGGA,180032.00,1628.32246,N,10249.53339,E,1,04,3.23,226.6,M,-27.1,M,,*76
$GPGSA,A,3,22,32,16,06,,,,,,,,,3.98,3.23,2.31*02
$GPGSV,3,1,11,18,04,149,,14,46,058,,22,37,158,42,30,16,038,*71
$GPGSV,3,2,11,32,31,319,20,31,45,353,,29,11,081,,20,08,321,*7C
$GPGSV,3,3,11,16,55,199,44,03,03,197,33,06,10,185,27*4E
$GPGLL,1628.32246,N,10249.53339,E,180032.00,A,A*6C
$GPZDA,180032.00,26,12,2008,00,00*63
$GPRMC,180033.00,A,1628.32249,N,10249.53329,E,0.191,285.38,261208,,,A*66
$GPVTG,285.38,T,,M,0.191,N,0.354,K,A*32
$GPGGA,180033.00,1628.32249,N,10249.53329,E,1,04,3.24,226.6,M,-27.1,M,,*7E
...

จะเห็นเป็น NMEA messages ขึ้นมา .. ข่าวดีคือ NTP อ่าน NMEA message มาเป็น time source ได้เลย .. ก่อนอื่นลง package ntp ก่อน

$ sudo aptitude install ntp

แก้ไฟล์ /etc/ntp.conf เพิ่ม server ที่ใช้ Generic NMEA driver

server 127.127.20.0
fudge 127.127.20.0 time1 0.0 refid GPS

Restart ntp รอสัก 1-2 นาที แล้ว query ดู

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*GPS_NMEA(0)     .GPS.            0 l   13   64  377    0.000   -2.154   3.517

แปลว่า ntp มัน sync กับ stratum-0 time source ได้ และขึ้นมาเป็น stratum-1 NTP server เรียบร้อย :D

อย่างไรก็ตาม หลังรันเซิร์ฟเวอร์และเก็บสถิติไปสักพักก็พบว่า นาฬิกามันไม่ได้แม่นยำอย่างที่คิด เวลาที่ได้มีความคลาดเคลื่อนแกว่งไปมาในช่วง +/- 4 msec บางจังหวะ peak ไปถึง +/- 20 msec ซึ่งถือว่าเป็น stratum-1 server ที่ performance ไม่ได้เรื่องเท่าไหร่ และยังไม่ได้ตามข้อกำหนดตามกฎหมายด้วย .. สาเหตุความคลาดเคลื่อนคงเพราะ NMEA message ไม่ใช่ time source ที่แม่นยำ .. ถ้าจะให้แม่นยำกว่านี้ ต้องใช้ 1PPS

USB GPS receiver ที่ได้มามันไม่ได้ต่อ 1PPS ออกมาให้ใช้งาน จะใช้ก็ต้องต่อเอง .. สิ่งที่ต้องใช้ก็มี DB-9 connector ตัวเมีย สายไฟ หัวแร้งบัดกรี ตะกั่วบัดกรีนิดหน่อย คู่มือของ U-Blox ANTARIS LEA-4S บอกว่าขา 1-PPS (i.e., TIMEPULSE) อยู่ที่ขา 28 จอเข้ากับขา 1 ของ DB-9 (ขา Data Carrier Detect ของ RS-232) และต่อ ground ของ receiver ไปยังขา 5 (GND) ของ DB-9 connector ก่อนเอาไปต่อก็เอา scope วัดสัญญาณดู สัญญาณ 1PPS จะเป็น pulse low-to-high amplitude 3.3 V ใช้ rising edge บอกวินาที

เมื่อต่อเข้ากับ RS-232 ของเครื่อง แล้วทีนี้จะอ่านสัญญาณ 1PPS ยังไงดี ? .. มีอยู่สามทางเลือก LinuxPPS, GPSD, และ SHMPPS

  • LinuxPPS เป็น PPSAPI implementation ตาม RFC2783 มีผลพลอยได้คือ precision ของนาฬิกาจะเป็น nanosecond แต่ต้อง patch / recompile kernel และอาจจะต้อง patch ntpd อีกด้วย (- -‘)
  • GPSD เป็นอีกทางเลือก ลองแล้วไม่สำเร็จ ทั้งที่ GPSD อ่านสัญญาณ 1PPS จาก /dev/ttyS0 แล้ว แต่มันไม่ signal ไปยัง ntpd .. GPS receiver แบบที่ป้อน 1PPS + NMEA ผ่าน RS-232 เพียวๆ อาจจะใช้กับ GPSD ได้
  • SHMPPS เป็นโปรแกรมอ่าน signal จาก serial/parallel port เลือก signal ได้หลายขา แล้วส่งไปยัง ntpd ผ่านทาง SHM (SHare Memory) .. อันนี้ง่ายสุดแล้ว

ก่อนอื่น แก้/เพิ่ม config ใน /etc/ntp.conf ให้ใช้ SHM driver

server 127.127.28.0 minpoll 4 maxpoll 4 prefer
fudge 127.127.28.0 refid PPS

ดาวน์โหลด shmpps extract / make จะได้ shm_splc2 เป็น binary และมี wrapper scripts อีก 2 ตัว ไม่ต้องสนใจ wrapper script ก็ได้ .. ลองสั่งให้ shm_splc2 อ่านสัญญาณ Data Carrier Detect จาก /dev/ttyS0 กันเลย

$ /usr/local/sbin/shm_splc2 -d /dev/ttyS0 -s -l DCD -u 0 -D &

รอสักพัก

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*SHM(0)          .PPS.            0 l    3   16  377    0.000    0.047   0.003
+GPS_NMEA(0)     .GPS.            0 l   13   64  377    0.000   -2.154   3.517

ทิ้งไว้สักพักใหญ่ๆ .. offset และ jitter จะค่อยๆ ลู่เข้าสู่ 0.000

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*SHM(0)          .PPS.            0 l    3   16  377    0.000    0.000   0.001
 GPS_NMEA(0)     .GPS.            0 l   33   64  377    0.000   -5.702  5.288

ปิดท้าย ดูจากกราฟก็จะเห็นว่ามันไม่ได้ 0.000000 s เสียทีเดียว แต่มีจังหวะแกว่งมากบ้างน้อยบ้าง จะเห็นว่านาฬิกามันไม่เที่ยงก็ต้องดู scale usec ซึ่งเทียบกับ stratum-1 servers ของหลายๆ แห่งก็จะได้ precision ประมาณเดียวกัน และน่าจะเกินพอสำหรับ พรบ. ..

เทียบ Offset ของ NMEA กับ 1PPS (scale: msec)

เทียบ Jitter ของ NMEA กับ 1PPS (scale: msec)

Offset ของ 1PPS (scale: usec)

Jitter ของ 1PPS (scale: usec)

GPS and Linux

ได้ USB GPS receiver มา (ของ ยี่ห้อนี้) ไม่ต้องคิดมาก เสียบ แล้ว dmesg ดู

$ dmesg
[157930.448089] usb 2-1: new full speed USB device using uhci_hcd and address 3
[157930.612998] usb 2-1: configuration #1 chosen from 1 choice
[157930.718842] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
[157930.726652] usbcore: registered new interface driver cdc_acm
[157930.727462] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

อ่อ มี ttyACM0 … cat ดูโลด

$ cat /dev/ttyACM0
$GPRMC,115258.00,A,1628.33537,N,10249.54838,E,0.155,223.32,081208...
$GPVTG,223.32,T,,M,0.155,N,0.288,K,A*3C
$GPGGA,115258.00,1628.33537,N,10249.54838,E,1,08,1.68,185.0,M,-27.1....
$GPGSA,A,3,26,24,15,12,05,29,10,30,,,,,2.29,1.68,1.56*0F
$GPGSV,3,1,12,26,60,037,19,24,49,356,18,15,80,028,22,02,29,105,*7F
$GPGSV,3,2,12,12,08,193,22,05,08,205,33,18,20,278,17,29,59,280,22*7C
$GPGSV,3,3,12,10,22,041,13,21,15,320,19,30,09,228,21,09,21,169,20*75
$GPGLL,1628.33537,N,10249.54838,E,115258.00,A,A*63
...

อืมมม NMEA message มาเลย :) .. งั้น GPSd เลยดีกว่า

$ sudo aptitude install gpsd gpsd-clients

ลอง man แล้ว run แล้วไม่ work แฮะ .. ถาม อ.กู้เห็นบางคนเขาจะ set speed ก่อน

$ stty -F /dev/ttyACM0 ispeed 9600
$ gpsd /dev/ttyACM0

ทีนี้ก็

$ cgps

ได้ผลเป็นแบบนี้

หรือจะ

$ xgps

หรือจะลอง tangoGPS

More tangoGPS screenshot: Street Map | Arial | Topo

Acid3 Test & JavaScript Speed Test on Firefox 3.1b2pre

เห็นคุยๆ กันเรื่อง Firefox 3.1 แวบๆ บน /. ประกอบกับ PPA ของ Ubuntu มีคนทำ .deb ไว้ เลยเอามาลอง Acid3 กับ JavaScript เทียบกับ Firefox 3.0.3 และ Opera 9.61 ดู ..

Firefox 3.0.3

Opera 9.61

Firefox 3.1b2pre

ส่วน JavaScript ก็

ทดสอบ Acid3 ที่ http://acid3.acidtests.org

ทดสอบ JavaScript ที่ http://celtickane.com/webdesign/jsspeedarchive.php

เครื่องทดสอบ Apple Macbook 2.1 Ubuntu 8.10.

Note: Speed test ทดสอบ 10 ครั้งแล้วหาค่าเฉลี่ย ต้องไม่ลืมว่า ผลที่ได้เป็น relative เน้อะ YMMV.