วันอังคารที่ 18 ธันวาคม พ.ศ. 2555

ขี่จิงโจ้ รอบที่ 3-- มาแก้ไขโค้ดเพื่อให้ได้เวปอย่างที่คุณต้องการกันเถอะ ตอนที่ 3 (ตอนจบ)

หลังจากจัดการกับหน้าเวปเสร็จแล้ว เรามาดูวิธีการจัดการกับ Controller กันบ้างค่ะ
ระบบจะทำการสร้างไฟล์ AspectJ ขึ้นมาเป็นโค้ดส่วน controller ให้อัตโนมัติ ซึ่งตรงนี้เราจะไปเปลี่ยนแปลงแก้ไขไม่ได้เลย แต่ก็จะมีพวกฟังก์ชันพื้นฐานครบตาม CRUD (Create,Read,Update,Delete) ดังรูป

5. แต่บางครั้งเราก็อาจจะต้องการฟังก์ชันนอกเหนือจากนี้ เช่น ค้นหาข้อมูลแบบแปลกๆ เราก็ต้องเขียน Controller เองค่ะ ซึ่งจะต้องเขียนในไฟล์ Controller.java เท่านั้น
ที่สำคัญ ถ้ามีการติดต่อฐานข้อมูลที่ไม่ตรงตามที่ AspectJ มีให้ เราก็จะต้องเขียนฟังก์ชันที่ดึงข้อมูลจากฐานข้อมูลต่างหากค่ะ  ดังตัวอย่าง
ไฟล์ RecordExpenseService จะเป็นโค้ดที่เขียนขึ้นมาเพื่อเก็บชุดคำสั่งสำหรับการติดต่อฐานข้อมูลในแบบที่ไม่มีให้ใน Spring Roo  เช่น ค้นหาข้อมูลที่มีความสัมพันธ์กันมากกว่าสองตาราง หรือใช้การเปรียบเทียบต่างๆ เราก็สามารถเขียนชุดคำสั่ง JPA หรือจะใช้ Native SQL ก็ได้

ส่วนไฟล์ RecordeExpensesController เราก็ไปเพิ่มอีก action นึงให้ทำการแสดงรายการซื้อสินค้าที่ราคาแพงๆ ทั้งหมดออกมาค่ะ

6. ส่วนของการล็อกอิน จะต้องกำหนดให้กับไฟล์ applicationContext.xml ว่าให้อ่านข้อมูล username, password จากที่ไหนและยังไง กำหนดได้ดังรูปเลยค่ะ ก็จะเห็นว่าเราระบุชุดคำสั่ง SQL ที่จะใช้ดึงข้อมูลผู้ใช้ออกมา นอกจากนี้ยังกำหนดการเข้ารหัสพาสเวิร์ดได้ด้วยนะคะ

ท้ายที่สุดเห็นมั้ยคะว่า การสร้างเวปให้เป็นของเราเองไม่ได้ยากอย่างที่คิด ถึงรายละเอียดของ Java อาจจะเยอะไปหน่อย แต่ถ้าศึกษาดีๆ จะพบว่าเราก็สามารถเขียนเวปด้วย Java ได้ในเวลารวดเร็วเช่นกันนค่ะ
สำหรับการใช้ Spring Roo เพื่อสร้างเวปง่ายๆ ซีรีย์นี้เป็นการอธิบายการปรับเปลี่ยนโค้ดเมื่อใช้ Spring Roo สร้างเวป โดยที่ไม่ได้มุ่งเน้นให้เข้าใจโค้ดนะคะ ก็อาจจะเห็นว่ามีหลายๆจุดที่ ผู้อ่านคงรู้สึกว่าแล้วจะไปปรับอย่างอื่นให้มากกว่านี้ได้อย่างไร

ถ้าหากมีเวลา จะเขียนอธิบายโครงสร้างของ Spring Roo อย่างละเอียด(กว่านี้) ครั้งหน้า แต่อาจจะไม่มีเวลาอธิบาย Spring Framework และการเขียนเวปด้วย JAVA อย่างครบถ้วนนะคะ ผู้อ่านคงต้องปรับพื้นฐานด้วยการอ่านจากหนังสืออีกทีน่ะค่ะ  อย่างไรก็ตาม ขอให้สนุกกับการเขียนเวปด้วยสปริงจิงโจ้นะคะ

วันจันทร์ที่ 17 ธันวาคม พ.ศ. 2555

ขี่จิงโจ้ รอบที่ 3-- มาแก้ไขโค้ดเพื่อให้ได้เวปอย่างที่คุณต้องการกันเถอะ ตอนที่ 2

ต่อจากตอนที่แล้วนะคะ เราก็สามารถเปลี่ยน theme ของเวปได้แล้ว ทีนี้เรามาเปลี่ยนหน้าตาเวปกันบ้าง
2. การเปลี่ยนข้อมูลแสดงผลหน้าตาของเวป ไฟล์ .jspx ที่ถูกสร้างให้อัตโนมัติ
ถ้าจำกันได้ เจ้า Spring Roo จะสร้างหน้าเวป 4 หน้าให้เราอัตโนมัติ ตามแบบ CRUD ซึ่งก็จะได้ไฟล์ create.jspx , list.jspx, show.jspx และ update.jspx มาสำหรับหนึ่งตารางข้อมูล ทีนี้หากเราต้องการปรับเปลี่ยนหน้าตาเหล่านี้ให้เป็นอย่างที่เราต้องการทำยังไงดี
อันดับแรก จะต้องไปที่ไฟล์ Controller ของข้อมูลชุดนั้นก่อนเลยค่ะ
จะเห็นว่าตรง @RooWebScaffold มีคำสั่งให้ automaticallyMaintainView=true อยู่ ให้เปลี่ยนเป็น =false ซะ ตรงนี้ก็คือคำสั่งที่ให้ Spring Roo ปรับเปลี่ยนหน้าเวปของเราให้อัตโนมัติค่ะ ที่ต้องมาเปลี่ยนเป็น false ก็เพราะว่า ถึงแม้เราไปแก้โค้ดหน้าเวปให้เปลี่ยนไปตามที่เราชอบแล้ว แต่ว่า spring roo ก็จะจัดการปรับหน้าเวปเรากลับมาเป็นเหมือนเดิมอยู่ดีค่ะ เพราะว่ามันจะสร้างหน้าเวปตามไฟล์ .java ที่มีอยู่ตามรูปแบบของมันเสมอ ดังนั้นต้องแก้เป็น false ก่อนที่เราจะเริ่มทำการแก้โค้ด .jspx นะคะ

