Planet TLWG

Syndicate content
Planet TLWG - http://linux.thai.net/planet
Updated: 33 min 33 sec ago

Udomsak: ปรับแต่ง Openstack บน Docker

19 July, 2015 - 04:11
แม้อาจไม่ใช่ priority หลัก ยังคงคั่งค้างกับการหา Panel สำหรับบริหารจัดการกับ Amazon web-service. จากปัญหาทีเกิดขึ้นกับ Blog ก่อนหน้า.

หลังจากดูหนังเสร็จ ก็เลยมานั่งทำ Openstack ติดตั้งเฉพาะส่วนที่จะใช้งาน  บน Docker เผื่อได้ใช้งานวันหลัง ได้ผลออกมาตามนี้  จริงๆ Amazon เองก็มี เครื่องมือชื่อว่า Amazon cloud formation แต่ที่ทดลองทำดู เผื่อเห็น feature อะไรเพิ่มเติม จะนำมาใช้ในงานได้

ผมติดตั้งแค่

  • nova-compute 
  • nova-ec2-api
  • keystone
  • openstack-dashboard
  • ดาต้าเบสผมใช้ sqlite.
       
ทั้งหมดยัดใส่ใน docker วันหลังค่อยทำต่อ :)






Configuration ผมข้ามไปในส่วนของ EC2 configuration. 



My site Article and Topic

Udomsak: OpenNebula - Cloud orchestration.

18 July, 2015 - 20:45
พอดีกำลังหาเครื่องมือสำหรับช่วยงาน  ทำให้การ deploy ทำได้โดยง่าย.  โดยทำงานกับ Amazon cloud เป็นหลัก รวมถึงการ deploy ระบบ.  หลังจากที่ได้ทดลองใช้ สักพัก โดยมีตัวทดสอบดังนี้

  • OpenNebula
  • Theforeman
  • Apache CloudStack 
มีข้อสังเกตุตามนี้ 
  • Theforeman 
    •  เป็น Tool ที่สามารถทำ Orchestration Cloud ได้ 
    • สนับสนุน Amazon EC2 
    • สามารถทำการ Provision  ได้ด้วยโดย Support configuration management หลายตัวเช่น 
      • Puppet ( default )
      • Chef ( plugin )
      • Salt-stack  

        แต่เนื่องจากหลังจากทดลอง  ใช้งานแล้ว ยังพบกับปัญหาเรื่อง การทำงาน ยังไม่ค่อยสะดวกเท่าที่ควร  และ ยังมี bug ในบางจุดอยู่  เช่น
      •  การโหลดข้อมูลจาก EC2  ในส่วนของ Image ไม่ได้
      • ช้า
      • การ setup deploy template ยังคงมีความยุ่งยาก  ฯลฯ  เลยหยุดเอาไว้ก่อน
  • Open Nebula  ที่ได้ถูกซื้อไปโดย VMware เมื่อปีก่อนๆ  
    • Support Amazon EC2 
    •  ติดตั้งง่าย ไม่ต้อง Config  มาก 
    • ทำงานได้เร็ว 
    •  ติดปัญหา ในส่วนของ  Amazon EC2  ที่การ setup Image ทำได้ไม่ง่ายนัก  
      เลยตัดสินใจพับไป  เนื่องจากไม่อยากเสียเวลามาก และ คิดว่าคนอื่น ถ้าจะเรียนรู้การใช้งาน  ควรจะทำได้ง่าย 


