hank1988 的部落格

What Is W3C?

W3C的簡介

W3C是一個國際產業財團致力於「發展Web的潛能」。 Tim Berners-Lee(Web的發明者)為其領導人。1994年,W3C有超過450個成員組織──包括MicrosoftAmerica OnlineApple Inc. AdobeSun Microsystems,和各種各樣其他軟硬體的製造商、内容供應商、學院和電信公司。財團由三個研究機構──美國的MIT、歐洲的INRIA和日本的Keio大學。

W3C的用途

W3C開發open specifications來提高web-related產品的互用性。

W3C Recommendations由包括財團成員和被邀請的專家開發。這個工作群組從和其他組織的一般公眾輿論介入創造對網的申請公司獲得,並且創造工作草案和提出的推薦。這些然後遞交給W3C會員資格和主任,為正式認同當W3C Recommendations。關於這個過程的更多資訊和回顧階段可以從W3C網站獲得。
http://www.w3.org/

W3C標準

HTML 4.0 -超文字標記語言標準

超文字標記語言標準(HTML)是用途廣泛在增加的結構網到文字檔。

瀏覽器解釋這些檔,用多媒體形式呈現給用戶。

例如,視覺瀏覽器顯示"粗體字"strong element (<strong></strong>),而文字則會做粗體字的顯示以突顯此段文字。 在Cascading Style Sheets (CSS)作者也許定義how structural elements,則其將由瀏覽器預設值顯示。Extensible Markup Language

 

Example of part of an XML document

<addressbook>
  <entry>
    <name>Bill Gates</name>
 
    <email>bgates@microsoft.com</email>
  </entry>
  <entry>
    <name>Marc Andreesen</name>
    <email>marca@netscape.com</email>
 
  </entry>
  <entry>
    <name>Jon S. von Tetzchner</name>
    <email>jon@opera.com</email>
  </entry>
</addressbook>

Extensible Markup Language (XML) HTML一般,為一種標記語言,但是並非唯一而固定的元素,它允許定義自己或使用別人做的集合。通過使用XML namespaces,它甚至准許使用在單一份檔案之內的數個集合。

XML的某些應用,例如XHTMLMathML,已經成為W3C Recommendations

Style sheet standards(例如:CSSXSL),提供各式各樣的物件指定如何回報XML元素。符合標準且支援XML指令的在瀏覽器中仍不夠完整,因此為提出適合人們的資訊 HTML (XHTML)CSS-driven是未來的目標。 如今的XML主要仍是machine-to-machine communication

XMLHTML靈活,主要由於元素和做結構系統的能力增加。這給予XML龐大的數據組織一個理想格式──它已經是在使用中在許多數據庫和搜尋引擎中。

 

XHTML 1.0, 1.1和模組化

XHTML 1.0是利用HTML的重構作為XML應用。 XHTML 1.0能視為形式上來自HTML 4.01,而技術上受到XML的影響。

XHTML如同HTML在瀏覽器上顯示。如果需要再加工的內容,我們會傾向於使用XHTML; XML的更加嚴謹的語法規則使XHTMLHTML更加容易、更加便宜。

理論上, XHTML 1.0繼承了HTML 4.01的一些基本概念:

描述和檔案格式必須分開通過樣式表style sheets
檔案應無障礙

檔案應國際化

XHTML 1.0也使用DTD模型 : 嚴密,過度和框架。這個模型最初出現在HTML 4.0並持續至HTML 4.01

XHTMLXML的一些重要技術包括:

所有文件類型宣告通過正確的DOCTYPE declaration

相同檔案宣告包含DOCTYPE declaration的結構,與一個html元素為XHTML namespace的宣告,一個head包括titlebody

所有元素和屬性名字用小寫撰寫,並且引述所有屬性值

所有非空的元素(e.g. p, li) 將終止於結束標記

