Upgrade WordPress จาก MySQL 5.7 ไปเป็น 8.0 ใน docker

เสือกอุตริไปนั่งอัพเกรด image ใน docker เพราะอยากจะทำให้มันเป็นของใหม่ ๆ ก็ไปเจอ docker compose ของเว็บนี้แหละ มันใช้ mysql 5.7 อยู่ เลยไปค้น ๆ ดู ตอนนี้ mysql มันออก 8.0 แล้ว และไอ้ 5.7 เนี่ย มันหลายปีก่อนมากแล้ว เลยคิดว่า เออ อัพเกรดแม่งเลยละกัน เริ่มต้นจากอัพเกรดแม่งดื้อ ๆ เลย แก้ tag จาก 5.7 ไปเป็น 8.0.14 ซึ่งเป็นเวอร์ชั่นล่าสุดตอนนี้ แล้วก็สั่ง build เลย … ทำจนทุก container ขึ้น ok หมดก็นึกได้ว่า สัส!! ไม่ได้ backup อะไรไว้เลย

Caddy บน Docker กับ การขอ Cert บน Let’s Encrypt แล้วติด Rate Limit

ตอนโน้น เคยจดบันทึกเอาไว้เรื่องการใช้ Caddy บน docker แล้วมันจะเอา cert จาก let’s encrypt มาติดตั้งและ enable HTTPS ให้โดยอัตโนมัติ ทีนี้ใช้งานไปใช้งานมาสักพัก ก็เจอปัญหาใหม่ตอนที่พยายาม start container บ่อย ๆ แล้วมันไปเอา cert บ่อย ๆ จนติด rate limit ทำให้ไม่สามารถไปขอ cert ใหม่ได้ และส่งผลให้ไม่สามารถ start container ได้ rate limit คือจำนวนครั้งในการอนุญาตในการเข้าเรียกใช้งาน service ต่อช่วงเวลาหนึ่ง ๆ หรือจำนวนอะไรสักอย่าง ต่อจำนวนอะไรสักอย่าง ซึ่งทาง let’s encrypt ก็มีการชี้แจงไว้เต็มไปหมดที่ https://letsencrypt.org/docs/rate-limits/ ทีนี้ปัญหาที่เจอที่เป็น rate limit ในการไปขอ cert ตอน start container […]

แก้ปัญหา MutationObserver กับ document.getSelection ใน jest ด้วย polyfill

ตอนเปลี่ยนมาใช้ test framework เป็น jest ซึ่งใช้ JSDom เป็น dom หลักในการทดสอบ แทนที่จะใช้ dom ของ browser ทำให้บางครั้งเราเจอปัญหา feature บางอย่างที่มีไม่ครบ และครั้งนี้ปัญหาที่เจอคือ พอเอา QuillJS ซึ่งเป็น markdown editor มาใช้กับ angular ก็เจอปัญหาว่า MutationObserver is not defined กับ document.getSelection is not defined

ใช้ Jest ใน Angular แบบง่ายกว่าเดิม ด้วย jest-schematic

ในบันทึกก่อนหน้าโน้น เคยจดเอาไว้เรื่องเกี่ยวกับวิธีการใช้ Jest ใน Angular จะเห็นว่ามีขั้นตอนมากมายว่าจะใช้ jest ได้

Multilingual ใน Angular อีกที

ได้มีโอกาสมาลองเรื่องการทำ multilingual application บน angular อีกที ก็เจอว่า ของเก่าที่เคยทำไว้ มันทำไว้ตั้งแต่ angular 5 เลยเอามาลองปัดฝุ่นดูอีกที

ใช้ Sass ใน Angular

โดยปกติโปรเจคที่สร้างขึ้นด้วย angular cli มันจะใช้ css เป็น default format สำหรับการกำหนด stylesheet ของโปรเจค ซึ่งถ้าเราอยากจะใช้เป็นอย่างอื่น เราก็สามารถกำหนดได้ตั้งแต่ตอนสั่ง ng new ว่าจะเอาตัวไหน จนกระทั่ง angular 7 ออกมา ตัว cli จะถามว่าเราอยากได้ format ไหนสำหรับทำ stylesheet และเราก็สามารถเลือกได้เลยว่าจะใช้ตัวไหนระหว่าง CSS, SASS, SCSS, LESS, Stylus

ลองใช้ Recursive ในปัญหา Pascal Triangle

ลองเอาโจทย์ pascal triangle มาให้ทีมลองเล่นกันตอนทำ code kata รายละเอียดคือ ให้แสดง pascal triangle ตามความสูงที่กำหนด โดยหน้าตาของ pascal triangle จะเป็นแบบนี้

Benchmark ใน Go

ลองให้ทีมเล่น Code Kata จากโจทย์ที่อะกิเอามาให้ เป็นเรื่องให้ลองจับคู่วงเล็บดูว่า input ที่เป็น string ที่ใส่มามันจับคู่ถูกต้องหรือไม่ นั่นคือ ต้องจับคู่วงเล็บเปิด กับวงเล็บปิดเสมอ (ถ้าปิดมาก่อนเปิดไม่นับ เช่น “}{” หรือถ้ามีวงเล็บไขว้กัน เช่น “({)}” แบบนี้ก็ถือว่าไม่ถูก

ถูกต้องแต่ไม่ถูกต้อง

การที่โปรแกรมเราไม่มีบัก ไม่ได้แปลว่ามันเวิร์ค ทุกฟีเจอร์สามารถทำงานได้อย่างถูกต้อง ไม่ได้แปลว่ามันตอบสนองต่อธุรกิจได้จริง ทำไมล่ะ ทั้ง ๆ ที่เราทำของที่ถูกต้องทุกอย่างแล้ว ทำไมมันถึงไม่เวิร์คอีก ก็เพราะว่ามันถูกต้องแต่ไม่ถูกต้องนั่นเอง … อะไรวะ

F.I.R.S.T Principles ของ Unit Test

ถ้าพูดถึงคุณสมบัติของ unit test ที่ดี มันจะมีชุดของคุณสมบัติหนึ่งที่เรียกว่า F.I.R.S.T Principles ซึ่งเขียนอยู่ในหนังสือที่ชื่อ Clean Code ที่เขียนโดย Robert C. Martin (Robert Cecil Martin)