LearnHouse

Archive for 十月, 2007

奪冠慶功 統一超商打八折

慶祝統一獅封王,又逢統一四十周年,高雄「夢時代」及7-ELEVEN連三天推出促銷活動。

 

周三起三天,7-ELEVEN的統一飲料(不含鮮乳)、麵包及食品全品項(泡麵、麵條),全省四千六百六十家分店打八折。康士美周二起至周六有商品折價特惠。

「夢時代」全館、含統一阪急百貨,今起百貨服飾買兩千送兩百,商品另有折扣。

 

包括星巴克、無印良品、7-ELEVEN、家樂福等企業,都陸續打折慶祝,今天到星巴克消費的前一百名民眾,可免費享用一杯中杯的當日精選咖啡。

另外,包括馬武督、谷關、西子灣及墾丁等四座統一度假村,從本周一起至十一月底,平日可享四人成行一人免費,及六人成行兩人免費等優惠,夢時代今、明兩天購物滿千送百。

 

此外,統一關係企業家樂福量販,也配合統一獅在主場台南獲勝,台南五家分店今天一天推出購物滿兩千送兩百的優惠活動。

 

真多相關企業優惠!!果然統一企業真的很大@@Wink

posted by yuchin in 新聞報報 and have No Comments

安裝EclipseMe

參考來源:EclipseMe

在安裝之前,請先確認以下軟體是否已安裝

  1. Sun Java Wireless Toolkit 下載
  2. Eclipse 下載

官方提供的安裝方式也有兩種,一種是直接線上安裝,一種是下載後再安裝

我在這裡只列出直接安裝的部份,而且我是建議能不用中文化的Eclipse最好就不要用

畢竟以後可能會想裝一些plug-in,如果用中文化的很容易會產生其他的莫名問題

  1. 啟動Eclipse → Help menu → Software Updates → Find and install

  2. 選擇Search for new features to install:
    screenshot

  3.   點選 New Remote Site:
    screenshot

  4. 輸入以下資訊URL http://www.eclipseme.org/updates/
    screenshot

  5. 勾選EclipseME update site → Next
    screenshot

  6. 勾選EclipseME → Next.
    screenshot

  7. 選擇 I accept the terms of the license agreements → Next.
    screenshot

  8. 選擇你想要安裝的路徑: screenshot

  9. Install:
    screenshot

  10.  

    New installations screenshot
    Updates screenshot

    安裝好後會有 J2ME entry 在Window / Preferences
    screenshot

posted by yuchin in 程式&軟體 and have No Comments

悟空與比克大魔王的真人版豋場!

資料來源:哈日摩人-Japan Ranking KING

只要找尋到7顆龍珠,就可以呼叫出神龍完成想要的願望「七龍珠」,這部漫畫相信很多人小時候都有看過,近年來有許多電影翻拍自動漫,七龍珠也即將被美國拍成真人版電影,透過在日本的選角活動,引發了一些有趣的討論。

真人版七龍珠是透過日本的一家公司「HOLLYWOOD comets」來進行選角的動作,不限國籍,真期待會選出什麼角色啊。

(↑選角的條件)

電影名稱 『ドラゴン ボール』 (七龍珠)

導演:James Wong

Producer 未定

演員: 未定