所有空的元素(e.g. br, hr, img) 將終止於trailing slash (<br />)

 文件的宣告是對DTD的驗證

XHTML 1.1主要的由三個部分組成:

• XHTML 1.0嚴密的DTD

• XHTML模組化

 •Ruby Annotation

如果想用ML 1.1編輯文件,可以是藉由使用公共的XHTML 1.1 DTD的使工作將非常有條理。分離的結構和完整的表述是在這裡完成,所有的工作將會進入style sheet另一種方法則是在XHTML 1.1XHTML模組化。這種分析與HTML and XHTML (text, tables, frames, forms)組件相似。然後,就可以寫自己所需要組件的DTD。這是可擴展性的,基本上是讓網路開發者能夠自行定義標記。Ruby Annotation是一個特殊的方式處理某些亞洲字符。Ruby Annotation現在是一個國際化的工作。  

CSS - Cascading Style Sheets

Cascading Style Sheets CSS )是一種用指定樣式,內容類型,自定義類型的元素或個別情況改變HTMLXML元素外觀的機制。
Style Sheets可以用來確定整個網站的外觀。根據CSS簡介,W3C的建議,在HTML具體排版的特點逐漸被淘汰,取而代之的是樣式,創造一個更簡單、更結構化的World Wide Web

 

AJAX 開發所針對的議題與技術概念

AJAX 所針對的開發議題:

 

傳統網頁應用程式的侷限性──每當網頁資料或使用者介面需要變更時,必須進行用戶端與伺服端之間的往返,當有極大量的資料頻繁的往返,將會造成者用者感受到非常漫長的等待。

 

網頁應用程式的吸引力相較於其他類型的應用程式要小得多──很多瀏覽器包含的增強HTML
控制項,都是針對特定瀏覽器而實作,因此想要獲得這些控制項的Rich UI,開發者必須針對特定瀏覽器建立應用程式,將會非常複雜,故開發人員往往避免在網頁中建立以特定用戶端特徵的功能。

 

核心概念:使用非同步呼叫,結合XML方式使用Client Script與大量傳輸資料。

 

開發者能夠透過XMLHTTP來進行非同步的Web服務呼叫,網頁中的資料與使用者介面不需要進行用戶端與伺服端之間的往返,產生較少的資料傳送與較佳的應用程式效能,非同步呼叫能夠使得網頁應用程式能夠有更佳良好的反應性,因為使用者能夠在伺服端執行呼叫的同時,而用戶端仍能繼續進行工作。

 

AJAX大量使用Client Script,特別是JavaScript,用於進行遠端呼叫、執行用戶端應用程式的處理與建立增強的使用者介面功能。AJAX 的解決方案使用JavaScript 並搭配其他數種Client 端類型技術,包括了:

