Planet TLWG

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

Kitt: เรามาเป็นแอดมินได้ไง

9 December, 2016 - 09:17
tl;dr ไม่รู้เหมือนกัน 55+ ปี 3 วิชา Computer Networks สอน TCP/IP (อ.ยืน อ.เขมทัต อ.ปรีดา ม.เกษตร) ประกอบกับที่ภาคคอมคณะไรสักอย่างได้รับเครื่อง SUN SPARCStation 5 มาจากมูลนิธิ Hitachi เครื่องนี้ต่ออินเทอร์เน็ตผ่าน MODEM + leased line ไปที่ศูนย์คอมพิวเตอร์ ผมกับเพื่อนไม่กี่คนมี account บนเครื่องนี้ telnet จาก PC ไปหัดใช้คำสั่ง UNIX ใช้อินเทอร์เน็ตได้ (pine, talk, gopher, inn, irc (#thai #siam …)) .. ตอนนั้นเป็นของใหม่ ของแพง(มาก) มีโอกาสได้ใช้ก็ตื่นตาตื่นใจ ปี 4 เพื่อนคนนึงทำโปรเจคเกี่ยวกับอินเทอร์เน็ต ขอเครื่อง 486 มาลง BSD ได้แผ่นติดตั้ง … Continue reading เรามาเป็นแอดมินได้ไง →

Kitt: เรามาเขียนโค้ดได้ไง

8 December, 2016 - 03:10
ปี 2529 อยู่ ม.2 ไม่เคยเล่นเกม ไม่เคยใช้โปรแกรมสำเร็จรูป แตะคอมพิวเตอร์ครั้งแรกก็หัดโค้ดเลย มันคือเครื่อง VTech Laser 200 (https://en.wikipedia.org/wiki/VTech_Laser_200) ROM เป็น BASIC interpreter สมัยนั้นเรียกของพวกนี้ว่า home computer ก็ไม่แน่ใจว่าเครื่องนี้เป็นของใคร แต่มันวางอยู่ที่บ้านที่ไปอาศัยอยู่ช่วงนั้น หัดจากคู่มือของเครื่อง (ภาษาอังกฤษ) หนังสือตัวอย่างโปรแกรมที่แถมมา จนเขียน BASIC เป็น ม.ปลาย ที่โรงเรียนสอนภาษา Logo .. ช่วงนั้นมีเครื่อง PC ที่บ้านแล้ว รับจ้างเขียนโปรแกรม พิมพ์รายงาน ป.ตรี รับจ้างเขียน inventory ให้ รพ.ศรีนครินทร์ (Clipper/Netware) โปรเจคจบเขียน C/C++ เป็นโปรแกรมบน Windows ป.โท ระหว่างเรียนเขียน C, C++, CLIPS, LISP, Prolog, OCaml, Smalltalk, … Continue reading เรามาเขียนโค้ดได้ไง →

Kitt: €2.99/mo. Scaleway VC1S

6 December, 2016 - 16:22
Same tools, same OS as $5/month: DigitalOcean vs Vultr dd write bs=4k count=10k 100k 1M 403 398 184 MB/s dd read bs=4k 2.0 GB/s sysbench --test=cpu --cpu-max-prime=10000 run 17.9875 sec. stress-ng --cpu 1 --cpu-method all -t 30 94.22 ops/sec The disk performance is comparable to those of DO/Vultr. But, even equipped with 2 x 64-bit x86 processor, … Continue reading €2.99/mo. Scaleway VC1S →

Kitt: Password authentication must die .. soon.

5 December, 2016 - 16:32
Password authentication depends on user input. To make it safe, one of the requirement is that you need to do it safely and quickly enough and hope that nobody could catch what you type on the keyboard. Nowadays, we can’t hope such. With naked eyes, we can simply read gestures, types, presses most of people … Continue reading Password authentication must die .. soon. →

Kitt: AlphaGo and the future of AI.

5 December, 2016 - 16:32
The Go match between AI and pro is very interesting. I’m a fan of igo/weiqi/baduk. I used to play constantly, and was rated SDK (single-digit kyu). Also, as a computer scientist, Go is the only board game that the best human can defeat the best AI. Well, not anymore. AlphaGo, with deep/machine learning, was well-trained, and … Continue reading AlphaGo and the future of AI. →

Kitt: Graylog Extractor for Fortigate Firewall

5 December, 2016 - 16:32
I’ve been using Graylog in production for awhile. It’s a great log analysis tool, backed by elasticsearch. Conceptually, graylog is pretty much like splunk. I consolidate approximately 170-200 million log messages to graylog everyday. So, I need to optimize them well enough. Few days ago, I started to use Fortigate extractors from a git repo. It … Continue reading Graylog Extractor for Fortigate Firewall →

Kitt: ceph

5 December, 2016 - 16:16
วันนี้ ceph เดี้ยง สืบพบว่ามาจาก monitor node 2 ใน 3 ตัว ..  ทั้งสองตัว เป็น VM connect ได้ daemon running  แต่ disk ของตัว host เป็น read-only .. พอ monitor พยายามบันทึกข้อมูลลง disk ไม่ได้มันก็ค้าง พอ monitor ค้าง ceph cluster ทั้งก้อนหยุดทำงาน ได้ใช้ท่า troubleshooting: stop monitor / dump monmap / ลบ monitor node ที่ใช้งานไม่ได้ออกไปจาก monmap / inject monmap ตัวใหม่เข้า monitor node ที่ใช้งานได้ restart monitor … Continue reading ceph →

Kitt: do-release-upgrade and PHP7

5 December, 2016 - 16:16
16.04.1 ออกมาได้ประมาณหนึ่งสัปดาห์ 14.04 ก็เริ่มจะ upgrade กันได้ วันนี้สั่ง do-release-upgrade เรียบร้อยดี ลง PHP7 เพิ่ม / เอา PHP5 ออก / แก้ไข socket path = เว็บกลับมาปกติ ง่ายเกินไปนะ :P

Kitt: $5/month: DigitalOcean vs Vultr

5 December, 2016 - 14:44
Tools: dd, sysbench, stress-ng. I know,  you’d say they are NOT benchmark tools. I don’t care, I just need quick tests. Here we go: dd write bs=4k count=10k 100k 1M do: 350 465 424 MB/s vultr: 699 538 466 MB/s dd read bs=4k do: 475 MB/s vultr: 2.7 GB/s sysbench --test=cpu --cpu-max-prime=10000 run do:  14.2562 … Continue reading $5/month: DigitalOcean vs Vultr →

Sothorn: [docker] MariaDB Container ตอนที่ 4/4 ทดลองใช้งาน

3 December, 2016 - 19:26

ในการสร้าง container มันก็จะมี IP Address ประจำ container นั้นๆ  แต่ถ้าหากเราต้องการจะกำหนดหมายเลข IP Address เอง

[root@docker-test ~]# docker network create --subnet=192.168.100.0/24 mynetwork 8872bf61c8e3da662ce2a59ac77b8ac577e6385bb3409e8ca9014730affb1407 [root@docker-test ~]# docker network ls NETWORK ID NAME DRIVER SCOPE d3553315e0f1 bridge bridge local f89c7eb98e06 host host local 8872bf61c8e3 mynetwork bridge local cca15c2e9e34 none null local

สร้าง MariaDB Container โดยที่กำหนด IP Adress ไปด้วย

[root@docker-test ~]# docker run --name mariadb-01 -v /data/mysql:/var/lib/mysql -v /data/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --net mynetwork --ip 192.168.100.201 -d mariadb:10.1 df7fe01b9769240d6f21fcac2ca2e069d8f42f52658f92161338bb621d635456

ตรวจสอบ IP Address

[root@docker-test ~]# docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadb-01 192.168.100.201 [root@docker-test ~]# ping 192.168.100.201 PING 192.168.100.201 (192.168.100.201) 56(84) bytes of data. 64 bytes from 192.168.100.201: icmp_seq=1 ttl=64 time=0.278 ms 64 bytes from 192.168.100.201: icmp_seq=2 ttl=64 time=0.414 ms

nmap ดูว่า เปิด port อะไรอยู่บ้าง

[root@docker-test ~]# nmap 192.168.100.201 Starting Nmap 6.40 ( http://nmap.org ) at 2016-12-03 14:03 ICT Nmap scan report for 192.168.10.201 Host is up (0.000032s latency). Not shown: 999 closed ports PORT STATE SERVICE 3306/tcp open mysql MAC Address: 02:42:C0:A8:0A:C9 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 0.40 seconds

grant สิทธิให้ user sothorn

[root@docker-test ~]# docker exec -it mariadb-01 bash root@df7fe01b9769:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql-docker1> GRANT ALL PRIVILEGES ON *.* TO sothorn@"%" IDENTIFIED BY '12345678' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql-docker1> flush privileges; Query OK, 0 rows affected (0.00 sec)

ทดลองเข้าใช้งานด้วย user sothorn

[root@docker-test ~]# mysql -u sothorn -h 192.168.100.201 -p12345678 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

Sothorn: [Docker] MariaDB Container ตอนที่ 3/4 ระบุที่เก็บ Data

3 December, 2016 - 08:32

โดยปกติ MariaDB จะเก็บข้อมูลไว้ที่ /var/lib/mysql ถ้าเราสร้าง MariaDB container โดยไม่ระบุที่เก็บข้อมูล ข้อมูลก็จะถูกเก็บไว้ในโครงสร้างไดเรกทอดีของ Docker อยูใน /var/lib/docker/volumes  แต่ถ้าเราต้องการเก็บข้อมูลเอาไว้นอกโครงสร้างไดเรกทอรีของ Docker ก็ทำได้เช่นกัน โดยที่ในขั้นตอนการสร้าง container ก็ให้ระบุ option -v

ตัวอย่างคำสั่ง

docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

ผมได้สร้างไดเรกทอรี mysql ไว้ใน /data  ซึ่งจะใช้เป็นที่เก็บข้อมูล

[root@docker-test ~]# cd /data/ [root@docker-test data]# ls conf.d mysql [root@docker-test data]# cd mysql/ [root@docker-test mysql]# ls [root@docker-test mysql]# pwd /data/mysql

สร้าง Container

[root@docker-test mysql]# docker run --name mariadb10.1_data -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 cfa3f3be0e2db85ff4c277ad3385ee76c747cd9baf668951cff5bab591e15f79 [root@docker-test mysql]# docker exec -it mariadb10.1_data bash root@cfa3f3be0e2d:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

แล้วมันย้ายที่เก็บข้อมูลจริงหรือเปล่า

[root@docker-test mysql]# pwd /data/mysql [root@docker-test mysql]# ls -l total 110640 -rw-rw---- 1 systemd-bus-proxy input 16384 Dec 3 08:17 aria_log.00000001 -rw-rw---- 1 systemd-bus-proxy input 52 Dec 3 08:17 aria_log_control -rw-rw---- 1 systemd-bus-proxy input 12582912 Dec 3 08:17 ibdata1 -rw-rw---- 1 systemd-bus-proxy input 50331648 Dec 3 08:17 ib_logfile0 -rw-rw---- 1 systemd-bus-proxy input 50331648 Dec 3 08:17 ib_logfile1 -rw-rw---- 1 systemd-bus-proxy input 0 Dec 3 08:17 multi-master.info drwx------ 2 systemd-bus-proxy input 4096 Dec 3 08:17 mysql drwx------ 2 systemd-bus-proxy input 19 Dec 3 08:17 performance_schema -rw-rw---- 1 systemd-bus-proxy input 24576 Dec 3 08:17 tc.log

กรณีที่ต้องการใช้ my.cnf และระบุที่เก็บข้อมูล ก็ใช้ option -v 2 ครั้ง

[root@docker-test mysql]# docker run --name mariadb10.1_data2 -v /data/mysql2:/var/lib/mysql -v /data/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 7bd2d705324fcebc34e252d81d6314e9ad1bf0aa801e5dd437bac4d8a0504258

-v /data/conf.d:/etc/mysql/conf.d  ให้อ่าน my.cnf

-v  /data/mysql2:/var/lib/mysql  ระบุที่เก็บข้อมูลที่ /data/mysql2

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

Sothorn: [Docker] MariaDB Container ตอนที่ 2/4 ใช้งาน my.cnf

2 December, 2016 - 20:38

ในตอนที่แล้วผมนำเสนอการสร้าง container ของ MariaDB โดยที่ สตาร์ทขึ้นมาโดยไม่มี my.cnf ก็เหมือนกับ ซื้อรถมาแล้วไม่ได้แต่ง ซึ่งทำให้ไม่สามารถใช้งาน MariaDB ได้เต็มประสิทธิภาพ หรือใช้งานได้แต่ไม่สมบูรณ์แบบ สำหรับตอนนี้มาดูกันครับถ้าเรามี my.cnf อยู่แล้ว เราจะให้ MariaDB container นำ my.cnf นั้นไปใช้งานได้อย่างไร มาดูกันครับ

ตัวอย่างคำสั่ง

docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

ผมได้เอา my.cnf เอาไว้ที่ /data/conf.d

[root@docker-test conf.d]# pwd /data/my.cnf.d [root@docker-test conf.d]# ls my.cnf

[root@docker-test ~]# docker run --name mariadb10.1_custom -v /data/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 09e241a351f83f1b0356d4aae5e8880b2e11ef5879955b50cc6d7092f289cc17 [root@docker-test ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09e241a351f8 mariadb:10.1 "docker-entrypoint.sh" 15 seconds ago Up 11 seconds 3306/tcp mariadb10.1_custom

[root@docker-test my.cnf.d]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ffcb3a408c7 mariadb:10.1 "docker-entrypoint.sh" 48 seconds ago Up 44 seconds 3306/tcp maridb10.1_cnfcustom

เข้าใช้งาน container ผ่าย bash shell

[root@docker-test data]# docker exec -it mariadb10.1_custom bash root@ea9bce5b82d1:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql-docker1>

ก็จะสามารถทำให้ MariaDB container  ใช้งาน my.cnf ได้     แล้วรู้ได้ยังไงว่า mariadb container นี้ใช้งาน my.cnf นั้นแล้ว

ผมรู้ได้เพราะผมเขียนคำสั่งให้แสดง prompt ของ mariadb เอาไว้ใน my.cnf

[mysql] prompt=mysql-docker1> \ ## MySQL Prompt

เป็นอันว่าผ่านไปได้อีก 1 ด่าน สามารถทำให้  mariadb container อ่าน my.cnf ได้  แต่มีข้อแม้ว่า ต้องเป็น my.cnf ที่ใช้กับ Linux Debian นะครับ เพราะ image ของ mariadb ตัวนี้ทำมาจาก Debian

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

Sothorn: [Docker] MariaDB Container ตอนที่ 1/4 ติดตั้งและสร้าง Container

2 December, 2016 - 09:12

อย่างที่บอกไปในตอนก่อนว่าเราสามารถค้นหา image ด้วยคำสั่ง doker search หรือเข้าไปค้นหาที่เว็บ https://hub.docker.com/ พอเราค้นเจอ image ที่ต้องการก็สามารถดาวน์โหลดได้ทันที โดยใช้คำสั่ง docker pull

ดาวน์โหลด image

[root@docker-test ~]# docker pull mariadb:10.1 10.1: Pulling from library/mariadb 386a066cd84a: Pull complete 827c8d62b332: Pull complete de135f87677c: Pull complete 05822f26ca6e: Pull complete ad65f56a251e: Pull complete d71752ae05f3: Downloading 87cb39e409d0: Downloading 8e300615ba09: Downloading 411bb8b40c58: Downloading [==> ] 3.243 MB/71.99 MB f38e00663fa6: Download complete 7b8e0ed6d4af: Download complete 9a599d94dc41: Download complete

ดาวน์โหลดเสร็จก็เป็นแบบนี้

[root@docker-test ~]# docker pull mariadb:10.1 10.1: Pulling from library/mariadb 386a066cd84a: Already exists 827c8d62b332: Pull complete de135f87677c: Pull complete 05822f26ca6e: Pull complete ad65f56a251e: Pull complete d71752ae05f3: Pull complete 87cb39e409d0: Pull complete 8e300615ba09: Pull complete 411bb8b40c58: Pull complete f38e00663fa6: Pull complete 7b8e0ed6d4af: Pull complete 9a599d94dc41: Pull complete Digest: sha256:3a2d01b31bc2a1b47b6bf9905bf017eac962d74a532d43ba4f12134698a32339 Status: Downloaded newer image for mariadb:10.1

ดูซิว่ามี image อะไรบ้าง

[root@docker-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mariadb 10.1 66498efd6bd8 2 weeks ago 389.9 MB debian latest 73e72bf822ca 2 weeks ago 123 MB hello-world latest c54a2cc56cbb 4 months ago 1.848 kB

ถ้าหากว่าอยากได้  MariaDB 5.5 มาติดตั้งด้วย ก็ไม่มีปัญครับ นี่คือข้อดีอีกอย่างของ Docker

[root@docker-test ~]# docker pull mariadb:5.5 5.5: Pulling from library/mariadb c952bb7239f0: Pull complete 8c770840981e: Pull complete 566b9b89ae5f: Pull complete ab998c5abe77: Pull complete 47fcf5f1b7ce: Pull complete cccca0ee7a1b: Pull complete f4c026c79d95: Pull complete a8765c07e57b: Pull complete 3d1c8c68764a: Pull complete 93fa2d5d15cd: Pull complete 6a508cfd9f12: Pull complete 439cb44d624a: Pull complete Digest: sha256:7cf460256450d74d5bacea87b79d8c4ae4b3cc9bda2bc2b4a5bb21d8a98927d8 Status: Downloaded newer image for mariadb:5.5

ดูว่ามี image อะไรบ้าง

[root@docker-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mariadb 5.5 74d6cee58c6a 3 days ago 276.6 MB mariadb 10.1 66498efd6bd8 3 weeks ago 389.9 MB debian latest 73e72bf822ca 3 weeks ago 123 MB hello-world latest c54a2cc56cbb 5 months ago 1.848 kB

เห็นมั๊ยครับว่าเราสามารถติดตั้ง MariaDB ทั้งเวอร์ชัน 10.1 และ  5.5 ไว้บนเครื่องเดียวกันได้

สร้าง Container

หลังจากที่เราดาวน์โหลด image มาแล้วนั้นเราก็ต้องสร้าง container ขึ้นมา ตามความเข้าใจของผมคือการรัน image ขึ้นมาภายใต้ option ต่างๆ นั่นเอง  เช่น ผมจะสร้าง Container ของ MariaDB ของ 10.1

[root@docker-test ~]# docker run --name mariadb01-10.1 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1[root@docker-test data]# docker run --name mariadb01-10.1 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 58fadbd9e36eba323c35ef84329ff653c43bfcffda43d817810790a5960eb63a

จากคำสั่ง มีความหมายว่า สร้าง container ชื่อ mariadb01-10.1 โดยมีรหัสผ่านการเข้าใช้งาน MariaDB คือ 123456 โดยสร้างจาก image MariaDB:10.1

ทดลองสร้าง container ของ MariaDB 5.5

[root@docker-test data]# docker run --name mariadb01-5.5 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:5.5 e04789f3cfa802668258e01f60b8690338f71ef4712e4d46fa514d34eabefc5a

จากคำสั่ง มีความหมายว่า สร้าง container ชื่อ mariadb01-5.5 โดยมีรหัสผ่านการเข้าใช้งาน MariaDB คือ 123456 โดยสร้างจาก image MariaDB:5.5

สร้าง continer มาแล้วจะดูยังไงล่ะว่ามี container อะไรรันอยู่บ้าง

[root@docker-test data]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e04789f3cfa8 mariadb:5.5 "docker-entrypoint.sh" 2 minutes ago Up 2 minutes 3306/tcp mariadb01-5.5 58fadbd9e36e mariadb:10.1 "docker-entrypoint.sh" 6 minutes ago Up 5 minutes 3306/tcp mariadb01-10.1

ใช้งาน container

ณ ตอนนี้แสดงว่า container ของเรากำลังรันอยู่ หากเราต้องการหยุดการทำงานของ container ที่เราสร้างมา

[root@docker-test data]# docker stop mariadb01-5.5 mariadb01-5.5 [root@docker-test data]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 58fadbd9e36e mariadb:10.1 "docker-entrypoint.sh" 10 minutes ago Up 10 minutes 3306/tcp mariadb01-10.1 [root@docker-test data]#

จะเห็นว่าเมื่อเรา stop container  mariadb01-5.5 เมื่อสั่ง docker ps ก็จะมีแต่ container mariadb01-10.1

คำสั่งอื่นๆ

  • docker start  ชื่อ  container
  • docker stop ชื่อ  container
  • docker restart ชื่อ  container
  • docker kill ชื่อ container

แล้วถ้าเกิดว่าเราได้ stop container ไปหมด แล้วจำชื่อ container ที่เราสร้างขึ้นมาไม่ได้ ต้องสั่งยังไง

[root@docker-test data]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e04789f3cfa8 mariadb:5.5 "docker-entrypoint.sh" 15 minutes ago Exited (0) 8 minutes ago mariadb01-5.5 58fadbd9e36e mariadb:10.1 "docker-entrypoint.sh" 19 minutes ago Exited (0) About a minute ago mariadb01-10.1 91aba2519f8c debian "nsenter -t 1 -m -u -" 9 days ago Exited (0) 9 days ago high_dijkstra 05dac5d3cd72 hello-world "/hello" 9 days ago Exited (0) 9 days ago cocky_tesla

สร้าง container ขึ้นมาแล้ว ลองเล่นดูหน่อย

[root@docker-test data]# docker exec -it mariadb01-10.1 bash root@58fadbd9e36e:/# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) root@58fadbd9e36e:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

 

ลบ container

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

[root@docker-test data]# docker rm -v mariadb01-10.1

*** docker rm -v จะลบข้อมูลที่ mariadb สร้างขึ้นมาด้วย

สำหรับเรื่อง MaiaDB container ตอนนี้ขอจบแค่นี้ก่อน จะเห็นว่าเป็นการสร้าง  MariaDB container ที่ไม่มี my.cnf ซึ่งในการใช้งานจริงๆ คงไม่เหมาะสม ในตอนต่อไปจะมาพูดถึงการ สร้าง MariaDB container ที่เรียกใช้ my.cnf และระบุ ตำแหน่งที่เก็บข้อมูลของ MariaDB โปรดติดตามตอนต่อไปครับ

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

bact: ปลาดาวออฟฟิศ

28 November, 2016 - 11:48

วันนี้พี่นุสรณ์โพสต์ ขอเก็บไว้หน่อย 14 ปีละ

ตอนนั้นนอกจากทำ spec ทำ test case ตรวจคำแปล UI ก็ยังเขียนเอกสารด้วย โชคดีมีคนเก็บไว้บ้าง วันนี้ลองกูเกิล “Pladao Office” ก็เจอ

ข้อมูลทั่วไป
http://ftp.ji-net.com/pladao/2.0/readme.html

ขั้นตอนติดตั้ง
http://ftp.ji-net.com/pladao/2.0/install.html

ความสามารถภาษาไทย
http://ftp.ji-net.com/pladao/2.0/features.html

FAQ
http://ftp.ji-net.com/pladao/1.0/faq.txt

Credits
http://ftp.ji-net.com/pladao/2.0/credits.txt

bact: The Crown

28 November, 2016 - 11:26
<iframe allowfullscreen="true" class="youtube-player" height="402" src="https://www.youtube.com/embed/Pl4Lm9uDhk4?version=3&amp;rel=1&amp;fs=1&amp;autohide=2&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" style="border:0;" type="text/html" width="660"></iframe>

เข้าใจว่า The Crown ในชื่อซีรีส์ มันไม่ใช่มงกุฎ แต่หมายถึงหน่วยทางการเมือง เป็น Crown เดียวกับ Crown ใน Crown prosecutor (อัยการ, ทำนองเดียวกับ public prosecutor), Crown Estate (UK) หรือ Crown Property Bureau (สำนักงานทรัพย์สินส่วนพระมหากษัตริย์ ของไทย)

The Crown เป็นแนวคิดที่เริ่มพัฒนาในอังกฤษ เพื่อแยกอำนาจของกษัตริย์ (crown) ออกมาจากตัวกษัตริย์ (monarch)

การแบ่งแยกในเชิงแนวคิดนี้สำคัญสำหรับ Commonwealth realm ด้วย เพราะในทางบุคคล แม้จะเป็นกษัตริย์คนเดียวกัน (แง่เลือดเนื้อ-กายภาพ) แต่ในทางอำนาจ ถือว่าเป็นอำนาจคนละอำนาจกันในแต่ละประเทศ (เป็นอลิซาเบ็ธเดียวกัน แต่เป็นคนละควีนกันในแคนาดาและออสเตรเลีย)

เวลาอ้างอำนาจในทางปกครอง ไม่ว่าจะฝ่ายบริหาร นิติบัญญัติ หรือตุลาการ จะอ้างไปที่ crown ไม่ใช่ monarch
เช่น ในการฟ้องคดีที่รัฐเป็นผู้ฟ้อง แม้จะเขียนว่า Rex/Regina (ราชา/ราชินี) v … แต่เวลาอ่านออกเสียงจะอ่านว่า The Crown v …

….

อันนี้คิดต่อเฉยๆ ว่า การพยายามนำแนวคิด The Crown มาใช้ในไทย หลังเปลี่ยนแปลงการปกครอง แต่พอไม่มีรูปคำมารองรับ (ไม่มีคำที่ใช้แทนคำว่า crown ได้ตรงๆ) ก็ทำให้แนวคิดมันไม่มีที่อยู่ที่แข็งแรงรึเปล่า

Crown Property Bureau หรือ สำนักงานทรัพย์สินส่วนพระมหากษัตริย์ ในตอนแรกของไทยพยายามแยกทรัพย์สินตรงนี้ออกมาจากจากทรัพย์สินส่วนพระองค์ แรกๆ รัฐบาลก็มีอำนาจจัดการส่วนนี้จริง แต่ทำไปทำมา กลายเป็นดินแดนที่คนทั่วไปเชื่อว่าเป็นของกษัตริย์ (monarch แบบมีเลือดเนื้อ) ในแบบที่ในทางปฏิบัติ รัฐบาลเข้าไปยุ่งได้ยากแล้ว

ทำไปทำมา สำหรับเมืองไทย crown กับ monarch ก็ดูจะค่อยๆ กลืนกลับไปเป็นเนื้อเดียวกันมากขึ้นไหม? อย่างน้อยก็ในเชิงมโนทัศน์ เพราะเวลาเราเปล่งเสียงในภาษาไทย เพื่อให้หมายถึงความหมายอย่าง crown กับ monarch อย่างแยกกัน ยังลำบากเลย

Sothorn: การติดตั้ง Docker บน CentOS 7

22 November, 2016 - 19:07

เมื่อพูดถึง Docker ผมไม่อธิบายนะครับว่ามันคืออะไร มีที่เขาเขียนอธิบายไว้มากมายแล้ว ผมขอพูดถึงการติดตั้ง Docker บน CentOS 7 เลยนะครับ การติดตั้งมีอยู่ 2 วิธี

วิธีที่ 1 ติดตั้งโดยใช้คำสั่ง yum

เพิ่มแหล่งดาวน์โหลดใน /etc/yum.repos.d โดยการสร้างไฟล์ชื่อ docker.repo ซึ่งมีเนื้อความข้างในดังนี้

[docker-main-repo] name=Docker main Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg

แล้วติดตั้งด้วยคำสั่ง

[root@docker-test ~]# yum install docker-engine

วิธีที่ 2 ใช้คำสั่ง curl

[root@docker-test ~]# curl -fsSL https://get.docker.com/ | sh

+ sh -c 'sleep 3; yum -y -q install docker-engine' warning: /var/cache/yum/x86_64/7/docker-main-repo/packages/docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY Public key for docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm is not installed Importing GPG key 0x2C52609D: Userid : "Docker Release Tool (releasedocker) <docker@docker.com>" Fingerprint: 5811 8e89 f3a9 1289 7c07 0adb f762 2157 2c52 609d From : https://yum.dockerproject.org/gpg setsebool: SELinux is disabled. If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker your-user Remember that you will have to log out and back in for this to take effect!

แค่พิมพ์ curl -fsSL https://get.docker.com/ | sh  มันก็จะติดตั้ง Docker ให้เราเองเรียบร้อยครับ

หลังจากนั้นก็สั่งให้ docker ทำงานทุกครั้งที่เปิดเครื่อง

[root@docker-test ~]# systemctl enable docker.service

สั่งให้ docker ทำงานเลย

[root@docker-test ~]# systemctl start docker.service

คำสั่งแรก อยากรู้ว่า docker เวอร์ชันอะไร

[root@docker-test ~]# docker version Client: Version: 1.12.3 API version: 1.24 Go version: go1.6.3 Git commit: 6b644ec Built: OS/Arch: linux/amd64 Server: Version: 1.12.3 API version: 1.24 Go version: go1.6.3 Git commit: 6b644ec Built: OS/Arch: linux/amd64

อยากรู้ว่าติดตั้งเสร็จแล้วมี image อะไรบ้าง ผลที่ได้คือ ไม่มี image อะไรเลย เพราะยังไม่ได้ดาวน์โหลดมา

[root@docker-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [root@docker-test ~]#

เขียนโปรแกรมทั่วไป ก็มี hello world เพราะฉะนั้น docker ก็มี image hello-world

[root@docker-test ~]# docker search hello NAME DESCRIPTION STARS OFFICIAL AUTOMATED hello-world Hello World! (an example of minimal Docker... 206 [OK] tutum/hello-world Image to test docker deployments. Has Apac... 28 [OK] ...

ค้นหาเจอก็ดาวน์โหลดมาติดตั้งกันเลย

[root@docker-test ~]# docker pull hello-world Using default tag: latest latest: Pulling from library/hello-world c04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9 Status: Downloaded newer image for hello-world:latest

ลองถามดูอีกทีซิว่ามี image อะไรบ้าง

[root@docker-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest c54a2cc56cbb 4 months ago 1.848 kB

มีแล้วๆ  มี image ชื่อ hello-world

เวลาเราจะรัน เราเรียกว่ารัน hello-world container
ซึ่งผลที่ได้จากการรันเป็นดังนี้

[root@docker-test ~]# docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com For more examples and ideas, visit: https://docs.docker.com/engine/userguide/

แต่ความเป็นจริงแล้ว image มีให้เราดาวน์โหลดมากมาย ไม่ว่าจะเป็นลีนุกซ์ดิสตริบิวชั่นต่างๆ เช่น CentOS Debian Ubuntu  หรือจะเป็นฐานข้อมูล PostgreSQL, MySQL, MariaDB หรือจะเป็น PHP เวอร์ชันต่างๆ  และอื่นๆ อีกมากมายครับ ที่เราสามารถดาวน์โหลด image แล้วรัน container ขึ้นมาใช้งานได้ image เหล่านั้นเราจะค้นหาได้จากที่ไหน จากเว็บนี้ครับ https://hub.docker.com/  มีคนทำมาให้ พร้อมให้เราใช้งาน  เช่น ผมค้นหา MariaDB  (เช่นเดียวกันกับใช้คำสั่ง docker search mariadb)

แต่ในการค้นหาผ่านเว็บนั้นเราสามารถ ดูรายละเอียดรวมถึงวิธีการใช้งาน container นั้นๆด้วย

สำหรับเรื่องนี้ก็คิดว่าคงติดตั้ง docker กันได้ และพอที่จะดาวน์โหลด  image ( pull image) กันได้นะครับ

สำหรับคนที่ไม่อยากใช้งาน docker ด้วย user root ก็สามารถให้ user ทั่วไปที่มีอยู่แล้วในระบบสามารถใช้งาน docker ได้ ก็สามารถทำได้ด้วยคำสั่งนี้ครับ

[root@docker-test ~]# usermod -aG docker user(ที่ต้องการ)

อ้างอิง :

  1. https://docs.docker.com/engine/installation/linux/centos/
  2. https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-centos-7

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

bact: ออกแบบอำนาจ: อ่านโครงสร้างคณะกรรมการในกฎหมายไทย

18 November, 2016 - 12:56

ช่วงที่ผ่านมา นั่งดูร่างกฎหมายจำนวนหนึ่ง อย่างร่างพ.ร.บ.คอมพิวเตอร์ ร่างพ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล และร่างพ.ร.บ.กสทช. ก็เลยผ่านตาพวกที่มา คุณสมบัติ สัดส่วน ของคณะกรรมการนั่นนี่ตามกฎหมาย เลยขอโน๊ตที่สังเกตเห็นไว้ตรงนี้หน่อย จำนวนนึงเคยเขียนไว้บนเฟซบุ๊กแล้ว [1] [2] แต่อันนี้มาเขียนเพิ่ม และจะได้หาได้ง่ายๆ ด้วย เฟซบุ๊กมันหายาก (เขียนค้างมาจะสามเดือน เพิ่งจะเสร็จ…)

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

ประเภทและที่มาของกรรมการ

กรรมการในคณะกรรมการนี่มีที่มาหลายได้แบบ เช่น

  • กรรมการที่สรรหามาเพื่อทำงานในคณะกรรมการนั้นโดยเฉพาะ — เป็นกรรมการที่ทำงานกรรมการให้กับคณะกรรมการนั้นๆ เต็มเวลา ห้ามทำงานอื่น (อาจจะด้วยเหตุผลเรื่องป้องกันผลประโยชน์ทับซ้อนด้วย) วิธีสรรหานั้นก็แล้วแต่กฎหมายจะกำหนด เช่น ให้สภาเลือกกรรมการสรรหามาคัดเลือกกรรมการอีกที หรือให้ตัวแทนสมาคมวิชาชีพและองค์กรที่เกี่ยวข้องเสนอตัวแทนเข้ามาเพื่อทำการคัดเลือกกันเอง ตัวอย่างของกรรมการที่ทำงานเต็มเวลาลักษณะนี้เช่น กรรมการกสทช. และกรรมการนโยบายไทยพีบีเอส
  • กรรมการโดยตำแหน่ง (ex officio) — เป็นกรรมการที่ผู้ร่างกฎหมายมองว่า โดยตำแหน่งงานประจำของเขาแล้วเกี่ยวข้องโดยตรงกับภารกิจของคณะกรรมการ ควรจะมาช่วยคิดช่วยทำในเรื่องนี้ด้วย ก็เลยใส่เข้ามา นั่นคือกรรมการแต่ละท่านเขาก็ทำงานเต็มเวลาที่อื่นอยู่ด้วย เช่น เป็นรัฐมนตรีกระทรวง เป็นปลัดกระทรวง เป็นอธิบดีกรม เป็นนายกสมาคมวิชาชีพ แต่ก็มาช่วยงานของคณะกรรมการด้วย กรรมการโดยตำแหน่งนี้ตามชื่อก็คือผูกอยู่กับตำแหน่ง ไม่ใช่ตัวบุคคล วันหนึ่งถ้ารัฐมนตรีกระทรวงเปลี่ยนเป็นคนใหม่ กรรมการโดยตำแหน่งก็จะเปลี่ยนตามไปเป็นคนใหม่ด้วย
  • กรรมการผู้ทรงคุณวุฒิ — เป็นกรรมการที่คณะกรรมการหรือรัฐมนตรีหรือผู้ที่กฎหมายให้อำนาจ แต่งตั้งเข้ามา เพราะต้องการความรู้ความเชี่ยวชาญหรือประสบการณ์เฉพาะบางอย่าง เช่น ด้านวิศวกรรม ด้านกฎหมาย ด้านเศรษฐศาสตร์ ด้านสิทธิมนุษยชน ด้านการคุ้มครองผู้บริโภค ก็ว่าไป หรืออาจจะต้องการให้มีสัดส่วนของผู้มีส่วนได้ส่วนเสียที่มันครบถ้วนขึ้น เช่นให้มีจากภาคเอกชนด้วย จากภาคประชาสังคมด้วย จากภาควิชาการด้วย กรรมการประเภทนี้อาจทำงานอยู่ที่อื่นด้วย
  • กรรมการเฉพาะกิจ — เป็นกรรมการที่ถูกเชิญมาเฉพาะการประชุมหนึ่งๆ เนื่องจากมีอำนาจหน้าที่เกี่ยวกับเรื่องที่กำลังจะพิจารณาหรือมีความรู้ความเชี่ยวชาญเกี่ยวข้อง กรรมการประเภทนี้โดยเหตุผลที่ถูกเชิญมาจะคล้ายกรรมการโดยตำแหน่ง (อำนาจเกี่ยวข้อง) หรือกรรมการผู้ทรงคุณวุฒิ (ความรู้เกี่ยวข้อง) แต่เป็นการเชิญมาเป็นครั้งคราวเท่านั้น
กรรมการที่ไม่ได้ทำงานเต็มเวลาให้กับคณะกรรมการ

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

อย่างกรณีคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล ในร่างพ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล (ฉบับจากปี 2558 ที่ผ่านการตรวจจากสำนักงานคณะกรรมการกฤษฎีกาแล้ว) ก็มีกรรมการโดยตำแหน่งและกรรมการผู้ทรงคุณวุฒิทั้งหมด ไม่มีกรรมการที่ทำงานเต็มเวลาเลย กระทั่งคนที่มารับตำแหน่งเลขานุการกรรมการเอง ก็ยังเป็นเลขานุการให้กับคณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติอีกด้วย (เลขาธิการสำนักงานคณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติเป็นเลขานุการของทั้งสองคณะกรรมการนี้โดยตำแหน่ง)

ตรงนี้ไม่ได้บอกว่ากรรมการที่ไม่ได้ทำงานเต็มเวลาไม่ดี แต่คงต้องพิจารณาอย่างน้อย 2 เรื่อง คือ 1) ภาระงาน 2) ความเป็นอิสระในการทำงาน — ถ้าคณะกรรมการไหนมีภาระงานเยอะและจำเป็นต้องมีความเป็นอิสระสูง กรรมการที่ทำงานได้เต็มเวลาและไม่ได้ผูกอยู่กับหน่วยงานอื่นก็น่าจะเหมาะกว่าเพราะมีเวลาทำงานได้เต็มที่มากกว่า และการตัดสินใจก็น่าจะทำได้เต็มที่มากกว่าด้วย ไม่ต้องเกรงใจใคร

เช่น ถ้ามองว่าต่อไปจะมีประเด็นละเมิดข้อมูลส่วนบุคคลมากขึ้นๆ ตามเศรษฐกิจและสังคมที่พึ่งพาข้อมูลข่าวสารมากขึ้น ทั้งภาครัฐ ภาคเอกชน รวมถึงประชาชนทั่วไป ก็เข้าถึงข้อมูลของกันและกันมากขึ้น ก็คงต้องพิจารณาว่าคุ้มครองข้อมูลส่วนบุคคลและสิทธิในความเป็นอยู่ส่วนบุคคลนั้น ควรจะให้มีคณะกรรมการที่ทำงานเต็มเวลาทั้งชุดและทำงานได้เป็นอิสระไหม คล้ายๆ กับงานคุ้มครองสิทธิมนุษยชนที่ปัจจุบันก็มีคณะกรรมการสิทธิมนุษยชนแห่งชาติ

สัดส่วนตัวแทน-การขัดกันของผลประโยชน์-การแยกบทบาทผู้กำกับกิจการ

นอกจากนี้ก็ยังมีประเด็นความเหมาะสมในการปฏิบัติหน้าที่ด้วย เช่นจะมีการขัดกันของผลประโยชน์ (conflict of interest) ไหม คือถ้าคณะกรรมการนี้ออกแบบมาเพื่อเป็น ผู้ตัดสินไกล่เกลี่ยคดี หรือเป็นผู้กำกับดูแล (regulator) ก็ไม่ควรจะเอาคนที่เป็นผู้ถูกกำกับมาเป็น ไม่งั้นก็จะเหมือนเอาผู้เล่นมาเป็นกรรมการเสียเอง ก็อาจจะไม่เป็นธรรมกับผู้เล่นอื่น

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

อย่างไรก็ตาม การกำหนดคุณสมบัติในแง่ที่มา-สัดส่วนตัวแทน อาจไม่จำเป็นต้องเป็น “กรรมการโดยตำแหน่ง” ก็ได้ เช่นอาจระบุกว้างๆ ให้มีภาคเอกชนที่เกี่ยวข้องกี่คนหรืออย่างน้อยกี่คนก็ได้ เช่นในร่างพ.ร.บ.คอมพิวเตอร์ ฉบับ 30 ก.ย. 2559 ที่ยังอยู่ในระหว่างพิจารณา มาตรา 20/1 ที่มีการตั้งคณะกรรมการกลั่นกรองข้อมูลคอมพิวเตอร์ วรรคสองระบุว่า “ให้รัฐมนตรีแต่งตั้งคณะกรรมการกลั่นกรองข้อมูลคอมพิวเตอร์ตามวรรคหนึ่งอย่างน้อยหนึ่งคณะ โดยแต่ละคณะให้มีจำนวนห้าคน ซึ่งสองในห้าต้องมาจากผู้แทนภาคเอกชนที่เกี่ยวข้องและให้ได้รับค่าตอบแทนตามที่คณะรัฐมนตรีกำหนด”

ความรู้และประสบการณ์

สำหรับการกำหนดคุณสมบัติด้านความรู้หรือประสบการณ์ของกรรมการ กฎหมายบางฉบับอาจจะระบุลงไปเลยว่า ต้องการกรรมการที่มีความเชี่ยวชาญด้านไหนๆ กี่คน (เช่น ให้มีกรรมการด้านกฎหมาย 1 คน ด้านผู้บริโภค 1 คน ด้านวิศวกรรม 1 คน) ในขณะที่กฎหมายบางฉบับอาจจะเขียนรวมๆ (เช่น ให้มีกรรมการด้านกฎหมาย ด้านผู้บริโภค ด้านวิศวกรรมรวม 3 คน แบบนี้ก็เป็นไปได้ว่า อาจจะได้นักกฎหมายด้านการคุ้มครองผู้บริโภคมา 1 คน [กฎหมาย+ผู้บริโภค] และวิศวกรอีก 2 คน)

ตัวอย่างเช่น ในมาตรา 6 ของพ.ร.บ.องค์กรจัดสรรคลื่นความถี่และกำกับกิจการวิทยุกระจายเสียงวิทยุโทรทัศน์ และกิจการโทรคมนาคม หรือ พ.ร.บ.กสทช. ฉบับปี พ.ศ. 2553 (ฉบับที่ใช้อยู่ปัจจุบันนี้) จะเขียนแจกแจงเลย ว่าในคณะกรรมการกสทช. จะกรรมการด้านใดจำนวนกี่คน

<figure class="wp-caption aligncenter" id="attachment_3463" style="width: 1065px"><figcaption class="wp-caption-text">มาตรา 6 พ.ร.บ.กสทช. พ.ศ. 2553</figcaption></figure>

 

ในขณะที่ในร่างมาตรา 6 ใหม่ที่กำลังแก้ไขอยู่ เขียนว่าอยากให้มีด้านใดบ้าง และเขียนให้จำนวนคณะกรรมการทั้งหมดแบบรวมๆ 7 คน

<figure class="wp-caption aligncenter" id="attachment_3462" style="width: 1307px"><figcaption class="wp-caption-text">มาตรา 6 ร่างพ.ร.บ.กสทช. (ฉบับที่สคก.ตรวจพิจารณาแล้ว – 2558)</figcaption></figure>

 

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

<figure class="wp-caption aligncenter" id="attachment_3461" style="width: 983px"><figcaption class="wp-caption-text">มาตรา 7 ร่างพ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล (ฉบับที่สคก.ตรวจพิจารณาแล้ว – 2558)</figcaption></figure>

 

เรื่องน่าสนใจอีกอันก็คือ ในกรณีที่ต้องการนักวิชาการ บางกฎหมายจะกำหนดว่าให้คัดเลือกจากอาจารย์ที่มาจากมหาวิทยาลัยของรัฐ เช่นในร่างพ.ร.บ.คอมพิวเตอร์ ฉบับ 17 ส.ค. 2559 (ร่างฉบับนี้เก่าแล้ว ปัจจุบันหน้าตาที่มาเปลี่ยนไปแล้ว ยกมาเป็นตัวอย่างเท่านั้น) มาตรา 20/1 ที่มีการตั้งคณะกรรมการกลั่นกรองข้อมูลคอมพิวเตอร์ มีตอนหนึ่งเขียนว่า “ผู้ทรงคุณวุฒิซึ่งมีความรู้ความเชี่ยวชาญด้านการสื่อสารมวลชนที่รัฐมนตรีแต่งตั้งจากอาจารย์มหาวิทยาลัยของรัฐหนึ่งคน” แบบนี้อาจารย์มหาวิทยาลัยเอกชนก็อดไป หรือแม้จะระบุแค่เพียง “อาจารย์” ก็อาจทำให้คนที่มีความรู้เรื่องนั้นแต่ไม่ได้อยู่ในภาคการศึกษาหมดสิทธิ์เช่นกัน

<figure class="wp-caption aligncenter" id="attachment_3460" style="width: 1290px"><figcaption class="wp-caption-text">มาตรา 20/1 ร่างพ.ร.บ.คอมพิวเตอร์ (30 ก.ย. 2559)</figcaption></figure> กรรมการเฉพาะกิจ

สำหรับ “กรรมการเฉพาะกิจ” คณะกรรมการบางชุดอาจอนุญาตให้มีการเชิญบุคคลภายนอกที่ปกติไม่ใช่กรรมการมาเป็นกรรมการเฉพาะการประชุมหนึ่งๆ ที่เห็นว่าน่าจะเป็นประโยชน์ด้วยก็ได้ ตัวอย่างเช่น ในพ.ร.บ.สภาความมั่นคงแห่งชาติ พ.ศ. 2559 ที่ในมาตรา 6 วรรค 3 พูดถึง “สมาชิกเฉพาะกิจ” ที่มีฐานะเหมือนสมาชิกปกติ “เฉพาะการประชุมที่ได้รับเชิญ”

<figure class="wp-caption aligncenter" id="attachment_3464" style="width: 1134px"><figcaption class="wp-caption-text">มาตรา 6 พ.ร.บ.สภาความมั่นคงแห่งชาติ พ.ศ. 2559</figcaption></figure> อายุของตัวกรรมการ

สิ่งหนึ่งที่ร่างพ.ร.บ.กสทช.ที่ตอนนี้อยู่ในสภา เปลี่ยนแปลงไปจากพ.ร.บ.ฉบับปี 2553 ที่ใช้อยู่ในปัจจุบัน ก็คือ ช่วงอายุ ที่จะเป็นกรรมการกสทช.ได้ จากปัจจุบัน 35-70 ปี เปลี่ยนเป็น 45-65 ปี ซึ่งก็นึกเหตุผลไม่ออก

ลองดูเกณฑ์อายุของสมาชิกคณะกรรมการอื่นๆ ได้เป็นตารางนี้

กรรมการ / คณะกรรมการ อายุไม่ต่ำกว่า อายุไม่เกิน กรรมการ คณะกรรมการกิจการกระจายเสียง กิจการโทรทัศน์และกิจการโทรคมนาคมแห่งชาติ (ร่าง) 45 65 กรรมการผู้ทรงคุณวุฒิ คณะกรรมการดิจิทัลเพื่อเศรษฐกิจและสังคมแห่งชาติ (ร่าง) 65 กรรมการ คณะกรรมการคุ้มครองข้อมูลส่วนบุคคล (ร่าง) – กรรมการผู้ทรงคุณวุฒิ คณะกรรมการคุ้มครองผู้บริโภค – กรรมการ คณะกรรมการสิทธิมนุษยชนแห่งชาติ 35 – กรรมการผู้ทรงคุณวุฒิ คณะกรรมการพัฒนาการบริหารงานยุติธรรมแห่งชาติ 35 – กรรมการ คณะกรรมการนโยบายองค์การกระจายเสียงและแพร่ภาพสาธารณะแห่งประเทศไทย 35 – กรรมการผู้ทรงคุณวุฒิ คณะกรรมการการมาตรฐานแห่งชาติ 25 – กรรมการผู้ทรงคุณวุฒิ คณะกรรมการกำกับการให้บริการด้านนิติวิทยาศาสตร์ 35 – กรรมการ คณะกรรมการกิจการกระจายเสียงและกิจการโทรทัศน์ (2543) 35 70 กรรมการ คณะกรรมการกิจการโทรคมนาคมแห่งชาติ (2543) 35 70 กรรมการ คณะกรรมการกิจการกระจายเสียง กิจการโทรทัศน์และกิจการโทรคมนาคมแห่งชาติ (2553) 35 70 กรรมการ คณะกรรมการการเลือกตั้ง (ร่างรธน.) – กรรมการ คณะกรรมการป้องกันและปราบปรามการทุจริตแห่งชาติ (ร่าง)

โดยรวมที่พบคือ ส่วนมากจะกำหนดอายุขั้นต่ำที่ 35 ปี และไม่ได้กำหนดว่าอายุห้ามเกินเท่าไร กฎหมายที่มีกำหนดเพดานอายุจะเป็นพวกกฎหมายไอซีที

คณะกรรมการคุ้มครองผู้บริโภคนี่ไม่ระบุอายุเลย ส่วนคณะกรรมการดิจิทัลกำหนดเฉพาะว่าไม่เกินเท่าไหร่ ไม่กำหนดขั้นต่ำ ในขณะที่คณะกรรมการการมาตรฐานแห่งชาติกำหนดอายุขั้นต่ำต่ำกว่าใคร คือ 25 ปี

ที่งงๆ คือ ตัวร่างพ.ร.บ.กสทช.กับร่างพ.ร.บ.ดิจิทัลฯ ก็มาไล่ๆ กันในรัฐบาลเดียวกัน แต่ทำไมเกณฑ์เรื่องนี้ต่างกัน คืออันแรกกำหนดอายุ 45 ปี อันหลังกำหนด 35 ปี เลยจะอธิบายว่าเป็นเรื่องอาวุโส ประสบการณ์ ก็อธิบายไม่ได้เต็มที่นัก เพราะคณะกรรมการกสทช.เองก็ต้องทำตามนโยบายของคณะกรรมการดิจิทัลฯอีกที (ซึ่งเป็นไปได้ที่กรรมการในคณะกรรมการดิจิทัลจะอายุน้อยกว่า)

และทำไปทำมา อายุกับประสบการณ์ สัมพันธ์กันแค่ไหน ประสบการณ์ 1 ปีในช่วง 1990-2000 กับประสบการณ์ 1 ปีในช่วง 2001-2010 เกี่ยวข้องกับเทคโนโลยีในปี 2020 เท่ากันไหม ที่สุดคือ มันโอเคแค่ไหนกับการกำหนดเกณฑ์อายุตายตัวขนาดนั้นในกฎหมาย

Audrey Tang รัฐมนตรีดิจิทัลของไต้หวันที่เพิ่งเข้ารับตำแหน่งไม่นานนี้ เธอพัฒนาเว็บค้นหาเนื้อเพลงจีนตั้งแต่อายุ 15 ปี ทำงานในบริษัทซอฟต์แวร์ตั้งแต่อายุ 19 ปี เป็นผู้จัดการโครงการโอเพนซอร์สอย่าง Perl เขียนซอฟต์แวร์สเปรดชีตออนไลน์เจ๋งๆ อย่าง EtherCalc เปิดบริษัทของตัวเองหลายแห่ง เป็นที่ปรึกษาให้กับบริษัทแอปเปิล ได้รับการยอมรับทั้งจากภาครัฐ ภาคเอกชน นักพัฒนาซอฟต์แวร์ และนักกิจกรรมสังคม แต่คุณสมบัติไม่น่าจะมาเป็นกสทช.ของไทยได้ในชุดหน้า เนื่องจากวันที่รับตำแหน่งเธออายุเพียง 35 ปี ไม่ถึงเกณฑ์ 45 ปี ของร่างพ.ร.บ.กสทช.ฉบับใหม่ … นี่ มาร์ก ซักเคอร์เบิร์ก ก็ไม่ได้เหมือนกัน ตอนนี้อายุแค่ 32 ปี

วาระดำรงตำแหน่ง

วาระการดำรงตำแหน่งของกรรมการจะถูกกำหนดไว้ในกฎหมายด้วย เช่น ถ้าเป็นกรรมการโดยตำแหน่ง ก็มาและไปตามตำแหน่งนั้นๆ ถ้าเป็นกรรมการที่สรรหามาก็อาจกำหนดให้ดำรงตำแหน่งวาระละ 3 ปี 4 ปี 5 ปี แล้วแต่ นอกจากนี้ยังอาจกำหนดด้วย ว่ากรรมการจะพ้นวาระเมื่อใด เช่น เมื่อตาย ลาออก ถูกถอดถอน ละเมิดกฎ หรืออายุเกิน

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

นอกจากนี้ ยังสามารถออกแบบให้การสรรหากรรมการเข้าสู่คณะกรรมการมีลักษณะเหลื่อมกันได้ด้วย ดังเช่น พ.ร.บ.องค์การกระจายเสียงและแพร่ภาพสาธารณะแห่งประเทศไทย พ.ศ. 2551 หรือพ.ร.บ.ไทยพีบีเอส ในมาตรา 23 วรรค 2 ออกแบบวาระของกรรมการนโยบายเอาไว้น่าสนใจดี

<figure class="wp-caption aligncenter" id="attachment_3465" style="width: 1115px"><figcaption class="wp-caption-text">มาตรา 23 พ.ร.บ.ไทยพีบีเอส พ.ศ. 2551</figcaption></figure>

 

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

ไม่รู้ว่าการออกแบบแบบนี้มีที่มายังไง แต่เห็นว่ามันอาจจะทำหน้าที่ได้อย่างน้อย 3 อย่าง

1) ลดโอกาสครอบงำโดยผู้สรรหากลุ่มเดียว คือในกระบวนการสรรหากรรมการ คนก็กลัวว่าจะมีอำนาจทางการเมือง ทุน หรือกระแสสังคมอะไรมาแทรกแซงกดดัน เช่น กลัวว่าสรรหาเข้ามาในสมัยรัฐบาลไหน ก็จะเป็นพวกรัฐบาลสมัยนั้น แต่พอทำให้วาระของกรรมการมันเหลื่อมกัน มันก็โอกาสที่จะลดการครอบงำแบบยกแผงได้ (เว้นว่ารัฐบาลจะมาจากพรรคเดียวกันต่อเนื่อง – แต่ในแง่นั้นก็อาจจะพอพูดได้ว่า ก็ประชาชนไว้ใจ)

2) ช่วยให้คณะกรรมการ “สดใหม่” อยู่เสมอ “อัปเดต” สมาชิกของคณะกรรมการได้ถี่ขึ้น แทนที่จะต้องรอให้ครบทุก 4 ปี แล้วอัปเดตรวดเดียว ก็สามารถอัปเดตเป็นขยักได้ทุก 2 ปี ตรงนี้ก็น่าจะช่วยให้หน้าตาของกรรมการสอดคล้องกับโจทย์ของสังคม ณ เวลานั้นมากขึ้น

3) ช่วยให้การทำงานของคณะกรรมการมีความต่อเนื่อง ไม่ใช่ว่าเปลี่ยนทีเดียวยกชุด แล้วมาเริ่มใหม่หมดจากศูย์กันทุกคน กว่าจะเข้าที่เข้าทางก็ต้องใช้เวลา ถ้าเปลี่ยนทีละครึ่ง ครึ่งที่อยู่มาก่อนก็ช่วยประครองครึ่งที่เพิ่งเข้ามาใหม่ได้

คณะกรรรมการที่เกี่ยวกับสื่อ ไอซีที และเทคโนโลยีต่างๆ ที่เปลี่ยนแปลงเร็ว มีประเด็นทางสังคมใหม่ๆ อย่างคณะกรรมการดิจิทัลและคณะกรรมการกสทช. น่าจะลองโมเดลนี้ดู สลับปีให้มันเหลื่อมกัน

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

อย่างไรก็ตาม การเพิ่มความหลากหลายในความคิดเห็นของกรรมการ-ลดโอกาสการครองงำโดยผู้สรรหากลุ่มเดียว ไม่ได้ทำได้ด้วยการทำให้การเข้าสู่วาระเหลื่อมกันเพียงอย่างเดียว แต่อาจใช้วิธีอื่นได้ด้วย เช่นการออกแบบอำนาจในการแต่งตั้ง การพ้นวาวระ และการถอดถอนกรรมการ ดังเช่นในกรณี ศาลสูงสุดแห่งสหรัฐอเมริกา (Supreme Court of the United States)  ที่ประกอบด้วยสมาชิก 9 คน (ประธาน 1 คน ตุลาการสทบอีก 8 คน) ประธานาบดีแห่งสหรัฐอเมริกามีอำนาจแต่งตั้งสมาชิกศาลสูงสุด (เสนอชื่อและให้สภารับรอง) แต่ไม่มีอำนาจถอดถอน สมาชิกศาลสูงสุดจะอยู่ในวาระไปตลอดชีวิตหรือจนกว่าจะลาออก ซึ่งในทางปฏิบัติ เนื่องจากสมาชิกจะตายไม่พร้อมกันและตายในช่วงประธานาธิบดีที่อาจจะมาจากคนละพรรคการเมือง ส่งผลให้สมาชิกของศาลสูงสุดมีความหลากหลายในทางอุดมการณ์การเมือง

โครงสร้างอำนาจ: คณะกรรมการรายงานต่อใคร ใครสั่งคณะกรรมการได้ ใครสรรหา-แต่งตั้ง-ถอดถอนกรรมการได้

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

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

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

ตัวอย่างเช่น กรณีผู้พิพากษาศาลฎีกาของสหรัฐอเมริกา (Supreme Court of the United States) ประธานาธิบดีมีอำนาจเสนอชื่อ (nominate) จากนั้นวุฒิสภาจะรับรอง (confirm) เพื่อแต่งตั้ง แต่เมื่อผู้พิพากษาคนนั้นรับตำแหน่งแล้ว ก็จะอยู่ในตำแหน่งไปตลอดชีวิต ไม่มีใครมีอำนาจถอดถอนได้ แม้แต่ประธานาธิบดี (เชื่อว่าเพื่อให้การทำงานไม่ถูกแทรกแซง)

หรือคณะกรรมการบางชุด ก็อาจจะมีกระบวนการสรรหาที่ละเอียดหรือ “ซับซ้อน” ขึ้น โดยอาจจะมีจุดประสงค์เพื่อให้มีการคัดกรองที่ละเอียดขึ้น ได้รับการเสนอชื่ออย่างหลากหลายมีส่วนร่วมมากขึ้น ลดอำนาจสรรหาจากหน่วนงานใดหน่วยงานหนึ่งโดยตรง หรือจุดประสงค์อื่น

เช่น มาตรา 18 พ.ร.บ.องค์การกระจายเสียงและแพร่ภาพสาธารณะแห่งประเทศไทย พ.ศ. 2551 ก็กำหนดให้มีคณะกรรมการสรรหา 15 คน มาจากสมาคมสื่อ สภานักวิชาการสื่อ เอ็นจีโอ สภาทนายความ สสส. และปลัดกระทรวง โดยระบุชื่อตำแหน่งและชื่อหน่วยงานลงในกฎหมายเลย — ซึ่งก็ถามได้เหมือนกัน ว่าทำไมต้องเป็นองค์กรเหล่านี้ด้วย ถ้าต่อไปมีองค์กรอื่นหรือบุคคลอื่นที่น่าจะเหมาะสมกว่า ทำไมเขาถึงมามีส่วนร่วมสรรหาด้วยไม่ได้

เพื่อ “แก้ปัญหา” ดังกล่าว พ.ร.บ.องค์กรจัดสรรคลื่นความถี่และกำกับการประกอบกิจการวิทยุกระจายเสียง วิทยุโทรทัศน์ และกิจการโทรคมนาคม พ.ศ. 2553 พยายามเปิดช่องให้ตัวแทนจากกลุ่มอื่นที่ไม่ได้กำหนดชื่ออย่างเจาะจงไว้ในกฎหมายสามารถเข้าไปมีส่วนร่วมในการสรรหาได้ โดยกำหนดที่มาของผู้ถูกเสนอชื่อไว้ 2 ทาง ทางหนึ่งมาคณะกรรมการสรรหาที่กฎหมายระบุชื่อไว้ อีกทางหนึ่งมาจากสมาคมหรือนิติบุคคลที่ได้ลงทะเบียนไว้ตามมาตรา 9 จากนั้นรายชื่อจากทั้ง 2 ทางจะถูกรวมเข้าด้วยกันเพื่อให้วุฒิสภาเป็นผู้เลือกและแต่งตั้ง (กระบวนการนี้กำลังจะเปลี่ยนในร่างพ.ร.บ.กสทช.ฉบับใหม่)

เนื่องจากงานของรัฐสมัยใหม่มีความซับซ้อนข้ามประเด็นข้ามความรับผิดชอบมากขึ้น อีกทั้งรัฐยังมีแนวโน้มจะลงมือทำเองน้อยลง และผันตัวไปเป็นผู้อำนวยการ (facilitator) หรือผู้กำกับกิจการ (regulator) มากขึ้น จำนวนคณะกรรมการต่างๆ จึงมีมากขึ้นเรื่อยๆ การสรรหาคณะกรรมการก็มากขึ้นตาม ประเทศอย่างสหราชอาณาจักรต้องการให้กระบวนการสรรหาเหล่านี้เป็นไปด้วยมาตรฐานที่สม่ำเสมอ โปร่งใสตรวจสอบได้ และมีความรับผิดต่อสาธารณะ ก็เลยจัดการให้มีหน่วยงานที่มาทำหน้าที่กำกับการสรรหาแต่งตั้งอีกที ชื่อว่า “คณะกรรมการเพื่อการแต่งตั้งตำแหน่งสาธารณะ” (Commissioner for Public Appointments) โดยคณะกรรมการนี้จะไม่ทำการสรรหาแต่งตั้งเอง แต่จะเป็นผู้ตรวจสอบและรับรองว่าเป็นไปตามกฎที่วางไว้หรือไม่

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

แต่ไม่ใช่แค่คนที่อยู่บนหัวเท่านั้น แต่คนที่อยู่รอบๆ ที่จะทำงานด้วยกัน ช่วยเหลืองานกัน ก็มีส่วนเช่นกัน (และใครสั่งคนๆ นั้นได้? คนๆ นั้นต้องรายงานต่อใคร?) ว่าการทำงานจะมีอิสระและมีประสิทธิภาพได้แค่ไหน

โครงสร้างการทำงาน: คณะกรรมการมีใครช่วยงาน สั่งการใครได้

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

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

ร่างพ.ร.บ.การรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติ (ฉบับเสนอครม. ม.ค. 2558) นอกจากให้มีคณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติ (กปช.) แล้ว ในมาตรา 14 ยังตั้ง “สำนักงานคณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติ” ขึ้นมาเป็นสำนักงานเลขานุการช่วยงานกปช.ด้วย โดยมาตรา 17 ให้สำนักงานมีหน้าที่ 13 ข้อ ซึ่งรวมถึงการประสานความร่วมมือทางปฏิบัติในการดำเนินงาน ประสานงานเพื่อรวบรวมข้อมูล บริหารแผนงานตามคำสั่งคณะกรรมการ รับผิดชอบงานธุรการ งานวิชาการ งานการประชุม และงานเลขานุการของคณะกรรมการ และปฏิบัติงานอื่นใดตามที่คณะกรรมการหรือคณะรัฐมนตรีมอบหมาย และในมาตรา 21 กำหนดให้มีเลขาธิการสำนักงาน ดูแลรับผิดชอบการปฏิบัติงานของสำนักงาน ขึ้นต่อต่อประธานกรรมการกปช. และเป็นผู้บังคับบัญชาพนักงานและลูกจ้างของสำนักงาน

ในขณะเดียวกัน ร่างพ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล พ.ศ. … (ฉบับที่ผ่านการพิจารณาของสำนักงานคณะกรรมการกฤษฎีกาแล้วเมื่อ ก.ย. 2558) ในมาตรา 7 (ประกอบนิยามในมาตรา 5) กำหนดให้เลขาธิการสำนักงานคณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติ เป็นเลขานุการและกรรมการโดยตำแหน่งของคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล (และให้แต่งตั้งเจ้าหน้าที่ของสำนักงานมาช่วยงานได้อีก 2 ตำแหน่ง) และในมาตรา 16 ให้สำนักงานคณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติทำงานวิชาการและธุรการให้กับคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล

<figure class="wp-caption aligncenter" id="attachment_3488" style="width: 1024px"><figcaption class="wp-caption-text">โครงสร้างความสัมพันธ์ คณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติ – คณะกรรมการคุ้มครองข้อมูลส่วนบุคคล (ร่าง ก.ย. 2558)</figcaption></figure>

ซึ่งตรงนี้ก็ตั้งคำถามต่อได้อีก ว่าแม้ในบางกรณีหน้าที่ของงาน 2 ส่วนนี้ (มั่นคงไซเบอร์ และ คุ้มครองข้อมูล) จะส่งเสริมกัน แต่ก็มีบางกรณีที่หน้าที่อาจจะขัดกัน (เช่น คณะกรรมการมั่นคงไซเบอร์จะใช้อำนาจตามมาตรา 34 ของพ.ร.บ.มั่นคงไซเบอร์ สั่งเอกชนขอข้อมูลส่วนบุคคล แต่ทางคณะกรรมการคุ้มครองข้อมูลอาจจะไม่เห็นด้วย) แบบนี้จะทำอย่างไร

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

ถ้าลองดูที่แผนผังความสัมพันธ์ที่มาและที่ไปของอำนาจ ก็จะเห็นได้ว่า มันเอนไปทางฝั่งมั่นคงไซเบอร์มากกว่าด้านคุ้มครองข้อมูล ตรงนี้บอกอะไรกับเราไหม

** อัปเดต 28 พ.ย. 2559 — กมธ.สื่อสารมวลชน ของสภาขับเคลื่อนการปฏิรูปประเทศ เสนอปรับเปลี่ยนสัดส่วนของคณะกรรมการมั่นคงไซเบอร์ ให้เพิ่มกรรมการจากฝ่ายความมั่นคง(ทางการทหาร)เข้าไปอีก พร้อมให้พิจารณาแก้ไขร่างพ.ร.บ.มั่นคงไซเบอร์ส่วนอื่นๆ ตามยุทธศาสตร์ของฝ่ายความมั่นคงและเหล่าทัพ แปลว่าอำนาจก็ยิ่งเอนไปทางฝ่ายความมั่นคงทางการทหารมากขึ้นไหม? อำนาจในการคุ้มครองข้อมูลส่วนบุคคลในเชิงโครงสร้างคณะกรรมการก็อาจจะอ่อนลงโดยเปรียบเทียบหรือเปล่า? ถ้าวาดแผนผังใหม่ ก็จะได้แบบนี้ สังเกตตรงประธานคณะกรรมการมั่นคงไซเบอร์ จะเปลี่ยนจากรัฐมนตรีดิจิทัลเป็นนายกรัฐมนตรี และมีเพิ่มตำแหน่งรองประธาน 2 ตำแหน่ง หนึ่งในนั้นเพิ่มรัฐมนตรีกลาโหมเข้ามา

<figure class="wp-caption aligncenter" id="attachment_3489" style="width: 1024px"><figcaption class="wp-caption-text">โครงสร้างความสัมพันธ์ คณะกรรมการการรักษาความมั่นคงปลอดภัยไซเบอร์แห่งชาติ – คณะกรรมการคุ้มครองข้อมูลส่วนบุคคล (ฉบับสภาขับเคลื่อนการปฏิรูปประเทศเสนอ พ.ย. 2559)</figcaption></figure>

[นอกเรื่องนิด: พอดูจากข้อเสนอจากสภาขับเคลื่อนฯ ดูเหมือนนิยามคำว่า “ความมั่นคงปลอดภัยไซเบอร์” ที่หน่วยงานความมั่นคงโดยเฉพาะความมั่นคงทางทหารของไทยเข้าใจ จะรวมเรื่อง “เนื้อหาที่มนุษย์สื่อสารกัน” เข้าไปด้วย ไม่ใช่แค่เรื่องความมั่นคงปลอดภัยของตัวระบบสารสนเทศ — ซึ่งพอมองแบบนี้ก็ทำให้เข้าใจได้ ว่าทำไมกมธ.สื่อสารมวลชนถึงเข้ามาเกี่ยว]

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

ถ้ากฎหมายต่างๆ อยู่ในรูปแบบที่เครื่องอ่านได้ (machine readable) และทำลิงก์เชื่อมโยงระหว่างอำนาจของกฎหมายต่างๆ หน่วยงานต่างๆ ก็น่าจะสะดวกในการทำความเข้าใจกฎหมายและความสัมพันธ์ของอำนาจดีนะ

อ้างอิง
  1. การเข้าสู่ตำแหน่งที่เหลื่อมกันของคณะกรรมการไทยพีบีเอส (Facebook)
  2. ช่วงอายุของกรรมการ ในร่างพ.ร.บ.กสทช.ล่าสุด (ก.ย. 2559) (Facebook)
  3. มาตรา 7 ร่าง พ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล พ.ศ. ….
  4. มาตรา 7 ร่าง พ.ร.บ.องค์กรจัดสรรคลื่นความถี่และกำกับการประกอบกิจการวิทยุกระจายเสียง วิทยุโทรทัศน์ และกิจการโทรคมนาคม (ฉบับที่..) พ.ศ. ….
  5. มาตรา 8 ร่าง พ.ร.บ.การพัฒนาดิจิทัลเพื่อเศรษฐกิจและสังคม พ.ศ. ….
  6. มาตรา 11 พ.ร.บ.คุ้มครองผู้บริโภค (ฉบับที่ 2) พ.ศ. 2541
  7. มาตรา 6 พ.ร.บ.คณะกรรมการสิทธิมนุษยชนแห่งชาติ พ.ศ. 2542
  8. มาตรา 8 พ.ร.บ.พัฒนาการบริหารงานยุติธรรมแห่งชาติ พ.ศ. 2549
  9. มาตรา 19 พ.ร.บ.องค์การกระจายเสียงและแพร่ภาพสาธารณะแห่งประเทศไทย พ.ศ. 2551
  10. มาตรา 8 พ.ร.บ.การมาตรฐานแห่งชาติ พ.ศ. 2551
  11. มาตรา 11 พ.ร.บ.การให้บริการด้านนิติวิทยาศาสตร์ พ.ศ. 2559
  12. มาตรา 8 และมาตรา 14 พ.ร.บ.องค์กรจัดสรรคลื่นความถี่และกำกับกิจการวิทยุกระจายเสียงวิทยุโทรทัศน์ และกิจการโทรคมนาคม พ.ศ. 2543
  13. มาตรา 8 มาตรา 14 และมาตรา 50 พ.ร.บ.องค์กรจัดสรรคลื่นความถี่และกำกับกิจการวิทยุกระจายเสียงวิทยุโทรทัศน์ และกิจการโทรคมนาคม พ.ศ. 2543
  14. มาตรา 7 และมาตรา 20 พ.ร.บ.องค์กรจัดสรรคลื่นความถี่และกำกับการประกอบกิจการวิทยุกระจายเสียง วิทยุโทรทัศน์ และกิจการโทรคมนาคม พ.ศ. 2553
  15. มาตรา 222 ร่างรัฐธรรมนูญแห่งราชอาณาจักรไทย พ.ศ. …. (ฉบับลงประชามติ 7 ส.ค. 2559)
  16. มาตรา 232 ร่างรัฐธรรมนูญแห่งราชอาณาจักรไทย พ.ศ. …. (ฉบับลงประชามติ 7 ส.ค. 2559)
  17. มาตรา 6 พ.ร.บ.สภาความมั่นคงแห่งชาติ พ.ศ. 2559
  18. รายงานของคณะกรรมาธิการขับเคลื่อนการปฏิรูปประเทศด้านการสื่อสารมวลชน เรื่อง ผลการศึกษาและข้อสังเกตร่างพระราชบัญญัติว่าด้วยการรักษาความมั่นคง ปลอดภัยไซเบอร์ พ.ศ. ….
  19. มองกฎหมายเศรษฐกิจดิจิทัล ผ่านฐานคิดของฝ่ายความมั่นคง
  20. “ความมั่นคงไซเบอร์” แบบไทยๆ (Facebook)

bact: ประวัติกฎหมายลงทะเบียนซิมใน 3 จังหวัดภาคใต้ (2548 – ยุคก่อนประกาศกสทช.)

25 October, 2016 - 17:47

ความรู้ใหม่ มีกฎหมาย “พ.ร.บ.ควบคุมโภคภัณฑ์ พ.ศ. 2495” และมีทางจะเอามาใช้ในเรื่องข้อมูลข่าวสารแบบนี้ได้ด้วย

ค้นเร็วๆ เรื่องการลงทะเบียนซิมใน 3 จังหวัดชายแดนใต้ (ก่อนยุคกสทช.บังคับลงทะเบียนทั้งประเทศ) ได้ข้อมูลดังนี้

เมื่อปี 2548 ตอนที่รัฐบาลทักษิณเสนอจะให้มีการลงทะเบียนซิมการ์ดในพื้นที่ 3 จังหวัดชายแดนใต้ ด้วยเหตุผลด้านความมั่นคง (ป้องกันการจุดระเบิดด้วยโทรศัพท์มือถือ) มีข้อเสนอมาตรการหลายแบบอยู่ โดยอาศัยอำนาจของกฎหมายที่มีอยู่จำนวนหนึ่ง ซึ่งแต่กฎหมายก็ดูแลโดยกระทรวงต่างกัน

เม.ย. 2548

นายจาตุรนต์ ฉายแสง รองนายกรัฐมนตรี ในฐานะประธานการประชุมจัดระเบียบซิมการ์ดโทรศัพท์มือถือแบบเติมเงินเพื่อป้องกันการนำไปใช้เป็นตัวก่อเหตุจุดฉนวนระเบิดใน 3 จังหวัดชายแดนภาคใต้ ได้ข้อสรุปว่า

1) ขอความร่วมมือจากคณะกรรมการกิจการโทรคมนาคม (กทช.) ในการออกกฎหมายควบคุม

หาก กทช.เห็นว่าไม่สามารถดำเนินการได้ ก็จะใช้แนวทางที่สอง คือ

2) ใช้ พ.ร.บ.ควบคุมโภคภัณฑ์ พ.ศ. 2495 ของกระทรวงพาณิชย์ ที่กำหนดให้รัฐสามารถควบคุมโภคภัณฑ์เพื่อสวัสดิภาพของประชาชนและความมั่นคงของประเทศ

