Hi All Readers,

Please be informed that I have started my new blog site at https://hittheroad.dev/

New contents will be published there. Contents in Medium will just stay here without additional updated.


TL;DR;

  • ใช้ SSH Terminal และรัน command line เพื่อ debug หา error

อาการ

  • กด “Check Configuration” หรือ “Restart” ใน Server Management แล้วมันช้ามากๆ
  • โดยปกติ Check Configuration จะใช้เวลา 1–2 วินาทีก็ทราบผลแล้ว
  • และ restart ก็จะใช้เวลานานหน่อย 1–2 นาที

ก่อนหน้าที่จะเจออาการนี้ ผมได้ config Sonoff integration เข้าไปและมีต้องแก้ไข python script ด้วย และด้วยความรีบทำให้ตกเครื่องหมาย single quote ไปโดยไม่รู้ตัว

หลังจากนั้นไม่ว่าจะ config อะไรเพิ่มมันก็จะแปลกๆ เพราะกด restart ก็ช้ามาก แม้จะรีบูต Pi ไปเลยก็ยังช้าผิดปกติเป็น 10 นาที

troubleshooting

  • อันดับแรก ติดตั้ง SSH add-on ก่อนเลย ถ้าเข้าไป search หาใน add-on store ก็ไม่ต้องแปลกใจนะครับ ให้เข้าไปที่ Admin → Advanced Mode แล้วปรับให้เป็น Enable ก่อน ถึงจะ search เจอ
  • หลังจากที่ติดตั้งและ start SSH เรียบร้อย อย่าลืม enable side bar menu
  • จากก็เข้าไปที่ Terminal แล้วเราก็จะสามารถใช้ command line เพื่อสั่งงาน Hass ได้แล้ว
  • คำสั่งที่ต้องลองคือ “ha core check” และ “ha core restart” ถ้ามี error อะไร ตัว hass ก็จะแจ้งบอกตรงนี้เลย ซึ่งผมก็เจอ error จาก Terminal นี้เลย


ผมเคยใช้ hass.io มาหลายปีแล้ว โดยใช้ Raspberry Pi 3B + MicroSD card โดยส่วนใหญ่จะทำ automation ที่ไม่ได้ซับซ้อนมาก แต่ก็ไม่มีใน App Smart Home ทั่วไป เช่น กรณีที่ไฟฟ้าดับช่วงกลางวัน ปัญหาที่จะเจอคือ หลอดไฟที่เป็น smart light ทั้งหลาย มันจะสว่างขึ้นมา ซึ่งเราสามารถทำ automation ให้ปิดหลอดไฟได้ ถ้าไฟเกิดติดขึ้นมาในช่วงกลางวัน

ปัญหาที่พบ

  • เมื่อใช้งาน hass บน Pi3B ไปซักพัก จะเจอปัญหา sdcard พัง หรือใช้งานไม่ได้ บูตไม่ขึ้น ซึ่งเป็นปัญหาที่พบกันบ่อยมาก ส่วนตัวผมเองเจอปัญหานี้ไป 3 รอบ แม้เราจะ backup configuration ทั้งหมดไว้ แต่การ setup ทุกอย่างใหม่หมด ก็เป็นงานที่เสียเวลาและเหนื่อยโดยใช่เหตุ
  • Note: ไม่นับปัญหาที่ power supply Pi3 จ่ายไฟไม่พอนะครับ อันนั้นเป็น classic problem ของ Pi เองไม่เกี่ยวกับ Hass … คำแนะนำคือ ซื้อ power supply ดีๆ ที่จ่ายไฟได้ 2–3 Amp เป็นอย่างน้อย

ทางออก

  • ว่ากันว่า สาเหตุของปัญหา MicroSD พัง เกิดจากการเขียนและอ่านไฟล์บน MicroSD บ่อยเกินไป
  • ดังนั้น วันนี้เราจะมา setup Hass บน USB Drive กัน เพื่อที่จะได้ใช้งานกันยาวๆ ไม่ต้องมาปวดหัวเรื่องปัญหา MicroSD อีกต่อไป ที่สำคัญคือความเร็วในการเขียนหรืออ่านไฟล์บน SSD นั้น เร็วกว่า SD Card…


เห็นบล็อกฝรั่งคนนึงแว้บๆ เกี่ยวกับเรื่อง nap 15 นาทีช่วงก่อนบ่าย เห็นแล้วก็อยากแชร์บ้าง เพราะผมก็เป็นคนนึงที่ติดนิสัยทำแบบนี้ไปแล้ว