出版: 二十世紀福斯(Twentieth Century Fox

故事設定:

身為武術家的悟空為了防止比克大魔王征服地球而出發尋找7顆龍珠。將日本無人不知的鳥山明漫畫改編成好萊塢寫實版電影。

條件:

{悟空} 18歲男性,雖然在學校不起眼,但是實際上卻是隱藏了自己才能的武術家。他的爺爺身為他的教練卻遭受到比克的殺害,為了阻止比克,而開始找尋7顆龍珠。主角。(悟空有上學?故事改成了現代版嗎?)

{ブルマ(布馬)} 20~29歲女性、可愛的時髦女性,父親的5顆龍珠被比克大魔王偷走而決定戰鬥,與悟空組成隊伍還遇到了龜仙人與亞姆。主角

{ヤムチャ(亞姆)} 20~29歲。第三位的BADBOY(壞男孩?…呵….好微妙啊)

{マスター・ロシ(武天師父or龜仙人)} 悟空爺爺的好朋友。老人。悟空於爺爺被殺害後求助マスター・ロシ的幫助,ロシ是世界上值得敬畏的超格鬥家。(好朋友?有提到色老頭嗎?)

{マイ(舞)}25~29歲的女性。性感與不安定常背負著武器,長期練習武術。主角。

{ピッコロ大魔王(比克大魔王)}企圖征服世界的壞蛋。主角。

{チチ(琪琪)}有魅力又活潑的女性,長期練習武術後來跟悟空結婚。

{ゴハン(悟飯)}悟空的爺爺,外表看起來像是70歲的老人可是實際上的動作卻是比李連杰還快。(悟空的爺爺不是死了嗎?而且比李連杰的動作還快是怎麼回事啊?)

撮影予定日 200711月下旬

撮影場所 モントレアル (蒙特婁,加拿大東南部港市)

中級~上級

導演是之前跟李連杰合作拍過「THE ONE」的James Wong (黃藝瑜),出版商則是二十世紀福斯,雖然看起來好像不是在開玩笑,不過在看了角色設定後不經的冒起冷汗,回想起台灣以前也拍過一部七龍珠真人版電影(主 角是陳子強吧),衝擊的畫面久久揮散不去,好萊塢要拍上學的悟空,好難想像啊。


(↑台灣版的真人七龍珠,現在還找的到DVD也)

日本一些人在討論版上的反應還蠻熱烈的,來看看幾個討論的內容,似乎大家對於真人版的七龍珠都有微妙的感覺啊:

名前: ミトコンドリア(東京都)[sage] 投稿日:2007/10/14(日) 01:37:59
ゴクウの設定おかしくないか (悟空的設定不奇怪嗎?)

名前: 市民団体勤務(関西地方)[sage] 投稿日:2007/10/14(日) 01:38:36
マスター・ロシって誰だよ (マスター・ロシ是誰啊?)(PS:在日本都是稱為武天師父or龜仙人,真的沒聽過這樣的稱呼啊)

名前: 車内清掃員(北海道)[] 投稿日:2007/10/14(日) 01:40:33
脚本全然ちげーーーーーーーーーーーーーーwwwwwwwwwwwwwwwwwww (腳本完全不一樣啊)

名前: バイト(広島県)[sage] 投稿日:2007/10/14(日) 01:42:45
学校に行く悟空って・・・ (去學校的悟空這…)

名前: 酒蔵(岡山県)[sage] 投稿日:2007/10/14(日) 01:45:41
主役が4人もいる (主角有4個人啊)

名前: 空気コテ(コネチカット州)[] 投稿日:2007/10/14(日) 01:59:10
ヤベエ作品になりそうだってのに、オラなんだかワクワクしてきたぞ (看起來好像很恐怖的電影,但是居然會有期待的感覺也)

名前: 浪人生(沖縄県)[] 投稿日:2007/10/14(日) 02:16:21
{ミスターサタン} 連絡下さい (撒旦先生 請聯絡)

名前: こんぶ漁師(広島県)[sage] 投稿日:2007/10/14(日) 02:39:56
ファン「鳥山先生!こんなストーリーにされていいんですか!?」
鳥山「・・・・ストーリー?」
(粉絲「鳥山先生!這樣的故事可以被播出嗎?!?」
鳥山「・・・・故事?」)

名前: 会社員(京都府)[] 投稿日:2007/10/14(日) 04:45:45
{神様}老人。剃髪して全身を緑色に塗っても大丈夫な方。主役。
({天神} 老人。可剃髮全身塗滿緑色的人。主角。)

名前: 建設会社経営(長屋)[] 投稿日:2007/10/14(日) 12:15:04
すげえ駄作臭プンプンで逆に観たいw (好像很KUSO的作品,反而好想看看啊)


(↑以前的悟空)


(↑悟空超級塞亞人大變身)

其 實阿日王比較喜歡以前七龍珠的感覺,現在的七龍珠變得太強了,似乎只要變身為超級賽亞人就無敵的狀態,毀滅一顆星球都只在彈指之間,誰的力量最強,才是最 後的贏家,反觀以前的七龍珠,因為主角的弱所以有很多成長的空間,互相幫助和智慧有時候還需要一點點的運氣成為勝利的關鍵,就讓我們一起來拭目以待美國的 好萊塢會拍出什麼不一樣的七龍珠吧,不知道能不能看到懷念的經典絕招啊;

龜、派、氣、功───────────────────────────────!!!!!!!!!!

*「HOLLYWOOD comets」官網,說不定你就是下一個比李連杰動作還快的悟飯或是要上學的悟空歐!

posted by yuchin in 影視娛樂 and have Comments (2)

公共電視 亂世豪門

王世祥/龍天翔飾
王夫人/蘇明明飾
王家老爺,五十歲。艋舺巨富。知書達理但保守封閉。反日抗日,遭到當權者及商場對手迫害、擠壓,家族勢力一再衰退。最後心愛的兒子因抗日喪命,他獨守在日漸破落的大宅院中抑鬱以終。 王家夫人,四十六歲。生育一子一女。對丫頭秋蓮有一種既依賴又排斥的複雜心理,希望她長年在自己身邊供使喚,又不願兒子在媳婦死去之後納她為續弦。日軍攻陷台北城後,王家成為日軍勒索、搜括的對象,王夫人不堪驚擾,一病不起
 

 
王文傑/溫昇豪飾
陳武龍/范植偉飾
王家少爺,二十一歲。談吐出眾,好詩書、習武術、帶團練,深得父親倚重,和家丁陳武龍,兩人才智相當,惺惺相惜,情同手足。只是這份兄弟情誼,後來卻受命運撥弄,兩人走上迥異的人生道路,互相敵對、水火不容,最後貴公子成階下囚,昔日的下人卻成富戶。王文傑的仇日抗日,代表台灣民主思想的萌發與奮進,而他的死,也象徵這個理想的幻滅。 原是王家家丁,二十一歲。機智靈敏,叛逆性重,有別於一般的僕役家丁,與千金王素琴相戀。和少爺王文傑原本有著跨越階層的兄弟情誼,但兩人後來卻因國族理念的差異、政治立場的背離而形同水火。因緣際會投向日本新政府,而平步青雲,成為台北城內的新貴。他攀權附貴、打壓王家。
 

 
王素琴/謝欣穎飾
秋 蓮/許安安飾
王家千金,二十歲。王老爺的掌上明珠。容貌美麗,個性活潑,自小被教以詩書和女紅,以便日後嫁入官家。和家丁陳武龍之間雖有愛情,但還是謹守禮教,奉父命出嫁。不幸在出嫁之日遭匪所劫,且受辱,最後自殺。她是政治利益的祭品,也是父權社會的犧牲者。 王家丫環,十九歲。容貌秀麗、個性溫婉,是王老爺從宜蘭帶回的女棄嬰,受到老爺疼愛。少奶奶死後,負起照顧小少爺的責任,原本有機會成為王家少爺填房,卻因故離開王家與陳武龍結婚。婚後,對丈夫的媚日作風不認同。她對王家人的舊情引起丈夫武龍的不快,兩人漸行漸遠。後來,選擇在丈夫最得意的時刻──高樓落成之日離他而去。
 

 
邱逢甲/湯志偉飾
苗栗銅鑼人,進士。台灣士紳之首。「台灣民主國」副總統兼台灣兵團練總統領。事敗逃往大陸。
 

 

其他登場歷史人物

劉銘傳 安徽人,台灣第一任巡撫
邵友濂 浙江人,台灣第二任巡撫
唐景崧 廣西人,台灣新任巡撫、台灣民主國大總統。抗日事敗逃回大陸。
劉永福 廣東人,中法戰英雄、台灣民主國大將軍。抗日事敗逃回大陸。
林朝棟 台灣霧蜂人,林家富豪,台灣民主國國會議長。事敗舉家逃至大陸。
辜顯榮 台灣鹿港人,原為小店商,因引日本人進入台北城,而成為權貴豪門,如日中天。
黎景嵩 台灣知府,抗日事敗逃回大陸。
吳湯興 苗栗銅鑼人,生員(秀才)。抗日領導份子,長期在北中部抗戰。彰化戰役中英勇戰死。
姜紹祖 台灣頭份人,生員(秀才)。抗日領導份子。自桃竹苗轉戰中部,在苗栗尖筆山戰役奮戰而死。同時殉職有新楚軍副將楊載雲。
吳彭年 浙江人,劉永福部屬。抗日領導份子,彰化戰役中光榮戰死。
簡大獅 台灣宜蘭人,(?~1900)。抗日「三猛」之一。事敗被日絞死。死時不到40歲。
柯鐵虎 台灣雲林人,原名柯鐵(1874~1899)。抗日「三猛」之一,與簡義共同據守在鐵國山長期抗日。後病死。死時不到25歲。
林少貓 台灣屏東人,原名林小貓(1865~1902)。抗日「三猛」之一。劉永福舊屬。最後全族被日軍殘滅。
死時37歲。
水野遵 第一任總督府民政局長。
桂太郎 第二任台灣總督,真正在台只待十天。
樺山資紀 第一任台灣總督。全台最高行政與軍事領導人。
能久親王 (北白川宮)日本皇室。留學普魯士。近衛師團團長。攻台戰役的主力。病死於台南,但傳言死於抗日義民之手。
乃木希典 第三任台灣總督。
後藤新平 第三任民政長官。利用「保甲制度」及「匪徒刑罰令」,以招撫、討剿,硬軟手段,剷除台灣台灣民主國在台滅亡後至1902年間的抗日勢力。

posted by yuchin in 影視娛樂 and have No Comments

利用 Linux 建構 Video Streaming

原始資料來源:j2h論壇

Video Streaming 的技術已經出現多年,在 Internet 上的應用也已經相當廣泛,

而利用 Linux 建構 Video Streaming Server 也是相當熱門的話題。

如果您想瞭解什麼是 Video Streaming,

本文對 Video Streaming 的觀念與技術將做了清楚而基本的介紹。 

Video Streaming 來的正是時候

看到 "Video" Streaming 就知道這個技術與影音有關。Video Streaming 是一種經由網路來撥放影音檔案的技術,Video "Streaming" 的基本概念為「一邊下載一邊撥放」,我們稱之為「Play as received」。

經由 Internet 如果要收看遠端伺服器的電視檔案,最原始的做為是「下載後再撥放」,也就是經由 FTP 或 HTTP 將整個檔案下載至本地端後再利用撥放程式來撥放,我們稱之為「Play after download」。

以最常見的例子來講,我們可以經由網路將 MP3 完整下載後再撥放,也就是 Play after download,或者我們也可以一邊下載 MP3 一邊聽音樂,這種方式則稱為 Play as received。其他的應用範例還很多,例如利用 RealPlayer「即時觀看影片或是聽音樂」,這種即時撥放的方式即是 Play as received,我們稱這樣的技術為 Video Streaming Technology。

為什麼說 Video Streaming 的技術來的正是時候呢?舉個最簡單的情況,你可能在下載 MP3 之前想要試聽一下音樂的內容,而下載音樂片段的方式又顯得不夠友善,這時如果利用 Video Streaming 的技術來讓網友視聽,不但方便,而且不必浪費時間來下載不喜歡的音樂的。

隨著網路頻寬的改進與 IPv6 的出現,Video Streaming 的應用將越來越廣泛,利用 Video Streaming 來設計的資訊家電也會越來越多,例如較常被提及的網路電話 (InterPhone)。

除了寬頻網路的普及外,儲存設備的大進步也是加速 Video Streaming 進用普及的最大動力,例如利用 Linux 設計的 NAS 可以被用來當做大型的影音伺服器或是動態電影資料庫 (DMD)。

VCD & MPEG-1

要提到撥放動態影音的先軀,絕對要先從 VCD 說起,因為這是在電腦出現後,最能深入消費者市場的產品。

想當年,要撥放 VCD 除了要有一台當時算是高擋貨的 1x CD-ROM 外,還要再另外加裝也是高擋貨的 MPEG 卡。撥放 VCD 其實就是 Video Streaming 的技術,因為 VCD 的資料是一邊讀取一邊撥放,那為什麼要有 MPEG Card 呢?理所當然的,這是因為MPEG-1 的標準。

MPEG-1 被設計在 1x CD-ROM 上撥放 VCD,而 VCD 上的資料必須經由 MPEG Card 解碼 (decode) 後才能撥放。但是隨著硬體的進步,現在可以經由軟體來做 MPEG-1 解碼的工作。我們將在後文介紹 MPEG-1 的設計概念。

DVD & MPEG-2

MPEG-2 常被提到則是由於 DVD 的流行。不管是 MPEG-1 或是 MPEG-2,其實是一種編碼的技術,而 DVD-ROM 則是選擇了 MPEG-2 來當做它的壓縮標準。

而 DVD 之所以無法像 VCD 一樣能被「備份到硬碟」,則是由於其中又加進了三道的保護,第二道保護就是玩家們耳熟能詳的 CSS。在 Linux 下之所以無法有「合法」的 DVD Player,就是受制於 CSS 的關係。

利用 NAS 來設計 Video Server,要儲存並廣撥 VCD 已經沒有技術上的障礙,但是要儲存並擴撥 DVD,則有法律上的問題,這點是值得我們深思的一個問題。因為目前 CSS 的技術掌握在日本人手裏,要取得這項技術必須簽署 NDA,不過 CSS 並非不可破解想必大家都知道,但是就是有版權上的問題。

影像編碼技術介紹

目前學術界已經發展出許多處理影像訊號壓縮及編碼的技術 (codecs),談到這些技術,應用最廣泛的編碼標準底下四種:

  1. ) H.261
  2. ) H.263
  3. ) JPEG, MJPEG
  4. ) MPEG