ตอนนั้นตัวแทนหน่วยงานความมั่นคงและการข่าวที่ร่วมประชุมมีอาทิ พล.ต.อ.ชิดชัย วรรณสถิตย์ รองนายกรัฐมนตรี และรัฐมนตรีว่าการกระทรวงมหาดไทย พล.อ.ประวิตร วงษ์สุวรรณ ผู้บัญชาการทหารบก พล.ต.อ.เพรียวพันธ์ ดามาพงศ์ รองผู้บัญชาการตำรวจแห่งชาติ พล.ต.ท.ปรุง บุญผดุง ผู้บัญชาการตำรวจสันติบาล และพล.ต.ท.จุมพล มั่นหมาย ผู้อำนวยการสำนักข่าวกรองแห่งชาติ

ผู้สื่อข่าวถามเรื่องการดักฟัง พล.ต.อ.ชิดชัย ตอบว่า การจัดระเบียบซิมไม่ใช่ทำเพื่อดักฟัง จะดักฟังได้ต้องใช้กฎหมายป้องกันและปราบปรามการฟอกเงิน (ปปง.) กฎหมายกรมสอบสวนคดีพิเศษ (ดีเอสไอ) รวมถึงกฎหมายยาเสพติด

ต่อมาได้มอบหมายให้กระทรวงเทคโนโลยีสารสนเทศและการสื่อสาร (ไอซีที) ไปดำเนินการ