การติดตั้ง  Open Nebula 
  • Support Ubuntu 14.04 ( Trusty ) 
  1. sudo apt-get install -y wget 
  2. wget -q -O- http://downloads.opennebula.org/repo/Debian/repo.key | apt-key add -
  3. echo "deb http://downloads.opennebula.org/repo/4.12/Ubuntu/14.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list
  4. apt-get upate && apt-get install -y opennebula opennebula-sunstone 
  5. sudo mkdir /var/run/one /var/lock/one 
  6. chown -Rv oneadmin:oneadmin /var/run/one 
  7. chown -Rv oneadmin:oneadmin /var/lock/one 
  8. สั่ง Start one service  ตัวนี้จะเป็น  IPC  service  ประมาณ middle-ware สำหรับ การทำงานกับ Open Nebula  
    1. su  -c 'one start '  oneadmin 
  9. ดู password ที่ package ที่  Package manager ทำให้เรา จดเอาไว้  จะเอาไปใส่ใน หน้า login อีกที 
    1. cat /home/oneadmin/.one/auth   
  10. /etc/init.d/opennebula-sunstone
  11. เปิด browser ให้ชี้ไปที่   http://localhost:9869   

หน้าแรก

User configuration

หา plugin หรือ ระบบเสริม ให้ทำงานได้หลากหลายมากขึ้น เรียกว่า  Market place มีทั้ง ฟรี และ ไม่ฟรี ส่วนใหญ่ ฟรี




กำหนด Group ได้  



DataStores เอาไว้เก็บ Image  concept เดียวกับ  OpenStack Glance 

กำหนด Access Control ได้  

สรุปถ้าเอาไปทำงานกับ VMware ประมาณ Dashboard front-end กับ VMware vCenter หรือ Vcloud จะเหมาะมาก   




My site Article and Topic

Udomsak: ทดสอบ Font. THSarabunNew จาก SIPA

11 July, 2015 - 18:04
ทดสอบ

แบบ  ใหญ่ที่สุด
แบบ  ใหญ่
แบบ ปกติ


ทำการทดสอบ Add font THSarabunNew  จาก SIPA เป็นแบบ TrueType font.  ดาวน์โหลดได้จากที่ ลิงค์นี้   :  http://www.f0nt.com/release/th-sarabun-new/

Openstack: โอเพ่นแสตค
Opensource:  โอเพ่นซอร์ส

ทดสอบการติดตั้ง font สำหรับภาษาไทย เพื่อการอ่านที่ง่ายขึ้น

เทียบกับ ของเดิม "Helvetica"




My site Article and Topic

Udomsak: California Calendar application on Fedora 22

10 July, 2015 - 10:23
On Fedora core 22  , very cool application named 'california'.  

After i'm sick and my phone clock was wrong make me terrible and guilty with miss meeting and i think must have backup of calendar notification.  After i see my date showing on notebook and it show 'No event' but no input for event.  Ahmm..   Think  Gnome can help me.   :) 


Ok ,  I dig to Fedora application can complete mind and now i found  application named 'California' i'm choose and installed.  



Click install and wait then i got it My calendar on desktop. 
     
My site Article and Topic

Udomsak: Docker setting on fedora 22 and Virtualization note

10 July, 2015 - 00:05
Note work  - Fedora 22 docker for non-root access. 

After lose my  Ubuntu 13.10 install on my laptop i decide to install  Fedora core 22 instead. Setup  docker for non-root access.   I note for my work  may advantage for other.  


udomsak$  sudo dnf  install -y docker
udomsak$  sudo usermod -aG  dockerroot  { username } 
udomsak$  sudo chown  root:dockerroot  /var/run/docker.sock 

udomsak$docker iamges  




Volume mount:  

udomsak$  sudo setenforce 0  

before  do docker mount otherwise you will get 'Permission denied'  on Fedora22  after mount volume. 

For reason you have problem with after docker exit  you will lose you work and data from containers run. you can do docker commit.

Prevent lazy and forgot commit you docker image container that result on lose data. you can use this tool  docker-autocommit - https://github.com/rcmorano/docker-autocommit


Ubuntu Cloud Image: 

My work  company we base on Ubuntu but i have some reason that need to install Fedora core 22 instead  Ubuntu base but for compatible work i still need Ubuntu. 

http://cloud-images.ubuntu.com/releases/15.04/release/

Vagrant with Fedora 22 have default package with vagrant version 1.7.2:  { alternative way to use  Para-virtualization named Qemu/KVM  } install vagrant and vagrant libvirt driver 

sudo dnf install  vagrant vagrant-libvirt  


