Planet TLWG

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

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

14 July, 2014 - 21:48

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

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

เปลี่ยนสิทธิเป็น 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

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

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

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

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

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

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

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

1 nano /etc/rc.local

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

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

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

Sothorn: Login ด้วย root บน GNOME Debian 7

13 July, 2014 - 07:46
หมวดหมู่: Debian

ส่วนตัวทำงานบนลีนุกซ์ ชอบ Login ด้วย root  เมื่อใช้ Debian 7 ทำงานเป็น Desktop มันไม่อนุญาตให้ Login ด้วย user root ในเมื่อชอบก็ต้องหาทางแก้  เมื่อเรา Login ด้วย user ทั่วไป ก็ใช้คำสั่ง

su -

แล้วแก้ไขไฟล์  /etc/pam.d/gdm3
comment หน้า บรรทัดนี้

#auth   required        pam_succeed_if.so user != root quiet_success

Logout จาก user ทั่วไป แล้ว Login ด้วย root ได้เลย
Share

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

11 July, 2014 - 02:32

จริงๆ แล้วตัว 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

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

จากนั้นทำการติดตั้งโปรแกรม 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

เมื่อติดตั้งเรียบร้อยแล้ว เราสามารถใช้ขาต่างๆ ทั้ง 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 หมุนไปยังมุมต่างๆ ตั้งแต่ 0° – 180° ซึ่งปกติก็จะอยู่ที่ในช่วง 500us – 2000us แต่ผมมักใช้ 1000us ถึง 2000us มากกว่า ซึ่งจะหมุนได้ไม่ครบ 180° แต่ก็ปลอดภัยกับเฟืองในมอเตอร์มากกว่า และถ้าเรากำหนดความกว้างของพัลส์ที่ 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

เพียงเท่านี้เราก็สามารถควบคุมให้ 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

Sothorn: เมื่อติดตั้ง CentOS 6.5 แล้วไม่เจอฮาร์ดดิสก์

10 July, 2014 - 07:41
หมวดหมู่: CentOS

สำหรับคนที่ติดตั้ง Server รุ่นใหม่ๆ แล้ว CentOS ไม่เจอฮาร์ดดิสก์ เป็นเพราะ CentOS ไม่รู้จักการ์ด RAID นั่นเอง ผู้ติดตั้งจำเป็นต้องไปหาดาวน์โหลด Driver ของการ์ด RAID จากเวบไซต์ของผู้ผลิต Server เมื่อได้มาแล้วทำอย่างไรต่อครับ

ในขั้นตอนติดตั้งเมื่อเข้าสู่เมนูการติดตั้ง ให้กด Tab

แล้วพิมพ์ linux dd

ตอบ Yes

แล้วบอก device ที่ Driver เราเก็บอยู่ ใน Flopy Disk, DVD, อุปกรณ์ USB

ถ้าหากหา Driver ไม่ได้ให้ทดลองเอา CentOS เวอร์ชันที่ต่ำกว่า หรือสูงกว่ามาลองติดตั้งดู
จากประการณ์ที่ผ่านมาบางครั้งเวอร์ชันต่ำกว่าก็สามารถติดตั้งได้

Udomsak: เล่าสู่กันฟัง ทำตัวติดตั้งโปรแกรม แบบง่ายๆ บนระบบปฏิบัติการ Window

8 July, 2014 - 23:49
Window Installer  คือ ตัว Setup  ที่เราเห็นเวลา Click setup อะไร  วันนีเอามาให้ดู พอดีนั่งทำโปรเจ็กต์ ส่งให้ พี่โดมฯ เลยเอามาปัดฝุ่นใช้อีกคร้งนึง  ตัวนี้ที่ผมใช้คือ  'InnoSetup'  ซึ่งจะต่างไปจากเดิม ที่ผมเคยใช้เมื่อหลายปีก่อน คือ NSIS ( Sponsor โดย NullSoft )  โดยเป็น Opensoure software ทั้งคู่

ถามว่าในงาน System Administrator มีประโยคอะไร

เอาไว้สำหรับติดตั้งโปรแกรม หรือ Script ที่เราต้องการผ่าน ซอฟต์แวร์ตัวนี้ได้ โดยทำงานผ่าน การติดตั้งแบบ Unattend  ( ปกติ ตัว setup จะถามให้เรา click next  หรือการมีปฏิสัมพันธ์ กับ  User  ซึง unattend คือการติดต้งแบบตรงกันข้ามกันแบบนี้ ( Silinet installaton ) )