พ.ย. 2548

กระทรวงไอซีที ออกประกาศกระทรวงฯ เรื่องการลงทะเบียนบัตรประจำตัวของผู้ใช้บริการ (ซิมการ์ด) โดยใช้อำนาจตาม มาตรา 11 ของพ.ร.ก.กำหนดการบริหารราชการในสถานการณ์ฉุกเฉิน พ.ศ. 2548 ข้อ 6

มาตรา 11 ในกรณีที่สถานการณ์ฉุกเฉินมีการก่อการร้าย การใช้กำลังประทุษร้ายต่อชีวิต ร่างกาย หรือทรัพย์สิน หรือมีเหตุอันควรเชื่อได้ว่ามีการกระทำที่มีความรุนแรงกระทบต่อความมั่นคงของรัฐ ความปลอดภัยในชีวิตหรือทรัพย์สินของรัฐหรือบุคคล และมีความจำเป็นที่จะต้องเร่งแก้ไขปัญหาให้ยุติได้อย่างมีประสิทธิภาพและทันท่วงที ให้นายกรัฐมนตรีโดยความเห็นชอบของคณะรัฐมนตรีมีอำนาจประกาศให้สถานการณ์ฉุกเฉินนั้นเป็นสถานการณ์ที่มีความร้ายแรง และให้นำความในมาตรา 5 และมาตรา 6 วรรคสอง มาใช้บังคับโดยอนุโลม เมื่อมีปรกาศตามวรรคหนึ่งแล้ว นอกจากอำนาจตามมาตรา 7 มาตรา 8 มาตรา 9 และมาตรา 10 ให้นายกรัฐมนตรีมีอำนาจดังต่อไปนี้ด้วย
[…]
(6) ประกาศห้ามมิให้กระทำการใดๆ หรือสั่งให้กระทำการใดๆ เท่าที่จำเป็นแก่การรักษาความมั่นคงของรัฐ ความปลอดภัยของประเทศ หรือความปลอดภัยของประชาชน

