[Android] :: ทำการทดสอบ Custom View ด้วย Robolectric กันนิดหน่อย

พอดีมีคำถามมาจากน้อง ๆ ที่เขียน Android app ว่า ถ้าต้องการทดสอบพวก Custom View โดยไม่ต้องเปิดหรือทดสอบผ่าน Activity ได้ไหม ? ตอบไปแบบไม่คิดว่า ทดสอบยังไงหว่า ไม่ผ่าน Activity !! แต่เมื่อคิดให้ดี ๆ ก็นึกออกว่า สามารถทดสอบด้วยการใช้ Robolectric เมื่อไปค้นหาเจอบทความเก่าหน่อยแต่อธิบายได้ดี เรื่อง Android: Unit testing custom views เลยเอามาลองใช้งานดูนิดหน่อย

Read More…

ทำความรู้จักกับ 3R principle

อ่านเจอบทความเรื่อง 3R principles of programming เป็นแนวปฏิบัติ 3 อย่างเพื่อช่วยทำให้ code ที่เหล่านักพัฒนา software สร้างขึ้นมา มีความ clean มีความง่ายต่อการอ่าน มีความง่ายตอการทำความเข้าใจ มีความง่ายต่อการดูแลรักษา ไม่ซับซ้อนมากนัก จึงทำการแปลและสรุปส่วนที่น่าสนใจมานิดหน่อย

Read More…

[Refactoring code] ว่าด้วยเรื่อง Creation Method

เนื่องจากทำการ review code ของระบบที่พัฒนาด้วยภาษา Swift แล้วพบว่าการสร้าง object บางตัวนั้น สามารถสร้างได้หลายแบบ ทำให้มี constructor จำนวนมาก !! ซึ่งมันเป็น Code Smell อย่างหนึ่ง ดังนั้นได้เวลาปรับปรุง code ให้ดีขึ้นแล้วนะ

Read More…

สรุปสิ่งที่ได้รับจากงาน ReactJS Bangkok 1.0.0 ในห้องสำหรับผู้เริ่มต้น

มีโอกาสไปร่วมงาน ReactJS Bangkok 1.0.0 โดยแบ่งออกเป็น 2 ห้องคือ ห้องพื้นฐานสำหรับผู้เริ่มต้น (น่าจะสำหรับคนที่เขียน ReactJS มาแล้ว) ห้องขั้น Advance ส่วนผมอยู่แต่ห้องพื้นฐานซึ่งมี session ต่าง ๆ ดังนี้ Introduction to React Redux React Native Discussion เป็นการถามตอบกับ speaker ทุกคน จึงทำการสรุปไว้นิดหน่อย โดยในแต่ละ session จะมีการทำ demo ให้ดู แต่ว่ามีเวลาเพียง 1 ชั่วโมงจึงไม่สามารถ Live demo ได้มากนัก (ไปเร็วมาก ๆ) จึงมี code ตัวอย่างให้กลับไปดูและทำตามต่อไป

Read More…

สรุปการจัดการ Dependency แบบง่าย ๆ ด้วย CocoaPods

สำหรับ iOS developer ทั้งหลายคงต้องใช้ dependency หรือ library อื่น ๆ อย่างแน่นอน ซึ่งถ้า copy code มาใส่ project เองคงไม่ดีเท่าไรนัก !! ดังนั้นน่าจะต้องจัดการผ่านเครื่องมือต่าง ๆ เช่น CocoaPods Carthage Swift Package Manager โดยใน blog นี้จะพูดถึง CocoaPods ตั้งแต่การติดตั้งไปจนถึงการใช้งานแบบง่าย ๆ

Read More…

แนะนำการเรียน Programming ผ่าน Mimo app

