มาปรับปรุงการเขียน Test กันหน่อย

การเขียน Test หรือชุดการทดสอบนั้นเป็นสิ่งที่ดี เริ่มเขียนว่ายากแล้ว การเขียนให้ดียากยิ่งกว่า ดังนั้นจึงสรุปวิธีปรับปรุงการเขียน Test ให้ดีขึ้น โดยนำมาจากบทความเรื่อง Write Better Tests in 5 Steps เริ่มกันเลย

Read More…

สรุปการทำ profiling ระบบ Web application ที่พัฒนาด้วยภาษา Golang

เนื่องจากต้องมาดู performace ของระบบ web application ที่พัฒนาด้วยภาษา Golang นิดหน่อย จึงทำการสรุปสิ่งที่ต้องใช้งานไว้นิดหน่อย เครื่องมือที่ใช้งานคือ pprof ประกอบไปด้วย CPU profile Heap profile Goroutine profile

Read More…

บันทึกการใช้งาน Firefox 57 (Quantum) 2 วัน

หลังจากที่ Firefox 57 ถูกปล่อยออกมา ซึ่งบอกว่า เร็วกว่าเดิม ใช้ resource น้อยกว่าเดิม แจ่มกว่าเดิม เนื่องจากยกเครื่องใหม่หมดจาก Quantum หรือ Servo ซึ่งพัฒนาด้วยภาษา Rust และใช้ rust-bindgen สำหรับสร้าง C++ binding เพื่อให้สามารถทำกับ Firefox ที่พัฒนาด้วยภาษา C++ นั่นเอง ยกเครื่อง UX/UI ชื่อว่า Photon มีความปลอดภัยมากขึ้นด้วย Private Browser Mode โบกมือลากับ Firebug แล้ว เนื่องจากใส่เข้ามาให้เลย ระบบการค้นหาโดย default จะเป็น Google พร้อมกับความสามารถต่าง ๆ มากมาย ดังนั้นมาดูกันว่ามีอะไรที่น่าใช้งานกันบ้าง

Read More…

ว่าง ๆ มาแกะ build.gradle ใน code ตัวอย่างของ Google Sample

นั่งดูตัวอย่าง code ตัวอย่างของ Android Architecture Component พบสิ่งที่น่าสนใจมากมาย หนึ่งในนั้นคือ การจัดการไฟล์ build.gradle (Gradle) หรือไฟล์ configuration ของระบบงานนั่นเอง มาดูกันว่ามีอะไรที่น่าสนใจบ้าง

Read More…

เก็บมาเล่าเกี่ยวกับ Programming

