Legal Document Type Declarations

http://www.chweng.idv.tw/w3cguide/htmladvanced/declarations.php

文件類型聲明(Document Type Declarations)

在你每一個頁面的頂端,你需要文件聲明。是的,必須。
如果不指定文件類型,你的HTML不是合法的HTML,並且大部分瀏覽器會用“怪癖模式(quirks mode)”來處理頁面,這意味著瀏覽器認為你自己也不知道究竟在做什麼,並且按瀏覽器自己的方式來處理你的原始碼。你可以是一個HTML大師,在地球上打遍天下無敵手,或者你的HTML可以無瑕疵,CSS可以很完美,但如果沒有文件聲明,或者錯誤的文件聲明,你的網頁與一個短視的,獨眼的長臂猿嬰兒十分艱難地堆砌起來的沒兩樣。
XHTML 1.0 Strict(嚴格)的文件聲明是這樣的:

下面的是XHTML 1.1的文件聲明,作為XHTML的最新版本,看起來更完美,但還是有一些問題,隨後我們會稍微講解……


"-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
如果你不願放棄HTML 4或者你還有Netscape 4死忠用戶,你可以使用XHTML 1.0 Transitional(過渡):


"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
你使用這的唯一理由是你還要相容老版本的、少用的瀏覽器。過渡XHTML 1.0允許HTML 4的表現元素,其也可能在如Netscape 4的瀏覽器中表現更好。但使用這些元素將對你網頁的效率和可用性有害。
最後,如果你是使用框架的怪人之一,可以使用像下面一樣的XHTML 1.0 Frameset(框架)文件類型聲明:


"-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
注意DOCTYPE標籤必須大寫和前置一個英文半型驚嘆號!。它是唯一一個打破規則的標籤,它不需要關閉。

語言聲明(Language Declarations)

即使HTTP頭或者在html起始標籤內設置了xml:lang屬性,你也必須為文件指定一個主要語言。儘管處理一個合法的XHTML文件這不是必須的,但也是一個易用性的考慮。值是縮寫的,比如en(English,英語)、fr(French,法語)、de(German,德語)或者mg(Malagasy,這是什麼語?譯者也不知道,呵呵。——譯者注)。
聲明一個主要用英語內容的文件,例子是這樣的:


xml:lang="en">
在聲明主要語言之後,假如還需要使用其他語言,你還可以在內聯中使用xml:lang屬性(比如HTML Hund)。

內容類型(Content Types)

HTML文件的媒體類型和字體集也許要指定,可以使用HTTP header來完成,比如:
Content-Type: text/html; charset=UTF-8
HTTP header的第一部分(如text/html)是文件MIME類型,讓瀏覽器知道文件的媒體類型因此可以知道怎麼處理。所有的文件都有MIME類型。JPEG圖片是image/jpeg,CSS文件是text/css和HTML一般使用text/html
HTTP header的第二部分(如UTF-8部分)是字元集。
也許設置HTTP header的最簡易方法是在HTML中使用“HTTP同義(HTTP-equivalent)”的head標籤,像這樣:


http-equiv="Content-Type" content="text/html; charset=UTF-8" />
些微複雜當然也更好的方法是使用伺服器端腳本語言來發送header。用php的話,你可以這樣做:


header("Content-Type: text/html; charset= UTF-8"); ?>
如果你不願意(或不能)使用伺服器端腳本語言,你也許可以直接給伺服器設置一個“.htaccess”文件。大部分伺服器(Apache相容)可以在根目錄使用一個“.htaccess”的小文字文件,寫入下面的內容,你就可以把所有副檔名為“html”的文件都與MIME類型和字元集關聯:
AddType text/html;charset=UTF-8 html
字元集包括大部分西方基於拉丁文語言的“ISO-8859-1”,日語的“SHIFT_JIS”,簡體中文的“GB18030”和UTF-8,一個 Unicode Transformation Format版本,提供大範圍的多種語言的單個字元。基本上,你應該使用一個你知道的,能為你使用者清楚認知的字元集。除非你使用基於拉丁語的語言(包括英語,ISO-8859-1被普遍接受的),你應該使用UTF-8,因為它可以顯示大多數語言的大多數字元,使用它也是安全的,因為它可以在大部分的電腦上使用。

注意

