ความรู้สึกของเช้าวันจันทร์

ถ้าการลุกจากที่นอนในเช้าวันจันทร์เป็นเรื่องยาก แสดงว่าชีวิตของคุณอาจจะมีปัญหาบางอย่าง เพราะการมีชีวิตเพียงเพื่อจะมีความสุขในวันสุดสัปดาห์นั้นไม่ใช่สิ่งที่ยั่งยืน และคุณไม่สามารถทนกับชีวิตที่มีห้าวันจากเจ็ดวันของแต่ละสัปดาห์ที่ไม่มีความสุข

ถ้าคุณมีความรู้สึกเหล่านี้ เป็นความรู้สึกแรกในเช้าวันจันทร์ คุณควรตั้งคำถามกับตัวเองว่า งานที่ทำอยู่ เป็นงานที่ใช่สำหรับคุณแล้วจริงๆ หรือไม่

  1. คุณนอนหลับเต็มอิ่มแล้ว แต่ยังรู้สึกเหนื่อยล้าอยู่ นั่นเป็นสิ่งที่แสดงให้เห็นอย่างชัดเจนว่าปัญหาไม่ได้อยู่ที่การนอน แต่มันอยู่ที่คุณไม่ได้มีความรู้สึกกระตือรือล้นที่จะไปทำงาน
    เคยสังเกตมั๊ยว่าเวลาที่ไปเที่ยวแล้วต้องทำกิจกรรมทั้งวันจนนอนดึก ทำไมเราถึงสามารถตื่นเช้าได้โดยที่รู้สึกสดชื่น และกระตือรือล้นที่จะไปทำสิ่งต่างๆ ซึ่งนั่นมันควรจะเป็นสิ่งที่คุณรู้สึกในทุกๆ วัน
  2. คุณไม่ได้ใช้เมื่อวาน เพื่อเตรียมความพร้อมให้กับวันนี้ ดังประโยคที่ว่า “การล้มเหลวที่จะเตรียมพร้อม คือการเตรียมพร้อมที่จะล้มเหลว” และคนส่วนใหญ่เลือกที่จะไม่เตรียมพร้อมสำหรับวันจันทร์ นั่นเพราะว่ามันไม่ใช่สิ่งที่พวกเขามีความสุขที่จะทำ
  3. ใครๆ ก็เกลียดวันจันทร์ เพราะมันเป็นสิ่งที่ง่ายนะ ที่จะเกลียดในสิ่งที่คนอื่นก็เกลียดเหมือนกัน
  4. คุณไม่ได้กำลังทำงานที่คุณรัก น่าแปลกใจมากที่คนจำนวนมากเลือกทำงานที่รู้สึกสบายๆ และคุ้นเคย แต่ไม่ได้รักที่จะทำมันจริงๆ
  5. Social media เกลียดวันจันทร์ คุณอาจจะเห็นรูปภาพใน facebook หรือ instagram มากมายที่มี caption ไปในทำนองที่ว่าไม่รู้สึกสุนทรีย์นักกับเช้าวันจันทร์
  6. เพื่อนร่วมงานทำให้คุณไม่มีความสุข แม้คุณจะได้ทำงานที่คุณชอบ แต่เพื่อนร่วมงานที่ไม่สร้างพลังงานในทางบวก ก็อาจจะทำให้คุณไม่มีความสุขในการทำงานได้ รวมถึงตัวคุณเองในทางกลับกันด้วย
  7. วันจันทร์คือจุดสิ้นสุดของชีวิตที่คุณชอบ และจุดเริ่มต้นของชีวิตที่คุณไม่ชอบ นั่นเป็นเพราะคุณมีชีวิตเพียงเพื่อที่จะมีความสุขในวันสุดสัปดาห์ และชีวิตนั้นก็มีเวลาเพียงแค่ 48 ชั่วโมง ยังไงล่ะ
  8. เพราะวันจันทร์หมายถึง “ทำมัน(งาน)ทั้งหมดอีกครั้ง” ในมุมมองของการพัฒนาซอฟต์แวร์ ถ้าสมมุติว่าการทำงานในแต่ละสัปดาห์คือ 1 sprint (วงรอบของการพัฒนาซอฟต์แวร์) และคุณต้องอดทน เพื่อที่วันหนึ่งคุณจะรู้สึกว่างานมันเสร็จสมบูรณ์ และคุณจะได้มีความสุขและผ่อนคลายเมื่อถึงจุดๆ นั้น นั่นเป็นสิ่งที่ผิดอย่างมหันต์ คุณกำลังละเลยสิ่งที่เกิดขึ้นในระหว่างการเดินทาง(การทำงาน) ของคุณทั้งหมด และคุณกำลังตั้งเป้าหมายที่มันไม่มีอยู่จริง
    ความสุขที่แท้จริงมีอยู่ในระหว่างการเดินทาง ไม่ใช่เพียงแค่จุดหมายปลายทาง

ขอให้มีความสุข และมีพลังงานในทุกๆ เช้าวันจันทร์

Source: https://www.quora.com/How-do-people-deal-with-Monday-morning-blues/answer/Nicolas-Cole-1

นำ Redis มาใช้เป็น Cache ให้กับ Spring Boot Application