1.瀏覽器的DOM(Document
Object Model
: 將這些元素呈現在HTML 網頁中成為標準的物件組,並且能夠透過程式化方式來操作它們。

2.DHTML:當使用者在頁面中輸入時,DHTML 透過Client Script方式延伸了HTML 互動的反應能力,使其變得更容易不需要往返的行為。

3.行為:一種程式化包裝在使用者介面中的動作,能夠與網頁元素產生連結。

4.元件:能夠提供擴充用戶端使用者介面功能特點的JavaScript物件。

 

JavaScript 結合這些用戶端技術後,使得開發者足以建立能夠媲美桌上型應用程式的使用者介面功能特點。

資料是下一個Intel Inside

現在每一個重要的互聯網應用程式都由一個專門的資料庫驅動:Google的網路爬蟲, Yahoo!的目錄(和網路爬蟲),Amazon的產品資料庫,eBay的產品資料庫和銷售商,MapQuest的地圖資料庫,Napster的分散式歌曲庫。正如哈爾·瓦裡安(Hal Varian)在去年的私人對話中談到的,“SQL是新的HTML”。資料庫管理是Web 2.0公司的核心競爭力,其重要性使得我們有時候稱這些程式為訊件infoware)而不僅僅是軟體。
該事實也引出了一個關鍵問題:誰擁有資料?
通過控制軟體的API來形成,商業優勢會變得困難得多,但是對關鍵資料資源的控制則不同,特別是當要創建這些資料資源非常昂貴,或者經由網路效應容易增加回報的時候。
資料是許多此類程式事實上的Intel Inside,是一些系統的唯一的資訊源元件,這些系統的軟體體系多數是開放源碼的,也有商業化的。
當前競爭火熱的網路地圖(web mapping)領域顯示著,對擁有軟體核心資料的重要性的疏忽大意,將最終削弱其競爭地位,可以輕鬆地通過對同一資料的授權來提供一個具有競爭力的程式。
然而,Amazon大力增強其資料,增加出版商提供的資料,例如封面圖片,目錄,索引,和樣張材料。利用其使用者來評注資料,以至於十年之後,成為圖書文獻資訊的主要來源,一個學者、圖書管理員和消費者的參考書目來源。Amazon還引入了其專有的識別字,即ASIN,該識別字在ISBN存在時與之對應,而當產品不帶有ISBN時,就創建出一個等價的命名空間。Amazon從而有效地吸收和拓展了其資料提供商。
如果MapQuest也利用用戶來評注地圖和路線,添加新的價值層面。那麼對僅僅通過授權使用基礎資料來進入這一市場的其他競爭者,將造成莫大的困難。
  這場競賽已經涉及到擁有特定類別的核心資料:位置、身份、公共事件日曆、產品標識和命名空間等。在許多情況下,在那些創建資料需要鉅額成本的地方,也可能存在一種如同Intel Inside方式一樣憑藉單一資料來源來所有作為的機遇。其他情況下,勝者將是那些通過使用者聚合來達到臨界規模,並且將聚合的資料融入系統服務中的公司。
關於資料,必須注意一個進一步的方面,那就是用戶關心其隱私和對自己的資料的許可權。在許多早期的網路程式中,版權只被鬆散地執行。然而,隨著很多公司開始認識到,對數據的掌控有可能成為他們首要的競爭優勢來源,我們將會看到在此類控制方面強度更大的嘗試。
正如專有軟體的增長而導致自由軟體運動一樣,在下一個10年中我們會看到專有資料庫的增長將導致自由資料運動。在像維基百科全書這樣的開放數據項目、創作共用(Creative Commons)、以及像Greasemonkey(讓使用者決定如何在其電腦上顯示資料)這樣的軟體專案中,我們可以看到這種對抗勢頭的前兆。

Blog和大眾智慧

Web 2.0時代一項最受吹捧的特性就是Blog的興起。Blog只是一種日記形式個人網頁,但按時間順序來排列的結構看起來像是一個微不足道的變化,但卻推動著一個迥然不同的分發、廣告和價值鏈。其中一大變化就是一項稱為RSS的技術。RSS是自早期電腦高手們認識到CGI(公共閘道介面)可用來創建以資料庫為基礎的網站以來,在Web根本結構方面最重要的進步。RSS使人們不僅僅連結到一個網頁,而且可以訂閱這個網頁,從而每當該頁面產生了變化時都會得到通知。斯格仁塔將之稱為incremental web。其他人則稱之為live web當然,現在所謂動態網站(即具有動態產生的內容的、由資料庫驅動的網站)取代了十年前的靜態網站。而動態網站的活力不僅在於網頁,而且在連結方面。一個指向網路blog的連結實際上是指向一個不斷更新的網頁,包括指向其中任何一篇文章的固定連結permalinks),以及每一次更新的 通知。因此,一個RSS是比書籤或者指向一個單獨網頁的連結要強大得多。

  RSS同時也意味著網頁流覽器不再只是限於流覽網頁的工具。儘管諸如Bloglines之類的RSS聚合器(RSS aggregators)是基於網路的,但其他的則是桌面程式,此外還有一些則可以用在可攜式裝置上來接受定期更新的內容。

  RSS現在不僅用於推送新的blog文章的通知,還可以用於其他各種各樣的資料更新,包括股票報價、天氣情況、以及圖片。這類應用實際上是對RSS本源的一種回歸:RSS誕生於1997年,是如下兩種技術的匯合:一種是戴夫·溫納(Dave Winer)的真正簡單的聚合Really Simple Syndication)技術,用於通知博客的更新情況;另一種是Netscape公司提供的豐富網站摘要Rich Site Summary)技術,該技術允許用戶用定期更新的資料流程來定制Netscape主頁。後來Netscape公司失去了興趣,這種技術便由溫納的一個博客 先驅公司Userland承接下來。不過,在現在的應用程式實現中,我可以看出兩者共同的作用。但是,RSS只是令Blog區別於同普通網頁的一部分原因。湯姆·科迪斯(Tom Coates)這樣評論固定連結的重要性:
  現在它可能看上去像是一項普普通通的功能,但它卻有效地將Blog從一個易於發佈(ease-of-publishing)的現象,進一步轉變為互相交叉的社區
