ชุบชีวิต Router เก่า ด้วย OpenWrt

ในขั้นตอนการออกแบบและวางระบบเครือข่ายต่าง ๆ ที่มีความซับซ้อน ปัจจัยหนึ่งที่เข้ามาเกี่ยวของกับการทำระบบเครือข่ายคือ อุปกรณ์เครือข่าย ที่จุดขายของอุปกรณ์คือความสามารถในการจัดการและรองรับ มาตรฐานทางเครือข่าย ต่าง ๆ ซึ่งแปรผันตามราคาของอุปกรณ์นั้นเองด้วย อุปกรณ์เครือข่ายที่ตกรุ่นหลายชิ้น ก็มักจบลงที่การเป็นขยะอิเล็กทรอนิก หรือเป็นวัตถุโบราณในครัวเรือน ในบทความนี้ เกิดจากที่ตัวผมเองต้องการวางระบบเครือข่ายใหม่ โดยมีการแบ่ง VLAN ให้กับอุปกรณ์ทั่วไปและ อุปกรณ์ IoT แต่ติดปัญหาที่ Wireless Router (ASUS RT-ARCH13) ที่มีอยู่นั้นไม่รองรับการทำ VLAN Tagging ผมจึงมองหาวิธีจัดการทำให้อุปกรณ์นี้ใช้งานได้โดยที่ไม่ต้องเปลี่ยนตัวอุปกรณ์ คำเตือน: การ Flash Firmware ที่ไม่ใช่ของบริษัทผู้ผลิต ทำให้อุปกรณ์หมดประกันทันที และมีความเสี่ยงที่อุปกรณ์เสียหายได้ (Brick) ควรศึกษารายละเอียดและขั้นตอนการติดตั้งอย่างละเอียด และ ศึกษาขั้นตอนการกู้คืน (Recovery) ทางผู้เขียนไม่รับผิดชอบในทุกกรณี (AT YOUR OWN RISK) เนื้อหาที่จะพูดถึงในบทความนี้ OpenWrt คืออะไร วิธีการตรวจสอบอุปกรณ์ที่ OpenWrt รองรับ การติดตั้ง (Flash) OpenWrt …

มีอะไรใหม่ใน Docker for Mac 2018-07-25

จากอัพเดทล่าสุดของ Docker for Mac วันที่ 25 กรกฎาคม 2018 ตาม Change Logs ผมก็ได้ทำการรวบรวมข้อมูลเฉพาะส่วนที่เป็น New Features มาให้ดูกันคร่าว ๆ Kubernetes บน Docker for Mac แบบอยู่บน Stable Release (เย้!) เปิดใช้ได้เลยจาก Docker Preferences > Kubernetes > เลือก Enable Kubernetes แล้วเลือก Kubernetes เป็น Default orchestrator แล้วก็กด Apply หลังจากที่ระบบสร้าง kubernetes เสร็จแล้วก็ใช้งานได้เลย ผ่าน kubectl ปกติ SOCKS Proxy สำหรับเข้าถึง Network ภายใน Docker ได้โดยตรง ปกติใน Docker …

ทำ Custom Domain ใน Docker แบบใช้ท่า docker-compose

คุณเคยประสบปัญหาแบบนี้ไหม ออกแบบระบบให้ยืดหยุ่นด้วยการเชื่อมต่อแต่ละ Service ผ่าน domain แต่พอจะทำ development environment มันช่างหน้าปวดหัว อยากจะเปลี่ยน domain ที่ใช้เรียกหากันใน docker service เหลือเกินนนน ทำไมต้องมานั่งทำ Reverse Proxy เพื่อให้ได้ Environment ที่เหมือน Production วันนี้เรามีสิ่งดีๆมานำเสนอ ที่มาคือมาจากตอนที่ผมกำลังทำ dev-environment บน local เป็น WordPress Platform ของ Pronto เอง เพื่อให้เราสามารถเทสพวก WordPress ที่เหมือนโปรดักชันในเครื่องเราเอง ทีนี้เพื่อความยืดหยุ่น เราได้ทำการเปลี่ยนการเชื่อมต่อ Service ต่างๆ แทนที่จะเป็นการ Point หา IP Address มาเป็นการ Point ไปที่ DNS เพื่อความยืดหยุ่นในหารเปลี่ยนแปลง ทีนี้พอมาทำเป็น Local Dev Environment เนี่ย …

[ขำขัน] ใช้ Slack แจ้งเตือนเมื่อรัน Command บนเครื่องเซิฟเวอร์เสร็จ

