Posted
September 16, 2008
at
Seam66
ย้อนเรื่องที่ไปที่มาให้ฟังนิดนึง Seam Hangman เกิดขึ้นจากการคุยกันใน twitter เริ่มที่ @sugree เป็นตัวตั้งตัวตี อยากให้จัดการเปรียบเทียบ web framework ในกลุ่ม paw66 แบบเห็นเป็นโค้ดและตัวอย่างกันชัดๆ จับต้องได้หน่อย เลยเสนอให้มีโจทย์ battle ขึ้นมา คนดูจะได้เปรียบเทียบได้ตรงๆ ไม่ต้องตะแคงหัวคิด ผมก็เห็นด้วยว่าถ้ามีโจทย์ในลักษณะนี้ก็ยินดีเลย เราอาจจะได้เห็นถึงวิธีการเลือกแก้ปัญหาด้วยวิธีต่างกันจากเฟรมเวิร์กแต่ละตัว ซึ่งสอดคล้องกับเป้าหมายของ paw66 อยู่แล้ว ผมเสนอโจทย์ Hangman ไป เพราะอยากเขียนมานานแล้ว คราวก่อนในงาน NJUG พี่ @pphetra เคยเขียน Hangman ด้วย Tapestry4 ให้ดู ซึ่งเป็นโจทย์ที่ไม่ยากไม่ง่ายเกินไปเหมาะกับการเป็น show case แต่ละเฟรมเวิร์กอย่างดี @sugree ตอบตกลง และดูเหมือนทุกคนจะ happy กับโจทย์นี้ จากนั้นก็แยกย้ายกันไปทำ เรื่อง scope ของ requirements ไม่มีการคุยกันอย่างชัดเจนตายตัว ใครอยากจะทำ Hangman ภาคพิสดารบรรเจิดแค่ไหนก็เชิญเลย ซึ่งนั่นก็ไม่ใช่ปัญหา [...]
Posted
September 18, 2008
at
Seam66
ไล่โปรแกรม Seam Hangman ให้ดูครับว่าเกิดอะไรขึ้นบ้าง use case ที่ต่างจะมีด้วยกัน 3 กรณี กรณีแรกที่เข้าถึง hangman.seam ผ่าน url เพื่อเริ่ม conversation กรณีกด link ตัวอักษรเพื่อเล่นเกมนั้น กรณีกด link แล้วรู้ผลแพ้ชนะ ก่อนที่จะมาดูกัน อยากให้จำไว้ว่า เราสามารถแยกแยะ conversation ออกจากกันด้วยเลข id ซึ่งเลข id นี้ Seam จะเป็นคน generate มาให้ และ Seam จะรับผิดชอบการ สร้างและทำลาย conversation ให้ทั้งหมด
[...]
Posted
September 18, 2008
at
Seam66
เอนทรีนี้สำหรับคนที่ไม่มีอดีตกับ Spring อาจจะอ่านไม่ค่อยรู้เรื่องนะครับ ถือว่าอ่านไปสนุกสนานละกัน เพราะถ้าอยู่ๆ โดดมาใช้ Seam เลยคงไม่เคยเข้าใจวันเลวร้ายในอดีตเป็นเช่นไร เพราะ Seam มัน just work! บทความนี้เรียบเรียงจากหัวข้อ Seam managed transactions ใน document ของ Seam ผมคิดว่าเอกสารนี้อธิบายตัวเองได้ชัดเจนมากและผมคงเล่าได้ไม่ดีเท่าเค้าจึงเลือกวิธีการนี้ ถ้าสนใจไปอ่านเพิ่มเติมเองนะครับ แต่ทั้งนี้ทั้งนั้นเอกสารของ Seam ได้ละความรู้บางอย่างไว้ในฐานที่เข้าใจ แต่ผมคิดว่ามือใหม่หลายคนคงไม่เข้าใจ ผมเลยจับขยายความให้ไว้ด้านล่าง ถ้าอ่านบทความนี้แล้วติดขัด ลองอ่านส่วนขยายความแล้วกลับไปอ่านซ้ำอีกรอบน่าจะเข้าใจมากขึ้นครับ Seam managed transactions พูดถึงการ persistence ก็ต้องพูดถึงเรื่อง transaction ด้วยเป็นของคู่กัน โดยปกติแล้วไม่ว่าใน Session Bean ใน EJB หรือ Spring Bean เราสามารถใช้ transaction แบบประกาศ เวลามีการเรียกมาที่ method ใดๆ ตัว container จะทำหน้าที่จัดการเปิด transaction ก่อนเข้าสู่ method และปิด [...]
Posted
September 19, 2008
at
Seam66
พี่ @pphetra request มาใน twitter ตั้งแต่วันแรกเลยครับ ผมก็รอให้อธิบาย conversation ให้จบก่อนถึงจะโชว์ พี่ป็อก request มาว่า pphetra @deans4j version seam ต้อง show ความเป็น component ด้วยการ เล่นที 2 game พร้อมกันได้ pphetra @deans4j ทำแบบที่เล่น 2 games(instance) พร้อมกันบน หน้าเดียวกันสิ เรื่องนี้ไม่เป็นปัญหาอยู่แล้วครับ ถ้าเขียน model แยกขาด และเข้าใจระบบการทำงานของ conversation จาก class GroovyHangman ของเดิมก็ไม่ต้องแก้ไขอะไรเพิ่มเติมแม้แต่บรรทัดเดียว จะมีเขียนเพิ่มก็ส่วน conversation ที่เอาไว้ครอบ แล้วแก้ไข view ให้มันเป็นลักษณะ template แทนจะได้ reuse ได้ก็เป็นอันจบ มาดูกันครับ class ที่เพิ่มเข้ามาก็คือ DoubleHangman.groovy เป็น class [...]