隨筆-314  評論-209  文章-0  trackbacks-0
           
          <script?language="JavaScript">
          <!--
          var?doc?=?new?ActiveXObject("Msxml2.DOMDocument");?//ie5.5+,CreateObject("Microsoft.XMLDOM")?


          //加載文檔
          //
          doc.load("b.xml");

          //創建文件頭
          var?p?=?doc.createProcessingInstruction("xml","version='1.0'??encoding='gb2312'");

          ????
          //添加文件頭
          ????doc.appendChild(p);

          //用于直接加載時獲得根接點
          //
          var?root?=?doc.documentElement;

          //兩種方式創建根接點
          //
          ????var?root?=?doc.createElement("students");
          ????var?root?=?doc.createNode(1,"students","");

          ????
          //創建子接點
          ????var?n?=?doc.createNode(1,"ttyp","");

          ????????
          //指定子接點文本
          ????????//n.text?=?"?this?is?a?test";
          ????
          ????
          //創建孫接點
          ????var?o?=?doc.createElement("sex");
          ????????o.text?
          =?"";????//指定其文本

          ????
          //創建屬性
          ????var?r?=?doc.createAttribute("id");
          ????????r.value
          ="test";

          ????????
          //添加屬性
          ????????n.setAttributeNode(r);

          ????
          //創建第二個屬性????
          ????var?r1?=?doc.createAttribute("class");
          ????????r1.value
          ="tt";
          ????????
          ????????
          //添加屬性
          ????????n.setAttributeNode(r1);

          ????????
          //刪除第二個屬性
          ????????n.removeAttribute("class");

          ????????
          //添加孫接點
          ????????n.appendChild(o);

          ????????
          //添加文本接點
          ????????n.appendChild(doc.createTextNode("this?is?a?text?node."));

          ????????
          //添加注釋
          ????????n.appendChild(doc.createComment("this?is?a?comment\n"));
          ????
          ????????
          //添加子接點
          ????????root.appendChild(n);
          ????
          ????
          //復制接點
          ????var?m?=?n.cloneNode(true);

          ????????root.appendChild(m);
          ????????
          ????????
          //刪除接點
          ????????root.removeChild(root.childNodes(0));

          ????
          //創建數據段
          ????var?c?=?doc.createCDATASection("this?is?a?cdata");
          ????????c.text?
          =?"hi,cdata";
          ????????
          //添加數據段
          ????????root.appendChild(c);
          ????
          ????
          //添加根接點
          ????doc.appendChild(root);

          ????
          //查找接點
          ????var?a?=?doc.getElementsByTagName("ttyp");
          ????
          //var?a?=?doc.selectNodes("http://ttyp");

          ????
          //顯示改接點的屬性
          ????for(var?i=?0;i<a.length;i++)
          ????
          {
          ????????alert(a[i].xml);
          ????????
          for(var?j=0;j<a[i].attributes.length;j++)
          ????????
          {
          ????????????alert(a[i].attributes[j].name);
          ????????}

          ????}


          ????
          //修改節點,利用XPATH定位節點
          ????var?b?=?doc.selectSingleNode("//ttyp/sex");
          ????b.text?
          =?"";

          ????
          //alert(doc.xml);

          ????
          //XML保存(需要在服務端,客戶端用FSO)
          ????//doc.save();
          ????
          ????
          //查看根接點XML
          ????if(n)
          ????
          {
          ????????alert(n.ownerDocument.xml);
          ????}


          //-->
          </script>

          7.4、文檔對象模型(DOM)
            文檔對象模型(DOM)是表示文檔(比如HTML和XML)和訪問、操作構成文檔的各種元素的應用程序接口(API)。一般的,支持Javascript的所有瀏覽器都支持DOM。本文所涉及的DOM,是指W3C定義的標準的文檔對象模型,它以樹形結構表示HTML和XML文檔,定義了遍歷這個樹和檢查、修改樹的節點的方法和屬性。

          7.4.1、DOM眼中的HTML文檔:樹
            在DOM眼中,HTML跟XML一樣是一種樹形結構的文檔,<html>是根(root)節點,<head>、<title>、<body>是<html>的子(children)節點,互相之間是兄弟(sibling)節點;<body>下面才是子節點<table>、<span>、<p>等等。如下圖:

            

            這個是不是跟XML的結構有點相似呢。不同的是,HTML文檔的樹形主要包含表示元素、標記的節點和表示文本串的節點。

          7.4.2、HTML文檔的節點
            DOM下,HTML文檔各個節點被視為各種類型的Node對象。每個Node對象都有自己的屬性和方法,利用這些屬性和方法可以遍歷整個文檔樹。由于HTML文檔的復雜性,DOM定義了nodeType來表示節點的類型。這里列出Node常用的幾種節點類型:
          接口nodeType常量nodeType值備注
          ElementNode.ELEMENT_NODE1元素節點
          TextNode.TEXT_NODE3文本節點
          DocumentNode.DOCUMENT_NODE9document
          CommentNode.COMMENT_NODE8注釋的文本
          DocumentFragmentNode.DOCUMENT_FRAGMENT_NODE11document片斷
          AttrNode.ATTRIBUTE_NODE2節點屬性

            DOM樹的根節點是個Document對象,該對象的documentElement屬性引用表示文檔根元素的Element對象(對于HTML文檔,這個就是<html>標記)。Javascript操作HTML文檔的時候,document即指向整個文檔,<body>、<table>等節點類型即為Element。Comment類型的節點則是指文檔的注釋。具體節點類型的含義,請參考《Javascript權威指南》,在此不贅述。

            Document定義的方法大多數是生產型方法,主要用于創建可以插入文檔中的各種類型的節點。常用的Document方法有:

          方法描述
          createAttribute()用指定的名字創建新的Attr節點。
          createComment()用指定的字符串創建新的Comment節點。
          createElement()用指定的標記名創建新的Element節點。
          createTextNode()用指定的文本創建新的TextNode節點。
          getElementById()返回文檔中具有指定id屬性的Element節點。
          getElementsByTagName()返回文檔中具有指定標記名的所有Element節點。

            對于Element節點,可以通過調用getAttribute()、setAttribute()、removeAttribute()方法來查詢、設置或者刪除一個Element節點的性質,比如<table>標記的border屬性。下面列出Element常用的屬性:

          屬性描述
          tagName元素的標記名稱,比如<p>元素為P。HTML文檔返回的tabName均為大寫。

            Element常用的方法:

          方法描述
          getAttribute()以字符串形式返回指定屬性的值。
          getAttributeNode()以Attr節點的形式返回指定屬性的值。
          getElementsByTabName()返回一個Node數組,包含具有指定標記名的所有Element節點的子孫節點,其順序為在文檔中出現的順序。
          hasAttribute()如果該元素具有指定名字的屬性,則返回true。
          removeAttribute()從元素中刪除指定的屬性。
          removeAttributeNode()從元素的屬性列表中刪除指定的Attr節點。
          setAttribute()把指定的屬性設置為指定的字符串值,如果該屬性不存在則添加一個新屬性。
          setAttributeNode()把指定的Attr節點添加到該元素的屬性列表中。

            Attr對象代表文檔元素的屬性,有name、value等屬性,可以通過Node接口的attributes屬性或者調用Element接口的getAttributeNode()方法來獲取。不過,在大多數情況下,使用Element元素屬性的最簡單方法是getAttribute()和setAttribute()兩個方法,而不是Attr對象。

          7.4.3、使用DOM操作HTML文檔
            Node對象定義了一系列屬性和方法,來方便遍歷整個文檔。用parentNode屬性和childNodes[]數組可以在文檔樹中上下移動;通過遍歷childNodes[]數組或者使用firstChild和nextSibling屬性進行循環操作,也可以使用lastChild和previousSibling進行逆向循環操作,也可以枚舉指定節點的子節點。而調用appendChild()、insertBefore()、removeChild()、replaceChild()方法可以改變一個節點的子節點從而改變文檔樹。

            需要指出的是,childNodes[]的值實際上是一個NodeList對象。因此,可以通過遍歷childNodes[]數組的每個元素,來枚舉一個給定節點的所有子節點;通過遞歸,可以枚舉樹中的所有節點。下表列出了Node對象的一些常用屬性和方法:

            Node對象常用屬性:

          屬性描述
          attributes如果該節點是一個Element,則以NamedNodeMap形式返回該元素的屬性。
          childNodes以Node[]的形式存放當前節點的子節點。如果沒有子節點,則返回空數組。
          firstChild以Node的形式返回當前節點的第一個子節點。如果沒有子節點,則為null。
          lastChild以Node的形式返回當前節點的最后一個子節點。如果沒有子節點,則為null。
          nextSibling以Node的形式返回當前節點的兄弟下一個節點。如果沒有這樣的節點,則返回null。
          nodeName節點的名字,Element節點則代表Element的標記名稱。
          nodeType代表節點的類型。
          parentNode以Node的形式返回當前節點的父節點。如果沒有父節點,則為null。
          previousSibling以Node的形式返回緊挨當前節點、位于它之前的兄弟節點。如果沒有這樣的節點,則返回null。

            Node對象常用方法:

          方法描述
          appendChild()通過把一個節點增加到當前節點的childNodes[]組,給文檔樹增加節點。
          cloneNode()復制當前節點,或者復制當前節點以及它的所有子孫節點。
          hasChildNodes()如果當前節點擁有子節點,則將返回true。
          insertBefore()給文檔樹插入一個節點,位置在當前節點的指定子節點之前。如果該節點已經存在,則刪除之再插入到它的位置。
          removeChild()從文檔樹中刪除并返回指定的子節點。
          replaceChild()從文檔樹中刪除并返回指定的子節點,用另一個節點替換它。

            接下來,讓我們使用上述的DOM應用編程接口,來試著操作HTML文檔。

          posted @ 2006-06-22 12:28 xzc 閱讀(978) | 評論 (0)編輯 收藏
          http://www.aygfsteel.com/eamoi/archive/2005/10/31/17489.aspx

          posted @ 2006-06-22 12:23 xzc 閱讀(262) | 評論 (0)編輯 收藏
          判定瀏覽器類型:if(document.uniqueID)如果為TRUE是IE,否則非IE。
          1向表中追加行
          2通過JAVASCRIPT設置元素的樣式
          3設置元素的CLASS屬性
          4創建輸入元素
          5向輸入元素增加事件處理程序
          6創建單選按鈕
          1. 1.
          2. <table id="MyTable>
          3. <tbody id="MyTableBody"></tbody>
          4. </table>
          5. var cell = documentcreateElement("td").appendChild(document.createTextNode("foo"));
          6. var row = document.createElement("tr").appendChild(cell);
          7. document.getElementById("MyTableBoyd").appendChild(row);
          8. 2.
          9. var spanElement = document.getElementById("myspan");
          10. //spanElement.setAttribute("style","font-weight:bold;color:red");
          11. spanElement.style.cssText="font-weight:bold;color:red";
          12. 3.
          13. element.setAttribute("class","stylename");//非IE
          14. element.setAttribute("className","stylename");//IE
          15. 4.
          16. var button = document.createElement("input");
          17. button.setAttribute("type","button");
          18. document.getElementById("form").appendChild(button);
          19. 5.
          20. var element = document.getElementById("ee");
          21. element.onclick=function(){todo();};
          22. 6.
          23. var ration = document.createElement("<input type='radio' name='radioa' value='checked'>);//ie
          24. vat radion = document.createElement("input");
          25. radion .setAttribute("type","radio");
          26. radion.setAttribute("name","radionsss");
          27. radion.setAttribute("value","checked");
          posted @ 2006-06-21 21:55 xzc 閱讀(292) | 評論 (0)編輯 收藏
          長期以來,程序員被看作是沉默寡言的典型。他們能夠長時間獨自坐下來,不跟別人討論,面對紙張及電腦屏幕來工作的人。現在,這種現象早已經不盡然了,新的尤其是敏捷方法論更強調的是人們之間的有效溝通,而最有效的溝通便是面對面的交流,這也是結對編程取得巨大成功之所在。正如水晶方法論創始人Alistair?Cockburn對軟件開發活動的總結:“軟件開發是一場資源有限的創建與交流的協作性游戲。游戲的主要目標是交付有用的可工作的軟件,次要目標,是為下一場游戲做準備,既知識的累積。下一場游戲可以是改變或者替代當前的系統,或是創建另一個相關的系統。”

            一個軟件開發團隊的成功依賴于合作、交流及協調,而這些因素卻都以人為核心,恰恰是人這個大的因素左右了項目的成敗,而不是所選擇的任何過程與技術,而這個因素卻常常被人們所忽視。當技術與人們的認識和文化價值觀相抵觸時,技術就不會再產生效力。一個擁有充足人員且具有良好機能的團隊往往能更好地完成項目,而不在乎讓他們使用什么樣的過程及技術。

            然而,人的能力卻是不可預測的,他們善于尋找、學習并有主動性,特別是善于進行非正式面對面交流,但同時,人們也具有會犯錯誤、墨守成規、只想創新、積習難改與變化無常等缺點。正因為人是變化無常的,我們不能指望人會成為可預料的或每個人都會變成一個樣子。正如你不能希望給一個人雙倍的酬勞,制定雙倍的懲罰制度,并付出雙倍工作時間,就希望能夠得到雙倍的成果輸出一樣。這是因為,人不是機器,而是復雜的情感生物,輸出的成果最終取決于當時的思考質量、思考速度、主動性、身體狀況、情緒等諸多因素。但是,人的內在潛力卻是非常巨大的,只要用紀律和寬容來應付人們的共同弱點,便可以去其短,揚其長,來激發人們的內在潛力。當人們有了工作自豪感和公民感,再加上善于尋找和主動性后,我們會發現人們每天都會積極地完成工作,這將使項目長期處于最佳狀態。在這方面,XP(極限編程)采用豐富的、短的、非正式交流途徑,同時強調技能、紀律、個人理解水平,將中間件需求降到最低的方法,來獲得盡可能高的質量和生產力。?

            變化總是在發生

            他們總是不斷地拿走你的奶酪。

            預見變化

            隨時做好奶酪被拿走的準備。

            追蹤變化

            經常聞一聞你的奶酪,以便知道它產什么時候開始變質。

            盡快適應變化

            越早放棄舊的奶酪,你就會越早享用新的奶酪。

            改變

            隨著奶酪的變化而變化

            享受變化

            嘗試冒險,去享受新奶酪的美味!

            做好迅速變化的準備,不斷地去享受變化

            記住:他們仍會不斷的拿走你的奶酪,如果你不改變,你就會被淘汰。

            --?引自<誰動了我的奶酪>

            面對市場經營的特殊挑戰,只有那些具有高度靈活機制的企業才能立于不敗之地。不能適應變化,變化就會把你變得面目全非。再完美的計劃也時常遭遇不測。軟件中的所有東西都在變化。需求在變、設計在變、業務在變、技術在變、團隊在變、團隊成員在變。問題不在于變化,因為變化總在發生,問題在于在發生變化時沒有能力應付。只有變化是不變的,時刻準備著這樣調整一點,那樣調整一點。通過許多小的調整,而不是幾次大的調整來控制軟件的開發,也就是說我們需要利用及時反饋來知道我們何時出現了錯誤,我們需要很多機會來糾正這些錯誤,而且,我們必須能夠以比較合理的成本完成這樣的糾正,即使你不得不朝完全不同的方向前進,這就是作為一名程序員的生活。敏捷就是快速、輕松和靈活,迅速行動的能力,以最少的開銷完成工作的能力,適應不斷變化條件的能力。

            這就像XP方法論創始人Kent?Beck對XP所做的比喻:“XP團隊應該是智慧的游牧人,隨時準備迅速收起帳篷,跟隨牧群到處流浪。這里的牧群可能是與預期不同方向的設計、與預期不同方向的客戶、離開團隊的成員、突然升溫的技術或者是不斷變換的商業環境。”敏捷軟件開發的根本是相信在我們混亂的業務環境中有不可預測性,相信人們或團隊在面對這種不可預測性時,有能成功交付軟件能力的可預測性,而這些,這是由于開發人員之間的有效溝通、與客戶和管理者之間的有效溝通,才使得這種被稱為富于創造與交流的協作性軟件開發游戲取得成功。

            再富裕的國家,也會因為浪費人才而變得貧窮。與之類似,企業生存的最大課題就是培養人才,有了好員工,不愁沒有好顧客。企業的發達,乃人才的發達;人才的繁榮,既事業的繁榮。把人放在第一位,其他事情就會少發愁。

            --?引自<管理智典>

            <資本論>指出:一切剩余價值皆是由人創造的,而不是其它任何機器。在軟件開發中的任何分析和設計工具不管有多先進,都不可能自動產生設計及代碼,而真正產生設計及代碼的,恰恰是操作它們的人,過分信賴過程與工具以及低估人的智力和經驗都是一切災難的源泉。

            與此同時,<設計模式>一書也指出:在軟件開發和維護中,從長遠來看,真正引起軟件低效的原因,是人,人的低效才是最主要的。這看起來有點自相矛盾,其實為一體,既:成也在人,敗也在人!

            軟件開發和維護中的低效,初看起來,使人聯想到的首先可能會是:開發及維護人員技術水平不夠了、軟件文檔支持不足了、軟件人員偷懶了、開發或維護團隊內部人員關系不好了等等。但深究起來,一般卻和一個企業的內部組織文化有很大的關系。

            目前,國內很多國企、私企普遍存在的內部現象是:一馬在前,萬馬齊拍;前面的馬向后看到的是后面馬的笑臉,后面馬向前看到的是前面馬的屁股。故才會有后面群馬齊拍,前面馬飄飄不知所以然的壯麗場景。在這種企業文化中,人人只會以乾隆年間的和?和大人為偶像,以“厚而無形,黑而無色”的厚黑精神為人生最高境界。試想在這種企業組織文化中,真正老實實干的人只能忍氣吞聲、本著不求有功、但求無過之心,整天提心掉膽,人人皆自衛。而奸滑的人卻會善于濫竽充數、邀功請賞、見風駛舵,只要嘴巴甜、馬屁拍的好、拍的妙,定會升官發財,內部則猜疑、譴責、以及微妙和間接的勾心斗角與明掙暗斗隨處可見。這種企業最終是不會留下真正的人才的,留下的只會是一些馬屁精。如果一個企業文化如此,開發及維護團隊會如何,內部員工又會怎么做,可想而知!如果你所處的環境不是這樣,恭喜你。

            最好的環境應該是互相信任,彼此互相尊重,彼此之間都相信對方會把自己的最高利益和整個團體的利益放在心中,彼此都愿意切磋技巧、經驗及看法。而要成為一個有效的團隊成員,首先需要認識到自己的無知,每個人都要向別人學習,應該相信直覺,并且開放和誠實的交流環境常常是保證有效團隊合作的最好策略。

            作為一個組織,核心就在于對人的信賴,在于一個適應性強的文化氛圍,這能夠將人捆在一起,獲得有效的協作關系。一個企業做的是否成功,關鍵是看它有多強,而不是有多大。把人放在第一位,管理層次少,內部信息溝通及時、各職能部門協作意識強的企業才更容易成功。?在激勵一個人按某種特定方式工作時,報酬比懲罰更有效,懲罰要盡量避免。你若能在他人心中激起一種急切的需求,并能引導這種需求,你便能無往不勝。渴望得到別人的認可和贊賞,是人類隱藏最深的本性。

            --?引自<管理智典>

            <孫子兵法-作戰篇>中指出:“殺敵者,怒也;取敵之利者,貨也。車戰,得車十乘以上,賞其先得者。”意思是說,要使軍隊勇敢殺敵,就要激發士兵對敵人的仇恨;要使軍隊奪取敵人的物資,就要以財貨獎賞士兵。所以在車戰中,凡繳獲戰車十輛以上的,要獎最先奪得戰車的人。

            同理,<素書六章>中也指出:小功不賞,則大功不立;小怨不赦,則大怨必生。這和前面是一樣的道理,然而,國內很多軟件企業領導者,滿腦子想的仍是:中國人,多的是,有什么用,走一個,馬上還能來一群,怕什么!殊不知,你就再是鐵打的營盤,也架不住流水的兵,不注重人,必會留不住人。

            冰凍三尺,非一日之寒,做軟件的,少則數月,多則幾年。三天兩頭換人,每天看到的都是新面孔,那還象是做軟件的,就象是在選秀。這樣的軟件能成功么?既使僥幸成功,也定不會長久,因為他們不可能織起一個強而穩定的團隊,組織起來的只能是臨時應戰的雇傭兵而已。有上面這種想法的領導大多通常是以指令性過程方法和產品為中心,把做作軟件的人看做是“即插即用”的機器,這些高層管理者往往抱著一種“菜譜哲學”的思想,認為如果組織機構有了明確定義的軟件過程方法,詳細地規定了每個開發活動的步驟,那么所有問題都將被解決。如果“正確”的過程已經開發好,他們就可以雇用任何人(當然,最好不用人全部由機器自動生成最好),只要遵循制定好的過程,完美的軟件就將準時且不超預算地大量產出,這種信條是建立在把軟件開發當成是一門科學的基礎之上的,然而,殘酷的現實卻向他們證明,軟件開發更多的是一門藝術而非科學,是一門需要技能、手藝精巧的人互相協作的藝術。如果公司領導成天跟員工斤斤計較,抓住員工小辮子不放,動不動就大聲呵斥、擺臉色看、給小鞋穿,還要經常免費加班、扣工資、罰資金。試想,在這種環境下,員工會怎么做,大部分會直接走人,留下的人卻學會了磨洋工。工作時看著忙忙碌碌,實則作秀也。老板可能還會納悶,怎么員工這么買力,產品質量還日漸下降。殊不知,這就和菜場買菜一樣,你越和賣菜的討價還價,賣菜的給你菜時越會和你斤斤計較(既缺斤少兩)是一個道理,只有這樣兩方心理才能夠平衡。雖然,聰明一些的高層領導者總是宣稱員工是組織機構中最重要的方面,但骨子里仍把員工看作隨意可替換的資產,這也正是人類的一大缺點:嘴上說的和實際做的往往是兩回事。

            所謂“道”,就是讓部屬與領導者的價值觀相一致,這樣部屬就會與領導者同生共死,不會畏懼什么困難和危險,表現出崇高的獻身精神。如何讓部屬與領導者的價值觀相一致,其實很簡單,將員工利益看作第一位,以人為本,重視他們、信任他們、支持他們。其實,員工們對公司的要求其實很低,一般如下:

            第一、?按時發工資(基本保證)。

            第二、?得到辦公室配送的飲料或食品。

            第三、?得到領導賞識。

            第四、?獲得特別授權去完成某艱巨任務。

            第五、?多發獎金(不吃大鍋飯)。

            第六、?職位上的提升。

            第七、?加薪。

            以上幾條,對于每一個有遠見的公司領導都是不難做到的。那怕能做一半,員工們也會心存感激之情了。

            幫助他人,可說是一種最直接有效、可以激發自身價值與責任感的方法。在全神貫注幫助他人解決問題的過程中,在悉心呵護照顧他人的過程里,不但我們的無限潛力會因此而充分發揮出來。而且,相對而來的成就感,也會讓人覺得自己任重而道遠,并能更積極地來面對人生了。

            --?引自<好習慣、好人生>

            近兩年,書面上流行的狼系列叢書<狼文化>、<狼圖騰>等。也同樣給中國軟件業發展以極大的啟示,強調擁用像狼群般的高度緊密協作的團隊意識、敏銳的嗅覺(既可以察覺到細小或即將來到的變化)、始終保持野性(既持續的積極進取的態度和精神)等。中國人喜歡窩里斗這是出了名的,就是軟件人員內部也經常在彼此攻擊、無休無止。要知道,在一個有效團隊中是沒有“我”這個字的,只有“我們”。這里借用曹植曹帥哥一句話:“本是同根生,相煎何太急!”?來真心希望中國軟件業能真正團結一致,齊心合力,建立自己的狼群文化,早日走出低谷,向全世界宣布:我們是狼,不是羊!

            創建一個有效的團隊是一項艱苦的任務,它對項目的成功是必不可少的。首先是通過招募好的開發人員,從好的材料開始,他們可能不具備所有需要的技能,但至少應該愿意去學習。其次是在團隊內培養正確的態度,既他們只有團結一心才能走向成功,每個人都應該積極參與系統開發。建設和培養一個有效團隊需要時間,但這樣做是組織機構能做的最好的投資之一。?

            若是你在一年中不曾有過失敗的記錄,你就未曾勇于嘗試各種應該把握的機會。害怕失敗,就等于拒絕了成功。那些盼望并且追求成功的人,要比那些成天擔心而且接受失敗的人要快樂得多,其成就也會高的多。

            --?引自<管理智典>

            假如軟件的第一版就做得很好,那么人們就會再次使用該軟件。由于世界上所有的事情都在迅速變化著,因此,軟件也需要不斷更新、擴充、改變及修改。而想要得到穩定不變軟件的唯一方法就是讓產品壞到沒有人再想用它,穩定意味著無知覺的產品。要明白,穩定的要求是敵人而不是朋友。改變要求是生活中嚴酷的現實,明智的軟件人員應事先預想并處理它而不是抱怨它。而使軟件創建更加快速與健壯的,是軟件復用。有關軟件復用的問題從表面上看是技術上的,實則真正的問題還是來自人。

            開發人員需要擺脫不相信也不想理解別人成果或只想重頭做來增加個人經驗的看法,如果不解決人的問題,那么技術問題也就變得無關緊要了。開明的領導和合適的獎賞制度有時能克服這些問題,假如企業文化把重復使用擱置起來,不與重視,那么在實現重復使用方面的投資、開發以及努力都將沒有多大的成果。克服人的問題最主要的還是有效溝通的問題,雖然我們已經學會把感情生活與工作分開,但是如果隊員間不能持續進行有效的溝通、沒人承認自己的錯誤、怨氣得不到平息、歡樂沒有人共享,那么整個團隊就無法高效率地工作。如果我們每個人都能夠放下生活中所帶的虛假面具,說出自己真實的感覺,也認真傾聽別人的想法,那么任何工作的進展都會順利的多。

            一個人并不是生來就要被打敗的,你盡可以消滅他,卻不能打敗他。

            --?引自<老人與海>

            生命原本脆弱,我們只能堅強地活著,并努力尋找歡樂,就這樣。這里有一點我想告訴大家,大家在積極進取、努力拼搏的同時,一定要多加注意自己的身體。要知道,留著青山在,不怕沒柴燒,身體乃革命的本錢也。千萬不要有這樣思想:三十歲前我用命換錢,三十歲后我用錢換命。要好好想想,沒有了好的身體,我們還能做什么!所以,請記住:努力工作,從珍惜生命做起!

            生活并不是筆直通暢的走廊,讓我們輕松自在地在其中旅行。生活是一座迷宮,我們必須從中找到自己的出路。我們時常會陷入迷茫,在死胡同中搜尋。但如果我們始終深信不疑,有一扇門就會向我們打開,它或許不是我們曾經想到的那扇門,但我們最終將會發現,它是一扇有益之門。

            --?引自<誰動了我的奶酪>

            最后,讓我引用<WINDOWS游戲編程大師技巧>書中一句話來結束本文:“當你看到眼前有列過山車,請坐上去,不要猶豫。張開你的臂膀,盡情體驗個中滋味,一直堅持到游戲的最后,這就象生活一樣。你的生活將不會留下太多回憶,除非你曾經反抗過、吶喊過,并用堅持不懈的努力向著完美伸出雙臂。世上沒有不可能實現的事情,只要你相信能做到,你就能做到!”
          posted @ 2006-04-01 08:48 xzc 閱讀(333) | 評論 (0)編輯 收藏
          僅列出標題
          共32頁: First 上一頁 24 25 26 27 28 29 30 31 32 
          主站蜘蛛池模板: 柏乡县| 罗山县| 东源县| 东辽县| 乌兰浩特市| 浠水县| 思茅市| 南阳市| 麦盖提县| 鹿邑县| 揭东县| 乌拉特中旗| 大同县| 韶山市| 连平县| 江城| 台北市| 扎赉特旗| 安溪县| 明溪县| 通化市| 怀来县| 灵武市| 福泉市| 桐城市| 安泽县| 青铜峡市| 天气| 和平县| 新闻| 万年县| 鹿泉市| 石渠县| 晋中市| 涟源市| 松桃| 庆云县| 普定县| 乌海市| 沂源县| 蕉岭县|