底下將分別簡單介紹這四種編碼技術。

H.261 標準

H.261 的影像編碼標準出現在 1990 年的 ITU。一開始的用途主要是支援影像電話 (video phone) 與視訊會議 (video conferencing)。H.261 的格式有二種,分別有不同的解析度:

  1. ) QCIF:176x144
  2. ) CIF:352x288

H.261 的 fps (frames per second) 可以達到 7.5, 10, 15 與 30 fps。由於 H.261 一開始是架構在 ISDN B 上面,而 ISDN B 的傳輸速度為 64 Kbps,所以 H.261 也被稱為 Px64 (x = 1 to 30)。

CIF 全名為 (Common Intermediate Format),主要是為了要支援各種不同解析度的電影而被定義出來,例如 NTSC, PAL, SECAM 電視系統。而 QCIF 則是 Quarter-CIF 也就是 CIF 解析度的一半。

除此之外,H.261 也可以說是 MPEG-1 標準的前輩。

H.263 標準

H.263 是 H.261 的加強版,誕生於 1994 年 (ITU)。H.263 開始支援 PSTN,不過要特別說明一點,H.263 比 MPEG-1 還要晚出現,而且 H.263 還是基於 MPEG-1 而發展。

H.263 的標準共支援五種不同的解析度,分別為:

  1. ) Sub-QCIF:128x96
  2. ) QCIF:176x144
  3. ) CIF:352x288
  4. ) 4CIF:704x576
  5. ) 16CIF:1408x1152