ส.ค. 2549

มติคณะรัฐมนตรี 2 ส.ค. 2549

  • กระทรวงไอซีทีขอความร่วมมือผู้ประกอบการให้ลงทะเบียน ณ จุดขาย ผู้ที่ไม่ได้แสดงตนในวันที่กำหนดจะถูกระงับสัญญาณ
  • ภายใต้พ.ร.ก.การบริหารราชการในสถานการณ์ฉุกเฉิน พ.ศ. 2548 (มาตรา 11) ได้ประกาศให้การซื้อขายซิมต้องมีการระบุหลักฐานแสดงตนตามประกาศกระทรวงไอซีที
  • กระทรวงไอซีทีแจ้งผู้ประกอบการทุกรายให้เข้มงวดในการตรวจสอบหลักฐานการแสดงตนของผู้ใช้บริการ
  • ประสานงานกับประเทศมาเลเซีย ที่จะให้มีข้อตกลงร่วมกันในการลดกำลังส่งสัญญาณโทรศัพท์เคลื่อนที่ข้ามชายแดน ขอความร่วมมือ กอ.สสส.จชต. ให้กำหนดพื้นที่เสี่ยงต่อการจุดชนวนระเบิดตามแนวชายแดนด้วยซิมที่ใช้สัญญาณจากมาเลเซีย
  • ให้ผู้ว่าราชการจังหวัดกำหนดแนวทางปฏิบัติเพื่อควบคุมการซื้อขายซิม ขอความร่วมมือผู้ประกอบการรายย่อยตรวจสอบหลักฐานและมีแบบฟอร์มบันทึกข้อมูลของผู้ซื้อทุกราย
  • กระทรวงไอซีทีรายงานต่อที่ประชุมหน่วยงานความมั่นคง ณ สำนักงานสภาความมั่นคงแห่งชาติ
