20 October 2014

Kitt

Google Slides

Google Slides เวลาสั่งพิมพ์ เลือกขขนาดกระดาษไม่ได้ มันออกเป็น US Letter อย่างเดียว สืบย้อนกลับไปพบว่ามันเป็นแบบนี้มา 2 ปีแล้ว ที่ต้องการเวลานี้ใน Google Slides มี สองรายการ เลือกขนาดกระดาษเวลาพิมพ์ได้ รันเลขหน้าอัตโนมัติ ได้สองรายการนี้ก็แทบจะ cover หมดแล้ว ย้าย platform ได้เลย /me .. ชอบ snap to guide เจ๋ง และ มีประโยชน์ :)

โดย kitty ณ 20 October 2014 09:47 GMT

19 October 2014

Kitt

순두부찌개

วันนี้ทำกับข้าวให้คุณนายชิม “순두부찌개” สตูว์เต้าหู้อ่อนรสจัดของเกาหลี ทำง่าย อร่อยง่าย 55+

โดย kitty ณ 19 October 2014 17:02 GMT

18 October 2014

Kitt

Coffee

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

โดย kitty ณ 18 October 2014 18:02 GMT

17 October 2014

Kitt

KAIST/IPFGRU 2012

Oct. last year I’ve attends KAIST/IPFGRU 2012, held in Seoul and also visited friends in Busan. Here are some photo. :)

โดย kitty ณ 17 October 2014 16:54 GMT

A minute, an hour, a day, and a lifetime.

첫눈에 반하는것 … 일분 걸린다 누군가를 좋아하게 되는건 … 한시간 누군가를 사랑하게 되는 시간 … 하루 누군가를 잊는건 … 평생 걸린다 —  진주 목걸이 Love at first sight … a minute Liking someone … an hour Loving someone … a day Forgetting someone … a lifetime — Pearl Necklace

โดย kitty ณ 17 October 2014 16:18 GMT

ม.๗

ม.๗ มันคือ default ที่วางท้ายสุดใน switch หรือ else สุดท้าย ใน else-if construct command ใน default / else ต้องหยิบเอา functions ที่เคย define มาแล้ว ใช้กันมานานมาใช้ โดย pass parameter ของกรณีนี้ไปเป็น input ถ้าจำเป็น จะ wrapper / template / polymorphism อะไรก็ว่ากันไป .. #ห๊ะ

โดย kitty ณ 17 October 2014 16:18 GMT

when it happens, it happens ..

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

โดย kitty ณ 17 October 2014 16:17 GMT

Migrate to MariaDB

Just drop a note that I’ve just migrated from Percona to Maria DB. See if it goes well ..

โดย kitty ณ 17 October 2014 16:17 GMT

The 10-Books Quest

พี่ Theppitak Karoonboonyanan กับ Kamthorn Krairaksa แท็ก quest หนังสือสิบเล่ม ส่งงานครับ 1. วงกลมกลับหัว (อาจารย์เซน กิลเบิร์ต) + การ์ตูนเซ็น (various) อ่านช่วงที่ตามหาคำตอบบางอย่างในชีวิต เปิดหูเปิดตามากๆ 2. Foundation Series (Isaac Asimov) อ่านครบทุกภาค แต่นับแล้วก็ยังประทับใจเฉพาะภาคที่ Asimov เขียน ลึกซึ้งมาก 3. Robot Series (Isaac Asimov) I, Robot + Elijah Baley ไม่แน่ใจว่ายังเหลือภาษาไทยอีกไหม 4. Michael Bolitar Series (Harlan Coben) 5. Harry Bosch Series (Michael Connelly) 6. Kosuke Kindaichi […]

โดย kitty ณ 17 October 2014 16:17 GMT

มหกรรมหนังสือระดับชาติครั้งที่ 19

เข้า กทม. ไปบรรยายเรื่อง Cloud บ่ายแก่ๆ ว่างมาเดินงานหนังสือ มาไวไปไว คินดะอิจิยอดนักสืบ ตอนที่ 27 เสือดำจากรัตติกาล คินดะอิจิยอดนักสืบ ตอนที่ 28 โรงละครผีสิง คินดะอิจิยอดนักสืบ ตอนที่ 29 หน้ากากมรณะ คินดะอิจิยอดนักสืบ ตอนที่ 30 ปฏิทินแม่มด มิเกะเนะโกะโฮล์มส์ แมวสามสียอดนักสืบ ตอนที่ 21 สนามสอบมหาภัย มิเกะเนะโกะโฮล์มส์ แมวสามสียอดนักสืบ ตอนที่ 22 ปริศนาโฮล์มส์หนีออกจากบ้าน เอส คำสาปกลายพันธุ์ พุ่มรัก พานสิงห์ ชุด 5 คดีล่าคนเจ้าชู้ พุ่มรัก พานสิงห์ ชุด 6 คดีศพล่องหน หมดไป 1,627 บาท สบายใจละ

โดย kitty ณ 17 October 2014 16:14 GMT

16 October 2014

LookHin

เพิ่มความปลอดภัยให้ระบบล็อกอินบนเว็บด้วยการทำ 2 Step Verification

บทความนี้จะเป็นการแนะนำการใช้งาน Google Authenticator และทดสอบการทำ 2 Step Verification แบบ TOTP (Time-based One-time Password) เพื่อเป็นแนวทางในการทำระบบล็อกอินในหน้าเว็บไซต์ให้มีความปลอดภัยมากขึ้น โค้ดที่ใช้ทดสอบในบทความนี้จะเป็น PHP ที่สามารถโหลดได้ฟรีจาก Github หรือหากต้องการใช้ไลบรารีในภาษาอื่นเช่น Python, .NET หรือ HTML5 ให้ลองดูจากข้อมูลอ่างอิงจาก Wikipedia ในท้ายบทความนะครับ

อย่างแรกสุดให้ทำการติดตั้ง Google Authenticator กันก่อนครับ ถ้าใครใช้ Android หรือ iOS ก็โหลดกันจากสโตร์ของแต่ละค่ายได้เลย โดยค้นหาคำว่า Google Authenticator และทำการติดตั้งให้เรียบร้อย เมื่อติดตั้งแล้วจะได้หน้าตาประมาณนี้