มาถึงการแก้โค้ด ไฟล์ .jspx จะใช้ Syntax ของ spring form สำหรับฟอร์มที่เก็บข้อมูล (ดูได้ที่นี่ )และใช้ Syntax HTML กับ JSPX กับส่วนอื่นๆที่เหลือ

ยกตัวอย่างเช่น หน้าเวปที่เราได้ ตรง List Menu จะแสดงข้อความยาวๆ (คือทั้ง object) แต่เราอาจจะต้องการให้แสดงแค่ ชื่อ อย่างเดียว ก็สามารถ แก้ไขโดย ตรง <form:select> จะมี <form:options> ซึ่งก็คือตัวเลือกใน List เราก็เพิ่มตัวแปรเข้าไป ให้ itemLabel="name" (เมื่อ name คือชื่อตัวแปรใน .java) แค่นี้ก็ทำให้แสดงเฉพาะชื่อของกลุ่มแล้วค่ะ
 <form:options itemValue="id" itemLabel="name" items="${expensecategorys}"/>

3. การที่เราจะเพิ่มไฟล์ .jspx เข้าไปใหม่ (ที่ไม่ใช่ 4 ไฟล์ที่ระบบสร้างให้อัตโนมัติแบบข้างบน) ก็สามารถทำได้เลย แต่จะต้องแก้ไขไฟล์ views.xml ซึ่งเป็นไฟล์ที่ทำหน้าที่ระบุว่ามีไฟล์ .jspx อะไรบ้าง
อย่างในรูปข้างบน จะเห็นว่าถ้าเราต้องการเพิ่มไฟล์ .jspx เข้าไปใหม่อีกไฟล์ ก็จะต้องเพิ่ม <definition> เข้าไปที่ระบุชื่อไฟล์นั้นๆค่ะ
4. การที่เราจะจัดการหน้าเมนู ที่มีไว้ให้อัตโนมัติ เราสามารถเพิ่มเมนูใหม่ๆ ปรับย้ายได้ตามต้องการ แต่ก็จะขออธิบายโครงสร้างมันไว้คร่าวๆเผื่อใครอยากจะแก้ไขไฟล์เดิม menu.jspx นะคะ
จะเห็นว่าไฟล์ menu.jspx นี้เป็น Syntax HTML ธรรมดา จะมีพิเศษก็ตรงที่ตัวแรป id กับค่าตัวแปรต่างๆที่ถูกเอามาใช้ เช่น ${web_mvc_jsp_create_recordexpenses_menu_item_url} นั้นเป็นตัวแปรของข้อความที่จะเอามาแสดงซึ่งถูกสร้างอัตโนมัติโดยระบบ อยู่ในไฟล์ที่ชื่อว่า application.properties ดังรูปค่ะ
จะเห็นว่า ตัวแปรก็เก็บแค่ข้อความที่จะใช้แสดงผลในหน้าเวปค่ะ เพราะฉะนั้น เราสามารถที่จะตั้งชื่อตัวแปรใหม่ก็ได้ หรือเปลี่ยนข้อความ(สีน้ำเงิน) ก็ได้ค่ะ

อีกจุดนึงก็คือ ตัวแปรที่ถูกใช้ในฟอร์ม เช่น <spring:message code=label.recordexpenses> ตัวแปร label.recordexpenses นี้คือตัวแปรที่อยู่ในไฟล์ message.properties ค่ะ
จะเห็นว่า การตั้งชื่อมักจะบอกก่อนว่าข้อความนี้จะถูกใช้ที่บริเวณไหน เช่น button. แล้วก็บอกรายละเอียดชื่อของข้อความ เช่นปุ่มบันทึกก็เป็น button.save เช่นเคยเราสามารถปรับเปลี่ยนข้อความ หรือเพิ่มตัวแปรใหม่ๆได้ค่ะ

ทีนี้ตรงนี้มีประโยชน์ตรงที่ว่า Spring Roo ออกแบบนี้เพื่อให้รองรับเวปที่มีมากกว่า 1 ภาษา ดูได้จากไฟล์ message.properties จะมีต่อท้ายว่า _de / _es คือเปลี่ยนตามภาษาค่ะ เพราะฉะนั้นเราก็แค่ให้หน้าแรกของเวปสามารถกดเลือกภาษาที่จะอ่านได้ ระบบก็จะมาดึงข้อมูลตัวแปรจากไฟล์ภาษาที่เลือกไปแสดงผลค่ะ

เดี๋ยวจะมาต่อ ตอนที่ 3 ให้จบการแก้ไขเวปอย่างง่ายๆบน Spring Roo นะคะ

ขี่จิงโจ้ รอบที่ 3-- มาแก้ไขโค้ดเพื่อให้ได้เวปอย่างที่คุณต้องการกันเถอะ ตอนที่ 1

ทิ้งค้างกันไว้นานเลยนะคะ จากบทความ Spring Roo ครั้งที่แล้ว คราวนี้คิดว่าจะพยายามหาเวลาว่างเขียนบล็อกให้ได้อาทิตย์ละครั้ง ก็เลยอยากมาต่อเรื่องที่ติดค้างไว้ซักหน่อยค่ะ

