• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            QuXiao

            每天進步一點點!

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              50 隨筆 :: 0 文章 :: 27 評論 :: 0 Trackbacks

            #

                01. Bowling For Columbine (2002) Michael Moore 邁克爾·摩爾《科倫拜恩的保齡》

                一部令人反思的探討美國槍械暴力的紀錄片,榮獲今年奧斯卡最佳紀錄片大獎。

                02. The Thin Blue Line (1988) Errol Morris 埃羅爾.莫里斯《細細的藍線》

                紀錄電影中的經典之作。電影講述1976年美國德州達拉斯市一個被冤枉的人犯,因 謀殺警察被判有罪而終身監禁,11后終因真相大白而洗清罪行的故事。喜歡電影〈肖申克的救贖〉的一定不能錯過這部片子。同時美國作曲大師菲利浦.葛拉斯 (Philip Glass)為該片配制了精彩而令人難忘的音樂。

                03. Roger & Me (1990) Michael Moore 邁克爾·摩爾《羅杰和我》

                有關美國大企業因裁員而導致工人失業等一系列問題的記錄,贏得多個重要紀錄片獎項。

                04. Hoop Dreams (1994) Steve James 史提夫.詹姆斯《籃球夢》

                兩個黑人男孩為圓他們的NBA之夢而各自展現不同生活經歷的故事。

                05. Salesman (1969) Albert and David Maysles梅索斯兄弟 《推銷員》

                (美國)阿爾伯特·梅索斯、大衛·梅索斯 Aobert Maysles(1926-)&David Maysles (1932-1987)

                梅索斯兄弟的代表作 ,影片記錄了四個挨家挨戶推銷圣經的推銷員的辛酸經歷。電影《推銷員》因真實客觀的情節感動了無數的觀眾,其中包括一個名叫芭芭拉·考普勒的女孩,在看過 這部電影后,便跑去追隨梅索斯兄弟拍片,日后她自己也成為一位優秀的紀錄片導演,并且先后以《美國哈蘭縣》(Harlan County, USA )和《美國夢》(American Dream)贏得兩座奧斯卡金像獎。

                06. Nanook Of The North (1922) Robert Flaherty 羅伯特弗拉哈迪《北方的納努克》

                07. Night And Fog (1955) Alain Resnais 阿倫雷乃《夜與霧》

                08. Harlan County, USA (1976) Barbara Kopple 芭芭拉·考普勒《美國哈蘭縣》

                09. Grey Gardens (1975) Albert and David Maysles 梅索斯兄弟《灰色花園》

                10. The Civil War (1990) Ken Burns 肯·伯恩斯《南北戰爭》

                11. Crumb (1994) Terry Zwigoff 特里澤維格夫《漫畫大師羅伯特克魯伯》

                12. Gimme Shelter (1970) Albert and David Maysles .梅索斯兄弟《滾石----給我一個避難所》或《變調搖滾樂》

                13. 7 Up (1963) Michael Apted 邁克爾·艾普泰德《7 Up 》系列

                14. Fast, Cheap & Out Of Control (1997) Errol Morris埃羅爾莫里斯《又快又賤又失控》

                15. Titicut Follies (1967) Frederick Wiseman 費特力克.懷斯曼《提提卡失序記事》

                16. When We Were Kings (1996) Leon Gast利昴加斯特 《一代拳王:阿里》

                17. American Movie: The Making Of Northwestern (1999) Chris Smith 克利

                斯·史密斯 《導演狂想曲》

                18. Shoah (1985) Claude Lanzmann克勞德藍斯曼《毀滅》

                19. The Man With A Movie Camera (1929) Dziga Vertov 維爾托夫《持攝象機的人》

                20. Sherman's March (1986) Ross McElwee 羅斯麥凱維《謝爾曼將軍的征程》(完)

            posted @ 2009-08-27 20:39 quxiao 閱讀(264) | 評論 (0)編輯 收藏

            嵌入式門檻雖然較高,但和其他事物一樣,并不是牢不可破的.
            學習步驟如下:
            1、《C語言》第二版 譚浩強; 《C程序設計語言》第二版 徐寶文譯機戒工業出版社
            2、《數據結構》C語言版 黃國愉、葉乃青編清華大學出版社
            3、《實用C++程序設計》第二板 中國電力出版社 Steve_Oualline著
                此階段主要是學習其面向對象的編程思想,加深對C語言和數據結構的理解。
            4、學習單片機
                你能用51單片機做出一樣實際的東西嗎?即使它再簡單!
                要注意加深對中斷的理解。
            5、學習ARM單片機。
               (1)、細讀《ARM微控制器基礎與實戰》周立功編寫(注:即使你不用書中的開發板)
               (2)、細讀相關芯片的原版英文文檔。如:ARM920TE.pdf S3C2410_1.2.pdf
            6、學習uCOS!!操作系統。
               (1)、細讀《嵌入式實時操作系統uC/OS-!!》第二版召貝貝譯
               你能把uCOS!!移植到自己的平臺上嗎?
               (2)、能編寫在uCOS!!操作系統環境下運行的針對具體硬件的驅動程序
            7、熟悉Linux環境,學習Linux環境編程,學習交叉編程
               (1)、細讀《Linux命令大全.pdf》
               (2)、細讀《GNU Make 使用手冊(中譯版).pdf》
               (3)、學習創建交叉編程環境.
            8、學習Linux操作系統。
               (1)、《UNIX環境高級編程》
               (2)、細讀“joyfire 筆記”,可在“www.qianrushi.com”網站的好書下載欄目獲取
               (3)、細讀《Linux內核完全注釋》
               (4)、細讀《understanding the Linux kernel 2》
               (5)、利用源代碼閱讀利器工具”Source Insight”進行真正的Linux內核原碼刨析
               (6)、最后進行內核移植,能編寫在Linux操作系統環境下運行的針對具體硬件的驅動程序
            9、學習Linux設備驅動編寫。可參考《Linux設備驅動程序》
            10、復習C++,學習用QT進行圖形界面編程
               (1)、細讀《QT編程寶典》
               (2)、學會通過查看QT電子文檔進行QT GUI實地編程
               (3)、學習交叉編程.(其實就是把命令qmake變為tmake)
            11、學習PCB的制作和設計一個自己的CPU(即軟殼)
            12、要想成為高手中的高手,最好從鉆研如下領域修煉:
                分析一種rtos的源代碼--ucos最容易;
                分析一種通訊協議棧的實現方式--tcp/ip最實用;
                精通一種dsp的開發集成環境--ti ccs2.1最優秀,精華在其內帶的rtos;
                精通一種單片機的開發集成環境--keil c最經典;
                精通一種mcu的開發集成環境--ads 1.2最流行;
            13、要想成為大師級人物再從如下領域開始修煉:
                精通一種系統建模語言和工具--telelogic tau sdl/uml suit最經典;
                精通一種算法仿真工具--matlab simulink 最便宜;
            posted @ 2009-08-26 08:58 quxiao 閱讀(182) | 評論 (0)編輯 收藏

            如果一個人要對金融和投資方面的實際知識得到比較深入的了解,十五本書無疑是遠遠不夠的。然而,很少有人真的能在短時間內讀完十五本書。除了讀書之外,正確的思考或許才是最重要的東西。

                   一本有趣的書往往是有益的書,反之則未必如此。許多在學術上有崇高造詣的著作是無法帶來任何閱讀樂趣的。在某個狹小的專業領域極有參考價值的書,往往也過 于艱澀。以下列出的十五本書屬于“有趣又有益”的交集——盡管它們并不像驚險小說那樣好讀,但至少不至于讓人頭昏腦脹又不知所云。

                   隨著時間的進步,金融技術和投資技巧的發展都已經比幾十年前先進了許多。但是某些基本原理是不變的,所以我相信,以下列出的十五本書,在幾十年后至少還有一大部分是值得閱讀的。

            1、
            本杰明-格雷厄姆:《證券分析》(Securities Analysis)

            如果整個證券研究領域的書籍全部被焚燒了,僅僅憑借這樣一本書,這個行業也必將重建。大本沒有建立任何精確的學術模型,卻恰到好處地切入了學術和實踐之間。他既不向浮躁的現實低頭,也不向自大的學術低頭。通過眾多紛繁復雜的例子,大本把自己的理論建立在非常具體的基礎上。

            雖然以知名股票投資家著稱,但大本的《證券分析》的大部分內容是關于債券和優先股,而且其價值并不遜色于股票部分。大本精辟地指出,選擇良好債券的藝術可以在一定程度上轉換為選擇良好股票的藝術,這兩者之間的聯系遠比人們想像的緊密。

             

             

            2、本杰明-格雷厄姆:《聰明的投資者》(The Intelligent Investor)

            在這本書里,大本回避了大部分艱澀的定量分析,幾乎不討論股票與債券投資的具體技術,而把全部精力集中在對“投資”一詞的定義上。從第一章到最后一章,大本都試圖找出投資與投機的根本區別,并在現實案例中闡述這些區別。

            《聰明的投資者》的精髓在于對風險的控制。大本從來不講述一夜暴富的技術。他認為投資應該在一個可以承受的風險水平上帶來滿意的回報,剩下的內容全部用來回答兩個更具體的問題:什么是可以承受的風險,什么又是滿意的回報。


            3、本杰明-格雷厄姆:《價值再發現》(Rediscovering Benjamin Graham)

            除了以上兩本書,大本曾經在多種學術和商業期刊上發表大量專業文章,并在高等院校和研究機構進行演講。《價值再發現》一書收錄了大本晚年發表的最有價值的文章和演講,不僅涉及財務報表分析和投資學原理,還涉及貨幣銀行和宏觀經濟學內容。

            大本發表的大部分文章都有濃厚的悲觀主義情緒,所以他在華爾街并不是受歡迎的人。幾十年過去,今天的讀者可以更加心平氣和地體會他的教誨——對于價值投資理念的信奉,對風險控制的執著以及對頻繁交易的厭惡。這些教誨在今天仍然沒有得到執行。


            4、喬治-索羅斯:《金融煉金術》(The Alchemy of Finance)

            索羅斯的大部分言論都充斥著狂妄自大的氣息,但考慮到他的宏大功業,這樣的自大是可以理解的。在《金融煉金術》中,他試圖建立金融市場的所謂“反身性”原理,即投資者與投資標的之間的復雜的相互作用,并且用這種原理來解釋整個社會科學。

            為 了證明他的理論,索羅斯聲稱他運用自己的對沖基金進行了“歷時實驗”,包括實驗期和對照期。這個歷時實驗發生在量子基金最輝煌的時期——1986年至 1987年。索羅斯告誡我們,歷時實驗不重要,重要的是理論;可是事與愿違,對于非哲學專業讀者來說,唯一有價值的部分可能就是歷時實驗。


            5、戴維-法柏:《法柏報告》(The Faber Report)

            在所有講述華爾街現狀的書里,法柏的著作不一定是最好的,但是是實例最多、證據最充足、最能讓人感到身臨其境的著作之一。這本書是他長期采訪銀行家、分析師、基金經理和上市公司高管之后的經驗結晶,幾乎每一段都具備“口述史”的性質。

            法 柏經歷了1990年代的大牛市,2000年的網絡股泡沫,2001-02年的安然與世界通信丑聞以及許多偉大基金的興起和衰落。沒有必要采取任何戲劇性的 描寫,因為現實本身已經很有戲劇性了。法柏對大部分事務采取批評的態度,有些評價簡直是刻薄。但是他最后仍然承認,“華爾街是這個世界上最不壞的地方”。


            6、理查斯-蓋斯特:《最后的合伙人》(The Last Partners)

            蓋斯特通過合伙人制度的誕生、發展、衰落與毀滅,寫出了一部嚴謹深刻的華爾街史。他從19世紀中葉開始敘述那些最偉大的合伙人家族——摩根家族、戈德曼家族、雷曼家族以及許多你沒有聽說過的延續百年的大家族。此后,隨著金融業越來越成為資本主宰的行業,合伙制被摧毀了。

            這本書不是合伙制的挽歌,作者對那些舊的家族沒有太多同情。他只是指出,變幻莫測的華爾街讓我們忘記了太多東西,適當地閱讀是非常有益的。或許有一天,已經發生過的一切會以某種奇特的形式卷土重來。


            7、理查斯-蓋斯特:《金融體系中的投資銀行》(Investment Banking in Financial System)

            這本書是我所見過的最清晰詳盡的投資銀行學教材。作者不但深入討論了廣義投資銀行業的每一個領域——證券承銷、并購咨詢、資本市場、銷售與交易、證券研究、零售經紀和基金管理,還探討了投資銀行與商業銀行以及監管者的千絲萬縷的聯系。難能可貴的是,蓋斯特特別注重探討投資銀行界,并將華爾街史視為一個發展的過程。

            蓋斯特的重點描述放在華爾街,但他并未忽視歐洲和日本。遺憾的是,這本書主要討論的監管政策是美國的政策。這些政策或許不能解釋其他國家投資銀行業的深刻變化。也許技術手段和投資觀念的進步,才是這個行業變動的根本動力。


            8、華爾街日報》編輯部:《華爾街巨人》(Who's Who and What's What)

            這 是一本5年前出版的“華爾街百科手冊”,在這里你可以找到許多已經消失的名字:所羅門美邦、潘恩韋伯、基德-皮博蒂乃至德雷克賽-哈頓。書中描述的市場環 境和監管措施與今天已經有很大區別,但還不是天壤之別。為什么推薦這本書?因為它是由那些最了解華爾街的人撰寫的,這些人知道華爾街巨人背后的秘密

            在每一個華爾街巨人的簡介之后,緊接著的是幾篇著名人物傳記——出色的銀行家,偉大的交易員,以及某些惡名昭彰的“壞孩子”。作者的筆調在輕松和嚴肅之間游走,而且經常能夠一針見血地指出重要細節。這就是所謂的“華爾街日報體”,他們總是能夠見微知著。


            9、伯頓-麥基爾:《漫步華爾街》(A Random Walk on Wall Street)

            麥基爾是極少數在學術界和實踐界都做出重大成就的人物,他既是經濟學家,又是職業投資者和分析師。他的核心觀點只有一條:金融市場是有效的,證券價格的波動歸根結底是隨機漫步,所以華爾街是一個不應該存在的地方。

            以 上陳詞濫調我們早已在課本上讀過了,但是麥基爾用一種生動活潑的方式闡述了他的理論。他沒有用一兩個公式來糊弄我們,而是深入剖析了在現代工商業和金融業 體系中蘊含的有效性和隨機性,這些特性使一切技術分析和基本分析都趨于無效。我不贊成麥基爾的結論,但我們無法忽視他的論證,那簡直是天才和雄辯的偉大結 合。


            10、沃倫-巴菲特:《巴菲特致股東的信》(Letters to Shareholders)

            巴菲特沒有撰寫過什么專業著作,唯一的作品是每年寫給伯克夏哈撒維公司股東的信。他每年都重復一些似乎早已過氣的言論,例如現金的重要性,公司管理層的重要性,在折扣價格購買資產的重要性以及“為增長付出恰當代價”的重要性。

            僅 僅從一個細節就可以看出巴菲特的偉大——在目錄中,排在最前面的是“公司治理”,其次才是“公司財務”。人們往往把巴菲特視為財務和稅務專家,但他在鑒別 公司經理人方面的才能無人能及。其實他的每一句話都可以歸結為我們耳熟能詳的真理,只是用一種非常簡潔樸實的方式來表達而已。


            11、布魯斯-格林威爾:《價值投資》(Value Investing)

            價值投資究竟是什么?它應該購買瀕臨破產的低價股,還是購買氣勢如虹的藍籌股?從格雷厄姆開始,產生了許多價值投資的分支流派,成功的基金經理人擁有獨特的模型和選股方法,但是其核心仍然與格雷厄姆差別不大。

            格 林威爾分析了自格雷厄姆以來最成功的價值投資經理人——馬里奧-加比利、沃倫-巴菲特和保羅-索金等等,分析了他們成功和失敗的案例,指出了在絢爛的投資 行為背后的枯燥無味的模型。作為一位學者,格林威爾對模型的分析令人印象深刻;他的流暢文筆也可以使我們更深刻地認識到價值投資者成功的共同因素。


            12、彼得-伯恩斯坦:《有效資產管理》(The Intelligent Asset Allocater)

            作為金融學家,伯恩斯坦指出,盡管有效市場的存在使大部分證券分析手段都失去了價值,但是投資者仍然可以通過有效的資產配置來優化自己的回報。這本書花了大量時間討論投資的一些基本問題,例如什么是風險,為什么要用方差來度量風險,以及股票為什么對債券具有很高的溢價。對于初學者來說,這些討論尤其重要。

            伯恩斯坦并沒有給出什么精確的資產配置技巧,他只是一再強調分散配置資產、及時進行再平衡以及避免頻繁交易的重要性。他并不迷信定量分析工具,反而希望投資者們通過理性的判斷得出適合自己的資產配置結論,這在學者中是相當難得的。


            13、理查德-費里:《指數基金》(All About Index Funds)

            費里是一位投資組合分析師,也是有效市場假說的信奉者。他通過實證數據和自己多年工作的經驗證明,積極管理的股票基金想打敗市場是不現實的,所以最佳的投資策略就是把資產妥善配置到各種指數基金中去。

            這 本書用大量篇幅描述了指數編制和再平衡的方法——指數基金怎樣做到盡可能模仿指數?怎樣克服流動性、交易成本和稅收方面的困難?那些與有效市場假說矛盾的 “增強型”“基本面型”指數基金有可能成功嗎?為什么固定收益方面的指數基金發展很慢?費里對這些問題一一做了力所能及的回答,但想說服所有人是不可能 的。所以,積極管理基金仍然占據著全球金融資產的大部分份額。


            14、大衛-史文森:《機構投資與基金管理的創新》(Pioneering Portfolio Management)

            作 為耶魯大學捐贈基金的主管,史文森取得了超越絕大多數同行的業績。他認為投資成功的關鍵不僅在于資產配置,也在于對各種資產門類的本質的深刻了解,以及在 投資決策中堅持科學審慎的原則。史文森并不排斥積極管理,但他指出,要避免過高的管理費用和過于危險的風險敞口。他還對捐贈基金的支出政策進行了點評。

            史文森舉出了大量生動的事例,告訴我們在變幻莫測的市場中持續取得佳績是何等困難。與我們想像的不同,他并未吹噓自己如何成功,而是嚴肅分析了其他人失敗的原因——過于輕率的投資決策,不恰當的風險管理,過高的資產管理費用以及“買漲賣跌”的錯誤心理等等。這些事例證明,心理或許是比技術更重要的因素


            15、斯蒂芬-戴維斯:《銀行并購:經驗與教訓》(Bank Mergers: Lessons for the Future)

            銀 行并購的浪潮席卷了整個世界,但是究竟有多少并購真的給股東帶來了價值?驅使管理層不斷收購或被收購的動機是什么?投資銀行、機構投資者和銀行管理層在并 購中各自扮演了什么角色?作為管理咨詢顧問,戴維斯用許多親身經歷的案例和訪談講述了許多典型的并購故事。毫無疑問,大部分失敗了,但成功者的獎賞很豐 厚。

            這本書從多個角度深入描述了并購的具體流程和主要問題。在這個并購橫行的世界上,如此冷靜的思考是少見的。作為一種復雜而且不穩定的金融機構,銀行并購可能是世界上最艱難的并購,所以了解銀行并購無疑就了解了并購問題的核心

            posted @ 2009-08-16 21:28 quxiao 閱讀(157) | 評論 (0)編輯 收藏

            1、Linux 基礎
            安裝Linux操作系統 Linux文件系統 Linux常用命令 Linux啟動過程詳解 熟悉Linux服務能夠獨立安裝Linux操作系統能夠熟練使用Linux系統的基本命令 認識Linux系統的常用服務安裝Linux操作系統 Linux基本命令實踐 設置Linux環境變量定制Linux的服務 Shell 編程基礎使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器
            2、Shell 編程基礎
            Shell簡介 認識后臺程序Bash編程熟悉Linux系統下的編輯環境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作 熟悉Emacs的基本操作 比較不同shell的區別 編寫一個測試服務器是否連通的shell腳本程序編寫一個查看進程是否存在的shell腳本程序 編寫一個帶有循環語句的shell腳本程序
            3、Linux 下的 C 編程基礎
            linux C語言環境概述 Gcc使用方法 Gdb調試技術 Autoconf Automake Makefile 代碼優化熟悉Linux系統下的開發環境 熟悉Gcc編譯器 熟悉Makefile規則編寫Hello,World程序 使用 make命令編譯程序編寫帶有一個循環的程序 調試一個有問題的程序
            4、嵌入式系統開發基礎
            嵌入式系統概述 交叉編譯 配置TFTP服務 配置NFS服務 下載Bootloader和內核嵌入式Linux應用軟件開發流程熟悉嵌入式系統概念以及開發流程 建立嵌入式系統開發環境制作cross_gcc工具鏈 編譯并下載U-boot 編譯并下載Linux內核 編譯并下載Linux應用程序
            4、嵌入式系統移植
            Linux內核代碼 平臺相關代碼分析 ARM平臺介紹 平臺移植的關鍵技術 移植Linux內核到 ARM平臺 了解移植的概念 能夠移植Linux內核移植Linux2.6內核到 ARM9開發板
            5、嵌入式 Linux 下串口通信
            串行I/O的基本概念 嵌入式Linux應用軟件開發流程 Linux系統的文件和設備 與文件相關的系統調用 配置超級終端和MiniCOM 能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序
            6、嵌入式系統中多進程程序設計
            Linux系統進程概述 嵌入式系統的進程特點 進程操作 守護進程 相關的系統調用了解Linux系統中進程的概念能夠編寫多進程程序編寫多進程程序 編寫一個守護進程程序 sleep系統調用任務管理、同步與通信 Linux任務概述任務調度 管道 信號共享內存 任務管理 API 了解Linux系統任務管理機制 熟悉進程間通信的幾種方式熟悉嵌入式Linux中的任務間同步與通信編寫一個簡單的管道程序實現文件傳輸 編寫一個使用共享內存的程序
            7、嵌入式系統中多線程程序設計
            線程的基礎知識 多線程編程方法 線程應用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序
            8、嵌入式 Linux 網絡編程
            網絡基礎知識 嵌入式Linux中TCP/IP網絡結構 socket 編程 常用 API函數 分析Ping命令的實現 基本UDP套接口編程許可證管理 PPP協議 GPRS 了解嵌入式Linux網絡體系結構 能夠進行嵌入式Linux環境下的socket 編程熟悉UDP協議、PPP協議 熟悉GPRS 使用socket 編寫代理服務器 使用socket 編寫路由器 編寫許可證服務器指出TCP和UDP的優缺點 編寫一個web服務器 編寫一個運行在 ARM平臺的網絡播放器
            9、GUI 程序開發
            GUI基礎 嵌入式系統GUI類型 編譯QT 進行QT開發熟悉嵌入式系統常用的GUI 能夠進行QT編程使用QT編寫“Hello,World”程序 調試一個加入信號/槽的實例 通過重載QWidget 類方法處理事件
            10、Linux 字符設備驅動程序
            設備驅動程序基礎知識 Linux系統的模塊 字符設備驅動分析 fs_operation結構 加載驅動程序了解設備驅動程序的概念了解Linux字符設備驅動程序結構 能夠編寫字符設備驅動程序編寫Skull驅動 編寫鍵盤驅動 編寫I/O驅動 分析一個看門狗驅動程序對比Linux2.6內核與2.4內核中字符設備驅動的不同Linux 塊設備驅動程序塊設備驅動程序工作原理 典型的塊設備驅動程序分析塊設備的讀寫請求隊列了解Linux塊設備驅動程序結構 能夠編寫簡單的塊設備驅動程序比較字符設備與塊設備的異同 編寫MMC卡驅動程序分析一個文件系統 對比Linux2.6內核與2.4內核中塊設備驅動的不同
            11、文件系統
            虛擬文件系統 文件系統的建立 ramfs內存文件系統 proc文件系統 devfs 文件系統 MTD技術簡介 MTD塊設備初始化 MTD塊設備的讀寫操作了解Linux系統的文件系統 了解嵌入式Linux的文件系統 了解MTD技術 能夠編寫簡單的文件系統為 ARM9開發板添加 MTD支持 移植JFFS2文件系統 通過proc文件系統修改操作系統參數 分析romfs 文件系統源代碼創建一個cramfs 文件系統
            posted @ 2009-08-07 09:10 quxiao 閱讀(279) | 評論 (0)編輯 收藏

            一、關于企業計算方向

              企業計算(Enterprise Computing)是稍時髦較好聽的名詞,主要是指企業信息系統,如ERP軟件(企業資源規劃)、CRM軟件(客戶關系管理)、SCM軟件(供應鏈管理,即物流軟件),銀行證券軟件,財務軟件,電子商務/政務(包括各種網站),數據倉庫,數據挖掘,商務智能等企業信息管理系統。

              企業計算領域對人才的需求顯然永遠是數量最大的,因為這是計算機應用最多的領域。 搞這方面的好處是:

              (1)人才需求量極大,從事企業計算的公司在IT企業中占了大多數。除非在專業上一無特長,一般在這一領域總能找到工作。

              (2)這方面的入門門檻相對較低(如果你的軟件功底不是很深,可考慮這一領域)

              (3)這方面的大公司較多,大公司要賺大錢,所以多將精力花在企業計算業務上。如與正規高校軟件學院同學目前實習的CitiCorp、HP、IBM、SAP、NEC等公司都屬這一領域的公司。如果將來想到大公司找一份相對穩定的工作,從事這方面機會要大很多。

              但從事這一領域的缺點也是明顯的:

              由于這方面的入門門檻相對較低,雖然這方面的人才需求量是最大的,但將來競爭對手會較多。您會發現,即使他原不是學IT專業的人,也許他突擊幾個月后,做得照樣像模像樣。特別是當您年紀漸大后,您可能會發現,后面的年輕人可能很容易追上你的水平。如果您將來到國外去工作,你可能會發現從事這領域的人更多且高手如云。當然,若您在這一領域經過多年企業經驗,達到較高境界(如能設計軟件架構),則身價永遠是高的。國內在這方面人才領域的主要問題是,有經驗的高手太少,皮毛了解的人太多。

              從事企業計算領域,最重要的技能型技術課程是(1)J2EE架構與程序設計(2)大型數據庫系統 (如Oracle)(3)基于UML的系統分析與設計。如果說還有什么重要的技能,還可將XML與Web Service技術包含進來,若您在這幾個領域掌握較好,則不愁找不到工作。其中尤其以J2EE最為重要,目前J2EE已成為企業計算軟件開發的最主要平臺,也是正規高校軟件學院的最重要課程之一。盡管該課程只能作為選修課,我們希望正規高校軟件學院同學無論將來想從事何種方向,都應學一下J2EE課程,至少可為將來找工作備一手關鍵功夫。包括想從事嵌入式或其它領域的同學,也是很有必要學一下J2EE的,畢竟J2EE是目前最重要的平臺之一,即使您將來不想從事企業計算領域,了解一下J2EE也是必要的,就像一門常識課程一樣。其它與企業計算關系較密切的技能還包括:Dot Net架構與程序設計、軟件測試技術、軟件配置管理,該領域較高層次的技能包括數據倉庫技術、構件與中間件技術、設計模式等。像通信協議分析與網絡程序設計,Unix系統管理等也屬有些關系的課程。02級本學期開設的企業計算課程不多,主要是J2EE、Oracle/MSSQL、UML等企業計算領域的最關鍵技能型技術課程都已學完了(但不知有多少同學學得較深入,將來找工作時會用到這些技能)。下學期我們將在該領域中擬再開設XML與Web Service技術、軟件配置管理等課程。本學期開設的企業計算領域課程的確不多,但您應在空余時間將J2EE,DB、UML等技術再深入地鉆研下去,一定要在某個領域有深入的掌握。只是跟著聽課,即使學了再多課程也是沒用處的,自己鉆研下去才是最重要的。只一個J2EE便是博大精深的,足夠你啃下去的,鉆研下去,您會發現你還要學的相關知識還有很多(包括EJB、XML、Web Service、Design Pattern等)。

              雖然從事企業計算的人才很多,但以下企業計算領域無論國內外都屬稀缺人才:

              (1)掌握大型ERP系統,主要是SAP系統,包括 SAP Basis(系統管理)或SAP ABAP(編程)或SAP功能模塊實施(特別是財務模塊FI的實施)。SAP顧問身價是最高的,而且非常難找。其它大型ERP系統,掌握 PeopleSoft、Oracle Finacial、J。D。Edward、Siebel等大型ERP軟件系統的人也很值錢。這方面的人之所以身價奇高,主要是因為這些軟件很專業,特別大,很難有D版可學習,只有特大企業(如世界500強,90%以上使用SAP)才用得起,而且必須有實際工作經驗才能掌握。如果是一個個人人都很容易有機會接觸的軟件,那么這方面的人通常就不會稀缺。如果大家將來有機會接觸學習這些大型ERP軟件系統的機會,建議毫不猶豫地抓住,那將捧上一輩的金飯碗。在國外,會SAP的人特別值錢。物以稀為貴,這永遠是顛撲不破的真理。SAP的價值不僅是因為他是一個ERP軟件,而是其中體現的現代企業管理理念(如根據訂貨需求自動安排原料采購和生產計劃等)。一般500強公司絕不會像國內很多企業那樣,用J2EE從頭設計企業的ERP系統(即將是怎樣的人力投入,而且設計出來的系統怎么可能是完善的?),一定都會使用SAP這樣成熟的ERP軟件。用不起SAP的公司可能會用J2EE設計ERP系統。

              (2)掌握IBM大型機技術的人,如S/390主機,MVS操作系統,JCL作業控制語言,COBOL程序設計語言,DB2關系數據庫或IMS層次數據庫,CISC中間件交易控制系統等IBM大型機專用技術。國內五大銀行,以及國外絕大多數銀行的后臺系統使用的都是以上平臺。IBM大型機號稱永不宕機而且平臺相對封閉(這樣最安全),所以這些要求在24*7環境中連續運行的關鍵應用(術語叫mission critical applications)都采用IBM大型機。這方面的人才之所以稀缺,是因為會大型機的人都是老人(90年代以前搞IT的人),全世界新畢業的IT畢業生不可能再去學IBM大型機(這是一種相對“古老“的技術),沒有新人補上,而銀行的系統必須維持下去而且銀行還要不斷開發新業務(如新的存款品種),雖然對IBM大型機人才的絕對需求量不很大,但相對恒定,銀行到哪里找這方面的新人,很難找到。若好找,花旗軟件也不會花那么大的代價去培訓我們的實習同學了(去年培訓20多個人,聽說公司就花了數十萬元培訓費)。如果您將來到國外找工作,會IBM大型機可能是最好找工作的領域之一了,而且保證找的都是大銀行等好工作,我以前教過的計算機專業90-94級的一些同學,凡是畢業后從事大型機開發的,現多在國外一些很好的公司工作(有幾位同學在各國各公司跳來跳去,簡直如履平地)。其實我覺得我們最幸福的同學就是在花旗軟件做IBM大型機銀行軟件的同學,這樣的機會太難得了。正規高校軟件學院00級2+2班一位同學,當初放棄保研,看準在花旗軟件做大型機并且非常努力,還未畢業,公司便派她到國外參加一個項目的開發,成了項目骨干,我覺得她當初選擇是完全正確的(01級一位女同學剛剛也自愿放棄了保研機會去花旗做大型機,我們祝愿她將來也能有好的前景。其實像花旗軟件主動安排并鼓勵員工讀在職研究生,這樣開明的公司目前并不多的,在職讀研也是一種不錯的選擇,又不會失去自己喜歡的實習工作機會,能兼顧),讀書的最終目地還是為了工作。如果您將來在國外找工作,根本沒人管您是什么文憑,國外企業絕不會花冤枉錢,只會招有領域工作經驗能立即上手的人,用最少的錢在限定的時間完成項目。而在國內,因為人力成本較低,公司招聘一很多高學歷的人才,盡管可能根本用不到這么高的學歷,但國內的人力太便宜了,為什么不高消費一下人才呢?這樣公司的門面還要好看些。

              (3)其它如掌握數據倉庫技術的人在國內也很少。 目前最主流的數據倉庫平臺應是ORACLE的數據倉庫工具。 在國外,會一些特殊數據倉庫的人,如NCR/TEREDATA的人非常難找。

              我們的同學現在年紀都很輕,年輕人充滿熱情,喜歡追逐一些熱門技術,這當然正確的,畢竟學習SAP和大型機的機會畢竟不多,畢業時先能找到一份工作是重要的。但我相信隨著年紀的增長,大家將來慢慢都會思考的,掌握一項競爭對手較少的絕技的重要性,將來如果自己到國外工作什么技術最好找工作(對搞軟件的人到國外工作或移民是最容易的,也許您現在不想,但我相信工作多年以后,很大一部分同學可能想到國外闖蕩一下),你要考慮你今后一生的出路,什么樣的絕技是最穩定最輕松最高收入的。搞軟件的人,當年紀大些時,您可能更向住像搞醫學人的那樣能更多靠經驗吃飯,而不須整天像年輕人那樣不得不去追逐不斷出現的軟件新技術,這個時候也許您也許會發現,如果您在SAP或大型機等方面有些絕技,您會有很大優勢,因為這些較偏的領域其技術變化是相對很緩慢的。

              我還記得在2000年時我曾在業余時間與一位德國人合作面試一些IT人才到德國去,那時德方各公司發來的需求有很多是SAP和IBM大型機的,我們在眾多應聘者中最后也未找到一個在這方面有經驗,甚至是有一點經驗的。 相反,掌握流行技術的人因太多而不很值錢。

              我們的同學將來找工作時,不僅要盯著國內市場,還要有一種放眼全球的眼光,對搞軟件的人您將來完全可能到其它國家去工作。尤其是在歐美、日本、新加坡等國家,對SAP(包括IBM大型機)人才的需求是很大的。畢竟比同學見得多些,提醒同學將來多留意有學習這些絕技的機會,一旦有機會建議當仁不讓。 國內的人才市場可訪問www。51job。com,國外的IT人才需求可訪問www。hotjobs。com、www。workopolis。com、www。monster。com等著名網站。應經常訪問這些網站,以了解市場對人才的具體需求,早做準備。

              以上對企業計算領域的觀點,供大家參考。雖然觀點未必正確,但確是直言不諱。 總之,每個人的腦袋都長在自己脖子上,每個人都應有自己的判斷。

              還要注意,我以上純粹是從將來就業的角度談問題。 如果您將來準備到國外讀書,則應重視基礎課,像C,Assembly,OOP,Discrete Math,Data Structure,Opeating System,Database Principle,Network,Software Engineering,Compiler,Digital Circuit,Computer Graphics,Computer Component and Architecture等基礎課,在國外大學IT專業中一般都能找到相同課程,若國內學過,到國外讀書時一般可申請免修一部分。但我也想提醒同學,如果您將來畢業時萬一申請國外大學不成,不得不去找工作時,若只將精力花在這些IT專業學生都會的基礎課上(傳統IT教育模式),未掌握一些像J2EE等技能型技術,是不容易找到一份工作的,我們已有同學有這樣的教訓。從找工作的角度講,企業關心的不是您學過什么課程,而是關心您能做什么,有什么技能,能做什么項目。 

              二、關于嵌入式系統方向

              嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。

              嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。

              一類是學電子工程、通信工程等偏硬件專業出身的人,他們主要是搞硬件設計,有時要開發一些與硬件關系最密切的最底層軟件,如BootLoader、Board Support Package(像PC的BIOS一樣,往下驅動硬件,往上支持操作系統),最初級的硬件驅動程序等。他們的優勢是對硬件原理非常清楚,不足是他們更擅長定義各種硬件接口,但對復雜軟件系統往往力不從心(例如嵌入式操作系統原理和復雜應用軟件等)。
              另一類是學軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。如果我們學軟件的人對硬件原理和接口有較好的掌握,我們完全也可寫BSP和硬件驅動程序。嵌入式硬件設計完后,各種功能就全靠軟件來實現了,嵌入式設備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統的最主要工作(目前有很多公司將硬件設計包給了專門的硬件公司,稍復雜的硬件都交給臺灣或國外公司設計,國內的硬件設計力量很弱,很多嵌入式公司自己只負責開發軟件,因為公司都知道,嵌入式產品的差異很大程度在軟件上,在軟件方面是最有“花頭“可做的),所以我們搞軟件的人完全不用擔心我們在嵌入式市場上的用武之地,越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢。

              從事嵌入式軟件開發的好處是:

              (1) 目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟件(例如操作系統級、驅動程序級軟件),對軟件專業水平要求較高 (嵌入式系統對軟件設計的時間和空間效率要求較高),而且必須懂得硬件的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬件技術出現時間不長或正在出現(如ARM處理器、嵌入式操作系統、MPEG技術、無線通信協議等),掌握這些新技術的人當然很找。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟件,另外需要有經驗的人進行指導開發流程。

              (2) 與企業計算等應用軟件不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。搞企業應用軟件的IT企業,這個用戶的系統搞完了,又得去搞下一個用戶的,而且每個用戶的需求和完成時間都得按客戶要求改變,往往疲于奔命,重復勞動。相比而言,搞嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事。所開發的產品通常是通用的,不會因客戶的不同而修改。一個產品型號開發完了,往往有較長一段空閑時間(或只是對軟件進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟件的每個人工作范圍相對狹窄,所涉及的專業技術范圍就是那些(ARM、RTOS、MPEG、802。11等),時間長了這些東西會越搞越有經驗,賣賣老本,幾句指導也夠讓那些初入道者琢磨半年的。若搞應用軟件,可能下一個客戶要換成一個完全不同的軟件開發平臺,那就苦了。

              (3) 哪天若想創業,搞自已的產品,那么嵌入式是一個不錯的主意,這可不像應用軟件那樣容易被盜版。土木學院有一個叫啟明星的公司開發出一個好象叫“工程e”的掌上PDA(南校區門口有廣告),施工技術人員用該PDA可當場進行土木概預算和其它土木計算,據說銷路特好。我認識的某大學老師,他開發的飯館用的點菜 PDA(WinCE平臺,可無線連網和上網),據他說銷路不錯,飯館點點PDA讓客戶點菜,多顯派頭檔次。我記得00級2+2班當年有一組同學在學 Windows程序設計課程時用VC++設計了一個功能很強的點菜系統做為課程項目,當時真想建議他們將這個軟件做成PDA,估計會有些銷路(上海火車站南廣場的Macdonald便使用很漂亮的PDA給用戶點食品,像摸像樣的)。這些PDA的硬件設計一般都是請其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設計軟件就變成自己的產品了。

              從事嵌入式軟件開發的缺點是:

              (1) 入門起點較高,所用到的技術往往都有一定難度,若軟硬件基礎不好,特別是操作系統級軟件功底不深,則可能不適于此行。

              (2) 這方面的企業數量要遠少于企業計算類企業。特別是從事嵌入式的小企業數量較多(小企業要搞自己的產品創業),知名大公司較少(搞嵌入式的大公司主要有 Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半導體、 Microtek、研華、華為、中興通信、上廣電等制造類企業)。這些企業的習慣思維方式是到電子、通信等偏硬專業找人。由于正規高校軟件學院以前畢業生以企業計算為主,所以正規高校軟件學院與這些企業聯系相對較少。正規高校軟件學院正積極努力,目前已與其中部分公司建立了聯系,爭取今后能有正規高校軟件學院同學到這些企業中實習或就業。

              (3)有少數公司經常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數公司也并無此要求,只要有經驗即可。

              正規高校軟件學院同學若學習嵌入式,顯然應偏重于嵌入式軟件,特別是嵌入式操作系統方面,應是我們的強項。對于搞嵌入式軟件的人,最重要的技術顯然是(實際上很多公司的招聘廣告上就是這樣寫的):

              (1) 掌握主流嵌入式微處理器的結構與原理
              (2) 必須掌握一個嵌入式操作系統
              (3) 必須熟悉嵌入式軟件開發流程并至少做過一個嵌入式軟件項目。

              正規高校軟件學院在嵌入式軟件方面最重要的課程包括:
              (1) 嵌入式微處理器結構與應用:這是一門嵌入式硬件基礎課程,正規高校軟件學院用這門課取代了傳統的“微機原理與接口”課程(目前國內已有少部分高校IT專業這樣做了,因為講x86微機原理與接口很難找到實際用處,只為教學而已)。我們說過,嵌入式是軟硬件結合的技術,搞嵌入式軟件的人應對ARM處理器工作原理和接口技術有充分了解,包括ARM的匯編指令系統。若不了解處理器原理,怎么能控制硬件工作,怎么能寫出節省內存又運行高速的最優代碼(嵌入式軟件設計特別講究時空效率),怎么能寫出驅動程序(驅動程序都是與硬件打交道的)?很多公司招聘嵌入式軟件人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟件開發,公司都會給你一本該設備的硬件規格說明書 (xxx Specification),您必須能看懂其中的內存分布和端口使用等最基本的說明(就像x86匯編一樣),否則怎么設計軟件。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬件課程都較抽象的原因,等我們的嵌入式實驗室10月份建好后,您做了一些實驗后就會覺得看得見摸得著。還有同學對ARM匯編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將匯編語言當成一個程序設計語言,學匯編主要是為了掌握處理器工作原理的。一個不熟悉匯編 語言的人,怎么能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部分,有時還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像采集和圖像解壓縮),目前主要還要靠匯編寫程序(我看到過很多公司是這樣做的)。當您在一個嵌入式公司工作時,在查看描述原理的手冊時,可能很多都是用匯編描述的(我就遇到過),這是因為很多硬件設計人員只會寫或者喜歡用匯編描述,此時您就必須看懂匯編程序,否則軟硬件人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉匯編。

              (2) 嵌入式操作系統類課程

              除了 WinCE的實時性稍差外,大多數嵌入式操作系統的實時性都很強,所以也可稱為實時操作系統Real Time Operating System。從事嵌入式的人至少須掌握一個嵌入式操作系統(當然掌握兩個更好),這在嵌入式的所有技術中是最為關鍵的了。目前最重要的RTOS主要包括:

              第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平臺。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),并且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks占據了嵌入式系統的多半疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。像Bell-alcatel、Lucent、華為等通信企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與 Vxworks類似的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。

              第二類、嵌入式Linux操作系統:Linux的前途除作為服務器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟件多、呼擁者眾,這樣嵌入式產品成本會低。 Linux本身不是一個為嵌入式設計的操作系統,不是微內核的,并且實時性不強。目前應用在嵌入式領域的Linux系統主要有兩類:一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一類是跑在ARM 9上的,一般是將Linux 2。4。18內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM 9上)。很多人預測,嵌入式Linux預計將占嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們能發現很多教材和很多大學都以ucOS/II為教學用實時操作系統,這主要是由于ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但由于ucOS/II功能有限,實用用得較少,所以正規高校軟件學院不將其作為教學重點,要學習就應學直接實用的,比如 uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟件,對加深操作系統的認識也有幫助,可謂一舉多得。據我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式 Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。正規高校軟件學院在該嵌入式Linux方面的課程系列是:本科生操作系統必修課,然后是Linux程序設計選修課,最后是嵌入式Linux 系統選修課。正規高校軟件學院在Linux方面目前已有較強力量,魏老師和張老師熟悉Linux開發,金老師和唐老師熟悉Linux系統管理。

              第三類、 Windows CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已占據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4。2版(。NET),開發平臺主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由于WinCE開發都是大家熟悉的VC++環境,所以正規高校軟件學院學過Windows程序設計課程的同學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低于嵌入式 Linux。對于急于完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那么好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MS PocketPC操作系統專用于PDA上(掌上電腦),另一個是MS SmartPhone操作系統用于智能手機上(帶PDA功能的手機),兩者也都屬于WinCE平臺。在PDA和手機市場上,除WinCE外,著名的PDA 嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁沖擊下,Palm和Symbian來日還能有多長?正規高校軟件學院可能是全國高校中唯一一家開設專門的“Windows CE嵌入式操作系統“課程的學校,這主要是基于以下原因:正規高校軟件學院本身前面便有Windows程序設計課程,同學學過VC++后再學WinCE,非常方便自然,通過學習WinCE同樣也可了解嵌入式軟件的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰占份額大還很難講,畢竟很多人更愿意接受MS的平臺,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在PC機上真正使用LINUX的用戶?據我觀察,目前在嵌入式平臺上,LINUX是叫得最響,但還是WinCE實際用得更多。嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮;二是微軟亞洲研究院對正規高校軟件學院WinCE課程的支持計劃,我們也很希望將來正規高校軟件學院能有同學通過微軟的面試去實習。WinCE和多媒體 (如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。

              總結關于嵌入式操作系統類課程,若您覺得自己功底較深且能鉆研下去,則可去學嵌入式Linux;若您覺得自己VC++功底較好且想短平快地學嵌入式開發,則正規高校軟件學院的WinCE課程是最好的選擇。

              (3) 嵌入式開發的其它相關軟件課程

              搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關領域包括:

              A、數字圖像壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。為此,正規高校軟件學院已預訂了一位能開設數字圖像處理課程的博士。

              B、通信協議及編程技術:這包括傳統的TCP/IP協議和熱門的無線通信協議。首先,大多數嵌入式設備都要連入局域網或Internet,所以首先應掌握TCP/IP協議及其編程,這是需首要掌握的基本技術;其次,無線通信是目前的大趨勢,所以掌握無線通信協議及編程也是是很重要的。無結通信協議包括無線局域網通信協議802。11系列,Bluetooth,以及移動通信(如GPRS、GSM、CDMA等)。

              C、網絡與信息安全技術:如加密技術,數字證書CA等。正規高校軟件學院有這方面的選修課。

              D、DSP技術:DSP是Digital Signal Process數字信號處理的意思,DSP處理器通過硬件實現數字信號處理算法,如高速數據采集、壓縮、解壓縮、通信等。數字信號處理是電子、通信等硬件專業的課程,對于搞軟件的人若能了解一下最好。目前DSP人才較缺。如果有信號與系統、數字信號處理等課程基礎,對于學習MPEG編解碼原理會有很大幫助。

              (4)嵌入式開發的相關硬件基礎
              對于軟件工程專業的學生,從事嵌入式軟件開發,像數字電路、計算機組成原理、嵌入式微處理器結構等硬件課程是較重要的。另外,匯編語言、C/C++、數據結構和算法、特別是操作系統等軟件基礎課也是十分重要的。我們的主要目地是能看懂硬件工作原理,但重點應是在嵌入式軟件,特別操作系統級軟件,那將是我們的優勢。

              我們的研究生里有些是學電子、通信類專業過來的,有較好的模擬電路和單片機基礎,學嵌入式非常合適。嵌入式本身就是從單片機發展過來的,只是單片機不帶OS,而現在很多嵌入式應用越來越復雜,以至不得不引入嵌入式操作系統。另外,為追求更高速的信號處理速度,現在在一些速度要求較高的場合,有不少公司是將一些DSP算法,如MPEG壓縮解壓縮算法等用硬件來實現,這就涉及到HDL數字電路設計技術及其FPGA/IP核實現技術,這方面的人目前市場上也很缺。

              (5) 題外話
              另外,能寫驅動程序的人目前是非常緊缺的(驅動程序也可歸于嵌入式范疇),包括桌面Windows中的DDK開發環境和WDM驅動程序。公司每時每刻都要推出新產品,每一個新產品出來了,要能被操作系統所使用,是必須寫驅動程序的。寫驅動程序就必須掌握操作系統(如Windows或Linux)的內部工作原理,還涉及到少量硬件知識,難度較大,所以這方面的人很難找。想成為高手的同學,也可從驅動程序方面獲得突破。我可說一下自己的經歷,三年前我曾短暫地在一家公司寫過WinCE驅動程序(正是因為知道這方面的人緊缺,所以才要做這方面的事),盡管那以前從未做過驅動程序,應聘那個職位時正是看準了公司是很難招聘到這方面的人,既然都找不到人,驅動還得有人做,這正是可能有機會切入這一領域的大好機會。面試時大講自己寫過多少萬行匯編程序,對計算機工作原理如何清楚,簡歷中又寫著我曾閱讀完兩本關于Windows Driver Model的兩本英文原版書,寫過幾個小型的驅動程序練習程序(其實根本沒寫過,我們的同學將來千萬不要像我這樣,早練就些過硬功夫,就不至于淪落到我這等地步,就不用像我那樣去“欺騙”公司了,我這是一個典型的反面教材),居然一切都PASS(當然最重要的是筆試和面試問題還說得過去),這只能說明這一領域找人的困難程度。公司本就未指望找到搞過驅動的人,找個有相關基礎的人就算不錯了。做了以后,發現也并不是怎樣難的。其實搞驅動程序的工作是很舒服的,搞完一個版本就會空一段時間,只有等公司新的芯片推出或新的OS出現后,才需要再去開發新一版驅動,那時有將近一個月時間空閑著在等WinCE 。NET Beta版推出,準備將驅動程序升級到CE 。NET上,現在在軟件學院工作整日忙,無限懷念那段悠閑時光。

              很巧合,最近本人無意中再次體會到了嵌入式的迷人之處。上周我那用了3年的手機終于不能WORK了。此次更新,除要求有手機常見功能外,最好有MP3功能(現在很多英語聽力都有MP3文件),最好有英漢詞典,最好還能讀WORD文檔。最后選了個滿足以上條件的最便宜的手機DOPOD 515(斬了我2。2K,但想想這也算自己對嵌入式事業的支持,這樣便也想開了),算得上最低檔的智能手機了。回來一查,手機的about顯示,本手機 Processor是ARM,其OS是MS Smartphone(即WinCE 。NET 4。2),這么巧合,簡直可做為學習嵌入式課程的產品案例了(等我們的WinCE課程開得有聲有色后,希望能從微軟研究院搞些Smartphone來開發開發)。有OS的手機果然了得,金山詞霸、WORD、EXCEL、REGEDIT等居然都有smartphone smartphone格式,真是爽。完全可用Windows CE版的,PC上的MP3、DOC等居然在download時都可被自動轉換成自己開發一些需要的程序download到自己的手機上。現在市面銷售 PDA智能手機火爆,MS總是財源滾滾。但我已發現國產的ARM+LINUX手機出現在市面上,價格只1。2K。

              在GOOGLE網上能搜索太多的關于嵌入式系統的討論了,我剛發現一個http://www。embyte。com 非常不錯,有很多有經驗者談自己的體會,投入到其中的論壇中,你會切身感到嵌入式學習的熱潮。

              要么走ARM+WinCE,要么走ARM+LINUX,要么走ARM+VXWORKS。每個搞嵌入式的人都可選一條路,條條大路通羅馬。

              三、關于游戲軟件方向

              游戲軟件人才的確目前很缺,聽說很多游戲軟件公司苦于沒新人才補充,特別是沒有高手補充,不得不相互挖人才,以至將游戲軟件人才身價越抬越高。網上說日本教育部剛剛批準成立了日本第一家專門培養四年制游戲軟件人才的本科大學。其實國內很多大學,特別是軟件學院都有搞游戲軟件人才的設想,但目前很少有做成的,主要原因是找不到能上游戲軟件課的教師,聽說有個學校只能花很大的價錢從Korea找老師來上課,果真缺到此等地步?

              已有很多青少年沉湎于網游而頹廢的實例,好在還不至于上升到制造精神鴉片的高度,所以開發游戲軟件的人也不必每日慚悔(但開發兒童益智類游戲軟件的人是不需慚悔的),如果想想這是為發展民族軟件產業做貢獻,那反倒是一件有意義的事情了。不過聽一家游戲軟件公司的老板講,搞游戲軟件開發是非常辛苦的。

              若想自己創業,搞搞游戲軟件是不錯的主意。現在網上網站或公司都在收購游戲軟件(特別是手機游戲軟件,因為手機游戲用戶可選從網站上download到手機上,不像網游那么復雜),按download次數分成或一次性收購的都有。我們的同學在校期間是否也可發點小財?搞得好,說不定可賣到國外網站,直接掙$$$呢。

              大致游戲分成以下幾類:
              (1) PC類游戲,包括單機和網游。這類游戲開發平臺基本上都是基于VC++和DitrectX(如DirectShow,DirectDraw,D3D 等,DirectX資料可直接到MS網站上查)。DirectX和OpenGL是兩個主要的圖形標準,OpenGL跨平臺(Unix/Windows上都可跑),盡管很多搞研究的人對OpenGL贊不絕口,將DirectX罵得一文不值,但事實是,在Windows平臺上,DirectX是最快最方便的,所以在Windows平臺上的游戲還是DirectX當家。

              (2) 手機游戲:目前手機游戲主要開發平臺有兩類:
              第一類手機游戲是J2ME平臺(Java 2 Micro Edition),J2ME本是為嵌入式平臺設計的Java,但由于Java生來就需要Java虛擬機(JVM)來解釋,所以在嵌入式產品很少用 J2ME(太慢太耗內存)。但在手機游戲中J2ME倒有用武之地,我想這可能主要是Java可跨OS平臺的原因,因為手機的OS是千奇百怪的。我對 J2ME完全外行,但上次聽Square Enix公司的人說,J2ME與我們同學學過的J2EE還是有較大差別的。據我所知,目前手機中用的較多的是KJava語言,KJava是運行在一種叫K Java Virtual Machine的解釋器上(K JVM是SUN早期為演示J2ME在嵌入式系統應用而開發的一個虛擬機),所以將在K JVM上運行的J2ME叫KJava。盡管SUN說今后不保證支持K JVM,將開發新的更高性能的J2ME虛擬機取而代之,但由于KJava出現較早,很多早期的手機游戲軟件都將K JVM假想成J2ME虛擬機的標準了,所以目前有大量的KJava手機游戲軟件存在,而且還在用KJava繼續開發。特別是日本的手機游戲軟件由于開發較早(像叫什么docomi的日本最大的電信運營商手機游戲搞得很火),多是基于KJava的。所以目前市場上在招聘手機游戲軟件人才時,很多要求掌握 KJava。有關J2ME請到Sun的網站上找資料。

              另一類手機游戲是BREW平臺,BREW是美國高通公司(Qualcomm,CDMA核心技術都是該公司開發的,有無數移動通信技術專利)發明的,據說可編譯成二進制代碼,那當然快了。主要的開發語言是C/C++。但迫于被指責為較封閉的壓力,目前Qualcomm已推出BREW平臺上的J2ME虛擬機(但可想像那將是怎樣慢的速度)。Qualcomm搞定了很多手機制造商簽定BREW授權許可協議,最狠的是Qualcomm與中國聯通綁在一起大堆基于BREW的手機游戲,所以有些公司招聘時要求掌握BREW也就不奇怪了。

              去年00級2+2班畢業答辯時,有一位同學講的是在公司做的KJava游戲(那是一家日本游戲軟件公司),還一位同學講的是另一家公司做的BREW游戲,看來不同的公司有不同的選擇。將來誰會更火,我估計隨著手機硬件資源的不斷提高,不會在乎一個JVM的開銷,J2ME應更有前途,畢竟它是更開放的。

              (3) 專用游戲機:如電視游戲,XBOX等,我不太了解,不過這些游戲也太偏了。
              從著名游戲公司發來的對網游和手機游戲的人才需求,很有代表性。從中我們可看出,游戲公司對人才的需求主要是以下技術:

              (1) 計算機圖形學,特別是3D編程與算法,包括DirectX或OpenGL。開發平臺是VC++/DIRECTX或KJAVA。

              (2) 公司說,手機游戲因手機資源有限,必須對圖像進行壓縮,所以若有一些圖像壓縮算法知識比較好。像若能有MPEG壓縮算法較好,手機上采用的是比MPEG壓縮得更狠的一些特殊算法,但觸類旁通。

              (3) TCP/IP Socket編程是搞網游開發的人必須掌握的。

              (4) 人工智能知識:復雜游戲可能需要一些AI算法。

              (5) 網絡與信息安全知識:網游要防外掛。

              一般游戲公司的網游服務器是基于Linux平臺的,所以還提出了對游戲服務器端軟件工程師的技術需求(精通MSSQL、ORACLE、MYSQL等數據庫,精通Linux Programming,特別是Socket編程)。還有對維護游戲網站人才需求(ASP 。NET和數據庫)。詳細請同學自己看服務器。注意一條,最好有自己的游戲軟件作品,若您應聘時能帶一個DirectX作品,那將有多強的競爭力,所以最重要的是現在就要行動,實踐,實踐,再實踐。
            posted @ 2009-08-07 09:09 quxiao 閱讀(162) | 評論 (0)編輯 收藏

            作為一家之言,想對廣大渴望學習嵌入式系統的學子提出幾點建議:

              (1)嵌入式系統軟件硬件密切相關,一定要打好軟件硬件基礎。其實,只要找到正確的方法,加上努力,任何理工科學生,甚至非理工科學生,都能學好嵌入式系統。

              (2)選擇一個芯片及硬件評估板(入門芯片最好是簡單一點,例如8位MCU)、選擇一本好書(最好有規范的例子)、找一位好老師(最好是有經驗 且熱心的)。硬件評估板的價格一定要在1000元以下,不要太貴,最好能有自己動手的空間。不花一分硬件錢,要想學好嵌入式系統不實際。因為,這是實踐性 很強的學科。好書,可以使你少走彎路,不會被誤導,要知道有的書是會使人進入學習誤區的。好老師也可以是做過一些實際項目的學長(一定要找做過幾個成功項 目的學長或老師做指導,否則,經驗不足也可能誤導),有教師指導,學習進程會加快。(人工智能學科里有個術語叫無教師指導學習模式與有教師指導學習模式, 無有教師指導學習模式比有教師指導學習模式復雜許多)。

              (3)許多人怕硬件,其實嵌入式系統硬件比電子線路好學多了。只要深入理解MCU的硬件最小系統,對I/O口、串行通信、鍵盤、LED、 LCD、SPI、I2C、PWM、A/D(包括一些傳感器)、D/A等逐個實驗理解,逐步實踐。再通過自己做一個實際的小系統,底層硬件基礎就有了。各個 硬件模塊驅動程序的編寫是嵌入式系統的必備基礎。學習嵌入式系統的初期,這個過程是必須的。

              (4)至于嵌入式實時操作系統RTOS,一定不要一開始就學,這樣會走很多彎路,也會使你對嵌入式系統感到畏懼。等你軟件硬件基礎打好了,再學 習就感到容易理解。實際上,眾多嵌入式應用,并不一定需要操作系統。也可以根據實際項目需要再學習。一定不要被一些嵌入式實時操作系統移植培訓班宣傳所誤 導,而忽視實際嵌入式系統軟件硬件基礎知識的學習。

              (5)要避免片面地單純從“電子”或“計算機軟件”角度認識嵌入式系統,嵌入式系統與硬件緊密相關,是軟件與硬件的綜合體,沒有對硬件的理解就 不可能寫好嵌入式軟件,同樣沒有對軟件的理解也不可能設計好嵌入式硬件。因此,要逐步從MCU的最小系統開始,一點一點理解硬件原理及底層硬件驅動編程方 法。要通過規范的例子,理解軟件工程封裝、可復用等思想。通過規范編程,積累底層構件(Component),也就是一個一個模塊,但是要封裝得比較好, 可復用。

              (6)注重實踐。這里我把實踐與實驗區別開來,實驗主要是他人的程序或驗證性的,目的是學習基礎知識。實踐是自己設計,有具體的“產品”目標。如果你能花500元左右自己做一個具有一定功能的小產品,就可以說接近入門了。

              (7)關于入門芯片的選擇。一定不要選太復雜,不能超越學習過程。不要一下子學習幾種芯片,可以通過一個芯片入門并具有一個實踐經驗后,根據需 要選擇芯片。注意,選擇的是微控制器(MCU),而不是微處理器(MPU)。不同廠家生產的MCU穩定性差異巨大。微處理器已經不直接用于嵌入式系統的最 終產品設計,不要誤解。

              (8)關于操作系統的選擇。可以等到你具有一定實踐后,選擇一個簡單容易理解原理的進行學習,不要一開始就學習幾種操作系統,理解了基本原理,實踐中確有實際需要再學習也不遲。人總是要不斷學習的。

              (9)關于匯編與C語言的取舍。隨著MCU對C編譯的優化支持,對于匯編可以只了解幾個必須的語句,直接使用C語言編程。但必須通過第一個程序理解芯片初始化過程、中斷機制、程序存儲情況等區別于PC機程序的內容。

              有關嵌入式系統的知識體系、可能的學習誤區,另文討論。

              以上建議,僅供參考。


            posted @ 2009-08-05 16:55 quxiao 閱讀(155) | 評論 (0)編輯 收藏

             學習英語其實就是做三件事,

                  1.最徹底最完美地解決發音問題!

                  2.瘋狂地朗讀背誦!

                  3.大量地閱讀,讓閱讀成為我們的日常習慣!

             學說英語其實只是體力勞動,李陽老師十大真理是:

                  1.聽錄音,跟著讀.讀到和錄音帶完全一樣為止.

                  2.錄音帶是最好的老師!最標準的最優秀的外國專家隨時陪伴你,有了錄音帶,就可以隨時隨地創造世界一流的語言環境.

                  3.記憶的秘訣就是重復!重復一千遍,天書都能脫口而出!成功的人就是重復的次數超過別人的人.

                 4.零碎時間學英語的效果最好!

                 5.英語的好壞就在于嘴巴動的次數!

                 6.學習英語是體力勞動!把中國肌肉訓練成國際肌肉!

                 7 朗讀和被誦是學好英語的唯一途徑!沒有第二個途徑!

                 8.語感的好壞在于課文朗讀次數!書讀百遍,其義自見!

                 9.講一口流利的英語,順便考試拿高分!

                 10.讀英語和吃飯一樣重要.飯前飯后讀五分鐘的英語,否則沒有資格吃飯!


            posted @ 2009-08-04 16:25 quxiao 閱讀(214) | 評論 (0)編輯 收藏

            先為對話框加上2個radio button,分別是Radio1和Radio2。

            問題1:如何讓Radio1或者Radio2默認選上?如何知道哪個被選上了?

            關鍵是選上,“默認”只要放在OnInitDialog()即可。三種方法可以讓它選上,
            第一種:
            ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//選上
            ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);//不選上
            ((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck();返回1表示選上,0表示沒選上
            第二種:
            關 聯一個congtrol型變量(子類化),好ctrl+W(即打開classwizard),點開 Member Variables,咦?怎么沒有IDC_RADIO1這個ID?原來是沒有分組。因為radio button通常都是成組使用的,在一組里面是互斥的。取消,回到對話框資源面板,右鍵Radio1查看屬性把Group選上,那么,Radio1和 Radio2就是一組了(怎么知道他們是一組的?后面說)。此時,就可以為Radio1增加一congtrol型變量m_ctrlRadio1了。如下:
            m_ctrlRadio1.SetCheck(TRUE);
            同樣可以使用GetCheck()獲取狀態。
            第三種:
            關聯一個int型變量(同樣需要先分組)m_nRadio1,打開對話框構造函數,你會發現有:
            m_nRadio1 = -1;m_nRadio1別賦值-1表示哪個都沒有選上。如果你把-1改成0,就會發現Radio1默認被選上了,依此類推,m_nRadio1的值為1 就是第二個被選上了(這里同樣有問題,哪個是第一個?哪個是第二個?)。獲取狀態很簡單,UpdateData(TRUE)后判斷m_nRadio1的值 即可。

            問題2:如何使用多組?

            多組和一組是一樣的使用,只要搞清楚哪個是哪一組的就行了。再為對話框添加Radio3和Radio4。很 簡單,先為這些Radio Button排個順序,就是排列他們的TAB ORDER。在對話框資源面板上Ctrl+D,然后按你自己的理想順序用鼠標逐個點擊就可以了。不妨假設Radio1、Radio2、Radio3、 Radio4分別是1、2、3、4。Radio1和Radio3都選上Group屬性,那么,1、2是一組,3、4是另外一組,因為分組的原則是在選上 Group屬性的這一個開始直到碰到下一個選上Group屬性的。你不妨再Ctrl+D,令Radio1、Radio2、Radio3、Radio4分別 是1、3、2、4,那么Radio1和Radio3是一組,如果m_nRadio1=1,此時是Radio3被選上而不是Radio2被選上。分好了組就 分別使用它們吧。

            嗯,也許你還要為它們添加鼠標單擊事件,非常簡單。

              一、對單選按鈕進行分組:
            每組的第一個單選按鈕設置屬性:Group,Tabstop,Auto;其余按鈕設置屬性Tabstop,Auto。如:
            Radio1、Radio2、Radio3為一組,Radio4、Radio5為一組

            設定Radio1屬性:Group,Tabstop,Auto
            設定Radio2屬性:Tabstop,Auto
            設定Radio3屬性:Tabstop,Auto

            設定Radio4屬性:Group,Tabstop,Auto
            設定Radio5屬性:Tabstop,Auto

            二、用ClassWizard為單選控件定義變量,每組只能定義一個。如:m_Radio1、m_Radio4。

            三、用ClassWizard生成各單選按鈕的單擊消息函數,并加入內容:

            void CWEditView::OnRadio1()
            {
                m_Radio1 = 0;    //第一個單選按鈕被選中
            }

            void CWEditView::OnRadio2()
            {
                m_Radio1 = 1;    //第二個單選按鈕被選中
            }

            void CWEditView::OnRadio3()
            {
                m_Radio1 = 2;    //第三個單選按鈕被選中
            }

            void CWEditView::OnRadio4()
            {
                m_Radio4 = 0;    //第四個單選按鈕被選中
            }

            void CWEditView::OnRadio5()
            {
                m_Radio4 = 1;    //第五個單選按鈕被選中
            }

            四、設置默認按鈕:
            在定義控件變量時,ClassWizard在構造函數中會把變量初值設為-1,只需把它改為其它值即可。
            如:
             //{{AFX_DATA_INIT(CUnitBlockTypeFlankPublicAdd)
             m_Radio1 = 0;    //初始時第一個單選按鈕被選中
             m_Radio4 = 0;    //初始時第四個單選按鈕被選中
             //}}AFX_DATA_INIT


            posted @ 2009-07-30 11:10 quxiao 閱讀(4822) | 評論 (1)編輯 收藏

                   在一些情況下,應用程序有許多信息要顯示,當一個窗口內顯示不下時,VC提供的MDI應用程序可以解決這個問題,但是如果應用程序只是對單 個文檔,采用多種方式顯示,則采用SDI更合適。那么,如何在單文檔應用程序中實現多視圖呢?缺省情況下,派生類的構造函數是pretected類型的, 必須將它改為public類型,因為我們將會動態生成派生視圖類并切換活動的視圖。也可以一次生成所有的視圖,但是這樣造成系統資源的極大浪費。

            1  首先利用資源編輯器新建4個對話框,在對話框中添加需要的控件,各個對話框的ID分別為IDD_MULTIVIEW_FORM,IDD_MULTIVIEW_FORM2,IDD_MULTIVIEW_FORM3,IDD_MULTIVIEW_FORM4

            2  為每一個對話框創建一個CFormView類的派生類,分別為:CView1,CView2,CView3,CView4

            3  在應用程序的初始化文件中用CView1替換原先的視圖,這樣程序啟動后的缺省顯示視圖是CView1,修改后的部分代碼如下:
            CSingleDocTemplate* pDocTemplate;
            pDocTemplate = new CSingleDocTemplate(
            IDR_MAINFRAME,
            RUNTIME_CLASS(CMultiViewDoc),
            RUNTIME_CLASS(CMainFrame),       // main SDI frame window
            RUNTIME_CLASS(CView1));
            AddDocTemplate(pDocTemplate);

            4  利用資源編輯器,添加幾個菜單,并添加相應的消息處理函數:
            void CMainFrame::OnViewView1() 
            {
            SwitchToForm(IDD_MULTIVIEW_FORM);   
            }

            void CMainFrame::OnViewView2() 
            {
            SwitchToForm(IDD_MULTIVIEW_FORM2);   
            }

            void CMainFrame::OnViewView3() 
            {
            SwitchToForm(IDD_MULTIVIEW_FORM3);   
            }

            void CMainFrame::OnViewView4() 
            {
            SwitchToForm(IDD_MULTIVIEW_FORM4);   
            }

            在 SDI中CFrame的派生類即CMainFrame控制著所有的視圖,而且它允許用戶通過消息處理進行視圖的切換。進行視圖切換的原理很簡單,只是斷開 和舊視圖的連接并把他刪除,創建一個新視圖,將文檔和它相連,設置幾個標志,然后顯示新視圖,SwitchToForm函數是進行視圖切換的代碼函數。

            void CMainFrame::SwitchToForm(int nForm)
            {
              //CDocument* pDoc = GetActiveDocument();
                CView *pOldActiveView=GetActiveView();             //保存舊視圖
                CView *pNewActiveView=(CView*)GetDlgItem(nForm);   //取得新視圖
                if(pNewActiveView==NULL)
                {
                    switch(nForm)
                        //這些ID是對話框的標志符,但也可以用其他的標志
                    {
                    case IDD_MULTIVIEW_FORM :
                        pNewActiveView=(CView*)new CView1;
                        break;
                    case IDD_MULTIVIEW_FORM2 :
                        pNewActiveView=(CView*)new CView2;
                        break;
                    case IDD_MULTIVIEW_FORM3 :
                        pNewActiveView=(CView*)new CView3;
                        break;
                    case IDD_MULTIVIEW_FORM4 :
                        pNewActiveView=(CView*)new CView4;
                        break;
                    }
                    CCreateContext context;   //將文擋和視圖相連
                    context.m_pCurrentDoc=pOldActiveView->GetDocument();
            pNewActiveView->Create(NULL, NULL, WS_BORDER|WS_CHILD ,
                        CFrameWnd::rectDefault, this, nForm, &context);


                    pNewActiveView->OnInitialUpdate();
                }
                SetActiveView(pNewActiveView);        //改變活動的視圖
                pNewActiveView->ShowWindow(SW_SHOW);  //顯示新的視圖
                pOldActiveView->ShowWindow(SW_HIDE);  //隱藏舊的視圖

                if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView1))
            pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM);

            else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView2))
            pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM2);

            else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView3))
            pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM3);

            else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView4))
            pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM4);

                pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
                
                

            delete pOldActiveView;   //刪除舊視圖

            RecalcLayout();          //調整框架窗口
            }
            posted @ 2009-07-29 19:51 quxiao 閱讀(1703) | 評論 (0)編輯 收藏

            看來人真的不能太悠閑了,至少對于我來說是這樣的。因為上的大學就在本地,所以前幾天在學校沒什么事情,就回家休息了兩天,避避暑。可是每次回家,自己都感覺無事可做,整體在家就是看電視、玩電腦、吃飯和睡覺,從學校帶回家的幾本書,只是偶爾翻上個幾頁。久而久之,自己就感覺渾身乏力,提不起精神。回到了學校,情況略有好轉。但在學校,還是感覺自己過得太悠閑了,整天在教研室混,感覺生活少了些目標。
            其實,自己暑假之前還是定下了許多目標的,比如準備英語口譯、鍛煉身體、做好學校的OnlineJudge。現在換了導師之后,又加上了學習嵌入式。還是有很多有意義的事情可以做的,但為什么自己還是覺得很無聊呢?
            我想,原因大概有以下幾點:
            1、缺乏激情。
            不知從何時開始,我開始漸漸的對周圍的事情失去了興趣(很危險,這是憂郁癥的癥狀之一啊!),幸好還不太嚴重,情況時好時壞。難道是現代的教育體制把我搞傻了,把我變成了只會考試的書呆子?一旦對事物失去了興趣,就好失去做事情的激情和動力。
            2、毅力不夠
            在大學里面搞的ACM、OnlineJudge,總是善始而不善終。一開始還有些勁頭,可是到后來就有些消極了。ACM比賽成績不理想、OnlineJudge到現在還沒有完成。自己很想學好的英語也是這樣,大學四年來也沒有太大長進。

            自己難道要成為缺乏激情、毅力不夠的人?怎么可以這樣!那么,應該怎么辦?別無他法,唯有認真思考加上立即行動。讓自己充分利用時間、有效率的做許多有意義的事情。人,總是有惰性的。也許前幾天還給自己定了計劃:每天要背多少單詞,看多少頁書。可以過幾天就開始對自己的計劃打折扣了,再過幾天就把計劃給忘了,或者記得也不去做了,這種事常在我身上發生。有時我在想,如果有人一年中的每一天都做同一件事,那么這件事必然會做的相當出色,但又有幾人能做到呢?
            要堅持做一件事情,必然需要時刻提醒自己,時刻給自己打氣,告誡自己不要放棄。看來自己只有這樣做了才能成為更好的自己!
            posted @ 2009-07-23 21:02 quxiao 閱讀(223) | 評論 (1)編輯 收藏

            僅列出標題
            共5頁: 1 2 3 4 5 
            亚洲va久久久噜噜噜久久天堂| 久久亚洲AV无码精品色午夜| 久久成人影院精品777| 久久性精品| 欧美久久久久久| 午夜福利91久久福利| 久久久久久久97| 69国产成人综合久久精品| 久久99免费视频| 天天做夜夜做久久做狠狠| 91久久九九无码成人网站| 色综合久久88色综合天天 | 国产成人精品久久二区二区| 久久99亚洲综合精品首页| 久久国产精品成人片免费| 久久久无码精品亚洲日韩京东传媒| 久久亚洲春色中文字幕久久久| 亚洲中文字幕无码久久综合网| 久久黄视频| 久久亚洲色一区二区三区| 久久综合一区二区无码| 中文字幕一区二区三区久久网站| 久久人妻少妇嫩草AV无码专区| 久久综合九色综合久99| 中文字幕乱码人妻无码久久| 99久久无色码中文字幕人妻| 久久婷婷色综合一区二区| 婷婷伊人久久大香线蕉AV| 国产精品99久久久精品无码| 国产麻豆精品久久一二三| 精品久久久久久无码国产| 久久精品无码av| 精品国产乱码久久久久久1区2区| 久久精品无码午夜福利理论片 | 精品久久久久久国产牛牛app| 久久久久久噜噜精品免费直播| 久久久久国产精品嫩草影院| 久久午夜伦鲁片免费无码| 久久久久人妻一区二区三区 | 国产毛片欧美毛片久久久| 亚洲成色WWW久久网站|