Google Play
https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2

App Store
https://itunes.apple.com/en/app/google-authenticator/id388497605?mt=8

google-authenticator-2-step-verification

google-authenticator-2-step-verification

จากนั้นทำการโหลดไลบรารีจาก https://github.com/chregu/GoogleAuthenticator.php ทำการ unzip ให้เรียบร้อย เดียวเราจะใช้เฉพาะไฟล์ที่อยู่ในโฟลเดอร์ /lib

google-authenticator-2-step-verification

เขียนโปรแกรมเพื่อสร้าง Security Key ซึ่ง Key ที่ได้จะเป็นตัวอักษรภาษาอังกฤษกับตัวเลขรวมกัน 16 ตัว จากชุดตัวอักษรต่อไปนี้ “ABCDEFGHIJKLMNOPQRSTUVWXYZ234567″ เราอาจจะสุ่มออกมา 16 ตัวเองก็ได้นะครับ

1
2
3
4
5
6
7
8
9
<?php
include_once("lib/GoogleAuthenticator.php");
 
$g = new GoogleAuthenticator();
$secret = $g->generateSecret();
 
echo $secret;
 
?>

google-authenticator-2-step-verification

นำค่า Security Key ที่ได้ไปสร้าง QR Code อันนี้ใครจะทำโปรแกรมสร้าง QR Code เองก็ได้ ซึ่งผมแนะนำให้สร้างเองดีกว่าอย่างน้อย Security Key ก็จะได้ไม่หลุดออกไปที่อื่น แต่ในบทความนี้จะใช้ทดสอบการทำงานเท่านั้น ฉะนั้นผมจะสร้างจากเว็บที่ให้สร้าง QR Code แบบออนไลน์เลยนะครับ ในทีนี้ผมจะใช้ http://qrcode.kaywa.com/

โดยให้ใช้สตริงต่อไปนี้ในการสร้าง QR Code

1
otpauth://totp/LABEL?secret=SECURITY_KEY&issuer=ISSUER_NAME

LABEL = ข้อมูลที่จะแสดงในโปรแกรม Google Authenticator ว่ารหัสนี้จะใช้กับอะไร
SECURITY_KEY = Security Key ที่เราสร้างจากขั้นตอนที่แล้ว
ISSUER_NAME = ชื่อหน่วยงานของเรา

จริงๆ ทั้ง LABEL และ ISSUER_NAME เราสามารถตั้งเป็นอะไรก็ได้นะครับ

จากตัวอย่างสตริงที่จะใช้สร้าง QR Code ของผมก็จะเป็น

1
otpauth://totp/www.unzeen.com?secret=DG4WCXVUVYENHLLS&issuer=2-Step-Login

เมื่อสร้างแล้วจะได้ QR Code ออกมาประมาณนี้

google-authenticator-2-step-verification

ทำการสแกน QR Code ที่ได้ เพื่อทำการเพิ่มข้อมูลลงในโปรแกรม Google Authenticator เมื่อเสร็จแล้วจะเห็นว่ามีรหัสของเราขึ้นมาแสดงที่หน้าของโปรแกรม Google Authenticator อย่างในรูป

google-authenticator-2-step-verification

ขั้นตอนสุดท้าย เขียนโปรแกรมเพื่อทำการตรวจสอบว่ารหัสที่ป้อนเข้ามาถูกต้องหรือไม่

1
2
3
4
5
6
7
8
9
10
11
12
<?php
include_once("lib/GoogleAuthenticator.php");
 
$g = new GoogleAuthenticator();
 
if ($g->checkCode("DG4WCXVUVYENHLLS",$_GET['code'])) {
    print "YES \n";   
} else {
    print "NO \n";
}
 
?>

google-authenticator-2-step-verification

อ้างอิง:
http://en.wikipedia.org/wiki/Google_Authenticator
https://github.com/chregu/GoogleAuthenticator.php
https://support.google.com/accounts/answer/1066447?hl=en

โดย LookHin ณ 16 October 2014 05:37 GMT

14 October 2014

LookHin

การตั้งเวลาของเครื่องเซิร์ฟเวอร์ CentOS 6.5

พอดีว่าผมกำลังจะทำระบบล๊อกอินในหน้าเว็บไซต์ให้เป็น 2 Step Verification แบบ Time-based One-time Password เลยต้องทำการกำหนดค่าเวลาบนเซิร์ฟเวอร์ให้ตรงกับ NTP Server เลยถือโอกาสเอามาเขียนเก็บไว้หน่อยเป็นบันทึกช่วยจำ โดยจะลองเปลี่ยนทั้งค่า Time Zone ลองตั้งค่าเวลาเอง และกำหนดให้เซิร์ฟเวอร์ใช้ค่าเวลาจาก NTP Server ส่วนเรื่องการทำ Time-based One-time Password ไว้คราวหน้าจะเขียนอีกรอบหนึ่ง

อย่างแรกทำการตรวจสอบก่อนว่าระบบของเราตั้ง Time Zone เป็นประเทศไทยแล้วหรือยัง ด้วยคำสั่ง

1
cat /etc/sysconfig/clock

จะเห็นว่า Time Zone ปัจจุบันของเราเป็น America/New_York ซึ่งจะทำให้เวลาไม่ตรงกับเวลาในประเทศไทย
centos-set-timezone-ntp

ถ้าหากยังไม่ใช่ Time Zone ของประเทศไทย ให้ทำการเปลี่ยนด้วยการแก้ไข /etc/sysconfig/clock ให้เป็น ZONE=”Asia/Bangkok”

1
nano /etc/sysconfig/clock

centos-set-timezone-ntp

จากนั้นทำการอัพเดท Time Zone ด้วยคำสั่ง

1
tzdata-update

และทำการตรวจสอบเวลาปัจจุบัน

1
date

centos-set-timezone-ntp

หากต้องการตั้งเวลาใหม่ ให้ใช้คำสั่ง

1
date MMDDhhmmCCYY.ss

โดยความหมายของตัวอักษรแต่ละตัวดังนี้ครับ MM = month, DD = day, hh = hour, mm = minute, CCYY = 4 digit year, ss = seconds