的一種對話式的參與。這是首次使得對其他人的網站上的很特定的帖子表態和談論變得如此地容易。討論出現了,聊天也出現。同時,其結果是出現了友誼或者友誼更加堅定了。固定連結是第一次也是最為成功的一次在Blog之間搭建橋樑的嘗試。

  在許多方面,RSS同固定連結的結合,為HTPPWeb協定)增添了NNTP(新聞群組的網路新聞協定)的許多特性。所謂blogosphere,可以將其視作一種同Web早期的、以對話方式來灌水的新聞群組和公告牌相比來說,新型的對等(peer-to-peer)意義上的等價現象。人們不僅可以相互訂閱網站並方便地連結到一個頁面上的特定評論,而且通過一種稱為引用通告(trackbacks)的機制,可以得知其他 任何人連結到了他們的頁面,並且可以用相互連結或者添加評論的方式來做出回應。

  有趣的是,這種雙向連結(two-way links)曾是象Xanadu之類的早期超文字系統的目標。超文字純粹論者已然將引用通告頌揚為向雙向連結邁進了一步。但需要注意的是,引用通告不是一個真正的雙向連結,確切地講是一種(潛在地)實現了雙向連結效果的對稱式單向連結。其間的區別看起來可能很細微,但實際上卻是巨大的。諸如 Friendster, OrkutLinkedIn那樣的社交網路系統(social networking systems),需要接受方做出確認以便建立某種連接,從而缺少像互聯網架構本身那樣的可伸縮性。正如照片共用服務Flickr網站的創始人之一卡特裡 納·費克(Caterina Fake)所指出的,注意力僅在碰巧時才禮尚往來。(Flickr因此允許用戶設置觀察列表,即任何用戶都可以通過RSS來訂閱其他所有用戶的照片流。注意的物件將會被通知,但並不一定要認可這種連接。Web 2.0的世界也正是丹·吉爾默(Dan Gillmor)的所謂個人媒體Wethe media)的世界。在這個世界中,是所謂原本的聽眾,而不是密實裡的少數幾個人,來決定著什麼是重要的。

Web2.0基本概念

1. Web作為平臺

Web 2.0沒有一個明確的界限,不妨將Web 2.0視作一組原則和實踐,由此來把距離核心或遠或近的網站組成為一個類似太陽系的網路系統,這些網站或多或少地體現著Web 2.0的原則。

Flicker, del.icio.us : 標記非分類

PageRank, eBay聲譽, Amazon評價 : 用戶作為貢獻者

Blog : 參與非出版

BitTorrent : 無中心

Gmail, Google map, AJAX : 豐富的用戶體驗

Google AdSense : 用戶自助

Wikipedia : 根本的信任

