Acrobat Reader DC รุ่นที่แจกฟรีนี่แหล่ะ ก็พอเพียงแล้ว — หยุดใช้โปรแกรมละเมิดลิขสิทธิ์เถอะ

จากที่ปฏิบัติหน้าที่ Helpdesk และได้เห็นนักศึกษาและบุคลากรของมหาวิทยาลัย ใช้โปรแกรมเถื่อนโดยเฉพาะ Adobe Acrobat ซึ่งจริงๆแล้ว เค้ามีตัวฟรี คือ Adobe Acrobat Reader ให้ใช้อยู่แล้ว อย่าไปละเมิดลิขสิทธิ์เค้าเลย ในบทความนี้ จะขอแนะนำความสามารถที่ “ของฟรี” มีให้ใช้ แต่บางคนอาจจะไม่รู้ ก็เลยไปละเมิดลิขสิทธิ์   ยุค Paperless หรือ ไร้กระดาษ ก็สามารถทำได้แล้ว ตัวอย่างเช่น มีเอกสาร PDF ที่ต้อง Print ใส่กระดาษ แล้วกรอกเอกสาร ลงลายเซ็นต์ แล้วก็ต้อง Scan กลับเข้าไปในระบบอีก … สุดท้ายก็ต้องเก็บกระดาษกองโต เพื่อรอเอาไปทิ้ง ทำไปเพื่ออะไร ?   ขอยกตัวอย่างการใช้งานกับเอกสารต่อไปนี้ http://group.psu.ac.th/docs/F_SD13.pdf http://www.personnel.psu.ac.th/fromper/form1.pdf   เริ่มจาก Download เอกสารมาเก็บไว้ในเครื่อง แล้วเปิดโปรแกรม Adobe Acrobat Reader DC นี่แหล่ะ แล้วคลิกที่ Fill & Sign ด้านขวามือ  ถ้าต้องการกรอกข้อมูลข้อความ ก็คลิกที่ Ab แล้วเลื่อนไปคลิกที่ตำแหน่งที่จะกรอกข้อมูล แล้วพิมพ์ไป  ตรงไหนที่เป็น Checkbox ก็เลือกได้ว่า จะเอาแบบ กากบาท หรือ เครื่องหมายถูก แล้วก็ไปคลิกที่ที่ต้องการ ต้องการใส่ลายเซ็นต์ ??? คลิกที่ Sign แล้วเลือก Add Signature จะใช้วิธี เซ็นต์บนกระดาษ แล้ว Scan เก็บภาพไว้ก็เลือก Image ส่วนใครจะเซ็นต์สด คลิก Draw แล้วใช้ S-Pen ให้คุ้มๆหน่อยครับ แล้วก็กดปุ่ม Apply (ทำครั้งเดียวนี่แหล่ะ หลังจากนั้นก็จะใช้งานได้ตลอด) จากนั้นก็เอามาวางในตำแหน่งที่ต้องการ แล้วก็ Save สิครับ รออะไร ??? กรณีเป็นเลขที่บัตรประชาชน เค้าก็สามารถเว้นระยะตัวอักษรได้อีก ให้เหมาะกับช่อง   หยุดละเมิดลิขสิทธิ์ แล้วทำงานแบบ Paperless กันเถอะครับ

Read More »

วิธีการติดตั้ง Docker บน Ubuntu 16.04