วันนี้มี Post ที่น่าสนใจในกลุ่มสมาคมโปรแกรมเมอร์ไทย สมมติถ้าออกโจทย์แบบนี้ให้นักเรียนทำ มันจะยากไปไหมครับ 🙂 หาว่าบั๊กอยู่ตรงไหน ความน่าสนใจของ post นี้มันเกี่ยวกับ programming นี่แหละ ทำให้นึกถึงสมัยเขียน code ใหม่ ๆ เลย เลยสรุปความคิดเห็นกับสิ่งที่ผ่านมาไว้นิดหน่อย ถ้าถามว่าโจทย์นี้ยากไหม ? สิ่งที่ต้องรู้ก่อนคือ ต้องการวัดอะไรจากโจทย์นี้ เพราะว่าโจทย์ลักษณะนี้มีเป้าหมายเพื่อ วัดความละเอียดในเรื่องของ syntax และ sematic ของ code วัด logic ของผู้เรียน จากตัวอย่างมัน compile ผ่านแต่ทำงานแล้วมี bug อาจจะเกิด RuntimeException ได้มั้ง!! จำได้ว่าสมัยทำงานแรก ๆ บ้าไปสอบ certified ด้าน Java กับเขามา (ไม่เกี่ยวกับ post นะ) ผ่านทั้ง SCJA, SCJP, SCJS, SCWCD, SCBCD, [&hellip

Read More…

รูปแบบของ code แย่ ๆ ที่มักพบเจอ

ช่วงวันหยุดนั่งดู code เขียน code ไปเรื่อย ๆ ได้เห็นรูปแบบของ code ที่น่าสนใจ ไม่ใช่เรื่องของการตั้งชื่อ แต่มันคือ รูปแบบการทำงานของ code แน่นอนว่าเป็น code ที่สามารถทำงานได้ดีตามที่ต้องการ แต่ดันเป็น code ที่มีคุณลักษณะเฉพาะตัว เช่น ทำความเข้าใจยากมาก ส่วนต่าง ๆ ของระบบสามารถแก้ไข state หรือค่าได้โดยตรง แน่นอนว่าว่าค่านี้ ใช้ทั้งระบบ !! แก้ไขที่หนึ่งกระทบที่อื่น ๆ อีกมากมาย ใช้เวลาในการเพิ่ม feature เยอะขึ้น เมื่อเกิดปัญหาบน production แล้วการค้นหาจุดเกิดเหตุยากมาก ๆ จึงทำการสรุปสิ่งที่เจอไว้นิดหน่อย

Read More…

สรุปเรื่องโครงสร้าง project ภาษา Go ที่ DigitalOcean

ทีมพัฒนาของ Digitalocean นั้นได้ออกมาเล่าถึงประสบการณ์การพัฒนาระบบงานด้วยภาษา Go ซึ่งเป็นระบบงานภายในชื่อว่า Cthulhu โดยเป็นระบบงานที่ใช้งาน version control แบบ Monorepo นั่นคือ code ทุกสิ่งอย่างอยู่ใน repository เดียวกัน แม้ว่าจะมีมากกว่า 1 project ก็รวมกันอยู่ในนี้ แน่นอนว่า ต้องเจอปัญหาต่าง ๆ มากมาย ทั้งเรื่องของโครงสร้าง ทั้งเรื่องการ scale ทั้งเรื่องของการจัดการ dependency ต่าง ๆ ทั้งเรื่องของเครื่องมือที่ใช้งาน ทั้งเครื่องของเวลาในการ build ของ CI server ทั้งเรื่อง code ownership มาดูกันว่าทางทีม Digitalocean ทำอย่างไรบ้าง ? น่าสนใจมาก ๆ

Read More…

สิ่งที่นักพัฒนามือใหม่ชอบทำผิดพลาด

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

Read More…

สรุปเรื่อง Modernizing Java Apps with Docker จากงาน DockerCon EU 2017

จาก VDO เรื่อง Modernizing Java Apps with Docker จากงาน DockerCon EU 2017 ซึ่งเป็นอีก session หนึ่งที่ตรงกับแนวคิดหลักของงานคือ Modernizing Traditional Application (MTA) โดยที่ Traditional Application คือระบบงานที่พัฒนามาหลายปีแล้ว แต่ยังเป็นหัวใจหลักหรือตัวขับเคลื่อนหลักขององค์กร แน่นอนว่า ทั้ง developer และ operation ต้องทำงานอย่างหนักเพื่อพัฒนาและดูแลรักษาระบบเหล่านี้

Read More…

แนวทางที่ดีสำหรับการทดสอบแบบอัตโนมัติ

สิ่งมักที่น่าสนใจสำหรับการทดสอบแบบอัตโนมัติ ส่วนใหญ่มักจะถูกสั่งให้ทำ ส่วนใหญ่มักจะบังคับให้ทำ บางครั้งทำแบบไม่เข้าใจว่าทำไมต้องทำ แต่ก็ต้องทำ ผลที่ออกมาเลยไม่ดี หรือมีก็เหมือนไม่มี หรือถ้าไม่บังคับก็ไม่ทำ หรืออาจจะแย่กว่าเดิมอีกต่างหาก ดังนั้นจึงขอแนะนำแนวทางที่คิดว่าน่าจะดี เพื่อให้การทดสอบแบบ manual และ อัตโนมัติมันดีและยั่งยืน มาเริ่มกันเลย

Read More…