ประโยชน์ ที่ผมเคยใช้ คือทำการ deploy program หรือ script ที่เราเขียนขึ้นมา เพื่อทำงาน และ  ใช้ deploy ไปยังเครื่อง client จำนวนมากๆ  มีบางกรณี script ที่เขียนไว้ มีการทำงานไม่ครอบคลุม กับ สิ่งที่จะทำ ผมจะใช้วิธีนี้  ( สมัยเมื่อหลายปีก่อนที่ทำหน้าที่ Technical support )

ประโยชน์
  1. ทำให้ลดเวลาในการติดต้งโปรแกรมลง 
  2. ลด scope ของการทำงานที่ผิดพลาดของ Scripting แทน 
  3. บางครั้ง Scripting เองไม่ได้มีความสามารถแบบนั้น
  4. Script หรือ ตัวโปรแกรมบางตัว ถอนการติดตั้งตัวมันเองไม่ได้  กรณีที่ Software ที่ติดต้งไม่ได้ถูก register เข้าไปใน registry ของ Software install  ซึ่งจะทำให้มันไปโผล่ใน Add remove program ของ Control panel  Installer software ก็เข้ามาช่วยจัดการตรงนี้ 


การรับมือกับเครื่องจำนวนมาก และต้องติดตั้ง Software โดยมานั่ง Click setup next  ไม่เป็นประโยชน์แน่ หลายคนอาจจะบอกว่า ใช้ Norton Ghost สิก็จบเรื่อง  ใช่ครับแต่บางกรณี  และ หลายครั้ง หลังจากติดตั้ง Ghost แล้ว ต้องเข้าไปทำการ Setup software น้นๆ ใหม่  การใช้ Script และ โปรแกรม Deployment management จะเข้ามาช่วยตรงนี้





My site Article and Topic

Thep: Fonts-TLWG 0.6.1

8 July, 2014 - 15:29

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

  • ฟอนต์ใหม่: ลักษมัณ (Laksaman) ซึ่งดัดแปลงจากฟอนต์ TH Sarabun New ของคุณศุภกิจ เฉลิมลาภ และ SIPA
  • แตกแฟ้ม fontconfig จากแฟ้มเดี่ยวๆ เป็นแฟ้มย่อย เพื่อให้สามารถเลือกติดตั้งฟอนต์เพียงบางส่วนได้ ซึ่งเป็นสิ่งที่ดัดแปลงไว้ในแพกเกจของ Debian ก็เพียงแต่ merge เข้ามาที่ต้นน้ำเท่านั้น
  • Option ใหม่สำหรับ LaTeX เพื่อให้สามารถกำหนดฟอนต์ปริยายของเอกสารได้โดยสะดวก

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

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

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

LookHin: การบันทึกเสียงผ่าน USB Microphone และแปลงเสียงเป็นฟอร์แมตต่างๆ

6 July, 2014 - 09:49

หัวข้อนี้จะเป็นตัวอย่างการใช้ Raspberry Pi ต่อกับ USB Microphone เพื่อทำการบันทึกเสียง โดยไฟล์ที่บันทึกได้จะมีนามสกุลเป็น .wav และเราจะทำการแปลงเสียงเป็นฟอร์แมตต่างๆ โดยใช้ ffmpeg อีกทีนะครับ อย่างแรกก็ไปหาซื้อไมโคโฟนที่เป็นแบบ USB และทำการต่อสายต่างๆ ให้เรียบร้อย

ทำการตรวจสอบหมายเลขไอดีและค่าของดีไวซ์ จากรูปจะเห็นว่าค่าของ Mic Capture Volume มี Values=0

1 amixer --card 1 contents

ทำการปรับระดับความดังของไมโครโฟนให้ดังสุด (หรือจะไม่สุดก็แล้วแต่) โดยใส่ค่าได้ตั้งแต่ 0 – 16

1 amixer -c 1 cset numid=2 16

ตรวจสอบไอดีของการ์ดที่จะใช้ในการบันทึกเสียง จากรูปเป็นการ์ดหมายเลข 1

1 arecord -l

