<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Python是一種不但成熟而且功能也十分強大的面向對象程序設計語言。它的功能性現在已經可以與Java相媲美了。盡管Python有著這樣或者那樣的優點,但是它仍然面對著這樣的一種現實:真正了解Python的人給予了它很高的評價,但是實際上真正了解它的人并不多。在本篇文章里,我將會向您介紹一系列的Python編程資源,這樣您就可以對這種編程語言有更多的了解,并且能夠逐步的開始使用這個優秀的編程語言了。

    開始的第一個步驟

    如果您是剛剛開始了解Python編程語言,你現在就需要一套Python編程軟件,這樣能夠讓你更好的掌握它。正式的Python軟件中包括了程序指令行,圖形化的用戶界面,范例程序代碼以及一整套的相關文件。還有另外一個版本的Python軟件,它的正式名稱是ActivePython。這個叫做ActivePython的版本是由ActiveState公司提供的。ActiveState是生產Python軟件工具以及相關軟件的一家公司。但是,這兩種不同的版本區別何在呢?

    ActivePython版本對于Windows,Linux, 以及Solaris操作系統的二進制形式是可以直接使用的。但是常規的Python軟件雖然比ActivePython支持的操作系統要稍微多一些,但是卻只能夠作為這些操作系統的源代碼來進行下載。ActivePython版本比常規的Python軟件增加了一些內容,并且附帶有更大的標準資源庫。如果對于Python軟件來說您僅僅還處于入門階段的話,我推薦您應該跳過對ActivePython的學習。

    當你安裝了Python軟件之后,你會希望掌握它的編程方法,除非你只是喜歡單純的在你的桌面上增加一個很少使用的可愛快捷方式而已。在國際互聯網上已經有了不少關于Python編程語言的使用指南,請看下面的這些內容:

    • 正式的Python文件中包含了范圍很大的使用指南,并且對您來說,可能是首選的應該瀏覽的網址。
    • Python即時通是一個“Python編程語言的最快的速成班”,這個網址讓學習者通過在一些頁面上對一些程序代碼范例進行結構,輸入,輸出,分類以及變量的控制來熟悉這種編程語言。
    • 投身于Python編程語言的世界是一個綜合性的Python軟件使用指南。它是以電子書的形式來與大家見面的。這款電子書是為了那些有經驗的使用Perl, Java,或者 Visual Basic編程語言的軟件設計人員轉向使用Python而編寫的,所以它是很有針對性的。
    • Python編程語言的全方位接觸是一篇在UnixWorld上登出的時間已經比較久的有關Python編程語言的文章。這篇文章向讀者們講述了如何使用Python編程語言來完成一些比較簡單的小任務,比如說編制一個善意的電子郵件玩笑軟件來讓你的朋友們嚇一跳或者大吃一驚。
    有關Python編程語言總的說明以及資源

    如果您已經開始接觸Python編程語言并且已經有了一定的使用Python進行程序設計的經驗之后,您可能會在這個過程中產生一些問題,或者您會希望得到有關Python編程語言更多的相關資料。為了滿足您這方面的需要,我會向您提供一些網絡上的資源作為您的文獻資料庫。下面列出的這些條都是其中比較好的一些網絡資源:

    • Parnassus山的拱頂是一個巨大的Python程序代碼庫,其中包含了成千上萬可以使用的Python程序模塊。這些程序模塊中有程序設計,圖形化處理方法以及國際互聯網程序設計數據庫。在這個站點上還有一些已經完成的應用軟件,并且可以作為程序源代碼讓您下載下來。
    • Python號星際旅行船是Digital Creations公司制作的一個有關Python編程語言的免費網絡社區。其中包含了總的數據信息資料庫,并且還有成員或者“其星際旅行船宇航員”目錄,在這里能夠和一些Python編程高手進行交流。
    • O’Reily網絡的網絡站點ONLamp.com中擁有關于Python程序開發的部分,在這個部分中,學習者能夠找到有關的一些新聞,論壇,問題解答留言板以及許多相關的文章。
    • Faqts.com中有一個Python程序設計知識數據庫,其中包含了可以隨意查詢的有關Python程序設計的問題以及解決方法。這些資料都是使用過Python語言的程序設計人員提供的。
    • Python-URL!是Dr.Dobb周刊的電子郵件摘要,其中包含了與Python程序設計語言相關的新聞,公告,以及國際互聯網新聞組活動。
    • 有不少針對Python編程語言的電子郵件討論列表。如果您不能在國際互聯網上找到您所需要的答案,您可以通過這種方法從遠方獲取正確的解決方法。
    一些植入Python軟件的有用資源

    Python編程語言擁有極好的擴充性,并且是一種很好的腳本語言。Python作為編程語言能夠非常好的植入大量的應用軟件。這是近來有關Python編程語言活動的中心內容,我們能夠從theKompany中的VeePee了解到更多的信息。VeePee是一種使用圖形用戶界面的腳本環境,這是被設計用來植入Linux GNOME或者 KDE應用軟件,并且能夠對這兩種應用軟件提供腳本支持。我要一再提示您的是,ActiveState對于在.NET中使用Python編程語言擁有經過實驗室檢驗的具體經驗。這樣就允許Python編程語言能夠繼承并且訪問在.NET框架中的對象,并且為其它的.NET編程語言提供了一種腳本支持。

    IDE(集成開發環境)以及編輯器

    就像大家知道的那樣,我是一個沉迷于IDE的人:當我編制程序的時候,如果有code completion,彈出式對話框,菜單以及工具條,這樣我才會感覺舒服一些。我清除的知道在這個世界上還有許許多多像我一樣的人。很幸運的一點是,對我們這些人來說,雖然我們沉迷于此,但是這個世界上有數量繁多的非常優秀的Python軟件的IDE能夠供我們使用,雖然其中的相當大一部分并不是免費的:

    • PythonWorks軟件作品是一個具有商業品質的IDE。它具有一個Tkinter的圖形化用戶界面,程序代碼倉庫,程序調試器,“聰明的”編輯器以及在線幫助功能。并且它是同時支持windows,Linux,以及Solaris這三種操作系統的。其零售價格為395美元。其中還包括免費的評估服務。
    • Wing IDE是一個用戶化的IDE,它能夠支持宏,code completion,多面手程序調試器以及源文件管理工具。Wing對于Linux 以及Windows操作系統的零售價格大約為100美元,但是對于使用公開化源程序來說是免費提供的。現在,免費版本已經可以從多種渠道獲得了。
    • PythonWin是一個免費的只能在Windows操作系統中使用的圖形化用戶界面創建工具。這個工具向程序設計人員提供了一個界面資料庫,這個資料庫只是針對微軟公司的系列產品的。
    • 從我們在ActiveState公司中的朋友(你能證明他們百分之一百的熱愛Python語言么?),我們能夠獲得免費的,經過實驗室驗證的插件IDE程序。這些程序都是為Visual Studio.NET特別設計的,并且已經被命名為Visual Python。請不要把Visual Python和theKompany的VeePee軟件混為一談,它們是兩個完全不同的產品。

    在本文中提到的這些資源能夠幫助你正式的開始使用Python語言進行程序設計的工作,并且還能夠幫助你找到獲取這些資源的途徑。你只要記住的一點是:沒有人喜歡Spanish Inquisitionn(西班牙宗教法庭,在1480-1834年之間存在的天主教法庭,以殘酷迫害異端著稱)。你不會真的期望只是通過一篇文章就能夠獲取所有有關Python編程語言的知識吧?這種愿望是非常不切合實際的。

    posted @ 2006-03-02 20:22 killvin| 編輯 收藏

    PHP5的面向對象特性增強了很多,包括功能上和性能上。但是如果用一門面向對象語言來說,PHP還差很遠,簡單的舉個例子,Java和Python都可以通過import來導入類,但是PHP只能用include這種原始的辦法,因而沒有辦法區分命名空間,做大項目還是不行的。 此外PHP的致命缺陷是它只是Web Server的一個module存在的,沒有App Server來進行復雜業務的管理。因此沒有辦法承擔大型項目的開發和運行。像國內的eachnet原來是用PHP的,交易量和復雜度上升以后,后臺全部用BEA的Tuexdo來做,PHP只是調用。(不過也有人認為,沒有App Server也是一種優勢,就是部署簡單) Python和PHP的本質區別就在于Python有Zope這樣的App Server,因此Python應該劃入Java/C#的陣營,而和PHP要劃清界限了。

    posted @ 2006-03-02 20:20 killvin| 編輯 收藏

    接觸 Python 是兩年前的事了。那時因為要寫個程式來分析數值資料,開始的時候打算用自己最熟的 PHP,試了幾下,很不順手。后來轉用了 Perl,開始的時候都挺順利的。直至有一天整理程式,想把寫好的幾個東西整理成一個工具箱給自己用,試了半天就放棄了:根本是精神虐待。反省后覺得自己學 Perl 只會走捷徑,打算上網找些基本的學習文件從頭努力,但竟然找到了 Python 的網頁。就這樣開始了學 Python,而且是欲罷不能。現在我要寫什么,基本上都是先考慮用 Python,一來實在好用,二來用 Python 寫的程式總會有重用的機會,所以手頭的工具越來越多,用起來就更得心應手了。

    如果你以前只會用 Shell Script 或是 DOS Batch File 而想學些其他的東西,Python 會是你的首選,如果你己經會 Perl 或是 Tcl 或是別的什么,那 Python 會令你改變對 scripting language 的想法。

    為什么要學 Python?

    答:好玩。就是這樣簡單。無論是學 Python 還是用 Python,都是一件賞心樂事。當你寫 shell scripts 寫得鬼哭神號時,當你改 perl scripts 改得頭昏腦漲時,有沒有想過寫 script 其實是很好玩的一件事。你可能從來不相信當你寫一套嚴肅而功能強大的程式,你可以用一個如此好玩的程式語言來開發。更難令你相信的是,就算在程式開發的后期,甚至是幾個月以后當你再次想修改它的時候,你依然都會覺得是一件好玩的事。

    Python 能做什么?

    答:倒不如問,Python 不能做什么? Python 已經差不多把一個 scripting language 作為整合工具 (gluing tool) 的強大功能完全發揮了出來,任何程式,只要有個給 Python 用的接口,Python 就可以把它據為己用,和其他的程式一塊使用。而且

      · Python 有發展 XML 的大型函式庫,并開始有大型系統的構建初型。 · 用 Python 寫的 Zope,可以用來架設整個網站 · Python 語言自己是用 C 來寫的,但現已有用純 Java 寫的 Python 語言實現,近期更有用微軟 .NET 方式實現的 Python 翻譯器,由此證明了 Python 語言定義的高度完整。 · Python 已移植到許多的操作平臺上,包括 Linux、Windows、HP、Solaris、Irix、AIX、BeOS、甚至是 Cray。幾乎和 Perl 一樣多。 ·由于 Python 本身是 object oriented,所以很容易和 C++,Java 等整合,尤其在 Visual 當道的 Windows 系統。這點要比 Perl 好許多。

    和其他語言的比較

    一般的說法的這樣的:

    • Shell script 太舊了,無論如何不能用來寫程式。
    • Perl 擅長做服務器的管理,因為它的字串處理功能特別強大,同時有全面的編程接口和操作系統相連。自己用沒問題,就是不懂人家在寫什么。
    • PHP 擅長于網頁,因為它可以嵌入在 HTML 文件中并支援各類資料庫。但一離開網頁就左支右絀。
    • Python 特別適合一般的需求,因為它語法簡明,容易維護,有很多模組可用,而且容易做出圖形介面。但它并不是 object oriented 并不純,速度也較 Perl 慢一些。
    • Tcl/Tk 基本變數形態只有文字串,每次算術都是從文字變數字再變文字,鳴,沒什么好提的了吧。
    • Java 太偉大了,我可不想每次開始寫程式時都幻想要完成一個跨企業的解決方案,引入幾十個標頭檔,寫完了才明白原來我只需它讀一個用戶指定的文件,畫兩條直線就行了。唉,落差太大。
    • Ruby 太新了,要正式應用是將來的事。

    但事實上我個人的感受最深的是它比較好玩的說法。雖然像是不認真,但一種可以讓人寓編程于娛樂的程式語言,正是程式語言的設計終極嘛。

    Python 的作者是數學家,而 Perl 的作者則是個天才程式員。因此這兩種語言的風格回異:Python 語法鋪排的很整潔,相同功能的程式由不同人寫出來的樣子都很像,這些一致的、前后呼應的程式對于系統的拓展和整合十分重要。因此閱讀 Python 的程式感覺上很暢順。Perl 的語法則很濃縮,而且經常會有些意想不到的巧思,可惜這些每每體現在字里行間的妙著對整個程式的可讀性帶來負面影響。因而一個短小的 Perl 程式往往令人愛不釋手,但當它越來越長時總會變成程式員的永痛。

    至于PHP,因它的發展歷史一直是圍繞著 web page,所以做網頁設計是十分方便的,但是寫一般的工作則平平無奇。比如說控制執行緒,處理進程間的訊息傳送以致做圖形用戶介面等都久奉,這是因為從 WEB 的角度,這些并不重要:圖形介面,HTML 就己經是了,而程式的執行和互相合作則是 Web Server 要考慮的事。

    我推薦 Python 是因為我覺得它比較適合用作一般性程式編寫和系統整合,尤其是在科學和教育領域中。我并不是說大家沒本事學好 Perl,只是很多時候我們并不需要用到 Perl 的精妙之處,更多的時候用一個清楚直接的描述要比用一個智力題級的招數更有好處。除了語法的設計較為整潔外,Python 還有很好的對電腦圖形的支援,也有十分快的數學陣列模組。

    而它最方便的地方是很容易的把其他的程式整合在一起,譬如說你有個幾年前寫的 C 程式,只要修改很小的一部份就可以編譯成 Python 可用的模組。事實上已經有自動幫你做這些修改的程式了,人們也己為許多各種好用的函式庫做出了 Python binding,如 OpenGL、GTK、QT、GD、甚至于解方程組的、找頻譜的都有。

    而在使用了一段時間后,我開始體會下面的說法:

      ‘Python 是設計出來的,而 PHP 和 Perl 是累積而來的。’

    雖然它們各自都有類似的功能,但在使用時會發現 Python 的寫法總是較為一致,這是因為 Python 從一開始便考慮了它整個的架構。相反,像 Perl 或 PHP 則有很多功能都是后來慢慢加上去的,所以到后期 Perl 的發展越來越難,以致 Perl 6 幾乎要從頭設計。而 PHP 則現在才開始頭痛于構思新的函數名稱 (所有的 PHP 函數都是全域定義的,所以每加一個函數都有可能和已經定義了的名字重復)。為了解決問題,它們各自都開始注意加強 class, object 的支援。但很明顯的是,在程式成熟后再加這些基本功能會令整個語言的框架變得頭重腳輕,無論是寫起來還是用起來都有些不穩的感覺。

    然而 Python 在一開始的時候就把這些考慮了進去:Python 根本就是以物件導向作為設計的基礎。因此在加了許許多多的功能和模組后,它的風采仍舊,清新依然。

    好話說了不少,光說不練可是不行。參考程式示范區的實際例子,看看 Python 到底是怎樣一回事。

    posted @ 2006-03-02 20:17 killvin| 編輯 收藏

    javascript的調試相當繁瑣,alert不能有效地起到調試作用,原因在于:
    1, alert只能在開發期使用,不能在產品交付中繼續alert debug info
    2, 就算在開發期,頻繁的alert會導致調試效率低下。
    一個簡單的log就會有很大幫助。下面就是我在現實生活中使用的javascript log方法。
    把它包含在一個全局import的js里面,以后代碼就可以采用log()的方式來進行了。

    當然,若誰有時間改造為log4j那樣的可以按照分類打開或關閉log,再分上info,error什么的log級別就更好了。不過下面的簡單方法就夠我用拉。

    common.js

    function log(v)
    {
         var s = "<li><font color=blue>"+new Date()+"</font> "+v+"</li>";
         logPanel_log.innerHTML+=s;
    }

    window.onhelp = function()
    {
         logPanel.style.display=logPanel.style.display=='none'?"block":"none";
         return false;
    }

    document.write(
     "<div id=logPanel style='display:none;text-align:right'>"+
        "<button onclick=\"logPanel_log.innerHTML='';\">clear</button>&nbsp;"+
        "<button onclick=\"logPanel_log.innerHTML+='<hr>';\">HR</button>"+
        "<div id='logPanel_log'></div></div>");

    它覆蓋了默認的IE 按F1鍵顯示IE help的行為,現在按下F1就能夠顯示log信息了。

    摘自 redsaga滿江紅 http://www.blogcn.com/User6/caoxg/blog/5705836.html

    posted @ 2006-03-02 20:15 killvin| 編輯 收藏

    JavaScript說分明 

    http://taiwan.cnet.com/enterprise/technology/0,2000062852,20103386,00.htm
    朱仲傑撰  2005/12/28

     

    最近因為AJAX受到Google等網路服務業者的愛用而聲名大噪。也讓這個其實存在很久的程式語言再度成為討論話題。


    JavaScript可以說是全世界使用最普遍的一個語言。雖然就統計資料(註)上來看,用JavaScript為主的專案數量只排在第九名,但我相信就應用的層面來看,絕對遠超過Java與.Net。JavaScript也是最讓人混淆的一個語言,即便是專業的網頁工程師,也不見得每位都能正確的了解它。網頁工程師對它又愛又恨,使用者最能體驗到它所帶來的好處,但常常也是被它搞的昏頭轉向。到底它是個什麼樣神奇的語言呢?

    JavaScript的前世今生

    提到JavaScript,大家第一個聯想到的就是Java,但一切的誤解也就從這開始。要說它跟Java完全沒關係嘛,也不盡然。JavaScript原來的名稱叫LiveScript,是Netscape(網景)為了它的LiveWare平臺所發展出來的一套語言。後來之所以改名叫JavaScript,主要是因為當年Netscape與Sun合作,共同開發網頁上的腳本語言,而剛好Sun正在開發Java語言,初期而且也是以網頁上的應用Java Applet為主,所以LiveScript也就改名為JavaScript。第一個擁有執行JavaScript的瀏覽器Netscape 2.0,發表日期也跟Java一樣,同樣都是1995年,所以算起來今年也是JavaScript的十歲生日。

    JavaScript的版本非常多種,最原始的是由Netscape一路發展過來的,後來NetScape把它交給ECMA製定為標準(ECMA-262),而ECMA所製定出來的稱之為ECMAScript;最喜歡自己也搞一套的微軟,也有自訂的Jscript。理論上,有了標準大家就應該要遵守,不過到目前看來,實際上並非如此。各家瀏覽器相容的程度不一,造成現在混亂的局面,同一個網頁用不同的瀏覽器瀏覽有時結果不盡相同。

    JavaScript沒有你想像中的簡單

    JavaScript是屬於prototype-based的一種語言,而prototype-based又是物件導向程式設計語言(Object-Oriented Programming Language)的一個分枝,所以嚴格說起來,JavaScript也是一種物件導向程式設計語言。光看到「物件導向」這四個字,我想很多人頭皮都已經開始發麻了,不過JavaScript之所以不簡單並不是因為這一點,而是因為它的結構鬆散和型態鬆散(loose typing)所導致。

    你若寫過Java程式的話或許就知道,Java程式必需要Java虛擬機器(JVM)上執行,在執行Java程式之前,它必需是被編譯過的;在編譯的過程中,Java會檢查許許多多的條件,例如最基本的語法、變數的宣告等等。

    JavaScript一樣得依存在一個容器(Container)中才能執行,我們常見到的容器就是瀏覽器(Web Browser),跟Java不同的是,JavaScript的程式不需要事先編譯,它是屬於直譯式的語言,你可以把它想像成看到一行程式碼就執行一行。因為少了編譯時期的檢查,JavaScript就比Java「自由」許多,你可以在網頁上隨意的位置上安插JavaScript程式、可以隨意的建立新的變數來使用;你不用分清楚什麼是數值,什麼是字串、什麼又是物件,通通可以加加(+)在一起,這就會造成相當不嚴謹的開發過程。

    自由是必需要付出代價的,前面提到相容性的混亂,在這又有語法結構上的混亂,這下子可以說是亂上加亂了。網頁工程師之所以對JavaScript又愛又恨,愛是因為透過適當的JavaScript,可以在網頁上創造出許許多多特殊的效果,讓使用者在瀏覽這個網頁時,能有更多的互動。恨是因為市場上極少有以JavaScript為主的整合開發工具(IDE),因為剛剛所說的混亂,造成JavaScript程式很難開發和除錯。

    JavaScript之所以普及,是因為寫JavaScript程式的使用者,不見得是寫Java、C/C++、VB等受過基本程式設計訓練的程式設計師,往往網頁的美工人員才是使用JavaScript的大宗。他們不會也沒時間去學習完整的JavaScript,而是有需要時才在網頁上東加一些、西加一點,這些加上去的JavaScript可能是網頁編輯器所提供的元件、或是網路上分享出來的程式片段。JavaScript一點都不簡單,只是大家都很偷懶,用最簡單的方式來使用它罷了。

    AJAX應用為JavaScript注入強心劑

    JavaScript十年來沒有特別受歡迎,因為WWW盛行以來它和HTML一樣已變成網頁裡最基本的元素,直到AJAX的出現,讓JavaScript大大的受到眾人的注視。AJAX的全名是 Asynchronous JavaScript and XML,JavaScript就是其中之一的主角,AJAX並不是一項新的技術,而是將一些舊有的技術結合起來做一種巧妙的應用,賦予網頁的一股新動力。

    AJAX這個名詞最早是出現在Adaptive Path網站上,一篇由 Jesse James Garrett於2005年2月18號所寫的文章中所提出的(http://www.adaptivepath.com/publications/essays/archives/000385.php)。AJAX是客戶端(瀏覽器)的技術,簡單的說,就是用JavaScript與後端伺服器做資料的溝通,資料採用XML的格式,JavaScript動態地從後端拿到XML格式的資料,重新整理、重組後再顯示到網頁上。AJAX基本上是無關Java或.Net的,甚至PHP也可以跟AJAX結合在一起使用。網路上、雜誌裡介紹AJAX的文章相當的多,在這我就不贅述。在這要提醒大家注意的是,因為AJAX,JavaScript又開始大量的應用在網頁裡,前面所提及的混亂又被突顯了出來。混亂不一定只是負面的,所謂時勢造英雄,我們期待有人能出來一統江湖。

    JavaScript的其它應用

    JavaScript只能夠運用在網頁上嗎?其實蘋果電腦(Apple)除了硬體上的創意外,在作業系統上的表現一直以來也是使用者的最愛。在新的Mac OS X 10.4裡,有個新的功能叫-Dashboard,它可以讓你執行一些小程式,例如月曆、天氣預報、地圖查找等。這些小程式稱為Widget,而撰寫Widget的主要語言就是JavaScript,當然還可以配合HTML、CSS甚至Java Applet。隨著Mac OS X的使用者日益成長,撰寫Widget已成為一個新興的軟體業。Dashboard其實不是第一個實踐這個概念的程式,早在Mac OS X 10.2時,就有一個叫Konfabulator的軟體做出這樣的平臺,在當時大受歡迎。後來Apple在Mac OS X 10.4內建一樣功能的Dashboard時,還飽受外界的批評和指責,認為Apple是抄襲Konfabulator的。隨著Mac OS X直接支援Wedget,Konfabulator漸漸的淡出Mac的舞臺。不過Yahoo看上了它,把它給買了下來,而在不久前重新推出Windows/Mac版的Yahoo!Webget,這下Windows的使用者也能享受Widget所帶來的便利和好處。

    下一步

    世界上有所謂的Java工程師、C/C++工程師、VB工程師等?,好像沒有JavaScript工程師這樣的頭銜,我個人覺得他應該是被需要的。JavaScript其實並不好學,教育訓練是個商機,開發除錯平臺也是一個商機。這年頭流行認證,它也是可以著墨的,例如辦理類似SCJP、MCSE這樣的認證考式(事實上是有JavaScript Certification,不過沒像其它認證這麼有公信和正式就是了)。唯有專門的訓練課程及認證才能真正落實JavaScript的標準化,這樣寫出來的JavaScript程式才不會相容性不足,造成用某種瀏覽器才能觀看的特定網頁的情況。

    而另一種是像無障礙網頁這種的認證,若你的網頁通過JavaScript相容性審合,那麼在網頁上就可以放上一個標章,証明你的網頁是相容於各種瀏覽器的。以上這些如果能由國際大廠來推動,成功的機會才會比較大,好奇的是,這麼多年來,怎麼沒人想幹這件事?!也許是吃力不討好吧。

    註: TIOBE Programming Community Index for December 2005 http://www.tiobe.com/tpci.htm 相關連結:

    ECMA-262
    http://www.ecma-international.org/publications/standards/Ecma-262.htm

    Spidermonkey
    http://www.mozilla.org/js/spidermonkey/

    Rhino
    http://www.mozilla.org/rhino/

    Dashboard
    http://www.apple.com/macosx/features/dashboard/

    Yahoo!Wedgets
    http://widgets.yahoo.com/

    posted @ 2006-03-02 20:09 killvin| 編輯 收藏

    Buffalo介紹

    Web正隨著Amowa/Ajax的引入開發開始變得有趣!

    Buffalo是Amowa思想實現的關鍵組件。Buffalo中定義了Web遠程調用的傳輸基礎,并且將遠程調用對象完整的序列化到了本地,成為可以被JavaScript編程觸及的對象。Buffalo中的重要組件 - BuffaloBinding,提供了將JavaScript對象綁定到HTML元素的能力。這種綁定將是無侵入的,只需要在HTML元素中加入若干個不影響排版的屬性,即可將數據與界面綁定。

    Buffalo1.1之前的版本重要的功能主要集中于遠程調用與Java對象/JavaScript對象之間的雙向序列化,這個特性已經被眾多的應用久經考驗,被認為是健壯的。它大大減少了在Java對象與JavaScript對象之間需要考慮的細節,開發者可以更用心地進行業務設計和界面設計。1.2版本的推出,引入了新的眾多的特性,包括:新的重新改寫的Spring集成;與流行javascript庫prototype的集成;支持瀏覽器前進后退按鈕,等等。Buffalo努力使Web2.0的概念在這個小小的輕量級的框架中得到體現,讓你的應用具備更豐富的表現。

     

    問題

    可是在使用Buffalo傳輸對象的過程中我發現Buffalo并不能夠很好的傳遞用戶自定義的對象,不光如此在與作者的討論過程中我還發現很多的人對于Javascript程序的規范根本不屑一顧,似乎選擇了Javascript本身就是選擇了"自由編程",可是真的如此嗎?

    其實Javascript是一個比較純粹的OO語言,并不想一些報道中所說的那樣,對于封裝、繼承、多態Javascript同樣可以完成,既然它是OO的語言,就理所應當的按照某種規范來編寫代碼,正如JavaScript說分明 中說得那樣,編寫Javascript不是一件簡單的事情,關鍵是很多人亂用了這個語言,從而導致給很多的朋友以為寫Javascript就是很沒有水準的事情(偶以前也是如此),但我最近發現用Javascript這樣的動態語言沒有一個很好的語言規范,你開發出來的應用只能夠停留在小型系統之上,而對于比較大型的應用開發,這樣寫出來得代買根本無法復用!

    再來說說Buffalo傳輸對象的問題,以下是我自定義的Node對象

    function Node(_id , _type)
    {

     //log("create node object!!!");
     //============================== property =================================//
        //=========================================================================//
     var id = _id;
     var type = _type; //<- type的出現在OO世界里本身就是背叛
     var brush = null //節點的物理表現句柄
     
     var rList = new Array();//左節點列表
     var lList = new Array();//右節點列表
     
     var rLine = new Array();//節點的左線列表
     var lLine = new Array();//節點的右線列表

     var x = 0;//節點的x坐標
     var y = 0;//節點的y坐標

     var m = false; //標識節點是否可移動
     var r = false; //標識節點是否能夠建立聯系

     var name = ""; //節點的名稱

     //================================ method =================================//
        //=========================================================================//

     this.getType = function()
     {
      return type;
     }
     this.setType = function(_t)
     {
      type = _t;
     }
     this.setName = function(_n)
     {
      name = _n;
     }
     this.getName = function()
     {
      return name;
     }
     this.setId = function(_i)
     {
      id = _i;
     }
     this.getId = function()
     {
      return id;
     }
    }

    然而在使用Buffalo的時候Node對象根本就無法傳遞,而導致這個問題的原因竟然是我沒有"自由的編寫Javascript"!其實問題就出在doStructXML 方法上,作者在這里有意的"避開"了這個問題,所以在傳遞Node的時候對于其私有的方法Buffalo是根本就不考慮的,FAINT!

    原先

     doStructXML : function(data){
      var boClass = data[Buffalo.BOCLASS];
      var boType = boClass ? boClass : "java.util.HashMap";
      var xml = "<map>\n";
      xml += "<type>" +boType+ "</type>\n";

      for (var i in data){
       if (data[i] != boType) {
        if (typeof(data[i]) == "function") continue; /* the function shouldn't transfered. */
        xml += this.getParamXML(this.dataTypeOf(i),i)+"\n";
        xml += this.getParamXML(this.dataTypeOf(data[i]),data[i]) + "\n";
       }
      }
      xml += "</map>\n";
      return xml;
     },

    修改后

     doStructXML : function(data){
      var boClass = data[Buffalo.BOCLASS];
      var boType = boClass ? boClass : "java.util.HashMap";
      var xml = "<map>\n";
      xml += "<type>" +boType+ "</type>\n";

      for (var i in data){
       if (data[i] != boType) {
        if (typeof(data[i]) == "function")
        {
         /*判斷方法名稱*/
         if(i.substring(0,3) == 'get')
         {
          var _name = i.substring(3,i.length).toLowerCase();
          var _value = data[i]();
          //alert("functin name[" + this.dataTypeOf(_name) + "]=" + _name
          // + " | value[" + this.dataTypeOf(_value) + "]=" + _value);

          xml += this.getParamXML(this.dataTypeOf(_name),_name)+"\n";
          xml += this.getParamXML(this.dataTypeOf(_value),_value) + "\n";
         }
         continue; /* the function shouldn't transfered. */

        }
        
        xml += this.getParamXML(this.dataTypeOf(i),i)+"\n";
        xml += this.getParamXML(this.dataTypeOf(data[i]),data[i]) + "\n";
       }
      }
      xml += "</map>\n";
      return xml;
     }

     

    總結

    1。Javascript的編寫是否應該遵守一定的規范,其實屬于程序員自身休養的問題,但我還是覺得復用JAVA的編碼規范不是壞事情!

    2。時刻記住Buffalo是建立在burlap協議的基礎上的,我們應該把注意力放在burlap上而不僅僅只是Buffalo!

    posted @ 2006-03-02 19:46 killvin| 編輯 收藏

    不知道已經被欺騙了多少次了,自己依然還是很留戀CSDN的Blog空間,是不是自己太虛榮了?無論如何都不想再次的被忽悠!

    posted @ 2006-03-02 19:24 killvin| 編輯 收藏

    僅列出標題
    共5頁: 上一頁 1 2 3 4 5 
    主站蜘蛛池模板: 久久精品毛片免费观看| 拍拍拍又黄又爽无挡视频免费| 久久亚洲AV成人无码| 精品免费国产一区二区| jizz免费在线观看| 亚洲理论片在线观看| 免费国产不卡午夜福在线| 99国产精品视频免费观看| 亚洲AV无码AV吞精久久| 国产AV无码专区亚洲Av| 四虎成人免费影院网址| 国产在线观看免费视频软件| 亚洲男人的天堂网站| 亚洲av永久无码精品漫画 | 亚洲国产日韩a在线播放| 亚洲一区AV无码少妇电影☆| 青娱乐免费在线视频| 国产特黄一级一片免费| 亚洲午夜无码久久久久小说| 亚洲国产精品成人精品无码区 | 最近最新MV在线观看免费高清| 无码人妻一区二区三区免费视频| 亚洲成人福利在线观看| 国产亚洲精品看片在线观看 | 亚洲精品国产福利片| 免费a级黄色毛片| 日韩精品无码区免费专区| 中文字幕日本人妻久久久免费| 亚洲国产精品嫩草影院| 亚洲综合综合在线| 亚洲色WWW成人永久网址| 国产在线a不卡免费视频| 日韩视频在线精品视频免费观看 | 女人体1963午夜免费视频| 老司机午夜在线视频免费观| 亚洲一级毛片中文字幕| 亚洲精品第五页中文字幕| 久久九九亚洲精品| 国产亚洲精品成人a v小说| 免费人成在线观看网站视频 | 亚洲jjzzjjzz在线播放|