Performance  compare :  Vitualbox with KVM  test on  intel core i-7. reason that why i want to change vagrant provider  from Virtualbox ( full-virtualization ) to QENU/KVM  ( para-virtulization ) 



Fedora 22 install packages to work with virtualization :

 udomsak$ sudo dnf groupinstall 'virtualization' 

 Vagrant add box for Ubuntu 15.04 :

udomsak$  vagrant box add  ubuntu/vivid64
udomsak$  mkdir -pv ~/Development/Images/Ubuntu-KVM  &&  ~/Development/Images/Ubuntu-KVM
udomsak$  vagrant init ubuntu/vivid64  .   //  Careful 'dot' character

Edit  Vagrantfile change provider from  Virtualbox default to QEMU/KVM

And edit like this  or you can view and copy from  my gist -> here 

udomsak$  vim Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|

 config.vm.box = "ubuntu/vivid64"
 config.vm.box_url = "."
 config.vm.network "forwarded_port", guest: 80, host: 8080
 config.vm.provider "libvirt" do |libvirt|
      libvirt.driver = "kvm"
      libvirt.memory = 512
      libvirt.cpus = 2
  end

end

Convert  Default Box  from Virtualbox Format to  Libvirt: 

udomsak$  vagrant plugin  install vagrant-mutate
udomsak$  vagrant mutate ubuntu/vivid64  libvirt    

Add user to libvirrt group :  ( otherwise you will ask for password every time you start and ssh to vm ) 

udomsak$  sudo  usermod -a -G libvirt  udomsak 


Run vagrant:  
udomsak$ vagrant up 
Access VM Ubuntu: 
udomsak$ vagrant ssh  
List vagrant box:

udomsak$  vagrant box list 


Refer:  Tutorial docker setup base on Fedora 21
1.Permission denied when mount volume from docker.

My site Article and Topic

LookHin: การสร้าง Debian Droplet บน DigitalOcean และติดตั้ง Apache, PHP, MySQL, ProFTPD, Firewall

4 July, 2015 - 15:45

วันนี้มาลองสร้าง Droplet บน DigitalOcean กันครับ หลังจากสร้างแล้วเราจะติดต้ัง Apache, PHP, MySQL, ProFTPD, Firewall เพื่อใช้งานเป็น Web Server ด้วย, เจ้า Droplet ที่ว่ามันก็คือ Virtual Servers นี่หละครับ บน DigitalOcean เขาเรียก Droplet ซึ่งในบทความนี้ผมจะเลือกใช้ Image ที่เป็น Debian 8.1 x64 นะครับ ส่วนโปรแกรมอื่นๆที่เราจะใช้เดียวเราจะลงเองภายหลัง

อย่างแรกเราต้องมี Account ของ DigitalOcean ก่อนครับ ถ้ายังไม่มีก็สมัครก่อนครับ https://www.digitalocean.com/?refcode=29f4a5ac06ae (ถ้าคุณสมัครผ่านลิงค์นี้และเริ่มใช้งาน ผมก็ได้เครติดการใช้งานด้วย ^^) เมื่อสมัครเรียบร้อยแล้ว ก็ทำการล็อกอินเข้าระบบและเลือก Create Droplet โดยกำหนดค่าต่างๆ ดังนี้

Droplet Hostname : ชื่อของเว็บหรือชื่อที่เราจะใช้เรียก droplet อันนี้ ตั้งว่าอะไรก็ได้แต่ห้ามมีช่องว่าง
Select Size : เลือกไซต์เล็กสุด 5 USD ต่อเดือน (ประมาณเดือนละ 169 บาท ถูกมากๆ)
Select Region : เลือกเป็น Singapore ใกล้บ้านเราหน่อยจะได้เร็วๆ
Select Image : อันนี้เลือกเป็น Debian 8.1 x64 หรือถ้าใครอยากใช้แบบที่มีโปรแกรมต่างๆอยู่แล้วก็เลือกไปที่แท็บ Application และเลือก Image ที่มีโปรแกรมต่างๆ ในแบบที่ตัวเองต้องการได้เลยครับ

