Error Tracking ด้วย Sentry.io

เกริน เกริ่น เกริ้น …

ว่าด้วยเรื่องของ Error tracking แล้วเนี่ยก็มี Tool มากมาย หรือในบางภาษา หรือเฟรมเวิร์คที่ใช่ ก็อาจจะมี Library ให้ใช้อยู่แล้วก็ได้ ซึ่งบางตัวที่ใช้เมื่อมี Error มาก็จะส่งไปที่อีเมล อีเมล แล้วก็อีเมล ​แล้วถ้ามีหลายโปรเจคล่ะ ก็ส่งไปที่อีเมล อีเมล อีเมลๆ โอ้นี่ยังไม่รวม อีเมลอื่นๆ อีกนะ ถ้าไม่จัดกลุ่มของอีเมลนี่หากันไม่เจอเลยว่า อันไหนเป็น Error

วันนี้เลยมี Tool อันนึงมาแนะนำ นั่นคือ Sentry.io ที่มีฟีเจอร์การทำงานที่เรียกได้ว่าครบเลยรองรับหลาย Platform และติดตั้งง่ายมากกก แล้ว Sentry.io มีฟีเจอร์ อะไรบ้างไปดูกัน

Platforms

ปล. ใน Blog นี่ยกมาแค่บางฟีเจอร์เท่านั้นนะ (https://sentry.io/features/)

Issues List

Error tracking list

คือรายการของ Issue ที่ถูกส่งมาเมื่อเกิด Error ในระบบเรา ซึ่งบอกได้ด้วยว่า Error กี่ครั้ง และกดกับผู้ใช้กี่คนแล้ว แต่รายละเอียดจริงๆ เนี่ยยังมีอีกเพียบไว้ดูในหัวข้อถัดไปละกัน

Issue Detail

พอกดเข้ามาจากหน้ารายการ ก็จะเจอรายละเอียดต่างๆ ที่ละเอียดมาก เช่น เกิด Issue จากบราวเซอร์อะไร เวอร์ชันไหน ไฟล์ไหน บรรทัดที่เท่าไหร่ URL ไหน บลาๆ นี่แค่เป็นค่าตั้งต้นที่ Sentry กำหนดมาให้นะ

นั่นหมายความว่าเราสามารถ Custom ค่าจะส่งมาบอก Sentry ได้ว่าเราอยากรู้อะไรบ้าง จากรูปข้างต้นจะเห็นว่ามี user id: 1 อยู่ (อยู่ในส่วนของ TAGS) คือเราจะรู้ได้ว่าเกิด Issue กับ User ที่ id เท่ากับ 1

Issue detail
นี่ไง user id: 1 ที่พูดถึง

User Feedback

นอกจากจะ Error Tracking แล้วผู้ใช้สามารถส่ง Feedback มาที่ Sentry ได้ ซึ่งทาง Sentry จะมี javaScript ให้แปะบนเว็บของเรา (กรณี Web platform) แล้วก็เขียน Click Event นิดหน่อย ส่วนนี้ก็ใช้งานได้แล้ว

Release

จากรูปด้านบนนี้กำหนดไว้ว่า เป็น Release v0.5 ซึ่งสามารถกำหนดได้ในโค้ด แต่ถ้าไม่กำหนด จะใช้เลข Commit แทน

ซึ่งส่วนนี้ถือว่าดีเลยทีเดียว จะทำให้เรารู้ได้ว่าแต่ละ Release เรามี Issue มากน้อยแค่ไหน

Slack Integration

ตามหัวข้อเลยก็คือนำไปใช้ร่วมกับ Slack เมื่อมี Issue ก็จะ push ไปที่ Slack แต่เราก็สามารถกำหนดได้ว่า จะให้ push ไปที่ Slack เมื่อเป็น Issue แบบไหน และกำหนด Channel ที่จะ push ไปได้เช่นกัน

ตัวอย่างการ Push ไปที่ Slack ซึ่งสามารถ กด Resolve หรือ Ignore ได้ด้วย และสามารถ Assign ให้กับคน หรือทีมได้

Github Integration

เมื่อมาใช้ร่วมกับ Github แล้วก็ไม่พ้นว่าต้องเกี่ยวกับ Code หรือ Commit แน่นอน ซึ่ง ณ ปัจจุบันยัง Resolve Issue จากการแก้โค้ดไม่ได้ แต่ Resolve ได้จาก Commit message ว่าต้องมี fixes ISSUE_ID ใน Commit message เช่น [fixes SAMPLE-PROJECT-1] เมื่อ Push ขึ้นไป Issue ก็จะ Resolve ให้โดยเองอัตโนมัติ ซึ่งก็ถือว่าสะดวกสบายพอสมควรเลยแหละ

การทำ Android Application ภายใน 24 ชั่วโมง

การทำ Android application ภายใน 24 ชั่วโมง ที่ว่านี้ต้องบอกก่อนว่าไม่ได้เป็นการอดหลับอดนอนเพื่อมาทำแอปให้เสร็จภายใน 24 ชั่วโมงนะ แต่คือเราได้ทำแอปนี้ 3 วันวันละ 8 ชั่วโมงนั่นเอง โดยทีมของผมมีกันถึง 2 คน และก่อนจะทำแอปพลิเคชันขึ้นมา ก็มาคุยไอเดีย แนวคิดกันก่อนว่าจะทำแอปอะไร แอปแบบไหน และมีสโคปงานขนาดไหน ที่จำสามารถทำได้ในเวลาที่เหลือ

และต้องขอบอกอีกอย่างคือทีมของเรานี้ก็ไม่ได้ถึงขั้นระดับมือโปรที่รู้และจำได้ทุกอย่างเกี่ยวกับการเขียน Android แม้แต่ Syntax ของ Java ยังจำไม่ได้หมดเลย แต่ก็อาศัยการค้นหาเพิ่มเติมนี่แหละ อยากได้อะไรก็หา หรือบางฟังก์ชันที่เค้าเขียนมาแล้วมันโอเคก็ไปก็อบมาเลย หรือจะหา lib ต่างๆ มาช่วยก็ได้เช่นกัน

พอคุยๆ กันก็มีไอเดียเป็นแอปพลิเคชันที่เกี่ยวกับการ Generate Password ซึ่งแนวคิดนี้ก็เกิดจากการที่มีการคิดรหัสผ่านไม่ออก และสุ่มไปมั่วๆ พอถ้าเราสุ่มมั่วๆเอง ไม่นานเดี๋ยวก็ลืม หรือถ้า Generate Password มาก็อาจจะลืมได้เช่นกัน ก็เลยได้เพิ่มฟีเจอร์การจัดการรหัสผ่านมา เพื่อที่จะสามารถเก็บรหัสผ่าน ที่เราสุ่มขึ้นมาได้ทันที

หลังจากที่ได้มีการสรุปไอเดีย  และสโคป ต่างๆของตัวแอปเรียบร้อย ก็ทำการออกแบบคร่าวๆ ของโฟลการทำงาน และหน้าตาของแอป ด้วยกระดาษ กับปากกา นี่แหละเพียงเท่านี้ก็หมดแล้วสำหรับ 8 ชั่วโมงแรก

สรุปงาน 8 ชั่วโมงแรก

คือการสร้างแอปพลิเคชันตัวนึงเกี่ยวกับการสุ่มและจัดการรหัสผ่าน โดยมีฟีเจอร์ดังนี้คือ

  • สุ่มรหัสผ่าน
  • จัดการรหัสผ่าน (เพิ่ม, ลบ, แก้ไข)
  • มีการล็อกก่อนเข้าแอปพลิเคชัน
  • เปลี่ยนรหัสผ่านหน้าล็อกแอป

และได้ออกแบบ UI ร่างไว้ในกระดาษคร่าวๆ

.

.

.

วันต่อมาก็ได้เริ่มสร้างแอปพลิเคชันแล้วเย้! ซึ่งมีชื่อว่า IPassword จากนั้นก็อัพขึ้น BitBucket และแบ่งงานกับทีมโดยวันนี้จะเป็นการเขียนโค้ดทั้งหมด

ซึ่งเวลาเหลืออีก 16 ชั่วโมง จึงใช้ฐานข้อมูลภายในเครื่องของ Android เลยเพื่อที่จะเก็บข้อมูลรหัสผ่านต่างๆ  โดยเทคโนโลยีที่ใช้มีดังนี้

  • Java – เป็นภาษาที่ใช้ในการพัฒนา
  • SQLite – เป็น DBMS ที่ใช้ในการติดต่อกับฐานข้อมูล ซึ่งในการพัฒนา Android จะใช้เป็นตัวนี้อยู่แล้ว

สรุปงาน 8 ชั่วโมงที่สอง

ก็มีฟีเจอร์ที่เสร็จแล้วดังนี้คือ

  • สุ่มรหัสผ่าน
  • การเพิ่มรหัสผ่าน
  • การลบรหัสผ่าน
  • การล็อกก่อนเข้าแอปพลิเคชัน

             

.

.

.

พอถึงวันสุดท้าย ก็ทำฟีเจอร์ที่เหลือ เก็บรายละเอียดต่างๆ ติดโฆษณา แล้วเตรียมอัพขึ้น Play Store เลย!! และฟีเจอร์ที่จะทำวันนี้เหลือไม่มาก จึง Setup ต่างๆเตรียมพร้อมที่จะอัพของ Play store และออกแบบต่างๆ เช่น ไอคอนแอป และกราฟฟิกแอป เพราะต้องใช้ในการ อัพขึ้น Play Store ส่วนโปรแกรมที่ใช้ก็เป็น Photoshop นี่แหละ

ภาพต่างๆที่ใช้ในการอัพขึ้น Play store

  • ภาพหน้าจอ (อันนี้ Capture จากโทรศัพท์มาได้เลย)
  • ไอคอนขนาด 512×512
  • ภาพกราฟฟิค ขนาด 1024×500

ก่อนจะอัพขึ้นได้เนี่ยก็ต้องสมัครเป็น Android Developer ก่อนเนาะ และถ้าจะติดโฆษณาก็สมัคร Admob อีกอันนึง

เพียงเท่านี้ก็ได้ แอปพลิเคชันของเราวางอยู่บน Play strore แล้ว อ้อแต่ตอนอัพต้องรอการตรวจสอบก่อนประมาณ 10 – 30 นาทีได้

สรุปงาน 8 ชั่วโมงสุดท้าย

  • ทำฟีเจอร์ที่เหลือ
    • แก้ไขรหัสผ่าน
    • เปลี่ยนรหัสผ่านหน้าล็อกแอป
  • ทำหน้า About us เพิ่ม
  • ติดโฆษณา
  • เตรียมข้อมูลผลิตภัณฑ์ใน Store และ อัพขึ้น Play store

   

 

นี่แหละคือการทำ Android Application ภายใน 24 ชั่วโมง ที่เริ่มตั้งแต่ยังไม่มีไอเดียจนมาเป็นแอปพลิเคชันตัวนึงที่วางอยู่ใน Play Store ได้เนี่ยไม่ได้ยากอย่างที่คิดใช่มั้ยหล่ะครับ แต่แอปพลิเคชันนี้ก็ยังต้องการการพัฒนาต่อ ให้มันดียิ่งขึ้นไปอีกในภายหลัง แต่ก็แสดงให้เห็นว่า ภายในเวลา 24 ชั่วโมงนี้ก็สามารถที่จะทำแอปพลิชั่นเล็กๆ ให้สำเร็จได้นั่นเองครับผมมม

วิธีการติดตั้ง Apache Spark ด้วย Docker

ในบทความนี้จะกล่างถึงใช้การสร้าง environment สำหรับทดสอบโปรแกรม Spark บน Hadoop โดยใช้ Docker

ก่อนจะเริ่มมาทำความรู้จักกับสิ่งที่ใช้ในบทความนี้ก่อนดีกว่า

Apache Spark

คือ Framework ในการเขียนโปรแกรมเพื่อประมวลผลแบบ MapReduced โดยเราเคยกล่าวถึงในบล็อค How to Installation Apache Spark with Cloudera VM ด้วย

Hadoop

คือ ซอฟท์แวร์ประเภท open source ที่จัดทำขึ้นเพื่อเป็นแพลตฟอร์มในการจัดเก็บข้อมูล ซึ่งมีกรอบการทำงานเพื่อใช้ในการจัดเก็บข้อมูลและประมวลผลข้อมูลที่มีขนาดใหญ่มากๆ ที่เราเรียกกันว่า Big Data

Docker

คือ engine ตัวหนึ่งที่มีการทำงานในลักษณะจำลองสภาพแวดล้อมขึ้นมาบนเครื่อง server เพื่อใช้ในการ run service ที่ต้องการ มีการทำงานคล้ายคลึงกับ Virtual Machine

ซึ่งตัว Docker Image ที่ใช้จะเป็น bananacoding/spark_hadoop

Read more