28 July 2014

Udomsak

Ideal project Thailand Wi-Fi and Cellular


IDEAL PROJECT  #HOBBY



Sample Data  KML 



Collect Infomation of MAC Address



OPEN CELL ID  IN BANGKOK



โดย udomsakc (noreply@blogger.com) ณ 28 July 2014 08:03 GMT

25 July 2014

Udomsak

OpenStack ตอนที่ 3

ตอนนี้จะเกริ่นถึง Third party Service Deployment  โดยการใช้ Foreman และ การ Deployment เปรียบเทียบกับ วิธีอื่นๆ  ผมเอง Setup ทิ้งเอาไว้ บนระบบ Linux บน  Laptop ของผมเอง เผื่อที่จะใช้งาน หรือ รับงาน Deployment Service ขนาดใหญ่

เดิมทีผม Setup เอาไว้ใน VirtualBox VM บนระบบฝั่ง Window  พอ Switch มาฝั่ง Linux จึงคิดว่า Setup เพิ่มเอาไว้ดีกว่า เผื่อถ้าทำงานใน ฝั่ง Linux แล้วมีเหตุให้ต้อง Deploy service ก็ขี้เกียจจะ Reboot เข้า Windows เพื่อ run vm สำหรับ งาน Deploy อีก 

ที่บอกว่า Service ขนาดใหญ่ คือ เริ่มตั้งแต่การติดตั้ง Base metal  ไปจนถึงการติดตั้งซอฟต์แวร์ เพื่อรัน Service stack ที่เราต้องการ ( หมายถึง การติดตั้ง Software set และ Dependencies ) รวม ไปถึงการ Monitor       

Foreman เป็นเครื่องมือช่วยเราบริหารจัดการ การ Deployment โดยนิยามของตัว Foreman เขาบอกเอาไว้ว่า    

Foreman is a complete lifecycle management tool for physical and virtual servers.


การทำงานของ Foreman จะทำงานหลักๆ อยู่ 3 อย่าง คือ 

โดยโครงสร้างของ Foreman ( Architecture )  จะเป็นดังนี้  ( ภาพจาก theforeman.org ) 

  



โดยหลักแล้วตัว Foreman จะทำงานกับ Puppet เป็นหลัก ( configuration management )  แต่ก็สนับสนุน Configuration Management ตัวอื่นๆ ด้วย  เช่น Chef เป็นต้น และ เราสามารถ เลือกการติดตั้ง ภายหลังได้ ทำการติดตั้ง Plugin เพ่ิมเติม  

อย่างไรก็ตาม ก็มี Software ตัวอื่น ซึ่งทำงาน คล้ายๆ กันกับ Foreman ในที่นีผมจะอ้างถึง Ubuntu Cloud Software Stack  ในที่นี้ผมจะยกตัวอย่างเปรียบเทียบกัน  โดยถ้าหากเป็น Ubuntu Cloud  จะใช้ Software 2 หรือ มากกว่านั้นในการทำงานให้เหมือนกันกับ Foreman  โดย Foreman จะรวมเอาทั้ง Bare metal เข้ารวมกับ Configuration management  และ ทำการ Monitor ไปในตัว    

Ubuntu Cloud Stack  

