August, 2007 > 所有文章列表
Matt Chotin 的文章
眾所皆知,Eclipse 是個大怪獸,Flex Builder + Eclipse = 超級無敵大怪獸,如果你還用 Flex Data Server + Tomcat + blah blah,那就是歡樂無限++,通常2gb ram 只是入場的基本票價。
Matt 的文章簡單整理了一些加速的小技巧,有部份是透過調整 eclipse 參數來達到減少 GC & swap,有部份則是透過 project 的分割與folder 配置而達成。
目前我用的 parameters 如下:
-nl en -XX:+UseParallelGC -vm “C:\Program Files\Java\jdk1.5.0_02\bin\javaw.exe” -data “C:\Documents and Settings\user_name_here\workspace” -vmargs -Xms512m -Xmx768m
至於 projects 分割則是幾乎什麼神奇的組合都試過了,但基本上就是 project, module, library 三種類型,外加 external resource folder。
| by admin
外行看熱鬧
內行看門道
所以,這件事終於成真了。
之前曾提過 v9.r60 後,其實 flash player 就已經支援 H.264 (a.k.a High Definition, HD),只是因為後來的 security update 導致大家只好 down grade 用舊版。
所以,這次 adobe 官方的 announcement 包含了什麼呢?
-正式支援 H.264 HD video 與 AAC sound format
白話文:你可以直接在 flash player 裏載入並播放 .mp4,.m4v,.m4a,.mov 與 .3gp,而且語法完全沒變,就是用 NetStream.
白話文加強解析:張大眼看清楚,是 3gp…
-FMS 也將小改版以支援 H.264 與 AAC
白話文:你可以用外面一狗票軟體生出 mp* 檔式的檔案然後直接丟給 FMS,它就會 streaming 出去
白話文衍生:這代表 FMS 可以更容易的整合進既有的 Digital Broadcasting System裏,因為 mp* 與 mov 本來就是這些系統慣用的格式
-這個版本只會支援到 H.264, 不包含 part 2
也就是下列格式不能播放: Xvid, DivX, H.263, Sorenson Video
-H.264 的 core library 是由 MainConcept 提供
全部 code 的size 才100kb 啊~
-支援 “ilst” meta data,這是 iTune 常用的格式
-JPEG, GIF, PNG 等 imaged encoded track 可透過 byteArray 來讀取
將會新增一個 “onImageData” 事件,這代表檔案裏的 cover image 可以被讀出來,想玩 mash up 的人能做的事又更多了
-FLV 與 H.264 可共存
但adobe 已明白暗示 flv 有其格式上的先天限制,光榮退場的時機不遠了(一路走好啊~)
-新版 flash player 將會支援 multi channel AAC
但初期會將多軌先 mix down 成雙軌播放,也就是說想用 flash player 打造多聲道家庭豪華大戲院,呃,目前是不可能的,或許同時開三個 player 每個播兩軌(逃)?
根據 Tinic 的說法,如果要做到真正的多聲道輸出,player 底層自從 1996 年後就沒動過的 sound engine 要大改一番(好樣的,同一段程式碼可以用十年啊~)
-將會支援超過 44.1khz 的聲音格式,包含 48khz, 96khz等
不過是透過軟體即時 down sampling 到 44.1khz, 但能保留高品質的音色(據說是用了從美國空運來很貴的機器?呃,我是說,是用了某神奇的 Kaiser Bessel 演算法,我就知道當年數學沒學好遲早會有報應…)
-既有的 Sound class 可以用來播放 H.264/ACC 嗎?
不行,它將來會加強其它部份的功能,但播放媒體檔案的工作,將統一交由 NetStream 來負責(這聽起來也是比較正確的決定,一開始就該有個 MediaStream 之類的名稱)
-其它相關消息
H.264 在不久的將來會直接內建在大部份的主流顯示卡內,包含 NVidia, ATI and Intel 都已宣誓下場玩這把,所以,這代表未來大部份的電腦都可以硬體直接解碼而不需浪費 cpu cycles.
由於 H.264 早已是業界主流,因此市場上有許多硬體的 H.264 壓縮機器,可以用快於 1:1 (real time)的速度將影片轉換成 H.264 格式,因此對需要處理大量高品質影片的公司(例如廣告公司、IPTV等)會非常受用
歐洲的 DigitalTV 格式將採用 H.264 格式,這代表未來 web 與 tv 之間最後的那道防,呃,界線將的消失於無形,這是真正的無接縫跨界啊~
-然後機車的一段來了
I am not in a position able to explain to you why we will not allow 3rd party streaming servers to stream H.264 video or AAC audio into the Flash Player
最後再加一句
Refer to Adobe’s friendly Flash Media Server sales staff for more information.
嗯,你就簡單直說:我要錢 — 這樣大家就瞭了啊!
因為要靠賣 FMS 賺點研發費回來,所以不允許其它 streaming server 把 H.264/AAC 直入 flash player,這也多少可以理解,但我不解的是,RED5 已証明了它們的實力,你覺得要多久他們會想出「相容」之道呢?
最後的這段聲明正好也暫時打碎我長久來的一個美夢,早幾年一直被ip camera 業者問有沒有可能結合 flash player 做些殺手級應用,當時由於 player 本身不支援 H.264,因此這問題根本上很難有解,但現在既然媒體格式不是問題,剩下的就只是如何讓 H.264 stream 可以傳進 player,這個難度就低了,嗯,看來重新玩玩這個想法的時機又出現了。
*後話
這幾天業界新話題不斷,前天才有公司宣佈用 flex 寫出了一個純軟體的 SIP soft-phone, 而且會提供現成的 module 讓開發者用,這代表純 web 化的 skype 已然出現,可以 mashup的可能性無限大,現在只看這家公司想賺多少錢(怎麼又提錢,實在太銅臭,那 re-phrase 一下好了,現在只看這家公司的獲利模式與預期營收為何了…)
然後接著就是 H.264/AAC這件事,說真的,這些美好的事會接二連三的出現,要感謝的人實在太多,那就謝…咳,微軟吧,沒有微軟的加入,我相信很多事情不會進展的這麼快,原先沒打算開放出來的東西也不會這麼爽快就突然全部放行,從這個角度想,微軟在驅動競爭同業進步與產業升級這件事上,實在是功不可沒,這麼一想,突然開始覺得 vista 其實也沒那麼不堪啊(只要不是裝在我電腦上) XD
| by admin
最近由於種種緣故又要開始做點教育訓練的事,先趁現在有空把手邊的資料整理一下。
*Flex 的基礎架構
關於 flex 基本上常被問到的不外乎就是「如何可以學好它?」,要瞭解這個問題的答案基本上只要看懂下面這圖就ok了。

