隨筆-88  評論-77  文章-48  trackbacks-0
           

          演講人:浙大高分子物理鄭強教授
          地點: 浙江圖書館報告廳
            精彩語錄節選:
            “在中國這個發展中國家,你能建10所世界一流大學,那美國有多少所?日本有多少所?現在的實際狀況是:世界上前200所大學,中國一所都排不進!在亞洲能排出幾所?我到國外去看了以后,感到要將浙大建成世界一流大學就像共產主義理想.“
            “以前說“無知無畏“,現在卻是“無知才無畏“,許多企業把浙江省技術監督局、科委的人請來吃一頓飯,喝一點酒,他就給你簽個字,再把我們這些教授脅迫到那里去,給你蓋個章,然后就是“填補國內外空白“、“國際先進水平“,寫論文則是“國際領先水平的研究成果“、“首次科學發現“等等,這都是目前非常嚴重的問題!作為一個大學教授,我深深地為此擔憂!這不是我們的責任,是我們的領導無知,是他們倡導了這個主流.我知道在座的處長或老總日子很難過,因為你們不寫這樣的報表,就拿不到錢,項目就得不到批準.教授也同樣如此,天天寫報告,而不是在實驗室靜下心來好好搞研究,這是很嚴重的!“
            “我們國家的現實和發展就是這樣:凡是依賴不成的,我們自己都能搞得像模像樣,比如二彈一星;凡是能夠引進的,就都搞不成.......現在很多合資企業就這樣,賣點東西,而沒有去考慮這些深層次的東西.殊不知,這就是社會的惡性循環!“
            “我認為:語言、計算機就是工具.中國的外語教授講英語還不如美國賣菜的農民!怎么看待這個問題?日本博士、德國教授說不出英語的多得是!我們怎么能說一個人不會說英語就是文盲呢?語言就是一個工具!你沒有那個環境,他怎么能講這個語言呢?......如果我是教育部長,我要改革二件事:第一,取消六級考試,你一個研究生連中文一級都不及格,你英文考六級干什么呢?看看研究生寫得論文,自己的民族文化都沒有學好,天天考英語──打勾:托福打勾,GRE打勾,英文考出很高的分,可哪個寫的英文論文在我面前過得了關呢?過不了關!這樣培養出來的人能干什么?自己搞的專業一點都沒學好!......說不會計算機就是文盲,這又是一個誤區!我現在是教授,我顧不上搞計算機!“
            “你看我,從高中開始學英語,大學學,碩士學,博士學,花了我多少精力!你說中國人怎么做得出高科技的研究成果?我這幾天就教訓我手下的幾位女學生,問她們在干什么,看不到人影,一天到晚考這樣、考那樣的,到美國去干什么?在國內要干的事多著呢!你整天考英語,美國人連報個名都要收你們的錢,日本人也是如此,中國學生到日本去要交手續費,到日本留學是為日本人打工,好不容易掙點錢交了學費,讀完博士在日本的公司就職,當勞動力,掙了一筆錢后要回國了就買了家電,把錢全給了日本人.你們都沒有注意這件事,這里面都是經濟問題.這就是素質教育到底是什么.“
            “中小學的教育就是聽話,老師管干部,干部管同學,孩子們都學會了成年化的處世方式,這是害人啊!這樣強迫性地做了一些好事后,沒有把做好事與做人準則結合起來去培養,而只學會了拍馬屁、討老師喜歡、說成人話.上次電視上就曾經播出,一個小孩得了個獎,主詩人問他最愿意說什么,他說:“我最愿意跟江爺爺說:我向你報告!““江爺爺“是誰?還不是老師教的!孩子們在中小學活得很累,到了大學就沒人管了,所以就要玩、就要談戀愛.
            “我們有很多同學成績好,卻什么都做不了.在我們大學像我這種程度的人,招博士生是從來不看成績的,成績算什么!現在我從事的這個領域在中國有叁個杰出的人才,當初在讀研究生時都補考過,而成績考得好的幾個人卻都跑到美國去賣中藥了,這說明了什么問題?作老板的可不能這樣啊!......人才的梯隊一定要合理,而不要認為教授就是萬能的、博士就是萬能的.中國的教育體系就是讓每一個老百姓都充滿希望和理想,教育孩子們要樹立遠大的理想.實際上,人的能力是不一樣的,掃地能掃好,也應該受到尊重;打掃廁所能打掃干凈,也應該受到尊重,不能動不動就要高學歷.我要提醒的是:在國外可不是這樣,美國、日本的博士就很難找到工作,為什么?因為老板心疼錢,招了博士要給他高工資,而他能做什么用呢?這是個具體問題.“
            “科技到底該干什么?高科技到底該干什么?如果我是科技部長,該玩的就玩,就像陳景潤,他就是玩!陳景潤如果是處在今天的中國,他絕對是要去討飯的,因為他不會去搞產業化,他的英語也不好,他說話都不流利,中文都講不好,按現在“標準“,他是個文盲,還談什么教授!日本人就是喜歡美國人,我跟日本人說:你們這個民族愛誰,誰就要向你們扔原子彈.日本人就是喜歡黑人也不喜歡中國人.......我特別對我們的女教授、女同學說:在日本人面前一句日文都不要講,會也不要講;日本人一聽說你講英文,特別是看到中國女孩講英文,腿都要發軟,這是真的!“
            “中國人為什么這些年都往外跑,最重要的是要讓國民自己愛自己國家.......如果我是杭州的市長,我絕對不是狹隘的民族自尊心──如果杭州有什么災難,我就首先把杭州的老百姓安排在香格里拉,讓外國人在外面排隊!(掌聲!)這樣,你才會讓你的國民愛自己的國家!一個日本的農民跑到峨嵋山去玩,骨頭摔斷了,你就用中國空軍的直升飛機去救他,而在日本大學一名中國留學生在宿舍里死了7天才被發現;名古屋大學的一對中國博士夫婦和孩子誤食有毒磨菇,孩子和母親死了,父親則是重癥肝炎,在名古屋大學醫學院的門診室等了12個小時,也沒有一個日本教授來看望!而你們為什么還要這么友好,以為自己很大度,實際上是被人家恥笑,笑你的無知!你們這個民族*!我們不能這樣!我們的領導人跑到國外去訪問,看到有幾個人在歡迎他們,就感到挺有面子;而外國來了個什么人物,都是警車開道,這究竟是怎么回事?這讓我們中國人感到是自豪還是悲哀?所有這些,對教育工作來講,都是深層次的問題.所以我經常講,我作為一位自然科學工作者,我教育我的學生,首先是學會做人,沒有這些,你學了高分子,外語都是花架子,你不是一個完整的人!“
            “一個觀念或是一個問題:是不是技術越新越好?今天談的就都是提醒大家的......技術并不是越新越好,技術要有儲備.日本的企業現在賣的東西大都是10年或15年前的技術,好東西他不拿出來,他要等到現有的技術把成本收回并獲得盡可能高額的利潤以后才會拿出來.其次,我的對手什么時候推出新東西時,我才會出手.不要以為你今天好不容易搞了生產線,明天又有新的了,你的錢還沒賺到就換新的,有什么用?我這次到日本剛好談到懸浮列車──即使何先生在我也要說,這是中國人又在玩高新科技.懸浮列車目前在理論上都還不成熟.日本現在最完善,最經濟的就是新干線!
          從經濟和市場的概念來講,越先進的東西,風險越大,有可能得到的回報就越少!"

          ?

          posted @ 2006-05-19 14:23 崛起的程序員 閱讀(151) | 評論 (0)編輯 收藏
          java.lang.NoSuchFieldError: tokenTypeToASTClassMap
          ??????? at org.hibernate.hql.antlr.HqlBaseParser.buildTokenTypeASTClassMap(HqlBaseParser.java:4224)
          ??????? at org.hibernate.hql.antlr.HqlBaseParser.<init>(HqlBaseParser.java:107)
          ??????? at org.hibernate.hql.antlr.HqlBaseParser.<init>(HqlBaseParser.java:112)
          ??????? at org.hibernate.hql.ast.HqlParser.<init>(HqlParser.java:47)
          ??????? at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:42)
          ??????? at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:203)
          ??????? at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
          ??????? at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
          ??????? at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:422)
          ??????? at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:383)
          ??????? at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:286)
          很簡單:查看antlr.jar這個包,把它替換成與當前版本hibernate統一的antlr包,其實也就包的版本不同一所造成的。
          posted @ 2006-05-18 20:07 崛起的程序員 閱讀(846) | 評論 (0)編輯 收藏

          1、新建一個啟動畫面Window類
          1. java.awt.Window?windowSplash;

          2、調用prepareSplash()函數,初始化啟動界面
          1. ????private?void?prepareSplash()
          2. ????{
          3. ????????Toolkit?toolkit?=?Toolkit.getDefaultToolkit();
          4. ????????windowSplash?=?new?Window(?this?);
          5. ????????Image?image?=?toolkit.getImage(?"images"?+?File.separator?+?"splash.gif"?);
          6. ????????ImageCanvas?canvas?=?new?ImageCanvas(?image?);
          7. ????????windowSplash.add(?canvas,?"Center"?);
          8. ????????Dimension?scmSize?=?toolkit.getScreenSize();
          9. ????????int?imgWidth?=?image.getWidth(?this?);
          10. ????????int?imgHeight?=?image.getHeight(?this?);
          11. ????????windowSplash.setLocation(?scmSize.width2?-?(imgWidth2),?scmSize.height2?-?(imgHeight2)?);
          12. ????????windowSplash.setSize(?imgWidth,?imgHeight?);
          13. ????}

          3、在Application的JFrame類(主界面)中調用startSplash(),顯示啟動界面,然后初試
          化JFrame的各個可視化組件,初始化后臺數據庫等(如數據庫的連接)
          1. ????private?void?startSplash()
          2. ????{
          3. ????????windowSplash.setVisible(?true?);
          4. ????????windowSplash.toFront();
          5. ????}

          4、在所有的初始化工作完成之后,調用stopSplash()函數,停止顯示啟動畫面
          1. ????private?void?stopSplash()?{
          2. ????????windowSplash.dispose();
          3. ????}
          posted @ 2006-05-18 13:11 崛起的程序員 閱讀(276) | 評論 (0)編輯 收藏
          作者:金蝶中間件公司CTO袁紅崗
          不知不覺做軟件已經做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因為和我心目中真正的高手們比起來,還差的太遠。世界上并沒有成為高手的捷徑,但一些基本原則是可以遵循的。
            1. 扎實的基礎。數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果不掌握他們,很難寫出高水平的程序。據我的觀察,學計算機專業的人比學其他專業的人更能寫出高質量的軟件。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你再精通OOP,遇到一些基本算法的時候可能也會束手無策。
            2. 豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。另外,多看科幻電影也是一個很好的途徑。
            3. 最簡單的是最好的。這也許是所有科學都遵循的一條準則,如此復雜的質能互換原理在愛因斯坦眼里不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復雜的方案。
            4. 不鉆牛角尖。當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天。當我遇到難題的時候會去玩游戲,而且是那種極暴力的打斗類游戲,當負責游戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。
            5. 對答案的渴求。人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你才會付出精力去探索,即使最后沒有得到答案,在過程中你也會學到很多東西。
            6. 多與別人交流。三人行必有我師,也許在一次和別人不經意的談話中,就可以迸出靈感的火花。多上上網,看看別人對同一問題的看法,會給你很大的啟發。
            7. 良好的編程風格。注意養成良好的習慣,代碼的縮進編排,變量的命名規則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經清楚地表達了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
            8. 韌性和毅力。這也許是"高手"和一般程序員最大的區別。A good programming is 99 weat and 1ffee。高手們并不是天才,他們是在無數個日日夜夜中磨練出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個 10000以內的素數表,把它們全都抄下來,然后再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
            這些是我這幾年程序員生涯的一點體會,希望能夠給大家有所幫助
          posted @ 2006-05-16 14:35 崛起的程序員 閱讀(303) | 評論 (0)編輯 收藏
          創業者要遵循的5個基本做事方法

          對于想創業的人,我對他們的提醒是:不要被成功企業所編寫的創業故事所迷惑,因為那里講的都是一個企業成長過程中過五關斬六將的最精彩的部分。作為創業者,有5個很基本的做事方法你必須遵循。

          我鼓勵大家創業,但鼓勵大家創業不等于盲目創業。對于想創業的人,我對他們的提醒是:不要被成功企業所編寫的創業故事所迷惑,因為那里講的都是一個企業成長過程中過五關斬六將的最精彩的部分。你要用自己的頭腦去思考,去學習。作為創業者,有5個很基本的做事方法必須遵循:


          第一,一定要有激情和理念,你才能感染自己和其他人。在最困難的時候,在所有人絕望的時候,你要感染你的客戶,感染你的員工,感染你的合作伙伴……你要感染所有人!

          第二,要專注。別說小公司,大公司多元化也有失敗的例子,小公司更應該抓準一個點把它做深、做透。這樣才能積累所有的資源。小公司到處試驗,會讓你的企業耗盡很多資源。專注就是有所不為才能有所為,這點非常重要。

          3721堅持了6年,一直堅持做中文上網、中文搜索,我就做這一件事情;Google也是很專注,有了一定的積累以后才能橫向擴展。很多創業者都栽在不夠專注上,是因為他自己腦子里面沒有想清楚,今天在這兒打一口井,明天在那兒打一口井,最后哪兒也沒有挖出水,地面上只是留下了許多坑而已。你5個指頭都叉開和一個拳頭是不一樣的,專注就是你把所有的資源都凝聚在一個點上。

          第三是執行力,很多創業者很容易在這里摔跟頭。我見過很多人夸夸其談,估計他們創業,至少第一次肯定都不會成功,因為我覺得真正的創業者要少說多做,要把自己美妙的想法努力轉化成結果。

          創業者做事情著眼點要低,要現實。很多創業者去見風險投資人的時候,說起自己的事業都說得云山霧罩的,其實這樣會讓風險投資人根本不明白你在說什么。你只要踏踏實實地說你想做什么,這個東西能解決什么問題就可以了。

          想法只是一個開頭的方式,是不值錢的。我們坐在這兒,一個小時可以天馬行空,弄出幾十個想法來,腦子稍微一轉,你的思想已經在宇宙走了好幾個來回了—- 行動的成本才是最高的,對創業者來講要看自己是不是有這種經驗和執行力。同樣的想法兩個人同樣做,誰的執行力更強,誰的經驗更豐富,誰就更容易成功。

          第四,創業者還要有一種胸懷,就是所謂與時俱進的學習能力。我看到很多人創業不成功就是因為他們太自負,不能從成功人士那里學到一些優點,聽不進好的建議。很多創業者沒有經驗,沒有經驗不可怕,問題是你有沒有謙虛、開放學習的心態,使你不能與時俱進。很多創業者會陷入一個死循環,他們通常認為自己看得準,才是出手的前提;積累經驗越多,才能越看越準。但你沒經驗,又怎么可能看準?

          解決這個問題有辦法,時機不成熟,就不創業,先給別人打工。把公司讓我做的事情做好,提高自己的能力,逐步就知道創業的方向了。我不贊成年輕人剛畢業就創業,我認為他們還是應該在公司里踏踏實實干五六年,雖然是打工,實際上是公司在給你“繳”學費,你在不同的平臺通過積累經驗,這是任何老板剝奪不走的,只有積累這種經驗,你的創業能力才更高,才更有把握。我在方正工作時,從來沒有覺得自己是打工,我一直認為自己是在創業,因為我覺得是在積累自己的能力,積累自己的資源。客觀上,我對方正還是作了很多貢獻。我到雅虎還是一種創業的心態,我把雅虎的文化改成創業的文化,因此雅虎中國在2004年取得了很好的業績。保持良好的心態,這是你創業成功的前提。

          第五,不要盲目去模仿和抄襲大公司的做法。比如,很多人在新浪、搜狐做過,他出來就會不自覺按照大公司的做法建立一些規范制度等,但大公司為了穩妥,一般都比較慢。大公司為這個“慢”付得起代價,小公司不能用大公司的這種做事方法。我講過大象和兔子的故事:大象和駱駝3天不吃也沒事,但是新創業的公司像小兔子一樣,每一步都要跑得快,要到處找食。本來就是個兔子,卻以為自己是個大象,用大象的心態做事,在狼面前慢慢踱步,最后就會被狼吃掉。創業意味著你要有創業的做事方式。

          如果你跟大公司做一樣的事,他的實力很強,跟他比是沒有優勢的。因此,如果把整個產業畫成一張地圖,你可以看哪些領域被誰占了,誰有什么優勢。你應該找一個不在這張地圖上的事情去做。比如說,前幾年大家都不重視的搜索,現在就做起來了。創業公司應該踏踏實實把自己的事做好,不要在自己很小的時候就想要通吃,要顛覆,要滅掉誰,這是沒有意義的。小公司要學會跟大公司合作,要學會廣交朋友,在這個產業鏈跟別人合作,會使自己成功得更快一些。

          周鴻祎:1970年10月生于湖北,1995年畢業于西安交大管理學院系統工程系,獲碩士學位。曾就職方正集團,先后任研發中心副主任、事業部總經理等職。1998年10月,創建3721公司。2003年3721被雅虎收購,2004年3月出任雅虎中國總裁。2005年7月6日,宣布將于8月31日正式辭去雅虎中國總裁一職。9月1日,他將以投資合伙人的身份正式加盟IDGVC(國際數據集團風險投資基金)。

          posted @ 2006-05-16 10:53 崛起的程序員 閱讀(228) | 評論 (0)編輯 收藏
          Eclipse Communication Framework (ECF)? 是一個新的ECLIPSE項目,目的是為了提供一個開源的通訊框架,讓開發者可以更容易開發出通訊相關的項目。

          IBM的文章Getting started with the Eclipse Communication Framework 介紹了ECF,同時告訴我們如何開始使用ECF,同時還提供了一個基于Yahoo IM 的例子。

          Getting started with the Eclipse Communication Framework

          http://www.ibm.com/developerworks/opensource/library/os-ecl-commfwk/?ca=dgr-jw22ECF

          下載地址
          http://www.eclipse.org/ecf/downloads.html
          引用頁 http://www.eclipse.org/downloads/download.php?file=/technology/ecf/org.eclipse.ecf.sdk-0.8.0.S20060507.zip

          安裝完畢插件后,起服務目錄在
          $:\eclipse\features\org.eclipse.ecf.serverfeature_0.8.0\bin
          startserver.cmd
          然后打開eclipse 菜單ECF鏈接選擇協議ecf generic 后設置服務器url例如http://localhost:3282/server,輸入別名
          進入強大的聊天室.讓我們一起XP?編程吧

          posted @ 2006-05-12 17:41 崛起的程序員 閱讀(1060) | 評論 (0)編輯 收藏

          一、6sigma管理的來源?

          六西格瑪(6σ或SixSigma)最早作為一種突破性的質量管理戰略在八十年代末在摩托羅拉公司成型并付諸實踐,三年后該公司的六西格瑪質量戰略取得了空前的成功:產品的不合格率從百萬分之6210(大約四西格瑪)減少到百萬分之32(5.5西格瑪),在此過程中節約成本超過20億美金。隨后即有德儀公司和聯信公司(后與霍尼維爾合并)在各自的制造流程全面推廣六西格瑪質量戰略。但真正把這一高度有效的質量戰略變成管理哲學和實踐,從而形成一種企業文化的是在杰克·韋爾奇領導下的通用電氣公司。?

          該公司在1996年初開始把六西格瑪作為一種管理戰略列在其三大公司戰略舉措之首(另外兩個是全球化和服務業),在公司全面推行六西格瑪的流程變革方法。而六西格瑪也逐漸從一種質量管理方法變成了一個高度有效的企業流程設計、改造和優化技術,繼而成為世界上追求管理卓越性的企業最為重要的戰略舉措,這些公司迅速運用六西格瑪的管理思想于企業管理的各個方面,為組織在全球化、信息化的競爭環境中處于不敗之地建立了堅實的管理和領導基礎。?


          二、6sigma管理的發展?

          繼摩托羅拉、德儀、聯信/霍尼維爾、通用電氣等先驅之后,幾乎所有的財富500強的制造型企業都陸續開始實施六西格瑪管理戰略。值得注意的是,一直在質量領域領先全球的日本企業也在九十年代后期紛紛加入實施六西格瑪的行列,這其中包括索尼、東芝、本田等。韓國的三星、LG也開始了向六西格瑪進軍的旅程。

          另一值得注意的現象是自通用電氣之后,所有公司都將六西格瑪戰略應用于組織的全部業務流程的優化,而不僅僅局限于制造流程。更有越來越多的服務性企業,如美國最大的花旗銀行、全球最大的B2C網站公司Amazon.com等也成功的采用六西格瑪戰略來提高服務質量、維護高的客戶忠誠度,所以六西格瑪已不再是一種單純的、面向制造性業務流程的質量管理方法,同時也是一種有效的提高服務性業務流程的管理方法和戰略。更有一些政府機構也開始采用六西格瑪的方法來改善政府服務。

          目前,美國公司的平均水平已從十年前的三西格瑪上下提高到了接近五西格瑪的程度,而日本則已超過了5.5西格瑪的水平。可以毫不夸張的說西格瑪水平已成為衡量一個國家綜合實力與競爭力的最有效的指標。?



          【關于6sigma管理的含義】?

          一、何謂6sigma?

          6Sigma的概念最早由摩托羅拉提出,推行六西格瑪之后的摩托羅拉,產生巨大的蛻變,在品質方面超越當時的日本。但是,讓六西格瑪在短短幾年內,成為許多世界級企業爭相投入,作為降低成本、提高競爭力最大妙方的最大功臣,則是美國通用公司的杰克·韋爾奇。?

          Sigma(中文譯名‘西格瑪’)是希臘字母σ的中文譯音,統計學上用來表示“標準偏差”,即數據的分散程度。6sigma即意為“6倍標準偏差”。
          ?
          在質量上,6Sigma表示每百萬個產品的不良品率(PPM)不大于3.4,意味著每一百萬個產品中最多只有3.4個不合格品,即合格率是99.99966%。在整個企業流程中,6Sigma是指每百萬個機會當中缺陷率或失誤率不大于3.4,這些缺陷或失誤包括產品本身以及采購、研發、產品生產的流程、包裝、庫存、運輸、交貨期、維修、系統故障、服務、市場、財務、人事、不可抗力……等等。流程的長期西格瑪值與不良品率有如下關系:?
          不良品率合格率(%)西格瑪值?
          3.499.999666?
          23099.9775?
          620099.384?
          6680093.323?


          【事例】

          舉一個航空公司的例子,如果某一航班的預計到達時間是下午五點,由于各種原因,真正在五點準時到達的情況是極少的。假如我們允許在五點半之前到達都算準點到達,一年里該航班共運營了200次,顯然到達時間是個變量。如果其中的55次超過五點半到達,從質量管理的角度來說,這就是不良品,所以航空公司這一航班的合格品率為72.5%,大約為2.1個西格瑪。如果該航班的準點率達到六西格瑪,這意味著每一百萬次飛行中僅有3.4次超過五點半到達,如果該航班每天運行一次,這相當于每805年才出現一次晚點到達的現象。所以六西格瑪的業務流程幾乎是完美的。對于制造性業務流程來說,在有均值漂移1.5σ的情況下六西格瑪意味著每一百萬次加工只有3.4個不良品。這個水平也叫做流程的長期的西格瑪值。?


          二、何謂6sigma管理?

          6sigma管理即要求企業在整個流程中(而不僅限于產品質量),每百萬個機會中的缺陷率少于3.4,這對企業來說是一個很高的目標。?

          隨著將近二十年來的應用發展,六西格瑪已由原先摩托羅拉創建成型的質量管理戰略上升到了一整套系統的使公司達到世界級的質量和競爭力的管理策略和技術手段。其實理解6Sigma不需要很深的統計學技術或背景,事實上,“6Sigma是什么”能以各種不同的方式回答。如果概括地回答的話,可以說6Sigma管理是:“尋求同時增加顧客滿意和企業經濟增長的經營戰略途徑。”即:?
          ◆在提高顧客滿意程度的同時降低經營成本和周期的過程革新方法;?
          ◆通過提高組織核心過程的運行質量,進而提升企業贏利能力的管理方式;?
          ◆在新經濟環境下企業獲得競爭力和持續發展能力的經營策略。?

          在這里我們將簡潔、條理地定義6Sigma為:?
          1、衡量企業產品質量、整體運作流程質量及整體競爭力水平的方法;?
          2、改進企業產品質量、整體運作流程質量及提升核心競爭力的方法;?
          3、真正實現卓越業績和持續領先的管理哲學和方法論。?

          6sigma管理的核心理念實際上不僅是一個質量上的標準,它更代表著一種全新的管理理念,即要企業改變過去那種“我一直都這樣做,而且做得很好”的思想,因為盡管過去確實已經做得很好,但是離6sigma管理的目標還差得很遠。?


          三、受益于6sigma管理的企業和組織?

          摩托羅拉公司在1986年率先提出6sigma管理模式并在企業中推行。自從采取6sigma管理后,該公司平均每年提高生產率12.3%,因質量缺陷造成的損失減少了84%,摩托羅拉公司因此取得了巨大的成功,成為世界著名跨國公司,并于1998年獲得美國鮑德里奇國家質量管理獎。美國通用電氣公司(GE)自1995年推行6sigma管理模式以來,由此所產生的效益每年呈加速度遞增:每年節省的成本為1997年3億美元、1998年7.5億美元、1999年15億美元;利潤率從1995年的13.6%提升到1998年的16.7%。?

          6sigma的最大受益組織之一通用公司的前CEO杰克·韋爾奇曾評價說:“6sigma是GE公司歷史上最重要、最有價值、最贏利的事業。我們的目標是成為一個6sigma公司,這將意味著公司的產品、服務、交易零缺陷。”……“6Sigma是管理工具中最強有力的、最有突破性的,它適用于名種公司用來增加市場份額、降低成本及提高利益率底線。”……“六個西格瑪所包含的中心思想是,在一個過程中您能否測量出有多少‘缺陷’,以及您能否系統地找出消除它們的方式,并盡可能地接近‘零缺陷’。六個西格瑪已經改變了通用電氣公司的遺傳基因——現在,它貫穿我們所做的每一件事情,融入我們設計的每一件產品,成為了我們的運作方式。”?

          6sigma管理已成功地應用于許多世界著名的大公司和組織,如摩托羅拉-1987、德州儀器-1988、ABB-1993、霍尼韋爾-1994、通用電氣-1995、科達-1995、西屋-1996、西門子-1997、諾基亞-1997、索尼-1997、花旗銀行-1999、Amazon.com-1999、東芝-2001、三星、LG。國內企業如:聯想電腦、鹽田國際、海南航空、上海中遠、上海寶鋼股份、美的空調、江蘇小天鵝、中國移動、咸陽彩虹……?


          【關于實施6sigma管理的必然性】?

          一、實施6sigma的目的?

          事實上,企業組織和管理者實施任何業務改進的目的只能是,也必須是:“獲利和持續獲利”以及“成功和持續成功”。?

          隨著我國加入WTO和世界經濟的進步放緩,中國企業和企業管理者所面臨的最具挑戰性的問題已不是“如何成功”,而是“如何持續成功”。六西格瑪管理不但告訴我們怎樣獲得成功,而且可以幫助我們獲得保持持續發展的核心能力。?

          人才是企業適應變革和競爭的核心力量。六西格瑪不僅為企業提供必須的管理工具和操作技巧,更為企業培養具備組織能力、激勵能力、項目管理技術和數理統計診斷能力的領導者。這些將幫助企業降低質量缺陷和服務偏差并保持持久性的效益,促進快速突破性績效。?


          二、實施的必然性?

          質量水平意味著什么?
          一個組織在接觸而甚至不是考慮是否實施6Sigma之前,首先讓我們來看一下真正的質量水平意味著什么。?

          在過去的半個世紀中,普遍存在的3σ質量水平不再為人們所接受了。?
          事實上,我國的大多數企業運作在3—3.5個西格瑪的水平,這意味著每百萬個機會中已經產生10000至66800個缺陷,對應合格率為93.3%—96%。從企業內部的效率與成本來看,所有的不良品要么成為廢品,要么需要返工或在客戶現場維修、調換,這些都是企業的成本。美國的統計資料表明,一個3西格瑪的公司直接與質量問題有關的成本占其銷售收入的15%—30%!而從另一方面看,一個六西格瑪水平的公司僅需耗費年銷售額的1.5%來矯正失誤。所以提高公司的綜合質量水平對于公司的盈利性有直接的好處。當然,最為重要的是高質量、穩定的業務流程是提高客戶滿意度的根本要素。?

          對一個3西格瑪水平的企業來說,提高一個西格瑪水平可獲得下述收益:?
          利潤率增長20%?
          產出能力提高12%—18%?
          減少勞動力12%?
          資本投入減少10%—30%?

          那么為什么要追求六西格瑪?停留在4或5西格瑪行不行?畢竟這已是超過99%的“好”了。用中國郵政的統計資料,如果信件的處理達到99%(3.8西格瑪)的準確投遞率,這表明約每小時要投錯或丟失郵件數超過9500件,六西格瑪意味著這一數字將降到3.4。?

          可見六西格瑪并不是不現實的標準。從市場環境來看,世界經濟一體化加劇了公司間的競爭,一個停留在3、4或5西格瑪的公司是無法與一個六西格瑪的公司競爭的。國家與國家之間的競爭最終體現在綜合實力方面的競爭。很顯然的,一個只有不到3西格瑪的國家,其內部有大量的資源浪費、憤怒的消費者、在國際市場上缺乏競爭力的產品,等等,在新的世界經濟中將很難與一個具有4、5、甚至6西格瑪的國度一較高下。因此,六西格瑪管理是一個追求世界級水平的質量評價過程,近年來已經引起了全球質量界的高度重視。?

          ◆什么都不做意味著什么?
          我們不得不說明這個問題:“六西格瑪真的值得做嗎?”對應的另一個方面的問題是:“如果我們不做六西格瑪會付出什么成本?與什么都不做的成本有多大區別?”?

          “什么都不做”這一選擇對于某個組織而言,可能是正確的選擇,然而組織需要在比較什么都不做的成本與做一些的成本之后再做這個決策。?

          如果組織現有的任何一個競爭對手或新的競爭對手,在行業內或組織的細分市場上達到六西格瑪質量水平,組織獲利的日子可能為數不多了。六西格瑪可以帶來大幅度改進過去質量水平的行動命令,并能從根本上改變組織的市場地位。一旦行業內某個組織成功地實施并堅持了六西格瑪經營戰略,成為并保持業界領導地位的方法則是比競爭對手更明智地實施六西格瑪。?

          杰克·韋爾奇很早就意識到人類對于品質的要求越來越高,他認為企業應該趁著還在賺錢的時候,將成本投注在品質的改善上,而不是等到面臨困境,才來尋求改善。于是在1996年開始推動六個西格瑪,強調“從流程改造入手”的六個西格瑪,使得通用一年獲利增加7億5千萬美元,并大幅降低了成本,因此引起全球注意。?

          重要的問題不是組織是否實施,而是何時、以何種方式實施六西格瑪經營戰略。?


          【關于實施6sigma管理的收益】?

          一、組織能得到的收益?

          事實上,我們所有人能達成共識的、毫無疑義的一點是:“任何一項管理模式,不管它在理論上有多大的創新和理論價值,如果它不能給企業帶來實際的收益,那它也將是毫無意義的。”而6sigma管理正是保持企業在經營上的成功并將其經營業績最大化的管理模式,它能給企業帶來快速的增長及可觀的收益。一般來說,經營業績的改善包括以下部分:?
          ◆投資利潤率的提高;?
          ◆市場占有率的提高;?
          ◆顧客滿意率的提升;?
          ◆營運成本的降低;?
          ◆產品和資金周轉時間的縮短;?
          ◆缺陷率的降低;?
          ◆產品開發加快;?
          ◆企業文化的改變等等。?

          推動6Sigma活動,你可以做到:?
          ◆節約成本增加利潤;?
          ◆提高生產力;?
          ◆擴大市場占有率;?
          ◆留住顧客;?
          ◆縮短周期;?
          ◆減少誤差;?
          ◆改變文化;?
          ◆開發產品和服務其他好處等。?


          二、支持收益的原因?

          為什么6Sigma管理能給組織帶來如此明顯的利益收獲?為什么6Sigma管理表現出強勁的發展勁頭,成為企業組織在新經濟環境下獲得競爭力的重要手段呢?歸納起來可以有三個方面的原因:?

          第一,關注底線結果。底線是指企業在一段時間內的凈收益或利潤。在六西格瑪管理中,它是由改進顧客滿意程度和過程業績而實現了。通過對核心業務流程實施六西格瑪項目并達到預期的目標,是六西格瑪管理方法的核心部分。六西格瑪項目的目標是增加底線的結果,所有六西格瑪項目必須要達到增加底線結果,而取得底線結果正是企業最高管理者最為關注的,并因此會更加投入其中。?

          第二,六西格瑪管理綜合了技術方法與人文因素等有關企業過程改進的所有要素。而對以往的質量改進方法來說,雖然強調了其中的一些要素,但沒有像六西格瑪管理那樣將這些因素系統地整合起來。而這些要素對于效益的產生十分重要的。?

          第三,將改進工具方法與專業化的改進過程相聯結。將人力資源的培育、授權與專業化的過程改進方法相聯結,將管理職責及團隊工作與專業化的過程改進方法相連結,使專業化的改進過程成為企業經營活動不可缺少的部分。
          ?

          三、組織收益的增長趨勢?

          根據麥肯錫公司的調查和研究表明,一個3sigma企業只要組織其現有資源進行核心業務流程改進,如果每年可以提高一個sigma水平,那么每年可以獲得以下收益:利潤率增加20%;產能提高12-18%;雇員減少12%;資本投入減少10-30%,而且直至提升到4.8sigma企業均無須大的資本投入,當達到4.8sigma時,再提高到6sigma則需要增加投入,但此時產品的競爭力已大幅提高,市場占有率極高,給企業帶來的利潤將遠遠大于此時的投入。GE、摩托羅拉、杜邦、福特、美國快遞、聯信、聯想等公司實施6sigma管理取得的巨大成功就是最好的證明。
          ?

          【關于中國企業與6sigma管理】?

          一、國內企業目前面臨的現狀?

          經過近二十年的改革開放,尤其是市場經濟的逐步完善,中國的企業開始了對各種管理思想和方法的實踐,其中不乏成功有效的例子。但是,中國企業由于宏觀政策、制度和人的關系等原因,并沒有在管理,特別是在企業運營方面取得大的成效和突破。內部管理在很大程度上還停留在作為一門藝術的階段,盡管一些高級的質量方法和過程也有局部的應用,但是質量檢查仍然是制造業的質量管理的主要內容。而整個服務性行業的企業則完全處在憑經驗、人員態度或由信息系統來保障服務質量的階段,沒有一個科學、系統的保證服務、產品質量的方法。?

          中國企業亟需形成一個追求管理卓越、實現完美流程的企業文化。?
          更多的我們國內企業的現狀描述不需贅言,下面列出來的總結大多數‘差不多’企業和先進企業管理特點對比的表格也許能給我們提供些什么。?


          二、六西格瑪管理與中國企業?

          六西格瑪隨著外資的引進已在中國這塊文明之地播種,在通用電氣、摩托羅拉、聯信和柯達等世界級大公司的中國合資企業中,六西格瑪已成為其企業文化的一部分。例如,從事軟件生產的希捷技術公司,三年多來一直在中國使用六西格瑪模式并且對其大加贊賞。人們普遍認為六西格瑪模式將有助于中國參與國際市場競爭,使他們爭取更多的市場份額和削減制造成本。然而由于六西格瑪作為企業成功的競爭優勢之一,企業間不愿過多公司宣傳或交流這方面的經驗和具體實施細節,使得六西格瑪在中國一直披著一層神秘的面紗。?

          在這種情況下,國內企業唯一的選擇就是迎頭趕上,盡快開展六西格瑪的學習和實施,以爭取在新一輪的競爭中立于不敗之地,并成長壯大。?

          目前,六西格瑪在中國企業中的認知度是非常低的。只有極少部分管理者和學術界對此有些認識或較有深度的研究。業界僅有屈指可數的幾家公司能提供有限的和有意義的培訓,至于能提供六西格瑪的全程培訓和實施咨詢的則更是鳳毛麟角。這主要是因為六西格瑪咨詢服務與一般的咨詢服務的最大的區別在于咨詢師必須具備實際的實施經驗,并至少在黑帶大師以上。而那種靠新鮮的MBA來提供服務的咨詢公司是無法滿足要求的。除了跨國公司以外,國內的企業真正全面實施六西格瑪管理戰略的也極少。可以預見,在相當長的時間內,知識與技能的匱乏將是中國企業實施六西格瑪管理戰略的最大障礙。?

          除了企業傳統、管理制度和市場方面的原因外,六西格瑪戰略在中國的實施還面臨一個非常大的挑戰,即人才與知識的準備不足。因此,專家稱,中國企業能否成功實施六西格瑪管理戰略,關鍵在于組織的最高決策層是否堅持不懈。?

          專家同時警告,必須防止把六西格瑪管理實施當成又一個質量認證。六西格瑪管理實施應該著眼于流程能力、產品質量或客戶忠誠度的突破性提高。任何試圖把六西格瑪管理實施當成一個品牌、宣傳或認證的手段是浪費資源,并不會取得任何實質性的管理變革。許多失敗的例子業已證明了這點。?


          【關于如何實施6sigma管理】?

          目前,業界對6sigma管理的實施方法還沒有一個統一的標準。大致上可以摩托羅拉公司提出并取得成功的“七步驟法”(Seven-StepMethod)作為參考。“七步驟法”的內容如下:?

          1、找問題(Selectaproblemanddescribeitclearly)把要改善的問題找出來,當目標鎖定后便召集有關員工,成為改善的主力,并選出首領,作為改善責任人,跟著便制定時間表跟進。?
          2、研究現時生產方法(StudythePresentSystem)收集現時生產方法的數據,并作整理。?
          3、找出各種原因(IdentifyPossiblecauses)集合有經驗的員工,利用腦力風暴法(Brainstorming)、控制圖(Controlchart)和魚骨圖(Causeandeffectdiagram),找出每一個可能發生問題的原因。?
          4、計劃及制定解決方法(Planandimplementasolution)再利用有經驗的員工和技術人才,通過各種檢驗方法,找出各解決方法,當方法設計完成后,便立即實行。?
          5、檢查效果(Evaluateeffects)通過數據收集、分析、檢查其解決方法是否有效和達到什么效果。?
          6、把有效方法制度法(Standardizeanyeffectivesolutions)當方法證明有效后,便制定為工作守則,各員工必須遵守。?
          7、檢討成效并發展新目標(Reflectonprocessanddevelopfutureplans)當以上問題解決后,總結其成效,并制定解決其它問題的方案。?


          【關于實施6sigma的經驗教訓】?

          現在學習和推動六西格瑪的熱潮正在我國三資企業或部分國有大中型企業中掀起。越來越多的企業開始關注6西格瑪,而有些企業則處在觀望中。無論如何這對提高企業的質量和競爭力是有好處的。但是應該看到,企業的高層領導在決定推進六西格瑪之前必須對六西格瑪有一定的了解和必要的思想準備。因為任何改進活動的進行都不會是一帆風順的,尤其是六西格瑪具有自上而下的特點,高層領導是否有徹底執行六西格瑪的決心,對成功與否至關重要。在已經推行六西格瑪的企業中,有哪些成功或失敗的教訓呢??

          1、缺少激勵機制?
          企業培養出來的合格黑帶需要很高的成本,如果充分利用他們的知識和才能,可以為企業帶來非常可觀的效益。尤其在我國目前的狀況下,六西格瑪專業人才奇缺,所以企業的人力資源部門應為他們合理地規劃發展前景并制定合理的激勵機制。如果企業培養了很多黑帶,然而他們沒有得到充分的重視或重用,使他們看不到希望,人才流失就會成為嚴重問題。?

          2、評審與授權不足?
          實施六西格瑪不是喊口號或者搞運動,需要實際的效果。僅僅培訓了人員和選擇了項目是遠遠不夠的。在項目執行過程中,BB、GB們會遇到許多問題。比如缺少時間、缺少資金投入、缺少其他部門的配合、缺乏工具和方法的指導、沒有得到主管領導的充分支持、改善措施受到流程使用者的抵制而無法實施等。因此需要足夠的授權、監督跟蹤和指導。否則虎頭蛇尾甚至一無所獲的現象是在所難免的。這樣的經驗教訓已經很多。評審工作應該是由Champion來完成的。沒有不成功的BB、GB,只有不成功的Champion。?

          3、推動與拉動?
          根據現代科學的管理方法,要求將公司的整體經營目標分解到各個部門,進而具體到每個人,即目標管理,以此作為績效考核及晉升的依據。反過來說,每個人和每個部門的績效指標都達到要求,公司的整體經營目標就能完成。為了完成這些指標,往往就需要有科學的、開拓創新的方法,將流程合理化,提高效率,降低成本。以這種需求拉動六西格瑪實施才能將被動執行變成積極主動的行為。否則靠以往推動某項活動或運動的傳統方法只能作表面文章?

          4、財務支持?
          六西格瑪活動的開展需要財務部門的大力支持。無論在項目的選擇還是結束過程都需要財務方面對項目經濟效果客觀的評估。效益評估容易產生兩種誤區:過于苛刻或過于寬松。?
          評估過于苛刻的危害是改善效果得不到體現和承認,打擊了BB、GB的改善活動積極性,使他們沒有成就感,失去持續改善的動力。過于寬松的結果是片面夸大六西格瑪的效果,失去真實性。此外,財務評估的及時性也很關鍵。在項目選擇初期如果沒有得到經濟效果的確認,改善后期可能會發現BB、GB們歷盡辛苦改善的項目幾乎沒有任何經濟效果,白白浪費了人力、物力和財力資源。?

          5、形式主義或者僅僅使用六西格瑪的一些工具?
          目前很多企業的CEO們都認識到改革的重要性,也聽說過六西格瑪方法在GE公司得到很好地發揮和運用,并獲得成功,它能幫助企業達到突破性的效果,于是當作又一次質量運動,跟風似地上了六西格瑪。但是由于對六西格瑪理念和推進方法缺乏必要的認識,六西格瑪活動成為質量部門的工作,針對局部的問題用六西格瑪工具進行改善。結果發現效果遠遠不及當初想象中的那么好,于是認為六西格瑪不適合自己公司,又在追尋另一條途徑。?

          6、來自部門間的壁壘或人為的抵觸?
          眾所周知,六西格瑪的實施不僅局限于質量部門,而是自上而下,在整個企業范圍推動的活動。任何變革都不會是一帆風順的,因為常常會觸及到個別人的利益,比如工作的舒適程度降低、工作量和難易度增加等等。并且變革會逐漸打破部門間的壁壘,更多的橫向聯合使流程更趨于合理。然而一些人為的障礙和抵觸會時有發生,提高人員的認識,強調改革的目的性變得更重要了。?

          7、開源與節流并存?
          六西格瑪活動的另一個誤區是只關注‘節流’,而忽視了‘開源’。眾所周知,六西格瑪要提高產品或服務的質量。受傳統的質量管理思想影響,人們通常認為提高質量的同時必然會使成本增加,為了找質量與成本的平衡點,無須追求6SIGMA,3SIGMA或許正合適。這種觀點在現在看來是非常落后和不具有競爭力的。事實上隨著產品或服務變差的減少,質量成本COPQ會大幅度地下降,因為廢品、返工、檢驗等非增值部分都降低了。退一步說,即使有一些資金的投入,如果能夠帶來更多的效益,遠遠超過初期投入,又何必固守‘節流’呢??

          8、必要的投資?
          六西格瑪是科學和嚴謹的方法,在流程改善方法論的同時,運用了大量統計工具。不大可能“自學成才”,在活動初期借助專業咨詢公司的幫助是必要的。這是一項高回報率的投資項目。關鍵問題是如何選擇專業的咨詢機構。?


          【關于實施6sigma管理的關鍵驅動因素】?

          六西格瑪取得極大的成功,還是慘重的失敗,取決于它如何通過企業的體系架構來實施。創建一個成功的六西格瑪體系架構是一個不斷前進的過程,其目標是將一種質量意識灌輸到每個員工的日常工作方式之中。因組織的文化和經營戰略目標不同,各組織間的體系架構有著極大的區別。每個組織所創建的體系架構是獨一無二的,然而,每個成功的體系架構的創建過程有其共同的因素。?

          這些共同的因素包括成功實施六西格瑪的關鍵驅動因素和關鍵的結果事項。如果各個關鍵驅動因素解決了,關鍵事項也就實現了,那么六西格瑪管理就成功實施了。這些關鍵驅動因素按重要性從高到低的順序排列如下:?
          ◆主管人員領導;?
          ◆以顧客為關注焦點;?
          ◆戰略目標;?
          ◆項目選擇;?
          ◆培訓與執行;?
          ◆資源;?
          ◆黑帶人員的選擇;?
          ◆測量指標及反饋;?
          ◆文化;?
          ◆溝通;?
          ◆計劃;?
          ◆結果。?


          【關于6sigma管理與其他管理方法、體系、思想的關系】?

          隨著競爭日益殘酷,組織在降低成本和增加產出的同時,在改進質量和顧客滿意度方面,面臨更大的壓力。在擁有的可用資源越來越少的情況下,這成為一種更加艱巨的挑戰。面對這些挑戰,如果組織能夠明智地實施六西格瑪,它可以幫助組織學習并出類拔萃。?

          從高層主管人員那里,我們經常聽到的一個問題是:“六西格瑪如何與其他的組織創新相匹配?”我們認為,不應該認為六西格瑪不過是另一種創新,而應該在更高層將六西格瑪與其他計劃或創新整合起來,作為整個經營戰略的一部分。六西格瑪不應該取代其他創新,而是提供一種戰術性方法論,以確定在特定的情景、過程中最好的方法。?

          大家常關心的有:?
          ◆六西格瑪與全面質量管理(TQM)的關系;?
          ◆六西格瑪與精益制造/精益思想的關系;?
          ◆六西格瑪與BPR、ERP、MRP(Ⅱ)的關系?
          ◆六西格瑪和ISO9000的關系?
          ◆六西格瑪與企業現行質量控制系統的關系?

          ?
          posted @ 2006-04-30 09:36 崛起的程序員 閱讀(432) | 評論 (0)編輯 收藏

          web2.0定義是什么?
            
            web2.0定義是什么?這是一個簡單直接但又是最核心的問題,討論web2.0的文章層出不窮,內容包括如何實現web2.0, web2.0如何盈利, web2.0如何擊敗web1.0等。但沒有多少人愿意討論web2.0的定義,也沒有多少人討論web2.0已有的定義存在什么問題。沒有清晰理性的定義,我們的討論就像唐吉珂德騎著毛驢沖向他心目中的怪獸-大風車一樣。可笑而又毫無意義。
            
            翻閱搜索引擎帶給我們關于web2.0的海量資料,找到了Blogger Don的“WEB2.0概念詮釋”,他寫道“Web2.0是以 Flickr、Craigslist、Linkedin、Tribes、Ryze、Friendster、Del.icio.us、43Things.com等網站為代表,以Blog、TAG、SNS、RSS、wiki等社會軟件的應用為核心,依據六度分隔、xml、ajax等新理論和技術實現的互聯網新一代模式。” 這個定義把一些讓人眼花繚亂的前衛名詞和計算機專用術語堆砌在一起作為WEB2.0概念詮釋,。把應用,協議,語言格式混雜在一起來描述WEB2.0概念。定義者要么對計算機知識一知半解,要么是企圖讓人們的感到神秘從而對其頂禮膜拜。按照其定義的方式對“國家”這個概念進行詮釋,那國家就是“以中國,法國,美國,俄羅斯,土耳其等集合體為代表,以軍隊,警察,文官系統,議會等社會團體的應用為核心,依照量子力學,馬斯絡需求層次理論,混沌學等新理論和技術實現人類社會的聚集模式。“,多么荒唐的的定義
            
            一個新概念或新理論不可能從石頭里蹦出來,也不會超越我們的時代憑空想象。他必然有自己的歷史傳承。理解WEB2.0,我們要了解WEB甚至是bbs的歷史。 World Wide Web,簡稱WWW,由英國人TimBerners-Lee 1989年發明。通過WEB把互聯網上的資源在一個網頁里直觀的表示出來并通過網頁相互連接。在web之前,互聯網相當數量的文檔資源是存放在bbs上。通過對bbs發展歷史的研究,我們發現web時代的內容服務網站主要是從bbs的功能中演化而成。
            
            BBS誕生于70年代末,那時還沒有瀏覽器,搜索引擎,甚至沒有個人網站。我們在BBS上可以做四件事1。發布新聞 2。發布交易信息 3。發布個人感想,心情描述4。互動式問答 前三個功能逐漸從bbs中分離出去,發展成三個方向的網站----新聞類,電子商務類和博客類,這三類網站經過整合逐漸成為各自的門戶。如新浪,易趣,博客中國。第四個功能互動式問答正在分離,但還沒有出現該領域的門戶網站。如www.ideacool.net ,新浪的愛問,小i等網站。我們可以把這一類網站模式稱之為威客模式,英文名witkey。
            
            我們應該已注意到1。新聞類網站。2.電子商務類網站 與3。博客類 4。威客類網站的功能和形式上有一個明顯的鴻溝。這個鴻溝就應該是web1.0 與web2.0的劃分界線。 新聞類網站和電子商務類網站為代表的web1.0時代是以信息接收者為中心,免費分享信息的時代。博客類和威客類網站為代表的web2.0時代是以信息提供者為中心。互聯網用戶能夠管理個人的資料和信息。通過各種途徑讓自己的智慧,知識,經驗,技能體現價值。簡而言之,web2.0的定義就是提供一種平臺讓個人的智慧,知識,技能體現價值的一種互聯網新模式。這種模式的表現形式主要為博客類,和威客類兩種。實現的支撐包括互聯網技術,信用制度,支付制度等。
            

          --------------------------------------------------------------------------------


          Web2.0的盈利點

          ?

          主要集中在威客模式上:?
            1. 威客模式面向的對象主要是有專業專長的用戶如科學家,工程師,醫生等,博客面向的是善于表達個人觀點和思想的用戶如記者,娛樂明星,專欄作家等等。
            
            2。個人的知識,技能,智慧可以體現價值。其中“體現價值”不一定指獲得經濟利益,獲得受幫助者的贊揚,獲得公眾的認可也是體現價值的方式之一。但讓參與者獲得經濟利益是威客模式的重要特點。
            
            3。個人的知識,技能,智慧可以體現價值,但不代表參與者一定能夠獲得收益,這要取決于其知識,技能的含金量,可以說,能力越大,收益越大。
            
            4。威客模式的建立需要實踐該模式的平臺建立信用制度,支付制度,例外處理制度等等。這些制度是否完善是該平臺能否持續發展的決定性因素。
            
            5。威客模式也是人類大腦通過互聯網協同工作的一種模式。
            
            6.為威客提供服務的平臺通過分享威客交易知識的收益獲取利潤。

          posted @ 2006-04-30 09:30 崛起的程序員 閱讀(218) | 評論 (0)編輯 收藏
          ????進入2004年,伴隨著各種機遇和挑戰,中國的軟件開發仍然在摸索中前進,程序員也在不斷的學習和工作中探尋自己的未來。在這個過程中,當然少不了各種技術和公司對他們施加的影響。跟隨誰,選擇什么路線永遠是一種充滿未知數的挑戰。

            談到影響,可能以微軟為首的軟件巨頭更容易被提及,畢竟開發人員所直接應用的操作系統、語言、開發工具等各種技術都掌握在這些公司手中。然而,這并不能抹殺和妨礙提起國內一些企業和人士對中國軟件開發各方面產生的影響。

            站在這個角度,本刊在國內的軟件企業和個人中評選出了如下20位人士,他們對近期軟件開發產生了一定程度的影響。選出這些人,也是為了拋磚引玉,讓國內的開發者更了解自己正在經歷的變化和面臨的挑戰。

            在這些人員中,有些屬于早一代的程序員,他們創造的業績激勵了很多程序員進入軟件開發。鮑岳橋就是一個,盡管現在他已經成為了聯眾的總裁,但之前從UCDOS步入輝煌,Windows時代一度面臨困境,最終憑借網 絡游戲 成功 轉型 ,這種以技術創業成功的例子對中國的程序員來說就是巨大的誘惑。

            與此同時,很多人從軟件教育方向在逐漸改變整個軟件行業的人才結構,這一說法毫不夸張。青鳥APTECH就是將印度軟件教育模式帶到中國來的典型,尤其是在中國軟件人才結構并不合理的情況下,他們所做的工作也是有益的嘗試。

            而且,面向未來的眼光也必不可少,很多人所做的工作帶來的變化現在還不顯著,但對未來可能會產生相當的影響。比如,中國軟件人才的培養結構在逐漸向國際化靠攏,軟件學院功不可沒。更為超前的是,為了探索未來中國軟件在底層技術上的引導性,有很多人在做努力,從Linux在中國的推廣,到科泰世紀打造自己的操作系統和開發平臺,盡管這些嘗試可能會失敗,但帶給我們的是經驗和深入的思考。

            現在,有人說程序員面對著太多的頭緒,已經迷失了方向。的確,是有一些人迷失了方向,但這里的20位人士能夠讓我們以更清醒的眼光看待中國的軟件開發,了解我們取得的成績和面臨的挑戰。

            開國元勛

            嚴援朝

            所屬公司:新浪網

            入選理由:開發第一個中文操作系統CCDOS,參與創辦四通利方,掌控最大的中文網站新浪網技術總架構。

            “做軟件就是在不斷地明確目標,就是搞清楚你的GO 是什么,所有的軟件都逃不出那三句話——IF、THEN、 ELSE。棒的程序員很快能夠知道自己的GO是什么,沒長進的程序員老也弄不清楚自己到底要干嘛,所以永遠處在 學習過程中,手里永遠拿著一本書,永遠在學,永遠也學不會。”這是嚴援朝很經典的一句話,甚至有程序員把這作為自己的座右銘。作為中國第一代程序員的象征,他如今依然負責在新浪網的整體技術架構上。不知是不是嚴援朝怕別人忘記自己,不久前,從新浪網炮制出了兩篇文章,大談自己的一些深奧看法。其實如果單純是這種原因,應該大可不必,因為嚴援朝在中國軟件開發史上奠定的地位無人可撼。

            求伯君

            所屬公司:金山軟件

            入選理由:軟件領域的常青樹,以榜樣的力量激勵眾多程序員。

            每一個聽到這個名字的程序員,都會有一種莫名的激動和敬仰。從金山成立的那一天起,公司的招聘廣告上就把求伯君作為吸引程序員加入的重要宣傳詞,由此可見求伯君在程序員中的影響力。

            不久前,我們準備做“程序員的一天”的欄目,找到求伯君。他說:“做是可以,不過現在這些天不太適合,整天要陪著很多官員應酬。”看來,作為董事長的求伯君也僅僅能在精神上鼓舞程序員了。據說,金山正在籌拍一部 《劍俠情緣》 的電視劇,求伯君還可能在其中飾演一位方丈。到時候,我們或許可以欣賞求伯君的影視風采了。

            王江民

            所屬公司: 江民科技

            入選理由:38歲開始編程,挖掘了殺毒軟件的巨大市場潛力

            “38歲開始學習計算機,兩三年之內成為中國最出色的反病毒專家之一;45歲只身一人獨闖中關村辦公司,產品很快占據反病毒市場的80%以上。”這些事實已經讓我們無法忽視王江民對中國軟件開發帶來的影響力,在業內被尊稱為老師的王江民,憑借堅持而開拓出了殺毒軟件市場,這也成為中國軟件產業所僅有的幾個亮點之一。盡管現在KV系列產品中早已沒有了一行他的代碼,而且在市場中的表現也差強人意。但毋庸置疑,KV系列讓眾多的程序員知道了王江民,而他身殘志堅的毅力和品質也讓很多程序員面對困難和挫折時,從中得到鼓舞。

            鮑岳橋

            所屬公司:聯眾公司

            入選理由:在DOS和Windows平臺、網絡時代下都獲得成功的典型

            從UCDOS流行的那一天起,鮑岳橋也成為了中國無數程序員的偶像。然而,和很多程序員一樣,他也并沒有從UCDOS的成功中得到多少具體的物質利益。接下來,Windows平臺開發的巨大沖擊到來了,網絡的沖擊到來了,有誰能同時抓住兩個機會?鮑岳橋無疑做了最好的注釋。鮑岳橋認為,是否掌握某項技術不是關鍵,技術這個東西完全是觸類旁通的,當今計算機的發展如此迅速,一個人不可能掌握所有的新技術,一個有經驗的程序員應該能夠利用自己原有的知識和經驗,很快地掌握新技術和新知識。他與簡晶、王建華的合作也是聯眾成長中的精彩經歷,盡管現在他容登總裁寶座,而簡晶和王建華離去創業,但他們當初的合作還讓現在的眾多程序員看到了初期團隊合作的成功例子。

            宮敏

            所屬公司:凝思科技

            入選理由:最早將自由軟件引入中國

            宮敏,對很多人來說,這是一個陌生的名字。但正是宮敏博士,在芬蘭參與了LINUX操作系統的開發與研究。后來,他用磁帶背回了20GB容量的自由軟件,形成了中國第一個自由軟件庫,被稱為是中國自由軟件界元老。

            然而,就在國內自由軟件運動掀起狂潮時他卻全身而退,埋頭于開發和做實事去了。2000年,宮敏回國創辦北京凝思科技有限公司,目標是在較短時間內為國家相關部門提供具有完全自主知識產權的高性能、高安全的國產信息安全 高技術 產品。宮敏認為,自由軟件首先要重視教育,培養出一批有良好心態和真才實學的人。


          ????????教育先導

            譚浩強

            入選理由:計算機基礎教育

            雷軍曾經說過:“是譚浩強讓程序員感到了寫程序就是自己的生命。”這可能是早一代程序員的感覺吧。在計算機基礎教育方面,譚浩強無疑擁有極高的聲望和經驗。不過,現在社會已經進入新的階段,盡管譚浩強已經成立了工作室,并不斷出版了一系列的書籍,但真正如《Basic 語言》這樣風行的書籍并沒有再次出現。

            譚浩強的書集中體現了中國計算機教育的特點,淺顯,作為入門級的書籍非常不錯,但一旦真正要深入下去,可能就要選擇國外那些大師級人物所寫的書籍了。這也是國內很多程序員對譚浩強某些書籍頗有微詞的原因所在。

            然而,不管如何,時代和機遇都造就了譚浩強在中國計算機史上的地位,這一點無法抹殺。

            李開復

            所屬公司:微軟

            入選理由:創辦微軟亞洲研究院,在學生中影響巨大

            有人說微軟亞洲研究院現在很會作秀,大事小事總要通報一番,而且不時出來組織一些成果演示,或許這繼承了李開復的風格。做過研究又在企業中多年鍛煉的經歷使得李開復把亞洲研究院當作企業一樣的來運作,《追隨智慧》等書籍的出版更將這種宣傳推上了頂點。但從另外一方面來看,李開復的確給國內的計算機科學研究帶來了新的氣象,亞洲研究院的一些技術成果也對IT產業有著深遠的影響。同時,微軟亞洲研究院在大學中深入的各種活動使得李開復在學生中的影響力頗高。而最近《給中國學生的一封信》和《給中國學生的第二封信》都言辭懇切,引起了巨大反響。微軟給中國印象最好的地方是亞洲研究院,這也算是李開復的高明之處吧。

            陳鐘

            所屬院校:北京大學軟件學院院長

            入選理由:軟件學院的積極倡導和實踐者

            其實選擇陳鐘,不如說選擇了軟件學院更為恰當。畢竟從國家重視軟件學院開始,有幾十家高等院校開始了這方面的探索。而32歲就成為博導的陳鐘作為北京大學軟件學院的院長,在大興開拓了新的天地,并取得了不錯的成績。

            最近,有朋友說:“以前,計算機系的學生對軟件學院很不屑一顧,認為就是一群雜牌軍。但現在,他們笑不起來了,軟件學院的課程配置和教學完全是按照市場的要求去進行的,他們已經得到了市場的認可。” 當然在這些探索中,有的學院做的并不好,但作為國家希望改變現在計算機人才培養的方式而設的試點,我們有理由期待軟件學院帶來的改變。而陳鐘將繼續在這個過程中施展自己的才華。

            楊明

            所屬公司:北大青鳥APTECH

            入選理由:將印度軟件人才培養模式引進中國

            印度發展軟件產業的成功被大肆宣揚后,吸收印度經驗的探討逐漸風行起來。但真正實施借鑒印度經驗就是北大青鳥APTECH了。作為總經理的楊明,力圖將這種模式和中國的實際情況相結合,打造出一種獨特的軟件從業人員的培訓渠道。楊明并不喜歡別人稱他培養出來的是“軟件藍領”,因為,在他看來,通過APTECH模式培養的人才是幫助很多人進入IT領域的“金光大道”。而且,采取特許經營這套模式也被巨額資金打造的產業鏈證明是可行的,因為目前已在全國建立和發展了近100家授權培訓中心。據說,北大青鳥還將繼續投資幾個億用來擴張,無論如何,教育模式方面,楊明帶領的北大青鳥APTECH將會給國內軟件業人才市場帶來相當的影響。

            侯捷

            入選理由:技術寫作創造品牌

            侯捷深入淺出的寫作手法,給國內枯燥的技術書籍寫作注入了一針強心劑。而且,國內的出版公司也從侯捷身上看到了一個優秀技術作者的市場潛力,因此將挖掘國內優秀作者作為重要的工作內容。

            同時,在侯捷直接和間接的影響下,國內一批軟件開發者看到了技術寫作的價值,開始出版技術書籍。現在,程序員發現了另外的一條可供選擇的方向:技術寫作。隨著更多的開發者參與到其中,對提升國內開發者交流、共享技術起到了很好的促進作用。

            侯捷并不掩飾自己對財富的追求,他說:“好的作者就應該得到好的報酬,這樣才能保證他能夠靜心研究技術,再寫出更好的書來。”當網上攻擊自己的帖子越來越多的時候,侯捷選擇了自己的方式,他以老師的口吻試圖來解釋自己所倡導的這一切。然而,他的回應和解釋并不能排解一些人的繼續攻擊,因為網絡就是網絡。

          ???創新者

            王志東

            現屬公司:點擊科技

            入選理由:在網絡上取得成功后仍然鐘情軟件,投巨資做面向未來的協同軟件

            不了解王志東的人覺得他放棄了軟件,而后又被網絡所拋棄;但了解王志東的都知道他最鐘愛的還是軟件,而且現在他同時擁有了網絡。

            自從離開新浪之后,王志東的消息就逐漸從網絡上減少了。應該說,王志東帶給我們的消息更多是互聯網所帶來的影響力。

            對于王志東正在做的協同軟件,很多人到現在也沒有完全明白。盡管國外的一些廠商正在投巨資開發協同軟件,但在國內,推廣起來還存在很多的問題。但無論如何,王志東能夠在功成名就后仍然投入資金來開發一個仍屬未知數的軟件領域,這種對軟件的癡情不正彪顯了開發者執著的特質嗎。

            周奕

            入選理由:倡導走向國際市場,以共享軟件掙美元的先行者。

            2001年的10月份,周奕從美國打來一個長途電話,對共享軟件在國外尋求注冊談了很多他的想法,當時的他充滿著發現新大陸的喜悅,也迫切希望與國內的程序員共同分享。隨著媒體的宣傳,“寶馬車”給程序員帶來了極大的吸引,一大批程序員、沒有畢業的學生、甚至包括剛剛學習VB兩三天的小孩子也都做起了美元夢。不過,周奕在國際上面臨的壓力也不小,一大批類似MP3 to CD的軟件不斷出現,其中不乏其他中國程序員的作品。盡管周奕的軟件銷售量下滑,但他從來沒有后悔過這樣做。

            現在國際市場上有數量眾多的共享軟件,其中中國、俄羅斯和美國占據了最大的份額,一大批共享軟件作者通過這種途徑換來了豐足的生活,當然也有另外一批人并沒有帶來所企盼的收獲。但無論如何,周奕作為“共享軟件走向國際市場”創始人被眾多的程序員稱為“老大”,這種影響力在中國的軟件開發史值得一書。

            陳天橋

            所屬公司:上海盛大

            入選理由:用市場的成功加速了網絡游戲開發的進程

            陳天橋的入選可能爭議很大,之所以堅持把他列入,完全是基于他給網絡游戲市場帶來的巨大沖擊。掰開手指數數,中國有幾個軟件行業被如此追捧過,除財務管理軟件和殺毒軟件之外,還沒有那個軟件行業被瘋狂的關注。正是基于上海盛大為代表的公司在網絡游戲市場上取得的成績,才使人把目光放在了網絡游戲上。而且,正是盛大和韓國游戲開發商產生的沖突才使得自己和其他的運營商意識到了國產網絡游戲研發的重要性。網絡游戲程序員一時物以稀為貴,很多培訓結構和高校都開設了相關專業,國家在這方面的政策也有了調整。以一己之力影響了網絡游戲開發的產業進程,陳天橋帶領盛大產生的影響力不可忽略。

            陳榕

            所屬公司:科泰世紀

            入選理由:打造新一代操作系統

            陳榕的身上散發著一股銳氣,有人說他是個天生的演講家。不過當陳榕剛到國內推廣其思想的時候,很多人不理解,他的情緒也會很激動。有人說他對技術研究的太深刻了,雖然提出的思想很對,但這種事情不應該在國內做,因為中國沒有這樣的環境。不知道陳榕如何看待這個問題。

            現在,美國的風險投資已經不易獲得,而政府對這方面的支持使陳榕找到了一個機會。能否取得市場成功盡管是陳榕所關注的,但他可能更在意將多年以來在微軟無法實現的一個夢在這里實現吧。

            然而,在微軟的.NET已經推出,多種嵌入式操作系統相互爭奪的市場上,科泰世紀的操作系統要取得成功還面臨嚴峻的挑戰。不過陳榕很有信心,他用一個例子來證明:微軟很多的產品在1.0和2.0版本的時候都不被人看好,都是到3.0才成熟并得到市場認可的。我們也期望那一天早些到來。

            吳濤

            入選理由:易語言創始人

            如果說在中文語言編程上,中國有為數不多的開發者還寄托希望的話,那身處湖北省枝江市鑫源村的吳濤無疑是其中之一。這位數年前就開始做易語言的程序員遠離了喧囂的北京,毅然回家做起了中文可視化編程環境。

            在最近的版本中,吳濤建立了完全的易程序編譯器系統,支持全編譯,可以直接將程序編譯為CPU指令碼運行,從而突破了長期以來的速度瓶頸。同時,他的商業推廣也做的不錯,從易語言支持論壇的火爆中就可以看出這點。而吳濤一直執著在語言研究和底層編程工具的態度也是很多程序員需要學習的。盡管吳濤所做的工作不會撼動整個軟件開發的大局,但有人執著于這樣的工作也應該得到我們的尊敬。想一想,同樣是基于中文的出發點,為什么WPS會得到推崇,而不能容忍易語言的存在呢。


          ???個人典范

            雷軍

            現屬公司:金山軟件

            入選理由:從程序員向管理者成功轉型的代表

            2003年初,當雷軍在亞運村的一個并不為人所知的酒吧中聊天,探討程序員成長和轉型的時候,雷軍曾說:“我現在認識到,CEO也是一種職業,這個職業對我更有吸引力。對公司未來的幾年發展,我心中已經有了一個方向,關鍵就是如何去實施和時間快慢的問題而已。”

            應該說,媒體已經將雷軍塑造成為了一個從程序員到管理者轉型的典型例子。然而,在這種轉變中,有誰能夠了解到雷軍當時所面臨的壓力和風險,如果失敗了呢?沒有人會問這個問題,也沒有人會回答它。雷軍帶領金山發動的紅色風暴也將通用軟件的價格拉了下來,這也給程序員一次重新審視自己的機會。記得當時有報道談到銘泰的程序員看到自己開發的軟件不得不以幾十元的低價銷售時,甚至哭了起來。這算不算的雷軍帶給程序員的另外一種影響呢?

            不過,現在雷軍作為管理者,同樣面臨著多種問題,當網絡游戲火爆之后,雷軍將賭注放在了劍俠情緣網絡版上,有人還說雷軍精于戰術,但戰略還有欠缺,這次的寶押對了嗎?不管怎樣,如果雷軍成功了,這是管理者的成功,如果他失敗了,也不過是管理者的失敗案例之一。但雷軍曾經有過的程序員身份將永遠讓我們關注他的人生。

            丁磊

            所屬公司:網易

            入選理由:技術眼光抓住網絡時代機遇的典范

            如果告訴你中國的首富也在看《程序員》雜志,你是否相信?這可能很難想像,但事實的確如此。

            如果說網絡給了很多人一個機遇,包括軟件開發人員,但并不是所有人都能抓住了這個機遇,即便抓住,又很難有人把這個機遇發揮到像丁磊這樣極至。

            有人說丁磊不是一個技術人員,因為并沒有開發過哪個令其揚名的產品,但丁磊所具有獨到的技術眼光在轉向網絡服務和網絡游戲時都起到了重要作用,說丁磊屬于那種“玩技術”的更為合適。開發者如何利用各種技術挖掘到更為廣闊的商業價值,這可能就是丁磊帶給我們的啟示吧。

            張小龍

            所屬公司:博大

            入選理由:開發Foxmail和微軟的OutLook抗衡,以免費軟件一夜成名

            一個普通的程序員開發的軟件能和微軟的產品相抗衡,這很少見,而產品被巨資收購就更加是傳奇,創造這個傳奇的人就是張小龍。如果說互聯網時代的軟件只有幾個算上成功的話,Foxmail肯定會名列其中。

            依靠這兩點,張小龍對很多程序員產生的激勵就不可小視。當然,這也是在當時的背景下發生的傳奇,現在這樣的故事可能不會再次發生了。

            張小龍加盟博大任副總裁和CTO后,他現在的工作首先是管理和組織各個產品和項目開發組,其次是規劃公司的產品結構,公司現在有很多的產品和項目都要由他來統籌。這一次,團隊合作的力量將成為他再次成功的基礎。

            廖恒毅

            現屬公司:佳軟公司

            入選理由:十多年從事一線軟件開發的代表,正打造基于.NET的企業級開發平臺

            廖恒毅從不掩飾自己對微軟的喜愛。從中文之星2.0到開發基于.NET的大型企業管理軟件,他與微軟的關系密不可分。而之前曾經在杜家濱領導下的微軟中國公司擔任開發合作部經理的經歷,更給他身上打下了深深的微軟烙印。盡管廖恒毅很坦率的談到,他當時所做的工作不如現在的負責人,但作為一個純粹的程序員,他利用微軟技術創造的價值卻無人可及。從中文之星2.0的熱賣,到創造的拼音加加輸入法帶動了輸入法技術的創新都是證明,而現在,他用.NET構架了佳軟公司未來超速發展的動力,他說:“今天我更關注我的技術能否給社會而不僅僅是個人帶來的價值。”

            如果有人說,微軟的技術能做什么樣的系統呢?廖恒毅一定會毫不遲疑的拿自己的系統舉例,利用創建的軟件平臺,一個人可以在10多天的時間中打造出一個完整的企業管理系統,這是類似SAP和Sibel的平臺,只是現在中國的軟件環境并不適合其拿出來做公開的標準,公司更愿意使用這套系統來面向最終客戶。未來,廖恒毅所創造的這一軟件架構給中國企業軟件開發帶來沖擊也并非不可能。當然,技術的領先并不代表市場的領先,這一點他也很清楚。

            廖恒毅并不習慣去公司分配給他的辦公室去辦公,他更喜歡扎在公司程序員的房子里面和大家一起工作。有次,聊程序員能做到什么時間,廖恒毅笑著說:“做了程序員,只要活著,就要一直寫程序了。”

            袁紅崗

            所屬公司:金蝶中間件公司

            入選理由:最早開發Windows上的企業應用軟件,打造獨立知識產權的EJB服務器

            很多JAVA程序員對袁紅崗極其佩服,源于他做了很多人不敢想更不敢做的事情,這就是他打造了國產的EJB服務器,很快,金蝶將在國內推出自主產權EJB服務器的3.0版本。

            同時,袁紅崗還是在Windows平臺上開發企業應用軟件的最早的一批程序員,當時寫出的適合小型企業使用的財務購銷存一體化軟件KINGDEE 2.7,令IT行業對金蝶刮目相看,使金蝶一舉成名,正是這些人才奠定了中國的管理軟件的基礎。

            袁紅崗將自己多年的經驗以一種樸實的風格寫出來,這些帖子在網上也影響深遠。

            后記:

            我們選擇了20位對中國軟件開發最具影響力的人,從側面也展示了中國軟件開發的脈絡。其中我們可以看到中國的軟件開發大部分以國內市場為主,很多過去的那些軟件英雄都與中文、漢化有著千絲萬縷的聯系。正是在這種情況下,這些人取得了成功,但同時也讓國內的開發人員將目光局限在了國內市場上。而國內市場的不成熟以及其他一系列原因又導致了無法支撐起語言和底層開發工具技術廠商的存活。

            正因為如此,我們也有一些無奈,這些人大部分都是在心理上給程序員施以影響的人,而在技術層面上能夠對軟件開發方向產生影響的很少,即便是有影響力,其影響范圍也很小。

            軟件設計方面,國內沒有一個企業或者個人引領某種規范使得大家可以靠過來。在全球技術統一化的今天,能否開發出面向全球市場的軟件技術,這是需要重視的問題。我們的軟件公司和程序員能否向這個方向努力呢?

          posted @ 2006-04-30 09:11 崛起的程序員 閱讀(226) | 評論 (0)編輯 收藏

          摘要

          Hibernate和struts是當前市面上幾個最流行的開源的庫之一。它們很有效率,是程序員在開發Java企業應用,挑選幾個競爭的庫的首選。雖然它們經常被一起應用,但是Hibernate的設計目標并不是和Struts一起使用,而Struts在Hibernate誕生好多年之前就發布了。為了讓它們在一起工作,仍然有很多挑戰。這篇文章點明了Struts和Hibernate之間的一些鴻溝,尤其關系到面向對象建模方面。文章也描述了如何在兩者間搭起橋梁,給出了一個基于擴展Struts的解決方案。所有的基于Struts和Hibernate構建的Web應用都能從這個通用的擴展中獲益。

          在Hibernate in Action(Manning,2004十月)這本書里,作者Christian Bauer和Gavin King揭示了面向對象世界的模型和關系數據模型,兩個世界的范例是不一致的。Hibernate非常成功地在存儲層(persistence Layer)將兩者粘合在一起。但是領域模型(domain model)(也就是Model-View-Controller的model layer)和HTML頁面(MVC的View Layer)仍然存在不一致。在這篇文章中,我們將檢查這種不一致,并且探索解決的方案。

          范例不一致的再發現

          讓我們先看一個經典的parent-child關系例子(看下面的代碼):product和category。Category類定義了一個類型為long的標示符id和一個類型為String的屬性name。Product類也有一個類型為long的標示符id和一個類型為Category的屬性category,表示了多對一的關系(也就是說很多product可以屬于一個Category)

          				
          				
          				
          						/**
          * @hibernate.class table="CATEGORY"
          */
          public class Category {
          ?? private Long id;

          ?? private String name;

          ?? /**
          ????* @hibernate.id generator-class="native" column="CATEGORY_ID"
          ????*/
          ?? public Long getId() {
          ??????return id;
          ?? }

          ?? public void setId(Long id) {
          ??????this.id = id;
          ?? }

          ?? /**
          ????* @hibernate.property column="NAME"
          ????*/
          ?? public String getName() {
          ??????return name;
          ?? }

          ?? public void setName(Long name) {
          ??????this.name = name;
          ?? }
          }

          /**
          * @hibernate.class table="PRODUCT"
          */
          public class Product {
          ?? private Long id;
          ?? private Category category;

          ?? /**
          ????* @hibernate.id generator-class="native" column="PRODUCT_ID"
          ????*/
          ?? public Long getId() {
          ??????return id;
          ?? }

          ?? public void setId(Long id) {
          ??????this.id = id;
          ?? }

          ?? /**
          ????* @hibernate.many-to-one
          ????* column="CATEGORY_ID"
          ????* class="Category"
          ????* cascade="none"
          ????* not-null="false"
          ????*/
          ?? public Category getCategory() {
          ??????return category;
          ?? }

          ?? public void setCategory(Category category) {
          ??????this.category = category;
          ?? }
          }




          我們希望一個product可以被更改category,所以我們的HTML提供了一個下拉框列出所有Category。

          				
          				
          				
          						<select name="categoryId">
          ?? <option value="">No Category</option>
          ?? <option value="1">Category 1</option>
          ?? <option value="2">Category 2</option>
          ?? <option value="3">Category 3</option>
          </select>




          這里我們看出了兩者的不一致:在Product領域對象里,category屬性是Category類型,但是ProductForm只有一個類型為long的categoryId。這種不匹配不但增加了不一致,而且導致了不必要的代碼進行primitive type的標示符和對應的對象之間的轉換。

          這種不一致部分是由于HTML Form自己引起的:它只代表了一種關系模型,不能代表面向對象的模型。面向對象和關系模型的不一致在存儲層由對象關系映射(O/RM)解決。但是類似的問題在表示層(view layer)仍然存在。解決的關鍵是讓他們一起無縫地工作。

          Struts的功能和局限

          幸運的是,Struts能夠生成和解釋內嵌的對象屬性。Category下拉框可以用Struts page-construction(html) tag library:

          				
          				
          				
          						<html:select property="category.id">
          ?? <option value="">No Category</option>
          ?? <html:options collection="categories" property="id" labelProperty="name"/>
          </html:select>



          我們假設categories是Category對象的一個list。所以現在我們要修改ProductForm,讓它變得更加“面向對象”,我們要修改ProductForm的categoryId,改成類型為Category的category。這種改變會導致在Product和ProductForm之間復制屬性的工作更加繁瑣,因為兩者有相同的屬性。

          				
          				
          				
          						public class ProductForm extends ActionForm {
          ???? private Long id;
          ???? private Category category;
          ???? ...
          }




          當我們完成剩余的Struts Action, configuration, validator, jsp, hibernate層后,開始測試,我們馬上在訪問ProductForm.category.id時遇到了NullPointerException。這是預料中的!因為ProductForm.category還沒有被設置,同時,Hibernate也會將多對一所聯系的對象引用設為空(如果database field為空指)(譯者:這里指Hiberate將product.category為Null,如果該Product沒有聯系到任何category)。Struts要求所有的對象在顯示(生成HTML Form)和傳播(提交HTML FORM)之前被建立。

          讓我們看看如何用ActionForm.reset()來架起橋梁。

          (并非如此)臭名昭著的Struts ActionForm

          在我第一個星期接觸Struts的時候,我最大的一個疑問就是:為什么我必須為Properties, getter方法, setter方法保持幾乎完全相同的兩份copy, 一份在ActionForm Bean, 一份在DomainObject。這個繁瑣的步驟成了Struts社區最主要的抱怨之一。

          以我的觀點,ActionForm存在有原因的。首先,它們可以區別于Domain Object因為他們但當了不同的角色。在MVC模式下,Domain Object是Model層的一個部分,ActionForm是View層的。因為Webpage的Field和Database的Field可能不一樣,某些特制的轉換是常見的。第二,ActionForm.validate()方法可以定義非常好用的驗證規則。第三,可能有其他的,特定的View行為,但是又不想在domain layer實現,特別當persistence framework來管理domain object的時候。

          提交Form

          讓我們來用ActionForm內有的方法-reset()-來解決view和model之間的不一致。這個reset()方法是在ActionForm在被Struts Controller Servlet處理request時候復制ActionForm屬性之前調用的。這個方法最常見的使用是:checkbox必須被顯式地設為false,讓沒有被選中的checkbox被正確識別。Reset()也是一個初始化用于view rending對象的合適地方。代碼看起來是這樣的:

          				
          				
          				
          						public class ProductForm extends ActionForm {
          ???? private Long id;
          ???? private Category category;
          ???? ...
          ???? public void reset(ActionMapping mapping, HttpServletRequest request)
          ???? {
          ????????super.reset( mapping, request );
          ????????if ( category == null ) { category = new Category(); }
          ???? }
          }




          Struts在使用用戶提交的值填寫ProductForm之前,Struts會調用reset(),這樣category屬性將會被初始化。請注意,你必須檢查category看它是不是null,后面我們會討論這個。

          編輯Form

          到目前為止,我們已經解決了form提交時候的問題。但是當我們在生成form頁面的時候呢?Html:select tag也希望有一個非空的引用,所以我們將在form生成頁面之前調用reset()。我們在action類里加入了一行:

          				
          				
          				
          						public class EditProductAction extends Action {
          ???? public final ActionForward execute( ActionMapping mapping, ActionForm form,
          ????????HttpServletRequest request, HttpServletResponse response ) throws Exception
          ???? {
          ????????...
          ????????Product product = createOrLoadProduct();
          ????????ProductForm productForm = (ProductForm)form;
          ????????PropertyUtils.copyProperties( productForm, product );
          ????????productForm.reset( mapping, request );
          ????????...
          ???? }
          }




          我假設讀者已經對action類和Jakarta commons Beanutils包非常熟悉了。CreateOrLoadProduct()建立了一個新的Product實例或者從數據庫里載入一個已有的實例,具體取決于這個action是建立或者修改Product的。ProductForm被賦值后(譯者:也就是調用PropertyUtils.copyProperties后),productForm.category已經從Product.category復制過來了(譯者:實際上只是復制了category對象引用,并沒有開銷),然后,ProductForm就能用來生成頁面了。我們同時也必須保證:不覆蓋已經被Hibernate載入的對象,所以我們必須檢查(category)是不是為null。

          因為reset()方法是在ActionForm中定義的,我們可以把上述代碼放入一個superclass,比如CommonEditAction,來處理這些事情:
          ????

          				
          				
          				
          						??????Product product = createOrLoadProduct();
          ????????PropertyUtils.copyProperties( form, product );
          ????????form.reset( mapping, request );



          如果你需要一個只讀的Form, 你有兩個選擇: 第一檢查所聯系的jsp對象是不是null, 第二復制domain對象到ActionForm之后調用Reset()

          保存domain對象

          我們解決了提交Form和生成Form頁面的問題, 所以Struts可以滿足了。但是Hibernate呢?當用戶選擇了一個null ID option – 在我們的例子中“no category”option- 并且提交form, productForm.category指向一個新建立的hibernate對象,id為null。當category屬性從ProductForm復制到Hibernate控制的Product對象并且存儲時,Hibernate會抱怨product.category是一個臨時對象,需要在Product存儲前先被存儲。當然,我們知道它是Null,并且不需要被存儲。所以我們需要將product.category置為Null,然后Hibernate就能存儲Product了(譯者:在這種情況下,數據庫product.category被設成空值)。我們也不希望改變Hibernate的工作方式,所以我們選擇在復制到Domain對象之前清理這些臨時對象,我們在ProductForm中加了一個方法:

          				
          				
          				
          						public class ProductForm extends ActionForm {
          ???? private Long id;
          ???? private Category category;
          ???? ...
          ???? public void reset(ActionMapping mapping, HttpServletRequest request) {
          ????????super.reset( mapping, request );
          ????????if ( category == null ) { category = new Category(); }
          ???? }

          ???? public void cleanupEmptyObjects() {
          ????????if ( category.getId() == null ) { category = null; }
          ???? }
          }




          我們在copyProperties之前清理掉這些臨時對象,所以如果ProductForm.category只是用來放Null的,則將ProductForm.category置為Null。然后Domain對象的category也會被設成null:

          				
          				
          				
          						public class SaveProductAction extends Action {
          ???? public final ActionForward execute( ActionMapping mapping, ActionForm form,
          ????????HttpServletRequest request, HttpServletResponse response ) throws Exception
          ???? {
          ????????...
          ????????Product product = new Product();
          ????????((ProductForm)form).cleanupEmptyObjects();
          ????????PropertyUtils.copyProperties( product, form );
          ????????SaveProduct( product );
          ????????...
          ???? }
          }




          一對多關系

          我還沒有解決Category到Product的一對多關系。我們把它加入到Category的Metadata中:

          				
          				
          				
          						public class Category {
          ???? ...
          ???? private Set products;
          ???? ...

          ???? /**
          ??????* @hibernate.set
          ??????* table="PRODUCT"
          ??????* lazy="true"
          ??????* outer-join="auto"
          ??????* inverse="true"
          ??????* cascade="all-delete-orphan"
          ??????*
          ??????* @hibernate.collection-key
          ??????* column="CATEGORY_ID"
          ??????*
          ??????* @hibernate.collection-one-to-many
          ??????* class="Product"
          ??????*/
          ???? public Set getProducts() {
          ????????return products;
          ???? }

          ???? public void setProducts(Set products) {
          ????????this.products = products;
          ???? }
          }



          注意:Hibernate的cascade屬性為all-delete-orphan表明:Hibernate需要在存儲包含的Category對象時候,自動存儲Product對象。和parent對象一起存儲child對象的情況并不常見,常見的是:分別控制child的存儲和parent的存儲。在我們的例子中,我們可以容易地做到這一點,如果我們允許用戶在同一個html page編輯Category和ProductS。用set表示Products是非常直觀的:

          				
          				
          				
          						public class CategoryForm extends ActionForm {
          ???? private Set productForms;
          ???? ...
          ???? public void reset(ActionMapping mapping, HttpServletRequest request) {
          ????????super.reset( mapping, request );

          ????????for ( int i = 0; i < MAX_PRODUCT_NUM_ON_PAGE; i++ ) {
          ?????????? ProductForm productForm = new ProductForm();
          ?????????? productForm.reset( mapping, request );
          ?????????? productForms.add( productForm );
          ????????}
          ???? }

          ???? public void cleanupEmptyObjects() {
          ????????for ( Iterator i = productForms.iterator(); i.hasNext(); ) {
          ?????????? ProductForm productForm = (ProductForm) i.next();
          ?????????? productForm.cleanupEmptyObjects();
          ????????}
          ???? }
          }




          更進一步
          我們已經可以察看,編輯,提交forms,并且存儲相關的objects,但是為所有的ActionForm類定義CleanupEmptyObjects()和reset()方法是個累贅。我們將用一個抽象的ActionForm來完成協助完成這些工作。

          作為通用的實現,我們必須遍歷所有的Hibernate管理的domain對象,發現他們的identifier,并且測試id值。幸運的是:org.hibernate.metadata包已經有兩個Utility類能取出domain對象的元數據。我們用ClassMetadata類檢查這個object是不是Hibernate管理的。如果是:我們把它們的id Value取出來。我們用了Jakarta Commons Beanutils包來協助JavaBean元數據的操作。

          				
          				
          				
          						import java.beans.PropertyDescriptor;
          import org.apache.commons.beanutils.PropertyUtils;
          import org.hibernate.metadata.ClassMetadata;

          public abstract class AbstractForm extends ActionForm {
          ?? public void reset(ActionMapping mapping, HttpServletRequest request) {
          ??????super.reset( mapping, request );

          ??????// Get PropertyDescriptor of all bean properties
          ??????PropertyDescriptor descriptors[] =
          ???????? PropertyUtils.getPropertyDescriptors( this );

          ??????for ( int i = 0; i < descriptors.length; i++ ) {
          ???????? Class propClass = descriptors[i].getPropertyType();

          ???????? ClassMetadata classMetadata = HibernateUtil.getSessionFactory()
          ????????????.getClassMetadata( propClass );

          ???????? if ( classMetadata != null ) {?? // This is a Hibernate object
          ????????????String propName = descriptors[i].getName();
          ????????????Object propValue = PropertyUtils.getProperty( this, propName );

          ????????????// Evaluate property, create new instance if it is null
          ????????????if ( propValue == null ) {
          ?????????????? PropertyUtils.setProperty( this, propName, propClass.newInstance() );
          ????????????}
          ???????? }
          ??????}
          ?? }

          ?? public void cleanupEmptyObjects() {
          ??????// Get PropertyDescriptor of all bean properties
          ??????PropertyDescriptor descriptors[] =
          ??????PropertyUtils.getPropertyDescriptors( this );

          ??????for ( int i = 0; i < descriptors.length; i++ ) {
          ???????? Class propClass = descriptors[i].getPropertyType();
          ???????? ClassMetadata classMetadata = HibernateUtil.getSessionFactory()
          ????????????.getClassMetadata( propClass );

          ???????? if ( classMetadata != null ) {?? // This is a Hibernate object
          ????????????Serializable id = classMetadata.getIdentifier( this, EntityMode.POJO );

          ????????????// If the object id has not been set, release the object.
          ????????????// Define application specific rules of not-set id here,
          ????????????// e.g. id == null, id == 0, etc.
          ????????????if ( id == null ) {
          ?????????????? String propName = descriptors[i].getName();
          ?????????????? PropertyUtils.setProperty( this, propName, null );
          ????????????}


          ???????? }
          ??????}
          ?? }
          }



          為了讓代碼可讀,我們省略了Exception的處理代碼。

          我們的新AbstractForm類從Struts的ActionForm類繼承,并且提供了通用行為:reset和cleanup多對一關聯對象。當這個關系是相反的話(也就是一對多關系),那么每個例子將會有所不同,類似在Abstract類里實現是比較好的辦法。

          總結

          Struts和Hibernate是非常流行和強大的框架,他們可以有效地相互合作,并且彌補domain模型和MVC視圖(view)之間的差別。這篇文章討論一個解決Struts/Hibernate Project的通用的方案,并且不需要大量修改已經有的代碼。

          posted @ 2006-04-30 09:01 崛起的程序員 閱讀(283) | 評論 (0)編輯 收藏
          僅列出標題
          共9頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 
          主站蜘蛛池模板: 莲花县| 偏关县| 淮滨县| 巴青县| 南溪县| 梅河口市| 阿合奇县| 搜索| 双峰县| 奉贤区| 固镇县| 庆云县| 泸州市| 泾川县| 崇信县| 广灵县| 牙克石市| 平顺县| 沙洋县| 华安县| 门头沟区| 高邑县| 高陵县| 泸水县| 哈密市| 乃东县| 东方市| 新化县| 大化| 海南省| 寿阳县| 洞口县| 石台县| 德格县| 永宁县| 交口县| 拉孜县| 绥江县| 青铜峡市| 鸡西市| 新密市|