"ชีวิตคนเราไม่แน่ไม่นอน แต่ะคนมีจุดหมายปลายทางที่ต่างกัน"

วิธีการแก้ปัญหาเมื่อ Update Plugin และ Theme บน WordPress ที่ทำงานบน Docker แล้วเกิด Error “Could not create directory.”

May 7, 2016

เมื่อกี้ลอง Update ตัว Plugin กับ Theme ของ WordPress จาก Official Docker Image ผลปรากฏว่า มี Error เกิดขึ้นระหว่างการ Upgrade โดยมีข้อความว่า “Could not create directory.” เกือบทุก Plugin และ Theme เลยต้องมาหาสาเหตุว่า ทำไมถึง Upgrade ไม่ได้ ปัญหานี้จะเกิดขึ้นเมื่อคุณ Migrate ตัว WordPress จากที่อื่น มาใช้งานบน Docker แล้วเกิดปัญหาขึ้น เมื่อตัว Container ของ WordPress ไม่สามารถเขียนไฟล์ได้ เราต้องหาทางออกให้ได้สิ และแล้วก็พบคำตอบครับ อย่างแรก เราต้องเข้าไปใน Container ของ WordPress ก่อนครับ โดยใช้คำสั่ง docker exec docker […]

วิธีทำ nginx https Reverse Proxy และติดตั้ง SSL Certificate จาก Let’s Encrypt แบบง่ายๆบน Debian/Ubuntu

March 23, 2016

ที่จริงอยากจะเขียนเรื่องนี้เอาไว้สักพักแหละ เพราะติดปัญหานี้อยู่พอดีระหว่างการย้าย Server ไปยังผู้ให้บริการ Iass รายใหม่ เป็นการสร้าง Instance เครื่องเดียว ในเครื่องนั้นประกอบไปด้วย Docker Container ตามโปรเจ็คที่ทำงานอยู่ ถือว่าใช้งานเม็ดเงินให้คุ้มค่าแล้วกัน ทีนี้จำเป็นต้องทำ Reverse Proxy เพื่อ Forward ต่อเข้าไปใน Container ที่มี Web Application อยู่ + อยากได้ SSL แบบเขียวๆ ไม่แดงพอดี เลยหาวิธีทำและมาบอกกล่าวกันครับ เอาหล่ะ ผมจะเล่าให้ฟังเป็นขั้นๆไปนะครับ ติดตั้ง Package ที่จำเป็นก่อนการติดตั้ง เราจะต้องติดตั้ง Package ที่จะใช้ในการติดตั้งก่อน โดย Package พวกนี้จะใช้ในการดึงตัวติดตั้ง Let’s Encrypt มาจาก Repository โดยใช้คำสั่งนี้ apt-get -y install git bcapt-get -y install git bc […]

ประสบการณ์ย้ายค่ายเบอร์เดิมทั้ง 2 เบอร์ออกจาก AIS ไปยัง dtac และ my

March 7, 2016

ปกติเป็นคนใช้เครือข่าย AIS อยู่แล้ว เบอร์เก่าที่ใช้งานใช้เป็นรายเดือน เป็น Package iSmart ราคา 399 บาท ลดเหลือ 299 บาท โทร 100 นาที อินเตอร์เน็ตความเร็วสูงสุด 500 MB + KKBOX (ตอนหลังสู้ราคาไม่ไหว เพลงเริ่มไม่ตอบโจทย์ เลยยกเลิกไป) FUP อยู่ที่ 128 Kb (เป็นอะไรที่โดนใจมากช่วงนั้น เพราะโปร AIS ราคานี้ จะได้ FUP 64 Kb ทั้งนั้น) ใช้งานมาได้สักระยะ ก็ต้องมีเหตุจำเป็นต้องเปลี่ยนเบอร์ใหม่ เลยดำเนินการเปลี่ยนเบอร์เก่าเป็นเติมเงินแล้วเปิดเบอร์ใหม่ คราวนี้ก็ยังเลือก AIS เหมือนเดิมครับ ขอโปร iSmart ไป แต่ Shop บอกว่าตัว iSmart ไม่มีให้สมัครอีกแล้ว มีแต่ตัว iSWOP เท่านั้น ก็เอาวะ […]

มา debug code php ด้วย mamp + xdebug + sublime text กันเถอะตัวเธอร์