เนื่องจากต้องกลับบ้านต่างจังหวัดและไม่ได้เอา notebook กลับไปด้วย แต่ต้องการเรียนรู้เกี่ยวกับ programming ผ่าน Mobile app จึงลองค้นหา app หลาย ๆ ตัว โดย app ที่ลองเรียนแล้วชอบคือ Mimo ซึ่งเหมาะมาก ๆ สำหรับผู้เริ่มต้นศึกษา programming ส่วนระดับกลางและสูงนั้นยังไม่เห็นมีนะ

Read More…

[Bug] Xcode 7.3 + Swift 2.3 มัน build นานมาก ๆ

เนื่องจากทำการเตรียมข้อมูลสำหรับการทำสอบ iOS app นิดหน่อย ซึ่งเตรียมข้อมูลในรูปแบบ dictionary แต่ดันเจอปัญหาการ build ช้ามาก ๆ ใน XCode 7.3 (Swift 2.3) !! โดยไร้สาเหตุ ตัวอย่าง code จาก Swift literal parsing bug แสดงผลการทำงานดังรูป (รอกันต่อไป build นานมาก ๆ) เมื่อไปดูใน web ก็พบว่ามันคือ Bug ของภาษา Swift นั่นเอง อยู่ใน SR-305 ซึ่งถูกแก้ไขไปแล้ว ซึ่งจะอยู่ใน Swift 3 !!

Read More…

ขำ ๆ ไปกับ WebSphere Liberty

เนื่องจากช่วงนี้ต้องทำงานกับ IBM Websphere บ้างนิดหน่อย ดังนั้นจึงอยากจะลองติดตั้งและใช้งานนิดหน่อย แต่เมื่อไปดูขนาดของไฟล์ติดตั้ง และ ความต้องการต่าง ๆ แล้วไม่น่าจะรอด จึงไปดูว่า มีวิธีการไหนที่น่าเป็นไปได้บ้าง เมื่อไปดูแล้วพบว่ามี Websphere Liberty ให้ใช้งาน ซึ่งสามารถใช้งานกับ Docker ได้อีก ดังนั้นมาลองใช้งานกันดูหน่อยสิ

Read More…

[Android] แนะนำ Build Time Tracker สำหรับดูแนวโน้มของเวลา build app

วันนี้ดูปัญหาเรื่องการ build ของ Android app ที่ใช้เวลานาน โดยปกติจะดูผ่าน build profile ที่มากับ Gradle ซึ่งก็ให้ผลลัพธ์ละเอียดตามที่ต้องการ แสดงดังรูป แต่ถ้าเราต้องการทำการบันทึกผล และ ติดตามเวลาการ build ในแต่ละวัน จะต้องทำการบันทึกเอง ซึ่งมันไม่สนุกเลย จึงลองทำการค้นหาว่ามีวิธีการอะไรบ้าง ? หนึ่งใน plugin ที่น่าสนใจคือ Build Time Tracker ซึ่งทำการบันทึกเวลาการ build ไว้ให้ตลอด ดังนั้นมาลองใช้งานกันดูบ้างนะ

Read More…

[iOS]แนะนำ trainer เครื่องมือสำหรับการสร้างผลการทดสอบในรูปแบบ JUnit

ในการทดสอบ iOS app ผ่านระบบ Continuous Integration นั้น จำเป็นต้องทำการทดสอบทั้ง Unit test และ UI test และสร้างผลการทดสอบในรูปแบบ JUnit เพื่อสรุปผลการทดสอบต่าง ๆ ให้ง่ายและชัดเจน ปกติจะใช้ xcpretty ร่วมกับ xcodebuild แต่ว่าจะลำบากขึ้นเมื่อใช้งานร่วมกับ XCode 8 ดังนั้นทางผู้พัฒนา fastlane ก็ได้สร้างเครื่องมือใหม่ชื่อว่า trainer ขึ้นมา ซึ่งใช้ง่ายกว่า และ ทำการได้รวดเร็วกว่า ดังนั้นลองมาใช้งานกันดูหน่อย

Read More…