“อยากติดตั้ง Docker บน Ubuntu 16.04 ทำอย่างไร”          นอกจาก containner ที่เป็น lxd ของ Ubuntu แล้ว ก็ยังสามารถใช้ในรูปแบบ Docker เช่นเดียวกัน แต่ค่อนข้างยุ่งยากกว่าเล็กน้อย โดยถ้าเทียบประสิทธิภาพแล้วในส่วนของ lxd จะดีกว่าแต่ในแง่ของ Image ทาง Docker ยังมีมากกว่า (แต่อนาคตอะไรก็ไม่แน่นอน ขึ้นอยู่กับจะเอามาใช้ทำอะไรมากกว่า และมีคนทำมาให้ใช้อันไหนมากกว่า หรือถนัด Image เองแบบไหนมากกว่า สรุปชอบอันไหนใช้อันนั้นแล้วกันครับ) วิธีการติดตั้ง (Ubuntu 16.04) *Ref : https://docs.docker.com/engine/installation/linux/ubuntulinux/ เนื่องจากไม่มี docker ใน Ubuntu Package โดยตรง จึงต้องเพิ่ม source.list ก่อนดังนี้ sudo apt-get update sudo apt-get install apt-transport-https ca-certificates sudo apt-key adv –keyserver hkp://ha.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D echo “deb https://apt.dockerproject.org/repo ubuntu-xenial maindeb https://apt.dockerproject.org/repo ubuntu-xenial main” | sudo tee /etc/apt/sources.list.d/docket.list deb https://apt.dockerproject.org/repo ubuntu-xenial maindeb https://apt.dockerproject.org/repo ubuntu-xenial main จากนั้น Update Package ให้ล่าสุดอีกครั้ง sudo apt-get update จากนั้นทำการติดตั้ง Linux Kernel Extra sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual ทำการติดตั้ง Docker Engine ดังนี้ sudo apt-get install docker-engine จากนั้นทำการ Start Docker Service sudo service docker start ทำการทดสอบติดตั้ง Image Hello-World ดังนี้ sudo docker run hello-world จากนั้นสามารถใช้คำสั่งตรวจสอบ Version Docker ได้ดังนี้ sudo docker version จะเห็นว่าเพียงแค่นี้ก็ได้ Docker มาใช้งานแล้วครับ แถมอัพเดต Version ให้ตลอดด้วยครับ

Read More »

วิธีการติดตั้ง Docker บน Windows Server 2016

“อยากติดตั้ง Docker บน Windows Server 2016 ทำอย่างไร”          Feature ใหม่ของ Windows Server 2016 คือการใช้งาน Docker ที่สมบูรณ์มากขึ้น โดยใช้การจัดการผ่าน PowerShell Command แต่ยังไงก็ตามก็ยังไม่พ้นหน้าจอฟ้า ๆ ที่ใช้ในการติดตั้ง และตรวจสอบสถานะต่าง ๆ แต่เนื่องด้วยการรองรับที่สมบูรณ์มากขึ้น การใช้งานก็จะมีประสิทธิภาพไม่แตกต่างจากการรันบนระบบปฎิบัติอื่น ๆ เหมาะกับการนำมาใช้เพื่อลดการบริโภคทรัพยากร ช่วยให้ใช้สมรรถนะของเครื่อง Server เต็มประสิทธิภาพ และเหมาะสำหรับการใช้งาน Application ที่แตกตัวเพิ่มได้ตามจำนวนการใช้งานที่เพิ่มขึ้น จุดเด่นที่สำคัญอีกจุดคือ Windows Nano Server สำหรับผู้อยากใช้งาน Windows Server Container Image ขนาดเล็ก ซึ่งจะเขียนในหัวข้อต่อ ๆ ไปครับ วิธีการติดตั้ง (Windows Server 2016) *Ref : https://docs.microsoft.com/th-th/virtualization/windowscontainers/quick-start/quick-start-windows-server ทำการติดตั้ง OneGet PowerShell Module (ให้รันบน PowerShell ที่ Run As Administrator)  เมื่อขึ้นถามว่าจะติดตั้งหรือไม่ .ให้กด Y ตามด้วย Enter Install-Module -Name DockerMsftProvider -Repository PSGallery -Force จากนั้นใช้ OneGet ในการติดตั้ง Docker Version ล่าสุด เมื่อขึ้นถามว่าจะติดตั้งหรือไม่ กด A ตามด้วย Enter Install-Package -Name docker -ProviderName DockerMsftProvider จากนั้นทำการ Restart เครื่อง หลังจาก Restart มาจะเห็นว่าสามารถใช้คำสั่ง Docker บน Powershell ได้แล้วดังนี้ *หมายเหตุ : ในกรณีที่รันแล้ว error เกี่ยวกับ open //./pipe/docker_engine ให้เปิด firewall port 2375 ผ่าน powershell ที่รันด้วย administrator ดังนี้ # Open firewall port 2375 netsh advfirewall firewall add rule name=”docker engine” dir=in action=allow protocol=TCP localport=2375 # Configure Docker daemon to listen on both pipe and TCP (replaces docker –register-service invocation above) Stop-Service docker dockerd –unregister-service dockerd -H npipe:// -H 0.0.0.0:2375 –register-service Start-Service docker สำหรับการติดตั้ง Image ต่าง ๆ ถ้าไม่ได้ทำ Image เองสามารถหาจาก Docker Hub ได้ โดยขอยกตัวอย่าง Image ที่เป็น .net core ที่รันอยู่บน Nano Server ดังนี้ docker run microsoft/dotnet-samples:dotnetapp-nanoserver สำหรับ Command ต่าง ๆ ดูได้ที่ https://docs.docker.com/engine/reference/run/ ครับ **Image ที่ทดสอบลงให้ดูไม่สามารถใช้ทำอะไรได้นะครับ สำหรับการใช้งานจริงก็จะประมาณสั่ง Run + Option ต่าง ๆ เพื่อบอกว่าให้ทำอะไร ซึ่งจะยกตัวอย่างใน Blog ถัด

