2011年5月30日 星期一

EPUB 3 Overview / 2 Features / 2.6 Rendering and CSS
EPUB 3 概述 / 2 功能 / 2.6 內容顯示和 CSS

EPUB 的一個關鍵概念是, 內容的顯示應該去適應閱讀裝置, 而不是閱讀裝置不得不適應一個特定的顯示內容. HTML 最初的設計理念, 是在支持結構化內容的動態呈現, 但隨著時間的演進, 瀏覽器所支援的 HTML 已經轉為專注網頁應用程式的需要, 因而現在許多知名網站都採固定的排版格式.

然而, EPUB 出版​​物被設計為儘可能方便視障人士閱讀, 而閱讀系統通常會動態改變本文的佈局, 以適應不同大小的顯示區域, 讀者所選擇的字體大小, 和其他環境因素等. EPUB 並不能保證以上行為能正確實施, 因為圖像、向量圖形、影音和其他無法重新排版的內容都可能被包括在內容中, 甚至有些閱讀系統並不能動態分頁. 不過, 支援動態佈局調整和無障礙特性, 已成為整個 EPUB 標準演化的主要設計考量.

EPUB 內容文件可以選擇性地參考 EPUB 樣式表, 允許作者來定義所需的顯示屬性. 因此 EPUB 3 定義以 CSS 2.1 [CSS2.1] 為基礎的 CSS 外觀, 再加上 CSS3 模組所定義的各種功能, 和一些EPUB 專用的額外屬性.

CSS3 屬性的支援程度決定於瀏覽器的版本, 但閱讀系統和客戶端代理程式, 並不能保證支援 CSS3 (EPUB 專用屬性同樣可能被忽略).

EPUB 3 還支持橫書和直書的排版, 以及從左向右和從右向左書寫的 CSS 樣式, 但閱讀系統可能不支援所有的功能. 閱讀系統也可以支援超出作者意圖的顯示選項. 請參考 CSS 在全球語言支援的章節以獲取更多訊息.

EPUB 3 還具有支援多樣式表的能力, 例如讓讀者選擇白天/夜間的閱讀模式, 或改變文字方向. 請參考轉換樣式標籤 (Alternate Style Tags) [ContentDocs30] 以獲取更多訊息.

2011年5月28日 星期六

EPUB 3 Overview / 2 Features / 2.5 Content Documents
EPUB 3 概述 / 2 功能 / 2.5 內容文件

每個 EPUB 出版物包含一個或多個 EPUB 文件內容, 定義[ContentDocs30]. 他們XHTML 或 SVG 文件, 描述出版物的可閱讀內容和相關媒體資源參考 (例如圖片、音樂和視訊剪輯).

XHTML 內容文件 HTML5 的所定義, 需要使用 HTML5 的 XML 序列化功能 [HTML5], 以確保內容能可靠地操控和呈現. 另外還增加了兩個額外的 EPUB 專用的語言結構: epub:type attribute [ContentDocs30]元素層級的中繼資訊, 以及 epub:trigger element [ContentDocs30] 作為多媒體內容聯結控制的宣告.

這些增加不影響 HTML5 用戶代理程式 [HTML5] (譯註: 解析並呈現 HTML5 內容的程式, 例如瀏覽器) 呈現 EPUB XHTML 內容文件的能力, 出版物在所有的用戶代理程式中, 可能不會呈現完全相同的畫面, 而是取決於他們對於 HTML5 的支持程度和解譯方式.

2011年5月27日 星期五

EPUB 3 Overview / 2 Features / 2.4 Metadata
EPUB 3 概述 / 2 功能 / 2.4 中繼資訊

EPUB 出版物提供了豐富的中繼資訊添加選項. 包裝文件中包括一個專門的中繼資訊區段 [Publications30], 以說明出版物的一般資訊, 讓標題、作者、識別符號和其它出版物的相關訊息可以很容易地被取得. 它還提供了使用連接元素 [Publications30], 以附加完整的簡介資訊到一個出版物的方法.

包裝文件也允許使用唯一識別符號屬性 [Publications30], 來對出版物建立唯一識別符號. 包裝文件的中繼資料區段中必填的最後修改日, 可以被加入這個識別符號來定義一個包裝識別符號, 它提供了一種區分 EPUB 出版物的方式, 以代表同一出版物的不同版本 (見出版物識別符號 [Publications30]). 包裝標識別符號解決了一個問題, 如何不改變其唯一識別符號, 而仍能發行新版本的出版物.

XHTML 內容文件同時也具有註記豐富中繼資訊的功能, 使之更加具有語義上的意義和實用性, 皆有益於內容調整上和存取上的用途 (語義變化 [ContentDocs30]).