ตัวอย่าง หากเราต้องการแก้ไขวันเวลาให้เป็นวันที่ 11 October 2014 เวลา 10.10 ก็จะสามารถสั่งได้ดังนี้

1
date 101110102014.00

หรือจะใส่แบบนี้ก็ได้เช่นกัน

1
date -s "10:10:00 October 11, 2014"

centos-set-timezone-ntp

จากนั้นเรามาลองทำการตั้งเวลาของเครื่องโดยใช้ Network Time Protocol (NTP) กันต่อเลยครับ เริ่มจากติดตั้ง package ntp กันก่อน

1
yum install ntp

centos-set-timezone-ntp

จากนั้นสั่งสตาร์เซอร์วิสและกำหนดให้ ntpd ทำงานทุกครั้งที่เปิดเครื่อง

1
2
service ntpd start
chkconfig ntpd on

centos-set-timezone-ntp

เรียบร้อยครับ เท่านี้เครื่องของเราก็จะมีเวลาที่ตรงกับ NTP Server แล้วครับ

โดย LookHin ณ 14 October 2014 05:20 GMT

4 October 2014

Thep

Thanks

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

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

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

ช่วงที่ผ่านมา นอกจากงานที่ได้เขียน blog บันทึกมาเป็นระยะแล้ว ก็ยังมีงานแปล GNOME, Debian, Xfce ที่ยังคงทำเป็นระยะเช่นเคย โดยยังได้เข้าร่วม ทีมไทย ใน Translation Project เพิ่มเติมด้วย (เริ่มที่ leafpad ตัวเดียวก่อน เพื่อเรียนรู้ระบบ)

และในช่วงเดือนกันยายนที่ผ่านมา ผมก็ได้รับคำท้า IceBucketChallenge จากพี่โดมทาง FB โดยผมเลือกที่จะแปรคำท้าเป็น Iceweasel Challenge ด้วยการบริจาคแพตช์ให้ Firefox/Iceweasel ซึ่งผมได้เลือก Bug #425915 ว่าด้วยการวิเคราะห์ขอบเขตของคำไทยในข้อความทั่วไป ซึ่งจะส่งผลถึงการเลื่อนเคอร์เซอร์ทีละคำ, การเลือกคำด้วยดับเบิลคลิก, การส่งคำให้ระบบอำนวยความสะดวกแก่ผู้บกพร่องทางกายภาพ (accessibility) ฯลฯ ปรากฏว่าบั๊กนี้ไม่หมูอย่างที่คิดครับ นับแต่แพตช์แรกจนถึงวันนี้ก็ปรับแก้มาเรื่อย ๆ จนผ่านไป 1 เดือนก็ยังไม่แล้วเสร็จ แล้วผมค่อยเขียน blog เล่าในโอกาสต่อไปนะครับ

โดย Thep (noreply@blogger.com) ณ 4 October 2014 08:05 GMT

21 September 2014

Sothorn

การตั้งค่าต่างๆ บน CentOS 7

หมวดหมู่: 

เช่น hostname locale date time ฯลฯ

โดย sothorn ณ 21 September 2014 14:31 GMT

เปลี่ยน runlevel บน CentOS7 ด้วย systemd target

หมวดหมู่: 

ต้องการดูว่า ปัจจุบัน runlevel อะไร

$ systemctl get-default
graphical.target

หากต้องการเปลี่ยน runlevel ให้ใช้คำสั่ง

systemctl set-default name.target

โดยที่ name ดูได้จากตารางด้านล่าง

เช่นเปลี่ยนเป็น runlevel3

# systemctl set-default multi-user.target

 

หากต้องการเข้า rescue mode ในขณะที่ทำงานอยู่ ให้ใช้คำสั่ง

# systemctl rescue

 

Comparison of SysV Runlevels with systemd Targets

Runlevel Target Units Description
0 runlevel0.target,
poweroff.target
Shut down and power off the system.
1 runlevel1.target,
rescue.target
Set up a rescue shell.
2 runlevel2.target,
multi-user.target
Set up a non-graphical multi-user system.
3 runlevel3.target,
multi-user.target
Set up a non-graphical multi-user system.
4 runlevel4 .target,
multi-user.target
Set up a non-graphical multi-user system.
5 runlevel5.target,
graphical.target
Set up a graphical multi-user system.
6 runlevel6.target,
reboot.target
Shut down and reboot the system.

 

 

 

อ้างอิง : https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/index.html

โดย sothorn ณ 21 September 2014 13:31 GMT

2 September 2014

Thep

swath 0.5.3

swath 0.5.3 ออกแล้วเมื่อวานนี้ รุ่นนี้เป็นการปรับพจนานุกรมตามหลัง การอัปเดต TeX hyphenation pattern ซึ่งปรับตามพจนานุกรมของ LibThai 0.1.21 อีกทอดหนึ่ง แต่พร้อมกันนี้ก็มีการเปลี่ยนแปลงอย่างอื่นที่น่าสนใจด้วย

คุณ +Sorawee Porncharoenwase รายงานมาใน Google+ ส่วนตัวว่าพบบั๊ก 2 ตัวใน swath เมื่อใช้งานกับ plain text:

บั๊กแรกนั้น ความจริง swath จองที่ไว้สำหรับบรรทัดยาวถึง 2000 อักขระ ซึ่งข้อความตัวอย่างที่คุณ Sorawee ให้มาก็ไม่ได้เกินนั้น เมื่อตรวจสอบก็พบว่ามาจากโค้ดส่วนอ่าน-เขียน UTF-8 ที่จองบัฟเฟอร์ไว้รองรับแค่ 1 ไบต์ต่ออักขระ ในขณะที่ UTF-8 ต้องการถึง 6 ไบต์ต่ออักขระใน extreme case จึงได้จองเนื้อที่ไว้ให้เพียงพอ ก็แก้ปัญหาได้

