ผมก้อกะลังเขียน flex อยู่นะคับ แต่ไม่ได้เก่งอะไร แค่ถูๆ ไถๆ นะคับ
เปรียบเทียบง่ายๆ เหมือนเราเขียน html แล้วแทรก สคริป php เข้าไปใน html นะคับ
mxml ก้อเหมือนกับ tag html ครับ ส่วน php ก้อเหมือน action script คับ
ดังนั้นผมคิดว่า ถ้าจะศึกษา flex ก้อควรจะศึกษา actionscript เป็นหลักครับ
จะดีที่สุด ตอนนี้ที่ผมเขียนอยู่ ใช้ flex เป็นแค่ interface คับ ส่วนอื่นๆ เขียน actionscript ควบคุมทั้งหมดคับ
ลองดูคับ ไม่ยากอย่างที่คิดคับ ;)
http://blog.flexexamples.com/http://www.adobe.com/devnet/flex/videotraining/ลองดูนะคับอาจจะพอช่วยได้
ตอนนี้ Tutorial และ หนังสือที่เป็นภาษาไทยสำหรับ Flex ยังไม่มีออกมาครับ แต่ของต่างประเทศมีตรึม
เอาเป็น link ก่อนเป็นไงครับ
link นี้เป็น link ทางการของ Adobe เขาสำหรับผู้เริ่มต้น
http://www.adobe.com/devnet/flex/?navID=gettingstarted&sdid=ZFCTlink นี้ก็เป็น community ที่มี resource ของ flex เยอะมาก
http://www.brightworks.com/technology/adobe_flex/components_widgets_etc.htmllink
นี้เป็น cookbook ครับ คงจะไ้ด้ใช้งานมันมากเมื่อเราต้องการพัฒนาระบบจริง
แล้วติดปัญหา เช่น จะทำให้ mouse กลายเป็นรูปมือเืมื่อเลื่อนไปบน button
ต้องทำอย่างไร? (อย่าคิดว่าง่าย), หรือจะสร้างให้ระบบของเราเป็น
international language ได้อย่างไร? (แหล่มมากๆ)
http://www.adobe.com/cfusion/communityengine/index.cfm?event=homepage&productId=2คราวนี้มาถึงหนังสือที่แนะนำ
ถ้าคุณมีพื้นฐานทาง Programming มาแล้วแนะนำเล่มนี้ครับ สุดยอดของ Technical Book แล้ว (เล่มนี้ผมอ่านทุกหน้าแบบไม่เว้นเลยครับ)
http://www.amazon.com/gp/product/0321529189/ref=s9subs_c2_14_at2-rfc_g1?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1H2NGDQBRPDPVEB1E9T9&pf_rd_t=101&pf_rd_p=278240301&pf_rd_i=507846ถ้าไม่มียังใหม่กับ Programming ก็เล่มนี้ครับ ไม่หนาจนเกินไป
http://www.amazon.com/Learning-Flex-Internet-Applications-Developer/dp/0596517327/ref=pd_sim_b_4และสำหรับ Flex Programmer ขั้นกลางก็ต้องสองเล่มนี้ครับ (และเป็นเพียงสองเล่มในตลาดตอนนี้)
คราวนี้มาถึงเครื่องมือที่จะต้องเลือกใช้งานครับ
ทางเลือกแรกถ้า
คุณอยากจะได้ประสบการณ์ในการเขียนโปรแกรม Flex และ MXML (ภาษา XML ของ FLEX
ที่จะนำมา compile เป็น ActionScript Code) ก็ต้องใช้ Flex Builder 3 ครับ
แต่เป็นของเสียตั้งค์ มีสอง Edition คือ
1. Standard Edition ก็มีให้ทุกอย่างครับยกเว้นสองอย่างที่มีเฉพาะใน Professional Edition
2.
Professional Edition เพิ่มมาให้สองอย่างคือ Chart Component
(ใช้ในการสร้างกราฟต่างๆ) และ Profiling (ใช้สำหรับ Tunning Application)
ถ้าอยาก Download เวอร์ชั่นลองใช้ 60 วันก็ตาม link ข้างล่างครับ
http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3emailทางเลือกที่สองใช้
ของฟรีแบบถูกกฎหมายครับ เนื่องจาก Adobe มีนโยบายจะเข้าไปตีสนิทกับ Open
Source Community มากขึ้น ตอนนี้้ถ้ามี Project ใหม่ๆ ออกมา Adobe
ก็จะคลอดเวอร์ชั่นแบบ Open Source ออกมาด้วย ซึ่ง Flex
ก็รวมอยู่ในข่ายนี้ด้วย โดย Flex แบบนี้เรียกว่า Flex SDK (Software
Development Kit) โดยถ้าคุณเลือกทางเลือกนี้ ทุกอย่างจะเป็น command line
หมด ส่วน editor ก็ยังไม่มี Product ที่สนับสนุนโดยตรง ก็คงต้องไปใช้
Editor ที่เขียน XML ได้อ่ะครับ ซึ่งก็มีมากมายให้ Download ไปใช้
link ข้างล่างสำหรับการ download Flex SDK ครับ
http://www.adobe.com/products/flex/flexdownloads/#sdkสุดท้ายก็เรื่องการเรียนรู้
ก่อน
อื่นต้องทราบก่อนเลยว่า Flex นั้นมีขอบเขตการทำงานชัดเจนมากๆ นั่นคือ
provide มาให้ในส่วนของ GUI เท่านั้น แล้วใช้ service จาก Application
ตัวอื่นๆ เช่น .NET, J2EE, PHP, Ruby on Rail เป็นต้น
โดยเทคโนโลยีที่กล่าวมานั้นจะทำหน้าที่ในการสร้าง Business logic และ
Database Access แล้วให้ Flex มาวางอยู่บนตัวของพวกมัน แปลว่าอะไรครับ
แปลว่า ถ้าคุณคิดจะเป็น Flex Programmer มีทางเลือกอยู่สามทาง คือ
1.หาผู้เชี่ยวชาญในเทคโนโลยีตัวใดตัวหนึ่ง แล้วร่วมทีมกันสร้างระบบที่สมบูรณ์
2.หา
Software ที่สร้างมาเพื่อใช้สำหรับเรื่องดังกล่าวโดยเฉพาะ (ฺีBusinesss
logic และ Database Access) ซึ่งก็ไม่ได้หายาก หาเย็นอะไร ที่ดังๆ
ก็จะมีในฝั่ง Java ซะเป็นส่วนมาก ทั้ง Spring, EJB (ตัวนี้ไม่ค่อยนิยมแล้ว)
เป็นต้น
3.ศึกษามันให้หมด (ผมเลือกทางนี้) คือ เป็น Expert ให้หมดในทุกระดับชั้นของเทคโนโลยี
(ถ้าจะใช้ Flex มาเพื่อใช้สร้างหน้าเว็บให้สวยงามอย่างเดียว ผมว่า Adobe มี Product อื่นๆ ที่ใช้งานได้ตรงจุดประสงค์กว่านะครับ)
ลองเลือกดูครับ
Roadmap ของการศึกษา Flex
1.ศึกษา
สิ่งพื้นฐานทั้งหมดของ Flex ให้ครอบคลุม (ผมไม่ใช้คำว่าทั้งหมดนะครับ) ทั้ง
ตัวภาษาที่หลักที่ใช้ในการสร้างที่ชื่อว่า MXML
(เชื่อผมสิว่าเป็นภาษาที่ศึกษาได้ง่้ายมาก) component ว่ามีอะไรบ้าง
กลไกการทำงานต่าง รวมทั้งเรื่องการ configuration เช่น การ compile
โปรแกรม, การ install (หรือภาษาเทคนิืคเรียกว่าการ deploy)
เพื่อใช้ในเว็บเป็นต้น
2.การศึกษาขั้นกลาง (ผมยังไม่กล้าใช้คำว่าขั้นสูง
เพราะยังไม่รู้ว่าขั้นสูงเป็นอย่างไร) ให้ศึกษาสิ่งที่ Adobe
ให้มาเพื่อช่วยในการพัฒนาระบบ Flex สำหรับ Application ขนาดใหญ่
ซึ่งประกอบไปด้วย
2.1 BlazeDS เป็นตัวคั่นกลางระหว่าง Application
ตัวอื่นๆ กับ Flex ซึ่งจะช่วยให้การติดต่อสื่อสารระหว่าง Flex กับ
Application ระดับล่างอย่าง J2EE เป็นต้น ให้เกิดประสิทธิภาพสูงสุด
2.2
CairnGorm (อ่านว่า "แคนกรอม") เป็น Framework ที่ช่วยให้เราพัฒนาระบบ Flex
ได้อย่างมีระเบียบแบบแผน และเป็นไปตามมาตรฐานการพัฒนาซอฟต์แวร์แบบ Object
Oriented Programming (OOP) ที่เรียกกัน ว่า Model-View-Controller Pattern
ทำให้เราสามารถ maintenance ซอฟต์แวร์ได้ง่าย และมีประสิทธิภาพ
ไม่
รู้ตอบมากอย่างนี้จะทำให้คุณเกิดความรู้สึก "อะไรวะ ถามนิดเดียวตอบซะยาวเลย
แล้วเยอะอย่างนี้ กรูจะศึกษาไหวมั๊ยเนี่ย" ใช่ครับ ผมว่ามันเยอะครับ
แต่ผมว่า Flex นี่อนาคตไกลแน่นอนครับ เพราะตัวมันเองมีทั้งความสวยงาม
และใช้งานได้ง่ายแบบสินค้าที่ต้องเสียตังค์ซื้อ (Commercial Product)
และมีธรรมชาติของความเป็น OpenSource อยู่สูง ทำให้ระบบไม่เป็นระบบปิด
ทุกคนสามารถมีส่วนร่วมในการพัฒนาได้
ผมว่าคุ้มนะถ้าเราเลือกจะพัฒนาทักษะด้านนี้
ตอนนี้ผมกำลังจะทำโปรเจ็กท์ ERP โดยการใช้งานผลิตภัณฑ์ที่เป็น Open Source ล้วน โดยจะทำการรวมกันระหว่าง
1. Flex รับผิดชอบในส่วนของ GUI
2. BlazeDS รับผิดชอบในส่วนของการเชื่อมต่อระหว่าง GUI กับระบบระดับข้างล่างลงไป
3. CairnGorm รับผิดชอบในส่วนของการช่วยให้การออกแบบสถาปัตยกรรมของ Flex ดีขึ้น
4.
OrangeGear เป็น ERP ที่เป็น OpenSource ที่พัฒนาโดยคนไทย
ซึ่งมีความแข็งแกร่งมากในส่วนของ Business logic และ Database Design
เป็นซอฟต์แวร์ที่ต่อยอดมาจาก OFBiz ของ Apache
ขอบอกครับว่าตั้งแต่ Flex ออกมาผมมีความสุขขึ้นเยอะเลย
อ้อ! ลืมบอกไป เกี่ยวกับคำถามระหว่าง MXML กับ ActionScript ถ้าจะเขียน
Flex ก็คงต้องรู้ทั้งสอง ภาษานะครับ เพราะไม่ว่าจะไล่ไปอ่าน Tutorial
ที่ไหนก็ตาม Code ของโปรแกรมมักจะมีการใช้งานทั้ง MXML และ ActionScript
อยู่ภายใน Code เดียวกัน
แต่ถ้าไม่ซีเรียสอะไรมากก็ MXML
ก็พอรองรับความต้องการระดับพื้นฐานได้ครับ
แต่ถ้าอยากจะให้โปรแกรมของเรายืดหยุ่นมาก ก็คงหลีกเลี่ยงที่จะศึกษา
ActionScript ไม่ได้
เห็น จขกท. ส่งข้อความถามเป็นแบบ Private แต่ขออนุญาติตอบแบบ Public ละกันนะครับ
>>ที่คุณ "him_aeng" บอกไว้ให้ศึกษาทุกด้านนี้หมายถึงต้องมาีความรู้ในทุกเรื่องหรือครับ
ขอโทษด้วยครับที่ตอบคลุมเครือ จริงๆ แล้ว คงเป็นไปไม่ได้ที่จะรู้ทุกเรื่อง ถ้าถามผมว่าเราจำเป็นต้องรู้อะไรบ้างก็ขอตอบแยกดังนี้ครับ
1.ความสัมพันธ์ระหว่างส่วนของ Interface Design กับ ตำแหน่งที่เราเขียน MXML หรือพูดง่ายๆ ก็คือการศึกษา MXML นั้นเอง
2.ภาษา
ActionScript ครับ ต้องศึกษาไว้บ้าง
เพราะผมมองว่าจำเป็นต้องใช้สำหรับการพัฒนา Flex ไม่จำเป็นต้องลึกซึ้ง
แต่ให้รู้ว่าเมื่อไหร่ที่เราต้องใช้ ActionScript (ส่วนใหญ่จะใช้ในส่วนของ
EventHandler) และเมื่อไหร่ที่เราจะใช้ MXML (ส่วนใหญ่จะเกี่ยวข้องกับการ
Design)
3.เรื่องกลไกในการ Access ข้อมูลจากภายนอก Flex
เรื่องนี้เป็นเรื่องสำคัญที่สุดของ Flex (ตามความเห็นของผม) ซึ่ง Flex
จะเตรียมวิธีการสำหรับการ Access มา 3 แบบ คือ
- 3.1
http service ซึ่งเป็นสิ่งที่ guru ทั้งหลายเรียกกันอย่างเป็นทางการว่า
REST (Representational state transfer: บางครั้งเรียกกันทั่วไปว่า
RESTful) คือการส่งข้อมูลต่างๆ ผ่านโปรโตคอล HTTP ซึ่งวิธีการนี้สำหรับ
Flex จะมีความยืดหยุ่นน้อยที่สุด แต่ก็เป็นวิธีที่ง่ายที่สุด
และเหมาะสำหรับการ Access ข้อมูลแบบที่เป็น Static XML
(ผมยังไม่เคยเห็นตัวอย่างของการใช้ Access Dynamic XML) ดังนั้น
ถ้าจะให้ดีก็คงต้องหา Database ที่มี Feature ในการส่งข้อมูลในรูปแบบ XML
จะเหมาะกับวิีธีการนี้ครับ
- 3.2 Web service
ฟังดูน่ากลัวมั๊ยครับ แต่ใช้งานง่ายครับ แต่มีข้อแม้ว่า
วิธีการนี้เราจะต้องเปิดให้ Application ในส่วนของ Businesss logic
เปิดบริการ Web Service เสียก่อน ซึ่งทั้งใน .NET และ J2EE ก็สามารถทำได้
โดยจะทำการติดต่อสื่อสารกันผ่านมาตรฐานที่เรียกว่า wsdl (web service
description language) ซึ่งถ้าเราเปิดให้บริการ Web service
จะเปิดบริการผ่านภาษานี้ครับ
- 3.3 Remote object
วิธีนี้จะมีประสิทธิภาพสูงมาก แต่ยุ่งยากที่สุดเพราะต้องทำผ่านตัวกลางอย่าง
BlazeDS เท่านั้น เป็นการเรียกใช้ Method ของ Java object โดยตรง
โดยไม่ต้องสนใจ HTTP หรือ Webservice อะไรทั้งนั้น ทำให้เราใช้งาน
Application ได้เหมือนเป็นของ Flex เอง (ทั้งๆ ที่ Flex เป็นเพียง GUI
เท่านั้น)
4. การใช้งานในส่วนของความสวยงาม ทั้ง Effect,
Transition, layout เป็นต้น
ซึ่งของเหล่านี้ผมว่าคนในเว็บนี้น่าจะเข้าขั้นเทพกันอยู่แล้ว
เพียงแต่ต้องมาใช้งานผ่าน MXML เท่านั้นเอง
5. การ Deploy
โปรแกรมของเราซึ่ง Flex จะมีความพิเศษตรงที่เมื่อเราเขียนโปรแกรมเสร็จแล้ว
สามารถ Deploy โปรแกรมของเราให้เป็น Web Application หรือ เป็น Desktop
Application ก็ได้ ซึ่งการ Deploy ผ่าน Web ก็ไม่มีอะไรครับเพราะ Flex จะ
Compile โปรแกรมของเราเป็นไฟล์ swf จากนั้นก็ทำการ embed
ไฟล์ดังกล่าวเข้าไปใน web page แต่การ Deploy ผ่าน Desktop จะทำโดยผ่าน
Adobe AIR ซึ่งตอนนี้ผมยังไม่แนะนำให้ใช้เพราะยังมีปัญหากับภาษาไทยอยู่
ุ6.
วิธีการท่องเที่ยวเพื่อไปเอาของคนอื่นมาใช้ เนื่องจาก Flex มี Developer
เก่งๆ คอยสนับสนุนอยู่มากมายทั่วโลก
และที่พิเศษกว่านั้นซึ่งเป็นความพิเศษที่ผมชอบมากก็คือ Developer ของ Flex
นี้จะมีความเป็นศิลปินอยู่ด้วย เนื่องเพราะมันเป็น Adobe ดังนั้น component
ที่คนอื่นสร้างจะมีความ "Cool" ค่อนข้างสูง ซึ่งจะทำให้ App. ของเราดู
Sexy ขึ้นด้วย
ขอแนะนำ link ที่น่าตื่นเต้นสำหรับ component coolๆ
นะครับ ซึ่งในเว็บนี้จะมีให้ทั้ง Download และดูตัวอย่างของ component
เหล่านั้นด้วยลองไปเยี่ยมเยียนได้เลย แล้วจะรู้ว่าทำไมผมถึงคิดว่า Flex
จะมีอนาคตไกล ตาม link นี้เลยครับ
http://flexbox.mrinalwadhwa.com/แค่หกข้อนี้ก็น่าจะเพียงพอแล้วล่ะครับสำหรับการใช้งาน Flex ใ้ห้สนุก
>>เพราะ Flex ทำได้เฉพาะส่วน Interface เท่านั้นหรือครับ
ก็
อยากจะตอบว่างั้นนะครับ แต่จากที่ผมตอบไปแล้วข้างบน Flex
นั้นเรียกตัวเองว่าเป็น RIA (Rich Internet Application)
ซึ่งใช้แก้ปัญหาหลายอย่างที่คนทำงานในฝั่ง Server-side ปวดหัวมานาน
เพราะไม่ว่าจะเป็น ASP.net, JSP หรือ อะไรก็แล้วแต่ที่มันเป็น Web
Application มันจะทำงานอยู่ภายใต้กลไกที่สรุปได้เพียงสองคำเท่่านั้นคือ
Request-Response หรือ ร้องขอ-ส่งให้ ซึ่งก็คือกลไกที่เราใช้ในเว็บนั่นเอง
แต่การสร้าง Application ใช้ในองค์กรที่มีรูปแบบการทำงาน
และกลไกทางธุรกิจที่ซับซ้อนต้องการอะไรมากกว่านั้น
ดังนั้นถ้าจะให้
ฟันธงจริงๆ ว่า Flex ให้มาแต่ Interface หรือ ขอตอบว่า "เกือบใช่"
ผมขออนุญาติเรียก Flex ว่า Universal GUI ละกัน เพราะมันเป็น GUI
ที่สามารถนำไปแปะบน App. ตัวไหนก็ได้ในโลกใบนี้
เนื่องจากมันไม่อิงอาศัยสิ่งที่เป็น Technology เฉพาะของแต่ละค่าย
แต่อิงมาตรฐานกลางทั้ง RESTful, Webservice ดังนั้น ถ้า App.
ตัวไหนเข้ามาตรฐานพวกนี้ Flex ใช้งานได้หมด
แล้วถ้าถามว่ามันดียังไง
ไอ Framework ที่มันให้มาแต่ GUI เนี่ย ก็ต้องไปดูปัญหากันในโลกของ App.
Development ปัจจุบันกันเลย คนที่ทำงานในฝั่ง Server-side ที่ต้องเขียน
Code โปรแกรมสำหรับการติดต่อกับ Server ต้องจำใจยอมรับกับ GUI
ที่ไร้ความยืดหยุ่น อย่าง Web form เป็นต้น เพราะไม่มีทางเลือกที่ดีกว่านี้
ส่วน Microsoft ที่มีดีที่ GUI ที่โดนใจผู้ใช้นั้น
ก็เป็นอันรู้กันว่าสอบตกในเรื่องของ Enterprise App. แบบคะแนนห่วยมาก เพราะ
Developer ที่เป็นฝั่ง Server-side มักจะเกลียด Microsoft และชอบตีตราว่า
มันเป็นของห่วยที่ต้องเสียตังค์ (แม้ตอนหลัง Microsoft จะออก C#
มาช่วยได้มาก แต่สถานการณ์ก็ไม่ได้ดีขึ้นเท่าไหร่)
คราวนี้เริ่มเห็น
ภาพยังครับว่า Flex เข้ามาช่วยชีวิต Developer อย่างไร เพราะมันรวมข้อดีของ
Microsoft และ Sun เข้ามาไว้ด้วยกัน แถมยังบวกข้อดีของ Adobe
เข้าไปอีกนั่นคือความ "Cool" คราวนี้การจะำทำให้วงการของ Developer
ให้มีสีสันเหมือนกับพวก CG ก็ไม่ไกลแล้ว แถมตอนนี้ Flex กำลังจะออก Flex 4
(Gumbo) ให้ใช้ในช่วย ครึ่งหลังของปีหน้าด้วยซึ่งจะยิ่งเน้นการ Design
มากขึ้นไปอีก คราวนี้คงจะได้เห็น Enterprise App. แบบสวยๆ เยอะขึ้น
และที่สนุกขึ้นไปอีกก็คือเราสามารถ ใช้ Adobe Flash สร้าง User Interface
และ Skin (แนวคิดเหมือน skin ของ winamp นั่นล่ะครับ) ให้กับ Flex ได้อีก
ผมเลยมองว่าศักยภายของ Flex นั้นไร้ขอบเขตจริงๆ
>>คือ ยังไม่เข้าใจถึงแก่นแท้ ครับ
ผม
ก็อยากเข้าถึงแก่นของ Flex เหมือนกัน มีเรื่องที่ต้องศึกษาอีกมาก
แต่ก็น่าสนุกทั้งนั้น ขอโทษนะครับที่ให้ข้อมูลเยอะจนดูเหมือนมันน่ากลัีว
แต่ก็อย่างที่รู้ๆ ว่ามันใช้ง่าย และเรียนรู้ง่าย แต่ทรงประสิทธิภาพ
ที่ผมต้องตอบยาวเพราะไม่อยากจะให้ผู้ใช้คนไทยเกิดความรู้สึกผิดๆ
เกี่ยวกับสุดยอด Framework ตัวนี้ ช่วยกันศึกษาครับ แล้วเรามาสร้าง
Community ของคนไทยกัน