ทำการบันทึกเสียงโดยใช้คำสั่ง arecord โดยมีพารามิเตอร์ดังนี้ -d 5 หมายถึงให้บันทึกเสียงเป็นเวลา 5 วินาทีแล้วหยุด, -D plughw:1 ให้ใช้การ์ดหมายเลข 1, และ test.wav ให้บันทึกเป็นไฟล์ test.wav

1 arecord -d 5 -f cd -t wav -D plughw:1 test.wav

เมื่อบันทึกเสร็จ ให้ทดสอบทำการเปิดเสียงที่บันทึกเมื่อสักครู่โดยใช้คำสั่ง aplay

1 aplay test.wav

เมื่อได้ไฟล์เสียง .wav มาแล้ว เราสามารถแปลงเป็นฟอร์แมตต่างๆ ได้โดยใช้คำสั่ง ffmpeg ตัวอย่างเราจะแปลงเป็นไฟล์ .mp3 ก็ใช้คำสั่งดังนี้

1 ffmpeg -i test.wav test.mp3

ถ้าเรียกใช้คำสั่ง ffmpeg แล้วไม่มีคำสั่งนี้อยู่ก็ให้ทำการติดตั้ง ffmpeg ก่อนนะครับ

1 sudo apt-get install ffmpeg

Udomsak: มาป้องกันโทรศัพท์หาย กันเถอะ ( Android )

5 July, 2014 - 21:06
เนื่องจากได้โทรศัพท์ใหม่มา  แทนเครื่องเดิม ซื้อมาในราคา 3,500 พอใช้งานได้ดี  เป็นเครื่อง สองซิม พอไล่ Set program ไปเรื่อยๆ ก็เลยหา solution มาทดสอบกันหน่อย ไม่เชิงจะว่างนัก แต่ระหว่าง Set Env เครื่องเพื่อที่จะทำงานต่อ ก็มาทดสอบกันหน่อย  

เนื่องจากมีงบน้อย และ ไม่สะดวกในการชำระเงิน จึงขอเลือกเอา ออปชั่นฟรี  มาใช้งานกันนะครับ


  1. Prey Project ( Anti-thef )  ป้องกัน  Notebook , Mobile , Computer สูญหาย 
  2. Avast Anti-Thef  ป้องกัน มือถือหาย  

โดยมีโจทย์เพ่ิมเติม นิดนึง  เนื่องจากเคยได้ยินข่าวที่ว่า มีคนโดนปล้นมือถือ โจรดันฉลาดไปลบโปรแกรมทิ้งอีก เลยต้องหา Feature ที่มีการ Hide ตัว Program ได้นิดนึง นอกจากนั้นต้อง
  • หามือถือได้จาก Map application**  
  • กรณี GPS ใช้ไม่ได้น่าจะมี Option อื่น ที่ locate phone ได้** 
  • สั่งลบข้อมูลได้  
  • ทำงานได้ดี 

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

กลับมาที  Avast Anti-Thef   หลังจากติดตั้ง Application ลงไปแล้ว ให้เข้าไปที ่Web  my.avast.com ถ้าไม่มี Account ก็ทำการสร้าง จากบน Web หรือ จากใน มือถือได้เลย



ส่ง จาก Web ของ Avast ให้ทำการ Locate Phone 

 หน้าจอสำหรับส่ง Command เพื่อ Locate Phone หลังจากส่งไปแล้ว ใจเย็นรอหน่อย ไม่เกิน 3นาที ค่าต่างๆ จะโผล่ขึ้นมาให้เราเองเลย




 Status report ทำได้ละเอียดกว่า  PreyProject พร้อมทั้งระบุ Cell  location ให้ด้วย 


ผมอยู่ในตึก แต่การ report ทำออกมาได้ดี 



บทสรุป   ในเครื่องผมติดตั้งทั้ง สองโปรแกรมเอาไว้ เพื่อทดสอบ  จริงๆ แค่ Avast Anti-theft ก็น่าจะเพียงพอแล้ว  ปล. สามารถไปประยุกต์ใช้งาน อื่นๆ ได้ด้วยครับ



My site Article and Topic

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

5 July, 2014 - 20:54

วันนี้เราจะมาลองเปิดเพลง 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 แล้วครับ

Thep: LaTeX Options for fonts-tlwg