จากครั้งที่แล้วได้โชว์ชุดคำสั่ง 14 คำสั่ง ที่ใช้สำหรับสร้างเวปอย่างง่ายๆ บน Spring Framework กันไปแล้ว จุดประสงค์ก็เพื่อต้องการให้เห็นว่า แม้ Java เองก็มี scaffold มารองรับ ทำให้สร้างเวปได้ง่ายขึ้นเหมือนๆกับ dynamic language ภาษาอื่นๆเหมือนกันค่ะ (แต่เอาเข้าจริง Java จะค่อนข้างซับซ้อนกว่านะคะ)

หลังจากที่รัน 14 คำสั่งพื้นฐานเสร็จแล้ว เราก็จะได้เวปที่มีหน้าตาสีเขียวตาม Template ที่เค้าให้มา และก็อาจจะมีอีกหลายๆจุดในเวปที่ยังไม่ตรงกับความต้องการของเราจริงๆใช่มั้ยคะ
เริ่มต้น จะเห็นว่า Spring Roo สร้างโฟลเดอร์และไฟล์ต่างๆให้เราอัตโนมัติตามรูปนี้ค่ะ

 ทีนี้เราจะเริ่มมาปรับปรุงแก้ไขกันทีละจุด (อย่างง่ายๆ) เพื่อให้เหมาะกับการสร้างเวปอย่างง่ายนะคะ
1. ถ้าหากต้องการเปลี่ยนหน้าตา template / theme ของเวป เราก็คงต้องการเปลี่ยนไฟล์ CSS ที่ใช้ใช่มั้ยคะ สำหรับไฟล์ที่ทำหน้าที่เกี่ยวกับการแสดงผลหน้าตาของเวปนั้น จะอยู่ในโฟลเดอร์ WEB-INF/layouts ค่ะ


จะเห็นว่าในโฟลเดอร์ layouts มีไฟล์ default.jspx กับไฟล์ layouts.xml อยู่ซึ่งไฟล์ .jspx ก็คือไฟล์ theme ในเวปนั่นเองค่ะ ส่วนไฟล์ .xml จะเป็นไฟล์ที่กำหนดโครงสร้างว่า theme เวปเนี่ยจะมีไฟล์ .jspx อะไรบ้างที่จะเอามาใช้
เริ่มจากดูที่ไฟล์ layouts.xml ก่อนนะคะ ก็จะเห็นว่า โครงสร้างของ theme เวปแบ่งเป็นสองส่วนค่ะ คือ body กับ menu ไฟล์ .xml เนี่ยก็จะระบุว่า ส่วนของ body จะใช้ .jspx อะไร และส่วน menu ใช้ .jspx อะไร ซึ่งเราก็จะสามารถเปลี่ยนไฟล์ .jspx ที่ใช้ตามที่เราออกแบบได้ค่ะ

สำหรับไฟล์ default.jspx ก็จะเป็นรายละเอียดส่วนของ theme ในหน้าเวปทั้งหมด ซึ่งจะสามารถเพิ่มลิงก์ไฟล์ CSS และ Java Script ได้ค่ะ จะเห็นว่า Syntax ที่ใช้นั้นเป็น spring tag ดังนั้น เราจะต้องใช้ <spring:url> เพื่อกำหนดที่อยู่ลิงก์ของไฟล์ CSS / Java Script ก่อนที่จะ เพิ่มเข้าไปในหน้าเวป หากจะเพิ่มหรือเปลี่ยนไฟล์ CSS แก้ตรงคำสั่ง <link rel="stylesheet">
หากจะเพิ่มหรือเปลี่ยนไฟล์ Java Script ก็แก้ตรงคำสั่ง <script >
ส่วน Syntax อื่นๆทั่วไปก็เป็น HTML ธรรมดา ซึ่งสามารถที่จะปรับเปลี่ยนได้ตามใจเราต้องการ

อ่านต่อได้ที่ มาแก้ไขโค้ดเพื่อให้ได้เวปอย่างที่คุณต้องการกันเถอะ ตอนที่ 2

วันพุธที่ 5 ธันวาคม พ.ศ. 2555

รีวิว BB10 OS จากงาน BB Jam Asia 2012 และจาก Alpha B Device

คราวนี้มาพูดถึงรายละเอียดเนื้อหาในงานกันบ้างนะคะ เนื่องจากว่าไม่ได้จดรายละเอียดไว้มากนัก ก็จะขอเล่าแบบคร่าวๆเท่าที่พอจำได้ดีกว่า

ในส่วนของ General Session นั้นก็ พูดถึงแนวทางของ BB10 OS ที่เรียกได้ว่าเป็นไพ่ตายใบสำคัญของ RIM แล้วล่ะค่ะ เพราะทุ่มเทสุดๆเพื่ออนาคตของบริษัท ซึ่งทั้ง OS ตัวเต็มและ Device ก็เตรียมจะออกมาให้ยลโฉมกันเดือน ก.พ. ปีหน้านี้

สำหรับ Developer ก็มีทั้งโปรแกรม 10k commitment ซึ่งคือการที่ให้เหล่า developer ส่งโปรแกรมขึ้น app world ภายใน deadline ที่กำหนดไว้(ต้องลงทะเบียนว่าเราจะเข้าร่วมโปรแกรมนี้ก่อน) แล้วถ้าหากไม่สามารถทำรายได้ถึง 1,000$ ในหนึ่งปี ทาง RIM ก็จะจ่ายชดเชยส่วนที่ขาดให้ค่ะ

ต่อมาก็เรื่อง BB10 Gold SDK คือตัว API ฉบับสมบูรณ์สำหรับนักพัฒนาบน BB10 ที่จะออกมาให้เหล่า developer ได้ใช้กันในเดือน ธันวาคมนี้ และก็ยังมี Alpha C device ที่ถ้าใครลงทะเบียนขอไว้และสามารถส่ง application เข้า app world ได้ตามเงื่อนไขที่กำหนด ก็จะได้รับไปค่ะ

รายละเอียดเพิ่มเติม
https://developer.blackberry.com/builtforblackberry/commitment/
https://developer.blackberry.com/devalphac/