เมื่อเลือก ขนาด, ที่ตั้ง, และอิมเมจได้แล้วก็คลิก Create Droplet ด้านล่างสุดได้เลยครับ รอไม่กี่อึดใจก็จะมีอีเมล์มาแจ้งเราว่า IP Address และ root password ของอิมเมจของเราคืออะไร ขั้นต่อไปก็ทำการรีโมทเข้าไปทำการติดตั้งโปรแกรมต่างๆ

เมื่อได้รับอีเมลแจ้ง IP Address และ root password ของอิมเมจที่เราสร้างแล้วก็ให้ทำการรีโมทเข้าไปติดตั้ง Apache, PHP, MySQL, ProFTPD ตามขั้นตอนต่างๆ ดังนี้

1. ทำการเพิ่มยูสเซอร์และคอนฟิก ssh ไม่ให้รีโมทล๊อกอินด้วย root

1 2 3 4 5 6 # apt-get update # apt-get upgrade   # adduser demouser # apt-get install sudo # usermod -a -G sudo demouser

แก้ไขไฟล์ /etc/ssh/sshd_config

1 # nano /etc/ssh/sshd_config

ในไฟล์ /etc/ssh/sshd_config ให้หาคำว่า PermitRootLogin และทำการแก้ไขจาก PermitRootLogin yes เป็น PermitRootLogin no เพื่อไม่ให้รีโมทล๊อกอินด้วย root ได้

1 PermitRootLogin no

รีสตาร์ท ssh และลองล๊อกอินเข้าระบบด้วยยูเซอร์ใหม่

1 # systemctl restart ssh

2. ทำการติดตั้ง Apache, PHP, MySQL

1 2 3 4 5 6 7 8 9 10 11 # apt-get install apache2 # a2enmod ssl # a2enmod rewrite   # apt-get install mysql-server # mysql_secure_installation   # apt-cache search php5   # apt-get install php5 php5-cli php5-common php5-curl php5-gd php5-imap php5-ldap php5-mcrypt php5-mysql php5-sqlite php5-mongo php5-json # service apache2 restart

ทำการแก้ไขไฟล์คอนฟิกของ apache เพื่อไม่ให้แสดงรายชื่อไฟล์ถ้าไม่มีอินเด็กและอนุญาตให้ใช้ .htaccess ได้

1 # nano /etc/apache2/apache2.conf

ในไฟล์ /etc/apache2/apache2.conf ให้หาคำว่า Directory /var/www/ และแก้ไข Options และ AllowOverride ดังนี้

1 2 3 4 5 <Directory /var/www/> Options -Indexes -Includes -ExecCGI AllowOverride All Require all granted </Directory>

แก้ไขไฟล์ security.conf ไม่ให้แสดงเวอร์ชั่นของ apache

1 # nano /etc/apache2/conf-available/security.conf

ในไฟล์ /etc/apache2/conf-available/security.conf ให้หาบรรทัด ServerTokens และ ServerSignature โดยแก้ไขดังนี้

1 2 ServerTokens Prod ServerSignature Off

รีสตาร์ท apache อีกรอบ

1 # service apache2 restart

3. ติดตั้ง ProFTPD Server

1 # apt-get install proftpd

ทำการแก้ไขไฟล์ /etc/proftpd/proftpd.conf เพื่อให้ยูเซอร์แต่ละคนเห็นเฉพาะ directory ของตัวเองเท่านั้น

1 # nano /etc/proftpd/proftpd.conf

โดยแก้ไขไฟล์ /etc/proftpd/proftpd.conf ในหัวข้อ DefaultRoot และ RequireValidShell ดังนี้

1 2 DefaultRoot ~ RequireValidShell on

จากนั้นทำการแก้ไขไฟล์ /etc/shells โดยเพิ่มบรรทัด /bin/false เข้าไปท้ายไฟล์

1 # nano /etc/shells

เพิ่มยูเซอร์ที่จะให้ FTP เข้ามาได้ แต่เราจะไม่ให้ยูเซอร์นี้ ssh เข้ามา โดยเพิ่มออปชั่น –shell /bin/false