戰略定位:Web做為平台用戶定位:自己控制自己的數據核心競爭力:服務,非打包的軟件、參考體系高成本效益的可伸縮性、複合數據和數據轉換、軟件高手單一設備層、利用集體智慧

Web2.0的元素:

1.概念非技術

2.永遠的測試版

3.可編程性

4.複合權力

5.軟件改進

6.參與

7.緊迫性

8.內部的細部可詢性

9.豐富的用戶體驗

10.小部分的結合

11.用戶的信任

12.用戶自助

Web 2.0的經驗是:有效利用消費者的自助服務和演算法上的資料管理,延伸至各個邊緣而不僅僅是中心。 2. 利用集體智慧在誕生於Web 1.0時代並且存活了下來,而且要繼續領導Web 2.0時代的那些巨人的成功故事的背後,有一個核心原則,就是他們借助了網路的力量來利用集體智慧: 超連結是Web的基礎。當使用者添加新的內容和新的網站的時候,將被限定在一種特定的網路結構中,這種網路結構是由其他使用者發現內容並建立連結的。隨著彼此的聯繫通過複製和強化變得越來越強,而作為所有網路使用者的所有活動的直接結果,互聯的網路將有機地成長。

Yahoo!是首例偉大的成功故事,誕生於一個分類目錄,或者說是連結目錄,一個對數萬甚至數百萬網絡使用者的最精彩作品的匯總。雖然後來Yahoo!進入了創建五花八門的內容的業務,但其作為一個門戶來收集網路使用者們集體作品的角色,依然是其價值核心。

Google在搜索方面的突破在於PageRank技術,該技術令其迅速成為搜索市場上毫無爭議的領導者。PageRank是一種利用了網路的連結結構,而不是僅僅是使用文檔的屬性,來實現更好的搜索效果的方法。 eBay的產品是其全部使用者的集體活動,就向網路自身一樣,eBay隨著用戶的活動而有機地成長,而且該公司的角色是作為一個特定環境的促成者,而用戶的行動就發生在這種環境之中。更重要的是,eBay的競爭優勢幾乎都來自於關鍵性的大量的買家和賣家雙方,而這正是這一點使得後面許多競爭 者的產品的吸引力顯著減低。 Amazon銷售同Barnesandnoble.com等競爭者相同的產品,同時這些公司從賣方獲得的是同樣的產品描述、封面圖片和目錄。所不同的是,Amazon已然締造出了一門關於激發用戶參與的科學。Amazon擁有比其競爭者高出一個數量級以上的用戶評價,以及更多的邀請來讓使用者以五花八門的方式,在近乎所有的頁面上進行參與,而更為重要的是,他們利用用戶的活動來產生更好的搜索結果。Barnesandnoble.com的搜索結果很可能指向該公司自己的產品,或者是贊助商的結果,而Amazon則始終以所謂最流行的打頭,這是一種即時計算,不僅基於銷售,而且基於其他 一些被Amazon內部人士稱為圍繞著產品流動flow)的因素。由於擁有高出對手一個數量級的用戶參與,Amazon銷售額超出競爭對手也就不足為奇了。現在,具備了這種洞察力,並且可能會將之延伸開來的那些創新型的公司,正在Web上留下他們的印跡。

