
เห็นน้องที่ office ใช้ eclipse แล้วนั่ง swtich workspace ไปมาอยู่
กว่าจะหา path working space ที่เก็บไว้เจอ รอแทบรากงอก!!
เลยแนะนำให้ลองใช้เป็น working sets แทน เพราะมัน … ง่ายมาก!!!
เป็น tips เล็ก ๆ น้อย ๆ สำหรับการใช้งาน Eclipse ครับ ^^ อ่านเพิ่มเติม
คลังเก็บหมวดหมู่: Java
ลอง NGINX Load Balancing Microservice

มาดูวิธีการทำ load balance ให้ micro service ของเรากัน
การทำ load balance นอกจากจะช่วยกระจาย load การทำงานของ server แล้ว ในกรณีที่เรามีการ upgrade server แต่ยังไม่มั่นใจว่า server ใหม่ดีพอ เรายังสามารถเปิดใช้งาน server เก่า ควบคู่กับ server ใหม่ โดยกระจาย load สัก 80% ไปที่ server ใหม่ อีก 20% ไปที่ server เก่า เพื่อลดความเสี่ยงได้อีกด้วยครับ
กรณี server ใหม่มีปัญหา สามารถปิดหรือ down ทิ้งไป เพื่อให้ user request ถูกดีดเข้าใช้งานที่ server เก่าได้อัตโนมัติ
เทคนิคเหล่านี้ถ้าไม่ซื้อ hardware ก็ต้องมี software load balance เข้าช่วย..หนึ่งในตัวที่ดัง ๆ นอกจาก HaProxy แล้ว ยังมี NGiNX (ที่ support widows) ให้ใช้งาน
มาทดลองกันครับ ^^ อ่านเพิ่มเติม
Spring Boot Security ง่ายๆ

สร้าง restfull api ให้คนอื่นมาเรียกใช้ ควรมีการป้องกันสักหน่อย อย่าให้คนที่ไม่เกี่ยวข้องเข้าถึงได้นะคับ อย่างน้อย ๆ ก็ทำ basic authen ไว้ คนที่มาเรียกใช้ service ถ้าไม่รู้ user, password หรือ authen key ก็ไม่ควรเข้าได้ครับ ทำเพิ่มอีกนิดเดียว spring boot มีของให้ใช้เลย
Step :
- Gen โครง spring booot project พร้อม web, security, lombok dependency
- Import เข้าไปใน eclipse (convert ให้เป็น eclipse project ก่อนนะ)
- กำหนด user, password และ role ใน file application.config
- สร้าง class ที่ extends WebSecurityConfigurerAdapter ของ spring
- สร้าง rest service เพื่อให้คนอื่นเรียกใช้งาน
- สร้าง domain class เพื่อไว้ return ข้อมูลออกเป็น json กลับไป
- mockup return data ใน controller class
- ทดสอบเรียกใช้งาน rest service จาก browser
- ทดสอบเรียกใช้งาน rest service จาก postman
- ทดสอบผ่าน curl script
มาลองกันดูเลย ^^
อ่านเพิ่มเติม
สารจาก Oracle “Java ในปี 2018 ที่ผ่านมา”

อยากรู้ว่า java ไปถึงไหนแล้ว มีอะไรน่าสนใจมั่ง ดีสุดน่าต้องอ่านเว็บตรงของ oracle เลย มี survey ของ DZone ฉบับล่าสุด สำรวจของปี 2018 (เหมือนจะเก่านะ) แปลและสรุปแบบ งู ๆ ปลา ๆ (ตาม skill ภาษาอังกฤษและความรู้ java ของผม ^^) มาเล่าสู่กันฟัง เพื่อเป็นแนวทาง ในการเลือกศึกษากันครับ
ผลสำรวจ java professional 507 คน โดย DZone ในปี 2018
- เข้านิยมใช้อะไรกัน?
- Enterprise Platform ที่นิยม
- Java version ที่คนใช้เยอะสุด
- ภาษาที่รันบน jvm (ได้แบบ java) ที่นิยมสูงสุด
- IDE ยอดฮิต
- Persistance tools ตัวไหน
- Frontend framework ใด
- แอบดู feature ใหม่ของ java 8, 9, 10
- จะติดตามข่าวสารใหม่ ๆ ส่งตรงจาก oracle เลยได้ทางไหนบ้าง
มาลองจัดการ Log บน Spring Boot กัน ง่ายนะ! พูดเลย!
เขียน Spring Boot เป็นแล้ว ต้องจัดการ log ให้เป็นระเบียบด้วยครับผม ^^
อย่างน้อยก็ให้สามารถเอามา track ปัญหาได้ และไม่ทำให้ log กินเนื้อที่ hard disk จนเต็ม
ส่วนใหญ่ที่เคยทำมา จะ focus กันประมาณนี้ครับ
- Log เก็บไว้ย้อนหลังกี่วันดี => log เก่า ๆ auto ลบทิ้งให้เลย เดว hard disk เต็ม!
- Split log file ออกเป็น size ที่ไม่ใหญ่นัก => เพื่อให้สามารถเอามาเปิดดูได้ง่าย ๆ!
- สามารถดู 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 เย๊อะ ๆ

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 ชาวบ้านง่ายเกิ๊น

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

“พี่อยากได้ webservice สักตัว รับ load ได้เยอะ ๆ” จู่ ๆ ลูกพี่ก็โพล่งขึ้นมา
รับ load ได้เยอะ ๆ?
รองรับ request ที่จะโตขึ้นอีกในอนาคต?
เขียน webservice มาก็ไม่เคยทำให้รับ load ได้มาก ๆ ขนาดนั้น
มาลองดูซิว่า Programmer เขามีวิธีหาความรู้ใหม่ ๆ ยังไง?
อ่านเพิ่มเติม