1 # adduser demoftp --home /var/www/demoftp --shell /bin/false

จากนั้นรีสตาร์ท ProFTPD และทดสอบใช้ยูเซอร์ที่สร้าง FTP เข้ามาในระบบ จะเห็นว่ายูเซอร์นี้สามารถใช้งาน FTP ได้อย่างเดียวและจะเห็นข้อมูลแค่เฉพาะในไดเร็กทอรีของตัวเองเท่านั้น

1 # service proftpd restart

4. ติดตั้ง UFW Firewall

1 # apt-get install ufw

ทำการคอนฟิก Firewall โดยอนุญาตให้ใช้งานได้แค่ port 22,80,21,443

1 2 3 4 5 6 7 8 9 10 # ufw default deny incoming # ufw default allow outgoing   # ufw allow 22/tcp # ufw allow 80/tcp # ufw allow 21/tcp # ufw allow 443/tcp   # ufw disable # ufw enable

ตรวจสอบสถานะของไฟล์วอด้วยคำสั่ง

1 # ufw status

เพียงเท่านี้เราก็มีเซิฟเวอร์พร้อมให้บริการแล้วครับ

Kitt: Create an aligned partition

30 June, 2015 - 14:56
An aligned partition gives you the best read/write performance, but you will have to sacrifice some space to align your partition. To create, # parted -a optimal /dev/sda mkpart primary 0% 100% And you can check if it is aligned, # parted /dev/sda align-check optimal 1

Kitt: NGINX HTTP Basic Authentication with LDAP

30 June, 2015 - 14:54
First,  install libpam-ldap # apt-get install libpam-ldap Config ldap:// properly. This will add ldap backend to PAM. Now, create a file /etc/pam.d/nginx @include common-auth @include common-account This will add nginx service in PAM. Then, config your nginx to enable HTTP basic authentication using auth_pam and PAM service name “nginx” location /someplace { auth_pam "Restricted Area"; … Continue reading NGINX HTTP Basic Authentication with LDAP →

Udomsak: Note on my info. -

19 June, 2015 - 09:43

PCAP  files download  protal
http://www.netresec.com/?page=PcapFiles
http://digitalcorpora.org/corpora/network-packet-dumps/cseagle-pcaps/

Lua PCAP  - https://github.com/sam-github/pcap-lua.git

Hadoop technologies stack and relate Big-data

https://hadoopecosystemtable.github.io/

PCAP for malware analysis

http://contagiodump.blogspot.com/2013/04/collection-of-pcap-files-from-malware.html



Facebook PrestoDB ( alternative Apache Hive ) 






Fabric8  Integration Platform run on top  Google Kubernate




Ipython - Interactive Python shell http://ipython.org/



BPython - Interactive Python shell 

http://bpython-interpreter.org/




My site Article and Topic

Udomsak: Openvswitch on Ubuntu Linux 13.04 or 13.10

29 May, 2015 - 14:11

OpenVswitch

After long period of time out of writing new weblog. due to my working time and busy.  Today just have time and sitting @  Co-working space at  Chiangmai, Thailand thinking of my future careers.

So before i need to drive to my goal.  I need to setting up own local infrastructure on my laptop to support my project that i have.  Docker  is a nice platform with cool feature but i need virtualization that lightweight than Virtualbox and KVM. look like is suitable my environment.

OpenVswitch is  Virtual Network Switch run on layer 2/3 with Sofware Define Network ( SDN ) capability . Openstack also support.

Environment.

  1. Ubuntu 13.10
    1. Kernel  version 3.11.0-26-generic
  2. OpenVswitch 2.3 
  3. Software dependency 
    1. Don't know because most of software lib are install to my laptop already. ( sorry ) 