維基百科全書(Wikipedia)是一種線上百科全書,其實現基於一種看似不可能的觀念。該觀念認為一個條目可以被任何Web用戶所添加,同時可以被其他任何人編輯。無疑,這是對信任的一種極端的實驗,將埃裡克·雷蒙德(Eric Raymond)的格言:有足夠的眼球,所有的程式缺陷都是膚淺的with enough eyeballs, all bugs are shallow)運用到了內容的創建之中。維基百科全書已然高居世界網站百強之列,並且許多人認為它不久就將位列十強。這在內容創建方面是一種深遠的變革。del.icio.usFlickr這樣的網站,其公司已經在近期獲得了廣泛的關注,並且已經在一種被人們成為分眾分類folksonomy,有別于傳統分類法)的概念上成為先行者。分眾分類是一種使用使用者自由選擇的關鍵字對網站進行協作分類的方式,而這些關鍵字一般稱為標籤(tags)。標籤化運用了像大腦本身所使用的那種多重的、重疊的關聯,而不是死板的分類。舉一個經典的例子,在Flickr網站上,一幅小狗照片可能被加上小狗可愛這樣的標籤,從而允許系統依照使用者行為所產生的自然的方式來進行檢索。 協作式垃圾資訊過濾產品,例如Cloudmark,就聚集了電子郵件使用者們對於一封郵件是或者不是垃圾郵件的眾多相互獨立的決策,從而勝過了依賴於分析郵件本身的那些系統。偉大的Web成功者並不主動地到處推銷其產品,這幾乎成為公理。他們採用病毒式行銷viral marketing)的方式,也就是說,一些推介會直接從一個用戶傳播到另外一個用戶。如果一個網站或產品依賴廣告來進行宣傳,你幾乎可以斷定它不是Web 2.0即便許多Web基礎設施本身,包括在大多數網路服務器中用到的LinuxApacheMySQL,以及PerlPHPPython代碼,也都依靠開放源碼的對等生產(peer-production)的方式。其中包含了一種集體的、網路賦予的智慧。在SourceForge.net網站上列有至少10萬種開放源碼軟體專案。任何人都可以添加一個項目,任何人都可以下載並使用項目代碼。同時,由於作為用戶使用的結果,新的專案從邊緣遷移到中心。一個對軟體的有機的接受過程幾乎完全依靠病毒式行銷。同時,作為用戶應用的結果,新的項目從邊緣遷移到中心,這是一種幾乎完全依靠病毒式行銷的,有機的軟體採用過程。 源於使用者貢獻的網路效應,是在Web 2.0時代中統治市場的關鍵。

[Lab 0]隨意搜尋

書名:隨意搜尋

作者Peter Morville

 

在資訊爆炸的時代,網路變成人所仰賴的工具,甚至把網路當成了私人顧問,今天天氣如何?今天有什麼活動?網路跟過去比起來實在是天差地遠,資訊發展的速度之快更令人措手不及。

        從前有什麼事情不懂,人們會在圖書館尋求答案,在厚重的書本中尋求協助,如今一台電腦,一條網路,你已經掌握了全世界,隨意的輸入幾個關鍵詞,取之不盡用之不絕的資源一條一條的顯示在眼前,或許聽起來如此的完美,實際上,卻隱藏了十分嚴重的問題,如此大量的資料,使用者該如何在這龐大的資源中取出真正需要的資訊,變的十分困難,究竟呈現在眼前的是垃圾抑或是使用者所需要的?雜亂無章未經整理的資料,讓使用者感到迷惑,究竟,哪一個才是有用的?到底,哪一個才是我需要的?

        如此一來,管理資源就顯得十分重要,如何將一盤散沙似的資源,有系統性的,去蕪存菁的整理清楚,像圖書館一般,這個資源在哪裡,清清楚楚的能夠傳達給使用者,一來讓使用者更能快速的尋求到協助,一來也能夠使網路更有條理。

[WebFund-F08] Lab2 495512575 http://sites.google.com/site/hank19880904/Home

http://sites.google.com/site/hank19880904/Home

 

這個作業之前在Web2.0時已經做過一次了, 所以增加了一些新的東西進去。

基本上使用GOOGLE SITES做網頁相對得輕鬆了不少,也比較人性化,不必對著密密麻麻一行一行的指令,而且排版的方式也在編輯時即展現在眼前,減少了許多的麻煩,現在越來越多工具能夠幫助開發,做起事來也不必像從前一般費力

[WebFund-F08] Lab1 495512575