Remark: บทความนี้เขียนบน Spring Boot Version 1.5.10
Redis เป็น in-memory datastore ที่ได้รับความนิยมค่อนข้างมากในปัจจุบัน โดยใน blog entry นี้ เราจะนำ Redis มาใช้เป็น cache ให้กับ Spring Boot Application เพื่อช่วยลดการ query ข้อมูลจาก database หรือ get ข้อมูลจาก service อื่นๆ เพื่อมาใช้ในการประมวลผล การทำงานเบื้องต้นของ cache ที่เราจะใช้งานคือ

  1. ถ้าข้อมูลนั้นถูกเรียกใช้เป็นครั้งแรก จะถูกดึงมาจาก database หรือ external service และถูกเก็บลงใน cache
  2. การเรียกใช้ข้อมูลครั้งที่สองเป็นต้นไป ข้อมูลจะถูกดึงมาจาก cache
  3. ข้อมูลใน cache จะถูกลบในเวลาที่กำหนด และการทำงานจะกลับไปเริ่มที่ 1. อีกครั้ง
โดยมีวิธีการอย่างง่าย ดังนี้
  1. สร้าง class Message ขึ้นมาเพื่อเป็น model ของข้อมูลที่เราจะใช้งาน โดยในที่นี้เราจะใช้ project lombok ช่วยในการทำ getter, setter และ constructor
  2. สร้าง MessageService ที่ทำงานกับ model Message
  3. สร้าง controller และ API method ที่เรียกใช้งาน MessageService รวมถึง main class


    ตอนนี้เราจะได้ API ที่ทำงานกับ model Message โดยจะสร้าง object Message ขึ้นมาใหม่โดยมี property number และ text ตามที่เราส่งไปใน URL ที่เป็น GET method
    ในขั้นตอนต่อไปจะเป็นการใช้งาน Redis เพื่อเป็น cache ให้กับ application โดยมีการทำงานตามที่กล่าวไว้ด้านบน

    localhost:8080/send/100?text=mymessage

  4. เพิ่ม @EnableCaching เข้าไปใน main class ของ application เพื่อเปิดการใช้งาน cache ของ Spring Boot

  5. เพิ่ม configuration properties ที่จำเป็น เข้าไปใน application.properties

  6. เพิ่ม @Cacheable และกำหนด cache name ให้กับ method ที่ทำการดึงข้อมูลที่เราต้องการจะ cache

  7. สร้าง bean CacheManagerCustomizer เพื่อช่วยในการกำหนดการทำงานของ cache ให้เป็นไปตามที่เราต้องการ โดยเราต้องการกำหนดเวลาที่ cache จะ expire เพื่อที่จะไปดึงข้อมูลที่อัพเดทล่าสุดขึ้นมา

  8. ทำการทดสอบ จะได้ผลเป็นดังนี้
    8.1 เมื่อ call API ครั้งแรก method buildMessage() จะถูกเรียกใช้งานจริง และ println ข้อความที่เรากำหนดไว้

    localhost:8080/send/1000?text=mymessage1

    8.2 เมื่อ call API ครั้งถัดมา method buildMessage() จะ return ค่าที่ cache ไว้ สังเกตจาก ไม่มีการ println ข้อความที่เรากำหนด

    8.3 เมื่อครบกำหนดเวลาที่เราต้องการให้ cache expire ในตัวอย่างนี้คือ 20 วินาที แล้ว call API method buildMessage() จะถูกเรียกใช้งานจริง เนื่องจากข้อมูลที่ cache ไว้นั้น expire ไปแล้ว

    8.4 ถ้ามีการเปลี่ยนข้อมูลของ Message ที่ส่งไปกับ URL method buildMessage() จะถูกเรียกใช้งานจริง เนื่องจากข้อมูลใหม่นั้นยังไม่มีใน cache

    localhost:8080/send/1001?text=mymessage2



    เป็นอันเสร็จพิธี!

สร้าง DNS Record สำหรับโฮสต์บน Google Cloud Platform

การสร้าง DNS Record สำหรับ map ชื่อโดเมน ที่เรา register ไว้แล้ว เพื่อมาใช้งานกับโฮสต์บน Google Cloud Platform มีขั้นตอนดังนี้

  1. ไปที่เมนู Products -> Networking -> Network Services -> Cloud DNS
  2. คลิ๊ก  CREATE ZONE
  3. กรอกข้อมูลของ DNS Zone ที่ต้องการสร้างให้ครบ แล้วกด Create
    – Zone name คือชื่อของ DNS Zone ที่เราต้องการสร้าง
    – DNS name คือชื่อโดเมนที่เราได้จดทะเบียนไว้แล้ว
    – DNSSEC คือระบบรักษาความปลอดภัยขอมูลของผู้ถือครองชื่อโดเมน (อ่านเพิ่มเติม https://www.thnic.co.th/th/dnssec/)
    – Description คือคำอธิบายของ DNS zone
  4. เมื่อกรอกข้อมูลครบถ้วนและกด Create แล้ว จะได้ DNS Zone configuration ดังนี้
  5. เลือก Add record set เพื่อสร้าง Record ที่จะ map ระหว่าง ชื่อโดเมน และ Google Compute Engine Instance และกรอกข้อมูลต่างๆ ที่สำคัญดังนี้
    – DNS name คือชื่อโดเมน
    – Resource Record Type คือประเภทของ DNS record (อ่านเพิ่มเติม https://en.wikipedia.org/wiki/List_of_DNS_record_types)
    – IPv4 Address คือ Static IP address ของ Google Compute Engine Instance
  6. เมื่อกด Create แล้วจะเห็น DNS record ใหม่ ถูกสร้างขึ้นมา
  7. หลังจากรอสักครู่ให้ DNS record ถูก propagate ออกไป ก็จะสามารถเข้าใช้งานได้ทันที โดยในตัวอย่างเป็น web server