Monday, May 16, 2005

ลองใช้ AppFuse

ติดตาม blog ของ Raible Design มาได้พักใหญ่แล้ว
ได้ยินเจ้า AppFuse มาหลายเดือนแล้ว ยังไม่ได้ลองสักที

พอดีมีโปรเจคใหม่อันหนึ่งเป็นโปรเจคเล็กๆ แค่แสดงความ
เป็นไปได้เฉยๆ ก็เลยวางแผนว่าจะใช้
Hibernate + Spring + Tapestry
แต่ปัญหาของโปรเจคใหม่ ก็คือ การ setup environment
ในการพัฒนา โดยกะว่าจะให้คนอื่นๆที่ร่วมทำสามารถ
เลือกได้ว่าจะใช้ netbeans หรือ eclipse ก็ได้
ทำให้ต้องเลือกวิธีการ build + test + deploy โดยใช้ ant
หรือ maven แทนที่จะอิงกับ feature ของ Ide

จากการนั่ง setup project โดยการใช้ maven
ก็จัดแจงไป download maven version ใหม่มา
จากนั้นก็นั่ง setup project structure, files
จากการทดสอบ build พบปัญหาว่าเจ้า xdoclet plugin ที่มากับ
maven 1.0.2 มันเปลี่ยน concept ใหม่ไปเยอะเลย
ทำให้ script เก่าๆที่เคยใช้ มัน run ไม่ผ่าน
ก็เลยต้องตัดใจ เพราะถ้าเอาไปพวกน้องๆที่มาช่วย code
ซึ่งไม่คุ้นเคยกับ maven เลย ก็คงจะ
สร้างความสับสน ตลอดจนเสียเวลาเรียนรู้และ setup เยอะ
ก็เลยไป load เจ้า AppFuse มาลองดู
(เป็นนิสัยเสียอย่างหนึ่งที่ได้ version ใหม่มาแล้ว
ก็ไม่อยากย้อนกลับไปใช้ version เก่า)

เจ้า concept ของ AppFuse ก็คือ
เป็นตัวช่วย kickstart ของโปรเจค
กล่าวคือ ตัวมันจะทำหน้าที่ generate
dummy project ให้เรา โดยมี function
ในระดับที่สามารถทดสอบ run ทดสอบเบื้องต้นได้ทันที
โดยตัว function ที่มีให้ก็คือ หน้าจอ login
, หน้าจอ main, edit profile ที่ถือว่าเป็น
หน้าจอบังคับของ web application
นอกจากนี้ยัง generate file, directory structure
ต่างๆที่พร้อมจะให้เรา coding, building, testing, deploy
ผ่านทาง ant ได้ทันที

การใช้งาน (คร่าวๆ)
  • Install AppFuse โดยเลือก Framework ที่ต้องการ
  • Install Ant (version 1.6.2+)
  • Install Jarkatar Tomcat
  • Install MySql (เป็น default database แต่ของผม ผมเลือกใช้ Postgres แทน)
  • config Environment Variable
  • สร้าง app ใหม่ด้วยคำสั่ง ant new
    ตัว AppFuse จะ generate project structure ให้เรา
  • cd ไปยัง project directory แล้วก็สั่ง ant setup
    แค่นี้เราก้ได้ dummy project ที่สามารถ run ได้แล้ว


จากการทดลองใช้ สิ่งที่ชอบก็คือ
project structure ที่ AppFuse สร้างให้เรา
ดูมีระเบียบดีมาก
แล้วก็ setup project ได้เร็ว ไม่ต้องนั่ง
หลังขดหลังแข็ง copy file จากโปรเจคเก่า

ส่วนข้อเสีย ก็คือขนาดของ project
มันใหญ่จัง ขนาดตั้ง 50 ​MB ไม่รู้ว่า
มันเอา library อะไรยัดมาให้เราบ้าง
คงต้องนั่งตัดเอา library ที่ไม่ใช้ออกเสียบ้าง

Related link from Roti

No comments: