Planet TLWG

Syndicate content
Planet TLWG - http://linux.thai.net/planet
Updated: 1 hour 51 min ago

LookHin: ฟังเพลง MP3 จาก Raspberry Pi ด้วยคำสั่ง Command Line

11 July, 2014 - 06:45

วันนี้เราจะมาลองเปิดเพลง MP3 จากเจ้าตัว Raspberry Pi โดยใช้คำสั่งผ่าน Command Line กันดูครับ โดยเจ้าตัว Raspberry Pi นี้จะมีจุดต่อสัญญานเสียงเป็นแจ๊คขนาด 3.5 มม. มาให้เราอยู่แล้ว เราก็แค่ไปหาลำโพงหรือหูฟังมาเสียบก็สามารถฟังเพลงได้แล้วครับ ในตัวอย่างนี้ผมจะใช้ลำโพงขนาดเล็กต่อเพื่อใช้ฟังเพลง เริ่มแรกก็ต่อสายลำโพงและเตรียมไฟล์เพลง MP3 ให้เรียบร้อย

ทำการติดตั้งโปรแกรม mpg321 เพื่อใช้เล่นไฟล์ mp3

1 sudo apt-get -y install mpg321

กำหนดให้สัญญานเสียงออกที่แจ๊คออดิโอ (ถ้ากำหนด amixer cset numid=3 2 เสียงจะออกทาง HDMI)

1 amixer cset numid=3 1

คอนฟิกต่างๆเรียบร้อย ก็มาลองสั่งรันคำสั่ง mpg321 filename.mp3 เพื่อเล่นเพลง

1 mpg321 filename.mp3

หากต้องการปรับระดับความดังของเสียงให้ดังขึ้นก็เพิ่ม -g เป็นระดับความดังของเสียงตั้งแต่ 1 ถึง 100 เข้าไปดังนี้

1 mpg321 -g 50 filename.mp3

และถ้าหากต้องการให้เล่นต่อเนื่องกันหลายเพลงก็สามารถกำหนดชื่อไฟล์ต่อๆ กันไปได้เลยครับ

1 mpg321 -g 50 filename1.mp3 filename2.mp3

เพียงเท่านี้ เราก็เปิดเพลง MP3 ได้โดยไม่ต้องเข้า X-Window แล้วครับ

Udomsak: แก้ไฟล์ PDF ที่เปิดไม่ได้ Fix PDF Open Error.

11 July, 2014 - 00:45
วันนี้นั่งหาเอกสาร API reference  เนืองจากเป็น Library เก่า จึงต้องไปค้นจาก Book หรือ เอกสารเก่า ๆ ( มากกว่า 3 ปี )  ทีนี้พอไป ดาวน์โหลด PDF ปรากฏว่าไม่สามารถ เปิดได้  ขึน Error แบบนี้



ทำไงดีล่ะ ลองเปิดดู Header เพราะจำได้ว่า ไฟล์ PDF ไม่ได้ขึ้นต้นหัวไฟล์แบบนี้  



ทำการแก้ไขซะ โดยการลบบรรทัดแรกออก


ทำการ Save  ( ปล. ผมเปิดด้วย Editor ธรรมดานี่แหละ )





My site Article and Topic

Thep: Laksaman Font

8 July, 2014 - 18:45

จาก แผนการ ที่วางไว้สำหรับการดัดแปลงฟอนต์สารบรรณเพื่อผลักดันเข้า Debian ว่าจะตกลงใช้ Fonts-TLWG เป็นฐาน ก็ได้ใช้เวลาว่างทำเก็บเล็กผสมน้อยวันละนิด ขณะนี้ก็เริ่มเป็นรูปเป็นร่างแล้ว

สรุปสิ่งที่ปรับจาก TH Sarabun New

  • เปลี่ยนชื่อฟอนต์เป็น Laksaman (ลักษมัณ) โดยอิงตามชื่อที่ใช้ในฟอนต์ชุด Siampradesh แต่ตัด prefix SP ออก
  • ขยายตัวอักษรเป็น 150.42% เพื่อให้ match กับฟอนต์ตะวันตก และเข้ากันกับฟอนต์อื่นในชุด Fonts-TLWG
  • แปลง spline จาก quadratic เป็น cubic พร้อมทำความสะอาด spline
  • เพิ่ม Postscript hints
  • โละ GSUB rules ที่เกี่ยวกับภาษาไทยทิ้งทั้งหมด แล้วเพิ่ม GPOS, GSUB ตามแบบของ Fonts-TLWG
  • เพิ่ม glyph บางส่วนเพื่อรองรับภาษาชาติพันธุ์
  • เพิ่มการรองรับ LaTeX (pdfTeX) โดยเพิ่มเข้าในแพกเกจ fonts-tlwg
  • เพิ่มการสังเคราะห์ฟอนต์ TH Sarabun{PSK, New} บนเดสก์ท็อปผ่าน fontconfig

หลังจากตรวจความเรียบร้อยต่าง ๆ แล้ว คงสามารถออกรุ่นใหม่ได้เร็ว ๆ นี้ครับ

LookHin: การติดตั้ง OpenCV และ Node.js บน Linux CentOS 6.5

6 July, 2014 - 12:45

ไม่ได้เขียนอะไรลงบล๊อคซะนานจนเกือบจะเป็นบ้านร้างไปอีกหละ วันนี้เรามาทดลองติดตั้ง OpenCV และ Node.js กันดูสักหน่อยหละกัน จริงๆก็ไม่ได้เชียวชาญอะไรหรอกนะครับ แต่พอดีมีงานเล็กๆ น้อยๆ ที่จำเป็นต้องใช้ก็เลยต้องหาข้อมูลมาทำ และเมื่อได้มาแล้วเราก็ต้องมาแบ่งปันประสบการณ์กันสักหน่อยเผื่อจะเป็นแนวทางให้คนอื่นเอาไปต่อยอดทำอะไรอย่างอื่นต่อได้ มาเริ่มกันเลยครับ ตัว OpenCV เป็นโปรแกรมที่เอาไว้ทำพวก Image Processing และ Computer Vision เอาง่ายๆก็คือเป็นโปรแกรมที่ใช้ประมวลผลภาพและเอาไว้ช่วยให้คอมพิวเตอร์มองเห็นภาพ เพื่อใช้ในการวิเคราะห์ว่าภาพนั้นคือภาพอะไร ซึ่งมันก็จะต้องมีในส่วนของการ training เพื่อให้ระบบมันรู้จักภาพต่างๆ แต่เราจะข้ามไปเลยนะครับ เดียวเราจะใช้แค่ค้นหาใบหน้าซึ่งเขาทำเตรียมมาให้เราอยู่แล้ว ส่วนตัว Node.js นี้ไม่รู้จะอธิบายยังไงดี มันเป็นเหมือนสภาพแวดล้อมที่ใช้เขียนโปรแกรมด้วย JavaScript และใช้รันในฝั่งของ Server นะครับ ที่ผมเลือกใช้ตัวนี้เพราะเห็นตัวอย่างการใช้งาน OpenCV ของมันแล้วดูง่ายดี ไม่มีเหตุผลอื่น

ทั้งหมดนี้ทำภายในไดเร็กทอรี /root และใช้สิทธิของ root นะครับ มาเริ่มที่อย่างแรกที่ต้องทำกันก่อน เริ่มจากการติดตั้ง EPEL (Extra Packages for Enterprise Linux) กันก่อนครับ

1 2 3 4 5 6 7 ## RHEL/CentOS 6 ## สำหรับเครื่อง 32-Bit # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm   ## RHEL/CentOS 6 ## สำหรับเครื่อง 64-Bit # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm

จากนั้นทำการติดตั้ง Development Tools

1 2 # yum update # yum groupinstall 'Development Tools'

ติดตั้ง cmake28

1 # yum install cmake28

ติดตั้ง Python version 2.6

1 # yum install python26

ทำการสร้างลิงค์ให้คำสั่ง python เรียกไปที่ python26 (เวลาเราเรียกใช้คำสั่ง python จะได้ไปใช้ version 2.6)