มีโปรแกรม appgenerator ที่จะทำการดึงข้อมูลจาก blogspot, facebook, twitter จาก account ของเรามาเป็นแอพให้อ่านกันผ่านมือถือได้อย่างง่ายๆด้วยค่ะ (อย่างบล็อกนี้ก็ดูผ่านมือถือที่เป็น BB ได้นะคะ โหลดมาฟรี ชื่อแอพ Ant-share ค่ะ)
เพิ่มเติม http://www.blackberryappgenerator.com/blackberry/

ซึ่ง RIM ยืนยันความรักที่มีต่อ developer ด้วยเพลงนี้


ถึงแม้ตัวเพลงกับทำนองถึงจะร็อคไปหน่อย แต่ความหมายฮาและน่ารักน่าหยิกเลยทีเดียว (เค้าจะมีอีกเพลงออกมา วันเปิดตัว BB10 ปีหน้าค่ะ)

ส่วนรายละเอียดเกี่ยวกับ BB10 คร่าวๆคือ รองรับคีย์บอร์ดภาษาไทยแน่ๆ สามารถพิมพ์ได้หลายภาษาในข้อความ และเพิ่ม keyboard layout ได้สูงสุด 3 ภาษา
ส่วนของ word suggestion ที่จะแสดงคำที่คาดเดาว่าเราจะพิมพ์นั้น ทำได้น่าสนใจมาก เพราะจะมีคำเพราะแทนที่เราจะกด space bar จะกลายเป็นใช้นิ้วปัดคำที่เราเลือกแทนค่ะ
พอพิมพ์ตัว g ก็จะเห็นว่ามีคำแนะนำปรากฎบนแป้น ดังรูป มีคำว่า Get, Good, Glad ถ้าเราชอบคำไหนก็แค่ใช้นิ้วปัดตรงแป้นคำนั้นแทนการกด space bar อย่างใน ios / android ค่ะ

พอปัดคำว่า Good ก็ได้จะแบบในรูป เสร็จแล้วก็จะมีการแนะนำคำต่อไปอย่างที่เห็นค่ะ

ตัว social application เองก็มี Social Hub ซึ่งเป็นการรวมเอา social network รายใหญ่ทั้ง 4 account มาใส่ไว้ใน BB10 แล้วก็แทนที่เราจะต้องพิมพ์ข้อความด้วยการล็อกอินเข้า app จริงๆก็สามารถทำผ่าน BB Social Hub ได้เลย รวมถึง notification และ message ต่างๆก็ทำผ่านโปรแกรมนี้ได้ค่ะ
ส่วนของ UI ก็คล้ายๆกับ playbook แต่ว่าเป็น UI สไตล์ที่เราชอบนะคะ เพราะว่า concept คือไม่ต้องกดปุ่ม back  เริ่มตั้งแต่ การเข้าหน้า home ก็ใช้ slide ขึ้นค่ะ ถ้าสไลด์เฉียงจะได้ คีย์บอร์ด ถ้าสไลด์ลงจะได้ระบบการโทรฯ เวลาเราเข้าไปในแอพต่างๆ จะกลับไปแอพอื่นๆ ก็ใช้สไลด์หมดเลย
รู้สึกว่ามันสะดวกต่อการใช้งานมาก
อย่างรูปนี้ พอเปิดเครื่องมาจะได้เป็นหน้าแรกก็ใช้นิ้วลากขึ้นบน

จะเห็นว่า ภาพค่อยๆเปลี่ยนไปเป็นหน้าแรกที่เก็บเมนูต่างๆ  สวยตรงที่ภาพค่อยๆเปลี่ยนทับจากเลเยอร์เดิม ทำให้เห็น 2 screen ซ้อนกัน

จนสุดท้ายก็จะได้เป็นหน้าหลักแบบนี้ค่ะ
ที่ชอบมากๆอีกอย่างคือ แนวคิด Flow ของเค้า ซึ่งมันก็คือ UI ที่ออกมา แสดงให้เห็นว่ารองรับ multi tasking อย่างแท้จริง เราสามารถเปิดแอพ stand by ไว้ได้สูงสุด 8 แอพ และถ้าเราเลื่อน screen ของหน้าที่เปิดใช้งานอยู่ จะเห็นว่ามันซ้อนทับกับ screen ของอีกหน้าจริงๆค่ะ
อันนี้เปิดส่วนของ Social Hub ไว้ก่อน แล้วจะกลับมาหน้าหลักก็แค่เลื่อนมาทางขวาค่ะ

อันนี้เป็นแอพที่ถูกเปิด stand by ไว้ ในหนึ่งหน้าจะมี 4 ไอคอนค่ะ มีได้สูงสุด 8 แอพ
สำหรับ session ย่อยๆ ส่วนใหญ่แล้วเราจะเข้าฟัง Native SDK ค่ะ ก็คงขอเว้นไว้ไม่เอามาอธิบาย เพราะเป็นเทคนิคย่อยๆของหมวดหมู่ต่างๆ ไม่ว่าจะเป็น PIM, Push otification, Camera and Video, Network connection, etc.
อ้อ ในตัว BB10 นี้จะไม่รองรับ JAVA API แล้วนะคะ แต่ก็สามารถ port แอพที่พัฒนาบน andriod มาใส่ใน  BB10 ได้ตามปกติ แล้วก็รองรับนักพัฒนา HTML5 , Adobe AIR ค่ะ

สรุปว่า ใครที่สนใจจะ develop แอพบน BB10 ก็สามารถอ่านรายละเอียดต่างๆได้ที่ https://developer.blackberry.com/
ส่วนใครที่เล็งๆอยู่ว่าจะใช้ BB ดีมั้ย เค้าก็จะมีขายเครื่องทั้งแบบมีปุ่มกด และไม่มีนะคะ แล้วก็โฆษณาว่าจะเปิดตัวด้วย app world ที่มีแอพเยอะมากเลยล่ะค่ะ อันนี้ก็ต้องรอดูกันต่อไป แล้วก็ไปลองใช้ BB10 OS ดูก่อนว่าชอบใจ ใช่แนวหรือเปล่า รอทดสอบกันได้เดือน กุมภาพันธ์ปีหน้านี้แล้วค่า