GET /blog/hank2003 HTTP/1.1
Request Method: GET
Request URI: /blog/hank2003
Request Version: HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.m
Accept-Language: zh-tw
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Foxy/1; Foxy/1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: www.wretch.cc
Connection: Keep-Alive
Cookie: aid=0; blviewid=hank2003; BX=2260ucl45kti1&b=3&s=sn; lang=zh-tw; PHPSESSID=4sbjms0g46shthcb4r0rgk88j7; blog_article_class=206

 


GET /b?s=2022137468&make=yahoo&type=wretch&t=0.34436073873980233 HTTP/1.1
Request Method: GET
Request URI: /b?s=2022137468&make=yahoo&type=wretch&t=0.34436073873980233
Request Version: HTTP/1.1
Accept: */*
Referer: http://www.wretch.cc/blog/hank2003
Accept-Language: zh-tw
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Foxy/1; Foxy/1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: bcw1.mining.vip.tp2.yahoo.com
Connection: Keep-Alive
Cookie: adx=c47748@1221607624@1; B=fia3f954cv2ph&b=4&s=ja; Q=q1=AACAAAAAAAAAAA--&q2=SM92Og--; _KS_B_T_=d=clM0O_e3qpbx8ewj894HF1MMwjli2DHXlQDvNZdvvCMHVL839KvPR80aW5kgMIT2G3FL476OE1qXVhNkqxe6z2byWlwkDaSzpB_cmXS9H3uuNbAIxKQlo8H_Y7Zx.g--&v=1;

這次使用Wireshark軟體學會了截取封包,也真正的體認到,我們很多應用程式保密的工作並不是那麼得徹底,利用截取封包可以得到不少資訊,如果真的有心人士要侵犯隱私,真的是防不慎防。
無名對於使用者的密碼有經過加密,所以密碼的位置出現了PHPSESSID=4sbjms0g46shthcb4r0rgk88j7;所以這次作業的心得是...網路真可怕,請小心使用。

Ch6程式語言筆記

Ch6程式語言

 

@機器語言(machine language)

        電腦唯一能夠理解的語言

 

@組合語言(assembly language)

1)      助憶碼(mnemonic name)體系語言

2)      識別碼(identifier)表示敘述性的名稱

3)      程式不易移植到另一種機器

4)      機器相關(machine-dependant):程式中的指令是以特殊的機器屬性來表示

5)      組譯器(assemblers)可以將此助憶碼表示出的運算式轉換成機器語言

@高階語言(high-level-language)

1)      每一個高階語言的指令可以用一連串較低階的機器語言表示

2)      編譯器(compiler)可以將其與法轉為機器語言

3)      機器無關(machine-independant)

4)      依設計方法不同可分為:
i)
函數式(functional):將程式發展過程是為先預先定義好的黑盒子串聯起來,以產生所需的輸入輸出對應關係,每個黑盒子接受輸入並輸出結果

ii)物件導向式(object-oriented):一個軟體係同被視為一群物件,其中每一個都能執行與自己立即相關及其他物件所請求的各種動作,利用物件比次互動解決問題

iii)宣告式(declarative):找出並實作解決問題的演算法,以與此演算法相容的形式說明問題,並應用此演算法解決問題

iiii)命令式(imperative):發展出一序列的命令,依循這些命令時資料能被處理而產生所要的結果

@程式語言的陳述可分成三類

1)      宣告陳述:定義程式中用到的一些自訂術語

2)      命令陳述:描述執行演算的步驟

3)      註解:強化程式的可讀性

@資料型態(data type)

1)      整數(integer):整數所構成的數值資料

2)      浮點數(float):實數構成的數值資料

3)      字元(character):符號組成的資料

4)      布林(Boolean):資料內容的真偽

@資料結構(data structure)

1)      同質陣列(homogeneous array):由相同資料型態的值構成的陣列

2)      不同原件可有不同資料型態的資料區塊

@常數(constant)

        有意義的名稱指定特別且不變動的值

@程序(process)

1)      變數

i)                    區域變數(local versus)→在某個區域內所定義的變數,有一定的有效區域,此有效區域稱之為範疇(scope)

ii)                  全域變數(global variables)→再程序中任何一個部份皆可以使用

2)      參數

i)                    形式參數(formal parameter)撰寫程序時用到的項目

ii)                  實際參數(actual parameter)在程序被應用時指定這些項目的確實意義

3)      傳值與傳址

i)                    傳值(pass by value)將參數的資料複製,再交給程序(可以保護被呼叫的資料)

ii)                  傳址(pass by reference)直接將參數所在的位址交給副程式,讓其能夠直接使用,使得程序能夠直接改變參數的資料內容

@物件導向

1)      物件(object):為一個動態程式單元,包含物件資料及函式

2)      類別(class):依物件相同之特質,建立一個模組

/*

Note.物件即可稱為一個類別的實例

*/

