多語言

          早在工作之前,就有學(xué)長(zhǎng)們、老師們諄諄教導(dǎo)說,語言不要貪多,學(xué)一門語言學(xué)到精,其他語言再學(xué)就很容易了。
          我是這么做的,而且,做的有點(diǎn)過。很長(zhǎng)時(shí)間里都扎在Java的世界里不肯出來,找開源工具也一定要找基于Java的。最早找一個(gè)Wiki都執(zhí)意要找Java的,找到了JSPWiki。也因此認(rèn)識(shí)了BeanSoft和Java Ajax群的朋友們,呵呵。
          但是,隨著開發(fā)任務(wù)的變化,不得不去學(xué)一些其他的語言。沒辦法,人在江湖身不由己啊,所以,也就開始了多門語言的學(xué)習(xí)之路。javascript可以說是我學(xué)的第一門“外語”。最早的時(shí)候?qū)s的應(yīng)用,也就簡(jiǎn)單用一下得了。后來隨著時(shí)間的推移,覺得將來脫不了要靠它吃飯,也就主動(dòng)買了幾本JavaScript的書,慢慢的去啃,甚至啃到了很多對(duì)我沒什么用的高級(jí)的特性,再后來工作需要,接觸了Flex,js用的就少了,也就慢慢的放下了。
          ActionScript是我接觸的第三門外語。也是用心比較大的,呵呵,很長(zhǎng)一段時(shí)間里甚至熱情超越了Java。中間根據(jù)個(gè)人興趣還看了點(diǎn)Ruby。
          隨著實(shí)踐的增多,對(duì)語言的恐懼心理下降了。反而發(fā)現(xiàn)了各個(gè)語言所在世界的優(yōu)勢(shì)。每個(gè)語言所在的世界里都有非常優(yōu)秀的東西。最早想做一個(gè)手腳架,看了一下Rails,是基于Ruby的;為了測(cè)試Flex,研究了FunFX,也是基于Ruby的;前不久在部門里搭建了一個(gè)wiki,是基于PHP的;這段時(shí)間又研究了一下Trac,是基于Python的;研究Trac的時(shí)候發(fā)覺它可以跟Bugzilla集成,而Bugzilla是基于Perl的。這么多優(yōu)秀的東西,讓我覺得學(xué)習(xí)多門語言的困難變得無所謂了。
          上次去OpenParty,參與了鄭曄的那個(gè)session。他講了自己在項(xiàng)目中使用多種語言的經(jīng)歷。其實(shí)很有趣,作為只會(huì)一種語言的人來說,他覺得學(xué)多門語言會(huì)讓自己泛而不精,然而真正掌握多門語言的人卻發(fā)覺,他山之石可以攻玉,當(dāng)你學(xué)會(huì)別的語言之后反過來在使用以前的語言的時(shí)候,思路會(huì)變得異常開闊。不管是對(duì)設(shè)計(jì)模式的領(lǐng)悟上還是對(duì)架構(gòu)的組織上,都達(dá)到了一個(gè)更高的高度,反而更加精深了。
          回來后,我也想了很多。記得早前看o6z一個(gè)帖子講,SOA之所以風(fēng)行,很大原因是因?yàn)槠髽I(yè)已經(jīng)積累了一些設(shè)備和軟件。因?yàn)榻鹑陲L(fēng)暴也好,因?yàn)榻?jīng)濟(jì)衰退也好,因?yàn)槌杀究紤]也好,因?yàn)檫@這那那也好,不想統(tǒng)一成一個(gè),需求決定供給,所以SOA才風(fēng)行起來。那么這樣一個(gè)環(huán)境對(duì)我們開發(fā)人員的會(huì)不會(huì)有什么影響呢?而且開源風(fēng)行的今天,我們的軟件行業(yè)也已經(jīng)積累了一批財(cái)富。我們業(yè)內(nèi)的人,也是不想統(tǒng)一替換成一類語言的,那么市場(chǎng)上的需求會(huì)不會(huì)慢慢變得要求我們程序員必須掌握多種語言呢?其實(shí)現(xiàn)在已經(jīng)這樣了,我就是一個(gè)例證,我的變化不是我主觀想這么做的,而是一只看不見的手---市場(chǎng)推動(dòng)的。不過我個(gè)人預(yù)測(cè)未來可能會(huì)更嚴(yán)重,如果JVM成功變成一個(gè)可以跑各種動(dòng)態(tài)語言的超級(jí)平臺(tái)的話。

          posted @ 2008-06-10 02:07 咖啡屋的鼠標(biāo) 閱讀(363) | 評(píng)論 (0)編輯 收藏

          瘋?cè)墓适屡c對(duì)錯(cuò)


          瘋?cè)墓适乱恢崩_著我---相傳,有一個(gè)國(guó)家,有一口瘋?cè)攘巳娜硕紩?huì)瘋,很快全國(guó)人民都瘋了,只有國(guó)王是正常的,在國(guó)民眼中看來國(guó)王是不正常的,其結(jié)果就是國(guó)王被灌下瘋?cè)蔀榱睡傋樱珖?guó)狂歡。作為旁觀者看來,你告訴我,國(guó)王是對(duì)的?還是國(guó)民是對(duì)的?

          可是跟所有的故事一樣,故事總是只強(qiáng)調(diào)問題的一方面,我反過來講這個(gè)故事,如果全國(guó)人民都沒瘋,就國(guó)王瘋了,國(guó)王認(rèn)為,不行,全國(guó)人民得跟我這樣,于是想法設(shè)法讓全國(guó)人民喝上瘋?cè)D敲船F(xiàn)在作為旁觀者你告訴我,國(guó)王是對(duì)的?還是國(guó)民是對(duì)的?

          現(xiàn)在有一個(gè)國(guó)家,有兩口泉,一口是瘋?cè)豢谑切讶:攘睡側(cè)娜藭?huì)變成瘋子,喝了醒泉的人會(huì)變成正常人。最早國(guó)家的人全變成了瘋子。機(jī)緣巧合,國(guó)王喝下了醒泉。清醒過來的國(guó)王想讓國(guó)民都醒過來,想讓國(guó)民喝醒泉。而國(guó)民發(fā)現(xiàn)了國(guó)王與自己不一樣的地方,于是將國(guó)王灌下瘋?cè)瑖?guó)王再次瘋了。那么現(xiàn)在作為旁觀者,你告訴我,國(guó)王是對(duì)的,還是國(guó)民是對(duì)的?

          其實(shí)三個(gè)問題都挺簡(jiǎn)單的,第一個(gè):國(guó)王是對(duì)的,第二個(gè),國(guó)王是錯(cuò)的,第三個(gè),還是國(guó)王是對(duì)的。可是,我現(xiàn)在再給旁觀者的你一個(gè)新情報(bào),三個(gè)故事是一件事,只不過是三個(gè)人講的,所以出現(xiàn)了三個(gè)版本。其實(shí)我還能講一個(gè)故事,就是把第三個(gè)故事反過來講,大家自己想去吧,相當(dāng)于第二個(gè)故事的擴(kuò)展版。如果是這四個(gè)故事一塊看,你說誰是對(duì)的呢?是“群眾的眼睛是雪亮的”呢?還是“真理掌握在少數(shù)人手中”呢?

          如果到現(xiàn)在你還沒有被我繞暈了的話,應(yīng)該心中還能響起柯南的那句話:“真相只有一個(gè)”。沒錯(cuò),所以你只要找到那兩個(gè)泉,搞清楚到底哪個(gè)是醒泉哪個(gè)是瘋?cè)秃昧恕U胬恚匀痪椭朗钦莆赵谡l手中了。繼而也就可以證明國(guó)王是對(duì)的,還是國(guó)民是對(duì)的。

          可是,事情沒有那么簡(jiǎn)單,你率領(lǐng)的觀察隊(duì)發(fā)現(xiàn),兩個(gè)泉水是兩口魔泉,你喝下一口泉水的水,你就有擁有了一種價(jià)值觀,喝另一口泉的水,就擁有了另一種價(jià)值觀。兩種價(jià)值觀是對(duì)立的,但是,誰知道哪種是瘋的呢?事情變得更復(fù)雜了。。。難道在這個(gè)事件中我們無法證明什么嗎?誒,還真有一個(gè),你證明了,這個(gè)國(guó)家有兩口魔泉,不是一口。

          這世界上有很多事情就是這樣,撲朔迷離的,就算最終謎底揭曉,發(fā)覺反而不知道對(duì)錯(cuò)了。可是如果我們一開始就知道這些,我們就能知道對(duì)錯(cuò)了嗎?還是不知道啊。不過呢,這種問題,我們苦惱,精英們比我們更苦惱。早在我們考慮之前,精英賢者們就在考慮這些問題了,并得到了一些結(jié)論。最早的時(shí)候,老子就說,有錯(cuò)才有對(duì)。這說法比較言簡(jiǎn)意賅,乍一看就是句廢話。我以前也覺得他是句廢話,知道有一天看到了另一句話,才明白他老人家的微言大義。這句話就是:“可以被證偽的命題才是科學(xué)的命題”。這話聽著跟我們?nèi)粘@飳?duì)科學(xué)的印象不太一樣呢,我們常說,你這個(gè)說法不科學(xué),那意思就是不對(duì)。科學(xué)當(dāng)然是對(duì)的,證偽,證明是錯(cuò)誤的,那種東西怎么能算是科學(xué)的呢?可惜,事實(shí)正是如此,所有科學(xué)的命題都是可以被證偽的。科學(xué)也正是因?yàn)樾欧钸@一條原則,所以才可以自我修正,自我進(jìn)化,以致今天的高度。

          所謂可以被證偽不是說這個(gè)東西有錯(cuò)誤,而是說,你這個(gè)命題天生帶著可以被推翻的情況出生的。比如,曾經(jīng)有人懷疑進(jìn)化論的科學(xué)性,說你這個(gè)東西無法被證偽,進(jìn)化論的擁護(hù)者就說,你只要找到一批侏羅紀(jì)的兔子或者猩猩化石什么的,那么進(jìn)化論就被證偽了,因?yàn)檫M(jìn)化論說物種的進(jìn)化一定是從低級(jí)到高級(jí)。這種情況,我們稱之為可被證偽。指一個(gè)命題能夠被推翻。什么是不可被證偽的呢?比如說什么是美的,我們常說情人眼里出西施,那美自然是無法被證偽的東西。藝術(shù)的東西,大都是無法被證偽的。無法被證偽的東西,自然沒有錯(cuò)誤,沒有錯(cuò)誤的東西自然就沒有正確。像這樣的東西,就不要追求什么對(duì)錯(cuò)了,硬要追求,只有自討苦吃。

          posted @ 2008-06-07 22:15 咖啡屋的鼠標(biāo) 閱讀(1243) | 評(píng)論 (1)編輯 收藏

          沒事閑的,考慮一下企業(yè)文化

          前一陣跟一做企業(yè)文化咨詢的哥們混了一陣,從他那瞅見一書,挺有意思。叫《公司基因》,看著不錯(cuò)就買了。
          這OpenParty是不興推薦書了,下次再有機(jī)會(huì)就推薦這個(gè)。
          這書里認(rèn)為企業(yè)文化不管怎么變,他的DNA都是由四個(gè)元素組成的,即:組織架構(gòu)(原詞是structure)、決定權(quán)、信息、激勵(lì)機(jī)制。
          它根據(jù)這四個(gè)元素把企業(yè)分成了七種類型
          • 消極進(jìn)取型
          • 時(shí)進(jìn)時(shí)停型
          • 過度膨脹型
          • 過度管理型
          • 隨機(jī)應(yīng)變型
          • 軍隊(duì)型
          • 韌力調(diào)節(jié)型

          其中前四者看名字就知道不是什么好東西,書中也定義為不健康的企業(yè)。后三者,雖然都算是健康的,但最好的其實(shí)是最后一個(gè)。

          敏捷常常被說是一種文化,我也這么覺得。所以,我最近一直讓自己從這四個(gè)角度看敏捷的方法學(xué)。分析來分析去,反而搞不清敏捷應(yīng)該塑造一種文化,還是某種文化是維持敏捷的土壤。有點(diǎn)雞生蛋蛋生雞的意思。不過不管哪個(gè)生哪個(gè),如果目的是養(yǎng)雞,那誰先誰后就不是我關(guān)心的了。

          posted @ 2008-06-06 00:54 咖啡屋的鼠標(biāo) 閱讀(322) | 評(píng)論 (0)編輯 收藏

          初讀《Scrum敏捷項(xiàng)目管理》

          這本書前面部分寫了太多關(guān)于案例的內(nèi)容。沒有足夠形象的講解Scrum。也沒有充分描述Scrum的假設(shè)、適應(yīng)情況和不適應(yīng)情況。講Scrum的風(fēng)格跟微軟的講師講座倒是真挺像。
          書中的Service1st公司的案例跟我們部門的情況極其相似。最后他也沒解決,只是說Scrum在現(xiàn)有的形勢(shì)下帶來了什么好處,有些失望。不過仔細(xì)想想,這個(gè)團(tuán)隊(duì)的問題不是軟件開發(fā)方法的問題,而是企業(yè)文化的問題。所以Scrum解決不了是意料之中的。
          但是這本書,說實(shí)話,不是特別經(jīng)典的一本書,大概看看吧。

          posted @ 2008-05-23 10:42 咖啡屋的鼠標(biāo) 閱讀(373) | 評(píng)論 (0)編輯 收藏

          關(guān)于浪費(fèi)的雜想

          敏捷是以消除浪費(fèi)、提高質(zhì)量為目標(biāo)的。但是有些時(shí)候總能見到一些原教旨主義者指出,重構(gòu)也是浪費(fèi)、結(jié)對(duì)也是浪費(fèi)、討論也是浪費(fèi)。然后呢,又有人提出,XX是必要的浪費(fèi)這種說法。

          想了一下,XX是必要的浪費(fèi)這個(gè)說法其實(shí)不確切,只能說,這些東西是必要的成本支出。所謂浪費(fèi),必須從經(jīng)濟(jì)學(xué)角度講才行。不然世間一切都可以帶上這個(gè)難看的帽子。牛博網(wǎng)最近新來的騙銀老師那里學(xué)來一個(gè)概念:“經(jīng)濟(jì)學(xué)上有個(gè)奇怪的概念叫‘冤死的損失’(deadweight loss),英文的直譯是‘未被釋放出來的能量損失’,那是說,有一部分損失,...”誰也沒拿走,“...但因?yàn)樾试颍湍敲磻{空損失掉了。”
          因?yàn)槁犉饋砗苄瑸榱俗尨蠹腋美斫猓_銀老師在后面講的一個(gè)非常耳熟能詳?shù)睦樱?br /> “我雇了一幫人,天天就負(fù)責(zé)刨坑,刨了然后填上,然后再刨開,再填上(這例子不荒謬,中國(guó)隨處可見),我發(fā)給他們工資,這一來一往國(guó)民生產(chǎn)總值(GDP)就上去了。看起來誰也沒損失什么,對(duì)不對(duì)?只是簡(jiǎn)單的財(cái)富轉(zhuǎn)移。其實(shí)不然,這里面有巨大的浪費(fèi),因?yàn)檫@些錢、這些勞力本來可以用在其他更為有效的生產(chǎn)上,可都用來刨坑了,那就是浪費(fèi)。”(其實(shí)個(gè)人這個(gè)例子還不夠形象,如果挖坑和填坑的不是一批人,他們自己根本就不知道自己做的是浪費(fèi)的事情,就知道干了活,拿錢,而且還為挖坑和填坑做了很多過程改進(jìn),提高工作效率。那就更形象了。)

          所以說,您不能因?yàn)槟承┕ぷ髯隽四芸吹叫Ч耍筒环Q之為浪費(fèi),而有些工作做了您看不到效果就稱之為浪費(fèi)了,應(yīng)當(dāng)反思一下是不是自己眼界不到。

          離職將近,我在交接工作之際,因?yàn)槲易钍欤砸野岩蕾囄邑?fù)責(zé)模塊的其他模塊的適配器類改至新版。自己搬著Mingle寫了一些故事卡,又用CC寫了一 些持續(xù)集成的腳本。接下來,我還會(huì)去寫測(cè)試用例。整個(gè)過程中,沒有一行有效代碼的產(chǎn)出。在以代碼計(jì)績(jī)效的角度看,我的工作就算是浪費(fèi)。可是,大家應(yīng)該知 道,沒有這些東西,先不說我會(huì)不會(huì)在開發(fā)的時(shí)候保證質(zhì)量。就說我離開以后,當(dāng)產(chǎn)品質(zhì)量出問題了,誰來保證?我可以根據(jù)異常一眼看出問題可能出在哪里,新接手的人能嗎?如果他改了程序,能保證不會(huì)按下葫蘆起來瓢嗎?他需要時(shí)間去犯錯(cuò)去學(xué)習(xí),這個(gè)時(shí)間,沒有產(chǎn)生新的價(jià)值,這才是真正的浪費(fèi)。而且這也就成了挖坑-填坑的模式了。

          問題反過來了,我做好這個(gè)CI的環(huán)境走了,來了一個(gè)新人接手,會(huì)怎樣?一天,系統(tǒng)報(bào)異常了。他有我的測(cè)試環(huán)境,而且,還是可以運(yùn)行的。他可以很快的寫一個(gè)測(cè)試用 例,并開始調(diào)試,即便他無法理解整個(gè)設(shè)計(jì),那不妨礙他快速的修復(fù)Bug。而且,因?yàn)橐郧暗臏y(cè)試用例可以自動(dòng)運(yùn)行,他還可以保證自己的修改不會(huì)導(dǎo)致之前的功 能出現(xiàn)問題。一個(gè)為產(chǎn)品而組織的團(tuán)隊(duì),離開了某個(gè)特定的人,產(chǎn)品仍然可以自我完善,能完成這樣的目標(biāo)的手法才是最有價(jià)值的。

          很多人擔(dān)心前期花費(fèi)的時(shí)間太多,后期就更沒時(shí)間,問題又來了。前期花費(fèi)的時(shí)間多,是浪費(fèi)掉了,還是合理的用掉了?如果是浪費(fèi)掉了,自然不應(yīng)該,如果是合理的用掉了,那是必須的。我們學(xué)軟件工程的時(shí)候都學(xué)過,一個(gè)問題發(fā)現(xiàn)的越晚,改正他的成本就越高。后期所謂的沒時(shí)間,就是因?yàn)榍捌谔鄦栴}沒有修正。

          說道這個(gè)前后期的問題就不得不提最近一次結(jié)對(duì)的經(jīng)歷。在我的堅(jiān)持下,總算完成了一次與同等水平開發(fā)人員的結(jié)對(duì)編程。持續(xù)時(shí)間有三天。與同等水平的人結(jié)對(duì),感覺是不一樣。也發(fā)現(xiàn)了很多以前沒有發(fā)現(xiàn)的問題。這都是個(gè)人問題,脫離我本人就沒有意義了,所以也就不說了。主要說一下心得。這三天的時(shí)間里做了一件什么事呢?推翻以前分成兩個(gè)模塊的應(yīng)用,合成一個(gè)。兩個(gè)人做一件事,大家可以隨時(shí)根據(jù)今天剩余的時(shí)間做工作的調(diào)節(jié),精確到小時(shí)。因?yàn)榱私獾男畔⒉煌梢钥焖賯鬟f,合作互補(bǔ),當(dāng)他提出一方案的時(shí)候我可以快速告訴他,我這邊沒有問題,減少了嘗試造成的時(shí)間浪費(fèi)。因?yàn)閮蓚€(gè)人一起做,腦子根本停不下,一個(gè)人停了,另一個(gè)人還在轉(zhuǎn),帶著你不得不進(jìn)行。一天的有效工作時(shí)間在6小時(shí)以上。而分開的話,基本上能有3個(gè)小時(shí)就不錯(cuò)了。

          (中間發(fā)生的一點(diǎn)插曲。因?yàn)榻Y(jié)對(duì)開發(fā)從不了解的人看來,是一件很浪費(fèi)時(shí)間的事情。所以出現(xiàn)干預(yù)結(jié)對(duì)的現(xiàn)象出現(xiàn),理由是擔(dān)心做不完。我覺得,如果不是堅(jiān)持的話,就真的做不完了。從現(xiàn)實(shí)中看來,強(qiáng)調(diào)浪費(fèi),很容易被偷歡概念。而偷換概念的人很多人都沒有做過仔細(xì)的考慮。純粹的想當(dāng)然。)

          posted @ 2008-05-20 17:57 咖啡屋的鼠標(biāo) 閱讀(246) | 評(píng)論 (0)編輯 收藏

          CMMI的最高目標(biāo)和Agile的世界觀

          今天公司過了CMMI 4級(jí),5級(jí)沒過,聽老外講述什么是5級(jí)也就是說什么是持續(xù)改進(jìn)以后,感覺到CMMI的持續(xù)改進(jìn)和Agile的消除浪費(fèi)其實(shí)是一枚硬幣的兩面,持續(xù)改進(jìn)就是消除浪費(fèi),為什么這么說呢?CMMI的持續(xù)改進(jìn)本來就是高級(jí)別的過程域,那個(gè)時(shí)候指望重大變革基本就不靠譜,所以這個(gè)時(shí)候,看不管哪個(gè)行業(yè),都會(huì)走向消除浪費(fèi)的方向,軟件開發(fā)也不例外。CMMI的持續(xù)改進(jìn)要求一直做一直做,那跟敏捷要求的追求精益的觀點(diǎn)是一致的。

          CMMI認(rèn)為通過4級(jí)的度量形成了穩(wěn)定的過程之后,5級(jí)就應(yīng)該是對(duì)4級(jí)過程的不斷改進(jìn),什么時(shí)候看,都是不滿足的,值得修改的。那種精神不正是敏捷的世界觀嗎?CMMI給出了一堆過程域和目標(biāo),并沒有告訴我們?cè)趺磳?shí)現(xiàn),Agile就更粗狂,不過大家提到Agile其實(shí)想到的是XP。所以覺得Agile就是一堆實(shí)踐而已,沒關(guān)系,不去爭(zhēng)辯這個(gè)問題。我就看XP,XP的那12個(gè)最佳實(shí)踐,跟CMMI的思想一點(diǎn)都不矛盾。(細(xì)節(jié)不可考,因?yàn)楹芏鄷r(shí)候我很難清到底是CMMI里面就定好了這細(xì)節(jié)還是我們的EPG定的)。以前的時(shí)候只是粗略的感覺這兩者可以不矛盾,現(xiàn)在培訓(xùn)過后,更證實(shí)了這點(diǎn)。

          ============
          縮寫解釋:
          Agile 敏捷
          CMMI 能力成熟度模型集成
          XP 極限編程
          EPG 企業(yè)過程小組

          posted @ 2008-04-11 13:55 咖啡屋的鼠標(biāo) 閱讀(442) | 評(píng)論 (0)編輯 收藏

          企業(yè)內(nèi)容管理的價(jià)值是什么?

          不知不覺做這個(gè)產(chǎn)品已經(jīng)一年了,其實(shí)除了技術(shù)積累,對(duì)這個(gè)產(chǎn)品的概念基本是處于原始階段。雖然早已經(jīng)過了企業(yè)內(nèi)容管理與網(wǎng)站內(nèi)容管理的疑問階段。但是內(nèi)容管理本身是對(duì)企業(yè)有什么價(jià)值,問了很多人。很多人的回答都不讓我們滿意,因?yàn)樗麄兓卮鸬钠鋵?shí)是工作流有什么價(jià)值、OA有什么價(jià)值、文檔管理有什么價(jià)值、ERP有什么價(jià)值。
          昨天聽一位曾經(jīng)實(shí)施過FileNet的同事說了一句話才明白過來這個(gè)東西的價(jià)值在于“提供一種海量非結(jié)構(gòu)化異構(gòu)文檔的查詢服務(wù)”,其余的都是在其之上的附加價(jià)值。
          價(jià)值有了,可是越看越?jīng)]底:“海量”、“非結(jié)構(gòu)化”、“異構(gòu)”僅一個(gè)關(guān)鍵字就夠麻煩的了,三個(gè)拼一塊。。。很好,很強(qiáng)大。。。。。

          posted @ 2008-03-20 13:55 咖啡屋的鼠標(biāo) 閱讀(437) | 評(píng)論 (2)編輯 收藏

          Alert,TitleWindow以及PopUp的簡(jiǎn)單分析

          這兩天為了Fluorida的closePopUp功能,讀了點(diǎn)Flex框架的源碼,對(duì)Alert,TitleWindow以及Flex的PopUp功能做了簡(jiǎn)單的分析。
          【Alert和PopUp】
          Alert內(nèi)部其實(shí)是調(diào)用了PopUpManager.在parent參數(shù)為null或者為Application的時(shí)候,彈出的窗口將跟當(dāng)前Application在一個(gè)容器下。Alert在最頂層,Application在最底層,中間那層是一個(gè)稱之為modalWindows的控件,其實(shí)就是Alert后面那個(gè)磨砂的層。為了點(diǎn)到Alert上的按鈕,寫了一個(gè)小程序分析Alert的結(jié)構(gòu),不是很好讀,但是可以運(yùn)行一下,看看分析出的Alert的內(nèi)部結(jié)構(gòu):(大略說一下,Alert的Child有一個(gè)AlertForm,而AlertForm的Child除了第一個(gè)是TextField以外,都是按鈕)
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
              
          <mx:Script>
                  
          <![CDATA[
                      import mx.core.IChildList;
                      import mx.core.UIComponent;
                      import mx.core.IFlexDisplayObject;
                      import mx.managers.ISystemManager;
                      import mx.managers.PopUpManagerChildList;
                      import mx.managers.PopUpManager;
                      import mx.controls.Alert;
                      import mx.events.CloseEvent;
                      import mx.core.Singleton;
                      import mx.managers.IPopUpManager;
                      
                      private function showSimpleAlert():void{
                          Alert.okLabel="oKey";
                          Alert.show("Hello, World!","",15,null,alertCloseHandle);
                          var myTimer:Timer = new Timer(1000, 1);
                             myTimer.addEventListener("timer", timerHandler);
                             myTimer.start();            
                      }
                      
                      private function alertCloseHandle(event:CloseEvent):void{
                          simpleAlertShower.label = event.detail.toString();
                      }
                      
                      private function timerHandler(event:TimerEvent):void{
                          var text:String = "elements:";
                          var sm:ISystemManager = (Application.application.root as ISystemManager);
                          text+=sm.numChildren.toString();
                          text+=";\n modalWindows:";
                          text+=sm.numModalWindows.toString();
                          for(var index:int = 0; index < sm.numChildren; index++)
                          {
                              text += "\n" + index + " : ";
                              text += sm.getChildAt(index).toString(); 
                          }
                          
                          var alert:Alert = sm.getChildAt(sm.numChildren - 1) as Alert;
                          text += "\n buttonFlags : "+alert.buttonFlags;
                          text += "\n alertChildren:" + alert.numChildren;
                          for(var index:int = 0; index < alert.numChildren; index++)
                          {
                              text +="\n" + alert.getChildAt(index).toString();
                          }
                          var alertForm:UIComponent = alert.getChildAt(0) as UIComponent;
                          text += "\n alertFormChildren:" + alertForm.numChildren;
                          
                          for(var index:int = 0; index < alertForm.numChildren; index++)
                          {
                              text +="\n"+index+":"+ alertForm.getChildAt(index).toString();
                              
                          }
                          popupChildText.text = text;
                          alertForm.getChildAt(1).dispatchEvent(new MouseEvent(MouseEvent.CLICK));
          //                var popupContainer:IChildList = (application.root as IChildList);
          //                PopUpManager.removePopUp(popupContainer.getChildAt( popupContainer.numChildren - 1 ) as IFlexDisplayObject);

                      }
                  
          ]]>
              
          </mx:Script>    
                
          <mx:Button id="simpleAlertShower" click="showSimpleAlert();" label="Click Me"/>
                
          <mx:Text id="popupChildText"/>
              
          </mx:Application>
          【關(guān)于TitleWindow】
          TitleWindow作為彈出窗口的時(shí)候,跟Alert處的位置沒什么區(qū)別,我想說的是TitleWindow的closeButton在哪里。下面這個(gè)同樣不好讀的程序可以幫助你分析TitleWindow或者說Panel里面都有用什么,以及closeButton在哪,其實(shí)就是在rawChildren的最后一個(gè)。
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
              
          <mx:Script>
                  
          <![CDATA[
                      import mx.containers.TitleWindow;
                      import mx.core.IChildList;
                      import mx.core.UIComponent;
                      import mx.core.IFlexDisplayObject;
                      import mx.managers.ISystemManager;
                      import mx.managers.PopUpManagerChildList;
                      import mx.managers.PopUpManager;
                      import mx.controls.Alert;
                      import mx.events.CloseEvent;
                      import mx.core.Singleton;
                      import mx.managers.IPopUpManager;
                      
                      private function showSimpleAlert():void{
                          var popUpWindow:TitleWindow = TitleWindow(PopUpManager.createPopUp(this,TitleWindow,true));
                          popUpWindow.width = 400;
                          popUpWindow.height = 300;
                          popUpWindow.visible = true;
                          popUpWindow.showCloseButton = true;
                          var myTimer:Timer = new Timer(2000, 1);
                             myTimer.addEventListener("timer", timerHandler);
                             myTimer.start();    
                      }
                      
                      private function alertCloseHandle(event:CloseEvent):void{
                          simpleAlertShower.label = event.detail.toString();
                      }
                      
                      private function timerHandler(event:TimerEvent):void{
                          var text:String = "elements:";
                          var sm:ISystemManager = (Application.application.root as ISystemManager);
                          text+=sm.numChildren.toString();
                          text+=";\n modalWindows:";
                          text+=sm.numModalWindows.toString();
                          text+="\n top children: ";
                          for(var index:int = 0; index < sm.numChildren; index++)
                          {
                              text += "\n" + index + " : ";
                              text += sm.getChildAt(index).toString(); 
                          }
                          
                          var titleWindow:TitleWindow = sm.getChildAt(sm.numChildren - 1) as TitleWindow;
                          text += "\n popUpWindowrawChildren:" + titleWindow.rawChildren.numChildren;
                          for(var index:int = 0; index < titleWindow.rawChildren.numChildren; index++)
                          {
                              text +="\n" + titleWindow.rawChildren.getChildAt(index).toString();
                          }
                          var titleBar:UIComponent = (titleWindow.rawChildren.getChildAt(2) as UIComponent);
                          text += " has " + titleBar.numChildren;
                          text += "\n" + titleBar.getChildAt(3).toString();
                          
                          popupChildText.text = text;
          //                var popupContainer:IChildList = (application.root as IChildList);
          //                PopUpManager.removePopUp(popupContainer.getChildAt( popupContainer.numChildren - 1 ) as IFlexDisplayObject);
                          PopUpManager.removePopUp(titleWindow);
                      }
                  
          ]]>
              
          </mx:Script>    
                
          <mx:Button id="simpleAlertShower" click="showSimpleAlert();" label="Click Me"/>
                
          <mx:Text id="popupChildText"/>
              
          </mx:Application>


          posted @ 2008-03-17 00:22 咖啡屋的鼠標(biāo) 閱讀(2523) | 評(píng)論 (0)編輯 收藏

          OpenParty與RIAmeeting個(gè)人參與回顧

          最近的一個(gè)月事情真不少,公司內(nèi):要過CMMI,公司外:活動(dòng)接連著就有倆。接連參加了OpenParty和RIAMeeting之后覺得自己應(yīng)該總結(jié)一下了。

          上次的OpenParty質(zhì)量奇高。從那里學(xué)到了很多知識(shí),從gigix那里學(xué)到基礎(chǔ)的價(jià)值,在session的學(xué)習(xí)中還順帶自己想明白了迪米特法則的價(jià)值,了解了壞的制度是如何作用于公司氛圍的,親眼目睹到設(shè)計(jì)欠債的后果,以及補(bǔ)救僅能做到的程度有多高。從Tin哪里學(xué)到界面開發(fā)過程方面的一些非常優(yōu)秀思路,今天參加RIAmeeting的時(shí)候還討論了更細(xì)節(jié)的開發(fā)人員和設(shè)計(jì)人員配合的問題。這次的好topic太多了,只能挑著最感興趣的聽了,次感興趣的其實(shí)也很想去聽得,比如精益、CMMI & Agile、巨富客戶端,這一說起來好像哪個(gè)都想聽了,但只有在好看簿上看了,這種不完美別有一番吸引力,還有些沒選上的topic其實(shí)也不錯(cuò)的。希望下次有機(jī)會(huì)聽到。Open Party給我的東西太多了,每次想說的時(shí)候就被教育一次自己的語言能力有多貧乏。

          這次RIAmeeting也不錯(cuò),見到一些老朋友,也見到了沒有見過面的朋友。而topic呢,說實(shí)話,我已經(jīng)過了對(duì)技術(shù)普及的topic感興趣的階段了。所以兩個(gè)主要的topic都不是很吸引我,而這半途蹦出來的一位90后的小兄弟貢獻(xiàn)的topic給了我不小的震撼,他的作品雖然還有點(diǎn)稚嫩,但是可以看到很多創(chuàng)新點(diǎn)和一些真正的產(chǎn)品級(jí)設(shè)計(jì)。看到了一個(gè)如此鮮活,沒有被教育體制的“壓模機(jī)”殘害過的頭腦,感覺真是不錯(cuò)。(腦子中閃過“炸學(xué)校”短片里的那個(gè)壓模機(jī))一年、3萬行代碼,高二,這幾個(gè)關(guān)鍵加在一起,讓我覺得這個(gè)小兄弟的時(shí)間管理能力應(yīng)該不錯(cuò),于是問了一下,他還真給出了一個(gè)時(shí)間表,很有意思。會(huì)后的討論也很有趣,大家就美工與開發(fā)人員如何配合展開了很深的討論。那對(duì)美工與程序員的搭檔給我留下深刻印象,他們說的一些話體現(xiàn)出來態(tài)度讓我仿佛看到了一個(gè)優(yōu)秀的團(tuán)隊(duì),尤為欣賞,尤其那位美工那種追求更高效交流以期減少浪費(fèi)的“敏捷”態(tài)度在美工中真的是非常少見。(說實(shí)話,程序員中這種態(tài)度也不忒多見)

          兩個(gè)活動(dòng)都參加之后,個(gè)人比較來看,Open Party比RIAmeeting精彩,大概是因?yàn)镽IAMeeting更像是Flex的傳播活動(dòng),偏向普及,缺乏高級(jí)點(diǎn)的交流,而OpenParty則是從業(yè)人員的經(jīng)驗(yàn)交流,門檻稍微高一點(diǎn)。其實(shí)對(duì)于線下的交流我還是比較喜歡門檻高一點(diǎn),那樣比較過癮。



          posted @ 2008-03-09 00:34 咖啡屋的鼠標(biāo) 閱讀(430) | 評(píng)論 (0)編輯 收藏

          Flex功能性測(cè)試工具:Fluorida 0.0.1發(fā)布

          Fluorida的說明Fluorida是一種Flex/Flash功能性測(cè)試工具。它如真實(shí)用戶一般操作Flash,并且允許測(cè)試者使用簡(jiǎn)單而又不失表達(dá)力的DSL編寫測(cè)試用例。

          【花絮】
          在OpenParty上我們講解了FunFX之后。熊節(jié)跟我說他剛才也做了一個(gè)自動(dòng)化測(cè)試的框架。雖然我已經(jīng)把敏捷和熊節(jié)這兩個(gè)詞關(guān)聯(lián)起來很久了,但是這等速度還是讓我吃了一驚(導(dǎo)致現(xiàn)在我還在懷疑是不是我聽錯(cuò)了,經(jīng)證實(shí)。。。我聽錯(cuò)了)。那個(gè)框架當(dāng)天就被熊節(jié)發(fā)到了google code上,當(dāng)時(shí)他的名字是:Fluorine,還寫了一句很有趣的話:Fluorine makes your teeth FLASH。可惜這個(gè)名字有人用過了,現(xiàn)在改名為Fluorida。

          Fluorida的原理說白了很簡(jiǎn)單,使用dispatchEvent的方式模擬操作,若干個(gè)月之前我也這么干過,當(dāng)時(shí)是對(duì)這種方式的可行性表示懷疑的。在后來在Google code上下載了代碼并閱讀一遍之后,我開始覺得這個(gè)做法沒啥問題。而且相比FunFx,他不需要Flex程序員再去學(xué)Ruby。今天很榮幸的加入到這個(gè)項(xiàng)目組中。
          如今預(yù)覽版--0.0.1版已經(jīng)發(fā)布,廣泛征集回饋和建議中,有任何建議可以到
          http://code.google.com/p/fluorida/wiki/Announcement001
            發(fā)表評(píng)論

          ======
          主要相關(guān)報(bào)道及文章:
          http://www.matrix.org.cn/resource/news/7cf0239a-ebe6-11dc-91da-b599c3ba16ef.html
          http://dreamhead.blogbus.com/logs/16533990.html
          http://gigix.thoughtworkers.org/2008/3/6/announcement-fluorida-0-0-1

          項(xiàng)目地址:
          http://code.google.com/p/fluorida/

          posted @ 2008-03-07 12:08 咖啡屋的鼠標(biāo) 閱讀(1475) | 評(píng)論 (2)編輯 收藏

          界限

          這世界上有很多界限,有些是看的見得,有些是看不見的。看得見的界限我們想辦法總能突破,而看不見的,則無法可想。
          最可悲的是當(dāng)看到本來看不見界限的時(shí)候,剎那的無力感會(huì)將自己的一切驕傲粉碎。
          我很喜歡《褻瀆》的一個(gè)詞--位面。不一樣強(qiáng)大的人們就像活在不同的位面。在一個(gè)位面里,沒什么障礙是無法突破的,可位面間的界限,有時(shí)候你連他在哪都不知道。何談突破。


          posted @ 2008-03-06 15:03 咖啡屋的鼠標(biāo) 閱讀(322) | 評(píng)論 (0)編輯 收藏

          想在Flex平臺(tái)上學(xué)習(xí)設(shè)計(jì)模式的人注意啦

          像我這樣從Java平臺(tái)進(jìn)入Flex平臺(tái)的人經(jīng)常會(huì)為ActionScript不容易實(shí)現(xiàn)某些設(shè)計(jì)模式(比如單例)而煩惱,跟我一樣煩惱的人有福了,這里有一本很棒的書:
          http://www.aygfsteel.com/Files/tj19832/flex/Adobe.Press.Advanced.ActionScript.3.with.Design.Patterns.Nov.2006.rar

          這本書一定要讀,一定要讀,一定要讀,不然開發(fā)的時(shí)候會(huì)犯很多錯(cuò)誤,走很多彎路,產(chǎn)生很多錯(cuò)誤的認(rèn)識(shí)。后果很嚴(yán)重的:P


          posted @ 2008-03-05 10:21 咖啡屋的鼠標(biāo) 閱讀(2040) | 評(píng)論 (5)編輯 收藏

          納米技術(shù)概念機(jī)

          從來沒有想過把“炫”這個(gè)詞跟諾基亞的產(chǎn)品聯(lián)系在一起,通常這個(gè)詞都是給apple之類的公司的,但是在開始看這個(gè)視頻不到30秒,我的觀念就被徹底顛覆了。據(jù)說,七年之后,這款手機(jī)將上市。期待啊。。。。。


          posted @ 2008-03-02 23:48 咖啡屋的鼠標(biāo) 閱讀(306) | 評(píng)論 (0)編輯 收藏

          開心、充實(shí)、腦子累

          這就是我參加完第二次OpenParty的感覺,這次的topic有十幾個(gè)。很可惜最后進(jìn)行的只能有9個(gè)。我跟Thoughtworks的韓鍇一起準(zhǔn)備了一個(gè)關(guān)于Flex的session。沒想到還得到最多人的支持。虛榮心得到極大滿足,咔咔。
          坐在里面,參與或主持Session,感受知識(shí)的傳播與再造,那真的是一件非常快樂的事情。我可以感受到自己的成長(zhǎng)和別人的成長(zhǎng)。往大了說可以感覺到中國(guó)的軟件界的成長(zhǎng),因?yàn)榇蠹叶际莵碜圆煌墓荆却蠹規(guī)еR(shí)回到公司,又會(huì)對(duì)公司成長(zhǎng)產(chǎn)生作用也就一點(diǎn)點(diǎn)得對(duì)業(yè)界產(chǎn)生了作用。就像蝴蝶效應(yīng),雖然這是一只頗大個(gè)的蝴蝶。(PS:但是出了門沒多遠(yuǎn)就看到Police坐著車慢游,頓時(shí)緊張是不是查證的,唉有推動(dòng)力就有障礙么)
          整個(gè)活動(dòng)是idea的碰撞、攪拌。這種感覺遍布各個(gè)角落,經(jīng)常看到session已經(jīng)結(jié)束,但是思維的碰撞仍在繼續(xù)。甚至這一期的OpenParty結(jié)束了,他的效果卻才剛剛開始,一直綿延到很久以后。在那種氛圍下,頭腦在一刻不停的思考、汲取知識(shí),同時(shí)不自覺的就想去跟人交流。這半天過得是非常充實(shí)的。
          也正是因?yàn)榍懊娴脑颍然氐郊抑校d奮勁稍微過去之后,大腦似乎才剛剛意識(shí)到累了。其表現(xiàn)就在于一回想白天的某一個(gè)topic,腦子里就爆炸式得蹦出一堆東西,有自己的想法,有別人的話,甚至當(dāng)時(shí)的場(chǎng)景,一遍遍像過電影一樣閃現(xiàn),最終崩潰,所有的畫面連不成一個(gè)有序的思維。于是打開優(yōu)酷看美劇,同時(shí)上網(wǎng)跟人聊天,讓大腦停止思考。這招百試百靈,這次也不例外。直到現(xiàn)在,好象才從中稍微的恢復(fù)過來。可也想睡覺了。。。。。。

          posted @ 2008-03-02 01:18 咖啡屋的鼠標(biāo) 閱讀(352) | 評(píng)論 (0)編輯 收藏

          如果你和我一樣裝不上Flex Builder 3

          我的操作系統(tǒng)是Vista Home Basic版,Adobe網(wǎng)站上有兩個(gè)地方下載Flex Builder。我從http://www.adobe.com/go/flex_trial下載的怎么也裝不上。而從https://www.adobe.com/cfusion/tdrc/index.cfm?product=flex下載的就能裝(這個(gè)地址需要你有Adobe的id,注冊(cè)一個(gè)就好)。雖然解壓出來也是前一個(gè)的文件,但就是能裝,實(shí)在是有點(diǎn)暈。不知道是不是vista都這德行,反正跟我一樣裝不上Flex Builder3的話,去后一個(gè)地址下載就可。

          posted @ 2008-02-28 11:11 咖啡屋的鼠標(biāo) 閱讀(683) | 評(píng)論 (0)編輯 收藏

          正欲燎原的Flex

          最近,Adobe發(fā)布了Flex 3和AIR 1.0。宣布一個(gè)新時(shí)代的正式來臨。Flex的時(shí)代。
          回顧多年以前,當(dāng)它僅僅是Flash的時(shí)候,那時(shí)的它也可以運(yùn)行在網(wǎng)頁中和桌面上,大家覺得它很漂亮,僅此而已,那時(shí)的它只是個(gè)非常可愛的小玩具。不要說巨人微軟沒有注意到它身上隱藏的潛力,就連他現(xiàn)在的主人Adobe也對(duì)它不感興趣。也正是這樣,他在每一個(gè)平臺(tái)上都很好的生存了下來。
          在這個(gè)世界上,有另外一個(gè)技術(shù),叫做Java。它以跨平臺(tái)為理念,努力打造一個(gè)統(tǒng)一的軟件世界。在后臺(tái),它取得了無與倫比的成功,可是在前臺(tái),它總是不那么順利。我,就生活在這樣的世界里。
          日子一天天過去,F(xiàn)lex迎來了3.0。FlashPlayer9也占據(jù)了世界上94%的PC(如果算上以前的版本,這個(gè)占有率逼近100%)。而相比只下,JRE之占據(jù)了84.6%,在蘋果和其他操作系統(tǒng)的沖擊下,windows也降到了90%以下。毫不客氣的說,F(xiàn)lashPlayer已經(jīng)是世界上覆蓋率最大的運(yùn)行環(huán)境。昔日的星星之火開始呈現(xiàn)燎原之勢(shì)。
          今年,毫無疑問會(huì)有很多的開發(fā)人員轉(zhuǎn)向或者開始接觸Flex,中國(guó)的Flex資源還比較貧乏,不過已經(jīng)有一群人在努力了。雖然已經(jīng)有了AnyFlex,RIAchina之類的論壇,但是相比較傳統(tǒng)的論壇,下面的幾個(gè)更有特色:
          Kenshin為首的人做的RXNA是一個(gè)非常棒的Flex相關(guān)RSS信息整合站,類似國(guó)外的mxna
          閑云野鶴則建造了一個(gè)Flex搜索引擎計(jì)劃:http://blog.eshangrao.com/index.php/2007/02/27/352-googleflex
          以及同樣是他搞得Flex Wiki計(jì)劃:http://blog.eshangrao.com/index.php/2007/05/12/390-flexwikiflex
          還有促進(jìn)線下交流的RIAmeeting
          有聲有色的活動(dòng)和網(wǎng)站正在一點(diǎn)點(diǎn)多起來,今年將是Flex星火燎原的一年。我對(duì)此充滿信心。



          posted @ 2008-02-28 00:52 咖啡屋的鼠標(biāo) 閱讀(2102) | 評(píng)論 (11)編輯 收藏

          好吧,也來跟風(fēng)

          所有關(guān)注Flex的博客上都在寫這個(gè),那我也跟風(fēng)好了。
          Adobe發(fā)布Flex 3和AIR 1.0的正式版。

          在這個(gè)日子里我在干啥捏?配CruiseControl,嘗試將持續(xù)集成引入我們部門,順便,考慮CI in Flex的解決方案。

          posted @ 2008-02-25 20:25 咖啡屋的鼠標(biāo) 閱讀(403) | 評(píng)論 (0)編輯 收藏

          無題

          我人生的道路上,我在做的事情有意義嗎?不知道。我的幸福是什么呢?不知道。我如此努力會(huì)不會(huì)是無謂的付出呢?不知道。我只知道,有一種力量在逼迫我行動(dòng),我不知道是在向前還是在向后。它讓我很累,很充實(shí),同時(shí)很失落。我今天的努力可能在明天被證明是無謂的。我正在做的事情也可能會(huì)在將來被我意識(shí)到是沒有意義的。我的幸福,可能早已被我錯(cuò)過。但是我依然不能停止我行進(jìn)的步伐,向著幻想中的希望前進(jìn)。這,就是我的人生吧。

          posted @ 2008-02-24 14:52 咖啡屋的鼠標(biāo) 閱讀(361) | 評(píng)論 (1)編輯 收藏

          部署wikipedia

          今天應(yīng)用維基百科的程序搭建了一個(gè)wiki,想架設(shè)知識(shí)庫的伙計(jì)們可以參考
          部署方式如下:

          下載Apache2.2,相關(guān)地址:http://httpd.apache.org/  windows下要下載msi那個(gè)版本。雙擊將其安裝在機(jī)器上,我選擇的目錄是:C:\Apache2.2。如果不想使用80端口,在安裝過程中設(shè)置
          下載php5,相關(guān)地址:http://www.php.net/downloads.php  我下載的是windows的zip包那個(gè)版本,將其解壓在c:\php下。
          下載mysql,這個(gè)就不廢話了。

          安裝完后,將C:\Apache2.2\conf下的httpd.conf打開,在LoadModule一組處加上LoadModule php5_module "c:/php/php5apache2_2.dll",在AddType處添加的
          AddType application/x-httpd-php .php 在LoadModule下面加上PHPIniDir "C:/php"。把"c:/php"下的"php.ini-recommended"文件復(fù)制一份,改名為"php.ini",在php.ini中將
          extension=php_mysql.dll
          extension=php_mysqli.dll
          兩行前的;去掉。
          將extension_dir = "./"改為extension_dir = "C:/PHP/ext"

          下載wikipedia:http://sourceforge.net/projects/wikipedia/
          將所有文件拷到"C:\Apache2.2\htdocs"下
          運(yùn)行開始菜單里Apache Http Server下的Start Apache in Console

          打開瀏覽器,輸入:http://localhost:8080/index.php,在頁面上點(diǎn)擊 set up the wiki,頁面跳轉(zhuǎn)到:http://localhost:8080/config/index.php

          輸入wiki name,和Admin username的名稱(默認(rèn)是WikiSysop)和密碼

          配置mysql的屬性,Database name,Database host,DB username,DB password還有超級(jí)用戶的用戶名密碼

          全部設(shè)置完畢后點(diǎn)擊 install mediaWiki

          完成之后,系統(tǒng)會(huì)提示你

          Installation successful! Move the config/LocalSettings.php file into the parent directory, then follow this link to your wiki.

          將"C:\Apache2.2\htdocs"下的config/LocalSettings.php拷貝到父目錄里即可
          ===================
          以上部署過程在vista下測(cè)試通過。那些安裝路徑都可以換掉,但是不要安裝在Programe Files下。如果系統(tǒng)安全性設(shè)置太高的話,最后可能不生成
          LocalSettings.php

          posted @ 2008-02-16 00:44 咖啡屋的鼠標(biāo) 閱讀(2040) | 評(píng)論 (1)編輯 收藏

          幫人打招聘啟示【Flex、Java、美工】

          硅谷創(chuàng)業(yè)公司 BeyondMedia 高薪招聘  (北京)

          BeyondMedia 是位于美國(guó)硅谷的一家提供媒體服務(wù)的互聯(lián)網(wǎng)公司, 主要為美國(guó)所有的媒體和客戶提供一個(gè)中間平臺(tái).
          現(xiàn)在公司處于快速成長(zhǎng)期, 希望在國(guó)內(nèi)發(fā)展一個(gè)研發(fā)中心, 目前正在招聘研發(fā)人才.

          本公司是一家正在快速發(fā)展的互聯(lián)網(wǎng)公司, 公司為員工提供良好的工作環(huán)境, 具有吸引力的薪水以及股票期權(quán), 履行正規(guī)的保險(xiǎn)權(quán)益.



          有意者,請(qǐng)發(fā)送中英文簡(jiǎn)歷到 cnscud@gmail.com 郵件, 并請(qǐng)注明期望薪水,外語情況等, 謝謝.

          以下要求僅供參考.
          ==============================
          ====

          高級(jí)Flash工程師

          主要工作職責(zé):
             * 和整個(gè)開發(fā)/設(shè)計(jì)團(tuán)隊(duì)協(xié)作
             * 完成相關(guān)的Flash設(shè)計(jì), 制作, 維護(hù)
             * 其他相關(guān)的設(shè)計(jì)工作
             * 編寫相關(guān)文檔

          基本要求:
             * 3年+工作經(jīng)驗(yàn)
             * 美術(shù)設(shè)計(jì)專業(yè)或有相關(guān)從業(yè)經(jīng)驗(yàn)
             * 熟悉Flash制作
             * 熟悉Flash編程 (Flex, ActionScript等)
             * 熟悉JavaScript, Html, XML
             * 有網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)更佳

          個(gè)人:
             * 能熟練閱讀英文文檔, 能編寫英文文檔更佳
             * 良好的溝通能力, 能與團(tuán)隊(duì)緊密協(xié)作
             * 富有責(zé)任感
             * 能積極主動(dòng)完成工作
             * 善于學(xué)習(xí)

          ===============================================

          高級(jí)網(wǎng)站美術(shù)設(shè)計(jì)師

          主要工作職責(zé):
             * 和整個(gè)開發(fā)/設(shè)計(jì)團(tuán)隊(duì)協(xié)作
             * 了解整個(gè)平臺(tái)網(wǎng)站的結(jié)構(gòu), 對(duì)網(wǎng)站進(jìn)行設(shè)計(jì), 實(shí)現(xiàn)和維護(hù)
             * 編寫相關(guān)文檔


          基本要求:
             * 3+年工作經(jīng)驗(yàn)
             * 美術(shù)設(shè)計(jì)專業(yè)或相關(guān)從業(yè)經(jīng)驗(yàn)
             * 熟悉Photoshop, Dreamweaver等相關(guān)軟件的使用
             * 熟悉網(wǎng)頁的制作編輯, Html, CSS. (Div+Css方式)
             * 了解歐美網(wǎng)站風(fēng)格者優(yōu)先考慮
             * 熟悉Javascript更佳
             * 熟悉Flash制作更佳

          個(gè)人:
             * 能熟練閱讀英文文檔, 能編寫英文文檔更佳
             * 良好的溝通能力, 能與團(tuán)隊(duì)緊密協(xié)作
             * 富有責(zé)任感
             * 能積極主動(dòng)完成工作
             * 善于學(xué)習(xí)
          高級(jí)J2EE軟件工程師

          工作職責(zé):
           * 和開發(fā)/設(shè)計(jì)團(tuán)隊(duì)進(jìn)行協(xié)作, 了解系統(tǒng)需求,架構(gòu)和設(shè)計(jì)
           * 設(shè)計(jì), 實(shí)現(xiàn)和維護(hù)系統(tǒng)平臺(tái)
           * 編寫相關(guān)文檔

          技術(shù)要求:
           * 4年+ 的J2EE應(yīng)用開發(fā)經(jīng)驗(yàn)
           * 熟悉Struts2, Webwork或類似MVC框架
           * 熟悉Spring和Hibernate
           * 熟悉Javascript, Html, Jsp
           * 有Ajax的使用經(jīng)驗(yàn)更佳
           * 數(shù)據(jù)庫方面的經(jīng)驗(yàn), 例如數(shù)據(jù)庫設(shè)計(jì)和SQL
           * 熟悉Mysql, Oracle或者其他數(shù)據(jù)庫
           * 有Web services的使用經(jīng)驗(yàn)更佳
           * 熟練使用Java IDE, 例如Idea, Eclipse
           * 了解Weblogic, Tomcat, JBoss或Resin的部署
           * 熟悉Linux系統(tǒng)更佳
           * 有網(wǎng)頁制作編輯(美工)經(jīng)驗(yàn)更佳

          個(gè)人要求:
                 * 能熟練閱讀英文文檔, 能編寫英文文檔更佳
                 * 良好的溝通能力, 能與團(tuán)隊(duì)緊密協(xié)作
                 * 富有責(zé)任感
                 * 能積極主動(dòng)完成工作
                 * 善于學(xué)習(xí)


          ===============================================

          J2EE軟件工程師

          工作職責(zé):
           * 和開發(fā)/設(shè)計(jì)團(tuán)隊(duì)進(jìn)行協(xié)作, 了解系統(tǒng)需求,架構(gòu)和設(shè)計(jì)
           * 設(shè)計(jì), 實(shí)現(xiàn)和維護(hù)系統(tǒng)平臺(tái)
           * 編寫相關(guān)文檔

          技術(shù)要求:
           * 2年+ 的J2EE應(yīng)用開發(fā)經(jīng)驗(yàn)
           * 熟悉Struts2, Webwork或類似MVC框架
           * 熟悉Spring和Hibernate
           * 熟悉Javascript, Html, Jsp
           * 有Ajax的使用經(jīng)驗(yàn)更佳
           * 數(shù)據(jù)庫方面的經(jīng)驗(yàn), 例如數(shù)據(jù)庫設(shè)計(jì)和SQL
           * 熟悉Mysql, Oracle或者其他數(shù)據(jù)庫
           * 熟練使用Java IDE, 例如Idea, Eclipse

          個(gè)人要求:
                 * 能熟練閱讀英文文檔, 能編寫英文文檔更佳
                 * 良好的溝通能力, 能與團(tuán)隊(duì)緊密協(xié)作
                 * 富有責(zé)任感
                 * 能積極主動(dòng)完成工作
                 * 善于學(xué)習(xí)

          posted @ 2008-02-15 13:09 咖啡屋的鼠標(biāo) 閱讀(510) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共4頁: 上一頁 1 2 3 4 下一頁 
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(15)

          隨筆分類(52)

          隨筆檔案(76)

          文章分類(3)

          文章檔案(4)

          新聞檔案(1)

          收藏夾

          Flex

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 株洲县| 孟村| 齐齐哈尔市| 马龙县| 贵德县| 巍山| 德江县| 怀集县| 南京市| 桃园市| 娄底市| 游戏| 安福县| 石屏县| 新干县| 遂平县| 灵武市| 台湾省| 井陉县| 偏关县| 通州市| 新田县| 游戏| 大田县| 华蓥市| 鲜城| 彩票| 寻甸| 澳门| 定边县| 龙胜| 鹤庆县| 新乡县| 大丰市| 文化| 郧西县| 改则县| 尚志市| 西宁市| 襄樊市| 南充市|