เข้าร่วมงาน BB Jam Asia 2012 ที่กรุงเทพฯ

ได้มีโอกาสเข้าร่วมงาน Blackberry Jam Asia เป็นครั้งแรก ก็เลยอยากมาแชร์ประสบการณ์ ก่อนอื่นต้องขอบคุณ SIPA ที่ให้โอกาสลงทะเบียนได้ฟรีนะคะ เพราะปกติแล้วงานนี้จะต้องเสียค่าลงทะเบียน ประมาณ 20$ แต่มีส่วนลดสำหรับคนที่เคยเข้าร่วมงานมาแล้ว หรือคนที่เป็นนักศึกษาอาจารย์ค่ะ

จริงแล้ว งาน Blackberry Jam นี่จะวนไปจัดตามประเทศต่างๆเป็นตัวแทนของแต่ละทวีป ซึ่งปีที่แล้วประเทศไทยน้ำท่วมเลยต้องไปจัดที่สิงคโปร์ ปีนี้ก็เลยจัดที่เมืองไทยของเราตามสัญญา งานก็มี 2 วัน คือ 29-30 พ.ย. ไปกันตั้งแต่เช้าจนเย็นค่ำไม่อยากจะกลับกันเลยทีเดียว

งานนี้เป็นงานที่จัดขึ้นเพื่อรวบรวมเอานักพัฒนาแอพพลิเคชั่นบน BB platform มาเจอกัน ซึ่งจะมี General session ที่พูดถึงเรื่องรวมๆเกี่ยวกับแผนการผลิตภัณฑ์ของ BB เอง และแนวทางต่างๆ ต่อจากนั้น ก็จะแบ่งเป็นห้องๆ ที่จะมีวิทยากรมาพูดแบ่งตามหัวข้อต่างๆ ซึ่งจะลงรายละเอียดถึงโครงสร้างของการพัฒนาแต่ละจุดใน BB  และถึงแม้ใครจะไม่ใช่ BB developer ก็ยังสามารถเข้าร่วมได้นะคะ เพราะว่าหัวข้อที่พูดบางหัวข้อก็เป็นแบบพื้นฐานทั่วๆไป หรือใครที่มีพื้นอยู่แล้วก็เข้าฟังหัวข้อที่เป็นขั้นสูง หรือเข้าห้องแลปเขียนโค้ดกันก็ได้

สำหรับรูปแบบการจัดงาน ต้องขอชมเชยว่าจัดได้ดีมากเลย ตั้งแต่ระบบการลงทะเบียนออนไลน์ การให้เราสามารถเลือก session ที่เข้าฟังได้ออนไลน์(เป็นการจองที่นั่ง) เรียกว่าจัดตารางการเข้าร่วมงานของตัวเองได้ตามใจชอบก่อนจะถึงวันงานจริง และก็แม้กระทั่งวันงานเองก็แค่ล็อกอินเข้าระบบก็ถือว่าลงทะเบียนเรียบร้อยแล้ว รับป้ายชื่อ เสื้อแจกฟรี(ที่เป็นธรรมเนียมของงานเหล่าๆนี้ไปแล้ว) ทำให้รวดเร็วทันใจดีจริงๆ และที่พิเศษคือมีการแจก BB Alpha B device ให้กับ developer ที่มีคุณสมบัติผ่านตามเกณฑ์ ซึ่งก็คิดว่าน่าจะคัดมาจากประวัติในใบลงทะเบียนนั่นเอง

แม้กระทั่งภายในงานเอง การเข้าฟังแต่ละ session ก็สะดวก มีการสแกนบาร์โค้ดที่ป้ายชื่อทำให้รู้ว่าใครเข้าฟังห้องไหน(มีห้องสำหรับฟังเลคเชอร์ทั้งหมด 4 ห้อง และแลป 2 ห้อง) ถ้าใครจองที่นั่งไว้ก็จะเข้าได้เลย แต่คนที่ไม่ได้จองที่นั่งไว้จะต้องรอจนกว่าจะถึง 5 นาทีก่อนเริ่มพูด ถึงจะเข้าห้องได้ค่ะ ในห้องจะมีกระดาษกับดินสอเตรียมไว้ให้สำหรับคนที่ต้องการจด

ส่วนเรื่องการเลี้ยงรับรอง เรียกว่างานนี้ไม่ท้องแตกไม่เลิกกิน เพราะอาหารกลางวันเป็นบุฟเฟต์ มีทั้งอาหารฝรั่ง ไทย ญี่ปุ่น คาวหวาน มากันครบ ช่วงพักเบรกก็มีอาหารว่าง น้ำผลไม้สดๆ ให้ทานกันตลอด รวมถึงในห้องที่ฟังเลคเชอร์แต่ละห้องก็จะมี น้ำดื่มแบบขวด วางไว้ให้หยิบดื่มแก้กระหายกันตลอดทั้งงาน ซึ่งตอนเย็นของวันแรกจะมีปาร์ตี้ด้วยค่ะ (แต่เราไม่ได้เข้าร่วม เสียดายง่ะ T T)
มุมโปรดที่เราฟาดเรียบทุกวัน
หลังจากงานจบ ก็จะมี online survey ให้เราทำการประเมินมีทั้งประเมินในแต่ละ session ที่เราได้เข้าฟัง รวมถึงประเมินการจัดงานด้วยค่ะ ในวันที่สองนี้ พอเราทำประเมินเสร็จเค้าก็จะแจกของที่ระลึกให้
รวมมิตรของฝากจากงาน BBJam Asia มี Mobile alpha device , Funduino microcontroller board,  ปากกา และลูกบอลคลายเครียด (จริงๆได้ บัตรรถไฟ MRT มูลค่า 150 บาทมาด้วยล่ะ)


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