ได้ผลไหม?

ส่วนความได้ผลของมาตรการนั้น เรียกว่าได้ผลอยู่ เพราะผู้ก่อการเลิกใช้โทรศัพท์มือถือจุดระเบิด หันไปใช้วิทยุสื่อสารจุดระเบิดแทน (ข้อมูลจากการพูดคุยกับคนในพื้นที่ ช่วงปี 2552-2554)

 

ภาพประกอบ: Micro SIM card โดย Tsahi Levent-Levi. สัญญาอนุญาตครีเอทีฟคอมมอนส์แบบแสดงที่มา 2.0

bact: โลกของเราขาวไม่เท่ากัน: ข้อคำนึงเพื่อเว็บขาวดำแต่พอดี

16 October, 2016 - 12:43

ในช่วงเวลาที่คนจำนวนมากโศกเศร้า การแสดงออกนั้นมีได้หลากหลาย ผู้ดูแลเว็บไซต์และบัญชีสื่อสังคมจำนวนหนึ่งเลือกที่จะแสดงผลหน้าเว็บทั้งหมดเป็นขาวดำ (จริงๆ คือเทาไล่ระดับ หรือ grayscale แต่ก็เรียกกันติดปากว่า “ขาวดำ” อ่ะนะ) หรือสีโทนหม่นๆ หน่อย (ด้วยการปรับ saturate)