*Actionscript 該學的重點
從最底層看起,最下面的 actionscript 3是一切的基礎,它是 flash/flex 編程使用的唯一程式語言,因此任何人想學好 flex 第一件事絕對是先摸熟 actionscript 這個語言,包含:
1. 它的基本語法與結構(array, hash, loop, if else…)
2. DisplayList (DisplayObject, DisplayObjectContainer)與 Event system(bubbling, propagating…)
3. Sound, Video, NetConnection 與 Graphics class
掌握 as3 的精華後,接下來就可以進入 flex framework。
*Flex framework 的重點
基本上 flex framework 就是用 actionscript 寫成的框架,因此也可以把它看成是 as3的最好示範,看著 framework source 學 actionscript 也是挺不錯的,只是路會變很長。
Flex Framework 整個體系非常博大精深,通常一般人不太可能完整把它學完,只需要針對最常用到的部份熟悉就好,圖中列出的那三塊(component, managers, style/skin)就是我個人認為所有初學者最優先該學會的。
*Component 該學些什麼
Component 是整個 flex framework 的基礎,幾乎80% 的元素都是由 UIComponent 繼承而來,例如最根本的的 它本身就是一個 UIComponent,因此,熟悉 component 就成為學好 flex framework 最根本也最重要的基本功
Flex 內建了 二十幾個 UI controls, 例如 Button, DataGrid, HBox等,以種類來分,這些 components 可以概分為三大類:
-Controls: Button, DateChooser, Slider…
-Containers: Box, DividedBox, Panel…
-List: DataGrid, Tree, TileList…
初學者第一步至少該學會怎麼用這些元件,瞭解每個元件的 properties, events, styles, effects…,知道怎麼在手冊裏查它的 API 文件,以及何時該用何種元件。
進階一點,則是學會怎麼修改這些元件,例如繼承一個 Button 下來加上不同的功能,或是寫不同的 skin border 來改變它的外觀。
再更進階,則是開始研究元件的生命週期,瞭解每個元件是何時初始化,元件內部有那些關鍵指令與它們個別的功用,然後可以試著建立自已的 custom component。
這一關看起來容易但實際上最困難,因為 flex 的 component framework 寫的非常龐大,雖然亂中有序但要在混沌中看出隱藏的架構然後抓住重點整串提起,就非得有人帶著指引正確的途徑才比較可能達成。
*manager 是什麼
圖中最上方的第二塊就是 manager。
flex 裏有很多的 managers,負責做各種不同的工作(廢話…),幾個比較重要的包含:
-SystemManager:
它是每支 flex app 的根源,最先被下載,也最早啟動,由它進行一連串的 app boot流程
-StyleManager:
它負責整支app 的 css style 套用與 skin 生成,如果想玩動態 css 載換也靠它
-DragManager:
Flex最大的賣點就是 drag and drop,這個 manager 就是背後的英雄,初學者至少要學會怎麼處理 drag 行為的五個事件,以及如何在不同元件間做拖放;進階的玩家則應該深入研究這支 manager 是怎麼寫成的,詳細閱讀它的 source 會得到意想不到的無窮樂趣(如果你讀完卻沒有這種感覺,呃,那代表你該再多讀幾次,如果還是沒有,那請私下聯絡我 :D)
-ModuleManager:
使用 Flex 開發大型應用程式時,往往會將程式切割成許多小的 module, 這個 manager 就是負責載入並管理所有的 module (包含它的 class partition),初心者或許用不到,但有志深入的玩家一定要很熟。
-CursorManager:
這個用到的時機不是很多,但偶爾要換一下 cursor 時還是會用到,初學者至少要知道怎麼用指定的圖案去換掉系統cursor。
*Style/Skin 的重點
CSS style 與 skinning 是 Flex 最大的賣點之一,也是開發過程中較為麻煩也最耗時的部份。
初學者應該要徹底瞭解如何使用 CSS style 來打點一支 flex app 的外觀,換顏色、素材,使用外部 assets 修飾介面。
中階玩家則應該瞭解 skinning 的系統,包含 programmatic skinning 與 graphical skin,它們兩的差別?使用時機?如何客製化?
更高階的玩家則應該熟悉整個 Styling system 的運作模式,外加如何動態載入 css 在 runtime 換掉整個介面。
簡而言之,flex app 寫的好不好,外行人其實看不太出來,但一支 app UI 美不美則是一翻兩瞪眼,比較漂亮的那就先加十分
(當然,有一種情況是刻意用心去美化了介面結果弄巧成拙搞的怨聲載道人人喊打,但那種比較不多見,也不是每家公司都會搞到這步田地,就先不討論)
*學完基本功後下一步
在我的標準裏,當一個 developer 對上圖內每一塊都有中等程度的瞭解後,就算是完成 flex 養成教育,可以邁向下一個階段。
也就是開始熟悉 application 的製作手法,這包含
-瞭解至少一種以上的開發框架,例如 Cairngorm,老實說我對這個框架沒什麼好感(因為手法太複雜,只適合超複雜登月計畫或火星探勘時使用),但它結構設計良好,又是業界公認的聖盃,等於是專家們共通的語言,因此至少要先瞭解它在做什麼,將來在專業場合才好溝通(俗話說 know the rules so you know what you are breaking, 就是指這情況)
-接著可以看看比較簡單的手法,像 Riawave, Model-Glue:Flex, PureMVC…等,基本上這些框架設計方式都大同小異,每個都有不同的應用場合,可以挑一個喜歡的再自行修改。
-瞭解基本的概念,例如 Value Object, DAO, MVC 等,它們在大部份的程式框架裏都會出現,早點學會日子比較輕鬆。
接著就是開始實際 coding,寫一個中小型規模的app,不論是單純的 CRUD app,或是留言版、電話簿、進銷存管理都可以,籍由多寫來強化編程的概念,然後透過大量的 peer code review 來找出可改進的地方。
*結論
結論還是老話一句:要入門 flex 超級簡單,只要不是白癡應該一小時就行,但要成為可獨當一面的專業開發者,路就很長,如果沒有走對方向很容易就迷失甚至最後放棄。
換句話說,要能成為職場上真正需要的 professional developer,並不如表面上想像的容易(其實我想每種技術領域跟產業都一樣吧),這也是我過去半年來協助很多公司做 recruiting 後的感想。
*工商服務時間
咳咳,接下來是工商服務時間:
自從前兩天貼出徵人廣告後,這兩天收到許多 resumes,但其中有 75% 在第一關就過不了,主要在於缺乏我們需要的專業核心能力,或是沒有辦法在 resume 裏適當的表現出他/她的特質或潛力(當然英文程度可能也是一個問題)。
而在過關的 1/3 裏,有超過七成是來自大陸的朋友,這讓我對大陸開發者的用功與實力刮目相看,尤其這些人都是二十出頭的年輕人,能在這麼年輕就擁有一身好功夫確實難得。
但反過來看,台灣地區的應徵者就比較讓人失望,或許高手們都已經有工作所以沒興趣apply,但我想更大的可能是真的沒多少人願意投入這個領域(當然本地沒有這種市場也是主因,所以最後這是一個雞生蛋/蛋生雞的 recursion)。
因此,重點的一段終於來了:
台灣地區的朋友們,如果你已經在其它技術領域(特別是 Java/C#/C/C++)有深厚的底子,而且對 RIA, Flex 技術有興趣,也有心想深入發展,請放心與我聯絡,公司會提供必要的培訓資源,我也會親自訓練所有的新進工程師,將來正式工作後全美六十多個 full-time flex developers都是你切磋交流的對象,加上自由的工作環境,真的機會難得,請看看下面這張圖,我們提供的就是這種 dream job 呀

| by admin



今早不到十點就有人在外面急著按鈴,開門一看原來是 Fedex 又送東西來了,這次是上面這件特大號的 AIR bus tour T-shirt,設計的挺不錯,顏色適中,質料中等,正好適合夏天穿,只可惜 size 大了點,看來即使以我的體型,到了美國還是只能乖乖穿 L 而不是 XL or XXL 啊~
不過既然提到 AIR,就順便聊聊。
最近一週剛好都在寫 air,因為某個案子其中一部份的需求就是要有個 desktop app 可以處理一些檔案與email,而我要負責的 task 則是寫出一個 air app,可以讓 user 拖放 Outlook Express 的 .eml 檔到上面,然後自動 parse 出它所有的欄位,填到表格中再回傳。
為此我重裝了最新的 Flex 3,這次拿到的版本對 air 支援已經明顯好很多,感覺是比較 polish 過的版本,api 部份文件也很清楚(雖然最關鍵的核心功能還是沒有 Orz),但至少 Native Drag Drop 跟 File, FileStream 都是可用的。
從最近寫 air 的經驗可以明顯的感覺到 flex 3 + air runtime 的成熟度已經開始接近 v1.0 的 quality,我想今年十月 Max 2007 時應該就會 release了,但真正值得期待應該是隨後而來的 v1.01 or v1.5,希望那時所有因為時間趕不及而先拿掉的東西就會放回去啊~
不過,簡單的心得是,如果對 Flex 本身夠熟,要轉來開發 air app 幾乎沒有門檻,頂多只要學會六七個新的 API 即可。
另一方面,如果對 actionscript 3 夠熟的話,要 down grade 去寫 flash 9 app 也是易如反掌,只是會一直有衝動想先寫個 container 元件,然後把 LayoutObject port 過去就可以享受 fluid layout 的快感了(當然,如果你不夠熱血,有人已經做好這件偉大的事,可以考慮直接用)。
最後順帶一提,如果你對上面最後兩段頗有同感,那你應該考慮一下投個 resume給這家公司
| by admin
美商顧問公司在台招募 Adobe Flex 2 工程師四名,此公司為北美地區 Rich Internet Application (RIA)領導廠商,於全美主要城市設有分公司,同時為 Microsoft 與 Adobe 策略聯盟,專門提供 Flex, AIR, Silverlight 顧問服務,客戶遍及北美各大產業。
此公司即將在台北成立研發辦公室,目前地點洽談中(將在北縣市捷運沿線交通方便處),初期可在家上班,定期開會並每日向主管報告。
下列為基本能力需求:
-熟悉 Flex 2 與 ActionScript 3
-熟悉開發模組化與物件導向式之 Flex 2 應用程式
-熟悉 Flex 2 元件設計、製作(元件生命週期與運作方式)與樣式設計
-熟悉物件導向式編程技巧(Classes, Interfaces, Composition, Inheritance and re-usable code)
-瞭解 Cairngorm 或其它類似開發框架
-能在團隊環境下獨立工作
-具備良好文字與口語溝通技巧
-具備基礎英文讀/寫能力,擁有良好英文溝通能力更佳
-請準備 Flex 相關作品與程式碼供檢視
本公司提供舒適與彈性的工作環境,每週可選擇在家工作數日。
本公司也提供兩星期職前專業教育訓練(針對 Flex 2/Actionscrit 3)與完整線上教育資源,
正式工作後可隨時與全美分公司同事切磋/交流經驗。
地點: 台灣(台北為佳,其它地區人選可依能力選擇遠端工作)
待遇: 依經驗決定(優於一般行情)
附註:如果你目前不熟悉 Flex/Actionscript 但在其它技術領域(C/C++/C#/Java)有多年經驗且有興趣學習 Flex,本公司可提供培訓計畫。
意者請將履歷寄送到 flexopenings@gmail.com
—
Leading US RIA consulting company has multiple openings for Adobe Flex developers here in Taipei, Taiwan. We are the leader in Rich Internet Application (RIA) development (Flex, AIR, Silverlight, etc.) and we need to add a number of talented Flex developers to our RIA Development Group.
-Extensive experience with Flex 2 and ActionScript 3
-Experience designing modular, object-oriented Flex 2 applications
-Familiar with Flex component life cycle (extending and creating custom components), styling and skinning
-Strong object-oriented programming skills (Classes, Interfaces, Composition, Inheritance and re-usable code)
-Understanding of Cairngorm (or similar frameworks)
-Be able to work independently in a team environment
-Have strong interpersonal communication skills, both written
and verbal
-Must have basic read/write capability in English (fluent in English is a huge plus)
-Please provide past flex works and source code for review
We offer a relaxed work environment in creative/fun office space and we’re flexible about working from home a couple days a week for those with longer commutes.
If working with a group of fun people in one of the most exciting technologies of the day sounds appealing, we would love to hear from you. Please send your resume to flexopenings@gmail.com
Location: Taipei, Taiwan
Salary: DOE
Benefits: Insurance, Profit Sharing, Retirement Plan, Gym membership, etc.
Position Type: Full Time Employee
Thank you
—
很不錯的機會,加入最專業的公司做世界一流的專案,還可以每天跟業界高手共同切磋,有興趣的人可以跟我聯絡,代為轉達。
大陸地區的朋友也歡迎 apply。
| by admin
Next Posts
Previous Posts