บั๊กที่สอง มีวิธีแก้ได้สองวิธี คือเข้าไปล้วงในอัลกอริทึมตัดคำระดับล่างของ swath เลย หรือแก้ที่ตัวอ่าน token เพื่อให้ส่งเฉพาะภาษาไทยเข้าสู่อัลกอริทึมตัดคำเท่านั้น ผมเลือกอย่างหลัง ด้วยเหตุผลสองประการ:

  1. โค้ดระดับล่างของ swath นั้น เป็นโค้ดที่คนเขียน (ซึ่งไม่ใช่ผม) อ่านรู้เรื่องคนเดียว และไม่ได้ออกแบบให้รองรับการปรับเปลี่ยนอะไรมากนัก การเข้าไปแตะโค้ดส่วนนี้จึงเสี่ยงเกินไป
  2. ใน file filter ทั้งหลาย ทั้งสำหรับ LaTeX, HTML และ RTF ต่างก็ใช้วิธีส่งเฉพาะ token ภาษาไทยไปให้อัลกอริทึมตัดคำทั้งนั้น ในขณะที่ส่วนจัดการ plain text กลับส่งเข้าไปทั้งก้อนโดยไม่แยก การแก้ส่วนจัดการ plain text ให้ทำงานแบบเดียวกันจึงดูสมเหตุสมผล

และก่อนที่จะออก swath ในแต่ละรุ่น ผมพยายามจะทำความสะอาดโค้ดไปทีละนิด สำหรับรุ่นนี้ สิ่งที่ทำคือตัดโค้ดที่ไม่ได้ใช้งานทิ้ง ได้แก่โค้ดส่วนทำ shaping ภาษาไทยใน LaTeX filter ซึ่งไม่มีการเรียกใช้มานานมากแล้ว ตั้งแต่มี thailatex (ซึ่งปัจจุบันคือ babel-thai ใน CTAN) ที่รองรับการทำ shaping ผ่าน virtual font มาตั้งแต่ต้น เมื่อตัดโค้ดส่วนนี้ไป ก็ทำให้ขนาดของโปรแกรมที่ strip แล้วลดลงประมาณ 4 KiB

นอกจากนี้ ก็ได้ปรับข้อความใน man page นิดหน่อยด้วย หลังจากที่ thailatex เปลี่ยนเป็น babel-thai มาระยะหนึ่งแล้ว (ประกาศเมื่อปีกลาย) ก็กล่าวถึง babel-thai ให้เหมาะสม

อัปโหลดเข้า Debian Sid แล้วครับ คุณควรจะเจอแพกเกจใหม่ตั้งแต่เมื่อเช้าแล้วแหละ

โดย Thep (noreply@blogger.com) ณ 2 September 2014 07:10 GMT

23 August 2014

Udomsak

Docker Linux Container

You should to know what is or not about Docker.


https://news.ycombinator.com/item?id=8212908


Docker Release version 1.2  
https://blog.docker.com/2014/08/announcing-docker-1-2-0/



โดย udomsakc (noreply@blogger.com) ณ 23 August 2014 07:21 GMT

21 August 2014

Thep

LibThai 0.1.21

LibThai 0.1.21 ออกแล้ว โดยรุ่นนี้ นอกเหนือจากการปรับพจนานุกรมตัดคำตามปกติ ก็ยังมีการเพิ่มสมรรถนะของตัวตัดคำเล็กน้อยด้วย

ตอนที่ยกเครื่องตัวตัดคำของ LibThai เขียนใหม่เมื่อ 8 ปีที่แล้วนั้น (การประเมินผลขณะ merge เข้า trunk) ก็ได้คิดเผื่ออัลกอริทึมแบบอื่นไว้ขณะออกแบบเหมือนกัน กะว่าอาจมาปรับเพิ่มในอนาคต แต่ก็ไม่ได้กลับไปดู จนมาถูกกระตุ้นด้วยการเปิดไฟล์ HTML บางไฟล์ด้วย Firefox/Iceweasel แล้ว พบว่าใช้เวลานาน จึงได้เอาความคิดนี้มาปัดฝุ่นใหม่ โดยพยายาม refactor โค้ดเตรียมรองรับอัลกอริทึมอื่นไว้

และก็ได้คิดออกแบบอัลกอริทึมแบบ longest matching ดู โดยอาศัยโครงจากอัลกอริทึม maximal matching ปัจจุบัน แต่ขณะสำรวจและวิเคราะห์โค้ดเดิม ก็กลับเกิดไอเดียที่จะลดขั้นตอนของโค้ดเดิมขึ้นมาแทน

ผมใช้ callgrind วัดเวลาที่ใช้ในฟังก์ชันต่าง ๆ ก็พบว่าฟังก์ชันที่กินเวลามากที่สุดคือ brk_recover_try() ซึ่งใช้สำหรับหาจุด recover จากคำที่ไม่อยู่ในพจนานุกรม จึงพยายามมุ่งมาลดขั้นตอนในฟังก์ชันนี้

ผมมีสมมุติฐานมากมาย ตั้งแต่การลดการ assign การคัดลอก และการตรวจค่าเล็ก ๆ น้อย ๆ ที่ไม่จำเป็นออก ไปจนถึงการปรับกระบวนการคิดของอัลกอริทึม แล้วก็ต้องโยนทิ้งไปหลายเรื่อง เพราะบางเรื่องเอาเข้าจริงกลับทำให้ใช้เวลาเพิ่มขึ้น มีเพียงเรื่องเดียวที่ทำให้ลดเวลาได้อย่างจริงจัง คือการปรับวิธีตรวจสอบจุด recover จากการ match คล้ายการตัดคำปกติ มาเป็นการ match แบบละโมบ (greedy) โดยพยายาม match คำให้ได้มากคำที่สุดสำหรับแต่ละทางเลือกที่หยิบออกมา ซึ่งมีผลทำให้พบคำตอบได้อย่างรวดเร็วในกรณีที่จุดนั้นสามารถ recover ได้ อีกทั้งไม่ต้องไปเสียเวลาเลือกทางเลือกมาพิจารณาให้มากเกินไป เพราะจุดประสงค์ของการ recover ก็แค่พิจารณาว่าแต่ละจุดสามารถ recover จาก error ได้หรือไม่เท่านั้น ไม่ได้ต้องการ solution ที่สวยงามว่า recover แล้วต้องได้การตัดคำที่ดีที่สุด

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