อย่างไรก็ตาม มีข้อควรระวังด้วย เพื่อไม่ให้กระทบกับการใช้งานหรือเกิดความผิดพลาดระหว่างใช้งาน โพสต์นี้ผมรวมเอาข้อแนะนำจากหลายๆ คนที่เจอบนเฟซบุ๊กมารวมเอาไว้ ขอขอบคุณคุณ @Nutn0nFufu Dogu, และ Kasiti Panthanom ด้วยครับ

ในช่วงแรกจะพูดถึงข้อควรระวังพื้นฐาน วิธีเฉพาะหน้าเพื่อทำสีโทนขาวดำ จากนั้นจะพูดถึงปัญหา ทางแก้ไขระยะยาว โดยอ้างอิงส่วนหนึ่งจาก Web Content Accessibility Guidelines ของ W3C และ human interface guidelines ของแอปเปิล

ปรับสี ให้คำนึงถึงการใช้งานด้วย

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

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

สำหรับเว็บไซต์ที่

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

ไม่ควรปรับสี “ทั้งเว็บไซต์” ให้เป็นขาวดำ แต่ให้พิจารณาปรับเฉพาะจุด และอาจพิจารณาทางเลือกอื่น เช่น ปรับเฉพาะภาพโลโก้เป็นขาวดำ แสดงแบนเนอร์ด้านบนของทุกหน้า แสดงภาพใหญ่ในหน้าแรกหน้าเดียว หรือทำเป็น landing page แยกออกมาต่างหากก่อนเข้าหน้าเว็บหลัก (ไม่ค่อยอยากแนะนำเท่าไหร่สำหรับ landing page)