Read More »

Juju #06 – เชื่อม MySQL Master-Master เข้ากับ HAProxy

ต่อจาก Juju #05 – วิธีกระจายงานไปยัง MySQL แบบ Master-Master เมื่อสร้าง MySQL แบบ Master-Master Replication ได้แล้ว ก็มาเชื่อมกับ HAProxy เพื่อให้ Application ที่เขียน มองเห็นทั้งระบบเป็นชิ้นเดียว IP Address ของระบบต่างๆเป็นดังนี้ haproxy : 10.107.107.71 mysql-master1: 10.107.107.35 mysql-master1: 10.107.107.83 ขั้นตอนการติดตั้ง ที่ mysql-master1 ต้องสร้าง 2 Users ขึ้นมา ชื่อ haproxy_check และ haproxy_root ด้วยคำสั่งต่อไปนี้ mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) -e “INSERT INTO mysql.user (Host,User) values (‘10.107.107.71′,’haproxy_check’); FLUSH PRIVILEGES;” mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) -e “GRANT ALL PRIVILEGES ON *.* TO ‘haproxy_root’@’10.107.107.71’ IDENTIFIED BY ‘password’ WITH GRANT OPTION; FLUSH PRIVILEGES;” ที่ haproxy ติดตั้ง mysql-client ด้วยคำสั่ง sudo apt-get install mysql-client ทดสอบด้วยคำสั่ง mysql -h 10.107.107.35 -u haproxy_root -ppassword -e “SHOW DATABASES;” mysql -h 10.107.107.83 -u haproxy_root -ppassword -e “SHOW DATABASES;” แก้ไขไฟล์ /etc/haproxy/haproxy.cfg โดยเพิ่มบรรทัดต่อไปนี้ท้ายไฟล์ [3] frontend mysql-cluster bind *:3306 mode tcp default_backend mysql-backend backend mysql-backend mode tcp balance roundrobin server mysql-master1 10.107.107.35:3306 check server mysql-master2 10.107.107.83:3306 check และสุดท้าย ทดสอบด้วยคำสั่งต่อไปนี้ for i in `seq 1 6`; do mysql -h 127.0.0.1 -u haproxy_root -ppassword -e “show variables like ‘server_id'”; done ควรจะได้ผลประมาณนี้ จากนั้นก็สามารถพัฒนา Application โดยใช้ IP Address ของ haproxy ซึ่งในที่นี้คือ 10.107.107.71 และ Port 3306 ได้แล้ว ซึ่งเบื้องหลัระบบจะทำการ Replication กันเองทั้งหมด Reference: [1] https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication [2] https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing–3 [3] https://serversforhackers.com/load-balancing-with-haproxy  

