แก้ปัญหา 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)

ทำ reverse proxy ด้วย caddy

แต่ก่อนตอนจะทำ reverse proxy จะใช้แต่ nginx แต่พอมาเริ่มทำ cotton ก็ได้รู้จักกับ caddy ที่เป็น http server ที่มาพร้อมกับ ssl ซึ่งมันเจ๋งมาก ทีนี้อยากจะได้ reverse proxy ขึ้นมา ก็เลยสงสัยว่า caddy มันทำ reverse proxy ได้หรือเปล่านะ ก็ไปเจอวิธีมา ซึ่งง่ายโคตร ๆ

Bypass หน้า Setup Wizard ของ Jenkins

ความตั้งใจจริง ๆ แค่อยากได้ jenkins ที่เป็น docker แล้วมี go install ไว้ให้แล้วเท่านั้น พอลอง compose up (ด้วย docker compose) jenkins ขึ้นมาก็เจอหน้าอย่างที่เคย ๆ เจอ คือ หน้า setup wizard พอลอง compose up ตัว jenkins บ่อย ๆ ก็รู้สึกว่า ต้องมานั่ง unlock jenkins ทุกครั้งด้วนยการเอา initialAdminPassword มากรอก เสร็จแล้วต้องไปเลือก plugin ที่อยากลงอีก ซึ่งกว่าจะลงเสร็จก็ใช้เวลาสักพัก ถัดมาต้องมาสร้าง account อีก กว่าจะเสร็จทุกขั้นตอนนี่โคตรเสียเวลาเลย เลยคิดว่า มันมีวิธีไหนมั่งที่สามารถข้ามขั้นตอนพวกนี้ไปได้ เป็นแบบ compose up เสร็จปุ๊บ พร้อมใช้เลย เลยกลายมาเป็นที่มาของการ bypass […]