วิธีเฉพาะหน้า

ก่อนอื่นขอพูดถึง 2 เทคนิคที่ขณะนี้หลายเว็บไซต์ใช้อยู่ก่อน คือการใช้ CSS filter (ทั้ง grayscale() และ saturate()) กับการใช้ JavaScript แบบ “หว่านแห” ครอบจักรวาล เพื่อเปลี่ยนสี “ทั้งเว็บไซต์”

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

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

แม้เบราว์เซอร์รุ่นใหม่ๆ หน่อยปรับปรุงประสิทธิภาพของ filter grayscale() และ filter saturate() ให้ดีขึ้นมากแล้ว แต่ถ้าใช้ทั้งหน้ากับทุก element ก็อาจจะหน่วงบ้าง

จริงๆ แล้วในเรื่องนี้นั้น CSS filter ก็ยังทำงานได้เร็วกว่า JavaScript แต่สาเหตุที่บางคนเลือกใช้ JavaScript (เช่น grayscale.js) ก็เพราะตัว Internet Explorer ยังรองรับ CSS filter ได้ไม่เต็มที่

ซึ่งก็มาถึงปัญหาที่สอง คือ CSS filter ในแต่ละเบราว์เซอร์นั้นทำงานแตกต่างกันอยู่บ้าง และอาจทำให้เกิดพฤติกรรมที่ไม่พึงประสงค์

ตัวอย่าง CSS filter ที่ใช้กันมาก

[*|html|body|Element] {
    -webkit-filter: grayscale(100%);
    filter: grayscale(100%);
    filter: url('grayscale.svg#grayscale');
    filter: gray;
}

คุณ Fufu Dogu สรุปปัญหาที่พบบนเบราว์เซอร์ต่างๆ ไว้ดังนี้

  • Chrome – แสดงผลขาวดำได้ มีปัญหาเรื่อง z-index จะคำนวณผิดไปจากเดิม
  • Safari – แสดงผลขาวดำได้ อาจมีหน่วงบ้างถ้าเว็บใหญ่
  • Firefox – แสดงผลขาวดำได้ มีปัญหาเรื่อง position, z-index, ถ้าใช้ * เว็บหน้าเสียเลย
  • IE <= 9 แสดงผลขาวดำได้ มีปัญหาเรื่อง pseudo Element จะไม่ขาวดำ, IE 10-12 ใช้งานไม่ได้, IE 13-14 ใช้งานได้

z-index ในที่นี้คือเลขระบุตำแหน่ง “แกนลึก” หรือระดับชั้นของหน้าเว็บ นึกถึงว่าหน้าเว็บก็เหมือนกระดาษ และเราเอากระดาษมาซ้อนกันได้หลายๆ แผ่น วิธีระบุว่าเรากำลังพูดถึงกระดาษแผ่นไหนอยู่ ก็คือเลข z-index นั่นเอง (เลขยิ่งมากยิ่งอยู่บน, เลข 0 คือแผ่นหลังสุด) การอ้างอิง z-index ผิด จะทำให้อินเทอร์เฟซบางส่วนทำงานผิดพลาดได้ และส่งผลต่อการใช้งาน (เช่นโปรแกรมอาจจะสั่งให้เปลี่ยนการแสดงผลข้อความที่อยู่บนกระดาษแผ่นที่ 3 แต่พอใช้ filter ปุ๊บ โปรแกรมมันหากระดาษแผ่นที่ 3 ไม่เจอแล้ว ก็เลยเปลี่ยนข้อความไม่ได้)

ดังนั้นเว็บไซต์ไหนที่ซีเรียสกับความถูกต้องในการใช้งาน หลังแทรก CSS filter เข้าไป อย่าลืมทดสอบพวกการใช้งานหลักๆ ที่สำคัญๆ ด้วย ว่ายังใช้ได้ผลถูกต้องเหมือนเดิมไหม