Download and Compile




  • mkdir ~/Developement/ovs  && cd ovs 
  • wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz 
  • tar -xvfz openvswitch-2.3.1.tar.gz  &&  cd openvswitch-2.3.1.tar.gz   && ./boot.sh
  • ./configure --with-linux=/lib/modules/`uname -r`/build 
  • sudo make && sudo make install  
  • modprobe libcrc32c && modprobe gre
  • insmod sudo insmod datapath/linux/openvswitch.ko
  • sudo insmod datapath/linux/openvswitch.ko

  • OpenVswitch setup and config





  • sudo mkdir -p /usr/local/etc/openvswitch
  • ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
  • ovsdb-server -v --remote=punix:/usr/local/var/run/openvswitch/db.sock \ --remote=db:Open_vswitch,Open_vSwitch,manager_options \ --private_key=db:Open_vSwitch,SSL,private_key \ --certificate=db:Open_vSwtich,SSL,certificate \ --pidfile --detach --log-file
  • ovs-vsctl --no-wait init
  • ovs-vswitchd --pidfile --detach
  • ovs-vsctl show

  • My site Article and Topic

    Kitt: Yellow Padlock on Chrome/iOS

    8 May, 2015 - 12:06
    วันนี้ได้รับแจ้งจากผู้ใช้เรื่อง https ของ มข. ตรงช่อง URL ขึ้นเป็นสีเหลือง (yellow padlock) อย่างที่ปรากฏในภาพบน แทนที่จะเป็นสีเขียว (green padlock) เหมือนทุกครั้ง เท่าที่ตรวจสอบ พบว่าเกิดกับ Google Chrome / iOS บางรุ่น และเป็น bug ในส่วนการตรวจสอบ certificate chain ของ Google Chrome / iOS เอง Google Chrome / iOS รุ่นถัดไปน่าจะแก้ไข bug นี้ ระหว่างนี้ ถ้าต้องการยืนยันเพื่อความมั่นใจ ให้แตะที่ icon สีเหลืองตรงช่อง URL และดูรายละเอียดที่ปรากฏตามภาพข้างล่าง icon ที่หนึ่ง เป็นตัวยืนยัน identity ของ website ว่าถูกต้องหรือไม่ icon ที่สอง … Continue reading Yellow Padlock on Chrome/iOS →

    Thep: LibThai/LibDATrie Optimization Summary

    2 May, 2015 - 17:28

    นับจาก blog เรื่องการ micro-optimize libthai ซึ่งได้ทดลองใช้ LIKELY/UNLIKELY ในการลดการสะดุดของ pipeline ของ CPU ขณะทำ branching ซึ่งลดเวลาของการตัดคำของ libthai ลงได้เพียง 0.014% เท่านั้น แต่ปรากฏว่าเมื่อไปทำกับ libdatrie กลับให้ผลที่ดีกว่านั้น

    โค้ดที่เป็นคอขวดจริง ๆ คือ da_get_base(), da_get_check() ซึ่งใช้อ่านช่องข้อมูล double array โดยมีการตรวจสอบขอบเขตของค่า index ของ array ด้วย เมื่อใส่ LIKELY() กำกับเงื่อนไขที่จะไม่ error แล้ว ปรากฏว่าเวลาที่ใช้ในการตัดคำลดลงอย่างมากเมื่อเทียบกับจุดอื่น ๆ โดยทั่วไป

    แต่ก็อย่าคาดหวังอะไรมากกับ micro-optimization เพราะเวลาที่ลดลงได้จากการ micro-optimize libdatrie รวมแล้วคือ 1.94% แต่เมื่อเทียบกับ 0.014% ที่ได้ใน libthai ก็ถือว่าน่าตื่นตาตื่นใจไม่น้อย

    อย่างไรก็ดี ในช่วงต่อมา ก็ได้มี คำแนะนำจากคุณ edgehogapp ว่าสามารถลดเวลาตัดคำของ libthai ลงได้ ถ้าแปลงรหัสข้อความจาก TIS-620 เป็น Unicode เพียงครั้งเดียวก่อนวิเคราะห์ แทนที่จะแปลงทุกครั้งที่วิเคราะห์แต่ละตัวอักษร ซึ่งเมื่อทดลองแล้วก็ปรากฏว่าสามารถลดเวลาลงได้อีกถึง 0.28%

    ก่อนที่จะเตรียมออกรุ่น libdatrie และ libthai รุ่นใหม่ จึงมาวัดเวลาสรุปอีกครั้ง ว่าการออปติไมซ์ส่วนไหนให้ผลเท่าไร โดยใช้ test case เดียวกัน เวลาที่ callgrind วัดได้ในแต่ละกรณีคือ:

    • libthai เก่า + libdatrie เก่า: 39,000,827
    • libthai เก่า + libdatrie ใหม่: 38,242,294 (ลดลง 1.94%)
    • libthai ใหม่ + libdatrie เก่า: 38,851,449 (ลดลง 0.38%)
    • libthai ใหม่ + libdatrie ใหม่: 38,089,676 (ลดลง 2.34%)

    เมื่อคิดเป็นอัตราเร็วที่เพิ่มขึ้น (1 / (1 - อัตราส่วนเวลาที่ลดลง) - 1):

    • libthai เก่า + libdatrie ใหม่: เร็วขึ้น 1.98%
    • libthai ใหม่ + libdatrie เก่า: เร็วขึ้น 0.38%
    • libthai ใหม่ + libdatrie ใหม่: เร็วขึ้น 2.39%

    กล่าวคือ ความเร็วที่เพิ่มขึ้นส่วนใหญ่มาจากการออปติไมซ์ libdatrie และโดยรวมแล้วทำให้การตัดคำเร็วขึ้น 2.39%

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

    เวลาที่ใช้ในการโหลดพจนานุกรม:

    • libthai ใหม่ + libdatrie เก่า: 663,463
    • libthai ใหม่ + libdatrie ใหม่: 633,318 (ลดลง 4.54%; เร็วขึ้น 4.76%)

    เมื่อคิดเฉพาะเวลาที่ใช้ในการตัดคำ:

    • libthai ใหม่ + libdatrie เก่า: 38,851,449 - 663,463 = 38,187,986
    • libthai ใหม่ + libdatrie ใหม่: 38,089,676 - 633,318 = 37,456,358 (ลดลง 1.92%; เร็วขึ้น 1.95%)

    กล่าวคือ การ micro-optimize libdatrie ส่งผลต่อการโหลดพจนานุกรมมากกว่าการตัดคำ และเฉพาะสำหรับการตัดคำ มีผลมากกว่าการ micro-optimize ตัว libthai เอง อย่างมาก (ลดเวลาลง 1.92% เมื่อเทียบกับ 0.014% จาก libthai)

    นอกเหนือจากการ micro-optimize แล้ว libdatrie ยังมีรายการแก้บั๊กอีกรายการหนึ่ง ซึ่งคุณ Sergei Lebedev ได้รายงานเข้ามาทางอีเมลส่วนตัว โดยอ้างถึง บั๊กใน python wrapper ของ libdatrie เกี่ยวกับการ iterate trie ที่ว่างเปล่า

    เตรียมออกรุ่นใหม่เร็ว ๆ นี้ละครับ ทั้ง libdatrie และ libthai

    Thep: Thanks

    30 April, 2015 - 16:13

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

    ขอให้ทุกท่านและครอบครัวมีความสุขความเจริญ สุขภาพแข็งแรงทั้งกายใจครับ

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

    นอกจากการ optimize libthai/libdatrie ที่เคยเขียนไปแล้ว ก็มีงานจิปาถะอื่น ๆ อีก เช่น

    • งานแปล Xfce [ต้องล็อกอิน] ทั้งไล่กวดและไล่หลัง Xfce 4.12 ที่ออกไป จนขณะนี้อัตราการแปลของภาษาไทยอยู่ที่ 95% แล้ว
    • งานแปล GNOME ซึ่งผมเข้าสู่สถานะ review only (ไม่แปลเองอย่าง active) แล้ว ก็ได้ตรวจทานคำแปลที่มีนักแปลส่งเข้ามา
    • งาน Debian ในช่วงที่ Jessie freeze อยู่ ผมก็ได้แต่เตรียมปรับแก้ประเด็นเล็ก ๆ น้อย ๆ ที่ระบบ QA ต่าง ๆ ของ Debian ตรวจพบเพื่อรออัปโหลดในรอบ Stretch (Jessie + 1) ต่อไป เช่น:
      • lintian ส่วนใหญ่เป็นปัญหารูปแบบแฟ้ม debian/copyright ที่เครื่องแจงอ่านได้ และแฟ้มที่ขาดข้อมูลลิขสิทธิ์ ซึ่งบางส่วนต้องแก้ที่ต้นน้ำ ผมก็ทำเตรียมไว้
      • reproducible ตรวจพบการใช้ timestamp ขณะ build ซึ่งทำให้แพกเกจต่าง ๆ build หลายครั้งแล้วได้ checksum ไม่เท่ากัน ซึ่งทั้งหมดต้องแก้ที่ต้นน้ำ
      • Debian font review ซึ่งแสดงตัวอย่างฟอนต์จากแพกเกจฟอนต์ต่าง ๆ ใน Debian พร้อมผลลัพธ์จากโปรแกรม fontlint ที่ตรวจหาปัญหาต่าง ๆ ในฟอนต์ ทำให้ต้องมา validate ฟอนต์ที่ต้นน้ำทีละตัว ทำให้ได้แก้ปัญหาต่าง ๆ ในเส้นโค้งตัวอักษรของฟอนต์ เช่น การซ้อนทับกันของเส้น, การขาดจุด extrema, การระบุพิกัดของจุดแบบไม่ใช่จำนวนเต็ม, การใช้ชื่อ glyph ที่ไม่ตรงตามมาตรฐาน, ความผิดปกติของตาราง GPOS ฯลฯ แล้วก็เลยเถิดไปถึงการปรับเส้นอักษรแบบยกเครื่องในบางฟอนต์ ซึ่งส่งผลให้ได้เส้นที่คมชัดขึ้นเมื่อแสดงบนจอภาพ
      ประเด็นอื่นที่นอกเหนือจากที่ QA ตรวจพบ เช่น ปรับให้แพกเกจบางตัวที่สามารถใช้เอกสารใน /usr/share/doc ร่วมกันได้ทำเป็น symlink ถึงกัน ตาม Policy 12.3 วรรค 5 เพื่อลดขนาดติดตั้ง
    • งานปรับปรุงฟอนต์ในชุด fonts-tlwg ตามที่ได้รับข้อเสนอแนะจากคุณ Martin Hosken ซึ่งจะนำไปสู่การปรับปรุงการรองรับภาษาชาติพันธุ์ต่อไป
    • การแก้บั๊กใน libdatrie ตามที่มีผู้รายงานเข้ามาทางเมลลิงลิสต์

    ขณะนี้ Jessie ก็ได้ออกไปแล้ว รอบการพัฒนาใหม่ของ Stretch ก็กำลังเริ่ม ก็คงใกล้ได้เวลาปล่อยของที่ทำสะสมไว้

    Kitt: Linux kernel 4.0

    23 April, 2015 - 05:01
    รีลีสไปแล้ว และเรื่องใหญ่สุดของ 4.0 คือ infrastructure สำหรับอัพเกรดเคอร์เนลโดยไม่ต้อง reboot อีกต่อไป :) ที่จริงไม่ใช่ของใหม่เสียทีเดียวมันคือฟีเจอร์เดียวกันกับ Ksplice (Oracle), Kpatch (RedHat) นั่นเอง

    Kitt: สัปดาห์หนังสือแห่งชาติ ครั้งที่ 43

    15 April, 2015 - 11:10
    ลืมบันทึก เดินไป Talent 1 ซื้อมาสองเล่ม คินดะอิจิยอดนักสืบ ตอนที่ 31 ปิศาจฆาตกร ยักษ์ มิเกะเนะโกะออกจากโรงพิมพ์ไม่ทัน รอ Book Expo ค่อยสอยก็ได้