งีบกี่นาทีดี

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

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

งีบช่วงไหน ที่ไหนดี

  • ปกติแล้ว ผมจะงีบทันทีหลังจากที่ทานอาหารกลางวันแล้ว เพราะมันจะเป็นช่วงที่ร่างกายเริ่มเหนื่อยหลังจากที่ทำงานมาทั้งเช้า
  • บางคนก็อาจจะสงสัยว่า กินแล้วนอนไม่เป็นกรดไหลย้อนเหรอ .. ผมก็ใช้วิธีกึ่งนั่งกึ่งนอนบนเก้าอี้ที่ไม่ได้แบนราบซะเลย และไม่ได้ตั้งดิ่งจนหลับไม่ลง
  • ส่วนสถานที่หลับนั้น ถ้าช่วงที่ไปทำงานปกติผมก็จะแว้บๆ ไปที่รถ เปิดกระจกให้ลมโล่งหน่อย ถ้าเป็นช่วง Work From Home ก็จะพักที่ห้องรับแขกที่มีเก้าอี้ที่มีระดับที่เหมาะสมกับการงีบ แน่นอนว่าอุปสรรคที่ใหญ่มากสำหรับการงีบที่บ้านคือ จะมีเด็กมากวน อันนี้ก็ต้องตกลงกติกากันให้เรียบร้อย ไม่งั้นก็จะแทบไม่ได้หลับเลย

ผลที่ได้

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


Background

I’m developing a solution for a client which requires both web, api and some workers. The solution must be deployed on premise which will utilizing Docker Swarm as the Docker platform. In the early stage, we will try with Docker Compose first.

API & workers are written in Javascript (actually Typescript) by using NestJS framework. We don’t have any issue with environment settings for the server side application. Just rely on Environment variables and consume them directly from process.env with some helps from DotEnv to override settings in local development.

Passing environment variables to SPA such as VueJS is another…


วันก่อนอ่านบล็อกคุณ MK (Blognone) เห็นแกกำลังทดสอบสั่งของสดออนไลน์จากหลายๆ เว็บชั้นนำในบ้านเรา เช่น BigC, Top, Lotus รวมถึงจากรายล่าสุดตลาดยิ่งเจริญด้วย

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

พี่กู๋บอกว่า ลองไปดูที่ facebook.com/songsoddelivery ดิ ก็เลยลองเปิดเข้าไปดูพบว่า หากจะสั่งของสดจากที่นี่ เค้าให้ไปดูรายการของที่สั่งได้จากเว็บ songsod.com ก่อน จากนั้นค่อยส่งรายการของที่ต้องการผ่านทาง Line หรือ Facebook Messenger เท่านั้น (เว็บแค่ List รายการของ ไม่สามารถสั่งผ่านเว็บได้)

*** Note ไว้นิดนึงว่า ผมทดสอบ ณ วันที่ 1 กันยายน 2560 ***

ตรวจเว็บกันก่อน

เปิดเว็บมาครั้งแรก ประทับใจเลย เพราะว่า response time ดีมาก แถม default เป็น HTTPS ซะด้วย

นอกจากนี้ยังใช้ technology ใหม่ๆ ไม่ว่าจะเป็น


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

ภาพหลังติดตั้งเสร็จแล้ว 2 ชุด ในแนวนอน

ในรูปที่เห็นเป็น 2 ชุดที่ติดตั้งเรียบร้อยแล้วนะครับ

ใน 1 ชุด จะประกอบไปด้วยตู้เก็บรองเท้าจำนวน 3 ตู้

ขนาดของตู้เล็กคือ กว้าง 51.5 cm — ลึก 15.9 cm — สูง 37.8 cm

ถ้านำมาต่อกันสามตู้ในแนวนอน ก็จะได้ความกว้างราวๆ 155 cm

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


MQTT เป็น protocol ที่ได้รับความนิยมมากในวงการ IOT เพราะใช้ network bandwidth ได้คุ้มค่า และใช้พลังงานแบตเตอรี่ค่อนข้างน้อย

