หลายครั้งที่ผมใช้ Collection เป็น field ใน Persistent object ของ JPA แต่ก่อนที่รู้จัก JPA ใหม่ ๆ เวลาจะ query อะไรก็มักจะสร้าง reference กลับไปยัง object หลักทุกครั้งเพื่อให้อ้างอิงกลับได้ พึ่งมารู้ไม่นานว่ามี Keyword IN เพื่อใช้สำหรับตรวจหา parent ที่ object อยู่ใน collection ของมัน * Code ทั้งหมดจะอิงตาม Play Framework จากโค้ดด้านบนถ้าต้องการหาว่า องุ่นอยู่ในตะกร้าไหนสามารถหาได้โดยใช้ IN ช่วยคือ เหมือนจะเคยจดไปแล้วแต่หาไม่เจอ จดไว้อีกทีกันลืม เผื่อเพื่อนถามด้วย
Play101: Hello, World
เยินยอ Play ไปสองครั้ง ไม่ได้ทำให้ดูเสียทีว่ามันง่ายยังไง วันนี้เหมือนว่างเลยเขียนซะหน่อย สิ่งที่ต้องเตรียมก่อนเลยคือ Java ไม่แน่ใจว่าใช้ JRE อย่างเดียวได้หรือป่าว แต่เพื่อความปลอดภัยก็ดาวโหลด JDK มาก่อนก็ได้ (ส่วนตัวคิดว่าได้ แต่ยังไม่เคยลองเหมือนกัน) Play framework ดาวโหลดเสร็จก็นำไปวางไว้ซักที่ จากนั้นกำหนด path ไปที่ directory นั้นเพื่อให้ใช้คำสั่ง play ได้ มาลองกับโปรแกรมง่ายอย่าง Hello, World ก่อน เอาแค่เข้าหน้าแรกแล้วแสดงคำว่า Hello, World ขึ้นมา ใน Terminal/Shell/Command Prompt รัน play new จากนั้นจะใส่ชื่อ project ใหม่ก็ได้ หลังจากใส่เสร็จ play จะสร้าง project directory ขึ้นมาให้ตามโครงด้านล่างคือ เรียกให้ทำงานโดยสั่ง play run (จะสั่ง play run เลยก็ได้ถ้าเปลี่ยน [...]
Play 1.1 Beta 2
หลังจากผ่านไป 1 ปี Play 1.1 ก็ออก beta 2 แล้ว วันนี้ก็เลยพยายามว่างเล่นซะหน่อย พบว่าเปลี่ยนไปเยอะมาก แม้ว่าโค้ดเดิมที่ใช้ใน Play 1.0 จะยังใช้ได้อยู่ แต่ก็มีบางส่วนที่ต้องแก้ตามแน่นอน เขียนเป็นข้อ ๆ เลยละกัน Mail API จากเดิมที่ method รวม parameter ทุกอย่างมาให้ ตอนนี้ต้องย้ายไปใช้ object ต่าง ๆ จาก Apache Common Email แทน (Apache มีทุกสิ่งให้เลือกสรรจริง ๆ) NIO Framework เปลี่ยนใหม่หมดจากเดิมที่เป็น [Mina](http://mina.apache.org/) แต่ถูกดองไว้เพราะไม่สามารถแก้มาเป็น RC ได้ แถม Mina ก็ดองมาเรื่อย ๆ ไม่ออก Release ซะที (พึ่งจะมา release ได้ไม่นานมานี้) [...]
Play Framework
เมื่อปีที่แล้วช่วงเวลาประมาณนี้แหละ @soulski ได้แนะนำให้รู้จัก Play Framework ตอนนั้นมันยังไม่ออกรุ่นแรกเลยด้วยซ้ำมั้ง แต่เห็นแล้วตอนนั้นคิดในใจเลยว่า เขียนเว็บมันต้องอย่างนี้สิ จริง ๆ Play Framework ไม่ใช่ของใหม่เลย ในภาษาอื่นอย่าง Ruby หรือ Python มีก่อนมาพอสมควรแล้วในชื่อ Rails หรือ Django แต่ว่ามันมาอยู่ในภาษา Java นี่แหละ เลยทำให้น่าสนใจ เพราะทำให้พัฒนาเว็บได้เร็วมาก แถมมีเครื่องมือและ library มากมายให้เลือกใช้ เรียกว่าวันเดียวอาจได้เห็นโครงเว็บคร่าว ๆ ให้ลองเล่นได้แล้ว จุดเด่นของ Play ที่ทำให้ชอบคือ มันสามารถ generate IDE environment ได้ ทำให้ทำงานเร็วขึ้นโดยไม่ต้องปวดหัวกับ library path ที่ต่างกันของคนในทีม เป็น feature ที่ชอบที่สุดเลยก็ว่าได้ แถมคนในทีมก็สามารถใช้ IDE อะไรก็ได้ที่ตัวเองถนัดเพราะ Play รอบรับ IDE หลัก ๆ [...]
Array หรือ Collection
ไม่รู้มีใครเคยคิดหรือป่าว แต่คำถามนี้เหมือนมันอยู่ในหัวตั้งแต่เริ่มทำงานเลยหละ (หรืออาจจะตั้งแต่รู้จัก Collection API ของจาวาเลยมั้ง) หลายคนอาจจะใช้ Collection แทน Array ไปเลยเพราะมันสะดวกดี สามารถเพิ่มลดได้ง่าย (โดยบางครั้งอาจจะไม่รู้ว่า Collection แต่ละแบบมีลักษณะอย่างไร แต่นั่นไว้เป็นอีกหัวข้อนึงละกัน) และก็สามารถใช้แทน Array ได้แทบทั้งหมด หลายคนอาจจะสงสัยว่า อ้าวแล้วอย่างนี้จะกลับไปใช้ Array ทำไม จริงๆ Array มันก็มีคุณสมบัติของมันที่ทำให้ชอบหลายๆ อย่างนะ เช่น ประกาศได้ง่าย สามารถกำหนดค่าเริ่มต้นให้มันได้ โดยไม่ต้องคอยไล่เพิ่มทีละตัว และก็มีขอบเขตที่แน่นอน ไม่สามารถเพิ่มได้! และข้อดีอย่างสุดท้ายนี่แหละ ที่เวลาเขียนโปรแกรมแล้วเอามาตัดสินว่าเมื่อไหร่จะใช้ Array หรือ Collection เวลาเลือกก็ดูจากเมธอดที่เขียนว่าจำเป็นต้องคืนค่าให้เปลี่ยนแปลงชุดข้อมูลนั้นได้หรือป่าว ถ้าคืนค่าไปแล้ว ข้อมูลจะถูกเอาไปเพิ่มหรือลดอีกภายหลังก็จะให้กลับไปเป็น Collection แต่ถ้าไม่ต้องก็ออกไปเป็น Array ซะ เหมือนกันตอนเอาเข้า ถ้าเมธอดนั้น มีไว้เพื่อเพิ่มหรือลดข้อมูล ก็รับมาเป็น Collection ซะ แต่ถ้าไม่จำเป็นก็ขอมาเป็น Array ดีกว่า แต่วิธีตัดสินนี้ไม่สามารถเอาไปใช้กับภาษาอย่าง [...]