ที่สำคัญ แค่ความรู้ๆต่างๆที่ได้ ก็คุ้มค่ามากแล้วค่ะ เพราะวิทยากรส่วนใหญ่เป็นระดับมืออาชีพจาก RIM เองทั้งนั้น อีกทั้งยังแบ่งหัวข้อที่พูดตามระดับความยากง่าย ทำให้เราเลือกฟังได้เหมาะสมตามพื้นความรู้ของเราค่ะ
ครั้งหน้าถ้ามีโอกาสได้เข้าร่วมงานนี้อีก คิดว่าเราคงไม่พลาดแน่นอนค่ะ :)

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

วันจันทร์ที่ 14 พฤศจิกายน พ.ศ. 2554

มือใหม่หัดปั้นบัวลอยเบญจรงค์

ด้วยความที่เราเป็นคนชอบกินขนมหวานมาก วันไหนถ้าร่างกายไม่ได้รับน้ำตาล มันเหมือนจะไม่สดชื่น ก็เลยทำให้เราจะซื้อขนมติดตู้เย็นไว้ตลอด อย่างน้อยๆก็ต้องมีช็อคโกแลตซักแท่ง แต่ถ้าไม่มีขนมอะไรกินเลย แต่มีผลไม้ก็พอแก้ความอยากได้บ้าง แต่ดึกๆก็โหยอีกอยู่ดี

ช่วงนี้เรากำลังบ้าเห่อขนมไทย ชอบกินน่ะเป็นทุนเดิมอยู่แล้ว แต่ยังไม่เคยทำเองเลย เคยแต่เป็นลูกมือช่วยแม่ช่วยน้าหยิบโน่นจับนี่เท่านั้นเอง กลับบ้านอาทิตย์นี้เราเลยชวนยายผู้แสนน่ารักทำขนมกินกัน นั่งคุยกันตั้งแต่เช้าจนบ่าย ได้ไอเดียทำขนมมาเยอะแยะ

วันต่อมา... ยายกับเราสองคนก็ปิ๊งไอเดียอยากทำขนมบัวลอยไว้กินกัน ที่สำคัญต้องเป็นบัวลอยไข่เต่าด้วย ไปซื้อของมาเตรียมไว้เสร็จสรรพ แต่...ดูทีท่าเหมือนว่าจะได้กินนาบกระทะอีกวัน
แม่เรายังถามว่า จะหัดทำไปทำไมขนมบัวลอย เหอๆๆ คงรู้ว่าจะไม่สำเร็จ (จริงๆแม่เราทำบัวลอยอร่อยนะ)

แต่โชคยังเข้าข้าง เมื่อน้าของเราซึ่งมีฝีมือในการทำขนมอย่างมาก มาทำธุระที่บ้านพอดีก็เลยขอให้น้าเป็นครูสอนทำขนมบัวลอยซะเลย
เราลืมคิดไปว่าจะมาโพสลงบล็อค เลยไม่ได้ถ่ายขั้นตอนการทำเอาไว้ และไม่ได้จัดใส่ถ้วยแก้วให้ดูสวยงาม มีแต่รูปจากถ้วยที่เรากินนี่แหละ ฟาดไปสองวัน วันละสามมื้อหลังอาหาร ลืมอ้วนกันเลยทีเดียว

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

ขั้นตอนการปั้นเม็ดบัวลอย
  1. เทแป้งข้าวเหนียวลงในภาชนะใหญ่ๆ นำหัวกะทิเทลงไปผสมทีละนิดๆ เราใช้หัวกะทิเพราะจะทำให้แป้งนิ่ม นวดไปจนแป้งนิ่มได้ที่พอสำหรับปั้นเป็นเม็ด ไม่ให้แป้งเหลวหรือแข็งเกินไป
  2. ถ้าหากจะผสมสี ก็ใส่ในขั้นตอนนี้ เราใช้สีเขียว คั้นน้ำจากใบเตย สีฟ้าจากน้ำดอกอัญชัญ สีชมพูจากน้ำเฮลบลูบอย ส่วนสีเหลือง เราเอาฟักทองนึ่งมาตักเอาแต่เนื้อแล้วบดผสมลงในแป้ง   (ถ้าใครจะผสมเนื้อฟักทอง หรือเนื้อเผือกลงไป อย่าผสมเยอะนะคะ เพราะจะทำให้เหลวเกินไป ไม่มีแป้ง ใส่พอประมาณกับปริมาณแป้ง)
  3. ปั้นให้เป็ดเม็ดกลมๆ ขนาดไม่เล็กเกินไป เพราะเวลาต้มจะเละ และไม่ใหญ่เกินไปเพราะจะต้มไม่สุก 
  4. ถ้าหากจะทำบัวลอยไข่เต่า ให้คั่วถั่วลงสงรอไว้ก่อน คั่วให้สุกหอมดี แล้วเวลาปั้นเม็ดบัวลอย ก็ยัดไส้ด้วยถั่วลิสงหนึ่งซีก
ขั้นตอนการทำน้ำกะทิ

  1. ต้มหางกะทิให้เดือด เติมน้ำตาลทรายลงไป ชิมให้หวานพอชอบใจ เติมเกลือนิดหน่อย
  2. ถ้าหากจะใส่ไข่ ให้ตอกไข่ใส่ในขั้นตอนนี้
  3. เติมหัวกะทิลงไปในหม้อ พอเดือดยกลง (ถ้าใครชอบหอม ก็ใส่ใบเตยลงไป)

ตรงน้ำกะทิ จะต้องหวานมันกำลังดี ถ้ากะทิน้อยจะขาดความมัน ขนมจะไม่อร่อย

ขั้นตอนการต้มเม็ดบัวลอย

  1. ต้มน้ำเปล่าพอเดือด นำเม็ดบัวลอยที่ปั้นไว้ใส่ลงไป
  2. ใช้กระชอนคนเรื่อยๆไม่ให้ติดกะทะ แล้วเมื่อเม็ดขนมลอยขึ้น แสดงว่าสุกดี ก็ใช้กระชอนตักเม็ดขนมขึ้นมา ราดด้วยน้ำเปล่าอุณหภูมิห้องหรือน้ำเย็นหนึ่งครั้ง (ใครจะแช่น้ำเลยก็ได้) ก่อนจะนำไปเทใส่หม้อน้ำกะทิที่ทำไว้