3)建構子(constructor):物件被建立時,給定物件的初始設定

4)實例變數(instance variable) 物件中的變數,獲得此物件的資訊

5)方法(method)物件中的程序,描述執行的演算法

6)封裝(encapsulation)一個管理進入權限的方法

7)繼承(inheritance)允許定義新的類別依照舊有的類別

8)多型(polymorphism)

        i)覆載(overloading):相同的方法(method)有不同的引數型態即視為不同的方法

        ii)覆寫(overriding):使用者可依需求修改父類別的方法

@平行處理(parallel processing):同時執行多份程式

@互斥取用(mutual Exclusion):保證一個資料只提供一個工作單元所取用

@監控器(monitor):配有控制自身存取能力的資料項目

CH5演算法筆記

CH5演算法

 

@演算法的定義:

非正式:一連串用來說明工作如何被完成的步驟

        正式:一個有次序,不含糊,最終會結束的可執行步驟

@演算法的表示:

需要一個精確地定義的原式(primitive):可以消除很多含糊的問題,要求這些原式來描述一個演算法可以達到一定程度的細節。一群的原式搭配一些規則即構成程式語言

Note.原式(primitive)的組成:
        1)
語法(syntax):原式以符號表示的方式

        2)語意(semantics):原式的意義

@虛擬碼(pseudocode)

1)指定(Assignment)       

                名稱 運算式      (指定名稱運算式的值)

               

        2)條件式(Conditional selection)

       

                if(條件式) then”動作          (如果條件式動作1)

                                 else”動作                       (否則動作2)

               

        3)重複執行(Repeated execution)

       

                while(條件式) do(動作)            (如果條件式則繼續動作)

               

        4)程序名(Procedure)

       

                Procedure 程序名              (將此程序命名為程序名)

               

@發展計算機程式的步驟:

        Step1:了解問題

        Step2:構想一個演算法能如何解決此問題

        Step3:詳細構思此演算法並把他表示成程式

        Step4:評估此程式的精確度,以及其作為解決其他問題之工具的潛力

@問題解決方法:

1)      反推法(backward):若問題將給定的輸入資料產生特定的輸出,則可以由輸出反推得到輸入

 

2)      逐步細分法(stepwise refinement):將主要的問題細分成數個小問題,將數個小問題再度細分直到很容易被處理為止,將這些小問題做進一步的處理

i)                    由上而下方法論(top-down methodology)

ii)                  由下而上方法論(bottom-up methodology)

@迴圈(loop)

        控制:

初始(initialize):起始部份,在被修改後會漸漸接近中止狀態

測試(test):測試某某條件是否滿足中止狀態

修改(modify):修改部分,使得某條件能滿足中止狀態

 @遞迴結構(recursive structure)                 並非迴圈結構依序執行的方式進行,而是在其中一個工作裡去執行另一個工作

速度會較迴圈結構稍慢,完成的結果有順序性

訂閱文章