แนวคิดอื่นที่ยังทำไม่สำเร็จก็เช่น ลดจำนวนการ recover ลง, ลดขนาดของ search space ลง, ทำ cut-off แต่ไว้ค่อยคิดต่อไป รวมถึงการสร้างอัลกอริทึมแบบอื่นด้วย แต่ตอนนี้ขอออกรุ่นที่ปรับสมรรถนะเล็กน้อยนี้ก่อน ให้ทันใช้ใน Jessie ที่กำลังจะ freeze ในเดือนตุลานี้ โดยถือหลัก ออกเนิ่น ๆ ออกถี่ ๆ (release early, release often) เพื่อให้ตัวไลบรารีถูกทดสอบแต่เนิ่น ๆ ด้วย

สำหรับสมรรถนะตัวตัดคำที่เพิ่มขึ้นในรุ่นนี้ วัดเวลาจากกรณีทดสอบโดยใช้ callgrind:

คิดเป็นเวลาที่ลดลง = 2.50%

แต่นี่นับรวมทั้งหมดตั้งแต่เปิดพจนานุกรม, ตัดคำ, ปิดพจนานุกรม ซึ่งเวลาที่ใช้เกี่ยวกับพจนานุกรมนับเป็นสัดส่วนที่มากเอาการอยู่ และเป็น fixed cost ที่เกิดเพียงครั้งเดียวเท่านั้นตลอดโพรเซสที่เรียกตัวตัดคำของ libthai ดังนั้น ผมจึงวัดเวลาที่ใช้ในการเปิด-ปิดพจนานุกรมมาหักลบใหม่:

เมื่อหักลบเวลาเปิด-ปิดพจนานุกรม จะเหลือเวลาสำหรับช่วงตัดคำจริง ๆ คือ:

คิดเป็นเวลาที่ลดลง = 7.93%

หรืออัตราเร็วที่เพิ่มขึ้น = 1 / (1 - 0.0793) - 1 = 0.0861 หรือ 8.61%

โดย Thep (noreply@blogger.com) ณ 21 August 2014 10:07 GMT

6 August 2014

Udomsak

บันทึกส่วนตัว

ปูมบันทึก บันทึกตามเวลาโลก


วันที่  6  เดือน สิงหาคม พุทธศักราช 2557  เวลาประมาณ สี่ทุ่มครึ่ง เปลียน Status relation ship บน facebook  เป็น


In Reletionship  กับ  "ใครสักคน"  ที่ไม่มีใครรู้จักหน้าตา  วาเป็นใครที่ไหน ยังไง


มาพร้อมกับ  33 Like


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


ทำวันนี้ให้ดีที่สุด  :)    

#me  





โดย udomsakc (noreply@blogger.com) ณ 6 August 2014 16:56 GMT

Review โทรศัพท์ AIS Lava ( iris 456 ) ราคาเครื่องละ 3,9xx บาท ( Q2 - 2014 )

AIS ออกโทรศัพท์ ราคาเบา Spec ถูกใจ  เลยเอามาเขียน Review สักหน่อยเผือวันหน้าจะมีใคร ให้มือถือมาทดสอบอะไรกับเขาบ้าง  

  • ราคา 3 พันกว่า เกือบสี่พัน  
  • ถ้าเทียบกับ Zen phone 4  ซึ่งราคาพอๆ กัน แต่ Zen phone 4  สเปคเทพกว่า อย่างไรก็ตาม ผมมันประเภทใช้ต่อ Net บ่อย หาโอกาส Charge ยาก แบตฯ ของ Zen phone 4  ให้ กระแสมาน้อยกว่า ถึงจะให้มาสองก้อนก็เหอะ คงลำบากไปหน่อย ถ้าจะพกสองก้อนติดตัว ผมจึงเลือก  AIS Lava แทน  
  • สเปค CPU
    • AIS Lava  
      • ARM - Core 7  2 Core 
    • Asus Zen phone 4
      • Intel Atom 
  • RAM มีเยอะก็ดี เปิด App ได้เยอะขึ้น เล่นเกมส์ได้ ลื่นขึ้น  เล่นแอพฯ ได้ดี 
    • AIS Lava
      • 512M
    • Asus Zen phone 4 
      • จำไม่ได้ 
  • Sensor 
    • AIS Lava  ให้มา 3 เซนเซอร์
      • วัดแสง  ( Light ) 
      • ตรวจจับ การเชื่อมต่อ ( Proximity ) 
      • ตรวจจับ อัตราเร่ง ( Accelerometer )
  • กล้อง
    • AIS Lava 
      • หน้า 3 เมกกะพิกเซล
      • หลัง 5 เมกกะพิกเซล 
  • ความละเอียดจอ
    • AIS Lava  จอจะยาวกว่า Asus Zenphone 4  ผมจึงเลือก AIS Lava เพราะ จอเล็กต่อให้เล็กกว่ากันไม่ถึงนิ้ว แต่มันชวยให้ ผู้ชราภาพแบบผมใช้งาน ได้ดีขึ้น 
      • 854x480 พิกเซล
  • SIM โทรศัพท์ สนับสนุน 2 ซิม  โดยสนับสนุน Micro SIM ด้วย มีช่องให้ตรงกลาง ด้านหลัง แบต 

รายละเอียดอื่นๆ  ดูได้จากภาพ แนบนะครับ 

ข้อดี
  • ราคาถูก
  • กล้อง focus ไว และชัด  ถ้าเทียบกับ iMobile 7.3 
  • ใช้งานได้ดี ทั้ง Wifi และ A-GPS  
  • พอใช้งานได้ดี  ทั้งเล่นเกมส์ , ถ่ายรูป
  • เปิดเครื่องได้เร็วดี 
  • ฝาหลังเป็นยาง  ดีสำหรับ จอมซุ่มซ่ามแบบผม ที่ชอบทำ โทรศัพท์ตกประจำ จับนุ่มมือ ตกไม่ถลอกงาย ไม่ขี่เหร่ไว
  • บางสีสวย ( ดำ ) ดูแล้วเหมือนถือ โทรศัพท์ High-end  หรือ Feature phone ดีๆ  มั่นใจขึ้นมาหน่อย เวลาถืออยู่ใน รถไฟฟ้า  
  • มี Service ของ AIS Application มาให้เลย จะตรวจสอบ ค่าใช้จ่าย , โปรโมชั่น , Cloud ทำได้จาก Application เลย ( กรณีใช้ SIM ของ AIS และ ไม่ได้เชื่อมต่อ Wi-fi ไม่งั้น  App จะให้ลงทะเบียนใหม่ ) 
