Friday, March 22, 2013

KM: การใช้งาน google mail (gmail)

การใช้งาน google mail (gmail)

(ใช้งานคู่กับ gmail standard view)

1. (Mail) สร้าง Label เพื่อจัดกลุ่ม E-mail

ประโยชน์: ใช้แยก E-mail เพื่อให้ง่ายในการค้นหา

ขั้นตอน:
  • เลือก "create new label" จาก navigation panel (ซ้ายมือ)
  • ใน popup New Label ให้ใส่ "label name" และเลือก "Nest label under" กรณีต้องการจัด hierachy
  • โดย default label จะมีสีเทา ถ้ามีหลายๆ label จะดูยาก (จริงๆ คือไม่สวย) สามารถเปลี่ยนสีได้โดยเลือกลูกศรด้านขวามือของ label แล้วจะมี popup ให้เลือกสี

  • ในการใช้งานให้เลือกที่ label ที่ต้องการเพื่อเข้าถึง E-mail และยังสามารถค้นหา E-mail ภายใต้ label นั้นๆ ได้
  • เปรียบเทียบระหว่างไม่ใช้และใช้งาน label
Before: Un-categorised E-mail

After: Categorised E-mail


2. (Tasks) ใช้งาน Create Task คู่กับ E-mail

ประโยชน์: สร้าง Task ที่เกี่ยวข้องกับ E-mail เพื่อใช้อ้างอิง
ขั้นตอน:
  • เปิด E-mail ที่ต้องการ
  • เลือก More > Add To Tasks จาก Action Panel
  • สามารถเข้าไปเพิ่มรายละเอียดของ task นั้นๆ โดยเลือกที่ Tasks list ในที่นี้จะสามารถระบุ Due date ของ task ได้ แต่ยังไม่มีการแจ้งเตือน (เด๋วก็มี)
  • ใช้งานผ่าน short key ตาม link นี้

3. (Contacts) สร้าง contact group

ประโยชน์: ลดเวลาและไม่ต้องจำ E-mail account ที่เกี่ยวข้องเวลาจะส่ง E-mail
ขั้นตอน:
  • เปลี่ยน view เป็น "Contacts"
  • เลือก "New Group..." ใส่ข้อมูล group name
  • สามารถใส่ E-mail เข้า contact group ได้ 2 วิธี
    • เลือก group ที่สร้างไว้ จากนั้นเลือก "Add to group" จาก Action Panel แล้วใส่ E-mail account และกดปุ่ม "Add"
    • จากหน้าหลัก เลือก E-mail account ที่ต้องการ จากนั้นเลือก "Groups" จาก Action Panel และเลือก contact group ที่ต้องการ กดปุ่ม "Apply"



Sunday, March 3, 2013

KM: Design Pattern - Model View Controller

Context

ในการพัฒนา software ที่เกี่ยวข้องกับการแสดงผลของข้อมูล ไม่ว่าจะเป็น window base / web base / mobile base (อันนี้เรียกเอง) ปัญหาที่พบมากคือส่วนแสดงผลผู้ใช้ (User Interface) มักไม่อยู่นิ่ง ยิ่งเป็นพวกทำ personalize หรือ multilingual ด้วยแล้ว หากไม่ได้มีการออกแบบให้รองรับแต่แรก มันจะเป็นอะไรที่น่าปวดหัวมาก

Problem

ปัญหาก็คือจะทำยังไงให้แต่ละส่วนมันแยกกัน (decoupling) เพื่อที่หากมีการเปลี่ยนแปลงในส่วนหนึ่งส่วนใด มันจะได้ง่ายแก่การแก้ไขและกระทบส่วนอื่นให้น้อยที่สุด

Forces


หากดูจาก Java Blue Print (http://www.oracle.com/technetwork/java/mvc-detailed-136062.html) มันจะอลังการมาก คือมีการพูดถึง software ที่ค่อนข้างจะใหญ่ มีความต้องการนำเอาข้อมูลไปแสดงผลหลายแบบ มีทั้ง HTML, WML, JSF, Swing, Web Services etc. แต่ถ้ามาดูใน software ที่ขนาดเล็กลงมาหน่อย สิ่งที่ผลักดันให้เกิดการแก้ปัญหาดังกล่าวมาจาก

  • ส่วนแสดงผลผู้ใช้ (User Interface) มักจะมีการเปลี่ยนแปลงบ่อยกว่าส่วนประมวลผล (Business Logic) หากมันรวมอยู่ด้วยกัน เมื่อมีการแก้ไขส่วนแสดงผลผู้ใช้อาจเกิดข้อผิดพลาดที่ไม่ได้ตั้งใจขึ้นกับส่วนประมวลผลได้
  • ส่วนแสดงผลผู้ใช้มีรูปแบบหลากหลาย แต่มาจากข้อมูลเดียวกัน
  • ส่วนแสดงผลผู้ใช้และส่วนประมวลผลมักจะต้องใช้ developer ที่มี skill แตกต่างกัน จึงดีกว่าหากสามารถแยกทั้งสองส่วนมาพัฒนาโดย developer ที่ชำนาญด้านนั้น



Solutions

MVC (Model-View-Controller) จึงเป็นทางเลือกหนึ่งในการออกแบบ software โดยไม่ได้จำกัดที่ภาษาใดหรือ platform ใด ใน java ก็สามารถเอา MVC ไปใช้ได้ทั้ง JEE และ JSE (http://www.oracle.com/technetwork/articles/javase/index-142890.html) เพียงแต่ใน JEE มีการทำ application framework ที่ implement ตาม MVC มาให้เรียกใช้ แต่ใน JSE ต้อง implement เอง (อาจไม่ update เนื่องจากไม่ได้ติดตามในส่วน thick client มานานแล้ว ที่เคยทำมาก็สมัย swing - -") ก่อนจะงงว่าบ่นอะไร มาดูความหมายของแต่ละส่วนใน MVC

Model - เป็นส่วนเก็บข้อมูลที่จะต้องนำมาแสดงผลและข้อมูลที่รับมาจากผู้ใช้ รวมถึงการประมวลผลข้อมูล (business logic) ทั้งนี้ขึ้นกับความซับซ้อนของ software อาจเป็น single tier, two tier, three tier หรือ multi tier ก็ได้
View - เป็นส่วนที่นำ Model มาแสดงผล (display) ให้กับผู้ใช้
Controller - เป็นส่วนสร้าง Model และควบคุม Model และ View ให้ทำงานร่วมกัน ตาม user input




Example



Credit