5 July, 2014 - 17:27

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

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

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

  • การใช้ฟอนต์ sans-serif แทนค่าปกติที่เป็นฟอนต์ roman:
    • sans : ใช้ฟอนต์ sans-serif เป็นฟอนต์ปกติของเอกสาร
  • การกำหนดฟอนต์ roman, sans-serif, และ teletype ของเอกสาร:
    • rmkinnari : ให้ฟอนต์ kinnari เป็นฟอนต์ roman ปริยาย
    • rmnorasi : ให้ฟอนต์ norasi เป็นฟอนต์ roman ปริยาย
    • sfgaruda : ให้ฟอนต์ garuda เป็นฟอนต์ sans-serif ปริยาย
    • sflaksaman : ให้ฟอนต์ laksaman เป็นฟอนต์ sans-serif ปริยาย
    • sfumpush : ให้ฟอนต์ umpush เป็นฟอนต์ sans-serif ปริยาย
    • sfloma : ให้ฟอนต์ loma เป็นฟอนต์ sans-serif ปริยาย
    • sfwaree : ให้ฟอนต์ waree เป็นฟอนต์ sans-serif ปริยาย
    • ttttype : ให้ฟอนต์ ttype เป็นฟอนต์ teletype ปริยาย
    • ttttypist : ให้ฟอนต์ ttypist เป็นฟอนต์ teletype ปริยาย
    ตัวเลือกกลุ่มนี้ไม่ได้เปลี่ยนฟอนต์ปริยายของเอกสารโดยตรง แต่เปลี่ยนฟอนต์ทั้งสามตระกูลสำหรับใช้คละกันในเอกสาร
  • การกำหนดฟอนต์ปริยายของเอกสาร:
    • kinnari : ให้ฟอนต์ kinnari เป็นฟอนต์ปริยายของเอกสาร
    • garuda : ให้ฟอนต์ garuda เป็นฟอนต์ปริยายของเอกสาร
    • norasi : ให้ฟอนต์ norasi เป็นฟอนต์ปริยายของเอกสาร
    • laksaman : ให้ฟอนต์ laksaman เป็นฟอนต์ปริยายของเอกสาร
    • loma : ให้ฟอนต์ loma เป็นฟอนต์ปริยายของเอกสาร
    • purisa : ให้ฟอนต์ purisa เป็นฟอนต์ปริยายของเอกสาร
    • sawasdee : ให้ฟอนต์ sawasdee เป็นฟอนต์ปริยายของเอกสาร
    • ttype : ให้ฟอนต์ ttype เป็นฟอนต์ปริยายของเอกสาร
    • ttypist : ให้ฟอนต์ ttypist เป็นฟอนต์ปริยายของเอกสาร
    • umpush : ให้ฟอนต์ umpush เป็นฟอนต์ปริยายของเอกสาร
    • waree : ให้ฟอนต์ waree เป็นฟอนต์ปริยายของเอกสาร
    ตัวเลือกกลุ่มนี้กำหนดฟอนต์ปริยายของทั้งเอกสาร โดยไม่ได้เปลี่ยนฟอนต์ทั้งสามตระกูล (อาจจะเหมาะกับเอกสารที่ใช้ฟอนต์เดียวทั้งเอกสาร เช่นหนังสือราชการไทยที่บังคับใช้ฟอนต์สารบรรณ)

ตัวอย่าง use case:

  • ต้องการใช้ฟอนต์ลักษมัณ (ดัดแปลงจากสารบรรณ) ทั้งเอกสาร (เช่น ในหนังสือราชการ): \usepackage[laksaman]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ลักษมัณเป็น sans-serif (เช่น ในคำสั่ง \textsf{}) แทนฟอนต์ครุฑ (ฟอนต์ปริยายยังคงเป็น norasi): \usepackage[sflaksaman]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ลักษมัณเป็นฟอนต์ปริยาย โดยต้องการผสมกับฟอนต์ roman, teletype ปกติ: \usepackage[sans,sflaksaman]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ลักษมัณผสมกับฟอนต์กินรี โดยลักษมัณเป็นฟอนต์ปริยาย: \usepackage[sans,sflaksaman,rmkinnari]{fonts-tlwg}
  • ต้องการใช้ฟอนต์กินรีอย่างเดียวทั้งเอกสาร: \usepackage[kinnari]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ครุฑผสมกับฟอนต์กินรี โดยฟอนต์ครุฑเป็นฟอนต์ปริยาย: \usepackage[sans,sfgaruda,rmkinnari]{fonts-tlwg}

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