December 3, 2015

ผมเชื่อนะ ว่าโปรแกรมเมอร์ภาษา php เวลาเขียนโปรแกรม แล้วต้องการตรวจสอบค่าในตัวแปร หรือตรวจสอบการทำงานของฟังค์ชัน ก็คงหนีไม่พ้นฟังค์ชันเหล่านี้แน่นอน var_dump print_r echo บลาาาๆๆๆๆๆๆๆ จะดีไหม ถ้าเราสามารถสร้าง breakpoint แล้วตรวจสอบการทำงานต่างๆในขณะนั้น เหมือนพวก java พวก asp.net วันนี้ ฝันของพวกคุณเป็นจริงแล้ว!!! ด้วย tools ที่ชื่อว่า “xdebug” ที่จริงเรื่องนี้ไม่ใช่เรื่องใหม่ครับ  ผมบังเอิญท่องอยู่บนโลกออนไลน์เรื่อยๆ แล้วดั๊นไปเจอเข้า แล้วเห็นว่ามันเป็นอะไรที่น่าสนใจดี เลยอยากเอามานำเสนอดูครับ เอาหล่ะ เรามาลุยกันเลยดีกว่า ตั้งค่า MAMP Pro ผมเลือกใช้ MAMP Pro เนื่องจากใช้งานง่าย ทำงานบน OSX และมี Plugin ติดตั้งมาให้เยอะดี และตัว MAMP Pro ก็มีตัว xdebug ฝั่ง server-side ติดตั้งมาให้แล้ว แต่มันยังไม่ถูกเปิดใช้งานเป็นค่าเริ่มต้น (ด้วยเหตุผลทางด้านความปลอดภัยมั่ง) เราก็ต้องมาเปิดใช้งานมันเสียก่อน […]

มารู้จัก DUnit และมาเขียน Delphi โดยใช้ TDD กัน

October 20, 2015