สรุปคือ 2 วิธีนี้ ทำสะดวก ทำน้อยได้เยอะ แต่อาจมีผลกระทบกับประสิทธิภาพและความถูกต้องในการใช้งาน ดังนั้นจึงเหมาะกับการใช้งาน “แก้ขัด” เฉพาะหน้าไปก่อน ในระหว่างแก้ไขแบบงานละเอียด

ปรับสีแบบงานละเอียด

“งานละเอียด” ที่ว่า มี 2 ระดับความละเอียด (ไม่มีหลักอะไร แบ่งเอาเองนี่แหละ)

แบบแรกคือ ใช้ CSS override ทำ stylesheet ขึ้นมาใหม่อีกชุด แล้วแก้ไข CSS เพื่อแสดงผลขาวดำเป็นจุดๆ ไป (ไม่ได้สั่งให้ทำแบบครอบจักรวาลทุกจุด) เช่น แก้เฉพาะตัว img หรือกำหนด class ขึ้นมาเฉพาะอันหนึ่งแล้ว element ไหนต้องการให้เป็นขาวดำก็เพิ่ม class ดังกล่าวเข้าไป จากนั้นก็ไปประกาศใช้หลัง stylesheet หลัก เพื่อให้ค่าต่างๆ ตัว stylesheet ที่ประกาศทีหลังนี้ ไปทับ (override) ค่าเดิมของตัว stylesheet หลัก

แบบสอง ละเอียดขึ้นไปอีก คือออกแบบธีมใหม่เลย โดยให้คำนึงถึงด้วยว่า เมื่อ UI ถูกลดสีลงแล้ว จะส่งผลต่อการใช้งานอย่างไรบ้าง ผู้ใช้จะยังแยกแยะปุ่มต่างๆ ข้อความเตือนต่างๆ ได้เหมือนเดิมหรือไม่ (ซึ่งตรงนี้มันปรับด้วย CSS อย่างเดียวไม่ได้) มี visual element หรือ visual cue อะไรที่จะเสริมการแยกแยะได้อีกบ้าง

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

นอกจากนี้ยังสามารถเลือกคู่สีที่เหมาะสมสำหรับเว็บไซต์ของเราได้ คู่ไหนที่ contrast พอดี ใช้แล้วไม่ปวดตา โดยเฉพาะในส่วนที่เป็นข้อความสำหรับการอ่านควรใส่ใจให้มาก เพราะเป็นจุดที่สายตาของผู้ใช้จะอยู่กับมันมากที่สุด (อักษรสีขาวสว่างบนพื้นเทาแบบที่ Pantip.com ใช้อยู่นี่จะลายตามากสำหรับการอ่านข้อความยาวๆ)

W3C แนะนำไว้ใน Web Content Accessibility Guidelines (WCAG) ว่า contrast ratio ของสีตัวอักษรขนาดเล็กและพื้นหลังควรอยู่ที่อย่างน้อย 4.5:1 และตัวอักษรขนาดใหญ่ (14 pt bold หรือ 18 pt regular ขึ้นไป) ควรมี contrast ratio ที่อย่างน้อย 3:1

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

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

ทั้งหมดนี้ควรคำนึงถึงสาระที่ต้องการจะสื่อหรือประโยชน์ใช้สอย รวมถึงประโยชน์ของสาธารณะ โดยเฉพาะเรื่องที่เกี่ยวกับความปลอดภัยสาธารณะ

แปลงรูปเป็นขาวดำทีละเยอะๆ

สำหรับผู้ที่ต้องการแปลงรูปจำนวนมากให้เป็นขาวดำ บน Windows มีโปรแกรมฟรีอย่าง IrfanView และ XnView ช่วยได้ (สามารถปรับขนาด ตัดภาพ แปลงฟอร์แมต เปลี่ยนสีรูป เปลี่ยนชื่อรูป ได้ทีละเยอะๆ) ดูตัวอย่างการใช้ฟังก์ชัน batch processing จากคลิปนี้

<iframe allowfullscreen="true" class="youtube-player" height="402" src="https://www.youtube.com/embed/q-MmHwOxBvI?version=3&amp;rel=1&amp;fs=1&amp;autohide=2&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" style="border:0;" type="text/html" width="660"></iframe>

สำหรับคนใช้ OS X (หรือ macOS .. ฮ่วย) และถนัด Automator (มากับโอเอสอยู่แล้ว) ลองทำ Workflow ตามรูปนี้ (กล่องล่างสุดคือ Apply ColorSync Profile: Gray Tone ถ้าไม่มี ใช้ Apply Quartz Composition Filter: Black and White แทนก็ได้ แต่มันจะออกแนวทำรูปเก่า ไม่ใช่ปรับสีเทาอย่างเดียว)

เรียนรู้ร่วมกันเรื่องการใช้สีกับ UI

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

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

ตัวอย่างคำแนะนำจากแอปเปิลในการใช้สีในอินเทอร์เฟซของ iOS:

Be aware of colorblindness and how different cultures perceive color. People see colors differently. Many colorblind people, for example, find it difficult to distinguish red from green (and either color from gray), or blue from orange. Avoid using these color combinations as the only way to distinguish between two states or values. For example, instead of using red and green circles to indicate offline and online, use a red square and a green circle. Some image-editing software includes tools that can help you proof for colorblindness. Also consider how your use of color might be perceived in other countries and cultures. In some cultures, for example, red is used to communicate danger. In others, red has positive connotations. Make sure the colors in your app send the appropriate message.

ถอดความได้ดังนี้

“ให้คำนึงถึงภาวะตาบอดสีและการที่สีถูกรับรู้ต่างกันในต่างวัฒนธรรม

ผู้คนเห็นสีแตกต่างกัน ตัวอย่างเช่น คนที่ตาบอดสีจำนวนมากพบว่ามันยากจะที่จะแยกสีแดงออกจากสีเขียว (และแยกสีทั้งสองสีนั้นจากสีเทา) หรือแยกสีน้ำเงินออกจากสีส้ม ให้หลีกเลี่ยงการใช้สีดังกล่าวคู่กันในลักษณะที่มันจะเป็นเพียงหนทางเดียวที่จะแยกแยะระหว่างสถานะ 2 สถานะหรือค่า 2 ค่า

ตัวอย่างเช่น แทนที่จะใช้วงกลมสีแดงและวงกลมสีเขียวเพื่อบ่งบอกถึงสถานะออฟไลน์และออนไลน์ ให้ใช้สี่เหลี่ยมสีแดงและวงกลมสีเขียวแทน

ซอฟต์แวร์แก้ไขภาพบางตัวจะมีเครื่องมือที่ช่วยให้คุณตรวจสอบการใช้งานในภาวะตาบอดสี

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

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

ดูเพิ่มเติมเรื่องนี้ได้ที่ Understanding WCAG 2.0: Contrast และถ้าอยากทดลองว่าคนตาบอดสีเห็นสีอย่างไร มีซอฟต์แวร์จำลองให้ใช้ฟรีทั้งบน Windows และ Mac ชื่อว่า Color Oracle หรือถ้าจะลองกับหน้าเว็บไซต์แบบไม่ต้องลงโปรแกรมอะไรในเครื่อง ไปที่เว็บ Colorblind Web Page Filter

สรุป/ตัดจบ
  • พิจารณา ประโยชน์ใช้สอย+ความปลอดภัย ว่าเหมาะสมไหมที่จะปรับสีของทั้งเว็บไซต์ (ด้วยการแทรกโค้ดที่ยังไม่ได้ทดสอบผลกระทบ) หรือจะใช้วิธีอื่นแทน (เช่น ปรับสีเฉพาะโลโก้ หรือขึ้นแบนเนอร์เอา)
  • การบังคับปรับสีด้วยโค้ดลัดแบบ “หว่านแห” อาจทำได้หากเป็นการทำเฉพาะหน้าไปก่อน แต่ควรตรวจสอบตามหลังด้วย เพื่อซ่อมปัญหาที่น่าจะเกิดตามมาแน่ (โดยเฉพาะเรื่อง contrast) และหากทำได้ก็ควรเปลี่ยนไปใช้โค้ดที่เฉพาะเจาะจง ปรับสีเฉพาะจุด เลือกปรับสีด้วยมือจะดีกว่า
  • การใช้สีให้คำนึงถึงการใช้งาน
    • แผนภูมิ แผนภาพ แผนที่ หรือภาพถ่าย ที่สีมีความสำคัญ ให้พิจารณาคงสีเดิมไว้ หรือปรับลดสีลงให้ยังอยู่ในระดับที่ยังแยกแยะและใช้ประโยชน์จากภาพได้
    • ตัวอักษร ให้มี contrast ที่เหมาะสมเมื่อเทียบกับพื้นหลัง contrast ratio ที่แนะนำคือ 4.5:1 ขึ้นไป (สำหรับตัวอักษรขนาดเล็ก) และ 3:1 ขึ้นไป สำหรับตัวอักษรขนาดใหญ่ (14 pt bold หรือ 18 pt regular ขึ้นไป) – ลองดูตัวอย่างคู่สีโทนขาวดำ ที่คุณ Fufu Dogu ทำมา และดูตัวอย่างคู่สีอื่นๆ เพิ่มเติมที่ Color Contrast for Better Readability
    • ปุ่ม ป้ายแจ้งเตือน UI อื่นๆ ให้ตรวจสอบว่า หลังจากปรับสี ยังสามารถแยกแยะปุ่มที่อยู่ใกล้เคียงกันได้หรือไม่ โดยเฉพาะคำถามที่ให้ผู้ใช้เลือก 2 ทาง หากแยกลำบากให้เพิ่ม visual element เช่นสัญลักษณ์ต่างๆ เข้าไปเป็นตัวช่วย
  • ถ้าทำได้ ควรมีโหมดปกติให้ผู้ใช้สลับกลับมาได้ด้วย (เช่นที่เว็บไซต์ Jeban.com ทำ)
  • หากมีเวลา ลอง(ขอเวลาจากบอส)ศึกษา Web Content Accessibility Guidelines เพื่อการทำเว็บที่ทุกคนเข้าถึงได้

 

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

 

(“โลกของเราขาวไม่เท่ากัน” เป็นชื่อหนังสือที่ ม.ล.ปริญญากร วรวรรณ และ วรพจน์ พันธุ์พงศ์ เขียนร่วมกัน – สำนักพิมพ์ openbooks)

Kitt: พระบาทสมเด็จพระเจ้าอยู่หัวสวรรคต

14 October, 2016 - 23:22
ฉันทราบข่าวในตอนเย็นของวันที่ ๑๓ ตุลาคม ๒๕๕๙ ตลอดเวลา ๒ ปีก่อนหน้านั้น ฉันรู้ว่าเหตุการณ์นี้จะมาถึง ตั้งแต่ข่าวพระราชกรณียกิจหายไปจากโทรทัศน์ ข่าวเสด็จเข้ารักษาที่ศิริราช – รพ.ที่พระบิดาของพระองค์เป็นผู้สร้าง – ฉันถอนหายใจทุกครั้งที่ได้ทราบข่าวจากสำนักราชวัง จะทั้งหนักใจ หรือโล่งใจในบางคราว ก่อนหน้าไม่กี่วัน ฉันได้คุยกับหมอที่นับถือ คุณหมอตอบให้ฉันเข้าใจได้ว่าจากแถลงการณ์สำนักราชวังนั้น เราเหลือเวลาอีกไม่นานจริงๆ สองวันจากนั้น  วันที่ ๑๓ ตุลาคม ๒๕๕๙ รัชกาลที่ ๙ ในราชวงค์จักรีสวรรคต ฉันรู้สึกชา ไม่ได้ร้องไห้เลย ฉันมีหน้าที่ต้องทำในคืนนั้น หน้าที่ที่ต้องทำอย่างเหมาะสม ในฐานะข้าราชการในพระองค์ เช้าวันรุ่งขึ้น ฉันขับรถมาทำงานตามปกติ แลเห็นธงครึ่งเสา .. ฉันกลั้นน้ำตาไม่อยู่ สำหรับฉัน พระบาทสมเด็จพระเจ้าอยู่หัว สอนให้ฉันมีความเพียร ทำประโยชน์เพื่อคนอื่น เป็นพระองค์หนึ่งที่ทำให้ฉันรู้ว่า “ชาตินี้ ฉันเกิดมาเพื่ออะไร”