ข้อเสีย
  • สาย Charge พังไวมาก ผมกระแทกขั้วแบต นิดหน่อย เนื่องจากนอนทับ ปรากฏว่า ไฟไม่เข้า ต้องไปซ์้อ สาย Charge USB อื่น ( ของ Samsung ) มาใช้แทน  ราคา 150บาท 
  • ถ้าต้องการต่อ Internet และ มีการใช้งานอย่างราบรื่น ให้เปิด 3G ทิ้งเอาไว้ แล้ว ค่อยเปิด หรือ ปิด Wi-fi ตามต้องการ จึงจะ switch mode data connect  ไม่งั้น เครื่อง งง เปิดๆ ปิดๆ เผลอๆ ไม่ยอมต่อข้อมูลให้ 
  • Wi-fi ถ้าปิดแล้วเปิดใหม่ ใช้เวลาอยู่ เกือบ 5 นาที หรือ 10 นาที ในบางครั้ง จึงจะเชื่อมต่่อ Internet ได้ ก็ต้องใจเย็นหน่อย  กรณี เปิด 3G อยู่ 
  • เปิดกับ Facebook messenger  Hang หรือ Freeze บ่อย 

หน้าจอ




Application ที่แถมมาให้



Spec Kernel  Android 4.2 



Sensor ที่สนับสนุน

สเปคโดยรวมทั้งหมด


ตั้งค่าการเชื่อมต่อข้อมูล 



กำหนดค่าการใช้ข้อมูล



ภาษา



 





โดย udomsakc (noreply@blogger.com) ณ 6 August 2014 09:37 GMT

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

OpenStack ตอนที่ 2

เนื่องจากรอ Download configuration software  เขียนไว้    

ก่อนที่จะมาเริ่ม ตอนที่ได้บอกเอาไว้ เรื่องการใช้งาน OpenStack + Docker + OpenVswitch ตามที่ได้บอกเอาไว้เมื่อตอนก่อน  ( OpenStack ตอนที่ 1 )  มาว่ากันเรื่องของ Virtualization กันก่อนเพื่อความเข้าใจ ในระบบก่อนที่จะไปลงลึกในละเอียด

คำว่า VM  ที่เรารู้จักกัน ว่าไปแล้วก็คือ Hardware Virtualization  ( ไม่ใช่  Visualization ) ได้ โดยได้แบ่งออกเป็น 3 ประเภทหลักใหญ่ๆ 




http://cloudvirtualizationspecialist.com/wp-content/uploads/2014/02/virtual.jpg


KVM ( Kernel Base Virtual Machine )


จะแตกต่างออกไป  โดยจะมีบางส่วนเท่านั้นที่ทำหน้าที่ จำลองการทำงาน อาทิเช่น  hardware visualization processor  นอกจากนั้นจะมีบางส่วนทำงานคล้าย กับ Para Virtualization อาทิการ Access disk โดยทำผ่านสิ่งที่เรียกว่า VirtIO เป็นต้น ดูรายละเอียด เพิ่มเติม ได้ที่นี่ 


( รูปจาก http://www.linuxthoughts.com/wp-content/uploads/2013/07/KVM_architecture-.png )

นอกเหนือจากนั้นแล้ว เนื่องจากเทคโนโยลี ทาง Hardware และ Software มีความก้าวหน้าไปมาก ดังนั้น การทำอะไร โดยใช้ Hardware ทั้งหมดก็เป็นอะไรที่ใหญ่โตเกินไป จึงมีการจำลองการทำงาน ของระบบ อื่นๆ มากขึ้นจากเดิมที่ทำงาน แบบ Hardware   

ถ้าดูจากเอกสารส่วนใหญ่ใน Internet จะพูดถึงพวกนี้ว่าเป็น  Platform Virtualization

และ เนื่องจาก Overhead ในการจำลองทำงานของ Full Virtualization และ Para Virtualization นั้นมีมาก ทั้ง Cycle ในการประมวลผล และ Resource อื่นๆ  จึงมีทางเลือกของการใช้งาน  อื่นมาแทนที่นั่นคือ 

Operating System Virtualization   ผมยกตัวอย่าง มาแค่  2 - 3 ตัว  ซึ่งผมจะ focus เฉพาะ Docker  (  Container Linux ) 


ข้อได้เปรียบของ Docker คือ ขนาดเล็ก และ ยุ่งยากน้อยกว่า Virtualization ที่ได้พูดถึงมา นอกจากนั้นยัง สามารถทำ Version Control  ได้ด้วย มีการแบ่ง segment ของ Process โดยแต่ละ Environment  จะมีส่วนการทำงานเป็นของตัวเอง โดยเฉพาะ  ในเครื่องที่เป็น Hosting สามารถมี VM ภายในได้เป็นจำนวนมาก  ขณะที่ เครื่อง Host ที่ติดตั้ง Full หรือ Para Virtualization. จะมีได้อย่างมากสุดก็ ไม่เกิน 5 ตัว  ซึ่งก็ลดทอนด้วยประสิทธิภาพ และ จำนวน RAM ที่มีอยู่   เช่น  เครื่องโน๊ตบุคผม Intel Core i-5  , RAM 12GB.  แค่  Guest-OS ทำงานพร้อมกัน 5 ตัวก็เป็นเรื่องที่ลำบาก   

ขณะที่การทำงานของ Software Service นั้น Developer และ  End-User สนใจแค่  Service ที่ให้บริการ ซึงถ้าเป็น Developer ก็สนใจแค  Space สำหรับทำการพัฒนาโปรแกรม , Dependencies , etc..   ขณะที่  End-User ก็สนใจเพียงแค่ Service ที่ให้บริการเขาเท่านั้น  ดังนั้น Full หรือ Para Virtualization นั้นสำคัญ หรือ จำเป็น สำหรับนักพัฒนา และ End-user ที่ต้องใช้  ??  :)  







โดย udomsakc (noreply@blogger.com) ณ 25 July 2014 07:00 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

22 July 2014

Udomsak

OpenStack ตอนที่ 1

OpenStack  - Opensource Cloud management