傳輸速度為 8 Kbps ~ 1.5 Mbps。除此之外,H.263 也是 MPEG-4 標準的基礎。

JPEG

提到 JPEG 的標準,大家可就不莫生了,由其是在 GIF 發出禁令後,JPEG 更是被廣泛應用。JPEG 的全名大家一定不莫生,他可是赫赫有名的一群技術團隊的縮寫 - Joint Photographic Experts Group。

JPEG 是 24-bit 的 "true-color" 影像標準,JPEG 的工作是將 RGB 格式的影像轉換成 YCrCB 格式,目的是為了減少檔案大小,一般約可減少 1/3 ~ 1/2 左右。

不過 MJPEG 才是我們的主角,MJPEG 全名為 "Motion" JPEG,也就是會動的 JPEG 圖檔。許多 Video Streaming 的場合,像是簡單的視訊會議軟體都會使用 MJPEG 來取代 MPEG,原因無它,因為 MJPEG 格式簡單,但缺點是不支援聲音。

MPEG-1 標準

MPEG 的標準由 ISO (International Standards Organization) 所制定,全名為 Moving Pictures Experts Group (MPEG 為 ISO 工作),這些團隊制定了包括 MPEG-1、MPEG-2、MPEG-4 等標準。

MPEG-1 的標準比 H.263 早出現,MPEG-1 制定於 1992 年,主要用途為:視訊會議、影像電話、電腦遊戲與支援第一代的 CD-ROM。MPEG-1 被設計來支援大部份的影像與 CD-ROM 的音效,傳輸速度為 1.5 Mbps (30 fps)。

除此之外,MPEG-1 也支援 playback,例如快轉、倒帶或是跳躍,這也是 MPEG-1 好用的地方。稍後我們會簡單介紹一下 MPEG-1 的原因,以明白 MPEG-1 如何做到這些功能。

MPEG-2 標準

MPEG-2 的標準出現於 1994 年,MPEG-2 相容於 MPEG-1。MPEG-2 的出現並不是為了要取代 MPEG-1 的舊標準,而是要加強 MPEG-1 不足的地方。因此 MPEG-2 更能昇任其它工作環境,例如 HDTV、視訊廣播。

同時,MPEG-2 的解析度也支援到 HDTV 1280x720。在音效方面,MPEG-2 也支援到 6 個頻道 (MPEG-1 只支援 2 個頻道)。MPEG-2 的傳輸速度也提昇至 2Mbps ~ 10 Mbps,因此需要 4x 的 CD-ROM,但也因此 4x CD-ROM 只能儲存 18 分種的影像,所以我們利用 DVD-ROM 來儲存 MPEG-2 格式的影像,而且 DVD-ROM 也支援 Dolby 音效。

MPEG-4 標準

MPEG-4 的標準在 1993 年被提出,主要的應用用途比較廣,包括:視訊會議、影音郵件、無線裝置等等,支援的傳輸速度為 8Kbps ~ 35Mbps。

MPEG-4 可以傳送影像的物件,而不是只有影像的 "frame",例如一連串的動作指令。因此,MPEG-1 與 MPEG-2 皆是 "frame-based" 的標準,而 MPEG-4 則是 "object-based" 的標準,未來在網路與多媒體的應會也會更普遍。

MPEG-4 目前在 Linux 上已經有 OpenMPEG 的專案計畫,發起本計畫的目地在希望可以在 Linux 上發展完整的 MPEG-4 支援環境。

Video Streaming 的網路技術

要建置一個完整的 Video Streaming 環境,在整體來看,要準備的硬體包括:伺服器、CCD、影像補捉卡等等,而在底層的技術面方面,除了前面提到的影像編碼技術外,也要配合通訊協定才能實作出 Video Streaming 的應用程式。

Video Streaming 的方式

Video 在做 Streaming 時,有三種方式可以應用:broadcasting、unicasting、multicasting。

broadcasting 的方式比較單純,他是在 LAN 上直接將一個個的影像封包丟到網路上 (server 端),再由 client 的應用程式自網路上取回封包播放。但網路硬體層上,仍有許多需要考慮的問題,例如在 Shared Non-Switched Enthernet 上時,就會發生一些小問題。

unicasting 與 multicasting 都是屬於 IP 的傳輸方式。unicasting 採取 1 對 1 的方向傳影像給遠端,稱為 Video-on-Demand (VoD),multicasting 則是 1 對多的傳輸方式,稱為 Near-Video-on-Demand (NVoD)。未來 IPv6 將支援 IP Multicasting,因此 Video Streaming 的應用將更為廣泛。

IPv6

IPv6 全名為 IP version 6,未來將取代目前所使用的 IPv4。IPv6 新增許多對多媒體傳輸的支援,例如 multicasting、authentication/encryption等。不過目前尚仍未全面升級,所以應用仍受限。

UDP 通訊協定

UDP 全名是 Universal Datagram Protocol,UDP 通訊協定是 Video Streaming 的基石。UDP 與 TCP 不同的是,UDP 並沒有錯誤檢查,不過這在 Video Streaming 的應用是影嚮不太的。

RTP 通訊協定