เท่านี้ก็เป็นอันเสร็จแล้วค่ะ สำหรับบัวลอยไข่เต่า เวลากินจะได้เคี้ยวเม็ดถั่วลิสงกรุบกรอบ แล้วก็หอมกลิ่นถั่วคั่วนิดๆด้วย เพลินดี แล้วที่ตลกก็คือ เวลาเรากินเม็ดสีชมพูจะได้กลิ่นน้ำเฮลบลูบอยด้วยล่ะ
เพิ่มเติมอีกนิด
วันนี้เราทำโดยใช้แป้งข้าวเหนียว 1 ถุง กะทิคั้นแยกหัวกับหาง 1 กิโลกว่าๆ น้ำตาลทรายครึ่งกิโลกว่าๆ
สูตรนี้บอกกันแบบไม่มีหวง ลองหัดทำกันดูนะคะ ไม่ยากเลย อร่อยด้วยขี้มือตัวเอง ดีกว่าไปซื้อมากินขี้มือคนอื่นจริงมั้ยคะ ฮ่าๆๆๆ

ทิ้งท้ายด้วยบทสนทนาของเรากับยาย กว่าจะได้กิน.... - -"
เจ้ามด:     ใบเตยเยอะแยะเลย อยากทำขนมกินจัง แม่ใหญ่ เคยกินข้าวเกรียบปากหม้อที่ใส้มันเป็นกุ้ยช่ายหรือเปล่า หนูเคยกินแป้งจะบางๆ มีทั้งไส้หน่อไม้ ไส้เผือก ด้วย
ยาย:         แม่ใหญ่เคยกินที่มันเป็นไส้ถั่วนะ เอามากวนกับมะพร้าวให้หอมๆ หวานๆอร่อยดี
เจ้ามด:     แล้วบ้านเรามีหม้อที่มันคอคอด ไว้ทำแป้งข้าวเกรียบหรือเปล่า
ยาย:         เอ้อ... หม้อบ้านเราก็มี เอามาทำได้น่ะ  อยากลองทำขนมเบื้องญวณมั้ยล่ะ สูตรแม่ใหญ่ อร่อยนะ เมื่อก่อนทำขายอันละสลึง
เจ้ามด:     ใช่ไอ้ที่มันอันใหญ่ๆหรือเปล่า เค้าใช้ไข่ทำตัวขนมหรอ (จริงๆเราเคยฟังเรื่องยายทำขนมเบื้องญวณขายมาหลายรอบแล้ว แต่ก็ทำเป็นเหมือนไม่รู้ไปงั้นเอง)
ยาย:         นั่นแหละๆ จริงๆใช้แป้ง ผสมไข่ ถ้าใส่ไข่มากจะไม่กรอบ ไม่อร่อย ไส้นะก็ต้องกวน ฯลฯ
เจ้ามด:     นิ่งเงียบไปสักพัก เพราะยังไม่อยากกินขนมเบื้องญวณ
นั่งคั้นน้ำใบเตยรอไปเรื่อยๆ ใจก็กำลังคิดว่าจะกินขนมอะไรดี

ยาย:         ถ้าจะทำขนมง่ายๆ ก็ทำขนมเปียกอ่อน กวนๆแป๊บเดียวก็ได้กินแล้วเนี่ย กลิ่นใบเตยหอมๆ โรยมะพร้าวขูดหน่อยๆ
เจ้ามด:     ก็ดีเหมือนกันเนาะ ง่ายดี (เอาง่ายไว้ก่อน เดี๋ยวไม่สำเร็จ จะอดกิน)
ยาย:        ถ้าคั้นน้ำกะทิหอมๆนะ กินกับลอดช่องก็เข้าท่าดีเหมือนกันนะ
เจ้ามด:     ลอดช่องไทยน่ะหรอ เออ...หนูก็อยากกินเหมือนกันนะ หอมๆอร่อย
ยาย:        สมัยก่อนนะเค้าจะใช้ลูกมะพร้าวมาเจาะรู ใช้ทำเป็นที่กดตัวขนม เค้าเรียกกะโหลก
เจ้ามด:     อ่าวหรอ หนูเพิ่งรู้นะเนี่ยว่า คำว่ากะโหลกคืออย่างนี้อ่ะ เค้าเจาะกี่รูอ่ะแม่ใหญ่
ยาย:        เค้าก็เจาะรอบๆนั่นแหละ แต่สมัยนี้เค้ามีขาย เป็นที่บีบตัวขนม ไม่มาใช้กะโหลกกันแล้ว มันทำยาก หาคนทำไม่ค่อยมี ต้องเอาเหล็กเผาไฟ มาจี้ให้เป็นรู
เจ้ามด:     เหอะๆๆ ถ้ามันทำยาก หนูว่าเราอย่าเพิ่งทำกันเลยดีกว่า

นั่งเงียบๆกัน จนเวลาผ่านไปสักพัก
ยาย:        หิวแล้ว ไม่มีของหวานๆอะไรเลย ทำนาบกระทะกินกันเหอะ ง่ายดีเร็วด้วย กล้วยสุกบ้านเรามีหลายลูก
สุดท้ายก็ได้กิน ขนมนาบกระทะ เหอๆๆ

วันพุธที่ 21 กันยายน พ.ศ. 2554

ขี่จิงโจ้ รอบที่ 2 -- โชว์ขั้นตอนการสร้างเวปอย่างง่าย

ทีนี้เราจะมาดูขั้นตอนการสร้างเวปใน 5 นาทีกันนะคะ กับ 14 command line ที่ให้ไว้เมื่อรอบที่แล้ว
สำหรับรูปที่จะนำมาโชว์เนี่ย จะเป็นรูปจากการพัฒนาบน Spring Source Tool Suite  (STS) นะคะ ซึ่งก็คือ eclipse เวอร์ชันสำหรับ Spring นั่นเองค่ะ

