การ handle error โดยใช้ mapping literals

พอดีไปอ่านบทความ Don’t Use If-Else and Switch in JavaScript, Use Object Literals แล้วรู้สึกว่ามันน่าสนใจเพราะตอนทำงานจริงๆ ผมเคยเจอบางโปรแกรมที่ handle error ด้วยการใช้ if-else, switch จากโค้ด อ่านแล้วก็เข้าใจแหละ ว่า ถ้า 4xx, 5xx คือ error แต่ 1xx, 2xx, 3xx ไม่คิดจะแยกหน่อยหรอ 5555 ในความคิดผม เราควรทำตาม http standard ก็คือ เมื่อได้ status code มาจาก 3party service ที่เราเรียก ก็ทำการ แยก level ตัวหน้าสุด นั้นทำให้คนที่มา maintain code ต่อเข้าใจได้ง่ายมากๆ ทีนี้ ถ้าเราอยากจะ warp […]

kreangkrai supchid

September 27, 2021

Golang – Regexp

วันนี้เป็นโจทย์ง่ายๆจาก CodeSignal ครับ ให้หาตัวเลขชุดแรกใน string ครับ วิธีที่ผมใช้ก็คือ ascii ครับ แต่พอดูเฉลยของคนอื่น ก็ทำให้ร้อง อ๋อวววววเขาใช้ regexp ก็ได้นี่น่า (ผมก็เคยใช้ตอนทำพวก validate แต่ดันนนนไม่เอามาแก้ข้อนี้) Regexp regexp ของ golang ใช้ syntax เดียวกับ Perl, Python, and other languages นั้นหมายความว่า เราสามารถ migrate บาง service มาใช้ Golang ได้สบายๆ แต่สิ่งที่ต่างคือ การใช้ algorithm matching ยิ่งอ่านก็ยิ่งลึกขึ้น เอาเป็นว่ามาดูดีกว่า regex golang มีอะไรให้ใช้บ้าง regex golang เท่าที่ผมดู method มี return 2 แบบ return […]

kreangkrai supchid

July 22, 2021

Golang – Unicode

วันนี้ผมได้ทำโจทย์ข้อนึงจาก CodeSignal ครับให้หา firstDigit ก็คือให้หาเลขตัวแรกจากทางซ้ายครับ วิธีของผม ผมใช้การ map ครับ ( string ของ golang เวลา loop จะได้เป็น rune ครับ ) แล้วของคนอื่นๆละเป็นไง? อันนี้เป็นใช้ unicode ครับ ซึ่งผมว้าวมาก เพราะเพิ่งรู้จักว่า golang มี unicode พอลองไปดู func ก็พบว่าเห้ยยยย อเมซิ่งแว๊นๆ มีครบให้ทุกอย่าง เป็นอีก 1 package ที่ต้องจำไว้ว่า golang ทำได้ นอกจากนั้นก็มีการแปลง strconv ซึ้งก็คิดไว้แล้วว่ามีแหละ เพราะผมเคยทำแบบนี้ สรุป จากที่สัมผัสกับ Golang มานะครับ ผมเข้าใจละที่ว่าทำไม google ถึงเอาภาษา go มาเป็น ภาษาที่ไว้จัดการ network ภายในของตัวเอง […]

kreangkrai supchid

July 17, 2021

Permutation การเรียงสับเปลี่ยน

วันนี้จะมาเล่าโจทย์ข้อนึงใน code signal ให้ฟังครับผมใช้เวลาแก้นานมากประมาณ 1 สัปดาห์ จนสุดท้ายยอมกดดูเฉลย ก็คือ ให้ []string มาแล้ว ตรวจว่า array นี้มันสามารถทำ chain ต่อกันได้ไหม ปัญหาที่เจอ ตอนแรกผมตีโจทย์ผิด เข้าใจว่า chain คำกันแบบไม่สนตำแหน่ง ดังนั้นนนนน หลงทางไปหลายวันเลย อย่างที่สอง คือ ผมพยายามหาทางทำ recursive function หรือการคิดแบบ group char, map char มาใช้ซึ่งโจทย์เก่าๆข้อก่อนๆที่เคยทำมันดัน work ไง ก็เลยคิดว่าอันนี้น่าจะมี easter egg แบบนั้น ผมหมดเวลาไปกับการคิดแนวคิดใหม่ๆ คิดวิธีแปลกๆเยอะมากๆ จนลืมเป้าหมายจริงๆว่ามันแค่ต้องแก้โจทย์ให้ออก ความจริงคือ โจทย์ข้อนี้ ให้ข้อมูลละเอียดและ test ละเอียดอยู่แล้ว ซึ่ง keyword ที่จะหา คือคำว่า Permutation การทำ Permutation […]

kreangkrai supchid

July 15, 2021

วิธีใช้ copy ใน golang

คิดว่าทุกคนนน่าจะเคยเจอปัญหา อยาก copy, clone array หรือ slice ใน golang แต่ดันต้องสร้าง ตัวแปรใหม่ เขียนวนลูปยืดยาว บลาๆ แต่จริงๆแล้วใน standard package builtin มี copy ให้ใช้อยู่ ทีนี้เรามาดูดีกว่า ว่าใช้งานยังไง จากคำอธิบาย ก็คือต้องสร้าง array หรือ slice มารับ dst หรือ destination นั้นเองส่วน src คือ ย่อมาจาก resource หรือข้อมูลตั้งต้นที่เราต้องการ นั้นก็เพราะ dst ที่เราสร้างไม่ได้ ใส่ cap ไว้นั้นเอง ดังนั้น พอ copy จาก src ไป dst ที่ไม่ได้จองพื้นที่ไว้ เลยได้เป็น [] ลองไปปรับเป็น len […]

kreangkrai supchid

July 14, 2021

การตั้งค่า json template Goland

ถ้าใช้ default ของ goland จะเป็น snakeCase()แต่ถ้าอ่านคู่มือ golang จะแนะนำให้ทำเป็น camelCase() มันเลยน่าเบื่อมากที่ พอ json… แล้วดันได้ snakeCase แล้วต้องมาแก้มือประจำ เรามาตั้งค่า auto กันแต่แรกเลยดีกว่า ไปที่ setting >> Live Templates >> Go หรือ Go Struct Tags >> Edit variables >> เปลี่ยนจาก snakeCase(fieldName()) เป็น camelCase(fieldName()) >> Apply >> OK

kreangkrai supchid

February 23, 2021

การปั้น query string json ใน golang

วิธีแก้คือ ต้องสร้าง slice ขึ้นมา เพื่อ check และ append txnDate
บรรทัดที่ 624 ก็ทำการ check ว่า ถ้า slice > 0 ก็ให้ join ด้วย “,”
พอทำแบบนี้ ไม่ว่าจะ lte, gte หรือ อื่นๆ ก็สามารถรองรับได้ทุกเคส

kreangkrai supchid

November 18, 2020