มาลองจัดการ Log บน Spring Boot กัน ง่ายนะ! พูดเลย!

1_9cuqr0vik3i7tbwkvav3sg.jpegเขียน Spring Boot เป็นแล้ว ต้องจัดการ log ให้เป็นระเบียบด้วยครับผม ^^
อย่างน้อยก็ให้สามารถเอามา track ปัญหาได้ และไม่ทำให้ log กินเนื้อที่ hard disk จนเต็ม
ส่วนใหญ่ที่เคยทำมา จะ focus กันประมาณนี้ครับ

  1. Log เก็บไว้ย้อนหลังกี่วันดี => log เก่า ๆ  auto ลบทิ้งให้เลย เดว hard disk เต็ม!
  2. Split log file ออกเป็น size ที่ไม่ใหญ่นัก => เพื่อให้สามารถเอามาเปิดดูได้ง่าย ๆ!
  3. สามารถดู log เป็นรายวันได้ =>  จะได้ดึง log วันที่ระบบมีปัญหามาดูได้ง่าย ๆ

Spring boot นั้นมี Slf4j ฝังมาให้เรียกใช้งานได้เลย แค่ config นิด ๆ หน่อย ๆ ใน file “application.properties” ก็ใช้งานได้หล่ะ เช่น

logging.level.org.springframework.web=ERROR
programmer.bonn.play.springbootlog=DEBUG

อย่างไรก็ตามในการนำไปใช้งานจริง แค่นี้ไม่พอกับโจทย์ 3 ข้อด้านบนของเราครับ ต้องมีการ config เพิ่มเติมอีกนิดนึง อ่านเพิ่มเติม

Spring Restfull Async รับ load เย๊อะ ๆ

1.png

DeferredResult ของ spring framework  ช่วยให้เราทำ asynchronous rest service ได้ง่ายมาก ๆ  ทำไมต้อง Async? !!!

ก็ Sync มันเป็น blocking service รองรับบริการได้แค่ทีละ 1 request เท่านั้น ถ้าเกิดมี request เข้ามาพร้อม ๆ กันมหาศาลหล่ะ? ส่วนใหญ่จะ error timeout ครับ! งั้นก็ขยาย timeout ของคนที่เรียกมาซิ! พอได้นะ..แต่ก็ให้บริการได้ช้ามาก ๆ อยู่ดี

Aysnchronous จึงเป็นอีก technique หนึ่งที่เข้ามาช่วยการทำ service ให้รับ load เยอะ ๆ ได้
Concept จะเป็นการ แตก thread ขึ้นมาช่วยทำงานในแต่ละ request ไปเลย มีข้อเสียเหมือนกันนะ..เพราะแต่ละ thread ก็กิน memory เพิ่ม จึงต้องคำนวณการใช้ mem ให้ดีพอ
(จริง ๆ ก็ลอง load test ด้วย jmeter น่าจะพอเห็นว่าต้องใช้ mem เท่าไหร่นะ ^^)


อ่ะ… สาย java อย่างเรา มาลองใช้ DefferredResult ของ spring กันดูครับ
(เนื้อหาจะต่อเนื่องจาก blog ก่อนหน้านะคับ…  Spring Restfull Api รับ json เข้ามาทำไง)

อ่านเพิ่มเติม

Spring Boot RestTemplate Client เรียก webservice ชาวบ้านง่ายเกิ๊น

1.png

บ่อยครั้งที่เราต้องเรียก webservice ของคนอื่น เพื่อดึงข้อมูลมาใช้ เพื่อสั่งประมวลผลหรือคำนวณบางอย่าง เนื่องจากมีของฟรีให้เราใช้ หรือเราไม่ได้เชี่ยวชาญการทำงานนั้น ๆ พอ (เช่น แปลง file เสียงเป็น text) หรือเรามีกำลังคนไม่พอจะทำทุกอย่างให้สำเร็จ ในระยะเวลาที่จำกัด หลากหลายเหตุผลที่เราต้องเรียกใช้งาน api จากภายนอก
เมื่อใช้ spring boot RestTemplate ความง่ายจึงบังเกิด
เอาหล่ะ มาลองดึงข้อมูล pm 2.5 จากเว็บ air4thai เข้ามาแสดงในเว็บของเรากันครับ ^^
(เนื้อหาต่อจากบทความที่แล้วครับ => Spring Restfull Api รับ json เข้ามาทำไง)
อ่านเพิ่มเติม

หนังสือ “เก่งภาษา 50 ล้าน”

9786167652115l.jpg

ภาพจาก se-ed book

เรียนภาษาอังกฤษ ก็งู ๆ ปลา ๆ อ่านได้ ก็ไม่ค่อยเร็ว
พอพูดไม่คล่องก็เน้นอ่าน (พออ่านไม่คล่อง ก็ไม่เน้นอะไรเลย +555)
ติดคำศัพท์บ้างต้องกลับมาเปิด dic หรือ google translate ทำให้ช้าและไม่ต่อเนื่อง
มาดู tips ของหนังสือเล่มนี้กัน ถ้าอยากอ่านเร็วขึ้น พูดได้ นั้นต้องทำยังไง? …
mindset?, ฝึกฟัง ฝึกพูด ฝึกอ่าน อย่างไร?, ศัพท์ที่ต้องรู้จริง ๆ, เพลง classic ช่วยได้?, จิตใต้สำนึก? …
อ่านเพิ่มเติม

Spring Restfull Api รับ json เข้ามาทำไง

0.jpeg