Read More »

Juju #05 – วิธีกระจายงานไปยัง MySQL แบบ Master-Master

ต่อจาก Juju #04 – วิธีทำให้ WordPress กระจายงานไปยัง MySQL Slave ด้วย HyperDB ซึ่งเป็นวิธีการกระจายงานให้ MySQL แบบ Master-Slave จะต้องอาศัยความสามารถของ HyperDB Plugin ของ WordPress ในการทำงาน ซึ่งถ้าเป็นการพัฒนา Application ทั่วไปที่ไม่ใช่ WordPress ก็จะทำด้วยวิธีดังกล่าวไม่ได้ ในบทความนี้จะกล่าวถึง การสร้าง Load-Balanced MySQL แบบ Master-Master ซึ่งทำให้สามารถกระจายการ Write ไปยัง MySQL หลายตัวได้ (ในเบื้องต้น 2 ตัว) *** ในบทความต่อไป จะต่อด้วยการเชื่อมเข้ากับ haproxy *** ขั้นตอนการติดตั้งมีดังนี้ Deploy haproxy (ตั้งชื่อ haproxy-mysql) และ MySQL (ตั้งชื่อ mysql-master1 และ mysql-master2) ต่อไปนี้เป็นวิธีการติดตั้ง MySQL Master-Master Replication [1] บนเครื่อง mysql-master1 แก้ไขไฟล์ /etc/mysql/mysql.cnf ค้นหาคำว่า server-id จากนั้น Uncomment บรรทัดต่อไปนี้ server-id log_bin binlog_do_db จากนั้น ในบรรทัด – server_id = 1 – binlog_do_db ใส่เป็น Database Name ที่จะทำการ Replication เมื่อเสร็จแล้ว ก็ Save แล้ว Restart Mysql sudo service mysql restart แล้วเข้าใช้งานด้วยคำสั่ง mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) สร้าง User ที่จะทำหน้า Replicate ข้อมูล ด้วยคำสั่ง mysql> create user ‘replicator’@’%’ identified by ‘password’; และกำหนดสิทธิให้สามารถ Replicate ได้ ด้วยคำสั่ง mysql> grant replication slave on *.* to ‘replicator’@’%’; สุดท้ายใช้คำสั่งต่อไปนี้ เพื่อเรียกข้อมูลที่สำหรับการตั้งค่า mysql-master2 mysql> show master status; ได้ผลดังนี้ จากนั้นใช้คำสั่งต่อไปนี้ แล้วเก็บค่า FILE และ POSITION ไว้ เพื่อใช้ในขั้นตอนต่อไป บนเครื่อง mysql-master2 แก้ไขไฟล์ /etc/mysql/mysql.cnf เหมือนกับที่ทำบน mysql-master1 แต่เปลี่ยนค่า server_id เป็น 2 เมื่อเสร็จแล้ว ก็ Save แล้ว Restart Mysql sudo service mysql restart แล้วเข้าใช้งานด้วยคำสั่ง mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) สร้าง User ที่จะทำหน้า Replicate ข้อมูล ด้วยคำสั่ง mysql> create user ‘replicator’@’%’ identified by ‘password’; และกำหนดสิทธิให้สามารถ Replicate ได้ ด้วยคำสั่ง mysql> grant replication slave on *.* to ‘replicator’@’%’; ** ขั้นตอนต่อไปนี้ ทำที่ mysql-master2 (mysql-master1 ใช้ IP 10.107.107.35) mysql>  slave

Read More »