1 2 # mkdir -p $HOME/bin # ln -s /usr/bin/python26 $HOME/bin/python

ทดสอบเรียกคำสั่ง python -V เพื่อตรวจสอบว่าได้ version 2.6 แล้วหรือยัง

1 # python -V

ทำการ export path ที่จำเป็นต้องใช้ไปไว้ในไฟล์ .bashrc (ไฟล์นี้จะถูกเรียกทุกครั้งเวลาที่เราทำการ login เข้าระบบ)

1 2 3 4 5 # echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc # echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc # echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig' >> ~/.bashrc   # source ~/.bashrc

ต่อไปขั้นตอนสำคัญ เริ่มทำการติดตั้ง OpenCV กันต่อเลยครับ

1 2 3 4 5 6 # wget -O opencv-2.4.8.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.8/opencv-2.4.8.zip/download # unzip opencv-2.4.8.zip # cd opencv-2.4.8 # cmake28 -D WITH_FFMPEG=OFF . # make # make install

จากนั้นทำการติดตั้ง Node.js เพื่อเอาไว้เป็นตัวเรียก OpenCV และเราจะมาหัดเขียน Node.js สักหนึ่งโปรแกรมกันด้วย

1 2 3 4 5 6 7 8 # cd .. # wget -O node-v0.10.28.tar.gz http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz # tar -xvzf node-v0.10.28.tar.gz   # cd node-v0.10.28 # ./configure # make # make install

ทดสอบดูหน่อยว่าเรียก Node.js ได้ไหม

1 # node --version

ขั้นตอนเกือบสุดท้าย ทำการติดตั้ง node-opencv

1 2 # cd .. # npm install opencv

เมื่อติดตั้งเรียบร้อยเรามาลองเขียนโปรแกรมกับ Node.js สักโปรแกรมกันก่อนนะครับ ว่ามันสามารถทำงานได้ไหม ซึ่งผมเองก็เขียนไม่ค่อยเป็น แต่เดี๋ยวเราลอกโค้ดตัวอย่างจากเว็บเขาเลยหละกัน เว็บไซต์ของ Node.js อยู่นี้นะครับ http://www.nodejs.org/

1 # nano server_node.js

พิมพ์โค้ดต่อไปนี้ลงไป

1 2 3 4 5 6 7 // Run : node server_node.js var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337); console.log('Server running at port 1337');

จากนั้นสั่งรันด้วยคำสั่ง

1 # node server_node.js

ลองเปิดเว็บบราวเซอร์และเรียกไปที่ url http://192.168.8.104:1337 (อย่าลืมเปลี่ยนเป็น IP ของคุณเองด้วยนะครับ

จากนั้นลองทดสอบการใช้ OpenCV ในการตรวจสอบใบหน้าของคนกันต่อเลยครับ ซึ่งเราก็จะไม่ได้เขียนเองทั้งหมดหรอกนะครับ เขามีตัวอย่างมาให้อยู่แล้ว ลองเปิดดูตัวอย่างและแก้นิดๆ หน่อยๆ ก็เอาไปใช้งานต่อได้แล้วครับ โดยตัวอย่างของ node-opencv จะอยู่ที่ /root/node_modules/opencv/examples/ โดยในตัวอย่างเราจะลองใช้ face_detection.js ในการค้นหาใบหน้า โดยให้ทำการเปิดไฟล์ face_detection.js ขึ้นมาแก้ไข โดยให้แก้ไขที่ ./haarcascade_frontalface_alt.xml ให้แก้เป็น ../data/haarcascade_frontalface_alt.xml จากนั้น save และลองสั่งรันโปรแกรมดูครับ

1 2 # cd /root/node_modules/opencv/examples/ # node face_detection.js

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

จะได้ภาพออกมาประมาณนี้ครับ

# Update 2014-06-17
ทำการ export path ของ nodejs module เพื่อให้สามารถเรียกใช้งานได้จากทุกที่

1 2 3 # echo 'export NODE_PATH=/root/node_modules' >> ~/.bashrc   # source ~/.bashrc

อ่านเพิ่มเติม
http://opencv.org/
http://nodejs.org/
http://peterbraden.github.io/node-opencv/

Udomsak: Recovery Window 7 and make Dual boot Linux Ubuntu menu from Window 7

1 July, 2014 - 12:45
Since i have problem with Ubuntu dual-boot with Window 7 Home Ultimate. The problem are UEFI partition  on my Sony Viao ST series.

My process flow

  1. Install Window 7 ( From factor ) 
  2. Install Ubuntu 13.10   
Problem

  1. Lose window 7 Boot. 
  2. UEFI partition can't  install correctly and force me use Ubuntu MBR install only instead. ( which one choose. ) 

For a while i must use Window environment for working my job.  I must recover my lose Window7  and make dual-boot menu from Window 7 side. 
Tool usage
  1. EasyBCD Boot CD recovery to recover Window 7  Boot menu  EasyRE Live/USB cd recovery
  2. Visual BCD Editor  http://www.boyans.net/
  3. Ext2fsd http://www.ext2fsd.com/  use for  access Linux partion from Window 7 side.