RTP 全名為 Real-Time Protocol,RTP 是在 UDP 封包之前多加 10 bytes 的檔頭,裡面記載有時間、序號、壓縮型態等資訊。RTP 是目前大多數 Video Streaming 軟體所使用的通訊協定。

RTP 可用來針對各種不同的多媒體格式做 Streaming 的工作,因為我們將影像分解成數個 RTP 封包再傳送出去,因此會遇到許多網路技術常會遇到的問題。例如,因為封包送達的時間不一,造成播放時會畫面不流暢的現像,因此,在播發時就必須使用一個緩 衝區 (playout buffer) 來暫時存放並處理網路上接受到的封包。

由網路上接收的影像封包因為彼此之間到達的時間間隔不同 (Synchronous Data Packets),所以必須利用緩衝區將這些封包做緩衝,讓彼此之間的時間間隔一樣 (Isochronous Data Packets)。

MPEG-1 的原理

MPEG-1 的編碼原理大家都應該要認識一下。MPEG-1 將影像分成一個 Group,即 GOP (Group of Pictures),每個 GOP 有一個 Entry Point,稱為 I-frame,每個 I-frame 的大小為 15KB,另外還有 P-frame 與 B-frame。

I-frame 稱為 Independent-frame,為每個 GOP 的起點,緊接著的是二個 B-frame,B-frame 稱為 Bi-directional frame,每個 B-frame 大小為 3KB,每二個 B-frame 之間再插入一個 P-frame,即 Predictive-frame,每個 B-frame 的大小為 8KB。

GOP 共有三種不同的 frame,每種 frame 存放的影像與性質皆不同,這在以後我們實做程式時會再做更清楚的介紹。例如,我們要將影片快轉時,可以忽略掉所有的 B-frame 與 P-frame,只撥放 I-frame,如此一來便可以節省許多貴寶的網路頻寬與時間,但前提是,I-frame 必須存放主要的影像資料,事實上也是如此。

Video Streaming 來的正是時候

看到 "Video" Streaming 就知道這個技術與影音有關。Video Streaming 是一種經由網路來撥放影音檔案的技術,Video "Streaming" 的基本概念為「一邊下載一邊撥放」,我們稱之為「Play as received」。

經由 Internet 如果要收看遠端伺服器的電視檔案,最原始的做為是「下載後再撥放」,也就是經由 FTP 或 HTTP 將整個檔案下載至本地端後再利用撥放程式來撥放,我們稱之為「Play after download」。

以最常見的例子來講,我們可以經由網路將 MP3 完整下載後再撥放,也就是 Play after download,或者我們也可以一邊下載 MP3 一邊聽音樂,這種方式則稱為 Play as received。其他的應用範例還很多,例如利用 RealPlayer「即時觀看影片或是聽音樂」,這種即時撥放的方式即是 Play as received,我們稱這樣的技術為 Video Streaming Technology。

為什麼說 Video Streaming 的技術來的正是時候呢?舉個最簡單的情況,你可能在下載 MP3 之前想要試聽一下音樂的內容,而下載音樂片段的方式又顯得不夠友善,這時如果利用 Video Streaming 的技術來讓網友視聽,不但方便,而且不必浪費時間來下載不喜歡的音樂的。

隨著網路頻寬的改進與 IPv6 的出現,Video Streaming 的應用將越來越廣泛,利用 Video Streaming 來設計的資訊家電也會越來越多,例如較常被提及的網路電話 (InterPhone)。

除了寬頻網路的普及外,儲存設備的大進步也是加速 Video Streaming 進用普及的最大動力,例如利用 Linux 設計的 NAS 可以被用來當做大型的影音伺服器或是動態電影資料庫 (DMD)。

VCD & MPEG-1

要提到撥放動態影音的先軀,絕對要先從 VCD 說起,因為這是在電腦出現後,最能深入消費者市場的產品。

想當年,要撥放 VCD 除了要有一台當時算是高擋貨的 1x CD-ROM 外,還要再另外加裝也是高擋貨的 MPEG 卡。撥放 VCD 其實就是 Video Streaming 的技術,因為 VCD 的資料是一邊讀取一邊撥放,那為什麼要有 MPEG Card 呢?理所當然的,這是因為MPEG-1 的標準。

MPEG-1 被設計在 1x CD-ROM 上撥放 VCD,而 VCD 上的資料必須經由 MPEG Card 解碼 (decode) 後才能撥放。但是隨著硬體的進步,現在可以經由軟體來做 MPEG-1 解碼的工作。我們將在後文介紹 MPEG-1 的設計概念。

DVD & MPEG-2

MPEG-2 常被提到則是由於 DVD 的流行。不管是 MPEG-1 或是 MPEG-2,其實是一種編碼的技術,而 DVD-ROM 則是選擇了 MPEG-2 來當做它的壓縮標準。

而 DVD 之所以無法像 VCD 一樣能被「備份到硬碟」,則是由於其中又加進了三道的保護,第二道保護就是玩家們耳熟能詳的 CSS。在 Linux 下之所以無法有「合法」的 DVD Player,就是受制於 CSS 的關係。

利用 NAS 來設計 Video Server,要儲存並廣撥 VCD 已經沒有技術上的障礙,但是要儲存並擴撥 DVD,則有法律上的問題,這點是值得我們深思的一個問題。因為目前 CSS 的技術掌握在日本人手裏,要取得這項技術必須簽署 NDA,不過 CSS 並非不可破解想必大家都知道,但是就是有版權上的問題。

影像編碼技術介紹

目前學術界已經發展出許多處理影像訊號壓縮及編碼的技術 (codecs),談到這些技術,應用最廣泛的編碼標準底下四種:

  1. ) H.261
  2. ) H.263
  3. ) JPEG, MJPEG
  4. ) MPEG

底下將分別簡單介紹這四種編碼技術。

H.261 標準

H.261 的影像編碼標準出現在 1990 年的 ITU。一開始的用途主要是支援影像電話 (video phone) 與視訊會議 (video conferencing)。H.261 的格式有二種,分別有不同的解析度:

  1. ) QCIF:176x144
  2. ) CIF:352x288

H.261 的 fps (frames per second) 可以達到 7.5, 10, 15 與 30 fps。由於 H.261 一開始是架構在 ISDN B 上面,而 ISDN B 的傳輸速度為 64 Kbps,所以 H.261 也被稱為 Px64 (x = 1 to 30)。

