ตัวอย่างการวางโครงสร้างระบบด้วย Spring Boot

เนื่องจากต้องทำการแนะนำและวางโครงสร้างระบบงานที่พัฒนาด้วยภาษา Java โดยสิ่งที่ต้องการคือ ระบบ REST APIs ง่าย ๆ ซึ่งทางเลือกในภาษา Java ก็มีมากมายทั้ง Servlet 3 JAX-RS Jersey Spring MVC Spring Boot Drop Wizard คำถามแรกคือ จะเลือกอะไรดีล่ะ ? คำตอบคือ ความต้องการของระบบเป็นอย่างไร ? ความสามารถของทีมเป็นอย่างไร ? ตอบด้วยคำถาม นี่มันกวนจริง ๆ นะ !!

Read More…

สรุปการแบ่งปันเรื่อง Functional Interface ใน Java 8

ใน Java 8 นั้นมี feature ที่น่าสนใจมากมาย แน่นอนว่า ความสามารถต่าง ๆ นั้นถูกสร้างขึ้นมา เพื่อลดปัญหาที่เกิดจากตัวภาษา เช่น Lambda Functional Interface Default method ใน interface เมื่อนำมารวมกับแนวคิดต่าง ๆ จาก Design Pattern ทำให้เห็นภาพต่าง ๆ ชัดเจนมากขึ้น

Read More…

ว่าด้วยเรื่อง Spaghetti Pattern ในชุดการทดสอบ

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

Read More…

คำสั่งใน command line ที่ใช้บ่อย ๆ สำหรับการพัฒนา Android app

ในการพัฒนา Android application นั้นส่วนใหญ่จะทำงานอยู่บน Android Studio แต่ในการทำงานจริง ๆ นั้น สิ่งที่นักพัฒนาต้องใช้งานเป็นคือ command line ใน Android Studio ก็มี command line หรือ terminal ให้ใช้นะ ลองหัดใช้งานดูกันได้ แต่สิ่งที่ยากคือ มีคำสั่งอะไรให้ใช้งานบ้าง ? ดังนั้นมาดูกัน

Read More…

มาทำการตรวจสอบ Memory Leak ใน Android app กัน

สำหรับ Android app นั้นปัญหาที่ทำให้ app crash น่าจะมีอยู่สองปัญหาใหญ่ ๆ คือ  NullPointerException (NPE) OutOfMememoryError (OOM) หรือ Memory Leak ทั้งสองปัญหานั้นมีต้นเหตุมาจากประสบการณ์ของนักพัฒนาล้วน ๆ ซึ่ง NullPointerException นั้นสามารถแก้ไขได้ง่ายกว่า ถ้าเขียน code สำหรับการดักจับปัญหาให้ดี ๆ พร้อมทั้งใช้ความสามารถของภาษาเช่น Optional เป็นต้น แต่ว่า OutofMememoryError หรือ Memory Leak นั้น มันเป็นสิ่งที่ตรวจสอบยากกว่าเยอะ แต่ก็ใช่ว่า จะไม่สามารถตรวจสอบและค้นหาได้เลย เนื่องจากปัจจุบันมีเครื่องมือในการทำ profiling มากมาย มาดูว่า เราจะค้นหาและแก้ไขปัญหานี้กันอย่างไร

Read More…

ทำการ Review my SSO app ::ต้องใส่ใจเรื่อง security ของ API กันเยอะ ๆ

เช้านี้เห็นมีการ share เรื่องระบบ API (Application Programming Interface) ของระบบ my SSO app ซึ่งเมื่อได้เข้าไปลองใช้งานและทำการ decompile code ดูก็พบว่า เป็นไปตามจาก post ข้างต้น ในฐานะของนักพัฒนาคนหนึ่งคิดว่า เป็นสิ่งที่ทีมพัฒนาต้องให้ความสนใจและใส่ใจ ไม่ว่าจะด้วยเหตุผลใด ๆ ก็ตามเรื่องของ security เบื้องต้นของ app ไม่น่าจะพลาดมากมายขนาดนี้

Read More…

[Swift] ทำการ validate ข้อมูลด้วยแนวคิดของ Composite pattern

วันนี้ทำการ review code ของ iOS app ที่พัฒนาด้วยภาษา Swift พบว่ามีส่วนการ validate หรือตรวจสอบข้อมูลจำนวนมาก และรูปแบบ code ที่เขียนบ่อย ๆ เป็นดังนี้ ค่าต้องไม่ว่าง ข้อมูลต้องมีรูปแบบที่ถูกต้องเช่น email , ความยาวของข้อมูล, เป็นตัวเลข เป็นต้น ข้อมูลของ password ซึ่งต้องมีทั้งตัวเลข ตัวพิมพ์เล็กและพิมพ์ใหญ่ และอื่น ๆ อีกมากมาย คำถามก็คือ code ที่เขียนเป็นอย่างไร ? คำตอบก็คือ if-else-if-else ไปเรื่อย ๆ ไงล่ะ !!

Read More…

สรุปสิ่งที่ได้รับจากงาน iOSDevTH Meetup #7

วันนี้มีโอกาสไปร่วมงาน iOSDevTH Meetup #7 ของกลุ่ม iOS Developer Thailand จัดที่บริษัท Ascend ตึก AIA รัชาภิเษก มีหัวข้อที่น่าสนใจ 2 หัวข้อคือ Concurrency on iOS iOS development at scale

Read More…

สรุปการสร้าง Smart Contract บน Ethereum ของทีมชาวนา

จากงาน Blockchain Hackathon ซึ่งเขียนอธิบายไว้ที่ Blog ก่อนหน้า นั้นอยู่ร่วมกับทีมสร้างระบบเกี่ยวกับชาวนา โดยแนวคิดคร่าว ๆ คือ ต้องการเก็บข้อมูลของการผลิตข้าวของชาวนา ตั้งแต่ก่อนการปลูก การปลูก การเก็บเกี่ยว ตลอดจนการซื้อขายข้าว รวมไปถึงรู้ได้เลยว่าข้าวแต่ละถุงที่เรา ๆ ท่าน ๆ กินกันอยู่ มีประวัติในการปลูกอย่างไรบ้าง เพื่อทำให้ผู้บริโภคมั่นใจในข้าวที่กินอยู่ เพื่อทำให้ชาวนาสามารถแลกเปลี่ยนข้อมูลการเกษตรได้ สุดท้ายเพื่อทำให้ชาวนามีชีวิตที่ดีขึ้น (Better Farmer)

Read More…

สวัสดี Ethereum ด้วย Hello World Project

สองวันหนึ่งคืนในการเข้าร่วมงาน Blockchain Hackathon ได้รับความรู้และประสบการณ์มากมายเกี่ยวกับ แนวคิด Blockchain ทั้งในยุค 1.0 และ 2.0 Blockchain ecosystem Ethereum การสร้าง Contract ใน Ethereum การพัฒนาระบบด้วย web3.js รวมทั้งสิ่งที่สำคัญมาก ๆ คือ การพัฒนาระบบงานผ่าน Contract ของ Ethereum เป็นแนวคิดที่สนุกมาก ๆ เทียบง่าย ๆ ก็คือ Serverless นั่นเอง ดังนั้นมาลองสร้างระบบงานง่าย ๆ ผ่าน Contract ของ Ethereum กันดีกว่า เพื่อจะได้เข้าใจกันมากขึ้น

Read More…