Welcome to Pylons
Posted September 10, 2008 at Pylons66
ลง Pylons ใช้มันก็ง่ายๆครับ ก่อนอื่นลง Setuptools ให้เรียบร้อยก่อน ใครใคร่ลงแบบไหนก็ตามสบาย ตัวผมเองเลือกลงแบบ virtual python ลองทำดูไม่ยากอะไร พอลง setuptools เสร็จก็ได้เวลาลง pylons ด้วยการพิมพ์ easy_install Pylons==0.9.6.2 เพื่อบอกว่าจะเอา 0.9.6.2 มา แต่ถ้าไม่ระบุเวอร์ชันก็จะได้ล่าสุด ณ ปัจจุบันคือ 0.97rc1 มาแทน รอซักพัก พอเห็นพร้อมท์ขึ้นมาอีกทีก็แปลว่าลงเสร็จแล้ว ลองสร้าง Project ดูด้วย paste paster create -t pylons helloproject ตอบคำถามเรื่อง template กับ SQLAlchemy ผ่านก็จะได้ project มาหนึ่งอันชื่อ helloproject ไม่ต้องพูดพร่ำทำเพลง เปิดขึ้นมารันซะ cd helloproject paster serve —reload development.ini ถ้ารันได้ก็ลองวิ่งไปที่ http://localhost:5000/ ต้องเห็นหน้าตาประมาณนี้ (รูปจาก vee’s blog) ต่อไปสร้าง controller ด้วยคำสั่ง paster controller hello แล้วลองเข้า http://localhost:5000/hello/index ดู ต้องมีคำว่า Hello [...]
Hello world!
Posted September 08, 2008 at Pylons66
Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
QuickSeam
Posted September 13, 2008 at Seam66
จากข้างบน คลิ๊กแล้วได้ข้างล่าง แอบดูข้างใน #{usr} Uncategorized
Seam 101 : ติดตั้ง Seam สร้างโปรเจกต์
Posted September 12, 2008 at Seam66
ในการติดตั้ง Seam นั้นไม่ยากเลยครับ แค่เตรียมอุปกรณ์ให้พร้อมแล้วก็ลุยได้เลย คราวนี้ผมจะสอนการติดตั้งผ่าน Seam-gen ซึ่งเป็นชุดคำสั่ง command-line เพื่อให้เราเริ่มต้นโครงงานของเราได้ทันที Seam ซัพพอร์ตทั้งการใช้งาน ANT และ Maven นะครับ แต่คราวนี้ผมจะสาธิตการใช้งานผ่าน ANT ให้ดู อุปกรณ์จำเป็น : - แน่นอนว่่าต้องลง Java SDK ซะ่ก่อน - ลง ant ด้วยครับ รุ่น 1.7 ก็ได้ครับ - JBoss 4.2* *เราสามารถ deploy Seam ลงเว็บเซอร์เวอร์อื่นก็ได้ครับ ไม่จำเป็นต้องเป็น JBoss แต่สำหรับมือใหม่ให้เริ่มที่ JBoss จะง่ายสุดแล้วครับ เตรียมเครื่องปรุงเรียบร้อย ไป download Seam ได้จากเว็บ http://www.seamframework.org เลยครับ เวอร์ชั่นล่าสุดคือรุ่น 2.0.3 CR1 (ส่วนรุ่น 2.1 ก็ใกล้คลอดเต็มทีแล้วครับ) เลือกรุ่น 2.0.3 ก็พอครับ โหลดมาแล้ว unzip มัน [...]
Spring 3.0 จูบปาก EJB3.1 ?
Posted September 12, 2008 at Seam66
เรื่องนี้ผมรู้มาสักพักใหญ่ๆ แล้วครับว่า Spring กำลังดองกับ EJB 3.1 ในไม่ช้านี้ สงครามสาดเสียเทเสียใส่กันไปมากำลังใกล้จะสงบศึกแล้วหรือไม่ คงต้องรอดูกันต่อไป Spring เกิดมาในช่วง EJB2 อยู่ในยุคมืด ตกต่ำสุดๆ จนปรมาจารย์หลายสำนักเคยให้นิยามไว้ว่า “เขียนจาวา ไม่ใช้ Spring เป็นบาป” แต่จากกระแส Spring คราวนั้นบูมสุดขีดอยู่ได้ 2-3 ปี มาตรฐาน EJB3 ก็ออกมาเพื่อลดคำสบประมาถและลดช่องว่างระหว่าง Spring ลง ในแง่ของความง่ายและโมเดลในการพัฒนาในมุมมองของ developer ถือว่า EJB3 เปลี่ยนไปจาก EJB2 มาก และเข้าใกล้ Spring แบบต่างกันนิดหน่อย แต่ใน EJB3.1ซึ่งจะออก EJB3 Lite ออกมา จะไม่เหลือความแตกต่างใดๆ ระหว่างโมเดลทั้งสองอีกเลย จากความสำเร็จในคราวนั้น SpringSource ใหญ่ขึ้นๆ และแตกไลน์ออกผลิตภัณฑ์มากมาย บางตัวก็ไม่ประสบความสำเร็จเท่าที่ควร Spring เองมีจุดอ่อนคือ ตัวมันไม่เป็นมาตรฐาน ทำให้การตอบรับไม่ถูกกระจายออกไปเท่าที่ควร Spring อาศัยการโฆษณาและเทคนิกการตลาดที่ว่า “ก็มาตรฐานมันห่วย [...]
สนุกกับ Seam Bijection
Posted September 10, 2008 at Seam66
concept ของการทำ Dependency Injection เป็นเรื่องที่ฮิตกันติดลมบนจนไม่มีอะไรใหม่แล้ว สิ่งที่พิเศษกว่าชาวบ้านคือ นอกจาก Seam จะซัพพอร์ตการทำ Dependency Injection แบบไม่ธรรมดาแล้ว Seam ยังเพิ่ม concept ใหม่อย่างการทำ Dependency Outjection ด้วย เราเลยได้คำศัพท์ใหม่ว่า Seam Bijection อ่านถึงตรงนี้อาจจะงงว่า Outjection มันเอาไว้ทำอะไรกันแน่ อยากให้มองอย่างนี้ครับ ว่า Seam มีถุงของ dependency object อยู่ในมือ สำหรับ component ใดที่ต้องการ dependency ก็แปะเครื่องหมายว่าอยากได้ เสร็จแล้ว Seam ก็จะไปเปิดถุงแล้ว inject มันเข้ามา คำถามคือว่า “แล้ว dependency object ต่างๆ ไปอยู่ในถุงตอนแรกได้ยังไงกัน?” ถ้าเป็นแฟน Spring ก็อาจจะตอบว่า ก็เราเขียน Spring Bean กำกับไว้ไง แต่สำหรับ Seam [...]
RichFaces 3.2.2 GA ออกแล้ว
Posted September 10, 2008 at Seam66
RichFaces เป็นชุด JSF คอมโพเนนต์จากค่าย JBoss เอง ขณะนี้ได้เปิดตัวรุ่น 3.2.2 แล้ว ในรุ่นนี้ยังเพิ่มคอมโพนเนนต์ใหม่เข้ามาอีก 5 ตัวได้แก่ rich:beanValidator component rich:ajaxValidator component rich:graphValidator component rich:extendedDataTable component rich:hotKey component นอกจากจะเป็นชุดคอมโพเนนต์สำเร็จรูปแล้ว RichFaces เองก็เป็น CDK สำหรับให้ผู้ใช้สามารถสร้างคอมโพเนนต์ใช้เอง ในรุ่นนี้ยังปล่อย samples ตัวอย่างมาให้ดูสองตัวด้วย รายละเอียดยังมีออกมาไม่มากนัก แต่ถ้าอยากลองขุดดูเริ่มได้จากลิงค์ข้างล่างครับ อ้างอิง - in.releation.to, RichFaces Wiki
Let’s Answer : Seam กับ Presentation Tier
Posted September 09, 2008 at Seam66
คำถามจากพี่ป็อกนะครับ จาก Let’s Ask คราวที่แล้วว่า “framework ที่ใช้ในบ้านเราส่วนใหญ่จะเป็นพวก action centric, dean ช่วยอธิบายเปรียบเทียบความแตกต่างระหว่าง seam กับพวก struts, spring mvc ในมุมมองของ presentation layer ให้ฟังหน่อย” ผมไม่แน่ใจนะครับว่าจะตอบตรงคำถามพี่ป็อกหรือเปล่า ผมเลยจะอธิบายแบบร่ายยาวนิดนึง เผื่อจะโดนตรงจุดที่คัน ถ้ายังสงสัยอยู่ก็โพสถามเพิ่มเติมได้เลยครับ ตอบครับ … ธรรมชาติของเฟรมเวิร์กที่เป็นไปตามลักษณะ action centric แบบ MVC จะมีลักษณะ flow อยู่ในลักษณะ controller เลือก action ที่เหมาะสม ใน action ไปเรียก service layer ของ business model class จากนั้นรวมผลลัพธ์ออกไปให้ view ที่แสดงผล เป็นอย่างนี้เรื่อยไป Seam มีแนวคิดของการยุบ layer ที่ไม่จำเป็นออก ดังจะสังเกตได้จากงานบางอย่างในเฟรมเวิร์กแบบ action-centric ตัว action [...]
Let’s Ask : สงสัยสิ่งใดใน Seam ลองถามกันมา
Posted September 08, 2008 at Seam66
บล็อกและบทความของ JBoss Seam คงทยอยออกมาเรื่อยๆ นะครับ ณ วันนี้สำหรับคนไทยผมยังไม่ค่อยเห็นคนใช้มากนัก นักเขียนใน seam66 ก็เลยน้อยตามไปด้วย พี่ป็อกเลยเสนอว่าให้ตั้งเป็นแบบ ถาม-ตอบ ผมก็เห็นด้วยเหมือนกัน เพราะคิดว่าสำหรับบางคนที่เคยผ่านหูผ่านตากับ Seam มาบ้าง อาจจะมีส่วนที่ยังไม่เข้าใจ หรือบางคนอาจจะสงสัยว่ามันต่างอย่างไรกับเฟรมเวิร์กอื่นที่ท่านเคยใช้มาบ้าง ก็ลองสอบถามกันมาได้นะครับ comment ถามมาเลย แล้วผมจะตอบทุกคำถามอย่างเต็มที่เลยครับ
ยินดีต้อนรับสู่ตะเข็บ66
Posted September 08, 2008 at Seam66
ขอต้อนรับคุณเข้าสู่แหล่งแลกเปลี่ยนความรู้และพูดคุยถึงเฟรมเวิร์ก JBoss Seam มีใครเคยใช้ สนใจจะใช้ ชูมือกันหน่อย!
Basic Data Binding
Posted September 09, 2008 at Flex66
เริ่มจาก rails66 เมื่อไม่นานมานี้เอง ขนาดนี้เว็บตระกูล 66 ได้เกิดขึ้นอย่างรวดเร็วจนผมเองก็ตามเช็คไม่ทันว่าตอนนี้มันมีอะไรบ้างแล้ว เอาละไหนๆก็มี flex66 เกิดขึ้นมา ซึ่งตอนนี้ผมก็ใช้มันทำงานบ่อยที่สุดแล้วในช่วงนี้ ก็เลยขอเขียน blog ลงเว็บตระกูล 66 ที่ http://www.flex66.com ประเดิมเป็นที่แรกซะเลย เรื่องเอามาเขียนวันนี้ก็เรื่อง data binding ใน flex เนี่ย เราสามารถ binding ตัวแปรไว้กับ attribute ของ tag ของ mxml ได้ binding ที่ว่าคือยังไง ก็คือ เมื่อค่าในตัวแปรที่ binding ไว้มีการเปลี่ยนแปลง ค่าของ attribute ก็เปลี่ยนไปด้วยนั่นเอง ตัวอย่างเช่น [Binable] private var name:String=""; จากโค้ด เราประกาศตัวแปรไว้ตัวนึง แล้วเราจะ binding ตัวแปรตัวนี้กับ text [...]
Hello world!
Posted September 08, 2008 at Flex66
Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
อธิบาย QuickSeam
Posted September 14, 2008 at Seam66
ผมย้ำหลายที Seam มันคือตะเข็บ เพราะบางทีมันก็ทำให้เราแยกไม่ออกว่า layer ไหนเป็น layer ไหนกันแน่ โค้ดคราวที่แล้วผมตั้งใจเขียนให้อยู่ในรูปแบบ Seam-ish ซะหน่อย หน้าตา component เลยกลมกลืนเข้ากันระหว่าง model กับ controller ไป จากโพสที่แล้ว พี่ @chanwit มาช่วยแทน java โค้ดด้วย Groovy และทักว่า class ที่เห็นข้างล่างเป็นส่วน controller ใน MVC ผมแย้งกลับไปว่าจริงๆ มันไม่ใช่ Controller นะ แต่เป็น Model ต่างหาก ผมลองวิเคราะห์ดีๆ จากหน้าตา api ก็คิดว่าไม่แปลกอะไรที่พี่ @chanwit จะเข้าใจเช่นนั้น มันมองเป็น controller เหมือนในเฟรมเวิร์ก action centric ได้จริงๆ เดี๋ยวเรามาดูรายละเอียดกันว่าเกิดอะไรขึ้น จาก code @DataModel String[] userList; ย้อนความรู้นิดนึง JSF เป็นหนึ่งใน UI toolkit [...]
Pylons และ Dependencies
Posted September 15, 2008 at Pylons66
หลังจากเราสร้าง Project ด้วยคำสั่ง paster กันไปแล้ว ทีนี้ก็มาถึงเรื่องของ dependencies แล้วล่ะ ใน Pylons ปกติผมเห็นแต่ คน เค้า ใช้ SQLAlchemy กันทีนี้ก็คือถ้าจะลงก็ใช้ easy_install ได้ easy_install SQLAlchemy ทดลองด้วยการเรียกใช้ Interactive Python Shell แล้วพิมพ์ตาม ต้องได้ผลตามนี้ >import sqlalchemy >sqlalchemy.version ‘0.5.0beta3’ ทีนี้ก็ใช้งาน SQLAlchemy ได้แล้วล่ะ แต่เดี๋ยวก่อน ถ้าเกิดเราไม่รู้ว่าต้องลงอะไรบ้างล่ะ เช่นตอนที่สร้าง project เราเลือกใช้ template อื่นนอกจาก Mako เช่น Jinja เราก็จะต้องมาลง Jinja ด้วย แต่ช้าก่อนถ้าเราลองสั่ง paster ดู จะได้ผลลัพธ์ดังนี้ Traceback (most recent call last): File “/home/wien/bin/paster”, [...]
Pylons, รับน้อง, Routing
Posted September 15, 2008 at Pylons66
รำลึกอดีตให้ฟังหน่อยนึงว่าหลังจากเข้าไปร่วมงาน NWA แล้วผมก็โดนเวทล้างสมองของ Sirn ให้หันมามอง Pylons เลยลองเล่นดูนิดหน่อย แต่ก็ไม่วายโดนรับน้องจนได้ ถ้าเราติดตั้ง Pylons ด้วย easy_install โดยไม่ระบุเวอร์ชัน ตัว Easy_install จะลง เป็นเวอร์ชัน 0.9.7rc1 ให้โดยอัตโนมัติ ซึ่งใน 0.9.7 นั่นมันจะมี Breaking Change อยู่จำนวนหนึ่ง แต่ในวิกิของ Pylons ยังไม่มีข้อมูลนี้ บังเอิญว่าผมดันไปเลือกใช้ 0.9.7 โดยไม่รู้อิโหน่อิเหน่ ค้นวิธีแก้ยังไงก็ไม่เจอ สถานการณ์แบบนี้ผมเรียกว่า ซวย ครับ หนึ่งใน Breaking Change ที่โดนแน่ๆคือเรื่อง Webhelper แต่นั่นเป็นเรื่องที่เราจะไม่พูดกันครั้งนี้ เพราะครั้งนี้เราจะบอกถึง Breaking Change ที่ทำให้ผมเซ้งเซ็งอีกเรื่องแทน นั่นคือ Routing เป็นยังไงมาติดตามดู เนื่องจากเป็นเด็กใหม่ เราก็ต้องทำตัวเป็นเด็กใหม่ที่ดีด้วยการศึกษาตาม Getting started ที่เค้าทำมาให้ หลังจากกำลังภายในของผมเริ่มหมดไปกับการถาม sirn และ vsatayamas ไปแล้ว ผมก็ฟันฝ่าตัว [...]
มาลองเล่น URL Mapping ใน Grails กันครับ
Posted September 15, 2008 at Grails66
เห็นใน django66.com มี entry พูดถึง URL routing in Django และที่ pylon66.com ก็พูดถึงเหมือนกัน ที่ Pylons, รับน้อง, Routing ดังนั้นใน Grails66 จะยอมน้อยหน้าได้อย่างไร มาดูกันว่าใน Grails ทำได้อย่างไรบ้าง ใน Grails นั้นจะเรียกว่า URL Mapping ซึ่งถูก config ไว้ใน /grails-app/conf/UrlMappings.groovy มีหน้าตาประมาณนี้ class UrlMappings { static mappings = { } } โดย default แล้วนั้น url ใน grails จะมีหน้าตาประมาณนี้ /controller/action/id แต่ใน Grails ก็เตรียมวิธีการทำ URL Mapping [...]
Seam Hangman Live!
Posted September 16, 2008 at Seam66
พร้อมแล้วเข้าไปลองเล่นเลยครับ หน้าตาแอบลอก Rails hangman มาใกล้ๆกันครับ จุดเด่นคือ สามารถเล่นพร้อมกันได้หลาย tab โดยไม่เกิด conflict ระหว่างกัน และเช่นเดิม ขอแปะ code ก่อนแล้วเดี๋ยวมาเฉลย ปล่อยให้ code พูดแทนความในใจ แล้วคุณจะเห็นความสวยงามที่ซ่อนอยู่ภายใน เริ่มต้นด้วย Model เขียนด้วย Groovy ผสมสไตล์ Java เข้าไปแบบลูกผสม @Name("groovyHangman") @Scope(ScopeType.CONVERSATION) public class GroovyHangMan { String word def List answer def List alphabetList def int numberGuess public GroovyHangMan(){ [...]
SHangman Explained : Conversation Context
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 ภาคพิสดารบรรเจิดแค่ไหนก็เชิญเลย ซึ่งนั่นก็ไม่ใช่ปัญหา [...]
สาว rails
Posted September 17, 2008 at Rails66
มีสาว Erlang เป็นที่ร่ำลือกันมาช้านาน และยังไม่เคยเห็นหน้าสักที ชาว rails66 ของเราก็ไม่ขอน้อยหน้าด้วยการมี pretty ประจำเวบหรือ สาว rails กับเค้ามั่งครับ โดยสาว rails ของเรามาพร้อมกับคุณสมบัติไม่ธรรมดาครับเพราะแท้ที่จริงแล้ว เป็นคนเขียนเอกสารสอน rails ที่ NECTEC สามารถติดตามสาว rails ได้ที่ @charin1127 ครับพี่น้อง
Seam กับ ORM : Hibernate คือต้นกำเนิด Seam
Posted September 17, 2008 at Seam66
เห็นฝั่ง Rails66 ชู ActiveRecord เป็นจุดขายซะหลายเอนทรี แถมฝั่ง Grails ก็หยิบเอา GORM มาชนได้อย่างสนุกสนาน เห็นแล้วก็แอบอิจฉานิดหน่อย ไม่ใช่ว่าฝั่ง Seam ไม่มีไม้เด็ดอะไรไปแจมนะครับ แต่ยังไม่ถึงเวลาดีพอที่จะหยิบเรื่องนี้มาพูด GORM เองใช้ประโยชน์หลายๆ อย่างจาก Hibernate จับมาปัดฝุ่นครอบด้วย Groovy ทำให้มันกลายเป็น ORM โซลูชั่นที่น่าใช้กว่าเดิมมาก จริงๆ แล้วคนที่ทำงานหนักให้ GORM อย่างไม่บ่นเคืองคือ Hibernate ต่างหาก ถ้ามองกันดีๆ จะเห็นความสัมพันธ์ว่า อันที่จริงแล้ว Hibernate เป็นผลิตภัณฑ์ของ JBoss มี project leader คือ Gavin King (ไอด้อลผมเองรองจาก โจ๊ก โซคูล) ซึ่งก็คือ project leader คนเดียวกันกับที่สร้าง JBoss Seam ขึ้นมา เรื่องนี้ไม่ใช่เรื่องบังเอิญ แต่ Seam เกิดจากความไม่พอใจหลายอย่างที่ทีม Hibernate [...]