Udomsak: My DevTools ที่ใช้ สำหรับ Mobile App development. บนระบบปฏิบัติการ Windows

5 July, 2014 - 17:07
เมื่อคืืน พอว่างก็ไล่เคลียร์งาน ที่ค้างๆ พี่ๆ และ ชาวบ้านเขาไว้ให้ เสร็จๆ ไป นึกขึ้นได้เคยเห็นบางคน ถามเรื่องการใช้ อุปกรณ์ไหนยังไงในการพัฒนา Web App , Mobile App บนฝั่ง Window ผมใช้ตามนี้ครับ

นอกเหนือจากนั้นก็แล้วแต่ ครับว่าจะใช้ ทำอะไรมากขนาดไหน  ถ้าเป็น Cordova Plugin Dev and Modify ก็จะใช้ ADT ( Android Developer Tool ) เข้ามาช่วย

  • Brackets  ( Adobe Opensource Editor )
    • Nodejs extension
    • Brackets-Git Extension 
    • ปลั๊กอิน อื่นๆ ที่เกียวข้อง   
  • Nodejs
  • Git Explorer 
  • Git Command Line on Windows
  • Process Hacker เอาไว้สำหรับ หา Process ที่รันและค้างอยู่ใน Memory รวมถึง ตัวที่มันกำลัง access network
  • Fiddle2  เอาไว้ Trap ดู Traffic HTTP ที่วิ่งไปมา ระหว่าง Server กับ  Browser client  ( ต้องการ .NET 4 )  
  • SysInternal Tool  - บางทีก็เอาไว้ใช้สำหรับ resolve ปัญหาบางอย่างที่ต้องการรู้ เช่น การ อ่าน-เขียน registry , Filelock , Access enum  ( permisson access dump )  ตัวนี้อาจไม่เกี่ยวกับ HTML5 dev.  
  • Wireshark เอาไว้ sniffer traffic 
  • ie Tab chrome extension สำหรับดสอบใน หนาต่างของ IE  
  • Ultimate user Agent chrome extension สำหรับทดสอบเปลี่ยน User Agent 

เพราะสาเหตุอะไรที่ผมใช้ ตัวนี้มาดูกัน 
  • ทำไงก็ได้ให้มันสามารถทำการ preview ตัว HTML ที่เราทำได้  ถ้าเป็น Linux ไม่ลำบากอะไรแค่ Module 'httpserver' ตัวเดียวจบ หรือ บวกกับ node-watch   
  • สนับสนุน git  ( ปล. ในเครื่องต้องลง Git  window program เรียบร้อยแล้วนะครับ )  git คือ version control  ทำให้ไม่ต้องคอย Save backup อยู่ตลอดๆ
SublimeText2 ผมเองก็ใช้ครับ แต่ มันขาดฟังก์ชั่น ที่ทำให้ต้อง relaod and setup webserver ( simple httpd ) ขึ้นมาเอง เลยเลือกใช้เป็น Brackets แทน 

  หลังจากผมทำการติดตั้ง Brackets แล้ว และ ลง Exension ที่เกี่ยวข้องเพิ่มเติม  


Options Live preview มีมาให้เป็นค่าปกติ ( Default ) ไม่ต้องไปลงอะไรเพิ่ม ผมแก้โค้ด เสร็จสั่ง save มันก็โหลดอันที่แก้ขึ้นมาให้เลย   Git extension เองมีมาให้ครบฟังก์ชั่นการทำงาน
  • Branch 
  • Vesion 
  • Diff 
  • Log 
  • History 






ดู Process ที่ค้างอยู่ ถ้าค้างก็ Kill ซะ







My site Article and Topic

Thep: Laksaman Font

1 July, 2014 - 12:57

จาก แผนการ ที่วางไว้สำหรับการดัดแปลงฟอนต์สารบรรณเพื่อผลักดันเข้า 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

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

Udomsak: ติดตั้ง Visual Studio 2003 บน Window 7 64bit