โปรแกรมเมอร์หลายๆคน คงรู้จักการเขียน Automation Test กัน ซึ่งเครื่องมือก็แตกต่างกันไปตามภาษาที่ใช้ในการเขียน เช่น JUnit (Java), NUnit (c#), phpUnit (PHP) คราวนี้เรามาเรียนการเขียน Unit Test บน Delphi กันด้วยเครื่องมือที่ชื่อว่า DUnit DUnit เป็นเครื่องมือที่ใช้เขียนโปรแกรมทดสอบโปรแกรม (ฟังดูงงๆเนอะ) ในภาษา Delphi เป็นการเขียนโปรแกรมเพื่อเข้าไปทดสอบโปรแกรมระดับ Unit การใช้งาน DUnit นั้นง่ายกว่าที่คิดเยอะครับ (ตอนลองครั้งแรกนึกว่ายาก) โดยผมจะเอามาประยุกต์กับการพัฒนาซอฟแวร์แบบ Test-Driven Development (TDD) ที่กำลังเป็นที่นิยมกันอยู่ในตอนนี้ โดยผมจะเริ่มทำโดยการสร้าง Project ง่ายๆขึ้นมา โดยผมจะเริ่มเขียน Test Case ขึ้นมาก่อน แล้วค่อยๆเขียน Code การทำงานไปเรื่อยๆ ดูตามลำดับไปเรื่อยๆนะครับ ในตัวอย่าง ผมจะใช้ Delphi XE4 ในการพัฒนานะครับ การสร้าง Test Project […]

Letter Sealing มาเข้ารหัสข้อความใน LINE กัน

October 19, 2015

ปกติแล้ว เวลาส่งข้อความจากคนนึงไปอีกคนนึงผ่านแอบพลิเคชัน LINE ข้อความจะถูกส่งจากผู้ส่ง ผ่านการเชื่อมต่อที่ถูกเข้ารหัสไปยังเซิร์ฟเวอร์ของ LINE หลังจากนั้น เซิร์ฟเวอร์ของ LINE ก็จะเข้ารหัสข้อความแล้วส่งไปยังผู้รับอีกที ดังรูป http://developers.linecorp.com/blog/wp-content/uploads/2015/10/02-Current-implementation-of-LINE-message-delivery.png จะเห็นว่ากระบวนการนี้ จะถูกเซิร์ฟเวอร์ของทาง LINE นั้นมองเห็นข้อความของเราได้ แม้มันจะมีการเข้ารหัสการเชื่อมต่อมาแล้วก็ตาม ทาง LINE เลยออกฟิวเจอร์เพิ่มเติมขึ้นมา ชื่อว่า “Letter Sealing” Letter Sealing เป็นฟิวเจอร์ใหม่ของทาง LINE ที่เพิ่มขึ้นมาใน LINE เวอร์ชัน 5.3.0 โดยฟิวเจอร์นี้ จะทำให้ผู้ที่ส่งและผู้ที่รับข้อความเท่านั้น ที่สามารถอ่านข้อความได้ หรือเราเรียกว่า End-to-End Encryption ดังรูป http://developers.linecorp.com/blog/wp-content/uploads/2015/09/07-Message-delivery-in-Letter-Sealing.png จะเห็นได้ว่า ถ้าเปิดใช้งาน Letter Sealing แม้แต่เซิร์ฟเวอร์ของ LINE เอง ก็ไม่สามารถอ่านข้อความได้ โดยข้อความดิบ ที่ผ่านการถอดรหัสมาแล้ว จะถูกเก็บไว้ในเครื่องผู้ส่งและผู้รับเท่านั้น ทำให้เพิ่มความปลอดภัยในการดักฟังข้อความมากขึ้น ข้อมูลการทำงานด้านเทคนิค การทำงานของฟิวเจอร์​ Letter Sealing […]

วิธีเชื่อมต่อฐานข้อมูล MongoDB บน express.js

October 13, 2015

express.js เป็น node.js Web Framework ที่ได้รับความนิยมมากๆตัวนึงในตอนนี้ครับ ผมก็กำลังศึกษาและพิจารณาที่จะใช้ในโปรเจ็คของลูกค้าอยู่ (แทนการใช้งาน PHP) วันนี้เลยลองทำให้ตัว express.js สามารถเชื่อมต่อและทำงานกับฐานข้อมูล MongoDB กันครับ เบื้องต้น ทาง express.js ได้แนะนำ Library ตัวนึงคือ mongoskin ซึ่งการใช้ mongoskin นั้นง่ายมาก แต่มันจะไม่ยืดหยุ่นและไม่เป็นไปตามหลัก Design Pattern Model–view–controller (MVC) ซึ่งผมจะแนะนำ Library อีกตัวนึง ที่นิยมใช้ใน node.js ในการเชื่อมต่อฐานข้อมูล MongoDB ชื่อว่า mongoose ตัว mongoose สนับสนุน model driver ทำให้เราสามารถร่างตัว model ขึ้นมาเพื่อรองรับข้อมูลที่จะส่งเข้าไป MongoDB ได้ โดยการสร้าง model ขึ้นมาก่อนที่จะส่งไปยังฐานข้อมูล ทำให้เราสามารถตรวจสอบข้อมูลที่รับเข้ามาก่อน ว่ารูปแบบของข้อมูลที่รับเข้ามา ตรงกับที่เราต้องการรับเข้ามาหรือไม่ และที่สำคัญ […]

วิธีการตั้งค่า Multi IP Address ใน RouterOS บน Mikrotik

October 7, 2015

ที่จริงเรื่องนี้หาวิธีได้สักพักแหละ เขียนไว้เผื่อกันลืม ให้ Setup IP Address หลักลงไปใน RouterOS ก่อน เข้าไปเมนู IP -> Addresses แล้วเข้าไปเพิ่ม IP หลักเข้าไป กดปุ่ม Add New โดยเซ็ตตามที่ทาง ISP ให้เรามาให้เรียบร้อย หลังจากนั้นกดปุ่ม OK หลังจากนั้นให้ทยอยเพิ่ม IP Address เบอร์ต่อๆ ให้กับ RouterOS โดยกดปุ่ม Add New แล้วใส่ IP Address ที่ต้องการเพิ่มเข้าไปใหม่ โดยใช้ Subnet ที่ทาง ISP ให้มา (ถ้าเป็นเบอร์เดียว ให้ใช้ /32) แล้วกดปุ่ม OK หลังจากที่เราบอกให้ RouterOS รู้แล้วว่า IP Address ของเรามีอะไรบ้าง เราก็ต้องกำหนดเส้นทาง (Routing) […]