WordPress new editor

อีกไม่นาน WordPress เวอร์ชั่นถัดไป จะใช้ Editor ชื่อ Gutenberg เป็น default editor แทน โดยขยับให้ editor แบบเดิมไปเป็น plugin ชื่อ Classic editor ครับ วันนี้ก็ลองใช้ editor ใหม่นี้ และโพสต์เพจนี้ดูว่าใช้ยากมั้ย เมื่อ upgrade WordPress เป็น 4.9.8 ก็จะพบเพจเชิญชวน และ คำแนะนำ หน้าตา editor ก็ ประมาณนี้  ตัวเลือกก็เป็น ปุ่มเปิด/ปิด ด้วยเครื่องหมาย สามเหลี่ยม เพื่อเปิดรายการมาให้เลือก เช่น categories ที่ต้องการ เมื่ออยู่ที่แท็บ document แต่ถ้า cursor วางอยู่ในข้อความ จะย้ายไปที่แท็บ Block จะเห็น ตัวเลือกอีกชุด น่าจะใช้งานได้ดีกว่าแบบเดิม

Read More »

Ubuntu server 18.04 config static IP with ifupdown not netplan

เดิมก่อนหน้า server 18.04 จะออกมาให้ใช้งานกันนั้น จะเป็น server 16.04 เราตั้งค่า (config) static IP ให้กับ server ด้วยไฟล์นี้ /etc/network/interfaces ซึ่งก็คือ package ชื่อ ifupdown และ DNS resolver ที่ใช้ก็คือ resolvconf แต่ใน server 18.04 นี้ เปลี่ยนไปใช้ package ชื่อ netplan แก้ไขที่ไฟล์ /etc/netplan/01-netcfg.yaml และใช้ DNS resolver คือ systemd-resolve ซึ่งจะ connect สอบถามชื่อ DNS จาก internal DNS ที่ IP 127.0.0.53 (ตรวจดูด้วยคำสั่ง cat /etc/resolv.conf) (ย้ำ) บทความนี้ไม่ได้บอกเล่าให้ทุกคนต้องทำแบบนี้ เพียงแต่หากท่านมีงานเฉพาะอย่างที่ต้องการใช้แบบก่อนหน้านี้ หลังจากติดตั้ง Ubuntu server เสร็จ 1.แก้ไขไฟล์ /etc/default/grub ดังนี้ sudo nano /etc/default/grub เพิ่มบรรทัดนี้ GRUB_CMDLINE_LINUX=”netcfg/do_not_use_netplan=true” หรือหากต้องการใช้ชื่อ interface เป็น ethX เช่น eth0 เป็นต้น ก็ให้เพิ่มบรรทัดแบบนี้ GRUB_CMDLINE_LINUX=”net.ifnames=0 netcfg/do_not_use_netplan=true” ทำการ Save และ ออก 2.ทำคำสั่งนี้เพื่อ update grub sudo update-grub 3.ติดตั้ง ifupdown package sudo apt install ifupdown 4.ติดตั้ง resolvconf package sudo apt install resolvconf 5.รีบูต server เมื่อ login กลับเข้าไปใน command prompt สั่ง ping www.google.com สำเร็จ ก็แสดงว่าใช้งานได้ (เซิร์ฟเวอร์นี้ต้องได้รับอนุญาตออกเน็ตด้วยนะ) หรือไม่ก็ใช้คำสั่งตรวจสอบชื่อโดเมน ดังนี้ host www.google.com ก็จะต้องได้รับ output ที่แสดงว่าสำเร็จ สำหรับวิธีการตั้งค่าแบบ netplan ก็มีเว็บเพจที่เขียนไว้มากพอสมควร เช่น Ubuntu Bionic: Netplan posted by Joshua Powers on 1 December 2017 [ https://insights.ubuntu.com/2017/12/01/ubuntu-bionic-netplan ] ลองทำความเข้าใจรูปแบบใหม่นี้ได้เลย Output ของค่า default เมื่อติดตั้ง Ubuntu server 18.04 เสร็จใหม่ ๆ (/etc/resolv.conf, /etc/network/interfaces และ /etc/netplan/01-netcfg.yaml) Output ของไฟล์ที่ใช้ในการตั้งค่า static IP เมื่อใช้ ifupdown package (/etc/resolv.conf และ /etc/network/interfaces) References: Disable netplan on Ubuntu 17.10 Posted on January 10, 2018 by ruchi [ http://www.ubuntugeek.com/disable-netplan-on-ubuntu-17-10.html ] Predictable Network Interface Names [ https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ ]

Read More »

Choose Network Type In VirtualBox

เมื่อต้องไปจัดอบรม และต้องใช้ Oracle VM VirtualBox สำหรับสร้าง Virtual Machine (VM) จำนวนหนึ่ง (มากกว่า 1 ตัว ฮ่า ๆ) เราจำเป็นจะต้องรู้ว่า สภาพแวดล้อมของห้องบริการคอมพิวเตอร์ที่เราไปขอใช้งานนั้น จัด IP ให้กับเครื่อง Windows แบบใด เช่น ในกรณีที่มีการปล่อย DHCP IP แบบเหลือเฟือ การเลือกชนิด network ของ VM แต่ละตัว ก็ง่าย เราก็เลือกตั้งค่าเป็น Bridges ซึ่งแบบนี้ VM แต่ละตัวก็จะได้ IP อยู่ในชุดเดียวกันกับ Windows แต่หากจัด IP แบบตายตัวให้กับ MAC Address ของ PC นั้นเลย และไม่ปล่อย DHCP IP เพิ่มให้ อย่างนี้ เราก็ต้องออกแบบว่าจะให้ VM (Guest) เหล่านั้นใช้ IP อะไร จะทำงานร่วมกันได้อย่างไร และจะให้ VM เหล่านั้น ติดต่อกับ Windows (Host) ด้วยหรือไม่ แบบแรก NAT Network แบบนี้ VirtualBox จะสร้าง network จำลองขึ้นมาในโปรแกรมมันเองเท่านั้น ผลลัพธ์คือ VM (Guest) ทุกตัวจะทำงานร่วมกันได้ แต่จะติดต่อกับ Windows (Host) ไม่ได้ แบบนี้ VM (Guest) ทุกตัวจะได้รับ IP อยู่ในชุดที่ใช้สำหรับ NAT นั่นคือ 10.0.2.0/24 และ VM แต่ละตัวเมื่อได้ IP จะได้ค่า IP ของ DNS server ที่เครื่อง Windows ใช้งานมาให้ด้วย ทำให้ VM สามารถติดต่อไปใช้งาน Internet ได้ ตัวอย่างเช่น VM 2 ตัว ตั้งค่า network ชนิด NAT Network VM ตัวที่ 1 จะได้ IP 10.0.2.6 และได้ค่า IP DNS Server ชุดที่ใช้ใน Windows (Host) ใช้งาน Internet ได้เลย VM ตัวที่ 2 ได้ IP 10.0.2.15 และใช้คำสั่ง ping ไปยัง VM ตัวที่ 1 ได้ แต่ Windows (Host) จะใช้คำสั่ง ping VM ทั้ง 2 ตัว ไม่ได้ สำหรับวิธีการตั้งค่า NAT Network ก็เข้าไปที่ File > Preferences > Network  และเราสามารถแก้ หรือ เพิ่มใหม่ ได้ แบบที่สอง Host-Only Adapter แบบนี้ VirtualBox จะสร้าง Virtual network adapter เพิ่มลงใน Windows OS ให้ด้วย ผลลัพธ์คือ VM (Guest) ทุกตัวจะทำงานร่วมกันได้ และติดต่อกับ Windows (Host) ได้ แต่แบบนี้ VM (Guest) ทุกตัวจะได้รับ IP ในชุด 192.168.56.0/24 (ค่า default

Read More »

Windows CRLF to Unix LF Issues in Cygwin Shell Script

เมื่อเรารัน shell script ของโปรแกรม Cygwin for Windows ซึ่งมีการเขียนคำสั่งไปตัดเอาข้อความผ่านคำสั่ง (Command Line) ของ Windows มาใส่ในตัวแปรของ shell script เช่น ในตัวอย่างนี้คือคำสั่ง ipconfig เมื่อได้ข้อความที่ต้องการมาเราจะได้ \r แถมมาให้ด้วยต่อท้าย เพราะ Windows style line ending จะมี CRLF (\r\n)  ในขณะที่ Linux style line ending จะมี LF (\n) เท่านั้น น่าแปลกใจมากว่า เราเคยรัน shell script นี้ใน Windows 7 ใช้งานได้ แต่พอเป็น Windows 10 build 1709 มันรันไม่ได้   ปัญหา เมื่อเปิด Cygwin Terminal ขึ้นมา จะได้เป็น bash shell ในไฟล์ test.sh ดังตัวอย่างข้างล่างนี้ เมื่อสั่งรัน จะพบว่าพบข้อผิดพลาด ตัวแปร ZONEX จะไม่มีค่า ซึ่งจริง ๆ จะต้องได้คำว่า zone1 $ cat test.sh #!/bin/bash DHCPSERVER=$(ipconfig /all | grep -i “DHCP Server” | cut -d: -f2 | xargs) MAC=$(ipconfig /all | grep -A4 -i “^Ethernet Adapter Ethernet” | tail -1 | cut -d\: -f2 | tr – : | xargs) ZONEX=$(curl -s http://${DHCPSERVER}/dhcpd.txt | grep -i ${MAC} | awk ‘{print $2}’ | cut -d’_’ -f1) echo “DHCP SERVER is ${DHCPSERVER}” echo “MAC is ${MAC}” echo “Zone is ${ZONEX}” สั่งรันดูผลลัพธ์ด้วยคำสั่ง bash test.sh $ bash test.sh DHCP SERVER is 192.168.6.150 MAC is 50:7B:9D:30:2E:4B Zone is ผมก็ตรวจสอบด้วยวิธีการ debug คือ เพิ่ม -x ดังตัวอย่างนี้ $ bash -x test.sh ++ ipconfig /all ++ grep -i ‘DHCP Server’ ++ cut -d: -f2 ++ xargs + DHCPSERVER=$’192.168.6.150\r’ ++ ipconfig /all ++ grep -A4 -i ‘^Ethernet Adapter Ethernet’ ++ tail -1 ++ cut -d: -f2 ++ tr

Read More »

เตาะแตะไปกับ Docker ตอนที่ 13 Docker Machine

Docker Machine คือ tool ที่ใช้สำหรับจัดเตรียม (Provision) docker เป็น virtual hosts บน Mac หรือ Windows รวมถึง ติดตั้งเพิ่ม docker บน Native Linux Host ที่มีอยู่แล้วในเครือข่ายของคุณ ยิ่งไปกว่านั้นยังสามารถจัดเตรียม docker ไปบน cloud providers เช่น Azure, AWS, or Digital Ocean เป็นต้น Docker Machine จัดการ remote docker host เหล่านี้ด้วยการใช้คำสั่ง docker-machine การติดตั้ง Docker Machine ขึ้นอยู่กับว่าจะใช้บนระบบปฏิบัติการอะไร ถ้าเป็น Windows ก็ให้ติดตั้ง Docker for Windows ซึ่งจะได้ Docker Engine และ Docker Machine มาด้วยเลย แต่ถ้าระบบปฏิบัติการ Windows นั้นไม่ผ่าน requirements ที่จะรัน Docker for Windows ได้ คุณก็เปลี่ยนไปติดตั้ง Docker Toolbox แทนได้ ซึ่งต้องใช้ร่วมกับ Oracle VM VirtualBox แทน Hyper-V การใช้งาน Docker Machine จาก Windows ที่ติดตั้ง Docker Toolbox Docker Machine จะสร้าง VM พร้อมติดตั้ง Docker Engine ให้ด้วย ตัวอย่างการใช้งาน ทำนองนี้ docker-machine create –driver virtualbox vm1 เมื่อจะเข้าไปใช้เครื่อง vm1 ทำดังนี้ eval “$(docker-machine env vm1)” และทำคำสั่งอีก 1 คำสั่งตามที่มีข้อความแสดงขึ้นมา ตอนนี้เราก็สามารถใช้งาน docker ที่เครื่อง vm1 ได้แล้ว เช่น ทดสอบว่า docker ทำงานได้แล้ว docker run hello-world ออกโดยใช้คำสั่ง exit หรือหากต้องการรันคำสั่งครั้งเดียวที่เครื่อง vm1 โดยไม่ต้องเข้าไป ก็ใช้คำสั่งทำนองนี้ docker-machine ssh vm1 “docker ps”   การติดตั้ง Docker Machine บนระบบปฏิบัติการ Linux สำหรับการติดตั้ง Docker Machine บนระบบปฏิบัติการ Linux (ทดสอบกับ Ubuntu 16.04 server) จะต้องใช้คำสั่งดังนี้ curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && \ chmod +x /tmp/docker-machine && \ sudo cp /tmp/docker-machine /usr/local/bin/docker-machine   การใช้งาน Docker Machine จาก Linux เพื่อติดตั้ง docker engine ไปบน ubuntu ที่ยังไม่ได้ติดตั้ง docker ไว้ (To provision Docker hosts on remote systems) จะมีขั้นตอนหลายขั้นดังนี้ 1. ที่เครื่องใช้งานที่เราติดตั้ง docker-machine ไว้ ให้เราสร้าง public, private key pair ด้วยคำสั่ง “ssh-keygen

Read More »