29 June, 2014 - 15:25
เนื่องจากมี งานใหม่ที่เข้าไปทำประจำ พัฒนาแอพพลิเคชัน บน base ของ .NET 1.1  อย่างไรก็ตาม หลังจากติดต้ง Visual studio 2003 เข้าไปแล้วก็งานเข้าทันใด  เพราะ Visual studio เปิดไม่ขึ้น  และ ผมไม่ได้ เก็บ Capture screen เอาไว้


  • ทำให้ไม่สะดวกเอาเต็มกำลัง  sharp developer ก็รองรับได้ต่ำสุดคือ .NET Framework 2 
  • Xamarin Studio ก็ติดปัญหา มองไม่เห็น .NET 1.1 หรือ ผม SET ไม่ถูกต้องไม่แน่ใจ 
  • ปัญหาอีกอย่างคืือเครื่องลงโปรแกรม โน่นนี่นั่น จนรวนไปหมด แก้ไม่ถูก  
  • จะ ใช้ Build tool แล้วไปใช้ IDE ตัวอื่นเขียนแทน ก็ไม่ได้ เพราะต้องมี Design report ,  UI มาเกี่ยวข้อง
  • เครื่องที่ติดตั้งได้ เป็นของที่ทำงานไม่สะดวกในการนำกลับมาทำต่อท่บ้าน   


ขั้นตอนข้างล่างนี เป็นขั้นตอนที่ผม ทำสำหรับแก้ปัญหาเครื่องผม เองนะครับ

ขั้นตอนโดยคร่าวจะเป็นดังนี้

  • ดาวน์โหลด .NET  version 1.1 servicepack 1  
  • เข้าไป direcotry  c:\Windows\Microsoft.NET\Framework\v1.1.4322
  • เรียกคำสั่ง  'aspnet_regiis -ir'
  • ดาวน์โหลด  Web Platform installer   
  • ดาวน์โหลด  IIS Express ( 7.5  คือ ของเดิมที่มีอยู่ ) ถ้ามีก็ข้ามไป โดยดาวน์โหลดได้ผ่าน Web Platform Installer 
  • ติดต้ง Internet Information Service Manager ( IIS Manager ) 
  • Add  ISAPI  ( ไฟล์ asp_filter.dll  ที่อยูใน dir .NET framework 1.1 ข้างต้น ) 
  • Allow ISAPI  ที่เพิ่มเขาไป จากเมนู CGI/ISAPI restriction control  
  • Create Site  
  • Change application pool เป็น .NET 1.1  
  • Start Visual Studio 2003 ใช้งานได้ตามปกติ อาจจะมี  Warning เรื่อง Compatablility บ้างไม่เป็นไร 
  • ดาวน์โหลด Utildev Server  สำหรับ Visual studio  
  • ติดตั้ง และ ทำการ setup ตามคูมือที่ page บอกเอาไว้หลังติดตั้งเสร็จ คือ set debug โปรแกรม ให้ไปโหลด  Utildev Server แทน 
  • จบการแก้ไข 
อ้างอิงพื้นฐานการ ติดตั้งจาก : http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/how-to-setup-asp-net-v1-1-visual-studio-net-2003-projects-on-iis7-vista.aspx
เพิ่มเติม สำหรับบางคน อาจมีปัญหาในการติดตั้ง ในส่วนของ Debug program  ในส่วนของ Cassini ให้เข้าไป Set  ใน property ของ Solution  โดยตั้งค่าในส่วนของ

Configuration -> Debugging 


  1. Debug mode  ตั้งค่าเป็น Program 
  2. StartApplication :  ตั้งค่าเป็น ไฟล์  CassiniWebserver  กรณีของผมเป็น C:\Program Files (x86)\UltiDev\Cassini Web Server for ASP.NET 1.1\UltiDevCassinWebServer.exe
  3. Command Line Arguments:   ตั้งค่าเป็น  /run  "{ path application ที่เรากำลังพัฒนาอยู่  } 
  4. กด Apply 
  5. ทดสอบ Run  window จะ Prompt ถาม permission access network 
  6. Browser จะถูกเปิดออกมา พร้อมกับ Command-Line window  




















My site Article and Topic

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

12 June, 2014 - 22:59

ไม่ได้เขียนอะไรลงบล๊อคซะนานจนเกือบจะเป็นบ้านร้างไปอีกหละ วันนี้เรามาทดลองติดตั้ง 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: แก้ไฟล์ PDF ที่เปิดไม่ได้ Fix PDF Open Error.

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



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



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


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





My site Article and Topic

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

1 June, 2014 - 21:34
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: 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