MQTT ถูกพัฒนาขึ้นโดย Andy Standford-Clark (IBM) และ Alen Nipper (Eurotech ปัจจุบันคือ Cirrus Link) ตั้งแต่ปี 1999 เพื่อใช้ Monitor ระบบท่อส่งน้ำมันในทะเลทรายที่ห่างไกล การรับส่งข้อมูลต้องทำผ่านดาวเทียมซึ่งมีราคาแพงมากในขณะนั้น

รูปแบบการทำงานของ MQTT จะไม่ใช่แบบ request-response ที่เราคุ้นชิน (เช่น HTTP) แต่จะเป็นรูปแบบ Publish-Subscribe ซึ่งเป็น event driven ช่วยให้เราสามารถส่งข้อมูลไปหา client ได้ทันที

MQTT Broker เป็นตัวกลางในการเชื่อมต่อ ช่วยรับส่งข้อมูลระหว่าง sender และ receiver ที่ถูกต้อง

Sender ที่ต้องการ publish message ไปหา broker จะต้องระบุ Topic ที่ต้องการ publish ไปด้วยเสมอ ในขณะเดียวกัน client ที่ต้องการรับ message ก็ต้อง subscribe Topic ที่ต้องการไว้ก่อนเช่นกัน จึงจะสามารถรับข้อมูลจาก sender ได้

ข้อดีของการสื่อสารแบบนี้คือ ผู้ส่งและผู้รับข้อมูลไม่จำเป็นต้องรู้จักกัน แค่สื่อสารกันผ่าน Topic ที่ตนเองสนใจและต้องการมีส่วนร่วมเท่านั้น การนำไปใช้งานจึงค่อนข้างง่ายและเป็นอิสระมาก และยังสามารถ scale ระบบได้อย่างง่ายดาย…


ภาพประกอบไม่เกี่ยวข้องกับเนื้อหา

วันนี้มารีวิวเรื่องง่ายๆ กันก่อน โดยจะปรับค่า maximum open file บน Linux server เพื่อให้สามารถเค้นประสิทธิภาพของเครื่องออกมาได้แบบเต็มที่

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

การแก้ไขค่า maximum open file มีด้วยกันสองส่วนคือ

1. System Wide Setting

ทำการแก้ไข /etc/sysctl.conf เพิ่ม parameter ด้านล่างเข้าไป

fs.file-max = 2097152

จากนั้นรันคำสั่ง # sysctl -p เพื่อให้การแก้ไขมีผล และตรวจสอบผลการแก้ไขว่าถูกต้องหรือไม่ โดยดูจาก

cat /proc/sys/fs/file-max

2. User Level Setting

ทำการแก้ไข /etc/security/limits.conf แก้ไขค่าด้านล่างนี้

* soft nofile 300000
* hard nofile 300000

โดย * หมายถึง apply กับทุก user ในระบบ ในกรณีที่ทราบ username ที่รัน service นั้นๆ สามารถกำหนด ulimit ให้แต่ละคนโดยตรงโดยใช้ @username แทน * (ต้องรีบูตหลังแก้ไขไฟล์ limits.conf)

สามารถตรวจสอบ ulimit ว่าแก้ไขแล้วมีผลหรือไม่ โดยใช้คำสั่ง

# ulimit -Sn
# ulimit -Hn

คำเตือน

การแก้ไข limits.conf แบบด้านบน จะไม่สามารถใช้กับ service ที่ควบคุมการทำงานผ่าน systemd ได้ เช่น CentOS 7.0 ขึ้นไป จะต้องทำการแก้ไข per service ผ่าน…


สวัสดีครับ บล็อกแรกบนเว็บใหม่ๆ ซิงๆ DudeReview.net

ก่อนอื่นต้องแนะนำก่อนว่า เราเปิด DudeReview.net มาเพื่อเป็นเว็บสำหรับเผยแพร่ความรู้ที่เรา(คิดว่า)มี เอาไว้เป็นที่ให้เรารีวิวของเล่น gadget หรือแม้แต่ software review เราก็ทำได้

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

ตอนนี้ทีมงานเรามีกันยังไม่เยอะนะครับสี่ห้าท่าน ยังไม่แนะนำกันรายตัวนะครับ รอดูผลงานของแต่ละท่านกันเลยดีกว่า

* เว็บยังไม่มี logo ไม่มี graphic ใดๆ นะครับ โล้นๆ ไปก่อน มีเวลาก็ทำไปเรื่อยๆ ครับ

Phuwadon Danrahan

Fullstack coder, Microservice Architect, DIY Smart Home

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store