XHTML應該當作application/xhtml+xml的MIME類型來使用,再清楚不過,這是XML程序。不幸的是,大部分瀏覽器對這沒有第一線索,所以,一般認為使用text/html的MIME類型是不錯的。根據W3C的建議Web Standards Project的強詷,調味的XHTML 1.0也許可以作text/html使用,但XHTML 1.1不應該。這也是本站以XHTML 1.0 Strict(嚴格)作為例子的原因。假定text/html的MIME類型。但是你仍然可以(或許不應該)為它們設置正確的MIME類型給瀏覽器,輕微的調整一下伺服器端即可。
這個網站使用PHP為XHTML 1.1設置application/xhtml+xml的MIME類型給那些能夠理解和處理這個類型的瀏覽器(如Mozilla),為XHTML 1.0 Strict設置text/html給其他瀏覽器(如IE)。為每一個頁面的頂部加入如下代碼:


if(stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")){
header("Content-Type: application/xhtml+xml; charset=UTF-8");
echo('');
} else {
header("Content-Type: text/html; charset=UTF-8");
echo ('');
}
?>
這些檢查確認瀏覽器是否接受application/xhtml+xml的MIME類型,如果接受,就發送這個MIME類型並把XHTML 1.1文件類型寫到HTML中。如果這個MIME類型不被接受,就發送text/html的MIME類型並把XHTML 1.0 Strict(嚴格)的文件類型寫入HTML。
除了你知道你正在做著正確的事情和為自己準備將來的路的平和想法外,最直接的益處就是,使用這個方法,Mozilla瀏覽器把你的文件當作XML程式對待並且如果你的XHTML還沒有抓癢,就是說不合式的,Mozilla就不會工作。然後你就可以除錯了,而不需要用校驗器來檢驗你的文件了。



DOCTYPE使用方法

DOCTYPE 切換運作的方式:
  • 若有完整 URI 的 XHTML DOCTYPE,則切到標準模式,用 W3C 規則來讀網頁裡的 CSS 與 XHTML。
  • 若有不完整或過時的 DOCTYPE 或沒有 DOCTYPE,就切成相容模式,
    用傳統方法來處理網頁。
完整的長得像這樣,會讓瀏覽器切到標準模式:
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
這是 XHTML 1.0 Strict DOCTYPE,還有 Transitional 跟 Frameset DOCTYPE。

不完整的像這樣,會切到相容模式:"/DTD/xhtml1-strict.dtd">
兩者差異只在於前者用絕對路徑,後者用相對路徑。
當然,這是個正確的網址,你可以連去下載到該份 DTD,可是瀏覽器看到它時,不會真的去下載這 DTD,它只是用來判斷要切換成哪種模式罷了。
(另,IE 並不守規矩,網頁中只要出現 XHTML DOCTYPE,不論是否是完整網址,IE 都會切成標準模式。 但為了其他瀏覽器,建議還是用完整路徑)
(但,就算有完整路徑,只要網頁開頭有 這東東,稱為 XML Prolog,IE6就會切成相容模式 =.=)




以下列出各 DTD。


XHTML 1.0 Strict
可讓所有支援 DOCTYPE 的瀏覽器切成標準模式
但是對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional
讓 IE6+/Win 及 IE5+/Mac 切成標準模式。
使第一代 Gecko 瀏覽器(Mozilla 1.0Netscape 6)切成標準模式。
使第二代 Gecko 瀏覽器(Mozilla 1.01Netscape7+Chimera 0.6+)切成
近乎標準模式。
對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset 讓 IE6+/Win 及 IE5+/Mac 切成標準模式。
使第一代 Gecko 瀏覽器(Mozilla 1.0Netscape 6)切成標準模式。
使第二代 Gecko 瀏覽器(Mozilla 1.01Netscape7+Chimera 0.6+)切成
近乎標準模式。
對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1此規格等同於 Strict,可讓所有支援 DOCTYPE 的瀏覽器切成標準模式
但是對 Opera 7.0 之前的版本,或 IE6 之前的版本無效。
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd">
HTML 4.01 Strict
會讓 IE 切成標準模式,新版的 Gecko 切成近乎標準模式。
"
http://www.w3.org/TR/html4/strict.dtd">
但若用完整的 HTML 4.0 DOCTYPE,卻會使 IE 跟 Gecko 切成相容模式!
所以講了這麼多,目前的最佳解就是採用 XHTML (Transitional)。

PHP,Ecommerce

