Planet TLWG

Subscribe to Planet TLWG feed
Planet TLWG - http://debianclub.org/planet-tlwg
Updated: 2 hours 26 min ago

Kitt: Google Slides

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

Kitt: 순두부찌개

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

Kitt: Coffee

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

Kitt: KAIST/IPFGRU 2012

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

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

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

Kitt: ม.๗

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

Kitt: when it happens, it happens ..

18 October, 2014 - 00:17
เมื่อคราวปี 49 “เคย” มีเหตุมาแล้ว มันก็เลยกลายเป็นตำนานต่อๆ กันมา

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

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

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

16 October, 2014 - 13:37

บทความนี้จะเป็นการแนะนำการใช้งาน 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

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

เขียนโปรแกรมเพื่อสร้าง 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;
 
?>

นำค่า 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 ออกมาประมาณนี้

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

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

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";
}
 
?>

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

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

14 October, 2014 - 13:20

พอดีว่าผมกำลังจะทำระบบล๊อกอินในหน้าเว็บไซต์ให้เป็น 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 ซึ่งจะทำให้เวลาไม่ตรงกับเวลาในประเทศไทย

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

1
nano /etc/sysconfig/clock

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

1
tzdata-update

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

1
date

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

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"

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

1
yum install ntp

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

1
2
service ntpd start
chkconfig ntpd on

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

Thep: Thanks

4 October, 2014 - 16:05

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

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

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

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

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

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

21 September, 2014 - 22:31
AttachmentSize การตั้งค่าต่างๆ บน CentOS 796.28 KB หมวดหมู่: CentOS

เช่น hostname locale date time ฯลฯ

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

21 September, 2014 - 21:31
หมวดหมู่: CentOS

ต้องการดูว่า ปัจจุบัน 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

Kitt: The 10-Books Quest

9 September, 2014 - 10:10
พี่ 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 […]

Thep: swath 0.5.3

2 September, 2014 - 15:10

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

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

  • เมื่อป้อนข้อความ UTF-8 ยาว ๆ ผ่านคำสั่ง swath -u u,u ปรากฏว่าข้อความจะถูกตัดท้ายก่อนจบ
  • swath ทะลึ่งไปแทรกรหัสตัดคำในภาษาอังกฤษและหลังเครื่องหมายวรรคตอนบางตัวในโซนภาษาไทยด้วย เช่น:
    hello (|world)
    สวัสดี (|ครับ|)
    

บั๊กแรกนั้น ความจริง 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 มาตั้งแต่ต้น เมื่อตัดโค้ดส่วนนี้ไป ก็ทำให้ขนาดของโปรแกรมลดลง 4.1 KiB

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

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

Kitt: Migrate to MariaDB

1 September, 2014 - 23:42
Just drop a note that I’ve just migrated from Percona to Maria DB. See if it goes well ..

Udomsak: Docker Linux Container

23 August, 2014 - 15:21
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/



My site Article and Topic

Thep: LibThai 0.1.21

21 August, 2014 - 18:07

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:

  • ก่อนปรับ: 48,094,350
  • หลังปรับ: 46,893,901

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

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

  • เฉพาะเปิด-ปิดพจนานุกรม: 32,961,393

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

  • ก่อนปรับ: 15,132,957
  • หลังปรับ: 13,932,508

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

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

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

7 August, 2014 - 00:56
ปูมบันทึก บันทึกตามเวลาโลก


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


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


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


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


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

#me  





My site Article and Topic

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

6 August, 2014 - 17:37
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 ที่สนับสนุน

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

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


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


ภาษา


 




My site Article and Topic

Pages

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้