json เป็น format data ที่ได้รับความนิยมสูงสุดในปัจจุบัน เนื่องจากขนาดที่เล็กและใช้ง่ายนั่นเอง
เอาหล่ะเราจะทำ webservice api ให้คนอื่นเรียกใช้ โดยรับ json request data  เข้ามาได้อย่างไร
เนื้อหาจะต่อเนื่องจาก blog ก่อนหน้า กลับไปอ่านได้ที่ link นี้นะคับ
==>  6 Step สร้าง microservice ง่าย ๆ ด้วย Spring Boot 2
เอาหล่ะ มาเริ่มกันเลย ^^
อ่านเพิ่มเติม

HUNTER KILLER มาสร้างนิสัยแบบทหารกันเถอะ

1.jpg

“สงครามอเมริกาผ่ารัสเซีย”
หนังมันส์ในรอบหลายเดือนที่ได้ดู ใครยังไม่ได้ดู แนะนำครับ ลุ้นจนฉากสุดท้าย!
สิ่งที่ชื่นชอบในหนัง นอกจากเนื้อเรื่องที่กระชับ หักมุม ฉากเรือดำน้ำที่สมจริง
ความเด็ดเดี่ยวของพระเอก ยังรู้สึกชื่นชม “การมีนิสัยแบบทหาร” อีกด้วย
อดคิดไม่ได้ว่า ถ้าเรามีนิสัยที่ดี สักครึ่งหนึ่งของทหารอย่างในหนัง ชีวิตเราคงเปลี่ยนไปไม่น้อย …
อ่านเพิ่มเติม

หนังสือ “คำถามฉุกคิด เปลี่ยนชีวิตทั้งคนถามและคนตอบ”

1.jpg

ภาพจาก se-ed book

สั่งซื้อหนังสือไป หนังสือหมด!
เลยได้เล่มนี้ ที่ ราคาเท่ากัน มาแทน
เขียนเก็บไว้ดูสักหน่อย เขาว่าไว้ยังไง ^^

“แทนที่จะตอบคำถาม ให้ตั้งคำถามดีกว่า”
“ให้ตอบคำถาม ด้วยการถามกลับ”
“คำถามที่ดี สามารถเข้าถึงข้อมูลเชิงลึกได้”
คำถามที่ดี…พอ ไม่ต้องการคำตอบ

… ประมาณนี้!
แล้วคำถามที่ดีคือยังไง?
ถามเยอะจะไม่ดูโง่รึ? …

10155426_1495005860722874_6084590919856575001_n.jpg

อ่านเพิ่มเติม

6 Step สร้าง microservice ง่าย ๆ ด้วย Spring Boot 2

1_9cUqR0vIK3I7tBWKVAV3sg.jpeg

Microservice คืออะไร?
แบบบ้าน ๆ เลยคือ บริการเล็ก ๆ อย่างใดอย่างหนึ่ง
อย่างการขายสินค้าถือเป็นบริการอย่างหนึ่ง ถ้าในร้านนั้นมีการขายสินค้าเพียงแค่ชนิดเดียว
นั่นก็เรียกว่า microservice ได้
ในเชิงการ design เป็นการพยายามแยกการบริการออกเป็นส่วนย่อย ๆ แต่ละส่วนก็ให้บริการแค่อย่างเดียว
ในแง่การเขียน code ย่อมหมายถึงใน 1 method หรือ  function ควรมีการทำงานแค่อย่างเดียว
ในมุม service provider ย่อมหมายถึง การให้บริการ  api แก่ผู้ใช้โดยตอบสนองหรือทำงานแค่อย่างเดียวเท่านั้น เช่นระบบของ bank ที่มีทั้งฝาก ถอน โอน อาจแยกเป็น micro service ย่อย ๆ ได้ 3 micro service ได้แก่ service ฝาก, service ถอน, service โอน อย่างนี้เป็นต้น
แล้วมันดียังไง? แยกเพื่อ?….

5.png อ่านเพิ่มเติม

ข้อคิดหนังสือ “ความรวยนั้นฟรี 2” และ “หมอดูผู้แม่นที่สุดในโลก”

9786167652153l.jpg

ภาพจากเว็บ se-ed book

“จิตเป็นนาย กายเป็นบ่าว” ดูจะเป็นข้อคิดหลักของหนังสือสองเล่มนี้
“Mindset” หรือความคิดที่ถูกต้อง! คือสิ่งเริ่มต้นที่ต้องมี
ตามด้วย… การวางแผนทำสิ่งหนึ่งสิ่งใดให้สำเร็จตามความคิดนั้น
ต่อด้วย… การยืนหยัดทำสิ่งดังกล่าวให้ต่อเนื่อง(การควบคุมตัวเอง)
แล้ว… หมั่นปลูกถ่ายความคิดแง่บวกสู่จิตใต้สำนึก
สุดท้าย… เป็นการใช้ความสงบนิ่งให้เป็นพลัง
ดูจะเข้าใจยากสักหน่อย มาลองวิเคราะห์กันดู อ่านเพิ่มเติม

Google Translate API มันฟรีไหมนะ?

ผลการค้นหารูปภาพสำหรับ google translate api

ภาพจาก google.com

เมื่อ Data Mining tools อย่าง “IBM SPSS Modeler” ไม่ได้รองรับภาษาไทย
แต่ข้อมูลที่เรามีนั้นเป็นภาษาไทย อยากเอามาวิเคราะห์ เพื่อสกัดข้อมููลบางอย่างออกมาทำแคมเปญ เราจะแปลงมันเป็นภาษาอังกฤษได้ไหม? ก็ google มี translate api มาลองแอบดูหน่อยละกัน อ่านเพิ่มเติม