CIF 全名為 (Common Intermediate Format),主要是為了要支援各種不同解析度的電影而被定義出來,例如 NTSC, PAL, SECAM 電視系統。而 QCIF 則是 Quarter-CIF 也就是 CIF 解析度的一半。

除此之外,H.261 也可以說是 MPEG-1 標準的前輩。

H.263 標準

H.263 是 H.261 的加強版,誕生於 1994 年 (ITU)。H.263 開始支援 PSTN,不過要特別說明一點,H.263 比 MPEG-1 還要晚出現,而且 H.263 還是基於 MPEG-1 而發展。

H.263 的標準共支援五種不同的解析度,分別為:

  1. ) Sub-QCIF:128x96
  2. ) QCIF:176x144
  3. ) CIF:352x288
  4. ) 4CIF:704x576
  5. ) 16CIF:1408x1152

傳輸速度為 8 Kbps ~ 1.5 Mbps。除此之外,H.263 也是 MPEG-4 標準的基礎。

JPEG

提到 JPEG 的標準,大家可就不莫生了,由其是在 GIF 發出禁令後,JPEG 更是被廣泛應用。JPEG 的全名大家一定不莫生,他可是赫赫有名的一群技術團隊的縮寫 - Joint Photographic Experts Group。

JPEG 是 24-bit 的 "true-color" 影像標準,JPEG 的工作是將 RGB 格式的影像轉換成 YCrCB 格式,目的是為了減少檔案大小,一般約可減少 1/3 ~ 1/2 左右。

不過 MJPEG 才是我們的主角,MJPEG 全名為 "Motion" JPEG,也就是會動的 JPEG 圖檔。許多 Video Streaming 的場合,像是簡單的視訊會議軟體都會使用 MJPEG 來取代 MPEG,原因無它,因為 MJPEG 格式簡單,但缺點是不支援聲音。

MPEG-1 標準

MPEG 的標準由 ISO (International Standards Organization) 所制定,全名為 Moving Pictures Experts Group (MPEG 為 ISO 工作),這些團隊制定了包括 MPEG-1、MPEG-2、MPEG-4 等標準。

MPEG-1 的標準比 H.263 早出現,MPEG-1 制定於 1992 年,主要用途為:視訊會議、影像電話、電腦遊戲與支援第一代的 CD-ROM。MPEG-1 被設計來支援大部份的影像與 CD-ROM 的音效,傳輸速度為 1.5 Mbps (30 fps)。

除此之外,MPEG-1 也支援 playback,例如快轉、倒帶或是跳躍,這也是 MPEG-1 好用的地方。稍後我們會簡單介紹一下 MPEG-1 的原因,以明白 MPEG-1 如何做到這些功能。

MPEG-2 標準

MPEG-2 的標準出現於 1994 年,MPEG-2 相容於 MPEG-1。MPEG-2 的出現並不是為了要取代 MPEG-1 的舊標準,而是要加強 MPEG-1 不足的地方。因此 MPEG-2 更能昇任其它工作環境,例如 HDTV、視訊廣播。

同時,MPEG-2 的解析度也支援到 HDTV 1280x720。在音效方面,MPEG-2 也支援到 6 個頻道 (MPEG-1 只支援 2 個頻道)。MPEG-2 的傳輸速度也提昇至 2Mbps ~ 10 Mbps,因此需要 4x 的 CD-ROM,但也因此 4x CD-ROM 只能儲存 18 分種的影像,所以我們利用 DVD-ROM 來儲存 MPEG-2 格式的影像,而且 DVD-ROM 也支援 Dolby 音效。

MPEG-4 標準

MPEG-4 的標準在 1993 年被提出,主要的應用用途比較廣,包括:視訊會議、影音郵件、無線裝置等等,支援的傳輸速度為 8Kbps ~ 35Mbps。

MPEG-4 可以傳送影像的物件,而不是只有影像的 "frame",例如一連串的動作指令。因此,MPEG-1 與 MPEG-2 皆是 "frame-based" 的標準,而 MPEG-4 則是 "object-based" 的標準,未來在網路與多媒體的應會也會更普遍。

MPEG-4 目前在 Linux 上已經有 OpenMPEG 的專案計畫,發起本計畫的目地在希望可以在 Linux 上發展完整的 MPEG-4 支援環境。

Video Streaming 的網路技術

要建置一個完整的 Video Streaming 環境,在整體來看,要準備的硬體包括:伺服器、CCD、影像補捉卡等等,而在底層的技術面方面,除了前面提到的影像編碼技術外,也要配合通訊協定才能實作出 Video Streaming 的應用程式。

Video Streaming 的方式

Video 在做 Streaming 時,有三種方式可以應用:broadcasting、unicasting、multicasting。

broadcasting 的方式比較單純,他是在 LAN 上直接將一個個的影像封包丟到網路上 (server 端),再由 client 的應用程式自網路上取回封包播放。但網路硬體層上,仍有許多需要考慮的問題,例如在 Shared Non-Switched Enthernet 上時,就會發生一些小問題。

unicasting 與 multicasting 都是屬於 IP 的傳輸方式。unicasting 採取 1 對 1 的方向傳影像給遠端,稱為 Video-on-Demand (VoD),multicasting 則是 1 對多的傳輸方式,稱為 Near-Video-on-Demand (NVoD)。未來 IPv6 將支援 IP Multicasting,因此 Video Streaming 的應用將更為廣泛。

IPv6

IPv6 全名為 IP version 6,未來將取代目前所使用的 IPv4。IPv6 新增許多對多媒體傳輸的支援,例如 multicasting、authentication/encryption等。不過目前尚仍未全面升級,所以應用仍受限。

UDP 通訊協定

UDP 全名是 Universal Datagram Protocol,UDP 通訊協定是 Video Streaming 的基石。UDP 與 TCP 不同的是,UDP 並沒有錯誤檢查,不過這在 Video Streaming 的應用是影嚮不太的。

RTP 通訊協定

RTP 全名為 Real-Time Protocol,RTP 是在 UDP 封包之前多加 10 bytes 的檔頭,裡面記載有時間、序號、壓縮型態等資訊。RTP 是目前大多數 Video Streaming 軟體所使用的通訊協定。

