55 61 75 75 平均 :68.2
面試 : 82.67
我就不列出我的書單了,其實就是精華區有關資訊處理的那些書,在這裡說說我參加國考的心路歷程。
從 96 年開始,在家人的勸說下,試著去參加國營事業的考試。那年我什麼都沒準備,想說就靠自己剛畢業不久,應該還記得很清楚的情況下去考想當然,
離最低錄取差了快二十分。
後來 97 年,又聽說那年國營事業要招考,那時候離考試還有三個月,大概就是報完名後吧,想說這次認真一點,去買了X文的書來看 看完後去考,
發現還是差了很多分沒上,很多題目考出來, 但我都沒看過這類的知識,像是資料庫之類的ER圖等....
後來 98 年,一方面準備在職進修考試,因此把資料結構跟 OS 都看了一遍,又去翻了翻X文的書,以及買了X文出的一些關於油水電的題庫來練習一邊練習,
一邊奇怪怎麼會考這些什麼 RJ-45,雙絞線怎麼絞,什麼機房中應該讓機器跟地面保持多大高度的距離等問題....一邊Google查相關知識一邊做完這幾年的考古題後,
比以前更有信心的去考了, 這次就差了不到十分落榜,當然...那些奇怪的題目都沒考.... (相信我的意思大家明白) 在這年,
開始決定不如就把目標放大一點,去準備高普考好了, 因此開始查有哪些書該買,以及大家都怎麼建議去準備高普考等資訊,除了資料結構和 OS 外,
我必須買的有資料庫,電腦網路,程式設計,系統分析, 以及資訊管理等書,這些書堆起來非常的厚, 每天七點左右吃完後,我就開始讀書,
大致上有時候都會讀到 有時念到半夜兩點才睡,有時候晚上十點才回家,整理整理, 就算十二點也會拿書起來看,總之,我並沒有硬性規定我要看到幾點,
但是我都會規定自己這禮拜要把哪個段落給看完,就好像以前玩 GAME 時, 我會規定自己這禮拜必須升一級(那時候天二等級很難升...) 這種做法比較符合我的個性,
有時候進度有達到,我會繼續看下一段落, 但是這時候就會比較沒有進度壓力,有時候覺得這段落這禮拜看不完,就會加緊腳步,多壓榨出一些時間來看。
99年時,我考上了某大學的在職進修,那年的郵局筆試也過了,但可惜面試被刷之後七月我開始暑修來先修點學分,這時候我進入了焦頭爛額的狀況,
除了學校的課業,我放緩了自己在看高普考的書的進度,變成兩禮拜看完一章之類總之,其實打這篇文章的意義是,我不知道有沒有人跟我之前一樣,
那樣放鬆心情的在參加考試,當然某些特例除外的話, 其實參加這類考試沒有捷徑,某些出版社出的書雖然有整理一些重只讀那些其實是不夠的,
我自己覺得前幾年那樣讀下來,我得到的知識有點零零散散的感覺,但是當我去讀精華區中建議的書單,我感覺這些零散的知識其實都是可以串接起來的,
而且我覺得有些精華本中的解答,我現在看都還是很難記住,因為他們看起來就是不知道從哪拼拼湊湊出來的,非常不連貫。 所以建議就是,雖然書很多,
可是其實去參加這類考試的人,至少有上百個都已經看完全部了,在競爭的就是這部分的人在競爭。而且雖然書很多,可是連貫起來的知識,
其實可以記得比那些零散的知識更久。 我本身不太善於溝通,不知道這樣的文章打下來大家是否能接受, 只是希望我的心得能給大家一些想法。
另外補充一下面試的題目:
1) 為什麼你工作經歷有這麼多段空白? (左方考官問的,照實回答)
2) 平常有在運動嗎? (主委問的)
3) 郵局網頁能做什麼改進? (右方考官問的)
4) 除了剛剛說的,還有什麼你能為郵局作的? (主審補問)
感謝 PTT 國考版提供的資訊,謝謝。
function makeRequest(url)]]>
{
url += "?n="+Math.random()*100000000;
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (http_request) {
http_request.onreadystatechange = alertContents;
http_request.open('GET', url, true); http_request.send(null);
}
}
function alertContents() { if (http_request.readyState == 4) { alter(http_request.status); } }
網上有一些關於EXISTS 說明的例子,但都說的不是很詳細.比如對於著名的供貨商數據庫,查詢:找出供應所有零件的供應商的供應商名,對於這個查詢,網上一些關於EXISTS的說明文章都不能講清楚.
我先解釋本文所用的數據庫例子,'供貨商' 數據庫,共3個表. 供貨商表 S(S#,SNAME), 貨物表 P(P#,PNAME), 供貨商-貨物表 SP(S#,P#). 字段S#,P#分別代表供貨商和貨物的ID.
在C.J.Date的數據庫系統導論第八版中文版第147頁給出了, EXISTS的比較正規的解釋, "EXISTS( SELECT ... FROM ...)取真值,當且僅當 SELECT ... FROM ... 取非空值.在作為相關子查詢的例子中,SQL涉及子查詢,因此它包含了一範圍變量的引用,即隱式範圍變量S, 它在外查詢中定義."
我個人認為,此處所指的外查詢定義的隱式範圍變量S, 可以用另外一種方法來解釋: 將外查詢表的每一行,代入內查詢作為檢驗, 如果內查詢返回的結果取非空值,則EXISTS子句返回TRUE, 這一行行可作為外查詢的結果行, 否則不能作為結果.
至此可以明確,EXISTS(包括 NOT EXISTS )子句的返回值是一個BOOL值. EXISTS內部有一個子查詢語句(SELECT ... FROM...), 我將其稱為EXIST的內查詢語句.其內查詢語句返回一個結果集. EXISTS子句根據其內查詢語句的結果集空或者非空,返回一個布爾值.
舉一例子說明: 找出供應所有零件的供應商的供應商名
假設數據如下:
S# | SNAME |
1 | S1 |
2 | S2 |
P# | PNAME |
1 | P1 |
2 | P2 |
S# | P# |
1 | 1 |
1 | 2 |
2 | 1 |
這個查詢過程如下:
STEP1: 將S表第一行(1,S1) 作為隱式變量V1, 代入第一個NOT EXISTS子句. 由於這個子句嵌套一個NOT EXISTS子句, 再將 P表第一行(1,P1) 作為隱式變量V2, 和V1一起代入第二個NOT EXISTS子句中, 這時第二個NOT EXISTS的內查詢子句變成
其返回結果集為
S# | P# |
1 | 1 |
這個返回結果集非空,注意NOT EXISTS子句返回的是EXISTS子句的非,因此 第二個NOT EXISTS 子句返回FALSE. 因此V2不能加入第一個NOT EXISTS子句的內查詢子句返回結果.
同理,將P表第二行(2,P2)作為隱式變量V3, 與V1一起代入第二個NOT EXISTS子句中,內查詢返回結果集非空(返回 行(1,2) ), 因此V3也不能加入第一個NOT EXISTS子句的內查詢返回結果集.
至此, 對於隱式變量V1(也就是S的第一行), P表的每一行都已代入第二個NOT EXISTS子句中進行檢驗,返回結果是一個空集, 因此對於第一個NOT EXISTS子句,其內查詢子句返回結果為空.因此,第一個NOT EXISTS子句返回TRUE.因此, V1(1,S1)加入外查詢的結果集.
STEP 2: 將S表的第二行(2,S2)作為隱式變量 V4, 代入第一個 NOT EXISTS 子句. 將 V4,V2, 一起代入第二個NOT EXISTS子句. 第二個NOT EXISTS子句內查詢結果集返回非空(2,1),第二個NOT EXISTS子句返回FALSE.V2 不能加入第一個NOT EXISTS子句的內查詢結果集.
將V4,V3 一起代入第二個NOT EXISTS子句, 這時第二個NOT EXISTS子句的內查詢子句變成:
在SP表中,並沒有S#=2 AND P#=2 的一行,因此,第二個NOT EXISTS子句的內查詢子句返回空集,第二個NOT EXISTS子句返回 TRUE. 因此V3, 可以插入第一個NOT EXISTS子查詢結果集.
至此, 對於隱式變量V4(也就是S的第2行), P表的每一行都已代入第二個NOT EXISTS子句中進行檢驗.第一個NOT EXISTS子查詢語句返回結果集為:
P# | PNAME |
2 | P2 |
非空,因此第一個NOT EXISTS子句返回false,V4(2,S2) 不能加入外查詢的結果集.
至此S表的每一行都代入第一個NOT EXISTS子句中進行檢驗, 外查詢的返回結果是
SNAME |
S1 |
查詢結束.
從上述查詢過程來可以得知, 第二個NOT EXISTS子句的內查詢語句返回的結果集的含義是, 一個供貨商能否供應某種貨物. 第一個NOT EXISTS的內查詢語句返回的結果集的含義是, 某一個供貨商不能供應的貨物. 而連起來使用,就是用排除法得到"沒有不能供應的貨物的供貨商", 也就是能供應所有貨物的供貨商.
=========================
後記: 高點的資料庫都沒講那麼清楚.....終於弄懂了....
]]>但是因為他不支援 Tiger, 所以弄了老半天, 最終參考到這篇文章
http://nirlog.com/2006/07/25/ethereal-on-mac-os-x/
教怎麼在 tiger 上安裝 etheral 好抓取封包...
Step1. 到 http://www.finkproject.org/download/index.php?phpLang=en 下載 10.4 的版本 Fink
0.8.1
(PowerPC)
Step2. 安裝 Fink-0.8.1-PowerPC installer.pkg, 安裝完後依據指示在 ~/.profile 加上 "source /sw/bin/init.sh" 即可執行 fink 指令
Step3. 在 Fink 0.8.1 裡面有個 FinkCommander 的資料夾, 執行 FinkCommender.app
Step4. 點擊 FinkCommander 中的 menu "Source" -> "scanpackages", 完成後點擊 menu "Source" -> "Utilities" -> "index" (或執行 fink scanpackages; fink index)
Step5. scan 完後, 列表會出現很多可安裝的 packages, 找到 ethereal 並點擊它, 之後點擊 menu "Binary" -> "Install" (或執行 fink install etheral), 等它跑完就裝好 ethereal.
Step6. 到 AquaEthereal 下載 Acquaethereal, 下載後輸入目前帳號的密碼, 會自動叫起 ethereal. 或是直接到 /sw/bin/ethereal 雙擊執行即可
ethereal 是 wireshark 之前的版本, 至於怎麼使用它抓封包就請參考 http://blog.xuite.net/mosbbs/PC/29077364 裡面有教學囉
]]>http://aldington.javaeye.com/blog/289140
在 subversion 網站下載了subversion-deps-1.6.11.tar.gz , 解壓縮到和 subversion-1.6.11 相同的資料夾後, 執行指令
./configure
卻發生 "configure: error: We require OpenSSL; try --with-openssl",
之後繼續 google, 看到這篇文章
http://shineforever.blog.51cto.com/1429204/306116
決定一勞永逸, 到網路上下載 httpd-2.2.15.tar.gz 和 openssl-1.0.0.tar.gz, 首先解開 openssl 後, 到解開的資料夾內執行
./config
make
make install
再解開 httpd-2.2.15.tar.gz
根據文章中的描述, 執行
./configure --enable-dav --enable-so --prefix=/opt/apache2
make
make install
之後回到 subversion 資料夾, 執行
./configure --with-apxs=/opt/apache2/bin/apxs --with-apr=/opt/apache2 --with-apr-util=/opt/apache2 --with-openssl=/usr/local/ssl
(最後會看到一些什麼 unrecognized option --with-openssl 之類的警告, 又說什麼 we have configred without BDB file system support...blabla 之類的, 不要理他, 反正 makefile 生出來了, 如果不加 --with-openssl 參數則會發生之前那個需要安裝 openssl 的錯誤訊息, 相權之下還是選擇加這個參數了, 雖然教學文件上都沒提到)
make
make install
subversion 就安裝完成了.
之後將原本的 svnroot 資料夾移植過來, 試著執行一些基本 svn command, 發現都很順利, 只是 svn commit 仍需在 .bash_profile 中設定 SVN_EDITOR="/usr/bin/vim", 才能順利執行, 所以證明了 svn 資料的備份就是這麼簡單....
花了我一下午的時間....呼!
PS. svn 狀況排除可看 SVN FAQ
]]>原文:Ultimate IE6 Cheatsheet: How To Fix 25+ Internet Explorer 6 Bugs
翻譯:http://www.vfresh.org/w3c/727(譯 文對原文進行了補充)
對IE6最好的策略就是不去兼容它。
好吧,我知道你的難處,你不得不去兼容IE6這個狗血的瀏覽器,因此不得不在兼容IE6上花費很多時間。對此,我頗有同感,來讓我來幫助你吧。
我不會像許多文章那樣讓你去抵制IE6,這並不會幫助到你(迫不得已時)去兼容IE6;因為IE6依舊佔有一定的市場份額,你無法放棄IE6。本文 將幫助你來解決這個難題。
我查閱過很多資料來摘錄這些解決方案(有些是我自己提供的),現在我做成手冊提供給大家搞定IE6這個傢伙。我儘可能的提供了最優解決方案而不是一 些hacks,並且提供了一些相關的資料。如果你發現有更好的方法或者本文有錯誤,請聯繫我。
在討論IE6的BUG及如何修復之前,有必要先講一些策略去避免這些惱人的問題——正所謂防患於未然 。
兼容IE6的第一步就是單獨對IE進行兼容,你針對IE6所寫的代碼隻影響IE6。
解決IE6佈局方面的BUG非常的惱人!特別是在實現一個精美的設計稿時。
ie6有著一些行為方面的BUG,究其原因是IE6版本太老了,不能完好地支持CSS2更不支持CSS3,而且微軟固執的使用了其私有方法。
IE6有著數不盡的JavaScript bug,這裡我不會講解每一個IE6下JavaScript的bug,只摘取其中幾個普遍的問題來討論。
在討論IE6的BUG及如何修復之前,有必要講敘一些策略去避免這些惱人的問題——正所謂防患於未然 。
據Market Share統計,目前(2009年8月)IE6 的市場佔有率為25.25%,但是其他地方的統計明顯要低,為18.1%;儘管統計結果不同,但都呈現出了下降的趨勢(翻譯此文時,淘寶的IE6用戶 已從70%跌破至69%)。但是最重要的,還是你自己網站的統計數據。如果你對你的網站進行了流量分析,那麼IE6的佔有率是否值得你去針對 IE6進行開發?這需要你自己去權衡。
如果你網站絕大部分訪問者不使用IE6並且不付費給你,那麼你不必特意區針對IE6做兼容,從而節省時間、精力及資金。
在做設計的同時考慮代碼的實現,可以避免一些佈局上的問題。再複雜的設計稿也能用簡潔的代碼實現,如果你使用了過於繁冗的標籤,那麼你需要重新修繕 設計稿。
如果你有豐富的開發經歷,攻克過很多種佈局難題,記錄下你的解決方案,在以後碰到相同問題時可以提高開發效率。
使用一個錯誤的文檔聲明會觸發quirks
mode(怪異模式),正確的文檔聲明可以保證你的頁面在所有瀏覽器下保持一致的效果。使用其中的一個文檔申明:HTML 5
, HTML 4.01 Strict
,
HTML 4.01 Frameset
, HTML
4.01 Transitional
, XHTML 1.0 Strict
,
XHTML 1.0 Frameset
, XHTML
1.0 Transitional
, or XHTML 1.1
<!DOCTYPE HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
我曾聽說過有些人認為校驗代碼沒有任何實用價值,但我不這麼認為。校驗僅僅只需花費一點點時間,而且將受益於所有瀏 覽器而非僅僅IE6;驗證確保了向後兼容並且易於維護。至少也得驗證XHTML!唯一可以忽略驗證的情況是在你打算使用CSS3時。
在寫代碼的過程中,一開始在標準瀏覽器中測試(如 Firefox, Opera, Chrome等),然後再去測試非標準瀏覽器(如IE6/IE7),因為這些標準瀏覽器都遵循w3c標準,大多的處理方式都相同。你可以分開來單獨去兼容 「特別」的IE瀏覽器,這樣做能規範你的代碼,你將會因此擁有紮實的基礎;而且如果你不再需要兼容這些非標準瀏覽器,你可以一次性刪除這些修復兼容性代 碼。
漸進增強(Progressive Enhancement)是為了確保沒有頁面特效後基本功能也是可用的。簡單來講,漸進 增強是指在確保頁面在禁用JavaScript後能正常運作後,再對頁面添加各種特效(JavaScript動畫、Ajax異步等等)。我們同樣可以運用 「漸進增強」原則來使用CSS3(或者一些CSS2)、HTML5以及其他IE6所不支持的web規範。
某些情況下,是無法讓所有用戶在任何瀏覽器下都完全一模一樣,特別是那些使用IE6的用戶。運用漸進增強策略,可以保證讓那些用戶至少使用到你網站 (或網絡應用)的基本功能。
每個瀏覽器都有各自不同的預設樣式,在你的樣式表之前使用預設樣式(CSS Reset)可以避免在之後編寫冗長的瀏覽器兼容樣式。在網上有很多CSS Reset可供參考。
body,div,ul,ol,li,h1,h2,h3,h4,h5,h6,form,fieldset,input,textarea,p,th,td {margin:0;padding:0;}
如果你的網站使用了較多的JavaScript特效,建議使用JavaScript框架。大部分的js框架都兼容了包括IE6在內的各種瀏覽器。可 選的框架有很多,但一般能用一種框架實現的效果一定可以用另外一種框架實現,所以你可以根據個人喜好來選擇合適的框架。
以下是一些常用的JavaScript框架:
強烈推薦實用MooTools,但如果你是入門者,還是建議使用jQuery。
現在有一些JavaScript來使IE模擬標準瀏覽器,如果你有較高比例的用戶使用IE6並且開啟了JavaScript,可以考慮使用Dean Edwards的IE7或者類似的腳本。
譯者註:不建議使用這些腳本,因為這些「模擬」的實現往往會消耗大量的資源,IE本來就夠爛了。
在IE下調試頁面很麻煩,Firefox下的擴展程序Firebug和Web Developer Toolbar都是很好用的工具,如果你想在IE或其他瀏覽器上使用firebug,可以用Firebug Lite。
在IE下有兩種最好的調試方法:IE Collection和IETester, 並且都是免費的(雖然有一點點缺陷)。IETester的開發者也提供了DebugBar這款IE插件免費供個人使用,但商業用戶只可試用60天。
兼容IE6的第一步就是單獨對IE進行兼容,你針對IE6所寫的代碼隻影響IE6;有幾種方法可以區分開IE6:IE特有條件註釋、CSS選擇器、 JavaScript,我們將逐一討論。
微軟給IE添加了條件註釋以區分不同版本,任何東西都可以塞進條件註釋裡:標籤、JavaScript、js文件、css、內聯樣式。可以使用條件 註釋來針對某一個IE瀏覽器版本來編寫代碼。
規則如下:(譯註:可參考IE 特有註釋(hack))
<p>這段文字會在所有瀏覽器顯示</p>
<!--[if lte IE 6]>
<p>這段文字僅顯示在 IE6及IE6以下版本。</p>
<p>This message will only appear in versions of Internet Explorer less than or equal to version 6.</p>
<![endif]-->
<!--[if gte IE 6]>
<p>這段文字僅顯示在 IE6及IE6以上版本。</p>
<p>This message will only appear in versions of Internet Explorer greater than or equal to version 6.</p>
<![endif]-->
<!--[if gt IE 6]>
<p>這段文字僅顯示在 IE6以上版本(不包含IE6)。</p>
<p>This message will only appear in versions of Internet Explorer greater than version 6.</p>
<![endif]-->
<!--[if IE 5.5]>
<p>這段文字僅顯示在 IE5.5。</p>
<p>This message will only appear in Internet Explorer 5.5.</p>
<![endif]-->
<!--在 IE6及IE6以下版本中加載css-->
<!--[if lte IE 6]>
<link type="text/css" rel="stylesheet" href="css/ie6.css" />
<![endif]-->
<p>這段文字會在所有瀏覽器顯示</p>
使用條件註釋加載css的好處是這些樣式是獨立於其他css文件的,因此不會在編寫兼容代碼時弄得一團糟;而且當IE6的市場份額降低到不需要兼容 時,可以快速的清理掉。
使用條件註釋的唯一缺點是在IE瀏覽器下會增加額外的HTTP請求數,所以需要權衡是否這樣做。但我不建議使用條件註釋加載外部js文件,因為js 文件會造成阻滯,在js未加載完之前其餘文件都不會被加載;對於js請使用JavaScript程序來區分瀏覽器而非條件註釋。
如果你不打算使用條件註釋,CSS選擇器是另外一個區分開IE6的辦法,IE6不支持子選擇器;先針對IE6使用常規申明CSS選擇器,然後再用子 選擇器針對IE7+及其他瀏覽器。
示例:
<style type="text/css" >
/* IE6 專用 */
.content {color:red;}
/* 其他瀏覽器 */
div>p .content {color:blue;}
</style>
<div>
<p class="header">Some Header Text Here</p>
</div>
這個方法的缺點是容易把樣式表弄得一團糟,所以一定要寫好註釋說明。
在示例中,針對IE6寫的樣式在其他瀏覽器中也會執行,但(標準瀏覽器中)之後的子選擇器覆蓋了之前的申明,而IE6不支持子選擇器所以忽略了它。
如果你想要使用JavaScript區分開IE6,請看示例:
//原生JavaScript
if(typeof document.body.style.maxHeight === "undefined") {
alert('IE6 Detected');
}
//MooTools(框架)
if (Browser.Engine.trident4) {
alert('IE6 Detected');
}
//jQuery(框架)
if (($.browser.msie) && ($.browser.version == "6.0")){
alert('IE6 Detected');
}
有很多JavaScript解決方案來修復IE6使用PNG-24圖片,但除了Twin Helix』s IE5.5+ PNG Alpha Fix都不支持CSS sprites。
另外一個辦法是使用IE特有的濾鏡,可閱讀Aaron Baxter的博客。或譯者的《ie5+ PNG Fix》
可以詳細閱讀CSS 圓角菜單。
如果你給鏈接、按鈕用CSS sprites作為背景,你可能會發現在IE6下會有背景圖閃爍的現象。造成這個的原因是由於IE6沒有將背景圖緩存,每次觸發hover的時候都會重新 加載,可以用JavaScript設置IE6緩存這些圖片:
document.execCommand("BackgroundImageCache",false,true);
解決IE6佈局方面的BUG非常的惱人!特別是在實現一個精美的設計稿時。
許多IE6下的Bug及渲染問題都可以歸於微軟的私有概念hasLayout
。簡要的
說,在給元素定義具體的尺寸(如height
或width
)
就會觸發hasLayout
,在IE6下缺失或觸發hasLayout會導致一些bug。
如果怪
異模式(quirks mode)在IE6中啟用,IE6將會使用微軟舊版的盒模型:width是元素的實際寬度,內容寬度 = width –
(margin-left + margin-right + padding-left + padding-right +
border-left-width + border-right-width)。最好的辦法是申明正確的文檔類型以避免觸發怪
異模式,或者避免給有border
或padding
的
元素定義width
屬性。當然你也可以考慮使用條件註釋。
IE6 不支持min-height
屬性,但它卻認為height
就是最小高度。感謝Dustin
Diaz提供了一個很好的方法:使用!important
,ie6會忽視它但其餘瀏
覽器不會。
註:IE6在同一個聲明語句中(即一個綜括號{}
)的屬性定義,後面的總
是會覆蓋前面的,所以下例中後面的height覆蓋掉了前面定義的important height
/* 所有瀏覽器 */
#container {min-height:200px; height:auto !important; height:200px;}
另一個方法是使用CSS 選擇器:
/* 僅IE6 */
#container {min-height:200px; height:200px;}
/* 其他瀏覽器 */
html>body #container { height:auto;}
非常遺憾,在IE6下實現max-height
只能使用IE特有濾鏡,或者可以使用
JavaScript實現。我個人更建議使用JavaScript來解決,因為IE濾鏡會消耗大量資源甚至會使瀏覽器崩潰,而且禁用JavaScript
後這兩種方法都無法生效。
//直接使用ID來改變元素的最大高度
var container = document.getElementById('container');
container.style.height = (container.scrollHeight > 199) ? "200px" : "auto";
//寫成函數來運行
function setMaxHeight(elementId, height){
var container = document.getElementById(elementId);
container.style.height = (container.scrollHeight > (height - 1)) ? height + "px" : "auto";
}
//函數示例
setMaxHeight('container1', 200);
setMaxHeight('container2', 500);
在IE6下,如果要給元素定義100%高度,必須要明確定義它的父級元素的高度,如果你需要給元素定義滿屏的高度,就得先給html
和body
定義height:100%;
。
/* 給child元素定義100%高度(IE6)*/
#parent {height:500px;}
#child {height:100%;}
/* 定義滿屏高度(IE6)*/
html, body {height:100%;}
#fullLength {height:100%;}
同max-height
和max-width
一
樣,IE6也不支持min-width
。有2個方法實現最小寬度,使用額外的標籤、使用JavaScript。
//直接使用ID來改變元素的最小寬度
var container = document.getElementById('container');
container.style.width = (container.clientWidth < width) ? "500px" : "auto";
//寫成函數來運行
function setMinWidth(elementId, width){
var container = document.getElementById(elementId);
container.style.width = (container.clientWidth < width) ? width + "px" : "auto";
}
//函數示例
setMinWidth('container1', 200);
setMinWidth('container2', 500);
只能使用JavaScript。
//直接使用ID來改變元素的最大寬度
var container = document.getElementById(elementId);
container.style.width = (container.clientWidth > (width - 1)) ? width + "px" : "auto";
//寫成函數來運行
function setMaxWidth(elementId, width){
var container = document.getElementById(elementId);
container.style.width = (container.clientWidth > (width - 1)) ? width + "px" : "auto";
}
//函數示例
setMaxWidth('container1', 200);
setMaxWidth('container2', 500);
當元素浮動時,IE6會錯誤的把浮動方向的margin值雙倍計算。Steve Clason給出了解決方法:給元素添加display:inline;
/*IE6下將產生雙倍邊距*/
.floatedEl {float:left; margin-left:100px;}
/*修正*/
.floatedEl {float:left; margin-left:100px; display:inline;}
如果你想用div(或其他容器)包裹一個浮動的元素,你會發現必須給div(容器)定義明確的height
、width
、overflow
之中一個屬性
(除了auto值)才能將浮動元素嚴實地包裹。
<div id="container">
<div id="floated1"></div>
<div id="floated2"></div>
</div>
#container {border:1px solid #333; overflow:auto; height:100%;}
#floated1 {float:left; height:300px; width:200px; background:#00F;}
#floated2 {float:right; height:400px; width:200px; background:#F0F;}
譯者常用的方式:
#container {zoom:1;} /* ie瀏覽器 */
#container:after{content:"\0020";display:block;height:0;clear:both;} /*標準瀏覽器*/
當內容超出外包容器定義的寬度時會導致浮動層錯位問題。在Firefox、IE7及其他標準瀏覽器裡,超出的內容僅僅只是超出邊緣;但在IE6中容
器會忽視定義的width
值,寬度會錯誤地隨內容寬度增長而增長。如果在這個浮動元素之後還跟
著一個浮動元素,那麼就會導致錯位問題。
浮動層錯位問題在IE6下沒有真正讓人滿意的解決方法,雖然可以使用overflow:hidden;
或overflow:scroll;
來修正,但hidden
容
易導致其他一些問題,scroll
會破壞設計;JavaScript也沒法很好地解決這個問
題。所以我的建議是一定要避免這個問題發生,使用一個固定的佈局或者控制好內容的寬度。
在IE6和IE7下,躲貓貓bug是一個非常惱人的問題。一個撐破了容器的浮動元素,如果在他之後有不浮動的內容,並且有一些定義了:hover
的鏈接,當鼠標移到那些鏈接上時,在IE6下就會觸發躲貓貓。
頭大了吧!但別擔心,well-documented提供了詳細的解決方法。
不管為何會觸發這個問題,解決方法很簡單:
<span
style="clear:both;"></span>
hasLayout
,一個簡單的方法就是給其定義height:1%;
IE6下的這個錯誤是由於進位處理誤差造成(IE7已修復),當絕對定位元素的父元素高或寬為奇數時,bottom
和right
會產生錯誤。唯一的解決辦法就是給父元素定義明確的高寬值,但對於液態佈局沒有完美的解決方
法。Paul O』Brien有關這個
bug有一篇文章來講解。
在IE6中,當文本(或無浮動元素)跟在一個浮動的元素之後,文本和這個浮動元素之間會多出3像素的間隔,Stu Nichols有一個非常好的解決方法。
譯註:可運行下面代碼來查看作者提供的修複方法
<style type="text/css">
.container {width:750px; height:237px; margin:50px auto; background:url(http://www.cssplay.co.uk/ie/3pxbug/bug.jpg) no-repeat center top;}
.container #page1,.container #page2 {width:30%; margin:0 auto 0 auto; padding-top:80px;}
.container .topMid {overflow:hidden; height:15px; background: url(http://www.cssplay.co.uk/ie/3pxbug/topmid.png);}
.container .topLeft {overflow:hidden; width:20px; height:15px; float:left; background:url(http://www.cssplay.co.uk/ie/3pxbug/topleft.png);}
.container .topRight {overflow:hidden; width:25px; height:15px; float:right; background:url(http://www.cssplay.co.uk/ie/3pxbug/topright.png);}
.container .content {height:100px; margin-right:25px; background:#ccc;}
.container .content h2 {font-size:20px; height:80px; line-height:70px; text-align:center; margin:0;}
.container .midLeft {width:20px; height:100px; float:left; background: url(http://www.cssplay.co.uk/ie/3pxbug/midleft.png);}
.container .midRight {width:25px; height:100px; float:right; background: url(http://www.cssplay.co.uk/ie/3pxbug/midright.png);}
.container .bottomMid {overflow:hidden; height:20px; background: url(http://www.cssplay.co.uk/ie/3pxbug/bottommid.png);}
.container .bottomLeft {overflow:hidden; width:20px; height:20px; float:left; background:url(http://www.cssplay.co.uk/ie/3pxbug/bottomleft.png);}
.container .bottomRight {overflow:hidden; width:25px; height:20px; float:right; background:url(http://www.cssplay.co.uk/ie/3pxbug/bottomright.png);}
/* 給浮動層添加 display:inline 和 -3px 負值margin */
.container #page2 .topLeft,
.container #page2 .midLeft,
.container #page2 .bottomLeft {display:inline;margin-right:-3px;}
.container #page2 .topRight,
.container #page2 .midRight,
.container #page2 .bottomRight {display:inline;margin-left:-3px;}
/* 給中間的內容層定義 margin-right 以糾正-3px */
* html #page2 .content {margin-right:22px;}
</style>
<div class="container">
<div id="page1">
<div class="topLeft"></div>
<div class="topRight"></div>
<div class="topMid"></div>
<div class="midLeft"></div>
<div class="midRight"></div>
<div class="content">
<h2>【3px Bug】</h2>
</div>
<div class="bottomLeft"></div>
<div class="bottomRight"></div>
<div class="bottomMid"></div>
</div>
</div>
<div class="container">
<div id="page2">
<div class="topLeft"></div>
<div class="topRight"></div>
<div class="topMid"></div>
<div class="midLeft"></div>
<div class="midRight"></div>
<div class="content">
<h2>【3px Bug 已修正!】</h2>
</div>
<div class="bottomLeft"></div>
<div class="bottomRight"></div>
<div class="bottomMid"></div>
</div>
</div>
在IE瀏覽器中,定位元素的z-index
層級是相對於各自的父級容器,所以會導致z-index
出現錯誤的
表現。解決方法是給其父級元素定義z-index
,有些情況下還需要定義position:relative
在IE6/7中,overflow
無法正確的隱藏有相對定位position:relative;
的子元素,如下例:
<style type="text/css" >
.wrap {overflow:hidden;width:100px;height:100px;background:#336600;border:solid #666600 5px;}
.child {position:relative;width:50px;height:200px;background:#99CC00;}
</style>
<div class="wrap">
<div class="child">
</div>
</div>
解決方法就是給外包容器.wrap
加上position:relative;
。
最為特別的IE許多bug都會影響到列表,這裡例舉了一些示例。
如果你使用float:left;
把<li>
橫
向擺列,並且<li>
內包含的<a>
(或
其他)觸發了hasLayout,在IE6下就會有錯誤的表現:
<style type="text/css" >
#menu li {
float:left;
list-style:none;
background:#CCCCFF;
}
#menu li a {
padding:0 10px;
display:block;
height:20px; /* 觸發了hasLayout */
}
</style>
<ul id="menu">
<li><a href="#" title="">Menu Item #1</a></li>
<li><a href="#" title="">Menu Item #2</a></li>
<li><a href="#" title="">Menu Item #3</a></li>
</ul>
解決方法很簡單,只需要給<a>
定義同樣的float:left;
即可。
bug示例:
<style type="text/css" >
ul {
clear: both;
list-style: none;
}
a {
display: block;
float: left;
background: #99CCFF;
}
#two a {
font-size: 1.1em;
}
</style>
<ul>
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
</ul>
<ul id="two">
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
</ul>
列表階梯
bug通常會在給<li>
的子元素<a>
使用float:left;
時
觸發,我們本意是要做一個橫向的列表(通常是導航欄),但IE卻可能呈現出垂直的或者階梯狀。
解決辦法就是給<li>
定義float:left;
而
非子元素<a>
,或者給<li>
定
義display:inline;
也可以解決。
當我們使用<li>
包含一個塊級子元素時,IE6(IE7也有可能)會錯誤
地給每條列表元素(<li>)之間添加空隙;解決這個問題的方法有很多,看示例:
<style type="text/css" >
ul {margin:0; padding:0; list-style:none;}
li a {display:block; background:#ddd;}
</style>
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
</ul>
Jon Hicks把<a>
flaot並
且清除float來解決這個問題:
ul {margin:0; padding:0; list-style:none;}
li a {display:block; padding:0.5em; background:#ddd; float:left; clear:left;}
另外一個辦法就是觸發<a>
的hasLayout
(如
定義高寬、使用zoom:1;
)
ul {margin:0; padding:0; list-style:none;}
li a {display:block; padding:0.5em; background:#ddd; zoom:1;}
/* height:1%; 也有同樣的作用 */
也可以給<li>
定義display:inline;
來
解決此問題。
另外還有一個極有趣的方法,給<a>
包含的文本末尾添加一個空格:
<ul>
<li><a href="#">Item 1 </a></li>
<li><a href="#">Item 2 </a></li>
<li><a href="#">Item 3 </a></li>
</ul>
ie6有著一些行為方面的BUG,究其原因是IE6版本太老了,不能完好地支持CSS2更不支持CSS3,而且微軟固執的使用了其私有方法。
在IE6中,除了<a>
(需要有href
屬
性)才能觸發:hover
行為,這妨礙了我們實現許多鼠標觸碰效果,但還是有一些法子是可以解
決它的。
最好是不要用:hover
來實現重要的功能,僅僅只用它來強化效果。
許多修復IE6 hover的方法都是使用微軟提供的私有方法behavior或 者JavaScript,通常使用JavaScript 框架或者IE6修復類js。
Canvas
標籤canvas是 HTML5新引入的元素,提供了通過 JavaScript 繪製圖形的方法,此方法使用簡單但功能強大。
所有IE瀏覽器都不支持HTML5中的canvas標籤,而是使用它微軟私有的VML,但是可以通過JavaScript來使canvas在IE下 生效。
當把body
居中放置,改變IE瀏覽器大小的時候,任何在body
裡面的相對定位元素都會固定不動了。Emil Stenström發現了IE6
Resize Bug並提供瞭解決辦法:給body
定義position:relative;
就行了,夠簡單吧!~
IE6有著數不盡的JavaScript bug,這裡我不會講解每一個IE6下JavaScript的bug,只摘取其中幾個普遍的問題來討論。
IE瀏覽器不容許不良的JavaScript書寫,如果在數組或者Hash對象的末尾有逗號就會引發異常「Expected Identifier, String, Or Number」,其他瀏覽器允許這樣做,但在書寫時注意刪除末尾的逗號以避免這個錯誤。
由於IE瀏覽器使用其自己的內存管理,當JavaScript使用的內存沒有被回收時就會引發內存洩露。可閱讀《JScript的內 存洩漏》及《Finally, the alternative fix for IE6』s memory leak is available》
IE6中一些其他bug
在IE6中,一些隱藏的元素(如註釋、display:none;
的元素)被包含在一個
浮動元素裡,就有可能引發文本重複bug:
<style type="text/css" >
.demobox {
width: 250px;
border: 3px solid #4c6f42;
}
.firstfloat {
float: left;
background: #939a90;
}
.secondfloat {
float: left;
width: 250px;
margin-bottom: 2px;
background: #fbdabb;
}
</style>
<!-- Begin live demo -->
<div class="demobox">
<div class="firstfloat">第一個浮動層</div>
<!-- comment --> <!-- comment --> <!-- comment --> <!-- comment --> <!-- comment -->
<div class="secondfloat">
第二個浮動層<br />
<span style="background: #f2ab82;">aa這段文字會被重複。。。這段文字會被重複。。。這段文字會被重複。。。這段文字會被重複。。。這段文字會被重複。。。</span>
</div>
<div style="clear: both; background: #b2d4af;">清除浮動層</div>
</div>
<!-- end live demo -->
Position Is Everything詳細講解了這個問題,但解決辦法很簡單:給浮動元素添加display:inline;
。
.firstfloat {display:inline;}
收藏夾圖標會以16×16像素大小顯示在你的收藏夾裡,有兩種方法來顯示收藏夾圖標:
favicon.ico
並放置在網站的根目錄,IE及其他瀏覽區都會
自動設置該文件為收藏夾圖標;<head>
區域聲明: <link rel="shortcut icon" href="../favicon.ico"
type="image/x-icon" />
需要注意的是收藏夾圖標會被一直緩存,除非你清除瀏覽器的緩存,才會更新新的圖標;如果你想要瀏覽者自動更新收藏夾圖標,請給 favicon.ico設置expires。
服務器端使用GZip壓縮了的文件,在某些版本的IE6(特別是未更新XP sp2的)中會有一些問題。所幸的是Seb Duggan找到了IE6 GZip bug解決方法,在Apache中使用ISAPI_Rewrite。
Seb提供的方法是在 ISAPI_Rewrite 安裝目錄下的httpd.conf
中
加入以下代碼:
RewriteEngine on
RewriteCond %{HTTP:User-Agent} MSIE [56]
RewriteCond %{HTTP:User-Agent} !SV1
RewriteCond %{REQUEST_URI} .(css|js)$
RewriteHeader Accept-Encoding: .* $1
轉載自 http://www.vfresh.org/w3c/727
ㄧ大早七點多就被morning call 叫醒
準備了ㄧ下
原本打算ㄧ大早去海邊賞鳥
但在吃了ㄧ頓不算很好吃的早餐後
我們決定在飯店看看電視待到十二點快退房時再出門
真是兩副懶骨頭
到了中午
透過飯店小姐熱心的介紹
我們放棄了原本的行程
改由二號省道一路往北
沿著濱海路欣賞東北角壯闊的美景
一開始天公不作美
下了ㄧ陣雨
騎了十幾二十分鐘都沒看到原本認為的第一站大溪漁港
兩個人心中有點惶惶
想說不會小姐報錯了吧!!
但慢慢的
騎到濱海路後
看見海岸線的奇峰怪岩和ㄧ陣ㄧ陣捲起的白色浪花
開始覺得其實這樣看風景也蠻不錯的
但因為下著雨
只好找有屋簷的地方拍照
剛好路邊有間土地公廟
在向土地公禱告借個地拍照後
神奇的在之後的時間都沒有下雨了
感謝土地公的保佑
後來邊騎邊照
ㄧ直沒看到大溪漁港
於是決定今天只到大溪吃海產和沿途拍拍照就好
(小姐說那裡海產超便宜, 烏石港的反而會跟台北差不多價錢)
沒想到卻先看到螃蟹博物館
恩...那大溪漁港過了嗎??
總之...就先到螃蟹博物館玩先吧
很巧的
剛入場就趕上整點的解說
不過長達一個小時的解說實在冗長了點
而且也沒有像小姐介紹的那樣可以拿起螃蟹玩
總之這個點唯一的亮點就是農場內的北關瀑布還蠻漂亮的
之後向服務員詢問了大溪漁港的路
才發現原來還有得向北五公里左右才到
原來是小姐報錯遠近了
看到地圖上到大溪漁港之前還有個濱海公園
我們決定先到濱海公園走走
出乎意料的
出了螃蟹博物館後只花了兩分鐘就到了濱海公園
由於整個公園都沿著東北角海岸
可以看到許多美麗的景致
在爬上公園中最高的觀景點後
我們可以遙遙望見龜山島喔!!
雖然風很涼
但因為兩個人都覺得太高了有點挫
所以拍個照後就趕緊爬下來了
看看時間也快四點了
由於要趕六點半的火車
我想從大溪回到礁溪應該得花個一個小時吧
所以最晚五點得從大溪回來
因為還不確定得騎多久
我們就趕緊上路朝大溪漁港出發了
我們決定在大溪吃過海產後再回去
讓人驚訝的是
騎了不到五分鐘就到大溪漁港了
好吧
雖然才四點
不過誰知道漁港有多大呢
慢慢看
選定好吃的點再下手吧
記得小姐是說賣魚貨那出來第一家好吃
所以我們就先往裡面走囉
人很多
而且賣很多像什麼鯊魚煙的也蠻好吃的
(看到試吃就拿起來吃囉 )
走走看看
後來決定買軟絲和魚土魠魚來吃
超便宜
ㄧ百塊的量好多
我們買了兩百塊準備火車上再吃
還附了好多蝦片跟地瓜片
另外在ㄧ家看起來不錯的店點了蟹肉羹和花枝煎
ㄧ份四十元
出乎意料的料多實在
真好吃
不過胃容量有限
沒法多嘗些美味
看看也快五點了
我們就心滿意足的迴礁溪囉
沒下雨真的差很多
才騎了半小時就回去了
大概心情也有差吧
路上還發現宜蘭人很愛在機車前面加裝擋風板
我們兩個還把這當奇觀來看了
真是各地風俗民情不同啊
大概海風真的很大吧
坐上火車
晚上回到家也已經十一點多了
洗個澡就睡囉
雖然發現租車行老闆多收我們錢有些不爽
但好在車子沒什麼問題
這兩天也很愉快
就放過他了
希望下次的旅行也能像這次ㄧ樣好玩
]]>計畫了一個月的礁溪溫泉SPA之旅終於在今天成行了,
ㄧ大早六點多就起床準備,
到了當地已經是中午時間了,
享受了ㄧ頓豐盛的大餐補充體力後,
就朝五峰旗瀑布出發了,
路程出乎意料的短,
從飯店出發大概只騎十分鐘就到達停車區,
停車區旁就可以見到一大片草坪, 和三三兩兩席地而坐的人群
看著清澈的河流和呼吸帶著淡淡草香的空氣,
整個人都輕鬆了起來,
走走停停
拍拍附近不錯的景色後
就繼續朝瀑布前進了
走了大概五六分鐘
就看到了ㄧ個水壩
當時還以為這就是傳說中景色優美的五峰旗瀑布
雖然心中有些失望
但還是拍了些照片
不過我們還是繼續朝上走
大概走不到兩三分鐘
就看到了ㄧ個小瀑布
這時才恍然大悟
原來之前看到的不是五峰旗瀑布啊!!
景色還挺不錯的
而且路上的人很少
當時還以為四點多太晚了
大家都趕著下山
所以在第三層瀑布也沒逗留多久
就趕緊朝第二層瀑布出發了
從飯店小姐口中得知第一層瀑布目前為了保護環境而封閉
所以到了第二層瀑布就該往回走了
想不到才走沒兩分鐘就到了第二層瀑布!!
不過比第三層壯觀很多
(頭髮有點高)
由於比預估時間早了許多
瀑布下又十分涼爽
所以就在瀑布下休息了ㄧ下
期間還發現一個類似人臉的岩石景觀
(看不出來的人是自己慧根不夠喔!!)
之後就回飯店囉
吃完晚餐後
我們趕快洗個澡
因為九點會有SPA按摩師到房間來位我們按摩
不知道是台灣按摩小姐吃比較好
還是身體真的太緊繃了
超痛的!!
不過想到身邊的她都沒說
就還是咬牙苦撐下去
好不容易ㄧ個小時SPA完
照理說我們應該好好休息一下
但是看到SPA水療池只剩下一個小時可以享用
就還是興沖沖的快速換好泳具朝水療池出發了
SPA完再去水療池沖沖穴道
還蠻舒服的
而且身上的精油也隨著水柱而沖去
既放鬆而且又可以偷懶不用洗澡
真是ㄧ兼二顧
ㄧ大早趕車
到現在整個放鬆下來也覺得累了
之後回到房間整理整理就睡了準備隔天補充好精力
繼續大玩特玩囉
]]>
這部片藉由一個家庭中的性格不同的成員, 卻得生活在同ㄧ個屋簷下, 由於彼此生活經驗和觀念的不同, 引發的種種衝突, 現實中遇到問題每個人都會有其不同的處理方法, 所以在一開始還蠻常看到他們ㄧ直試著想了解對方為什麼要這麼做, 還有埋怨最親密的家人卻不理解他的抱怨, 目前看了一部份, 無論是被傳統束缚住, 在丈夫死去後想得到自由的媽媽, 或是總是希望自由的活著, 卻發現自己生活毫無目標, 正慢慢發現自己生命中真正想做的事, 理性自律, 希望被家人肯定, 埋怨著自己對家庭的付出不被重視的二哥, 以及對自己感情仍然茫然, 可能在將來慢慢發現自己的么女, 這些有著自己迥異個性個性的家族成員們, 該如何在未來的片子裡慢慢找到家族的凝聚力, 並充實自己的心, 不再感到對這家庭或人生感到像一開始那樣有罪惡感, 虧欠感~看起來還蠻有戲劇張力的~很期待接下來的劇情喔!!
]]>女主角一開始堅持著一個理念, 一個人重要的不在於外表的包裝, 而是在於個人內在, 她雖然並沒有對時尚有任何排斥感, 但她也並不打算去多了解時尚文化, 她那時認為時尚只不過是用來包裝外表的知識, 但這方面對她而言並不重要, 她的理想是當個記者, 只要在這間雜誌社工作一年, 便可以憑著這份經歷進入她最想進入的報社->"紐約時報", 並寫出一些深入、具有意義的文章。因此她也總是穿著舒適並且價格合理的衣服上班, 雖然她十分努力工作, 但米蘭達總是不欣賞她的工作表現, 畢竟身為一個時尚界強人的秘書, 總是穿著一些便宜貨, 這讓米蘭達十分不滿意, 同事們也常常取笑她的穿著, 這情況一直到有一次因為無法達成米蘭達的無理要求而被責備她不夠用心在這份工作上, 女主角為了證明自己, 也開始請同事為她搭配一些服飾, 並開始注意時尚方面關於如何穿著打扮的技巧。
在這之後, 由於穿著得體, 米蘭達漸漸注意到這個女孩工作上優秀的表現, 並因為幾次突發狀況發生時, 靠著女主角的應變能力應付了過去, 令米蘭達對女主角印象深刻, 也因此決定巴黎時尚週將會帶著女主角去參加, 這段時間中, 女主角的生活重心漸漸轉移到工作上, 也比較沒時間和朋友及男友他們相處, 甚至在男朋友的生日聚會, 她也因為工作上突發狀況沒能參加, 導致兩人關係出現了裂痕, 而巴黎時尚週, 本是另一個助理期待已久的行程, 女主角也不希望去破壞她的夢想, 可是米蘭達卻威脅若是她拒絕去巴黎, 將來她若還是想繼續在其他出版社工作, 必定會阻撓她, 女主角無奈之下只好答應, 但其實在做了這決定之後, 她其實是有些竊喜的, 畢竟這是去巴黎, 每個女人都會夢想去巴黎走走, 感受一下這時尚, 古典兼具的美麗都市。
在出發之前, 男友和她發生了一些摩擦, 而男友也因此再也無法忍受女主角充滿工作卻忽略了他的日子, 並提出了分手, 傷心的女主角也決定在巴黎冷靜思考一下是否繼續維持這段感情, 在巴黎的緊湊行程之後, 米蘭達說出了即將離婚的訊息震撼了她, 更令她迷惑的是, 在這麼大的打擊下, 米蘭達仍然繼續漠視離婚這件事並且繼續和她討論明天工作要注意的項目, 之後和她十分要好的同事, 和她分享了因為米蘭達的介紹即將到另一個品牌做負責人的消息, 在慶祝的同時, 女主角因為可憐和感激米蘭達能給他同事這機會的感情下, 覺得米蘭達這人其實也挺不錯的, 因此聽到了米蘭達即將被雜誌社趕下總編輯的消息之後, 她急忙的想通知米蘭達, 卻沒想到米蘭達早已得知這消息, 並且做好了處置…
米蘭達將原本介紹給他同事的職缺介紹給即將取代她的人, 犧牲了女主角同事的結果是她保住了現在的地位, 看到了同事失望卻又故作堅強的表現, 女主角心裡難過極了, 在趕往下個地點的車上, 米蘭達表達了對女主角這麼為她著想的好感, 並表示她覺得女主角和她是同一類人, 將來會提拔她, 女主角自認為她不是會做這種犧牲別人以成全自己的人, 卻反被米蘭達點破, 女主角能來巴黎, 不也是犧牲了另一個助理的夢想, 女主角才驚覺, 不知不覺中, 看似無可奈何的決定, 已經使她和從前那純真的自己漸行漸遠, 為了在工作上力求表現, 失去了她從前堅持的原則, 慢慢的, 一步一步讓她失去了從前所珍惜的美好, 她不想變的和米蘭達一樣, 失去家庭, 朋友, 所以下車之後, 她一個人遠離了原本的會場, 並將手機丟入噴水池中(亂丟東西是不好的行為…那電池泡水可能會造成污染…XD).
劇情的結尾就是她和男友復合, 並找到她真心嚮往的工作。 這部片除了劇情之外, 透過那些配角們可以觀察到時尚圈緊湊的步調, 以及憑藉穿著評論一個人表現的風氣, 惡魔這個詞, 我覺得是代表了引誘人為了追求物質所做出一些行為, 這些行為一開始可能並不嚴重, 像是有惡魔在誘惑著, 導致後來所做的往往違背了原本善良的心。 一開始女主角為了工作表現, 做出的許多讓步看起來無可厚非, 但漸漸的, 可能有些決定會傷害到其他人, 那是做還是不做呢? 看起來無奈, 看似只有一條路可選擇的同時, 是不是有勇氣選擇另一條更為坎坷的路以堅持自己的原則? 有著吸引人目光的華麗服飾和絕佳的故事題材蘊含了這些引人深思的話題, 也正是這部電影成功的地方。
]]>