ภาพนี้เป็นโครงสร้างของ Ubuntu  MaaS   Architecture  ( https://maas.ubuntu.com/ ) 


ตัวอย่างแสดงการทำงานของ JuJu  ( https://juju.ubuntu.com  ) 



โดยที่การ Deploy service ต่างๆ  จะใช้ชื่อ Charm โดยเข้าไปดู Concept ได้จาก ( https://jujucharms.com/ )

มาดูในส่วนของ OpenStack กันบ้าง จะเรียกส่วนที่ใช้ Deploy ส่วนของ Bare metal คือ Bare metal service ( https://wiki.openstack.org/wiki/Baremetal  )  ดูเพิ่มเติมจากรูปด้านล่าง จะเห็น Cloud Service Stack ของทาง OpenStack นั้นก็ยังไม่ครบถ้วนสมบูรณ์นัก ยังคงต้องเพิ่ง การทำงานแบบ  Manual เข้ามาช่วย ไม่ Automate ระบบทั้งหมด 



ฺBlog ชุดเรื่อง OpenStack  ผมจะพยายามเขียนให้ครอบคลุมถึง Cloud software Stack ทั้งหมดให้มากที่สุด เท่าที่จะเป็นไปได้  ถ้าไม่นับรวมขี้เกียจมานั่งเขียนนะครับ :-) 

Foreman เองนั้นสนับสนุน  Ubuntu 12.10 , 14.10 ขณะที่ระบบปฏิบัติการที่ผมใช้อยู่คือ  13.10 ดังนั้น ผมจะอิงการติดตั้ง Foreman จากเครื่องผมเป็นหลักส่วนที่เขียนใน blog นี้สำหรับการต่อยอด และ อ้างถึง เพื่อง่ายในการเปรียบเทียบเท่านัน  

ติดตั้ง Foreman บน Ubuntu 13.10  

echo "deb http://deb.theforeman.org/ wheezy 1.5" > /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list
wget -q http://deb.theforeman.org/pubkey.gpg -O- | apt-key add -
apt-get update && apt-get install foreman-installer

หมายเหตุ ตามคู่มือจะให้ run  forreman-installer เพื่อทำการ และ Configuration ค่าที่เกี่ยวข้องอื่นๆ แต่เนื่องจากเครื่องผม มีปัญหากับ PostgreSQL script และ ไม่มีความจำเป็นในการติดตั้ง Database ขนาดใหญ่ ดังนั้นผมจึงใช้ Sqlite แทน ซึ่งถ้า ระบบของผู้อ่านมีขนาดใหญ่ Deploy image มากกว่า 200 - 300 VM  หรือ Production server ผมแนะนำให้ใช้ ระบบปฏิบัติการตามคำแนะนำ ในคู่มือ และใช้  Database ที่ขนาดใหญ่ขึ้น 

Foreman จะ Database Default  จะไปใช้ PostgreSQL ซึ่งตัว Chef และ Puppet ก็จะใช้เช่นเดีียวกัน ดังนั้นจึงทำให้มีปัญหาและ ผมต้องมีการปรับแต่ง ค่า Configuration ให้เข้ากับเครื่องผม  

foreman-installer  หรือ  foreman-installer -i กรณีต้องการ interactive shell 

ดังนั้นผมจึงเลือกใช้คำสั่งนีแทน 

 Install packages  (adjust additional packages as needed)
apt-get install foreman foreman-sqlite3 foreman-libvirt
ถ้าเชื่อมต่อกับ Openstack ก็เปลี่ยนจาก  foreman-libvirt เป็น foreman-compute แทน 


# Copy sample db config to /etc
cp /usr/share/foreman/config/database.yml.example /etc/foreman/database.yml

# Review settings and DB config
vi /etc/foreman/settings.yaml /etc/foreman/database.yml

# Perform initial DB setup
foreman-rake db:migrate
foreman-rake db:seed
ถ้าต้องการเปลี่ยน Database ก็ให้เปลียนจาก foreman-sqlite3 เป็น Database ตัวอื่นแทน ส่วน foreman-libvirt เป็น Plugin สำหรับ Connect  libvirt   

จากนั้นทำการ restart service  Service ที่ Start ขึ้นมาหน้า GUI จะ เปิดอยู่ที่ Port 3000  ( http://localhost:3000 )  โดยก่อนรัน ตรวจสอบ Hostfile ( /etc/hosts ) ว่า format ถูกต้อง ด้วยคำสั่ง hostname -f  

โดยก่อนทำการ Start service Foreman ให้เข้าไปแก้ไขไฟล์ /etc/default/foreman เปลี่ยน START จาก no เป็น yes ( ตามรุป ) 



สั่ง  /etc/init.d/foreman start 


Page แสดง Statistic  



ตัว Foreman เองนอกจากสนับสนุน Libivirt แล้ว ยังสนับสนุน Vmware ด้วย โดยเราสามารถเพิ่ม โดยการเพิ่ม plugin เข้าไป  

อ้างอิง

http://theforeman.org/manuals/1.5/index.html#3.InstallingForeman
http://theforeman.org/manuals/1.5/index.html#6.1InstallaPlugin
http://www.theforeman.org/manuals/1.5/index.html#3.5.5FactsandtheENC




โดย udomsakc (noreply@blogger.com) ณ 25 July 2014 10:58 GMT

23 July 2014

Sothorn

การเปลี่ยน Runlevel ใน CentOS 7

หมวดหมู่: 

จาก เดิมที่ CentOS จะเปลี่ยน runlevel ที่ไฟล์ /etc/inittab แต่ใน CentOS7 จะเปลียน runleve ด้วยคำสั่ง ดังตัวอย่าง

เปลี่ยนจาก 5 เป็น 3

# systemctl set-default multi-user.target

เปลี่ยนจาก 3 เป็น 5

#systemctl set-default graphical.target

 

โดย sothorn ณ 23 July 2014 12:37 GMT

20 July 2014

Neutron

RahuNAS - 0.3.0 เตรียมออก "รุ่นบังเอิญ"

จากที่เคยตั้งใจไว้ว่า จะไม่เพิ่มความสามารถ ให้กับ rahunas-legacy branch แต่จนแล้วจนรอด ด้วยเหตุผลหลาย ๆ อย่าง ส่งผลให้ได้มานั่งปัดฝุ่น และลงมือเขียนเพิ่มเติมจนได้ ที่ใช้ชื่อรุ่นว่า "บังเอิญ" เนื่องจากว่า รุ่นนี้ บังเอิญไปเจอข้อมูล หรือชุดโปรแกรม ที่จะเอามาประกอบร่าง ให้ทำงานได้ตามที่คาดหวังไว้ และที่บังเอิญกว่านั้น คือ มีความจำเป็นต้องเขียน code ตอนลูกหลับ ตอนมันตื่น ๆ อย่าหวังว่าจะได้ทำอะไร และมันบังเอิญไปคิดออก ตอนกล่อมลูกให้นอนกลางวัน (พ่อมันฝันกลางวัน ^_^)

== บังเอิญ 1 ==
บังเอิญพบว่า Bandwidth shaping เมื่อต้องไปใช้งานกับระบบที่ต้องรับโหลดหนัก ๆ จำนวนผู้ใช้มากหน่อย ระดับ 1000 - 2000 ราย ถ้าใช้ shaping script เดิม ที่ทำ linear filter อาจมีกระอักเลือดได้ และหลังจากอ่าน http://www.lartc.org/lartc.html ไป ๆ มา ๆ หลายรอบ ใช้เวลาหลายปี เพราะไม่ได้โชคดี เหมือน เตีย บ่อกี้ ตกเหวไปเจอเคล็ดวิชา -_-'' ก็เพิ่งจะมาเข้าใจหัวข้อ 12.4. Hashing filters for very fast massive filtering ว่ามันควรจะออกมาแนวไหน

Renovate the rahunas-bandwidth wrapper script : http://git.rahunas.org/?p=rahunas;a=commit;h=b783e788d91aa24cf1bf84aa162...

ยังน่าจะต้องปรับอีกหน่อย แต่เบื้องต้น ก็ใกล้เคียงกับความต้องการแล้ว

== บังเอิญ 2 ==
บังเอิญ ไปเจอ pmacct (http://www.pmacct.net) ซึ่งเป็นโปรแกรมสำหรับทำ IP accounting (Packets/Bytes) ที่ลองไล่ ๆ ดูแล้วพบว่าใช้ libpcap และสามารถเก็บข้อมูลลง sqlite3 ได้ พอดีว่า RahuNAS ใช้ sqlite3 ในการทำ data backup อยู่แล้ว มี code ในการจัดการ db อยู่พอสมควร ซึ่งก็สะดวกที่จะใช้งานต่อ จึงจัดแจงลองเขียน code ทดสอบดูว่า พอมีความเป็นไปได้มากน้อยแค่ไหน ซึ่งผลก็ออกมาใช้การได้ดีทีเดียว (ถึงจะใช้ CPU เยอะหน่อย แต่ก็แลกกันหละนะ)

ความจริง ในส่วน IP accounting ที่วางแผนไว้ คือ จะใช้ ipset (รุ่นใหม่) ที่มีความสามารถในส่วน accounting มาให้ แต่ยังไม่มีเวลานั่งเขียนใหม่ทั้งหมด (ตั้งใจว่าอย่างนั้น) ก็เลยต้องดองไว้ ทำโอกาสต่อ ๆ ไปละกัน

และถ้าส่วนนี้ ใช้งานได้ ความตั้งใจที่จะทำเรื่อง Bandwidth Quota with regenerative capability (bandwidth หนึ่งหลอด ใช้หมด หยุดใช้ ระบบเติมให้เองอัตโนมัติ) ก็คงจะได้ทดสอบต่อไปเช่นกัน

== ไม่บังเอิญ ==
ทั้งหมดทั้งมวล --- ทำเอง ใช้เอง แบ่งคนอื่นใช้ (หารายได้ เลี้ยงครอบครัว) --- ยังกระจอกอยู่ ก็ไส้แห้งต่อไป 55 -_-''

Happy Hacking

โดย neutron ณ 20 July 2014 16:51 GMT

18 July 2014

Sothorn

ตัวอย่างการติดตั้ง CentOS 7

AttachmentSize
CentOS7_install.pdf7.06 MB
หมวดหมู่: 

ตัวอย่างการติดตั้ง CentOS 7 เชิญดาวน์โหลดและแจกจ่ายได้ฟรีครับ

โดย sothorn ณ 18 July 2014 13:21 GMT

14 July 2014

LookHin

การเชื่อมต่อ Bluetooth Keyboard กับ Raspberry Pi

เมื่อสักช่วงอาทิตย์ที่แล้วผมไปหาซื้อ Bluetooth Keyboard มาลองต่อกับ Raspberry Pi ดูนะครับ (จริงๆ ก็ไม่ได้จำเป็นเลย ปกติก็ remote เข้าไปอยู่ดี ซื้อเพราะอยากลองล้วนๆ) สรุปแล้วเมื่อได้ของมาก็ Pairing กับ R-Pi ไม่ได้ซะงั้น มันถามให้เราใส่ PIN ซึ่งเราก็ไม่รู้ว่ามันคืออะไร ซึ่งถ้าเป็นบน android หรือ windows เวลาที่ Pairing กันแล้วมันจะขึ้น PIN มาที่หน้าจอให้เราพิมพ์ตามแต่นี้ไม่มี ผมลองมาหลายวิธีจนได้วิธีที่ใช้งานได้ โดยผมจะทดลองกับ Bluetooth Keyboard ของ rapoo รุ่น e6500

Bluetooth Keyboard ของ rapoo รุ่น e6500 และ Bluetooth dongle (ต่อจอเสียบสายแลนให้เรียบร้อย)
raspberry-pi-bluetooth-keyboard

เปลี่ยนสิทธิเป็น root กันก่อน โดยทั้งหมดนี้ทำผ่าน SSH

1
sudo su

จากนั้นทำการ enable dbus ซึ่งมันคืออะไรก็ไม่ทราบ อ่านต่อเองครับ dbus

1
update-rc.d -f dbus defaults

restart สักหนึ่งรอบ

1
shutdown -r now

จากนั้นทำการ install bluez, python-gobject

1
apt-get install bluez python-gobject

ใช้คำสั่ง hcitool scan เพื่อดู MAC Address ของ Bluetooth Keyboard โดยให้กดปุ่ม connect ที่ keyboard เมื่อเห็นว่ามีไฟสถานะเตรียม connect ขึ้นให้พิมพ์คำสั่ง hcitool scan

1
hcitool scan

raspberry-pi-bluetooth-keyboard

ทำการ Pairing และกำหนด PIN เป็น 0000 เมื่อพิมพ์คำสั่งเสร็จ ให้กด 0000 และกด enter ที่ keyboard เพื่อทำการ pairing ครับ

1
echo 0000|bluez-simple-agent hci0 6C:5D:63:51:15:49

raspberry-pi-bluetooth-keyboard

ทำการรับรองอุปกรณ์ คราวหน้าเราจะได้ไม่ต้อง Pairing อีก

1
bluez-test-device trusted 6C:5D:63:51:15:49 yes

raspberry-pi-bluetooth-keyboard

ทำการเชื่อมต่อกับ Bluetooth Keyboard และทดลองพิมพ์ได้เลยครับ

1
bluez-test-input connect 6C:5D:63:51:15:49

raspberry-pi-bluetooth-keyboard

ขั้นตอนถัดไปให้ทำการแก้ไข /etc/rc.local เพื่อเพิ่มคำสั่งให้ connect กับ Bluetooth Keyboard ทุกครั้งที่เปิดเครื่อง

1
nano /etc/rc.local

เพิ่มบรรทัดนี้เข้าไปก่อนคำสั่ง exit 0 ครับ

1
bluez-test-input connect 6C:5D:63:51:15:49

raspberry-pi-bluetooth-keyboard

โดยทุกครั้งที่เปิดเครื่องขึ้นมาเราต้องกดปุ่ม connect บนตัว keyboard เพื่อเตรียม connect เท่านี้เราก็จะได้ใช้ Bluetooth Keyboard ทุกครั้งที่เปิดเครื่องแล้วครับ

โดย LookHin ณ 14 July 2014 14:48 GMT

10 July 2014

LookHin

ควบคุม Servo Motor ด้วย Raspberry Pi

จริงๆ แล้วตัว Raspberry Pi มีขาสัญญาน PWM (Pulse Width Modulation) มาให้เรา 1 ขา คือขาที่ 12 หรือ GPIO 18 ซึ่งดูจะน้อยไปหน่อยและก็ใช้งานค่อนข้างยาก แต่โลกนี้ก็ยังมีผู้ใจดีทำไลบรารีที่สามารถทำให้เจ้า Raspberry Pi ของเราสามารถมีขาสัญญาน PWM เพิ่มได้ถึง 8 ขา และการใช้งานก็แสนง่าย เจ้าไลบรารีตัวนั้นชื่อว่า ServoBlaster เดียววันนี้เราจะลองใช้เจ้านี้ควบคุมการหมุนของ Servo Motor กันดูครับ เผื่อเอาไปประยุกต์ใช้ในการควบคุมแขนกลหรือการหมุนของข้อต่อต่างๆ ได้

เริ่มจากการต่อวงจรกันก่อน โดยให้ต่อสายไฟและกราวด์ของ Servo Motor เข้ากับแหล่งจ่ายไฟภายนอกที่สามารถจ่ายไฟได้ประมาณ 3-5V แล้วแต่ขนาดของ Servo นะครับ (ผมลองต่อเข้ากับขา 5V ของ R-Pi แต่ไม่สามารถใช้งานได้ เครื่องจะ restart เวลาสั่งให้ Servo ทำงาน เข้าใจว่ากระแสไฟที่ R-Pi จ่ายให้น่าจะไม่พอ) และให้ต่อขากราวด์ของ R-Pi เข้ากับกราวด์ของแหล่งจ่ายไฟภายนอกอันนี้ด้วย จากนั้นก็เสียบขาสัญญานของ Servo เข้ากับขา GPIO 4
raspberry-pi-servo-motor

ต่อเสร็จแล้วได้ออกมาหน้าตาประมาณนี้ครับ (Servo ของผมตัวเล็กนิดเดียว)
raspberry-pi-servo-motor

จากนั้นทำการติดตั้งโปรแกรม GIT หากใครติดตั้งแล้วก็ข้ามไปขั้นตอนถัดไปเลยครับ

1
sudo apt-get install git-core

ทำการโคลน PiBits จาก github.com และทำการติดตั้ง

1
2
3
4
git clone https://github.com/richardghirst/PiBits.git
cd PiBits/ServoBlaster/user 
make 
sudo make install

raspberry-pi-servo-motor

เมื่อติดตั้งเรียบร้อยแล้ว เราสามารถใช้ขาต่างๆ ทั้ง 8 ขาดังนี้ครับ โดย Servo หมายเลข 0 คือ GPIO 4 และไล่ไปเรื่อยจนถึง Servo หมายเลข 7 ตามตาราง

1
2
3
4
5
6
7
8
9
Servo number    GPIO number   Pin in P1 header
     0               4             P1-7
     1              17             P1-11
     2              18             P1-12
     3             21/27           P1-13
     4              22             P1-15
     5              23             P1-16
     6              24             P1-18
     7              25             P1-22

คราวนี้มาทดสอบกันดูว่าสามารถสั่งให้ Servo หมุนได้ไหม โดยเราต้องกำหนดความกว้างของพัลส์เพื่อควบคุมให้ Servo หมุนไปยังมุมต่างๆ ปกติก็จะอยู่ที่ประมาณ 1000us ถึง 2000us ซึ่งถ้าเรากำหนดความกว้างของพัลส์ที่ 1500us ก็จะหมุนไปอยู่ตรงกลาง (อันนี้ขึ้นอยู่กับสเปกของ Servo แต่ละตัวด้วยนะครับ แต่ปกติจะประมาณนี้) จากตัวอย่างเราได้ต่อขาสัญญานของ Servo ไว้ที่ขา GPIO 4 ฉะนั้นเวลาสั่ง เราก็จะสั่งไปที่ Servo หมายเลข 0 ตามตัวอย่าง

1
2
3
echo 0=1000us > /dev/servoblaster
echo 0=1500us > /dev/servoblaster
echo 0=2000us > /dev/servoblaster

raspberry-pi-servo-motor

เพียงเท่านี้เราก็สามารถควบคุมให้ Servo Motor หมุนในมุมต่างๆ ได้แล้วครับ อันนี้เราอาจจะเอาไปประยุกต์ใช้ในการควบคุมการหมุนของกล้องผ่านเว็บก็สามารถที่จะทำได้เช่นกัน ลองนำไปต่อยอดกันดูครับ

ทดสอบการหมุน Servo Motor ในมุมต่างๆ
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="310" id="ytplayer" src="https://www.youtube.com/embed/fIbJkOoNuCg" type="text/html" width="550"></iframe>

ดูข้อมูลเพิ่มเติมได้ที่ : https://github.com/richardghirst/PiBits/tree/master/ServoBlaster

โดย LookHin ณ 10 July 2014 19:32 GMT

8 July 2014

Thep

Fonts-TLWG 0.6.1

Fonts-TLWG 0.6.1 ออกไปแล้วเมื่อวานนี้ สรุปความเปลี่ยนแปลงในรุ่นนี้คือ:

มีผลข้างเคียงอีกเรื่องหนึ่งที่ไม่ได้กล่าวไว้ใน blog ก่อน ๆ คือเรื่องการตัดการวาด ฤา เป็น ฤๅ ของฟอนต์สารบรรณออกในฟอนต์ลักษมัณ ซึ่งการวาดดังกล่าวผมถือว่าผิดหลักการ เพราะสตริงทั้งสองถือว่าเป็นสตริงที่ต่างกันทั้งในรหัส มอก.620-2533 และในยูนิโค้ด ผู้ใช้ควรสามารถแยกความแตกต่างได้ว่าเป็นสตริงที่ต่างกัน

พฤติกรรมนี้อาจมาจากการพยายามแก้การพิมพ์ผิดอย่างกลาดเกลื่อนของผู้ใช้ทั่วไป ที่มักจะพิมพ์ ฤๅ และ ฦๅ โดยใช้สระอาแทนลากข้างยาว แต่การแก้ที่ฟอนต์ถือว่าไม่ถูกต้อง เพราะเป็นการอำพรางความแตกต่างของข้อมูลจริง หากจะแก้ปัญหาให้ถูก ควรแก้ที่ input method ซึ่งประเด็นที่คล้ายกันนี้ผมเคยเขียนถึงไปแล้วใน กรณีฟอนต์ Sarabun IT9 การแก้ปัญหาที่ฟอนต์จะยิ่งเป็นการส่งเสริมการป้อนข้อมูลที่ผิดให้กว้างขวางยิ่งขึ้น ดังนั้นผมจึงตัดกฎข้อนี้ออกในฟอนต์ลักษมัณ และถ้าเป็นไปได้ก็อยากให้แก้ในฟอนต์มาตรฐานราชการไทยทั้ง 13 ฟอนต์ด้วย

ได้อัปโหลด Debian package เข้า sid ไปแล้ว แต่ยังรออยู่ในคิว NEW เนื่องจากมีแพกเกจใหม่ของฟอนต์ลักษมัณเพิ่มเข้ามา พร้อมกันนี้ก็ได้อัปโหลดแพกเกจ LaTeX ไปที่ CTAN แล้วด้วย ผู้ใช้ TeXLive ก็รอพบได้จากแพกเกจ texlive-lang-other รุ่นถัดไปครับ

โดย Thep (noreply@blogger.com) ณ 8 July 2014 08:29 GMT

5 July 2014

Thep

LaTeX Options for fonts-tlwg

การเพิ่มฟอนต์ลักษมัณในแพกเกจ Fonts-TLWG พร้อมกับรองรับใน LaTeX ด้วยนั้น ทำให้เกิดคำถามกับผมว่า ในเมื่อมีฟอนต์สองค่ายมาอยู่ด้วยกัน คือ ฟอนต์แห่งชาติของเนคเทค และ ฟอนต์มาตรฐานราชการไทย จากกรมทรัพย์สินทางปัญญาร่วมกับ SIPA (เว็บต้นทาง สาบสูญไปแล้วตามระเบียบของราชการไทย) ย่อมจะเกิดทางเลือกการใช้ฟอนต์ที่เด่นชัดระหว่างสองค่ายนี้ ซึ่งผู้ใช้อาจเลือกฟอนต์ได้โดยใช้คำสั่งใน preamble เช่น เมื่อต้องการใช้ฟอนต์ลักษมัณในเอกสาร:

\renewcommand{\sffamily}{laksaman}
\AtBeginDocument{\sffamily}

แต่ด้วยแนวโน้มของความต้องการที่น่าจะสูงพอ ผมจึงตัดสินใจเพิ่ม option ให้กับแพกเกจ fonts-tlwg เสียเลย โดยผู้ใช้สามารถใส่ option ขณะ \usepackage ได้เลย โดยแบ่งหมวดหมู่ของ option ดังนี้:

ตัวอย่าง use case:

เป็นฟีเจอร์ใหม่สำหรับ fonts-tlwg รุ่นหน้าที่จะรอออกรุ่นต่อไปครับ

โดย Thep (noreply@blogger.com) ณ 5 July 2014 10:27 GMT

11 June 2014

Neutron

Fix EEPROM Intel 82574 (e1000e driver)

จดไว้ กันลืม
http://sourceforge.net/projects/e1000/files/e1000e%20stable/eeprom_fix_8...

โดย neutron ณ 11 June 2014 05:39 GMT

23 May 2014

Kitt

WordPress upgraded

It’s been awhile from the last upgrade. So, here it is, another upgrade of WordPress for this site. In this update, I dumped NextGen Gallery and use the media manager of WordPress for creating and managing galleries. Yeah, have to manually migrate those photo (something like 8000+ photos). Hopefully, I did not miss anything. Oh, happy May […]

โดย kitty ณ 23 May 2014 02:51 GMT

when it happens, it happens ..

เมื่อคราวปี 49 “เคย” มีเหตุมาแล้ว มันก็เลยกลายเป็นตำนานต่อๆ กันมา

โดย kitty ณ 23 May 2014 00:51 GMT

1 April 2014

Prach

My Contribution to Debian, 2014-2

Upload:
- phpunit (3.7.28-1)
- php-codecoverage (1.2.13+dfsg2-1)
- php-token-stream (1.2.1-1)
- phpunit-selenium (1.3.3-1)
- phpunit-mock-object (1.2.3-1)
- Sponsor by David Prévot
  + php-mail (1.2.0-6)
  + php-http-webdav-server (1.0.0RC6-2)
  + php-xml-dtd (0.5.2+dfsg1
  + php-timer (1.0.5-1)
- php-zmq (new), sponsor by Laszlo Boszormenyi
- debpear/0.4 (native) -- automatically builds and installs PEAR package as Debian packages
  + add supported for channel and PECL packages
- haproxy (1.4.25-1), sponsor by Apollon Oikonomopoulos

Other packages:
 - docker.io (0.8.0+dfsg1-1), added zsh completion.

Bugs:
#732641 -- pkg-php-tools: Please, remove tests file with Buildsystem-phppear
#736294 -- pkg-php-tools: causes directory vs. symlink conflicts
#730316 -- php-mail: FTBFS: test failures in smtp_error test
#737453 -- php-codecoverage: Sourceless file (minified) (jquery)
#738373 -- php-xml-dtd: FTBFS: chmod: cannot access .. No such file or directory
#738416 -- php-http-webdav-server: FTBFS: chmod: cannot access .. No such file or directory
#737558 [P] -- pkg-php-tools: Please, support Zend extensions

TODO:
- http://dep.debian.net/deps/dep8/
- Join the NM process (if I have time)


โดย Prach Pongpanich (noreply@blogger.com) ณ 1 April 2014 06:50 GMT

25 February 2014

bact

“อยากกด Like จนมือสั่น”

สืบเนื่องจากกรณีตำรวจอยากดูข้อมูลการพูดคุยกันของประชาชนบนโซเชียลมีเดีย

นิตยสาร Way สัมภาษณ์ประมาณสิงหาปีที่แล้ว ฉบับสั้น “5 คำถาม” ตีพิมพ์ลงฉบับ 56 ธีมเล่ม “Human 2.0″

ส่วนฉบับยาวเพิ่งออกมาเมื่อเดือนนี้ (ก.พ. 2557) ในชื่อว่า “อยากกด Like จนมือสั่น” ว่าด้วยความเคลื่อนไหวเปลี่ยนแปลงบนสื่อสังคม การแสดงออกทางการเมือง การควบคุมสื่อ และสิทธิมนุษยชน

ภาพประกอบนี้ถ่ายที่ชั้น 2 ตึกคณะนิติ จุฬา หน้าร้านถ่ายเอกสาร – โซฟานี่ก็ไปยืมมาจากร้านถ่ายเอกสาร ช่วยกันยกกับพี่ช่างภาพ

eh?

โดย Arthit Suriyawongkul ณ 25 February 2014 04:31 GMT

เข้าเว็บไซต์มหาวิทยาลัยเที่ยงคืนไม่ได้? ลิงก์เสีย? ลองนี่

ใครจะค้นจะหาอะไรในเว็บไซต์เดิมของมหาวิทยาลัยเที่ยงคืน ถ้าลิงก์ที่มีอยู่มันเข้าไม่ได้แล้ว (เพราะเว็บไซต์ใหม่เปลี่ยนการจัด url) และลองเสิร์ชด้วยชื่อบทความไม่ได้ผล ลองสองอันนี้ดูครับ

ถ้าลิงก์ที่มีอยู่เป็นลิงก์จากสมัย http://www.geocities.com/midnightuniv/ หรือ http://www.geocities.com/midnight2545/ ให้เปลี่ยนคำว่า geo ในลิงก์เป็น reo แล้วลองเข้าดูใหม่

ถ้าลิงก์ที่มีอยู่หน้าตาแนวๆ นี้ http://www.midnightuniv.org/midnight2544/XXX.html
ให้ลอก XXX มาใส่ตามลิงก์นี้ http://thaiis.com/midnightuniv-org-v1/XXX.html

เช่น http://www.midnightuniv.org/midnight2544/0009999708.html
ก็เป็น http://thaiis.com/midnightuniv-org-v1/midnight2544/0009999708.html

ส่วนถ้าอยากไล่ดูบทความในแบบเดิมๆ ไปที่หน้าแรกแบบเก่าเก่าและแบบเก่าได้ที่สองลิงก์นี้ครับ

สำหรับเว็บไซต์มหาวิทยาลัยเที่ยงคืนรุ่นใหม่ล่าสุด ซึ่งมีบทความใหม่ๆ ออกมาอยู่เรื่อยๆ เข้าดูได้ที่ http://www.midnightuniv.org/

(เหตุทั้งหมดเกิดจากมีคนมาถามถึงบทความในโพสต์นี้ ซึ่งลิงก์เดิมเข้าไม่ได้แล้ว ก็เลยถึอโอกาสอัปเดตและเขียนบอกวิธีไปเลย)

โดย Arthit Suriyawongkul ณ 25 February 2014 04:14 GMT

30 January 2014

Prach

My Contribution to Debian, 2014-1

Uploaded:
- php-sasl, php-gnupg sponsored by Lior Kaplan
- php-date, php-auth -- sponsored by David Prévot
- libdi, libdbi-drivers -- sponsored Laszlo Boszormenyi

Bugs:
- #731732 -- ocamlrss: FTBFS on bytecode architectures
- #735372 -- docker.io: errors with bash completion

โดย Prach Pongpanich (noreply@blogger.com) ณ 30 January 2014 16:56 GMT

28 July 2013

q0022

compile กับความหลัง slackware

นานแล้วที่ไม่ได้คอมไพล์โปรแกรม แต่เมื่อ postgrsql ที่มากับ ubuntu 13.04 มันเก่าเหลือเกินอยากลอง json data type ก็ทำไม่ได้ อย่ากระนั้นเลย ไปดาวน์โหลด source มาคอมไพล์เองเลยดีกว่า คิดถึงอดีตเมื่อครั้งยังเป็นเพื่อนสนิทกับ slackware สมันก่อนอยากได้อะไรก็คอมไพล์เองตลอด เดี๋ยวนี้ไม่เคยเลยเจ้าตัวนี้เป็นตัวแรกในรอบหลายปีทีเดียว คิดถึงวันวานแฮะ ว่าแล้าว่างคอมไพล์ kernel เล่นดีกว่า

โดย q0022 (noreply@blogger.com) ณ 28 July 2013 14:39 GMT

24 May 2013

Ott

แสนสิริ Home Care Less or More?

โครงการของแสนสิริฯ นั้นยอมรับว่ามีความโดดเด่นมาก โดนใจลูกค้าสุดๆ ไม่ว่าจะเป็นรูปลักษณ์ สไตล์โครงการ แบบบ้าน การขาย การตลาด digital กิจกรรมต่างๆ ของลูกบ้าน ฯลฯ เอาเป็นว่าจัดอยู่ระดับหัวแถวของเมืองไทยเลยล่ะ เปิดขายแต่โครงการ หมดเอาๆ ทั้งๆ ที่ราคาก็ไม่ได้ถูก ก็ต้องยอมรับ

บ้านที่ผมอยู่ปัจจุบันนี้ สำหรับผมก็จัดเป็นโครงการหนึ่งของแสนสิริฯ ที่น่าจะเรียกได้ว่าประสบความสำเร็จมากๆ ต้องขอขอบคุณทางแสนสิริฯ ซึ่งกล่าวได้ว่า ถ้ามี่ที่ดินให้ไปสร้างบ้านเอง ให้ได้บรรยากาศ สวยงามขนาดนี้ ชีวิตนี้ก็ไม่รู้จะทำได้หรือเปล่า สโมสรหมู่บ้านผมสวยมากๆ เลยนะครับ

แต่สิ่งที่แสนสิริฯ​น่าจะปรับปรุงคือบริการ Home Care

หลังจากที่เราตกลงใจซื้อบ้านแล้ว ตรวจรับ และ โอนกรรมสิทธิ์แล้ว ปัญหาต่างๆ ภายในบ้าน จะถูกดูแลโดยบริการที่เรียกว่า Home Care ซึ่งจะรับประกันภายหลังการขายเป็นเวลา 1 ปี

ทว่าคุณภาพของบริการของ Home Care นั้น ต่ำกว่าบริการอื่นๆ ของแสนสิริฯ อย่างเห็นได้ชัด
ผมเข้าอยู่บ้านนี้มาเกือบสองปีแล้ว ปัญหาต่างๆ ของ Home Care ก็ยังแก้ไม่เสร็จ จนไม่แน่ใจว่ามันเป็นที่ฝีมือ หรือ ทางเทคนิคของงานก่อสร้างจริงๆ

เจ้าหน้าที่ก็เปลี่ยนบ่อย คนแรกมาจดรายการไว้หมด แก้ไปได้อย่างสองอย่าง ย้ายที่ คนใหม่มา มีปัญหาตรงไหนบ้างนะคะ ขอจดใหม่ เอ้า จดใหม่ แก้ไปสองสามงาน ย้ายที่ คนใหม่มา มีตรงไหนบ้างนะครับ อืมม

หลังๆ โทรตามเยอะๆ ก็ไม่รับสาย ไม่โทรกลับ นานๆ ทีโทรกลับ นานมากๆ ก็บอก โอมันนานแล้ว เลยเวลารับประกันแล้วหรือเปล่าครับ

หลังๆ มีเทคนิค คือ โทรไปโวยกับ call center เลย ให้เขาช่วยตาม เหมือนจะได้ผลนะ

นัดหมายมาซ่อม คุยกันไว้สองงาน มาถึง ทำแค่งานเดียว อีกงาน งง อ้ะ เวลาเหลือ ทำก็ทำ แต่ไม่มีวัสดุ ต้องออกไปซื้อก่อน รถติด กลับมาไม่ทัน ไว้ทำอีกวัน คือกระผมต้องหยุดงานมาเฝ้าพวกคุณนะครับ เขาคงคิดว่าเราไม่มีไรทำ อยู่บ้านตลอด

หลังบ้านแตกร้าวเป็นรอยจำนวนมาก แก้เป็นรอบที่ 8 ได้แล้วมั้ง ก็ยังไม่หาย ไม่รู้เป็นที่อะไร วัสดุ หรือ ฝีมือ แต่ก็ยังดีที่ยังสัญญาว่าจะแก้ให้ต่อไป

กระเบื้องในห้องน้ำห้องนอนแตก เขาก็แก้ให้แต่ทำไงรู้ไหมครับ เลาะกระเบื้องออกไปเหลือผนังปูนโป๊ๆ แล้วก็บอกว่าเดี๋ยวไปสั่งกระเบื้องก่อน  รอไปเดือนนึง ค่อยเอามาปิดให้ เฮ้ยทำไมไม่สั่งให้เรียบร้อยแล้วค่อยมาเลาะมาปิดวันเดียวกันล่ะ งง ไหม

ส้วมมีกลิ่น มีอยู่ห้องเดียวที่มีกลิ่น แก้แล้วก็ไม่หาย เนี่ยเดี๋ยวเขียนนี่เสร็จต้องโทรตามอีก แก้เป็นรอบที่สามแล้วมั้ง

หลังคารั่ว แก้แล้วยังรั่ว แต่กว่าจะทราบว่ารั่วก็เลยมาอีกหน้าฝนนึง เขาว่ามันนานไปแล้ว เลยประกัน อ่าว แต่เถียงกันยืดยาว ก็ตกลงว่าจะส่งบริษัทหลังคาฯ​มาดูให้

บางอย่างก็ไม่แก้ให้ อาจจะเป็นข้อจำกัดจริงๆ

เสาหน้าบ้านแตกร้าว Home Care บอกมันเป็นเสาหลอก แตกแน่ๆ แก้ไปก็แตก แต่ก็ยังดีอุตส่าห์แก้ให้ 1 ครั้ง แล้วไม่ถึงเดือนผ่านไปก็แตกใหม่จริงๆ ก็ปล่อยมันแตกไป อืม

พื้นโรงรถเริ่มแตก Home Care บอกไม่แก้ ไม่รวมในขอบเขต

คือ ถามว่า Home Care แย่มากมั้ย มันก็ไม่ได้เลวร้ายมากอะนะ ก็แก้ให้หลายอย่างมากแล้ว และจุดที่เป็นปัญหาก็ไม่ถึงกับทิ้งงาน อย่างน้อยก็ยังดีที่รับฟัง และแก้ไขให้ มาตลอด แต่มีความรู้สึกเหมือนมันไม่มืออาชีพยังไงชอบกล คือ เทียบกับ ส่วนอื่นๆ ของแสนสิริฯ​ ดูการตลาด การขาย การออกแบบ ฯลฯ นี่ผมว่าแผนกนี้ค่อนข้างด้อยๆ นะ

ทำไมแสนสิริไม่ใช้ผู้รับเหมาแบบมืออาชีพ (ดู http://callmeott.blogspot.com/2013/05/blog-post.html) ซึ่งผมว่าน่าจะดีกว่านี้นะ นัดหมายเป๊ะๆ มาเป็นทีม วัสดุ อุปกรณ์พร้อม แลดูมืออาชีพมากๆ

มันจะแพงขึ้นอีกสักกี่ตังค์ สำหรับบริษัท มหาชน ระดับนี้ กำไรระดับนี้ ผมว่าเจียดเงินมาทำด้านนี้ให้ดีๆ แก้งานให้มันประทับใจ รวดเร็ว มันอาจจะเป็นจุดขายที่เด่นๆ ได้เลยนะครับ

โดย Pattara Kiatisevi (noreply@blogger.com) ณ 24 May 2013 06:00 GMT

ผู้รับเหมา สองแบบ

ช่วงสองสามปีที่ผ่านมา มีประสบการณ์ซ่อม/ซื้อ/ตรวจรับ/<wbr style="background-color: white; color: #37404e; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 18px;"></wbr>เก็บงานซ่อมแซมบ้านมาพอสมควร เจอผู้รับเหมาอยู่ 2 แบบ 

คือ แบบถูกแต่ปวดหัว เป็นเจ้าของกิจการส่วนตัว คิดราคาไม่แพง ฝีมือก็มีดีบ้าง ไม่ดีบ้าง มาสายบ้าง เบี้ยวบ้าง ช่างก็มาแบบบ้านๆ บางคนเก่ง บางคนมึนๆ แล้วแต่ดวงจะได้ช่างคนไหน โดยมากแต่ละคนจะเก่งเป็นบางงาน เราต้องรู้ว่า เขาถนัดงานปูน งานไม้ งานไฟ ต้องอย่าฝืนให้ทำสิ่งที่เขาไม่ถ<wbr style="background-color: white; color: #37404e; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 18px;"></wbr>นัด แต่ปัญหาคือ นัดยาก นัดไม่ค่อยเป็นนัด ติดโน่น ติดนี่ บางทีทำแล้วก็ลืมของโน่นนี่ ต้องออกไปซื้อ กลับมาอีกทีเย็น เลิกงาน ทำได้วันละนิด ถ้าฝีมือดียิ่งนัดยาก ถ้าให้มาแค่เก็บงานเล็กๆ น้อยๆ ยิ่งนัดยากสุดๆ

กับ อีกแบบคือแบบแพงแต่กระเป๋าตังค์<wbr></wbr>จะรั่ว คือ เป็นบริษัท การบริการแทบจะเป็นอุดมคติ มีหัวหน้ามาดู มาตามเวลานัดเป๊ะๆ เก็บรายละเอียดหมด ส่งใบเสนอราคา เขียนชัดเจนว่าจะทำอะไรบ้าง ใช้วัสดุอะไร งานเล็กก็ยอมมาทำ, ก่อนงาน 1 วันโทรคอนเฟิร์ม มาถึงหน้างานตรงเวลา ข้าวของครบ ช่างทุกคนแต่งตัวยูนิฟอร์ม รู้นาทีของตน ทำเร็วโคตร ชำระเงินรูดบัตรเครดิตก็ได้ ออกบิลก็ยังได้ รับประกันผลงาน 1 ปี มีเสียในสิ่งที่ทำไป ซ่อมให้ฟรี

แต่แพงโคตรๆ เลยล่ะ น่าจะ 2-3 เท่าของแบบแรกได้ เรียกใช้เฉพาะอะไรที่มันฉุกเฉิน<wbr></wbr> น้ำรั่ว อะไรพวกนี้ที่รอไม่ได้ และเรียกแบบแรกก็ไม่ยอมมา

มันจะมีแบบตรงกลางมั้ยนะ ที่เอาบริการดีๆ แต่ราคาเบาๆ หน่อย เข้าใจว่าการบริการที่ดีมันก็ต้<wbr></wbr>องมีค่าใช้จ่ายในการจัดการ แต่คุณก็ใช้ซอฟต์แวร์ใช้การบริห<wbr></wbr>ารจัดการอะไรทำให้มันมีประสิทธิ<wbr></wbr>ภาพ ต้นทุนจะได้ไม่สูงมาก ได้ไหม

โดย Pattara Kiatisevi (noreply@blogger.com) ณ 24 May 2013 05:28 GMT

25 March 2013

Vee

ทรรศนะทางการเมือง

ทรรศนะทางการเมือง ย้ายไปที่ http://politicsivo.tumblr.com/

25 March 2013 16:53 GMT

20 March 2013

Vee

เราเป็นคนไทยนะ

หลายปีมาแล้ว ผมบอกทำนองว่า censorship มันต้องตรวจสอบได้ ไม่งั้นจะรู้ได้ไงว่าคน censor มั่วหรือเปล่า เอาประโยชน์เข้าตัวเอง แกล้งคนอื่นหรือเปล่า

เขาบอกผมว่าเราเป็นคนไทยนะ ...

ผมงึดครับ ...
 
<script type="text/javascript">// </script>
<noscript>Please enable JavaScript to view the comments powered by Disqus.</noscript> comments powered by Disqus

20 March 2013 06:17 GMT

25 September 2012

Kamthorn

~/.ssh/config

เทคนิคการใช้ไฟล์ config ของ ssh ซึ่งเป็นไฟล์ค่าปรับแต่งสำหรับ ssh client บน Linux ซึ่งปกติเราจะระบุค่าต่างๆ ด้วย option ท้ายคำสั่ง ซึ่งบางครั้ง โฮสต์ปลายทางคนละโฮสต์ก็ต้องใช้ option ต่างกัน โดยเฉพาะ port ซึ่งมีหลายๆ โฮสต์ที่อาจจะเปลี่ยนหมายเลข port เป็นตัวอื่น ไม่ใช่ 22

ให้สร้างไฟล์ ~/.ssh/config ขึ้นมา (ปกติไม่มีไฟล์นี้อยู่)

ใส่เนื้อหา
Host *
Protocol 2
ServerAliveInterval 300
ServerAliveCountMax 100

เป็นการตั้งค่าแบบทั่วไป คือเวลาติดต่อกับทุก host ให้ใช้ protocol version 2 เท่านั้น และกำหนดให้ส่งแพกเกจเพื่อกระตุ้นให้มีการเชื่อมต่อทุก 5 นาที (300 วินาที) และส่งเป็นจำนวนสูงสุด 100 ครั้ง แสดงว่า ssh ที่เชื่อมจะไม่หลุดเป็นเวลา 500 นาที (8 ชั่วโมง 20 นาที) ถ้าไม่ตั้งแบบนี้บ่อยครั้ง ssh จะหลุดเร็วเกินไป

Host terminus
HostName terminus.abcdef.com
Port 18222
User ubuntu

แบบนี้เป็นการตั้งค่าเฉพาะ host โดยจะกำหนดชื่อ host สำหรับใช้อ้างอิง เช่น terminus, แล้วระบุที่อยู่แบบเต็ม เช่น terminus.abcdef.com, กำหนด port เชื่อมต่อปลายทางเป็น 18222 ปกติคือ 22 ซึ่งไม่ระบุก็ได้เพราะเป็นค่าปริยาย แต่บางเซิร์ฟเวอร์อาจจะเลี่ยงมาใช้พอร์ตอื่นเพื่อลดการโจมตีแบบ portscan แล้ว attack ที่พอร์ต ssh, ระบุชื่อ user เป็น ubuntu ถ้าไม่ระบุมันจะใช้ชื่อ user เราที่เครื่อง local เอง หรือระบุที่ command line

ถ้ามีโฮสต์อื่นก็เพิ่มเข้าไปทำนองเดียวกัน

การตั้งค่าอื่นๆ มีอีกมาก ดูได้จากคำสั่ง
$ man ssh_config

ถ้าเป็นเครื่องที่ใช้ร่วมกันหลายๆ คนหรือมีบริการอื่นรันอยู่เพื่อให้บริการบุคคลภายนอกด้วย หรือไม่แน่ใจ ควรเปลี่ยนสิทธิของไฟล์นี้ให้อ่านเขียนได้เฉพาะ user เราเองเท่านั้น โดยสั่ง
$ chmod go-rw ~/.ssh/config
$ ls -l ~/.ssh/config
-rw------- 1 kamthorn kamthorn 381 Aug 15 12:31 /home/kamthorn/.ssh/config


การใช้งาน
เดิมเราต้องสั่งด้วย
$ ssh -p 18222 ubuntu@terminus.abcdef.com

พอเราตั้ง config ไว้แล้วก็แค่
$ ssh terminus

เวลาจะ scp หรือ rsync ผ่าน ssh ก็จะง่ายขึ้น ไม่ต้องระบุพอร์ตอีกต่อไป

โดย Kamthorn Krairaksa (noreply@blogger.com) ณ 25 September 2012 09:13 GMT

28 August 2012

Thep

Pango-HarfBuzz Merge and The Effects on Thai Module

One major change in GNOME 3.6 is Pango’s shaper engines replacement with HarfBuzz. Only language engines (for word break analysis, for example) are retained. So, I’m checking how this affects Thai/Lao rendering and what to do next.

Over all, Behdad has put a good effort to make it right. Most Uniscribe behaviors have been achieved for compatibility. He even cares enough to cover some widespread Thai fonts in which the language tag 'latn' is used instead of 'thai', as seen in Mozilla #719366. Unfortunately, this font set has been declared as standard fonts in official documents. The workaround seems inevitable.

Supported Fonts

In my experiments with some existing Thai OpenType fonts, the new Pango still renders well without regression.

Loma font from fonts-tlwg (glyph positioning with GPOS, rearrangement with GSUB):

Loma on new Pango

Arundina Sans font from Fonts-SIPA-Arundina (positioning by substitution, only GSUB, no GPOS):

Arundina Sans on new Pango

But for legacy fonts without OpenType features, it renders badly:

Non-OpenType on new Pango

In addition, according to Behdad, PUA glyphs in legacy fonts are not supported yet. This means there will be regression on fonts designed for Windows XP or below. But modern fonts designed for Windows 7 should be fine.

Changes on Bugs

The engine replacement from scratch certainly affects existing bugs. Some become obsolete, some still remain. Here are the summary for Thai/Lao engine, as resolved upstream:

Closed bugs:

Questionable bugs:

Remaining bugs:

28 August 2012 07:25 GMT

26 June 2012

Kamthorn

10 ซอฟต์แวร์เพื่อบริการ web site สำหรับทุกวันนี้


Cores แกนหลักๆ ซึ่งก็คือ LAMP นั่นเอง

  1. Linux ซึ่งปกติใช้ Debian ตอนนี้รุ่น stable คือ squeeze (6.0) บนสถาปัตยกรรม amd64 คงไม่มีใครใช้ 32 bit นะ
  2. Apache httpd โดยใช้ MPM แบบ worker แม้ว่าจะมีคู่แข่งอย่าง lighttpd หรือ nginx แต่ apache httpd มีฟีเจอร์มากมายและตั้งค่าได้ง่าย ในเรื่องความเร็วในการให้บริการเว็บแบบ dynamic content ด้วย PHP ไม่ได้ต่างกันมาก
  3. MySQL จริงๆ คือ database server สักตัว แต่ส่วนใหญ่ developer ยังถนัดจะใช้ mysql กันอยู่ ก็ตามนั้นไปก่อน ทางเลือกอื่นๆ ก็มี percona ซึ่งเป็น mysql clone, postgreSQL หรือจะ NoSQL ก็ mongodb, couchdb เป็นต้น
  4. PHP ตอนนี้ใช้รุ่น 5.3 อยู่ แต่รันแบบ fpm (php5-fpm) ตัวนี้ยังไม่มีบน squeeze แต่สามารถลงได้จาก repo ของ dotdeb.org เป็นตัวที่ รัน php5 ในโหมด fastcgi ซึ่งมีระบบบริหารจัดการโพรเซสด้วย ต่างจาก php5-cgi ที่แม้ว่าจะรันเป็น fastcgi ได้แต่ชอบมีปัญหา process ค้าง

Extensions ส่วนขยายที่ทำให้ระบบทำงานได้ดีขึ้น

  1. varnish ตัวนี้เป็น reverse proxy สำหรับรับ connection ที่ port 80 ก่อนจะส่งต่อให้ apache จุดเด่นคือ ทำ caching ได้, มี apache เป็น backend หลายๆ เครื่องได้ คือทำ load balance ได้นั่นเอง, เขียน script เพื่อจัดการกับภาระกิจบางอย่างได้ เช่น backend เรียกไปแล้ว error 503  กลับมา ก็สั่งให้เรียกไปใหม่ หรือให้แสดงหน้ารอ แล้ว refresh ใหม่ เป็นต้น (503 มักเกิดจาก backend ไม่พร้อมให้บริการในขณะนั้น ส่วนใหญ่รอสักพักแล้ว refresh ก็ใช้ได้ตามปกติ) ปัญหาหนึ่งของการใช้ varnish + apache คือข้อมูลล็อกของ apache จะเก็บ client IP เป็น IP ของ varnish เอง ไม่ใช่ของ client ที่แท้จริง แก้โดยใช้ libapache2-mod-rpaf
  2. couchbase ใช้ทำหน้าที่เป็น memcache โดยใช้สำหรับ 1. เก็บ php session data 2. ใช้เป็น memcache สำหรับเก็บข้อมูล cache ชั่วคราว โดยไม่ต้อง query จาก database บ่อยๆ (ต้องเขียนแอปให้รองรับการใช้ memcache ด้วย) เดิมใช้ memcached แต่ couchbase ดีกว่าตรงที่ สามารถทำงานแบบ cluster คือมีหลายๆ เครื่องช่วยกันทำงานได้ สามารถเก็บลงดิสก์ได้ มีหน้าเว็บสำหรับ monitor และตั้งค่าต่างๆ ได้
  3. ufw การกำหนดค่า firewall ด้วย iptables (netfilter) นั้นสำหรับผมเองถือว่ายุ่งยากมาก โดยเฉพาะเวลาที่ต้องกลับมาแก้หรือปรับบางค่าใหม่ พอมาลอง ufw แล้วสะดวกสบายขึ้นมาก

Luxuries ไม่ได้ทำให้ระบบทำงานดีขึ้น แต่ช่วยสนับสนุนในการติดตามเฝ้าดูระบบ

  1. munin เอาไว้เก็บข้อมูลการทำงานของระบบไว้ตรวจสอบ โดยมันจะสร้างเป็นชุดของแผนภูมิให้ดูง่ายๆ และสวยงามเลยทีเดียว สามารถใช้เก็บข้อมูลจากหลายๆ เครื่องได้โดยติดตั้งเฉพาะแพกเกจชื่อ munin-node แล้วให้ munin ตัวหลักไปเรียกเอาข้อมูลมาประมวลเป็นแผนภูมิ
  2. monit เอาไว้คอย monitor ระบบและจัดการแจ้งเตือน หรือรันคำสั่งที่ตั้งไว้ เมื่อตรวจพบเหตุบางอย่าง เช่นเปิดหน้าเว็บที่กำหนดไว้ไม่ได้ ดิสก์เหลือน้อย พบแพทเทิร์นล็อกที่กำหนดไว้ เป็นต้น
  3. webalizer เอาไว้วิเคราะห์ล็อกของ web server แสดงเป็นรูปแผนภูมิสวยงาม ดูง่าย และน่าจะคุ้นเคยกันดี

โดย Kamthorn Krairaksa (noreply@blogger.com) ณ 26 June 2012 04:38 GMT

31 May 2012

Chatsiri

New Kindle DX

Kindle-4 DX,First screen when kindle shutdowns desktop.

โดย chatsiri ณ 31 May 2012 18:18 GMT

7 May 2012

Chatsiri

ในความเก่าที่ยังไม่ลืม

ชีวิตผกผันเป็นเรื่องเกิดขึ้นจริงๆ เหมือนหลายๆคนที่รู้จักก็เคยเกิดเรื่องของชีวิตที่ผักผัน มันเปลี่ยนหน้าตาตัวเองหรือแนวคิดตัวเองจากหน้ามือเป็นหลังมือ การย้ำเตือนตัวเองว่าสักวันหนึ่งมันจะเกิดขึ้นกับตัวเองให้ตัวเองพึ่งระวังเอาไว้กับสิ่งที่จะเกิดขึ้นไม่ช้าก็เร็ว. เมื่อถึงจุดหนึ่งของชีวิตที่หลายอย่างไม่เป็นอย่างที่คาดหวัง มันก็เหมือนความรู้สึกและเหตุผลที่อยากให้มันเกิดขึ้น จมหายไปต่อหน้าต่อตา แม้จะเก็บความรู้สึกไว้มากสักเท่าไร สายธารของคาดหวังที่มันพังไปต่อหน้า ก็กระดังเข้ามา ความเจ็บปวดที่กัดกร่อนทำหน้าที่ของมันตามความคาดหวังอย่างที่เคยคิด และอยากจะให้เป็น การมองโลกในแง่ดีเพื่อให้ตัวเองออกจากสิ่งที่จมนั้นเหมือนกับการกล่อมตัวเองให้รอดพ้นจากแรงสายธารของความคาดหวัง มันเป็นอย่างนี้ซ้ำแล้วซ้ำอีก การมองโลกในแง่ดีแล้วไม่เป็นอย่างที่คาดหวังเราจะเจ็บปวด มันก็ไม่ได้เลวร้ายไปเสียทีเดียว มองโลกในแง่ร้ายก็ไม่ช่วยอะไรให้ดีขึ้นมาเมื่ออดีตมันผ่านพ้นไปแล้ว
เมื่อไรก็ตามที่ความคาดหวังพังลงนั้นเกิดขึ้นอีก ผมก็กลับมามองตัวเองถึงสิ่งที่ทำผิดพลาดไปแล้วขอร้องให้สิ่งเหล่านั้นไหลย้อนกลับมา ทั้งที่ความจริงแล้วมีโอกาสเพียงครั้งเดียว.
อะไรหลายอย่างไม่ได้เป็นอย่างที่คาดหวังมันจะพังไปตรงหน้า เราจะมองโลกด้านเดียว มันเป็นไปไม่ได้ หากหันหน้าคุยกันแล้วเส้นทางที่ตกลงกันนั้นทำให้อีกฝ่ายต้องเสียใจ มันก็เจ็บใจด้วยกันทั้งนั้น. คนเรามีทางต้องเดินต่อไปข้างหน้า ความทรงจำที่โกธรแค้นไม่ได้ช่วยให้เราก้าวไปได้อย่างมีความสุข เพราะความเจ็บปวดมันเกิดขึ้นทุกครั้งที่โกธรแค้น อย่าให้ชีวิตเราต้องติดกับสิ่งนี้ แม้จะต้องเดินไปข้างหน้า แต่อย่าลืมเงาแห่งอดีต มันต้องเข้าใจวา่อะไรเกิดขึ้น สิ่งที่เกิดขึ้นคืออะไร การอยู่อย่างเข้าใจทำให้มองเห็นอะไรในอีกมุมมองหนึ่ง ถึงมันจะแย่ แต่อย่างน้อยเราก็เข้าใจเพียงแต่มันแก้ไขไม่ได้ เพราะตัวแปรเหล่านั้นไม่ใชตัวแปรที่เราควบคุมได้ หากเป็นอนาคตที่คาดหวังมันก็เป็นตัวแปรที่ยากจะควบคุม.
ถ้าวันไหนที่หัวใจตัวเองล้มเหลวลงไป ก็กล่อมใจตัวเองว่าอดีตคือสิ่งที่สอน การก้าวต่อไปคือสิ่งที่ขอให้เกิดขึ้น

หากถามว่าอะไรคือสิ่งสุดท้ายที่จะขอให้เหลืออยู่ แม้จะมีตำหนิในสิ่งนั้น ก็ขอให้ก้าวต่อไป.

โดย chatsiri ณ 7 May 2012 16:45 GMT

13 January 2012

Hui

Post แรกหลังเปลี่ยน Template เป็นแบบใหม่ สีฟ้าเรียบๆ

โดย Hui/ฮุ้ย (noreply@blogger.com) ณ 13 January 2012 02:35 GMT

25 October 2011

q0022

Disable The Overlay Scrollbars

สิ่งหนึ่งที่เป็นเรื่องน่ารำคาญสำหรับผมคือ Overlay Scrollbars ใน ubuntu โอเค ถ้าในหน้าจอเล็กๆ อย่าง netbook ก็ว่าไปอย่างแต่ใน notebook แล้วมันทำให้การทำงานยากขึ้น ซะอย่างนั้นแล้วเอา Feature นี้ออกดีกว่าโดยการคำสั่งนี้ใน Terminal

sudo su
echo "export LIBOVERLAY_SCROLLBAR=0" > /etc/X11/Xsession.d/80overlayscrollbars

แล้วทำการ Reboot หนึ่งครั้ง
ถ้าไม่ได้ผลให้ทำการ remove ออกดังนี้

sudo apt-get remove overlay-scrollbar liboverlay-scrollbar-0.1-0

แล้ว Reboot อีกที
และแล้ว Scrollbar อันเก่าที่เราคุ้นเคยก็กลับ อิอิ

ที่มา... http://www.webupd8.org/2011/04/how-to-disable-overlay-scrollbars-in.html

โดย q0022 (noreply@blogger.com) ณ 25 October 2011 09:59 GMT

2 October 2011

Thep

Myanmar Visit

Quite a belated English blog (after the Thai version), due to busy personal life lately.

I had visited Yangon during 4-11 Sep. to give some talks and tutorials on Debian packaging and mirroring. And I've shared some information with community.

The visit was initiated by Ngwe Tun and the Myanmar L10N team. I found later that a Facebook event had been created for this.

Localization

The first day was a comparison between Myanmar and Thai supports in GNU/Linux, in which I briefed the status on Thai side, and Thura Hlaing on Myanmar side. It was nice that we had the Myanmar Computer Federation (MCF) director presiding the meeting til the end. That means GNU/Linux support has been awared at executive level.

According to Thura, Burmese has gained support in GNU/Linux quite well. On the rendering side, all the reordering for the logical order is normally done with pure GSUB in the fonts, without special processing on the rendering engine. This is suboptimal in principle, but it's the most effective way, as Windows redering engine itself does not yet support Myanmar, either.

For input method, Myanmar XKB map has been available in xkb-data for a long time, but to serve users' familarity with visual order typing, some reordering input methods have been developed, based on keymagic and ibus. But all are not context-sensitive like what's done for Thai in other frameworks. Fortunately, with the surrounding text API recently added to ibus, this has become possible.

One unusual requirement for Myanmar script editing is the caret movements. It needs to move syllable-wise, not character-wise nor cluster-wise. So, I suggested them to have a look on UAX #29 to see how it should be amended.

Myanmar locales are already done, both for GNU C library and CLDR. And even a GNOME applet for Myanmar lunar calendar is also available. This latter thing is what Thai can learn from.

Burmese word segmentation is not supported in general. But R&D works have been done for this in its NLP lab.

A serious issue left to solve is the existing abuses of Unicode. In Myanmar, there exist at least 14 variations of font hacks, abusing some free slots in Unicode charts as pre-composed clusters for information interchange (not for font internals), making plain text interchange impossible without the proper font for rendering.

For program translation, the new Myanmar L10N team is trying to request for a mass submission to the current GNOME team. And for Debian, Thura Hlaing and Ngwe Tun has already started the translation process with Christian's help.

Along my stay, I could see the team actively discussing on the IT glossary, trying to settle down the translated terms. This looked very fun.

Debian

Then, the next three days were a workshop on Debian packaging, where I have presented the basics of Debian package building, uploading, quality-controlling, modifying, creating and delivering. This aimed toward the development of a local distribution based on Debian.

Each day in the afternoon was the time for setting up a Debian mirror, not only for convenient local distro developement, but also for general users. This is important because internet penetration is still low in Myanmar. The main media for software distribution is CD/DVD, which means only stable version of Debian can be spread, which is not good for desktop users. Having a mirror should improve the situation somehow. It should make dist-upgrading to testing/unstable easier. And it should make CD snapshotting using local distributions easier, too.

For this, I also presented another quick slide on Debian mirroring & caching.

In the last day, I was introduced to the staffs of Myanmar NLP Lab and their projects, which include Myanmar OCR (based on tesseract), information retrieval, machine translation, and other lingustic resources like dictionary, lexicon and text corpus.

Furthermore, I was also offerred technical helps on developing a Lao/Esaan Tham font for a Lao and North Eastern Thailand variation of Tham script, which is Mon-based and is closely related to Myanmar script. (See some sample transliterations if you are curious how it looks like. It was part of my hacking during DebConf11 travelling.) Currently, its OpenType support is quite sufficient, but it still renders poorly on Mac OSX. To cope with this, I was given a Mac Mini as a present from Myanmar for its development, as well as some explanations on AAT features from a Myanmar font developer. And I am very grateful for that.

2 October 2011 08:31 GMT

31 July 2011

Eakasak

จะ Flash Rom Android ใหม่ทั้งทีต้อง Backup อะไรบ้าง

Flash Rom เจ้า Android คู่ใจทั้งสองเครื่องทุกครั้งก็ต้องมานั่งนึก เลยเขียนเก็บไว้ดีกว่า

  1. SMS by SMS Backup & Restore
  2. Call logs by Call Logs Backup & Restore
  3. Application list by AppBrain Sync
  4. WiFi Setting รอเขียนเป็นวิธีทำ
  5. มีเพิ่มเดี๋ยวมา update

โดย Zena (noreply@blogger.com) ณ 31 July 2011 21:49 GMT