EPUB 3 Overview / 2 Features / 2.3 Linking
EPUB 3 概述 / 2 功能 / 2.3 連結

新的 EPUB 規範片段識別符號規格 (epubcfi) [EPUBCFI], 定義了一個用於連接到一個出版物的標準化方法.

這個規劃在閱讀系統上的重要功能, 是讓 EPUB 有了交互連結的機制, 例如, 可以方便共享書籤和跨設備的閱讀.

2011年5月26日 星期四

EPUB 3 Overview / 2 Features / 2.2 Navigation / 2.2.2 Navigation Document
EPUB 3 概述 / 2 功能 / 2.2 導覽 / 2.2.2 導覽文件

每個 EPUB 的出版物包含一個特殊的 XHTML 文件, 叫做 EPUB 導覽文件, 它使用了 HTML5 的 nav 元素來定義人類和機器可讀的導覽訊息.

導覽文件取代了 NCX 文件 [OPS2], 而導覽文件仍包含 NCX 文件, 只是為了向前相容於舊的閱讀系統. 導覽文件仍保持基本的存取性和導覽支援以及 NCX 的功能, 並引入了新的功能和呈現特性, 以提高所有用戶的導覽體驗, 其中最重要的, 是包括更好的國際化支援 (因為 XHTML5 文件的功能, 導覽文件本身就支持 Ruby 標籤語法) 以及支援嵌入式文法 (MathML 和 SVG 皆被包含在覽連結上).

由於是一種 XHTML文件, 導覽文件也使用 CSS 和隱藏屬性 [ContentDocs30], 以提供靈活的方式控制導覽內容的顯示, 而影響閱讀系統的訊息獲取.

覽文件的結構和語義定義在 EPUB 覽文件 [ContentDocs30] 中.

2011年5月25日 星期三

EPUB 3 Overview / 2 Features / 2.2 Navigation / 2.2.1 Reading Order
EPUB 3 概述 / 2 功能 / 2.2 導覽 / 2.2.1 閱讀順序

EPUB 的一個關鍵概念, 它由許多資源組成的出版物, 可能會由個人或應用程式以某些特定的順序進行完全的導覽和閱讀.

許多出版物會有明顯的閱讀順序或邏輯程序以讀遍他們的內容, 小說就是一個高度循序文件的例子 -它通常有一個開頭、中間和結尾- 但不是所有的出版物都有順序, 例如食譜攝影集可能更像是一個資料庫. 不過, 所有文件的大綱至少會有一個邏輯順序, 也許是按日期、主題、地點或其他標準 (例如, 一個典型的食譜按食物類別排列).

每個 EPUB 的出版物定義至少一個大綱的邏輯順序 (核心 [Publications30]), 以及一個內容宣告表 (EPUB 導航文件[ContentDocs30]). 出版物使這些數據結構可以被機判讀, 由另一面向閱讀內容, 以簡化機器的判斷和實作.

EPUB 出版物不局限內容非以線性排序不可, 並不排除以任意方式連結內容 - 就像網頁, EPUB 的出版物是建立在超文本上- 但基本的閱讀導覽用可靠的方式實現, 而是不只是一組鬆散的 HTML 網頁.

2011年5月24日 星期二

EPUB 3 Overview / 2 Features
EPUB 3 概述 / 2 功能

本節涵蓋 EPUB 的主要特色, 包括重要的組成部分, 以及創作 EPUB 出版物完整過程的主題.

相關主題:












IDPF EPUB 3 首頁說明

EPUB 3 Overview / 2 Features / 2.1 Package Document
EPUB 3 概述 / 2 功能 / 2.1 包裝文件

EPUB 的出版物包括一個單一的包裝文件 (Package Document), 其中詳細說明出版物所有的組成內容以及所需的資源, 定義了線性閱讀的順序, 還有結合出版層級的中繼資料和導覽資訊.

包裝文件能大大改善傳統網頁的閱讀體驗, 例如, 一個網站若在其內容中嵌入資源的引用, 網頁可以簡單而靈活的方式連結至資源, 但卻難以將所有的資源列舉呈現. 此外, 沒有標準的方式可為一個網站來定義大量頁面的閱讀順序, 而這正是 EPUB 的核心功能 (也就是說, 它提供了一個擴充的表達能力, 能明確指定如何瀏灠大量文件) . 最後, 包裝文件定義了一個標準方式, 用來表示全球性的中繼資訊, 以適用大量文件的瀏覽.

包裝文件和其他出版層級的結構指定在 [Publications30].