RTP 可用來針對各種不同的多媒體格式做 Streaming 的工作,因為我們將影像分解成數個 RTP 封包再傳送出去,因此會遇到許多網路技術常會遇到的問題。例如,因為封包送達的時間不一,造成播放時會畫面不流暢的現像,因此,在播發時就必須使用一個緩 衝區 (playout buffer) 來暫時存放並處理網路上接受到的封包。

由網路上接收的影像封包因為彼此之間到達的時間間隔不同 (Synchronous Data Packets),所以必須利用緩衝區將這些封包做緩衝,讓彼此之間的時間間隔一樣 (Isochronous Data Packets)。

MPEG-1 的原理

MPEG-1 的編碼原理大家都應該要認識一下。MPEG-1 將影像分成一個 Group,即 GOP (Group of Pictures),每個 GOP 有一個 Entry Point,稱為 I-frame,每個 I-frame 的大小為 15KB,另外還有 P-frame 與 B-frame。

I-frame 稱為 Independent-frame,為每個 GOP 的起點,緊接著的是二個 B-frame,B-frame 稱為 Bi-directional frame,每個 B-frame 大小為 3KB,每二個 B-frame 之間再插入一個 P-frame,即 Predictive-frame,每個 B-frame 的大小為 8KB。

GOP 共有三種不同的 frame,每種 frame 存放的影像與性質皆不同,這在以後我們實做程式時會再做更清楚的介紹。例如,我們要將影片快轉時,可以忽略掉所有的 B-frame 與 P-frame,只撥放 I-frame,如此一來便可以節省許多貴寶的網路頻寬與時間,但前提是,I-frame 必須存放主要的影像資料,事實上也是如此。

posted by yuchin in Linux and have No Comments

IP Multimedia Subsystem Technology

資料來源:工業技術研究院 

工研院資通所憑藉過去在IP 電信領域的豐富經驗,投入IMS(IP MultimediaSubsystem)的研發。

IMS 跨網路平台及整合IP 化的應用服務,是為電信業者內容服務業者拓展新興業務的最佳選擇。

工研院現已自行開發出IMS 網路中心網路元件(CSCF, call session control function)與

相關的應用服務,工研院續在電信領域耕耘,不斷向前邁進,歡迎業界洽詢相關技術。

技術簡介
IMS (IP Multimedia Subsystem) 是原本由3rd Generation Partnership Project
(3GPP)所制定做為3G WCDMA 行動通訊的標準,

但目前已經被3GPP2CDMA2000 網路) 及ETSI TISPAN (固接網路) 採為標準,

ITU-T 亦將IMS 納為GN 的標準,IMS 將會成為未來整合Internet、PSTN、Wireless 與xDSL 各種
異質網路的服務控制平台,

而IMS-based 的服務將以高度個人化的形式提供包語音、文字、圖片和影像等任意組合的多媒體應用。

應用範圍種IP 連線接取網路 (IP-CAN)網路及通訊設備系統中,

使用者設備(Userquipment, UE)的註冊、Call Session 的建立與管理,

以及各類型應用服務的觸如OSA/Parlay Applications、IM Applications 及SIP Applications。

技術簡介
IMS (IP Multimedia Subsystem) 是原本由3rd Generation Partnership Project
(3GPP)所制定做為3G WCDMA 行動通訊的標準,

但目前已經被3GPP2CDMA2000 網路) 及ETSI TISPAN (固接網路) 採為標準,

ITU-T 亦將IMS 納為GN 的標準,IMS 將會成為未來整合Internet、PSTN、Wireless 與xDSL 各種
異質網路的服務控制平台,

而IMS-based 的服務將以高度個人化的形式提供包語音、文字、圖片和影像等任意組合的多媒體應用。

應用範圍種IP 連線接取網路 (IP-CAN)網路及通訊設備系統中,

使用者設備(Userquipment, UE)的註冊、Call Session 的建立與管理,

以及各類型應用服務的觸如OSA/Parlay Applications、IM Applications 及SIP Applications。

posted by yuchin in 參考文獻 and have No Comments

破解IE只能下載兩個檔案

雖然說這個好像不是什麼大問題,但由於我電腦重灌後要重新設定

同時好不容易週末些許有空,就來寫寫部落格囉!!

因為要下載課業上要用的SQL Server 2005,而且要安裝在XP上,所以就不能是企業版的

而找到的載點竟然是一堆連續的MegaShare空間網址

在找不到合用的下載軟體時,只好手動一個一個下載,但卻受限於IE只能下載兩個

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVers ion\Internet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

以下就是破解的方法啦!!

1.按 "開始" -> "執行",在開啟的地方鍵入 "regedit.exe" 再按確定。

2.在左邊的視窗,請找到
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionInternet Settings

3.在右邊的視窗,按右鍵應該會出現 "新增" 訊息。

4.選擇 "DWORD值",然後鍵入 "MaxConnectionsPer1_0Server",再按右鍵修改為 "63"。

5.按步驟4,新增另一 "MaxConnectionsPerServer",並設值為 "63"。

6.結束 Regedit.exe,登出系統並重新啟動 Windows

posted by yuchin in 程式&軟體 and have No Comments

Maximum execution time of 300 seconds exceeded

今天在匯資料表的時候,發現一直會出現這個問題

淺意識的就是要把php.ini中的 max_execution_time = 30  加大

可是不管我怎麼加大或者設定成不限時間,還是都會有同樣的問題

而資料表是用phpmyadmin dump出來的

所以用mysql source的方式又會有亂碼問題

這時就在猜會不會是phpmyadmin本身設定的問題

所以就去看config檔,果然不出我所料,是phpmyadmin設定上有誤

以下是我修改的部份: 

1. php.ini

代碼:
max_execution_time = 30


2. phpMyAdmin/config.inc.php 或者 phpMyAdmin/libraries/config.default.php

代碼:
$cfg['ExecTimeLimit']           = 300;

 

posted by yuchin in Linux and have No Comments

利用MRTG觀看TECOM4031b數據機整體流量