The way to make Dual-boot menu from Window 7 they use command-line tool named bcdeditor and so complicate process to make them work.  i use  Visual BCD instead. 
Step



  • Download tool  


  • Add enty to boot menu 
  • copy 'boot.img' from  Linux partiton that have grub install  and copy to c:\Boot\
  • Edit text entry
  • Reboot
  • Enjoy your work :) 


  • Open Visual BCD Editor and  Add menu entry at Figure 1.



    Mount Root Partition to get 'boot.img' file from /boot/grub/i386-pc


    Access Linux partition copy 'boot.img' to c:\boot\




       

    My site Article and Topic

    Thep: Thanks

    10 June, 2014 - 14:45

    ขอขอบคุณย้อนหลัง สำหรับผู้สนับสนุนงานพัฒนาซอฟต์แวร์เสรีของผมในช่วงเดือนกุมภาพันธ์-เมษายนที่ผ่านมา คือ:

    ผมอาจจะสวัสดีปีใหม่ไทยช้าไปนิด ก็ขอให้ทุกท่านที่เอ่ยมาจงร่มเย็นเป็นสุขทุกท่านครับ

    หากท่านอ่าน blog ขอบคุณของผมมาหลายครั้งแล้ว และสงสัยว่าจะสนับสนุนงานพัฒนาของผมได้อย่างไร ก็เชิญได้ที่หน้า การสนับสนุนงานพัฒนา ครับ

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

    อย่างไรก็ดี งานบางงานที่ไม่ได้เขียนเป็น blog ต่างหากเนื่องจากเป็นงานรูทีนอยู่แล้ว หรือเป็นงานยิบย่อย ก็ขอเล่าเพิ่มเติมจากที่ blog ไปแล้วบ้าง เช่น:

    • งานแปล Xfce ได้แปลขึ้นไปจนถึง 86% แล้ว ก่อนที่จะเกิดการจัดโครงสร้างใหม่ใน Transifex ทำให้สถิติเริ่มเพี้ยน โดยในหน้า dashboard (ภายใต้โครงสร้างใหม่ ปรากฏว่าต้องเป็นสมาชิก transifex จึงจะดูได้) รายงานอัตราการแปลของภาษาไทยที่ 69.3% แต่จำนวนข้อความที่ยังไม่แปลเหลือเพียง 1,571 ข้อความ ซึ่งน้อยกว่าภาษาฟินแลนด์ที่อัตราการแปลสูงกว่าภาษาไทย คืออยู่ที่ 70.4% แต่เหลือข้อความที่ยังไม่แปลถึง 3,653 ข้อความ จึงทำให้เกิดความสับสนในค่าสถิติที่รายงาน
    • เสนอแพตช์ใน Xfce #10311 ที่ได้รายงานไว้เมื่อปีกลาย เกี่ยวกับการบอกเวลาเป็นคำพูดโดยประมาณ โดยขอปรับปรุงให้แปลเวลาเป็นไทยได้ถูกต้องยิ่งขึ้น เช่น ทำให้รายงานเวลาแบบนี้ได้ในพาเนล:
    • ปรับคำแปล dpkg และ apt สำหรับ Debian (มีผลใน dpkg 1.17.7 และ apt 1.0.2 ตามลำดับ)
    • ปรับคำแปล ISO 3166-2 ในแพกเกจ iso-codes เล็กน้อย หลังจากได้แปลชื่อเมืองใน Orage ของ Xfce (มีผลใน iso-codes 3.53) พร้อมกันนี้ก็ได้ปรับคำแปลใน libgweather locations ของ GNOME ไปพร้อมกันด้วย

    แผนงานต่อไป เรื่องหลักก็จะเป็นการผลักดันฟอนต์สารบรรณเข้า Debian ตามแผนที่วางไว้ครับ

    Thep: Sarabun Plan

    1 June, 2014 - 20:45

    หลังจากที่ได้ ตั้งใจไว้ ว่าจะผลักดันฟอนต์สารบรรณเข้า Debian ให้ทัน Jessie แต่ก็ติดภารกิจอื่นจนตอนนี้เพิ่งมีเวลามานั่งคิดต่อ

    ความต้องการ

    พูดถึง requirement เกี่ยวกับฟอนต์สารบรรณ มีเงื่อนไขสองเรื่องหลักที่ต้องพิจารณา คือ

    1. License จะต้องเสรี ไม่เป็น postcardware license
    2. การใช้งานกับ LaTeX ซึ่งมีผู้ใช้สอบถามเข้ามาหลายครั้ง หลังจากที่หน่วยงานต่าง ๆ ถูกบังคับให้ต้องใช้ฟอนต์สารบรรณในหนังสือราชการต่างๆ ผู้ที่ใช้ LaTeX เตรียมเอกสารจึงต้องสามารถใช้ฟอนต์นี้ได้ ซึ่งแน่นอนว่าการดัดแปลงฟอนต์จำเป็นต้องผ่านเงื่อนไขความเสรีของ license มาก่อน
    ทรัพยากรที่มีอยู่

    ฟอนต์สารบรรณมีการออกรุ่นอย่างเป็นทางการจากต้นน้ำสองรุ่น และแตกแขนงไปอีกอย่างน้อยสองรุ่น กล่าวคือ:

    • TH Sarabun PSK ซึ่งอยู่ในชุดเริ่มแรกของ ฟอนต์มาตรฐานราชการไทย ที่เผยแพร่โดยกรมทรัพย์สินทางปัญญาร่วมกับ SIPA ซึ่งเป็น postcardware
    • TH Sarabun New ซึ่งปรับปรุงใหม่โดย SIPA ร่วมกับคุณศุภกิจ เฉลิมลาภ ผู้พัฒนา TH Sarabun PSK โดยออกรุ่นภายใต้สัญญาอนุญาต GPL 2 + Font Exception เผยแพร่อยู่ที่ f0nt.com
    • SP Laksaman ซึ่งผมดัดแปลงจาก TH Sarabun PSK ในชุด ThaiFonts-Siampradesh ภายใต้การว่าจ้างของ SIPA ผ่านบริษัทเมตามีเดีย เทคโนโลยี ซึ่งแน่นอนว่ายังใช้สัญญาอนุญาตแบบ postcardware ตาม TH Sarabun PSK การดัดแปลงที่สำคัญได้แก่การขยายขนาดตัวอักษรทั้งหมด โดยใช้อัตราส่วนที่ทำให้ตัวโรมันมีขนาดเท่า ๆ กับฟอนต์ตะวันตกที่ point size เดียวกัน และการแปลงเส้นโค้งจาก quadratic เป็น cubic พร้อมทำความสะอาดเพื่อเตรียมพร้อมสำหรับการแก้ไขดัดแปลงต่อไป
    • Sarabun ภายใต้โครงการ googlefontdirectory ซึ่งได้รับอนุญาตจากเจ้าของลิขสิทธิ์ให้เผยแพร่ภายใต้สัญญาอนุญาต OFL

    อย่างไรก็ดี มีอีกปัจจัยหนึ่งที่ต้องพิจารณาประกอบ คือ การอนุญาตให้ relicense ฟอนต์ชุดมาตรฐานราชการไทย ซึ่งยังคงค้างอยู่ที่การรอการเผยแพร่ฟอนต์ภายใต้ license ใหม่จากต้นน้ำอย่างเป็นทางการ ซึ่งหากดำเนินการเสร็จ เราจะได้ฟอนต์ที่เสรีอย่างแท้จริงถึง 10 หรือ 13 ฟอนต์ (ขึ้นอยู่กับ 3 ฟอนต์ที่ผู้สร้างยังประกาศถือครองลิขสิทธิ์อยู่ในตัวฟอนต์ ไม่ได้ยกให้กรมทรัพย์สินทางปัญญาและ SIPA) ซึ่งเรื่องได้ค้างอยู่ตรงนี้มาเกือบ 3 ปีแล้ว

    ทางเลือกที่เป็นไปได้

    จากความต้องการและสิ่งที่มีอยู่ พอจะคิดทางเลือกออกมาได้ดังนี้:

    1. ใช้ SP Laksaman เป็นฐาน ซึ่งต้องผ่านขั้นตอนทางกฎหมายเสียก่อน พร้อม ๆ กับอีก 9 ฟอนต์ที่เหลือ ข้อดีคือฟอนต์พร้อมแก้ไขแล้ว และจะได้ฟอนต์โพสต์สคริปต์ที่ทำความสะอาดแล้วด้วย เหมาะกับการดัดแปลงใช้กับ LaTeX อย่างเต็มที่ แต่ข้อเสียคือยังขาดความชัดเจนในข้อกฎหมาย ซึ่งถ้าชัดเจนแล้วก็อาจจะได้ฟอนต์ Siampradesh ทั้ง 10 ฟอนต์มาพร้อมกันเลย
    2. ใช้ TH Sarabun New เป็นฐาน ไม่มีปัญหาเรื่องข้อกฎหมาย โดยอาจมีการดัดแปลงเพื่อใช้กับ LaTeX หรือมิฉะนั้นก็พยายามใช้ฟอนต์ TrueType กับ LaTeX โดยตรง ทางเลือกนี้มีข้อดีคือฟอนต์จะเหมือนกับสารบรรณที่ใช้โดยราชการไทยทุกประการ ข้อเสียคืออาจไม่คล่องตัวนักในการแก้ไขดัดแปลงเพราะผูกติดกับชื่อฟอนต์อยู่
    3. ใช้ Google Sarabun เป็นฐาน ไม่มีปัญหาเรื่องข้อกฎหมายเช่นกัน ข้อดีข้อเสียคล้ายกับการใช้ TH Sarabun New สิ่งที่แตกต่างอาจเป็นผู้ดูแลต้นน้ำเท่านั้น และทางเลือกนี้ดูจะมีช่องทางติดตั้งโดยตรงใน Debian อยู่แล้ว (ผ่านแพกเกจ typecacher แต่ขณะนี้ยังไม่มี Sarabun ในรายชื่อ) แต่จะขาดการรองรับการใช้งานใน LaTeX (pdfTeX) เท่านั้น
    4. ใช้ Fonts-TLWG เป็นฐาน เป็นอีกทางเลือกหนึ่งที่เป็นไปได้ เนื่องจาก Fonts-TLWG จะรวบรวมฟอนต์เสรีมาปรับต่ออยู่แล้ว ทำไมจะเพิ่มฟอนต์อีกสักตัวไม่ได้? แนวทางนี้อาจหยิบฟอนต์สารบรรณหรือลักษมัณมาปรับตามมาตรฐานฟอนต์ TLWG โดยใช้ฟีเจอร์ OpenType (GPOS, GSUB) เต็มรูปแบบ ตัด hack ทิ้ง พร้อมปรับใช้กับ LaTeX (pdfTeX) ด้วยโครงสร้างที่พัฒนาใน TLWG มาอยู่แล้ว

    หลังจากพิจารณาทางเลือกต่าง ๆ ทางเลือกที่เป็นอุดมคติสำหรับผมคือการพัฒนาต่อจากฟอนต์ชุด Siampradesh (ทางเลือกที่ 1) เพราะได้เตรียมการไว้พร้อมหมดแล้วทั้ง 10 ฟอนต์ แต่ความไม่ชัดเจนในข้อกฎหมายทำให้ยังไม่กล้าลงมือทำ หนังสือราชการที่เวียนเป็นการภายในของ SIPA และกรมทรัพย์สินทางปัญญาจะเพียงพอหรือไม่ที่ผมจะ relicense ฟอนต์ Siampradesh เอง? ทางเลือกที่ผู้ใช้ส่วนใหญ่อยากได้ที่สุดน่าจะเป็น 2 หรือ 3 คือผลักดันเข้าไปตรง ๆ โดยไม่ต้องไปแตะต้องอะไรมันเลย แต่การปรับใช้กับ LaTeX จะเป็นเรื่องไม่สะดวกเอามาก ๆ รวมถึงการปรับปรุงทางเทคนิคให้เข้ากับข้อกำหนดต่าง ๆ ก็ขึ้นอยู่กับผู้ดูแลต้นน้ำเป็นหลัก ซึ่งพิจารณาดูแล้ว แม้แต่ Google เองซึ่งมีผู้เชี่ยวชาญ typography มาดูแล ก็ยังไม่ได้ทำอะไรกับรายละเอียดทางเทคนิคในตัวฟอนต์เลย

    ดังนั้น ทางเลือกที่ 4 (ใช้ Fonts-TLWG เป็นฐาน) จึงเป็นทางเลือกที่ผมคิดว่าดีที่สุด และเมื่อได้ลองหยั่งเสียงสมาชิก KKLUG ในการประชุม โสเหล่ 57.04 ที่ผ่านมา ก็ดูจะเห็นตรงกัน จึงคิดว่าจะเริ่มดำเนินการตามนี้เร็ว ๆ นี้ครับ

    LookHin: 8 ขั้นตอนง่ายๆ ที่ช่วยให้ Apache Web Server ปลอดภัยมากขึ้น

    1 June, 2014 - 20:45

    วันนี้เรามาทำให้ Apache Web Server ของเราปลอดภัยมากขึ้นด้วยขั้นตอนง่ายๆ 8 ขั้นตอนกันครับ ถึงแม้จะไม่ได้ปลอดภัยขึ้นถึงระดับที่ไม่สามารถแฮกได้ แต่อย่างน้อยก็ทำให้ผู้ที่จะโจมตีต้องทำการบ้านมากขึ้นนิดหนึ่ง โดยเราจะเน้นไปที่การปิด Error ต่างๆ ของระบบ และแถมท้ายด้วยการติดตั้ง ModSecurity ซึ่งเป็น Web Application Firewall (WAF) ที่จะช่วยป้องกันเว็บไซต์ของเราให้ปลอดภัยจากการโจมตีในแบบต่างๆ ได้มากขึ้น

    1. ยกเลิกการแสดงหน้า welcome page

    ปกติแล้วเวลาที่เราติดตั้ง apache  ระบบจะสร้างหน้า welcome page ขึ้นมาให้เรา ซึ่งจะบอกทุกอย่างเกียวกับระบบ แต่ปกติหน้านี้จะไม่แสดงถ้าเราทำหน้า index ขึ้นมาแล้ว แต่ว่าลบมันทิ้งไปเลยก็ดีกว่าครับ ขั้นตอนก็ง่ายๆ เข้าไปลบไฟล์ /etc/httpd/conf.d/welcome.conf ได้เลยครับ

    1 # rm /etc/httpd/conf.d/welcome.conf

    ก่อนลบไฟล์ /etc/httpd/conf.d/welcome.conf

    หลังลบไฟล์ /etc/httpd/conf.d/welcome.conf

    2. ซ่อนการแสดงเวอร์ชั่นของ Apache และ OS จากหน้า Error
    ทุกครั้งที่มีการเรียกไฟล์ที่ไม่มีอยู่ใน website ของเรา Apache จะแสดงข้อมูลขึ้นมาว่าเราใช้ Apache และ OS version อะไร ซึ่งจะเป็นข้อมูลที่ดี ที่จะให้แฮกเกอร์นำข้อมูลเหล่านั้นไปหาช่องโหว่มาโจมตี โดยเราสามารถปิดการแสดงข้อมูลเหล่านี้ได้โดยการแก้ไขไฟล์ /etc/httpd/conf/httpd.conf

    เปิดไฟล์ขึ้นมาแก้ไข จะใช้ vi หรือ nano แล้วแต่ถนัด

    1 # nano /etc/httpd/conf/httpd.conf

    จากนั้นแก้ค่า ServerSignature และ ServerTokens ตามนี้ครับ

    1 2 ServerSignature Off ServerTokens Prod

    ก่อนแก้ไขจะเห็นว่าถ้ามี Error ระบบจะแสดงเวอร์ชั่นของ Apache และ OS ขึ้นมา

    หลังจากแก้ไขแล้วจะแสดงแค่ Error อย่างเดียว

    3. ยกเลิกการแสดงไฟล์ในไดเร็กทอรีที่ไม่มีอินเด็กซ์ไฟล์
    ถ้าหากว่าเราเปิดเข้าไปในไดเร็กทอรี ที่ยังไม่มีอินเด็กซ์ไฟล์ ระบบจะแสดงไฟล์ทั้งหมดขึ้นมาให้ ซึ่งจะไม่ปลอดภัยเลยหากว่าแฮกเกอร์สามารถเห็นไฟล์ในไดเร็กทอรีต่างๆ ของเราได้หมด การเปิดออฟชั่นนี้สามารถทำได้ง่ายๆ โดยเพิ่ม Options -Indexes เข้าไปในไฟล์ /etc/httpd/conf/httpd.conf

    เปิดไฟล์ httpd.conf ขึ้นมาแก้ไข

    1 # nano /etc/httpd/conf/httpd.conf

    เพิ่ม Options -Indexes เข้าไปในส่วนของ (ปกติจะมีอยู่แล้ว แต่ว่ายังไม่ได้ใส่เป็น -Indexes)

    1 2 3 <Directory /var/www/html> Options -Indexes </Directory>

    ก่อนการแก้ไข จะเห็นว่าระบบแสดงชื่อไฟล์ขึ้นมาให้

    หลังการแก้ไข เราก็จะไม่เห็นไฟล์ต่างๆแล้ว

    4. ปิดโมดูลที่ไม่จำเป็น
    ค่าแรกเริ่มของ Apache จะเปิดโมดูลต่างๆ ขึ้นมาเกือบทั้งหมด แต่บางอย่างเราก็ไม่ได้ใช้ เปิดไว้ก็อาจจะเป็นช่องโหว่ให้โดนแฮกเกอร์โจมตี ทางทีดีปิดมันไว้ดีกว่า ถ้าอันไหนจะใช้เราค่อยมาเปิดทีหลัง โมดูลต่างๆ พวกนี้เราสามารถเข้าไปเปิดและเปิดได้ที่ไฟล์ /etc/httpd/conf/httpd.conf โดยค้นหาคำว่า LoadModule และทำการใส่เครื่องหมาย # หน้าโมดูลที่ไม่ต้องการ อย่างเช่นโมดูล mod_info, mod_userdir, mod_autoindex

    เปิดไฟล์ httpd.conf ขึ้นมาเปิดหรือปิดโมดูลที่ต้องการ

    1 # nano /etc/httpd/conf/httpd.conf

    5. ปิดการทำงานของ Server Side Includes และ CGI Execution
    ทุกวันนี้คงไม่มีใครใช้ SSI และ CGI ในการทำเว็บกันแล้ว การปิดการทำงานก็ง่ายๆ แค่เพิ่ม -Includes และ -ExecCGI ใน httpd.conf ในส่วนของ Directory

    เปิดไฟล์ httpd.conf

    1 # nano /etc/httpd/conf/httpd.conf

    เพิ่ม -Includes -ExecCGI เข้าไปในส่วนของ Directory

    1 2 3 <Directory /var/www/html> Options -Indexes -Includes -ExecCGI </Directory>

    6. ทำการเก็บ Log ของทุก VirtualHost ที่อยู่ในเซิฟเวอร์
    ทำได้โดยการเพิ่ม ErrorLog และ CustomLog เข้าไปใน VirtualHost

    1 2 3 4 5 6 7 <VirtualHost *:80> ServerAdmin webmaster@www.example.com DocumentRoot /var/www/www.example.com ServerName www.example.com ErrorLog /var/log/httpd/www.example.com-error_log CustomLog /var/log/httpd/www.example.com-access_log common </VirtualHost>

    7. ติดตั้ง mod_security
    mod_security เป็น Web Application Firewall (WAF) ที่จะช่วยเพิ่มความปลอดภัยให้เซิฟเวอร์เรามากขึ้น โดยสามารถป้องกันการทำ SQL Injection ได้ด้วย

    อย่างแรก ทำการติดตั้ง EPEL (Extra Packages for Enterprise Linux) กันก่อน

    1 2 3 4 5 6 7 ## RHEL/CentOS 6 ## สำหรับเครื่อง 32-Bit # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm   ## RHEL/CentOS 6 ## สำหรับเครื่อง 64-Bit # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm

    จากนั้นติดตั้ง mod_security เป็นอันเรียบร้อย

    1 # yum install mod_security

    8. ทำการอัพเกรด Apache อย่างสม่ำเสมอ

    1 # yum update httpd

    Udomsak: Log Android dev to elasticsearch

    1 June, 2014 - 20:45
    Simple Log server สำหรับ  Android  Development. 


    หลังจากพบปัญหา ระหว่างการพัฒนา แอพพลิเคชั่นโมบาย  แล้วต้องมอนิเตอร์ดู  log-stream  ซ่งสามารถทำได้ด้วยคำสั่ง

    adb logcat


    แต่ปัญหาก็คือ ไม่สามารถทำการสืบค้นย้อนกลับ ตามที่ต้องการด้วย จะโหลดเอา  graylog2  มาใช้ก็จะเสียเวลาไปหน่อย เลยเลือกเอา  elasticsearch + logstash  + kibana3  เอามาทำ ระบบ log server แบบ ง่ายๆ ดีกว่า ปล. log.io ก็ใช้ได้ครับ แต่ทำให้  เครื่อง hang ( browser freeze )



    ความต้องการเริ่มต้น  ( prerequisite )

    -  Java  แต่เนื่องจากผมได้ทำการ setup ตอนทำงาน Android  จะขอข้ามตรงนี้ไป และ อนุมาน ว่าค่าเริ่มต้นในส่วนของ Java ได้ทำการ Set ไว้แล้ว




    1. เริ่มจาก ดาวน์โหลด  elasticsearch    
    2. ต่อมา ดาวน์โหลด logstash  


    เริ่มจาก ทำการรัน  logstash เอาไว้ก่อนเลย  ( Start  logstash verbose output and listen on tcp port '9999' )

    udomsak$ ./logstash --verbose -e 'input { tcp { port=>9999 } } output { elasticsearch {} }'





    จากนั้น ออนไลน์ elasticsearch ( assume you in elasticsearch path )  

    udomsak$  ./elasticsearch



    ทำการ pipe output ของ  adb logcat  ส่งไปยัง  Service

    adb logcat | nc  127.0.0.1 9999 -


    เปิด kibana3 โดยไปที่ localhost port 9292

    udomsak$  ./logstash-web 





    My site Article and Topic

    Prach: My Contribution to Debian, 2014-2

    5 May, 2014 - 12:45
    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)
    - (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">Sponsor by David Prévot
      + php-mail (1.2.0-6)
      + php-http-webdav-server ( (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">1.0.0RC6-2)
      + php-xml-dtd ( (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">0.5.2+dfsg1
    (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">  + (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">php-timer ( (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">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)


    MrChoke: Cycling For Kids by กฤษณ์ ปีที่6

    1 May, 2014 - 02:46
    วันเสาร์ – อาทิตย์ นี้มีโอกาสเข้าร่วมปั่นการกุศลในรายการ Cycling For Kids by กฤษณ์  ปีที่6 ตอน : มาราธอน 24 ชม. ปั่นก่อน นอนที่หลัง ที่จัดขึ้นใน ธรรมศาสตร์ รังสิต เริ่มตั้งแต่ตอนเช้าของวันเสาร์ที่ 15 มี.ค. นัดรวมทีมหน้าเสาธง สวทช. ซึ่งการปั่นครั้งนี้เป็นการรวมทีมกันในนาม FFCC หรือ Fast Foward Cycling Club สวทช. มีสมาชิก 5 คน คือ พี่โก้ พี่ปืน ผม ธง และ วิน เจอกันหน้าเสาธง สามคน ก็ไปลงทะเบียนกันก่อนประมาณ 7 โมงเช้า แล้วพี่โก้ กับ วินก็ตามมาสมทบ ค่าสมัครคนละ 300 บาทเป็นการสมทบทุนบริจาคให้โรงเรียน สำหรับผู้สมัครผ่านเว็บมาก่อนก็ได้จะเสื้อ [...]

    Udomsak: ฺBangkok Coffee shop suite for working space free wi-fi - Electricity plug

    30 April, 2014 - 12:45
    ร้านกาแฟ ที่มีปลั๊กไฟ และ บริการฟรี ไวไฟ


    https://mapsengine.google.com/map/edit?mid=z7uZjMMQ0VKc.kFBrL2o1MUpY

    Link นี้จะ Update เกือบตลอดเวลานะครับ เนื่องจากเป็นที่ ที่ผมจะไปอยุ่ เป็นประจำ สลับกันไป

    My site Article and Topic

    Udomsak: ตารางรายการแข่ง รถมอเตอร์ไซด์ ปี 2014

    30 April, 2014 - 12:45
    Schedule Moto-GP 2014



    DownLoad iCal ( Calendar Link )  ( MotoGP, every class , World SuperBike. 
    Download CalendarMy site Article and Topic

    Thep: Fonts-TLWG 0.6.0

    30 April, 2014 - 12:45

    ออกไปแล้วเมื่อวาน สำหรับ Fonts-TLWG 0.6.0 สำหรับรุ่นนี้ การเปลี่ยนแปลงที่สำคัญที่ทำให้ถึงกับต้องเพิ่มเลขรุ่นที่เลขกลาง ก็คือการรองรับภาษาชาติพันธุ์อย่างมีการเตรียมการ

    สำหรับข้อมูลเบื้องต้นเกี่ยวกับภาษาชาติพันธุ์ กรุณาอ่าน blog เก่า และ บทความของคุณอนงค์ เพิ่มเติม

    ที่ว่า รองรับอย่างมีการเตรียมการ ก็เพราะในรุ่นก่อนก็สามารถรองรับได้ในระดับหนึ่ง หลังจากที่ Pango 1.31.0 (GNOME 3.6) ขึ้นไปได้โละ engine ภาษาไทยที่ใช้ วทท. 2.0 (มอก. 1566-2541) ทิ้ง และย้ายไปใช้ HarfBuzz จัดการแทน ก็ทำให้กระบวนการวาดภาษาไทยย้ายหนีจาก วทท. 2.0 มาเป็น normalization ตามข้อกำหนดยูนิโค้ด โดยปริยาย ซึ่งข้อกำหนดนี้จะผ่อนคลายกว่า วทท. 2.0 ที่ผูกติดกับภาษาไทยเพียงภาษาเดียว เพราะยูนิโค้ดได้เตรียมการเผื่อการใช้อักษรไทยเขียนภาษาชาติพันธุ์ต่าง ๆ เอาไว้ด้วย ทำให้ฟอนต์ชุด TLWG รุ่นเก่าก็สามารถใช้เขียนภาษาชาติพันธุ์ได้ทันที แต่จะเป็นการวางอักขระซ้อนกันแบบไม่มีการจัดตำแหน่ง บางกรณีก็วางแล้วไม่ซ้อนกัน บางกรณีก็ซ้อนทับกัน แต่ในฟอนต์รุ่น 0.6.0 นี้ มีการออกแบบเพื่อรองรับกรณีต่าง ๆ ให้จัดวางอักขระได้อย่างสวยงาม

    ข้อกำหนด วทท. 2.0 นั้น มีลำดับการซ้อนสระและวรรณยุกต์ตายตัวตามอักขรวิธีภาษาไทย แต่เมื่ออักษรไทยถูกใช้เขียนภาษาชาติพันธุ์ จะมีการดัดแปลงอักขระบางตัวเพิ่มเติม เช่น ใช้ไม้ไต่คู้กำกับเหนือสระบน ใช้วรรณยุกต์เหนือไม้ไต่คู้ ใช้ทัณฑฆาตหรือยามักการเป็นวรรณยุกต์เพิ่มเติม การประพินทุใต้สระ การวางสระบนเหนือสระอา หรือกระทั่งดัดแปลงไม้ตรีใช้เป็นสระพิเศษ!

    ภาษาชาติพันธุ์ที่ใช้ในรูป (ตั้งแต่บรรทัดที่สองเป็นต้นไป ส่วนบรรทัดแรกใช้ทดสอบฟอนต์ตามข้อกำหนดยูนิโค้ดเท่านั้น) :-

    • ภาษากูย/ส่วย (สุรินทร์) [1]:
      • ปะเฺติ็ลฺ = ขันตักน้ำ
      • โฺญฺ็จฺ = หยุดกึกเพราะกลัวหรือตกใจ
    • ภาษาเขมรถิ่นไทย (สุรินทร์):
      • ปั็วฮฺ
      • ทฺ็อง
      • เปฺิ็ว
      • มูํย
    • ภาษาบรู/ข่า:
      • แต็่ง = to spread
      • เจฺํอ = already
      • เปรฺิ่ห์ = dirty
      • โจ๊่ = bunch of bamboo
      • เปฺี่ย = to mix
    • ภาษาโส้:
      • โฺทร = โส้ (ชื่อภาษา)
    • ภาษาช์อง (จันทบุรี):
      • ม็่อง
    • ภาษาญัฮกุร [อ่านว่า ญะกุ้น] (ชัยภูมิ):
      • เติ็ง
    • ภาษาละว้า:
      • อาื = chase
      • ยาึ = mine
    • ภาษามลายูปาตานี [2]:
      • จือรฺุ
      • การฺู

    การใช้งานเหล่านี้ นอกจากทำให้ต้องยกเครื่องจาก วทท. 2.0 เป็นยูนิโค้ดแล้ว ยังมีผลต่อการออกแบบฟอนต์ที่ต้องรองรับกรณีพิเศษเพิ่มเติมด้วย

    สำหรับฟอนต์ TrueType/OpenType สิ่งที่ทำเพิ่มก็คือ:

    • เพิ่ม glyph สำหรับอักขระยกสูงเพิ่มเติม นอกจากชุดวรรณยุกต์ปกติในฟอนต์ทั่วไปแล้ว ก็ต้องมีไม้ไต่คู้ นิคหิต และยามักการยกสูงเพิ่มด้วย โดย glyph ชุดนี้จะมีขนาดย่อส่วนลงเล็กน้อย แต่ไม่ใช่ scale down ตามปติ เพราะจะทำให้ได้เส้นที่บางลง แต่จะเป็นการวาดด้วยเส้นหนาเท่าเดิมให้ตัวเล็กลง
    • เพิ่มกฎ GSUB ในการแปลงอักขระชุดดังกล่าวให้เป็นตัวยกสูง โดยต้องครอบคลุมทุก combination ไม่ใช่แค่ที่มีในภาษาไทย
    • เพิ่ม anchor ให้กับอักขระเหนือบรรทัด ให้สามารถซ้อนกันได้ครบทุกคู่ ไม่ใช่แค่ที่มีในภาษาไทย
    • เพิ่ม anchor ชนิด BelowMark อีกชนิดหนึ่งในตาราง 'mkmk' (mark to mark) เพื่อรองรับการซ้อนสระล่างใต้พินทุ พร้อมทั้งเพิ่ม anchor ให้กับ glyph แต่ละ glyph ให้ครบ

    นอกจากนี้ ยังได้ ส่งแพตช์ สำหรับแก้ให้ HarfBuzz normalize อักขระใต้บรรทัดให้พินทุมาก่อนสระล่างอย่างถูกต้องด้วย ซึ่งแพตช์ยังอยู่ระหว่างอภิปราย

    แต่เนื่องจากฟอนต์ชุด TLWG ยังมีการใช้งานใน LaTeX (pdfTeX engine) ด้วย ซึ่งใน LaTeX ยังคงใช้ PUA glyph แบบเก่า (ที่เรียกกันว่า ตัวหลบ) อยู่ ไม่สามารถใช้ประโยชน์จากการปรับข้อมูล OpenType ข้างต้นได้ จึงต้องปรับขยายกฎ LIGKERN ให้ครอบคลุมกรณีของภาษาชาติพันธุ์เพิ่มเติม กล่าวคือ ต้องเพิ่มกฎต่อไปนี้:

    • ใช้วรรณยุกต์ยกสูงถ้าตามหลังไม้ไต่คู้ วรรณยุกต์ หรือทัณฑฆาต (กฎ LIGKERN ใน LaTeX จะใช้วรรณยุกต์ตัวลดต่ำโดยปริยาย แล้วค่อยใช้กฎ LIGKERN ยกให้สูงขึ้น ซึ่งจะกลับกันกับฟอนต์บนเดสก์ท็อป)
    • ใช้วรรณยุกต์ยกสูงหลบซ้ายถ้าตามหลังไม้ไต่คู้ วรรณยุกต์ หรือทัณฑฆาตที่หลบซ้าย
    • ใช้สระบนที่หลบซ้ายถ้าตามหลังพินทุที่ตามหลังพยัญชนะหางยาว (ป ฝ ฟ ฬ)
    • ใช้สระอุ อู ลดต่ำเมื่อตามหลังพินทุ
    • generalize กฎอื่น ๆ ที่บังเอิญเจาะจงเฉพาะกรณีที่ปรากฏในภาษาไทยไว้ เช่น ใช้นิคหิตหลบซ้ายหลังสระอูและพินทุที่ตามหลังพยัญชนะหางยาว, ใช้สระบนหลบซ้ายถ้าตามหลังสระอุ อู ที่ตามหลังพยัญชนะหางยาว)

    นั่นคือสิ่งที่ทำได้ในตอนนี้สำหรับ LaTeX ยังมีกรณีที่ขาดเหลืออยู่ซึ่งยังไม่สามารถทำได้ เนื่องจากตาราง LTH encoding เต็มแล้ว ไม่มีช่องเหลือให้เพิ่ม PUA glyph เช่น

    • ยามักการยกสูง
    • ไม้ไต่คู้ นิคหิต ยามักการ ที่ยกสูงและหลบซ้าย

    ถือเป็นข้อจำกัดที่ต้องพยายามหาทางแก้ไขในรุ่นถัดไป แต่ขณะนี้ก็ถือว่าครอบคลุมกรณีในภาษาชาติพันธุ์ได้พอสมควรแล้ว (ข้อจำกัดนี้มีเฉพาะสำหรับ pdfTeX เท่านั้น ส่วนฟอนต์บนเดสก์ท็อป หรือ XeTeX รองรับครบทุกกรณี)

    ผลพลอยได้ระหว่าง fine-tune ฟอนต์ก็คือ ได้เพิ่มฟอนต์ Umpush Light สำหรับการใช้งานใน LaTeX แล้วด้วย โดยสามารถกำหนดฟอนต์ด้วยคำสั่ง \usefont เช่น

    \usefont{LTH}{umpush}{l}{n} % ตัวตรง \usefont{LTH}{umpush}{l}{it} % ตัวเอียง

    ฟอนต์รุ่นนี้ ได้อัปโหลดเข้า Debian sid (สำหรับเดสก์ท็อป) และที่ CTAN (สำหรับ LaTeX) แล้วทันทีหลังจากออกรุ่นที่ต้นน้ำ สำหรับ LaTeX ใน Debian นั้น ต้องรอทีม TeX ของ Debian อัปเดตพร้อมกับภาษาอื่น ๆ ในแพกเกจ texlive-lang-other ต่อไป

    อ้างอิง:
    [1]
    นเรศ นโรปกรณ์. (๒๕๓๖). อัจฉริยลักษณ์และความเป็นวิทยาศาสตร์ของลายสือไทย. พิมพ์ครั้งที่ ๑. กรุงเทพฯ : โอเดียนสโตร์. ISBN 974-276-975-3.
    [2]
    ราชบัณฑิตยสถาน. (๒๕๕๓). คู่มือระบบเขียนภาษามลายูปาตานีอักษรไทย ฉบับราชบัณฑิตยสถาน. พิมพ์ครั้งที่ ๑. กรุงเทพฯ : ราชบัณฑิตยสถาน. ISBN 978-616-7073-25-5.

    MrChoke: บางเรื่องแม้รู้ก็ทำอะไรไม่ได้…

    9 April, 2014 - 12:45
    ไม่ได้บันทึกหลายวัน มีเรื่องเยอะแยะมากมายอยากเขียนแต่อารมณ์ไม่ได้เหอๆ ช่วงหลายวันที่ผ่านมาก็มีอะไรๆ มากมายตั้งแต่เข้าร่วมอบรมเรื่อง Agile ซึ่งเป็นเรื่องที่น่าสนใจมากๆ ถ้านำมาใช้ในทีมได้สิ่งที่ได้เรื่องแรกสำหรับผมคือตัวเอง มันสามารถพัฒนาตัวเองได้อย่างดี เมื่อแต่ละคนเกิดการพัฒนา ทีมก็พัฒนาตาม และ Product ที่ดีก็ตามมา องค์กรก็ได้สิ่งดีๆ ตามมาเช่นกัน แต่ก็ขึ้นอยู่กับใจผู้บริหารเช่นกันว่าต้องการ Product ที่ดีจริงๆ หรือต้องการนักปลูกผัก อันนี้ก็ไม่รู้สินะ… เมื่อวานก็ไปช่วยเก็บภาพงานค่าย EYH2014 ที่บ้านวิทย์มาเป็นปีที่สองที่เข้าไปมีส่วนร่วม เป็นค่ายวันเดียวสำหรับนักเรียนหญิงเท่านั้น เพราะโดยสถิติแล้วนักวิทยาศาสตร์หญิงมีน้อย เค้าว่างั้นนะ งานนี้บริษัท Seagate เป็นเจ้าของทุนร่วมกันกับ Nectec มานานถึง 6 ปีแล้ว ถ้าจัดสักสองวันผมว่ากำลังดี เพราะน้องๆ บางคนยังไม่ทันปรับตัวก็จบกิจกรรมเสียแล้ว เพราะกิจกรรมหลายๆ อย่างมีประโยชน์ ทุกคนไม่ได้เวียนเข้าฐานกันทุกคน ส่วนวันนี้ตอนแรกตั้งใจว่าจะปั่นตั้งแต่เช้าสักหน่อยแต่ตื่นไม่ไหว เพราะเมื่อคืนโดนรมควันซะปวดหัวมาก กินยาเข้าไปนอนยาวเลย ตอนกลางวันออกไปหาอะไรกินเจอแดดเข้าไปร้อนมากๆ เลยวางแผนออกปั่นตอนเย็นดีกว่า ก็ออกประมาณห้าโมงครึ่ง ปั่นไปวัดไผ่ล้อมคนเดียวเป็นครั้งที่สอง ครั้งก่อนออกตอนหกโมงเย็นไปถึงวันก็มืดแล้วตอนกลับเลยปั่นไปลุ้นไปเพราะทางมืด แต่โชคดีที่รถค่อนข้างน้อยเลยปั่นสบายหน่อย ส่วนวันนี้ตอนออกตัวมือถือจับ GPS ไม่ค่อยได้ปั่นไปยกรถข้ามทางรถไฟแล้วระยะทางยังรวนๆ เลยยกเลิกแล้วรอจนมือถือจับ GPS ได้เลยค่อยเริ่มนับใหม่ ปั่นไปถึงวัดยังไม่มืดกำลังดี [...]

    LookHin: ว่าด้วยกรีกและสงครามกรีก-เปอร์เซียในสมัยโบราณ

    9 April, 2014 - 12:45

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

    การปกครอง

    ในช่วง 1,200 – 650 ปีก่อนคริสตกาล รัฐแต่ละรัฐของกรีกมีรูปแบบการปกครองที่แตกต่างกัน แต่ละรัฐมีแนวทางการปกครองของตัวเองซึ่งพอจะจำแนกออกได้เป็น 4 แบบ

    1. ระบอบราชาธิปไตย (Monarchy) โดยมีพระมหากษัตริย์ใช้อำนาจสูงสุดในการปกครอง
    2. ระบอบชนชั้นสูง (Aristocracy) โดยชนชั้นสูงจะตั้งคณะเป็นผู้ปกครอง ชนชั้นสูงที่ว่าคือพวกนักรบและขุนนาง
    3. ระบอบคณาธิปไตย (Oligarchy) เป็นการปกครองโดยหมู่คณะของกลุ่มคนบางกลุ่ม โดยคณะที่ว่าเป็นพลเมืองกลุ่มเล็กๆ ของพลเมืองผู้ร่ำรวย
    4. ระบอบทรราช (Tyranny) เป็นการปกครองโดยบุคคลเพียงคนเดียว ใช้อำนาจเด็ดขาดในการปกครอง ไม่คำนึงถึงผู้อยู่ใต้การปกครอง

    จะว่าไปแล้วในแต่ละรัฐไม่ได้ปกครองด้วยการปกครองแบบใดแบบหนึ่งแต่เพียงอย่างเดียว อาจมีการรวมวิธีปกครองหลายแบบเข้าด้วยกัน ตัวอย่างการปกครองของรัฐใหญ่ๆ 3 รัฐ ได้แค่ นครรัฐคอรินธ์ นครัฐเอเธนส์ นครรัฐสปาร์ตา และระบอบประชาธิปไตยเพิ่งมีขึ้นในช่วง 494 ปีก่อนคริสตกาล

    1. นครรัฐคอรินธ์ เป็นรัฐเมืองท่าขนาดใหญ่ ตั้งอยู่เหนือที่ราบชายทะเลบริเวณคอคอดที่เชื่อมคาบสมุทรเพลอปปอนเนซุสกับแผ่นดินใหญ่ คอรินธ์แบ่งการปกครองออกเป็น 3 ภูมิภาคและแบ่งประชากรออกเป็น 8 เผ่า ซึ่งแต่ละเผ่าจะเลือกผู้แทน 10 คน เพื่อเป็นผู้แทนในสภา (Council)  ซึ่งสภานี้จะเป็นคณะที่ปรึกษาของผู้ปกครองที่มาจากชนชั้นสูงอีกทีหนึ่ง
    2. นครรัฐเอเธนส์ เป็นรัฐขนาดเล็ก มีประชากรประมาณ 50,000 คน ประกอบด้วยบริเวณสำคัญ 2 ส่วนคือ อะโครโปลิส (Acropolis) และ อกอรา (Agora) ปกครองแบบประชาธิปไตย แต่แตกต่างจากประชาธิปไตยสมัยใหม่อยู่มาก คือ
      1. สิทธิในการปกครองถูกสงวนไว้สำหรับประชากรเพียง 1 ใน 6 เท่านั้น

      2. สตรีไม่มีหน้าที่หรือสิทธิใดๆ
      3. พลเมืองที่มีสิทธิสามารถใช้สิทธิของตัวเองได้โดยตรง โดยไม่ต้องเลือกผู้แทนเพื่อเข้าไปใช้สิทธิดังกล่าว จะเห็นว่าประชากรที่มีสิทธิในการปกครองของรัฐเอเธนส์มีอยู่ไม่มากจึงไม่จำเป็นต้องทำการเลือกผู้แทน พลเมืองทุกคนที่มีสิทธิสามารถเข้าร่วมประชุมสภาราษฎรและลงมติในเรื่องต่างๆได้
    3. นครรัฐสปาร์ตา เป็นรัฐที่ทรงอำนาจและแข็งแกร่งที่สุดในบรรดานครรัฐต่างๆของกรีก มีกองกำลังทหารที่มีระเบียบวินัยและเกรียงไกรที่สุด มีลักษณะการปกครองเป็นเผด็จการทหาร ประชาชนของสปาร์ตาแบ่งออกเป็น 3 กลุ่ม คือ
      1. สปาร์เตียน (Spartiates) เป็นชาวดอเรียน ถือเป็นสปาร์ตาแท้ ส่วนใหญ่ทำหน้าที่เป็นทหาร
      2. เปริโอชิ (Perioecil) เป็นชาวเลซิเดโมเนียน อาศัยอยู่รอบนอกตัวเมือง จัดเป็นเสรีชนทำกิจการของตัวเองได้ แต่ขาดสิทธิทางการเมือง
      3. เฮล็อต (Helot) เป็นชนพื้นเมืองเดิม แต่เมื่อพวกเลซิดเดโมเนียนบุกรุกเข้ามาก็ทำการควบคุมคนเหล่านี้ให้อยู่ในฐานะ “ทาส”

    สงครามกรีก-เปอร์เซีย

    ประมาณ 500 ปีก่อนคริสตกาล จักรวรรดิเปอร์เซียมีอาณาเขตกว้างขวาง ยึดครองอาณาจักรต่างๆ ไว้ได้เป็นจำนวนมาก โดยมีเขตแดนดังนี้

    • ทางทิศเหนือจดทะเลดำ เทือกเขาคอเคซัส ทะเลสาปแคสเปียน
    • ทิศใต้จดอ่าวเปอร์เซีย ทะเลอาระเบียน
    • ทิศตะวันออกจดแม่น้ำสินธุ เทือกเขาฮินดูกูด
    • ทิศตะวันตกจดทะเลเอเจียน และข้ามแม่น้ำไนล์เข้าไปในอียิปต์

    สงครามกรีก-เปอร์เซีย ครั้งที่ 1 (492 ปีก่อนคริสตกาล)

    กษัตริย์ดาริอุสที่ 1 แห่งเปอร์เซีย ให้มาร์โดนิอุส (Madonius) ยกทัพข้ามช่องแคบเฮเลสปอนต์ผ่านแคว้นเทรซ (Thrace) ซึ่งเป็นชายฝั่งด้านเหนือของทะเลเอเจียน เพื่อเดินทางทัพเรือต่อไปยังคาลสมุทรกรีก แต่ถูกพายุใหญ่ ทำให้เรือเสียหายมากจนต้องยกทัพกลับ หลังจากนั้นพระเจ้าดาริอุสที่ 1 ได้ส่งคณะฑูตไปยังรัฐต่างๆของกรีกเพื่อเจรจาให้ยอมส่งส่วยดินและน้ำ ซึ่งเป็นสัญลักษณ์ของการยอมแพ้และอยู่ใต้การปกครองของเปอร์เซีย ขณะนั้นนครรัฐหลายรัฐยอมส่งส่วย  แต่มีบางรัฐไม่ยอม เช่น รัฐเอเธนส์ และ รัฐสปาร์ตาร์

    สงครามกรีก-เปอร์เซีย ครั้งที่ 2 (490 ปีก่อนคริสตกาล) หรือสงครามมาราธอน

    กษัตริย์ดาริอุสที่ 1 รวบรวมกำลังพลเพื่อที่จะทำสงครามกับกรีกอีกครั้ง โดยมีทหารราบ 250,000 ทหารม้า 1,000 เรือมากกว่า 600 ลำ โดยเดินทัพเลียบชายฝั่งทะเลเมติเตอเรเนียนเข้าสู่ทะเลเอเจียน และขึ้นบกที่อ่าวมาราธอน (Marathon) แคว้นอัตติกา (Attica) การรบครั้งนี้ถึงกรีกจะมีกำลังน้อยกว่า แต่กรีกเป็นฝ่ายชนะ

    สงครามกรีก-เปอร์เซีย ครั้งที่ 3 (481 ปีก่อนคริสตกาล)

    หลังจากกษัตริย์ดาริอุสที่ 1 สิ้นพระชนม์ในปี 486 ก่อนคริสตกาล  เจ้าชายเซอร์เซส พระโอรสก็สืบราชสมบัติต่อ เป็นกษัตริย์เซอร์เซสที่ 1 (Xerxes 1)  กษัตริย์เซอร์เซสที่ 1 ต้องการเดินทัพทางบกขึ้นเหนือ จึงสั่งให้ทำสะพานข้ามช่องแคบเฮเลสปอนส์ แล้วเดินทัพอ้อมมาตามชายฝั่งทะเลเข้าสู่คาบสมุทรกรีก โดยมีกองทัพเรือเดินทางเลียบชายฝั่งมาด้วย ว่ากันว่าการยกทัพมาครั้งนี้มีกำลังพลถึง 2,300,000 คน

    • การรบที่ช่องเขาเทอร์โมพิเล ลีโอไนดัส (ในหนัง 300 ภาคแรกเป็นเรื่องของคนคนนี้) ได้นำทหารสปาร์ตา 300 คนต้านทัพของเปอร์เซียบริเวณช่องเขาเทอร์โมพิเล ลีโอไนดัสและทหารสปาร์ตาทั้ง 300 คน ได้ทำการสู่รบอย่างกล้าหาญและพลีชีพที่ช่องเขานี้ เมื่อรบชนะฝ่ายเปอร์เซียก็มุ่งหน้าสู่เอเธนส์
    • การรบทางเรือที่ซาลามิส เธมิสโตคลิส (Themistocles) (ในหนัง 300: Rise of an Empire เป็นเรื่องของคนคนนี้ เป็นแม่ทัพเรือชาวกรีก) เธมิสโตคลิส ได้ให้เหตุผลต่อสภาว่าอนาคตของเอเธนส์ขึ้นอยู่กับอำนาจทางทะเล เขาสามารถโน้มนาวให้ประชาชนในรัฐเอเธนส์เห็นชอบในการนำเงินมาใช้ในการสร้างกองทัพเรือให้แข็งแกร่ง ในการสู่รบทางเรือที่ซาลามิส เธมิสโตคลิส เป็นฝ่ายชนะ เมื่อแพ้สงครามกษัตริย์เซอร์เซสที่ 1 รวบรวมกำลังพลที่เหลืออยู่และกลับเปอร์เซีย แต่ได้วางกำลังพล 120,000 คน ไว้ที่คาบสมุทรกรีก และมอบหมายให้มาร์โดนิอุส (Mardonius) บุตรเขยทำหน้าที่เป็นแม่ทัพ เมื่อมาร์โดนิอุสได้เป็นแม่ทัพก็ได้นำทัพบุกกรีกอีกอีกครั้ง และถูกสังหารในการรบ กองทัพเปอร์เซียขาดผู้นำ จึงพ่ายแพ้อย่างราบคาบ

    หลังจากได้รับชัยชนะจากสงครามจากเปอร์เซียแล้ว ก็เกิดสงครามภายในระหว่างรัฐของกรีกอีกหลายครั้ง จนในที่สุดพระเจ้าฟิลิปที่ 2 แห่งมาซิโดเนีย (359– 336 ปีก่อนคริสตกาล) (คนนี้เป็นพ่อของพระเจ้าอเล็กซานเดอร์มหาราช) ซึ่งเป็นอาณาจักรทางภาคเหนือของกรีก ได้ใช้กำลังผสมระหว่างทหารม้าของขุนนางกับทหารราบฟาลังห์ (เป็นทหารที่ใช้โล่กับหอกยาวเวลารบจะเรียงแถวหน้ากระดาน) เข้ามาแทรกแซงและครอบครอง หลังจากนั้นไปก็จะเป็นเรื่องราวของพระเจ้าอเล็กซานเดอร์มหาราช (356-323 ปีก่อนคริสตกาล) ที่จะขยายอาณาเขตไปจนถึงอินเดีย