2011年5月23日 星期一

EPUB 3 Overview / 1 Introduction / 1.2 Roadmap

本節以簡要說明一個出版物的組成, 來提供對於 EPUB 3 的概述, 其中也包括其它額外資訊和相關規格的連結.

一個 EPUB 出版物, 在最基本的層級下, 是捆綁一群資源, 能夠可靠的和準確的讓 EPUB 閱讀系統吸收, 以呈現其內容給用戶. 部份資源有助於 EPUB 出版​​物的探索和調整, 而另一些則構成原始出版物的內容, 後者稱之為 EPUB 內容文件, 完整描述於 Content Documents 中, 並且詳細定義於 [ContentDocs30].

一個出版物的資源通常以副檔名為 .epub 的 ZIP 壓縮格式檔案作發佈. 作為具有相容性的 ZIP 壓縮檔, 出版物可被許多軟體解壓縮, 簡化了製造者和使用者的工作. 此容器的格式介紹於容器一文中, 並且定義在 [OCF3].

容器格式不僅提供了一種手段, 確定該壓縮的內容代表了 EPUB 的出版物 (mimetype 檔案), 而且還提供了一個通用命名的資訊資源目錄 (/META-INF), 其中的關鍵是 container.xml文件, 也就是包裝文件, 指示閱讀系統如何取得出版物的根檔案.

包裝文件本身就是一種出版物的訊息倉庫, 儲存出版物中關於特定工作的中繼資訊, 提供了詳盡的資源清單和預設的閱讀順序定義. 包裝文件介紹於包裝文件一文中, 並定義在 [Publications30].

前面關於 EPUB 出版物組成的說明, 並不是 EPUB 3 才有的新項目, 任何對於電子出版物有經驗的人都會感到熟悉, 但在這個版本中也會有所改變與加強. 然而, 有一個新增於 EPUB 3 的核心項目, 稱為媒體疊覆文件 (Media Overlay Document),它定義了文字和音頻播放的同步方式, 疊覆文件介紹於多媒體一文中, 且定義在 [MediaOverlays30].

下面的例子顯示了最小的 "Hello World" 出版物可能包含的資源:
mimetype META-INF/container.xml Content/HelloWorld.opf Content/HelloWorld.xhtml 

概念很簡單, 一個 EPUB 的出版物不僅僅是 HTML 頁面的集合, 以及, 在這個例子中, 壓縮在 ZIP 檔中的相關資產. 以下各節詳細深入說明能提高出版物的閱讀體驗的主要特點和功能.


2011年5月22日 星期日

Effective C# 讀書心得整理
Understand the Relationships Among ReferenceEquals(), static Equals(), instance Equals(), and operator==


§static ReferenceEquals()
§檢查記憶體位置是否相等
§static Equals()
§instance Equals() (a.Equals(b))
§預設檢查記憶體位置是否相等 (ReferenceEquals())
§Overrides
§operator==
§預設檢查記憶體位置是否相等 (ReferenceEquals())
§Overloads
§不应该重载 static ReferenceEquals()static Equals()
§Equals() & operator ==决不应该抛出异常
§应为了更好的性能而总是为值类型实例提供重载的Equals()方法和operator ==()
§当希望引用类型的相等与对象ID的相等不同时,你应该重载引用类型实例的Equals()

Effective C# 讀書心得整理
Item 8: Ensure That 0 Is a Valid State for Value Types


§.Net系统默认所有对象初始化时都为0
§不要创建一个不包括0在内的枚举类型
§以屬性檢驗來
初始化參考類型的
類別成員

Effective C# 讀書心得整理
Item 7: Prefer immutable atomic value type

§恒定类型(immutable types):一但它们被创建,它们(的值)就是固定的
§天生就具有线程完全性的特点
§须要被动的把可变的引用类型COPY一遍 (defensive copy)
§同样可以创建一个工厂方法来实现一个结构
§可以为那些需要多步操作才能完成构造函数的恒定类型添加一个伴随类, EX: StringBuliter

Effective C# 讀書心得整理
Item 6: Distinguish Between Value Types and Reference Types

  • Reference Types: Class (RT) Value Types: Struct (VT)
  • 封裝原則: VT較無封裝問題
  • 效率問題: VT使用效率高, 創建效率低; RT相反
  • RT可以使用物件行為, VT只用來保存資料

2011年5月21日 星期六

EPUB 3 Overview / 1 Introduction / 1.1 Overview