เขียนทิ้งเอาไว้  จากการสังเกตุ มีการใช้ Open Stack กันมากขึ้น เลยคิดว่าเขียนเก็บเอาไว้เรื่อง Openstack จะดีกว่า  โดย Series ในการเขียนนี้จะครอบคลุมไปถึงเรื่อง  Configuration management  ซึ่งผมจะใช้ Chef และ SaltStack เป็นหลัก  และ ผมจะเน้นการใช้งานกับ Docker  

OpenStack คือ ซอฟต์แวร์ที่ใช้บริหารจัดการ Cloud  ( Management )  ซึ่งส่วนตัวนิยามเองว่า มันจะเป็นอะไรที่มากกว่า นิยาม ของ Orchestration อาทิ  Ubuntu้ MaaS ดังนั้นจะสรุปพอให้เข้าใจได้ง่ายๆ 

เคยมีคนแย้งผม เช่นกันว่า  งาน DevOps ไม่เห็นเกี่ยวกับงาน System Engineer หรือ System Administrator แต่อย่างใดเลย ผมเองกลับมีความเห็นว่า เกี่ยวข้องกันตรงๆ เลยครับ ยิ่ง  System Engineer เพิ่ม Skill  DevOps เข้าไปแล้ว การ Deployment หรือ การ Setup ระบบก็สามารถทำให้บริการ ออกสู่ผู้ใช้ปลายทางได้เร็วขึ้น ในทีนี้ กล่าวถึง  ฝ่าย Development , Marketing etc.  ยิ่งเรา Deploy service เราออกไปเร็วเท่าไหร่ บริการของเราก็เร็วมากขึ้นเท่านั้น  System Automation จะเข้ามาทำให้ ชีวิตเราสบายมากขึ้น   ลดปัญหา conflict ระหว่าง team ลงไป งานเดินเร็วขึ้น , เราแค่เตรียม Infrastructure , เตรียม Service ที่ต้องการ ส่วนอื่นแค่มาขอใช้งาน เราคอย Monitoring และ report สำหรับ Capacity planning ไป.

สรุปง่ายๆ อีกเช่นกัน มันลดขั้นตอนการทำงานและความเร็วในการทำงานที่มากขึ้น  ลดปริมาณงานที่เป็น Routine ลง  **แนวคิดนี คนขี้เกียจแบบผมชอบมาก  5555+   

OpenStack เอง Cisco ก็ให้การสนับสนุนนะครับ เท่าที่ผมจำได้  โดยได้รวมเข้ากับ UCS suite ซึ่งปัจจุบันนี้ผมไม่แน่ใจว่า มีการบริหารจัดการ หรือ บริหาร Product Line ยังไง  เนื่องจากไม่ได้ตามข่าวในส่วนของุ  UCS มา
เกือบปีได้แล้ว  

รูปภาพที่ได้นำมาใช้ เป็นของ OpenStack website นะครับ :) 

อย่างไรก็ตามส่วนของโครงการนี้ที่ผมสนใจคือ  DNS as a Service ซึ่งขณะนี้ีมีการพัฒนาขึ้นมาเรียกว่า https://wiki.openstack.org/wiki/Designate อาจจะงง นะครับ มันคือ การเรียกใช้  Name Service โดยการเรียกใช้ผ่าน API  ซึ่งของเดิมจะทำ โดยวิธีการใช้ขั้นตอนการทำงานบบ Semi-Auto คือ มีข้นตอนที่ต้องบริหารจัดการเอง ผ่านขั้นตอนของ System Administrator  

แนวคิดนี้มาจาก Power DNS  ใครสนใจ ลองไปค้นเพิ่มเติมดูได้นะครับ  

เอาล่ะเกริ่นเริ่มต้นกันแบบพื้นฐาน ไม่มีอะไรเลย ปัจจุบัน OpenStack  คือ IceHouse และ Juno จะออกประมาณเดือน ตุลาคมถัดไป  

Release ของ  OpenStack 

โครงสร้างของ Open Stack แสดงออกมาได้ดังภาพ 







Object แต่ละประเภท 



ส่วนของการควบคุม  Hypervisor เรียกว่า ( Openstack Compute ) และมีชือเรียก Module นี้ว่า Nova
ส่วนให้บริการ Image สำหรับทำการ เรียกว่า Glance  


ส่วนของการจัดการ Network ( Openstack Networking ) เรียกว่า Neutron ใช้สำหรับสร้าง Network Topology  สนับสนุน Network เลเยอร์สอง , เลเยอร์สาม ( L2, L3 ) , VLAN  , QoS , โหลดบาลานซ์ , VPN , Firewall  และ เซอร์วิสอื่นๆ ที่เกี่ยวข้องกับ เนตเวิร์ก 

รายละเอียดอื่นๆ เกี่ยวกับ Neutorn



ส่วนจัดการ การเก็บข้อมูล , Disk ( OpenStack Storing ) เรียกว่า 
  • Object Storage  เรียก  Swift  มี API ให้เรียกใช้ , สามารถ extend raw disk  โดยที่่ไม่ต้องสนใจกับ Layer ทีอยู่ด้านบน ( ไฟล์ , รูปภาพ , อะไรก็ตาม )      
  • Block Storage เรียก Cinder   ความหมายตรงตัวเลย เรียกใช้บริการนี้ เช่น  iSCSI  เป็นต้น 

เนื่องจาก Architecture ของ Open Stack ถูกออกแบบมาเป็นลักษณะของ Module และ เชื่อมต่อกันโดย API ดังนั้น นอกจากระบบหลักของ Openstack ดังที่กล่าวมาแล้วจะมี ส่วนของ โปรแกรมอื่นๆ ที่เกี่ยวข้องเพื่อให้บริการในการให้บริการ   Cloud ครบถ้วนสมบูรณ์สำหรับให้บริการดังต่อไปนี้ 

 
ในตอนต่อไป ผมจะเขียน Blog เกี่ยวกับ OpenStack กับ Docker ( Container VM ) และ การ Deploy Software อื่นๆ เช่น Chef และ SaltStack และ เนื่องจากผมต้องใช้ฟังก์ชั่นของ NetFlow  ,Software Define Network หรือ  SDN  ผมจะต่อ Stack นี้เข้ากับ OpenVSwitch โปรดติดตามตอนต่อไป  