Magento:
看了這篇文章後:
Which Shopping Cart Should I use?
http://www.itwebexperts.com/oscommerce_zencart_xcart_comparison.php
它下面的功能列表幾乎都是 yes,osCommerce很多 no,
有中文論壇,不過是簡體的。
而且裝起來後,覺得…真的很慢。
在自己 local 端的電腦上跑也這麼慢,有點誇張。
                                                                             
osCommerce
這個應該是最流行的吧。市面上有好幾本中文書。
google 也有好幾篇文章。不過驚訝的是,連一個中文論壇都沒有!!!
Magento 是有論壇,沒有書,osCommerce是有書,沒論壇 !!!!!
                                                                             
UberCart
官方網站說"中文翻譯檔未全部完成".
使用者網站的人不一定英文都很ok,
加上這個沒有書,也沒有論壇。所以…應該不會用這個。

Time and Patience

Time and Patience ,  Patience and Time .

藍契斯特法則(Lanchester's Law)


藍氏法則主要包含以下要素:
   1、營銷力量的基本分配關係。根據經濟界和管理界的研究分析,企業以最低成本獲得最高利潤的前提條件是戰略力與戰術力的比例至少為2:1.這決定了企業營銷戰略中營銷力的基本分配關係。企業應以此比例為指導原則配置營銷戰略力與營銷戰術力,分配營銷力量和營銷資源,避免偏重戰術而忽視戰略和只注重短期利益而忽視長遠利益的偏頗,創造最優成本——利潤組合。營銷戰略力屬於看不見的決策範圍,包括品牌企業形象產品開發價格廣告營銷渠道等;而營銷戰術力則指看得見的可直接溝通的銷售力,諸如銷售組織、推銷方式、終端促銷銷售人員素質等方面。
   2、“三·一”理論與占有率的目標管理競爭雙方戰鬥力的關係在局部戰中發展到了3:1,機率戰中達到1.732:1,弱者反敗為勝已不可能。該比值範圍稱為射程距離。當兩競爭對手之間市場佔有率之比超過射程距離時,弱方應及時放棄經營,保存實力,另闢蹊徑。該模式還提供了市場佔有率的目標管理指標,包括上限目標、下限目標和相對安全指標。上限目標為73.88%,此時不論對手的個數和實力,佔有率平均在該公司的射程距離之外,所以該指標構成市場獨占條件。26.12%是市場佔有率的下限目標,即使此時公司的市場佔有率名列榜首,也極不穩定,隨時有受到進攻的可能,它是劣勢的上限。當市場佔有率達到41.7%時,企業進入相對安全圈,這是各企業參與競爭的首要目標。
   3、第一位主義。在射程距離內,為提高市場佔有率,企業必須盡力創造第一位置。這包括:第一位的商品,如新產品或差異化產品;第一位的零售定貨率,這是流通戰略中最關鍵的步驟;第一位地域,即將市場細分後,逐個擊破,從各區域第一進而追求整體佔有率的第一。根據藍氏法則,強者與弱者戰略實施的優先順序不同。實力弱的公司宜開展局部戰,方向為區域→進貨率→商品,先限定區域創造據點,將易銷商品集中,以地域進攻為先決條件而實力較強的企業,其戰略順序正好相反,方向為商品→進貨率→區域,即通過有力的商品作為戰略武器,展開大規模總體進攻,擊破弱者支配的地域,從而最終實現第一位地域。這種根據實力決定戰略排序的方法,已被國外企業廣泛運用。
   4、三點攻戰略。企業在發展某一區域市場時,首先按照自然的和人為的地理條件、人口集中度、人口移動規律等情況對區域進行細分,隨後選擇可連成三角形包圍該區域的三個最有利點,個個攻破,使佔有率達到40%的相對安全值。面積形成後,從三個方向向最終目標的正中央推進,使競爭對手瓦解在空中的環形區域中。此法又稱點、線、面法則,它提供了區域戰略的基本原理和實施步驟。
   5. 競爭目標與攻擊目標。在爭奪市場的競爭戰中,強者多處於守勢,而弱者趨向於進攻。防守與進攻的戰略互不相同,因此首先應區分攻擊目標和競爭目標。比自己實力強的是攻擊目標,反之為競爭目標。對攻擊目標應採用差異化戰略進行攻擊,通過品牌形象、技術工藝、產品性能顧客服務的獨特性來提高市場佔有率;而對競爭目標則應用防守戰略,密切注意對方行動意圖,搶先實施模仿戰術,擾亂對方計劃。在這裡,確立雙方戰略態勢是採取恰當戰略的首要步驟。
   6、強者與弱者的差異。實力弱小的公司在戰略上應以一對一為中心,創造單打獨鬥的戰略區域和戰略性產品,避免以所有產品和所有區域為目標。選定特定的階層對象,展開局部戰鬥,以點的反敗為勝,連線為面,取得最終勝利。
   7、地位差異戰略。營銷過程中,必須考慮企業在產業和市場中的位置。在許多攻擊目標中,首先集中力量對付射程範圍內的足下之敵,避免多方樹敵。第一位企業應經常推出新產品,並及時了解第二位可能的差異化戰略,從而在時間上搶先一步。所以,其情報能力、情報管理制度和開發創新能力,是維持企業地位的關鍵。第二位的企業必須以獨創性開闢生存空間,通過差異化一決勝負。總之,各類企業應結合具體產品的地區、流通特性,靈活運用各種戰略。

新創公司如何運用「呂宗耀投資定律」與「蘭徹斯特法則」


四月 10, 2005
這二個看似不相干的東西,其實對新創公司定位主力產品有非常大的幫助。

先來復習一下這二個法則。
呂宗耀的投資四階段:
1.領先觀察。
2.捷足先登。
3.發表論述。
4.眾聲喧嘩。
當眾聲喧嘩階段時,代表市場過熱,千萬不可再投入資金。
小公司適用「蘭徹斯特第一法則」: 近身戰時,雙方損傷的兵力是1:1。
(註: 蘭徹斯特第一法則也就是說: 與大企業競爭,必須更精確的鎖定客層及地點打近身戰,不可投入競爭過度激烈的市場)
通常新創的小公司很可能會出現一些很有創意的東西,甚至是在呂氏第一階段「領先觀察」的商品。
但是小公司貿然推出此類商品,便是明顯違反蘭徹斯特第一法則。
新創公司通常團隊人力有限,除非能利用完善的專利權保護,否則到了「發表論述」(呂氏第三階段) 的時候,也就是市場正要炒熱的時候,大公司可在專業團隊的護航下立即對於此類商品做出反應來跟進市場。
換句話說,如果小公司投入「領先觀察」的市場,很容易變成大公司試探市場的工具。
國外最有名的例子就是 ICQ。ICQ 的出現,改變了每個人使用電腦的通訊方式,從最早每人一個 ICQ 號碼,到現在被 MSN Messenger 佔去大半江山, ICQ 幾乎沒人在用,已經不是一個慘字能形容了。
來看看最近國內的例子吧:
無名小站」是台灣第一個提出Blog+相簿的網站,雖然技術上沒什麼難度,也不是很有創意的商業模式,但是憑藉著學術網路的高頻寬流量支援,立即躍居年輕人使用的第一品牌。
無名小站現在已經從學校移出,獨立成為公司了。Blog 的市場也進入呂氏第四階段「眾聲喧嘩」的戰國時代了。
而 Hinet 在很快的時間就推出 xuite ,不論技術成熟度跟功能都完全凌駕在無名小站之上,加上 500Mb 的免費空間,實在非常吸引人。
其它國外知名大廠如 MSN SpacesYahoo! 360° 也都有Blog+相簿的服務,MSN 目前已開始提供服務,Yahoo! 360°雖然還在測試階段,該公司卻有買下 flickr 的大動作。無名小站就算再有創意,起步的再早,未來還有機會能跟這些具有經營實力的廠商競爭嗎?
那麼,新創的小公司要做什麼比較好?
新創公司最好能在在不違反「蘭徹斯特法則」的情況下,找到呂宗耀投資定律第四階段「眾聲喧嘩」中的利基市場。
通常「眾聲喧嘩」代表市場過熱,也代表市場競爭激烈。直接投入「眾聲喧嘩」的市場連大公司都很容易鎩羽而歸,更別說是剛成立的小公司了。
但換個角度想,「眾聲喧嘩」也代表市場規模在一定的程度以上,當中一定有大公司不願意作,或是根本沒辦法做到的市場。
舉個國內例子:
在 Starbucks 由統一集團引進台灣後,把不太喝咖啡的台灣市場,變成台灣人生活的一部份。在「丹堤」、「怡客」、「西雅圖」、「羅多倫」等大型連鎖品牌不斷進入市場,早已進入「眾聲喧嘩」的階段了。
民國 2002年開始出現一個叫「誰說35元沒有好咖啡」的「壹咖啡」,鎖定低消費市場,如同企業簡單的口號一般,雖然只有 35 元,但咖啡的口感各方面都不是連鎖咖啡店的 35 元咖啡可比的。
短短二年,2004年壹咖啡營業額已將近十億,這就是標準在「眾聲喧嘩」的市場中,利用「蘭徹斯特第一法則」鎖定利基市場成功的例子。
相信很多想成立公司的人,一定有很多夢想要完成 。現實的是,一家公司最重要的就是「獲利」,任何夢想都要等站穩腳步才能實現。
一家公司在新創階段很難具備大公司準確預測市場的洞察力和執行力。小公司在「眾聲喧嘩」市場中找到自己利基點的成功率相信比投入「領先觀察」市場還要容易。等到累積的資金充足、經營團隊也有一定的規模時再來投入「領先觀察」到的市場,一定更加的容易成功。

itoa()

char* itoa(int val, int base){
 
     static char buf[32] = {0};
 
     int i = 30;
 
     for(; val && i ; --i, val /= base)
 
          buf[i] = "0123456789abcdef"[val % base];
 
     return &buf[i+1];
 
}


Powerd by: http://tohtml.com/

make 命令 & makefile

makefile syntax

  • dependencies (相依性項目)
    • one target (目標項目)
    • some source code files
    • (target), (semicolon), (space or tab), ....., (source code files), (space or tab), .....
    • e.g. all: myapp myapp.l
  • rules (法則)
    • the rules illustrate how to generate a target
    • (tab)
    • the rules muse be on the same line
  • comment (註解)
    • (#)
  • macro (巨集)
    • define the macro => MACRONAME = value
    • access the macro => $(MACRONAME), ${MACRONAME}
  • -
    • make will ignore the error
    • e.g. -mkdir
    • e.g. -rm -r
  • @
    • make will not output the executed command on standard output
  • #這是makefile的格式(註解) 
    [target]: [dependency] [dependency] 
    [TAB][rule] 
    [TAB][rule] 
    [target]: [dependency] 
    [TAB][rule] 

make options


-k : 會讓make再遇到錯誤之時,仍然繼續執行而不會停在第一個問題點。可以利用這個選項找出發生問題的原始碼檔案。

-n : 告訴make只列出要進行的工作,而不會真正去執行它。

-f : tell the make to use the as a makefile. Otherwise, the make will use the makefile, Makefile (recommend).

-p : 要求 make 印出內建法則

-j3 : use the 3 cores 

Automatic Varaiables


$@ :  The name of the current target 

$% :  The filename element of an archive member specification

$<: first="" he="" name="" nbsp="" of="" p="" prerequisite="" the="">
$?:    The names of all prerequisites that are newer than the target, separated by spaces,代表須要重建(被修改)的相依性項目

$^:     The names of all prerequisites, separated by spaces. This is list has duplicated names removed.

$+:     Similar to $^, except $+ includes duplicateds.. This variable was created for specific situations such as arguments to linkers where duplicated values have meaning.

$*:    The stem of the target filename. A stem is typically a filename without its suffix. Current dependencies without the extension (副檔名)


  1. define the marcro : 1) make CC=c89    2) make "CC = c89"
  2. Use the all as the first target in makefile
  3. all (target)
  4. install (target)
  5. uninstall (target)
  6. clean (target)


GNU gcc

gcc -MM : generate a dependency list to make


Conventional Macros (common built in rules of makefiles)

typing "make −p" to print out the defaults
ARArchive−maintaining program; default is `ar'.
ASProgram for compiling assembly files; default is `as'.
CCProgram for compiling C programs; default is `cc'.
COProgram for checking out files from RCS; default is `co'.
CXXProgram for compiling C++ programs; default is `g++'.
CPPProgram for running the C preprocessor, with results to standard output; default is `$(CC) -E'.
ARFLAGSFlags to give the archive-maintaining program; default is `rv'.
ASFLAGSExtra flags to give to the assembler when explicitly invoked on a `.s' or `.S' file.
CFLAGSExtra flags to give to the C compiler.
CXXFLAGSExtra flags to give to the C compiler.
COFLAGSExtra flags to give to the RCS co program.
CPPFLAGSExtra flags to give to the C preprocessor and programs, which use it (such as C and Fortran compilers).

Conditional Directives

  • ifeq
  • ifneq
  • ifdef
  • ifndef
  • else
  • endif
e.g.
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2" 

相關文件