เคยไหมครับที่เราจะต้องรันคำสั่งบางคำสั่งที่ทำงานนานๆ อย่างเช่น dump database ขนาดมหึมา หรืออื่นๆ คืองานพวกนี้เราไม่ได้ต้องทำบ่อยๆ เวลาทำก็รันคำสั่งทิ้งไว้ใน Tmux แล้วก็ไปทำอะไรเพลิน กลับมาเช็คเรื่อยๆ ด้วยความขี้เกียจ เลยคิดว่าเราน่าจะมีอะไรมาเตือนเนอะ ว่า Command นั้นรันเสร็จรึยัง หรือ พังไหม เลยพาลไปนึกถึง Slack ซึ่ง mesodiar เคยเขียนไว้ เรื่อง [Cron] เขียน slackbot ส่ง notification เตือน standup meeting เลยคิดว่าน่าจะเอามาทำอะไรเล่นๆได้เร็วเพราะมีโค้ดมาเลย เอามายำๆ มาเริ่มกันดีกว่า เริ่มแรก เราจะสร้าง virtualenv และ virtualenvwrapper มาเพื่อไม่ให้โปรเจ็กของเราไปกระทบกับ python ของเครื่อง และจะได้ง่ายในการจัดการหรือพัฒนาต่อ $ mkvirtualenv lazy-bot ลง Slack API ใน virtualenv (lazy-bot) $ pip …

ทดลองสร้าง SSL Certificate บน Nginx .

รอบนี้เราจะมาทดลองทำ SSL Certificate ให้เว็บไซต์ของเราปลอดภัยขึ้นไปอีกนิดนึงบน nginx ครับ โดยจะพูดถึง SSL ก่อนนะครับ SSL ย่อมาจาก Secure Socker Layer ซึ่งได้ถูกพัฒนามาเป็น TLS(Transport Layer Security) ที่เป็นเทคโนโลยีการเข้ารหัสข้อมูล เพื่อให้การส่งข้อมูลผ่านเครือข่ายมีความปลอดภัยมากขึ้น โดยเรียกผ่านโปรโตคอลความปลอดภัยต่างๆ ตามการใช้งาน ที่อาจจะเคยได้ยินกันบ่อยๆเช่น HTTPS การที่เราสร้าง SSL ขึ้นมาเองเพื่อการทดลองนั้น จะเรียกว่าเป็น SSL แบบ Self-signed ซึ่งเป็นใบรับรองที่ใช้คอมพิวเตอร์เครื่องไหนสร้างก็ได้ แต่จะไม่ผ่านการรับรองจาก CA (Certification authority) ในการเข้ารหัส Certifacte Authority (CA) เป็นคนที่ออกใบรับรองดิจิตอล ใบรับรองดิจิตอลรับรองความเป็นเจ้าของ Public Key โดยมีชื่อเรื่องของใบรับรอง ใบรับรองอนุญาตให้คนอื่นใช้งานได้ โดยขึ้นอยู่กับลายเซ็นหรือยืนยันตัวโดยการทำ private key ที่สอดคล้องกับ public key ที่ถูกรับรอง ในรูปแบบความสัมพันธ์ที่เชื่อถือได้นี้ CA เป็นบุคคลที่สามที่เชื่อถือได้ …

Redirect ด้วยการใช้ rewrite บน nginx

จากบทความทีแล้ว ที่พูดถึงการทำ Redirect แบบ server block จาก domain หนึ่งไปหาอีก domain หนึ่ง คราวนี้เราจะมาพูดถึงการใช้คำสั่ง rewrite มาเพื่อ Redirect จาก domain เดียวกันแต่จะทำการเปลี่ยน slug (slug คือ สิ่งที่ต่อท้ายจาก domain หลัง “/”) ในการทำงานของผมนั้นจะยุ่งเกี่ยวกับการทำ SEO ให้กับลูกค้าด้วย ซึ่งเค้าอาจจะมี URL มาชุดหนึ่งที่ได้ซื้อมา แล้วต้องการให้ traffic ที่เข้ามานั้น ถูก redirect ไปยัง url ที่ต้องการ ในที่นี้ผมจะยกตัวอย่างโดยการที่ผมจะ redirect จาก rules ชุดหนึ่ง คือ http://sites1.com/blog-for-something/ ไปที่ http://sites1.com/blog/ http://sites1.com/who-am-i/ ไปที่ http://sites1.com/about-us/ http://sites1.com/eiei/ ไปที่ http://sites1.com/blog/ โดยผมจะเริ่มจากการเข้าไปสร้างไฟล์ …

[แชร์ประสบการณ์] ฝึกงานปากมันที่ PRONTO TOOLS

ช่วงเวลาปิดเทอมใหญ่ของนักศึกษาชั้นปีที่ 3 ที่ไม่ใช่ปิดเทอมใหญ่ปกติเหมือนที่เคยเจอมา กับงานที่ได้รับมอบหมายจากคณะที่ให้เราได้ไปลองฝึกงานเรียนรู้ประสบการณ์การทำงานจริง ในตอนนั้นไอ้นัตก็กำลังตื่นเต้นรอวันที่จะได้เริ่มต้นฝึกงานสักที เมื่อเข้าสู่วันที่ 1 มิถุนายน 2559 ความสนุกทั้งหมดจึงบังเกิด บรรยากาศออฟฟิต แบบ 360 ช่วยด้วยยย โดนแฝดรังแก   ในการฝึกงานของที่นี่วันก็ได้มาเจอเพื่อนๆที่มาฝึกงานด้วยกันก็ ตื่นเต้นดี๊ด๊า เพื่อนๆน่าร๊ากกกกก พี่ๆก็น่าร๊ากกกก   เด็กโข่งคนซ้ายมือสุดนั่นไม่เกี่ยว อิอิ   เริ่มมาถึงที่นี่เราก็ถึงกับร้องว้าว กับตู้เย็นคลังแสงเพิ่มพลังการทำงาน ซึ่งแรกๆก็เกร็งๆนะไม่กล้าไปหยิบอะไรมากิน เขิน -///-   แถมมีของกินอื่นๆอีกมากมาย ขนมปังกับท้อปปิ้งมากมาย หยิบได้ตลอด… แรกๆก็เขินๆเช่นกัน หลังจากนั้นพี่ๆก็เริ่มทำงานเทรน และ สอน ทักษะพื้นฐานต่างๆ อาธิ Python, Git, HTML, CSS, Bootstrap, Vagrant, Vim, Jenkins, TDD, ATDD การใช้ชีวิต ฯลฯ (อยากรู้มาลอง อิอิ) เพื่อเตรียมตัวก่อนไปทำงานกับทีม (หัวร้อนเลย) …