โดย udomsakc (noreply@blogger.com) ณ 22 July 2014 12:02 GMT

21 July 2014

Udomsak

ทวนเรื่อง Security : Episode1 Install Pentest tool

เดิมที Notebook ที่ใช้อยู่ เป็น  Intel Core-i5 ติดตั้ง Window 7 Home premium +  Ubuntu 13.10  ทีนี้อยากมาทวนเรื่อง security  กันหน่อย ก็พบปัญหาว่า  ถึงจะดึงเอา package ของ Kali มาได้ ( Non-official package ) และ ทำการติดตั้งลง Ubuntu 13.10  ก็อาจทำให้ ระบบพังได้ เนื่องจากเครื่องที่ใช้อยู่เป็น Daily-use  จึงไม่ขอเสี่ยง เพราะ เคยพังมาแล้ว  

ประเด็นถัดมา ติดตั้ง เป็้น VM เสียสิ virtualbox ก็มี โอเคครับ แต่.. ประสิทธิภาพและการใช้งานจริง พอแค่สำหรับ In-house training , basic testing ( pre-usage, basic audit )   ไม่เหมาะสำหรับ เอามาใช้ทำ pentest จริง เพราะมันอืด และ ช้า  เลยยกเลิกไป

ดังนั้นทางเลือกสุดท้าย ติดตั้ง ใหม่เลย นี่แหละทางแก้ ผลของการเลือกสุดท้ายมาอยู่ท่  Backbox Linux แทน Kali ( 1.0.7 )  เนื่องจากติดปัญหา Installer เจอ Layout disk ของผมเข้าไป ถึงกับ ทำงานไม่ได้ ( ไม่ยอม format และ accept Disk write partition )  เลยต้องมาใช้  Backbox แทน

หลังจากได้ เครื่องมือแล้ว ตอนต่อไป เรื่อง SQL-Injection  ครับ







Tips: 

+  ก่อนทำการติดตั้ง ผมทำ Recovery  USB Flash drive boot เตรียมเอาไว้ เผื่อถ้า MBR พัง ผมยังใช้  USB bypass การ boot ได้

+  ตอนผมติดตั้ง ไม่ได้มีการสั่งให้ทำการติดตั้ง Boot loader  และ / หรือ Set Active partition ใหม่ ซึ่งของเดิมจะเป็น Window 7 ที่ใช้อยู่

+  จากนั้นผม Boot เข้าไปใน Window ตามปกติ (  MBR ยังไม่เปลียน )  / ถ้าเปลียนก็ให้ช้ usb recovery boot จาก Tips แรก boot เข้า Window ไป เพิ่ม boot เมนู ใหม่ Reboot อีกครั้ง  ( ตอนนี้ ค่า MBR ยังไม่เปลี่ยนนะครับ ) ดังน้นจึงยังไม่มีผลอะไร  ( ยังมองไม่เห็น backbox ที่ติดตั้งไปใหม่ )

+  Boot เข้า Ubuntu  จากนั้น ทำการ Mount  Partition ที่เพิ่งติดตั้งเข้าไป  ทำการ mount เพื่อ  install grub ใหม่  ด้วยคำสั่ง

จากนั้นทำการ chroot  /mnt   ->   root#  chroot /mnt 
ทำการรันคำสั่ง  grub-install /dev/sda       
ทำการรันคำสั่ง  grub-install --recheck  /dev/sda
ทำการรันคำสั่ง  update-grub /dev/sda 

จบ ทำการ reboot ทดสอบการ access ระบบปฏิัติบัติการที่มีอยู 

**** ขั้นตอนการทำงานจะจบตรงนี้ก็ได้ แต่จะได้ Boot เมนู ซ้อน Boot เมนู ******

ฺBoot เข้าวินโดว์์  copy  /boot/grub/boot.img จาก partition ของ Backbox ( ตัวที่เพิ่งสั่งทำการติดตั้ง ตามคำสังข้างบน )  ไป replace แทนตัวเดิม  (   c:\boot\boot.img  )  

เปิดโปรแกรม  EasyBCDEdit  สงทำการ repair ฺWindow7 Boot menu  เปิดโปรแกรม Visual BCDedit ทำการแก้ไขเมนู

ทำการ reboot ใหม่ จะได้ Boot เมนู Window 7 จบ

หมายเหตุ หน้าจอ Boot  Linux จะไปโผล่ที่ Grub แทน ( Backbox Linux )  เราต้องแก้ไข ไฟล์ grub.cfg ใหม่ เพื่อเพิ่ม option สำหรับ ระบบเดิมของเรา ( Linux เก่าที่มีอยู่ )








โดย udomsakc (noreply@blogger.com) ณ 21 July 2014 16:18 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

17 July 2014

Sothorn

CentOS 7 กับบางอย่างที่เปลี่ยนไป

หมวดหมู่: 

ผมยังไม่ได้เล่น CentOS 7 เนื่องจากอินเทอร์เน็ต 384k อาศัยอ่านเอาตามเวบต่างๆ เจอความเปลี่ยนแปลงจาก CentOS 6.5 เลยเอามาบันทึกไว้ก่อน

# chkconfig httpd on  --> # systemctl enable httpd.service

# service httpd start --> # systemctl start httpd.service

# service httpd restart --> # systemctl restart httpd.service

 

 

โดย sothorn ณ 17 July 2014 05:37 GMT

มีอะไรใหม่ใน CentOS 7

CentOS 7 มีการเปลี่ยนแปลงใหม่ๆ ดังนี้

  • Kernel updated to 3.10.0
  • Support for Linux Containers
  • Open VMware Tools and 3D graphics drivers out of the box
  • OpenJDK-7 as default JDK
  • In Place Upgrade from 6.5 to 7.0 (as already mentioned)
  • LVM-snapshots with ext4 and XFS
  • Switch to systemd, firewalld and GRUB2
  • XFS as default file system
  • iSCSI and FCoE in kernel space
  • Support for PTPv2
  • Support for 40G Ethernet Cards
  • Supports installations in UEFI Secure Boot mode on compatible hardware

 

โดย sothorn ณ 17 July 2014 00:27 GMT