สำหรับใครที่ยังไม่มีอุปกรณ์ในการขับขี่เจ้า Roo ก็อย่าลืมไปโหลดมาไว้ในเครื่องนะคะ ก็มี 5 อย่าง คือ

  1. Java 6 JDK
  2. Apache Maven
  3. Spring Roo
  4. Spring Source Tool Suite (STS)
  5. Database Management Tool (ในที่นี้ใช้ Microsoft SQL Server 2008 นะคะ)
สำหรับ STS จะไม่ใช้ก็ได้ค่ะ เพราะเราสามารถใช้ command line ของเจ้า Roo ผ่านหน้า Dos ดำๆก็ได้ แล้วก็ค่อย export มันเพื่อไปใช้กับ eclipse อีกทีก็ได้ค่ะ แต่ถ้าจะให้ดี แนะนำว่ามีดีกว่า เพราะมันครบเครื่องกว่าเยอะค่ะ อิๆๆ เมื่อพร้อมแล้วเราก็มาจัดการใช้งานเจ้า Roo กันได้เลยค่ะ

เริ่มจากการสร้าง Roo project ใน STS




พอสร้างเสร็จก็จะมี Roo shell ขึ้นมาให้เราใช้ command line กันได้แบบนี้


จากรอบที่แล้ว ให้ command line ไว้ 14 คำสั่งใช่มั้ยคะ ซึ่งคำสั่งแรกจะเป็นการสร้างโปรเจคค่ะ ดังนั้น เราก็ตัดออกไปได้เลย ทีนี้เราจะมาจัดการกับ 13 คำสั่งที่เหลือแทนค่ะ

persistence setup เป็นคำสั่่งในการสร้างตัวกำหนดเงื่อนไขการติดต่อฐานข้อมูลนะคะ ในที่นี้เราเลือกติดต่อกับ Microsoft SQL Server ค่ะ ก็จะเห็นว่าเป็น MSSQL
และเราก็เปิดไฟล์ database.properties มาแก้ไขรายละเอียดในการติดต่อกับฐานข้อมูลกันค่ะ

เมื่อเราใช้คำสั่ง entity --class ก็จะเป็นการสร้างคลาสใหม่ ซึ่งตอนนี้เราสร้างคลาส ExpenseCategory ก่อนนะคะ
เมื่อสร้างคลาสเสร็จเราก็ใช้คำสั่ง field สร้างตัวแปรเพื่อเก็บข้อมูลชื่อของหมวดหมู่รายการที่จ่าย ชื่อ name เป็นชนิด string จากสองคำสั่งนี้จะเห็นว่า เจ้า Roo สร้างไฟล์ .java ที่เป็นคลาสให้กับเราและมีตัวแปรตามที่เรากำหนดไว้นะคะ
เช่นเดียวกันค่ะ เราก็ทำกับตารางเก็บข้อมูลรายจ่ายบ้าง ก็สร้างคลาส RecordExpenses ด้วยคำสั่ง entity --class และสร้างตัวแปรด้วยคำสั่ง field ซึ่งก็จะเห็นว่าชนิดของตัวแปรแตกต่างกัน มีทั้ง String , number ส่วน reference นั่นคือการบอกว่าตัวแปรนี้อ้างอิงกับคลาสอีกคลาสนึง (ซึ่งก็คือ ExpenseCategory)
นี่คือรูปร่างหน้าตาของคลาสที่สร้างขึ้นมาโดยอัตโนมัติ ด้วยฝีมือเจ้า Roo ค่ะ
เมื่อเรามีคลาสและตัวแปรไว้ใช้รองรับการเก็บข้อมูลแล้ว เราก็จะมาสร้างหน้าเวปกับส่วนคอนโทรลกันค่ะ ด้วยคำสั่ง controller ซึ่งในที่นี้เราใช้ all เพื่อจะบอกว่าให้สร้างเวปสำหรับทุกคลาสเลยค่ะ
เพิ่มระบบความปลอดภัยนิดนึงด้วยการใช้คำสั่ง security setup ก็จะทำให้เราได้หน้า login เพิ่มขึ้นมา และนอกจากนี้เรายังกำหนดได้ด้วยนะคะว่าจะให้ผู้ใช้คนไหนมีสิทธิได้เท่าไหร่ เข้าหน้าเวปไหนได้บ้าง ด้วยการกำหนดที่ path ที่ไปยัง controller ต่างๆค่ะ แก้ไขได้ที่ไฟล์ applicationContext-security.xml
หลังจากนั้นก็ใช้คำสั่ง perform tests เพื่อสร้างคลาส test และทดลอง build นะคะ ถ้าเรียบร้อยดีแล้วเราก็มาดูผลงานกันได้เลยค่ะ
อันนี้เป็นหน้าแรกของเวปนะคะ 
ทดลองเพิ่มหมวดหมู่รายการที่ซื้อซักหน่อย
วันนี้กินผัดไทยหมูแดง อร๊อยอร่อย ราคา 30 บาทเอง ต้องบันทึกซักหน่อยแล้วล่ะ

แสดงรายละเอียดได้ครบถ้วน และถูกต้อง เก่งมากเจ้า Roo
ถึงตรงนี้ ถ้าดูจากรูปอาจจะสงสัยว่าเอ๊ะ แล้วหน้า login หายไปไหนล่ะ แล้วทำไม category ถึงไม่แสดงแต่ชื่อหมวดหมู่ว่า อาหาร จะโชว์ id กับ version ทำไม 

อย่าเพิ่งใจร้อนนะคะ ไว้ครั้งหน้าเราจะมาดูกันว่า การปรับเปลี่ยนจากหน้าเวปที่ได้มาพื้นฐานแบบนี้ จะให้เป็นตามใจฉันอีกที ต้องทำอะไรตรงไหนบ้าง
สำหรับวันนี้ไปนอนก่อนแล้วค่ะ ง่วงมากมาย ฝันดีนะคะ :)