EPUB 規格是針對數位出版品和數位文件的發佈和交換的一種格式標準. EPUB 定義了發佈在一個單一文件格式上, 在表現、包裝、編碼結構和語意加強的 Web 內容 (包括HTML5, CSS, SVG, image 與其它資源) 的處理方式.

EPUB 3, 第三個主要標準版本, 由 4 個規格組合而成, 每個定義了 EPUB 出版品的一項重要組成部份:
  • EPUB Publication 3.0 [Publication30], 定義了 EPUB 出版品的出版層級語義和總體一致性需求.
  • EPUB Content Documents 3.0 [ContentDocs30], 定義了使用在 EPUB 出版品內文中的XHTML, SVG 和 CSS 的輪廓.
  • EPUB Open Container Format (OCF) 3.0 [OCF3], 定義了用於封裝一組相關聯的資源至單一檔案 (ZIP) EPUB 容器中的檔案格式和處理模型.
  • EPUB Media Overlays 3.0 [MediaOverlays30], 定義了同步文字和音頻的格式和處理模型.
EPUB 已廣泛地成為電子書 (eBooks) 的通用格式, 而且這些新規格大大地提高了格式的相容性, 以便更佳支援出版界更廣大的需求, 包括複雜排版的支援、豐富的媒體效果、高人機交互性和全球化出版功能. EPUB 3 企盼能用於範圍廣泛的內容上, 包括書籍和雜誌以及教育的、專業的和科學的出版物.
這份文件提供了起始點給想要了解這些規格的內容作者和軟體開發者, 它由非規範性的概述資料所組成, 包括 4 份 EPUB 3 組成規格的閱讀路線圖.

另一份非規範性文件, EPUB 3 Changes from EPUB 2.0.1 [EPUB3Changes], 描述了 EPUB 3 和前一版本的變更內容, 但其主要目的是為了協助整合想預先支援二種版本的作者和 EPUB 閱讀系統商.


IDPF EPUB 3 首頁說明

EPUB 3 是 EPUB 標準的最新修訂版. EPUB 3 是依據 IDPF 會員在 2010年5月所核準的章程而開發. 2011年2月15日, IDPF 為正式會員出版了第一次 EPUB 3 規格公共草案並公開審查的時程. 2011年5月16日, IDPF 出版了最新 (第三次) 公共草案.

EPUB 3 是由數個獨立規格組合而成. 最佳的 EPUB 3 學習起點, 以及了解各獨立規格之間的閱讀順序, 是從 EPUB 3 Overview 這份規格讀起. 可以在此連結取得全部規格和架構檔 (schema files) 的索引.

EPUB 規格是由 IDPF EPUB 工作團隊 (IDPF EPUB Working Group) 所開發, 組成成員包括 IDPF 會員代表和受邀專家. 工作團隊的所有活動皆是以 "開源 (open source)" 方式進行: EPUB 3 工作團隊的網站是公開的, 內容包括規格源碼庫、相關工作產品、需求的 Wiki 整理、解決方案和會議記錄等.

所有針對 EPUB 3 規格的意見, 都可在 Google Code 上的議題追踪區提交討論, 注意, 你必須以 Google 帳號登入才能提交意見. 對於規格內容的問題提交, 請選擇 "Review comment" 的問題類型, 而其它問題也請選擇適當的類型, 例如 "Spec-Publications".

相關主題:



全文翻譯自: http://idpf.org/epub/30

2011年5月5日 星期四

Let's XP - eXtreme Programming 極致軟體製程

將4年前整理的eXtreme Programming 極致軟體製程簡報內容放上來, 供大家參考.
近幾年這個議題似乎比較不流行了,
不知最近流行軟工理論是啥? Getting Real ?

2011年5月3日 星期二

Blogger update by momo , OSGI - WhiteBoard Pattern

OSGI - WhiteBoard Pattern

http://yotsubamomo.blogspot.com/2011/05/osgi-whiteboard-pattern.html

by Momo

Javascript 的自動資料型態轉換表

Javascript 的自動資料型態轉換表:



資料值所在的環境








林值




未定義值

"undefined"

NaN false

錯誤

null

"null"

0

false 錯誤
非空字串

不變

字串的數字值或NaN

true

String 物件

空字串 不變 0

false String 物件
0

"0"

不變 false Number 物件
NaN

"NaN"

不變 false Number 物件
無限大

"Infinity"

不變 true Number 物件
負無限大

"-Infinity" 不變 true Number 物件
其它數字

數字的字串值

不變 true Number 物件
true

"true"

1

不變 Boolean 物件
false

"false"

0

不變 Boolean 物件
物件

toString()

valueOf()、toString()或NaN

true 不變


摘自 Javascript 大全 5th Edition