เรียนไปไม่ได้ใช้ แน่ใจหรอ?

คำพูดนึงที่ผมได้ยินจากปากหลายๆคนมาตลอดตั้งแต่เด็กจนเรียนมหาลัย ที่ติดหูอย่างนึงเลยคือคำพูดที่ว่า “เรียนไปก็ไม่ได้ใช้” ผมก็เชื่อคำพูดนี้มาตลอดนะ แบบเป็นพวกไม่ชอบเรียนเท่าไรนัก จนกระทั่งได้มาเรียนมหาลัยได้อยู่ห้องแลป SAIG ได้มีโอกาสได้ทำงานของห้องเล็กๆน้อยๆ ในช่วงแรกๆนั้นส่วนมากจะเป็นการหาความรู้นอกห้องเรียนซะมากกว่า แต่เมื่อเราได้ลองพัฒนาแอปพลิเคชันที่มีความซับซ้อนมากขึ้นเรื่อยๆ ทีนี้ความรู้แบบเชิงทฤษฎีโคตรๆก็เริ่มต้องเอามาใช้ละ และพอมาฝึกงานจริงๆที่ Pronto Tools (โปรโมตนิดนึง อิอิ) ในตำแหน่ง Infrastructure Engineer ทีนี้แหละภาพรวมหลายๆอย่างเริ่มเห็นชัดขึ้น หลายๆอย่างที่ทำจะเริ่มรู้สึกได้แบบว่า “เฮ้ย เรื่องนี้เราเคยเรียนมาแล้วนี่หว่า” หลายๆเรื่องไม่เคยคิดหรอกครับว่าเราจะได้เอามันมาใช้จริงๆ หรือบางที”เราก็เอามันมาใช้โดยไม่รู้ตัวด้วยซ้ำ” สิ่งที่พิมพ์มาทั้งหมดก็อยากให้น้องๆที่ได้มาอ่านเข้าใจว่า “ใครบอกว่า เรียนไปก็ไม่ได้ใช้หรอก อย่าไปเชื่อนะจ๊ะ 555” ความรู้ทุกอย่างมันมีความเชื่อมโยงของมันเองครับ อยู่ที่จะมากหรือน้อย แต่ไม่มีความรู้ไหนที่ไร้ค่า มีแค่มันไร้ค่าเพราะเราไม่คิดจะนำมันมาใช้ ความรู้จากการเรียนจะช่วยให้เราสามารถค้นหาและต่อยอดความรู้ให้เข้าใจได้อีก ยิ่งๆ ขึ้น ความรู้ทั้งใน และนอกห้องเรียนเมื่อมันประสานกันได้ คุณจะสนุกไปกับการหาความรู้ :3 หากย้อนกลับไปบอกตัวเองในอดีตได้… ก็คงอยากกลับไปบอกตัวเองประมาณนี้

[แชร์ประสบการณ์] โค้ดชิวๆ: หัดเขียน A.I. แบบ AlphaGo กันแบบชิวๆ

เมื่อวันที่ 25 เมษายน ที่ผ่านผมได้มีโอกาสได้ไปร่วมงาน โค้ดชิวๆ: หัดเขียน A.I. แบบ AlphaGo กันแบบชิวๆ บัตรขายดีมากกก ซื้อแทบไม่ทัน สถานที่ : LuanchPad สุรศักดิ์ จัดโดย สมาคมโปรแกรมเมอร์ไทย โดยผู้ที่มาแชร์ความรู้กับพวกเราคราวนี้คือ พี่ กานต์ อุ่ยวิรัช จาก Pronto Tools เริ่มต้นด้วยการพูดถึงตัว Machine Learning แบบพื้นฐานสุดๆ การ Generalize ข้อมูลต่างๆ แนะนำประเภทของ Machine Learning ให้ได้รู้จักกันแบบคร่าวๆ – Supervied Learning – Unsupervise Learning เราไม่บอก lable มัน ให้มัน Classify ให้ – Reinforcement Learning เปรียบเทียบกะการฝึกสัตว์เลี้ยง ต่อมาก็ถึงพระเอกของเรา AlphaGo คืออะไร AlphaGo …