為什麼今天要寫這一篇呢??主要是因為我朋友跟我抱怨說網路超級慢,想要把大量上下傳的使用者抓出來!!

我第一個念頭就是想到用MRTG,只是我沒想到架設好後好像只能偵測整體流量

有需要的朋友也可以參考一下!!其實架設MRTG裡面有很多網路管理的概念

他所用到的協定是SNMP,比較詳細的內容就自行找辜狗大師吧!

之前有迴響說要用圖示教學這樣比較應楚,但這篇可能就要大失所望了

因為我沒那麼多時間一張一張截圖,不過我會盡可能的描述清楚

首先先從硬體先說吧!!

當然要監控TECOM 4031b數據機就要在想要監控的設備開啟SNMP

登入TECOM 4031b後,進入Management -> SNMP Agent

點選SNMP Agent Enable -> Save/Apply  (其他都用預設的)

再來就是安裝軟體了

首先確定三個必要的軟體

1. Apache網頁伺服器(站長傾向用Appserv)

2.運行MRTG所要用的Perl程式(ActivePerl官方)

3.當然就是主角MRTG囉!!(MRTG官方)

分別安裝完後就是重頭戲了,要注意www的所在位置,與解壓縮MRTG後放置的地方

解壓縮MRTG後會是一個版本命名的資料夾,可以重新命名為mrtg,並在www底下建立mrtg資料夾

以我的路徑為例:解壓縮MRTG之後重新命名  ex. C:mrtg

並在www底下建立mrtg   ex. I:Appservwwwmrtg

開啟命令提示字元,切換目錄到C:mrtgbin底下

輸入:(要先切換到C:mrtg bin)
perl cfgmaker public@192.168.1.1 --global "WorkDir: I:Appserv www mrtg" --output mrtg.cfg

此時C:mrtg-2.9.27bin> 會生成 mrtg.cfg,可用記事本編輯它

1. 去掉 Options[_]: growright, bits  其面的#字號

2. 在頁尾加上 Language: big5

輸入:(要先切換到C:mrtg bin)
perl mrtg mrtg.cfg

這時再修改 mrtg.cfg 在頁尾加上 RunAsDaemon: yes

輸入:(要先切換到C:mrtg bin)

posted by yuchin in 程式&軟體 and have No Comments

mysql 中文亂碼解決方案

內容來源:LINK     (此篇文章僅供站長備份參考用,固為加密文章) 

*mysql中文亂碼的原因

mysql 會出現中文亂碼的原因不外乎下列幾點:

-mysql server本身設定問題,例如還停留在 latin1

-mysql table 的語系設定問題(包含 character 與 collation)

-客戶端程式(例如 php) 的連線語系設定問題

mysql 4.1 及之後的版本在語系方面增加了許多功能,它可以設定語系的層次從最底層的 server, database 到單一 table, column, connection 都可以設定,而除了語系之外,還可以指定搭配不同的 collation(校對),所以組合百百種,只要一個錯了就難逃亂碼的命運。

進phpmyadmin找到可輸入 sql query的畫面,然後鍵入:
show variables like '%character%';
這句話會顯示目前資料庫使用的語系設定,一般國外的網站或剛裝好的 mysql 4.1預設都是 latin-1。

[新增資料庫]
如果你熟悉 phpmyadmin 的操作,在畫面上就可以選擇建立新 database 要用的語系,
charset 請選擇 UTF-8 Unicode (utf8)
collation 請選擇 utf8_general_ci (ci 代表 case insensitve 大小寫沒差)

[修改資料庫]
改 database語系,同樣在 phpmyadmin 的query畫面鍵入下面兩行:
alter database myblog
character set utf8;

前面曾經提過,mysql的語系設定是多層次的,前面我們把database與table的語系都設定正確,但程式與mysql連線時的語系則是由 connection 來決定,這部份就要使用程式碼
mysql_query("SET NAMES 'utf8'");
這句話會同時設定 client, results, connection三者使用的語系為 utf-8。

最後檢查是否全部改成 utf-8
show variables like '%character%';

此時你應該會看到大部份欄位都是utf-8了,除了 server 這項之外,如果是用別人的 hosting 主機,就沒法兒改這部份,但平常做案子時大部份都可以直接控管mysql,此時就可以用 my.ini 設定:

[mysqld]
default-character-set=utf8
告訴mysql server啟動時要用 utf-8即可。

*mysql中文亂碼必勝解決法
1、mysql 啟動時會讀取一個預設的 config 檔,一般名稱為 my.ini,而它會到下列兩位置去尋找這個檔案:
C:windowsmy.ini 也就是作業系統的安裝目錄,也有可能是 C:winntmy.ini
C::my.cnf 也就是 C disk 的根目錄

2、my.ini 裏的內容為:
[mysqld]
default-character-set=utf8

[client]
default-character-set=utf8
init_c

其 中 mysqld 是指定 server 啟動時要用的語系,但如果這裏設定為 utf8 可能會讓許多英文軟體不開心,例如 osCommerce/mediaWiki/wordpress/drupal/gregarius,所以這裏建議設成 latin1。要使用utf8中文的人,只要記得建資料庫時將它設成utf8,讓中文程式正確的使用 utf8 與它溝通即可。

下 面的 client 則是設定當 client 連線時要使用什麼語系,但可惜的是這個設定不是每個 client 都會鳥它,基本上只有 mysql 自已家的程式,例如 mysql.exe, mysqld.exe, mysqladmin.exe 或是 MySQL Control Center 這種程式會去讀取這個設定檔然後改用 utf8 連線。

所以通常會用一個獨立的檔案來處理 mysql connection的設定,例如:

PHP:

<?
//database connection details.
$host = "localhost";
$link = mysql_connect($host, "xxx", "xxx");
mysql_query("SET NAMES 'utf8'");
mysql_select_db("your_table_name_here", $link);
?>

請注意在 mysql_connect後第五行的地方有加上一個 "set names 'utf8' "的指令,告訴mysql 這個 connection 之後的連線內容都要使用utf8,經過這樣設定後,通常就可以解決大部份問題。

從這裏也可以推想得知,如果你有用某種 custom connection pooling 機制,就要記得在每次建立新的 connection 後立即設定為 utf8。

posted by yuchin in Linux and have No Comments