Firefox 的 Back-Forward Cache

的 Back-Forward Cache 吃記憶體吃的很兇:這也是為什麼 1.5 跑起來比 1.0 快,但是肥多了的原因之一。

上看到了 討論前陣子 很嚴重的 memory leak,以及其他跟記憶體有關的問題:About the Firefox "memory leak"

在文章裡提到了 Back-Forward Cache 的頁面數目,也就是 about:config 裡的 browser.sessionhistory.max_total_viewers 這個變數。它的預設值是 -1,表示自動判斷。

自動判斷 (-1) 的時候,記憶體數量在 32MB 以下的會自動關掉這個功能 (也就是跟設成 0 一樣),在 64MB 以下 (但是在 32MB 以上) 是 1,在 128MB 是 2,256MB 是 3,512MB 是 5,1GB 以上的是 8。由於這個數字是指【每個 Tab 所存的數量】 (Update:原來那篇文章的作者確認是總量而不是每個 Tab 的數量)【總共要存的數量】,當你 Tab 愈多,記憶體的用量就...

所以在下面的 comment 就有人抱怨了:

Maybe 8 is not the best upper limit?

Do users *really* need to go back 8 times? People usually does back a couple of times but 8....

他說得對,你會天天沒事去 Back 八次嗎?這種事情偶而才會來一次吧?於是我把我的 改成 1:

建議記憶體夠多的人用 2 或 3 就好了,用 8 實在太 (*逼*) 了...

當然,下面已經有人提出建議,用一些算法 (像是 Current Tab 比較多,其他的比較少) 以降低用量之類的,不過那是以後才會看到的事情... 現在這種先這樣用吧。

Mac 下遇到的問題...

拿到 後不斷在熟悉 Mac 上的環境,不過還是有一些問題沒解決:

鍵盤的 Home 與 End 在一般的應用程式裡沒有辦法使用,我本來在猜是不是 Keyboard/Mouse 的地方設定錯了,但是...

Update:在 裡可以用 Cmd-Left 或 Cmd-Right 跳到頭或尾,thanks :)

沒錯,Keyboard/Mouse 設定出不來 :p

再來是講 Mac 上 的問題,我用的是 1.5.0.1 官方提供的繁體中文版。首先,我遇到掉字的問題:

所幸在目前只有選單會掉,所以不會造成太大的問題... 我知道有所謂的【換 Theme 大密技】,或是【把 Extension 移光光】之類的方法,不過... 1) 我不想換 Theme,2) 用 就是要用他的 Extension 啊... 而且據說這個問題在好久前就有,我也不知道為什麼沒改好 XD

再來是 + 的問題:在編輯文章時我常常會用 Hotkey (我不用 WYSIWYG 界面編輯器),在 Windows 上我可以用 Alt-A 設定 Hyperlink (其實就是加上 <a href=""></a> 而已),Alt-B 設定粗體 (<b></b>),以及其他類似的 Hotkey。但在 Mac 上似乎沒辦法使用類似的功能:好像都被神祕程式攔走了。

Update 告訴我改用 Ctrl 就可以了,試了一下果然是這樣沒錯 :D

然後再來講 這個 Terminal Client,由於我跟 一樣,需要使用 CLI 才能活 (參考 iTerm 這篇),所以我也跑去裝了 0.8.1。

裝完以後把顏色什麼的設一設,字形 (黑體) 編碼 (我用 Big5 HK。我很久前換過 UTF-8 環境,不過發現換 UTF-8 環境最大的好處只有在收 Spam 的時候:你可以正確的讀出對岸的 Spam 內容,以及日本、俄國的。所以我就又換回 Big5 了),設定完以後連上去,也跟 遇到同樣的問題: 會幫你 resize,不過這個還好,我跟 也用同樣的解法...。

另外, 的邊框是錯的,這個畫面在 Windows 上的 是正確的 (而且線都接起來,很漂亮):

另外一張是 Ptt2 BBS,有新文章未讀的看板沒有對齊,應該是把勾勾當成 1 Byte 處理的原因:

除此之外, 還有一個超奇怪的問題:你裝完 ,第一次設定過字形、編碼、blah blah 後,存起來。下次要改的時候寫不進去 XD

我的解法是在要改設定的時候到 ~/Library/Preferences/ 下把 iTerm.plist 砍掉,於是砍掉就可以設定了。(當然,砍一次只能設定一次,不然我就不會跑出來哀哀叫了 :D)

零零總總的,目前大概就遇到這些問題吧,我只是要 可以用、某個 Terminal 可以用 (讓我能夠用 ssh 連出去正確的看到東西),這樣就好了 :p

也許晚點來裝交大授權的 Office 2004,看看會不會有奇怪的問題...

Yahoo! UI & Design Patterns

那邊看到 把一堆 Javascript code 整理出來,以 放出,可以拿來參考用:

Update 寫了一篇 Yahoo! UI JavaScript treats 講的比較詳細,而且文後有一個小範例 (Animation 的範例),告訴你很好用 :p

Firefox 2.0 Alpha 1

看到的,Firefox 2.0 第一個「比較正式的測試版」將在星期五釋出:Firefox 2.0 Alpha 1 Comes Out Friday!

上, 這頁是這樣寫:

Next scheduled release date: February 10, 2006 (Alpha 1)

所以台灣時間星期六 (2006/2/11) 中午之後應該就可以在各 FTP site 看到 Alpha 1。

Firefox 2.0 幾個重大的功能 (對我來說):

  • Session saver 變成內建功能 (priority 2)
  • Anti-phishing (priority 3)

剛好都是 TBD 負責的項目...

另外附上目前在 排定的時程表,大約是放暑假的時候正式推出 Firefox 2.0:

  • 2006/02/10 : Alpha 1
  • 2006/03/10 : Alpha 2 (feature complete)
  • 2006/04/07 : Beta 1 (string complete, feature frozen)
  • 2006/05/05 : Beta 2 (string frozen)
  • 2006/05/26 : Release Candidate 1
  • 2006/06/07 : Release Candidate 2
  • 2006/06/19 : Release Candidate 3
  • 2006/06/27 : Firefox 2

Firefox 1.5 的兩個 Memory Leak 問題

報導了 Firefox 1.5.0.1 修正的這兩個 Memory Leak 問題的詳細內容,另外也討論了其他的 Memory Leak 的問題:Firefox Memory Leak Progress

  • - Leak when selecting.
  • - Leaks due to global scope polluter being removed from not enough (?) prototype chains.

文章中提到了 Leak-Gauge 可以讓進階 (但還不夠進階直接拿 Debugger 殺蟲) 的使用者觀察 Memory-Leak 的情況,目前已經有 19 個人利用 Leak-Gauge 回報了 30 個 Memory Leak Bug... 作者在 comment 裡面似乎很希望 1.5.0.2 能夠把 Leak-Gauge 包進去?

也許該換 trunk 測試看看了...

Update:trunk 並不穩定,我早上換掉以後已經爛掉兩次了...

Evil Google Logo

看到有人寫了一個 Script,把 Google Logo 換成 Evil Google:Script to replace Google logo with Evil Google logo

不過我裝了以後連上 (不是 ),並沒有把 Logo 換掉:

不過,如果把語系改成英文版:

在修改的頁面也看的到:

裝起來放著好了 :p

Update:作者已經改版了,現在都能夠正常運作了 XD

Microsoft 提前公佈 WMF 安全性更新

剛剛收到 寄來的通知,也看到 上報導了:Microsoft to Patch WMF Exploit Early

應該就可以看到更新了。

無名小站的 XSS 安全漏洞

前言

Year.new(2006) 這篇幹剿無名小站的 XSS 安全漏洞,沒有講的很明白,加上我這陣子沒在實驗室遇到 (是的,我跟他是同一個指導教授),所以一直沒有跟他說這個在國外已經「開發」好一陣子的安全漏洞。

Javascript 是在使用者端 (Browser) 跑的程式,理論上來說,讓使用者輸入自己的 Javascript 並不會有什麼問題,但實際上自從 XMLHttpRequest() 被大量應用後 (一開始發展 所使用的核心技術之一),有些人就發現 XMLHttpRequest() 是可以拿來當作攻擊的工具。

舉例說明

舉個例子說明會比較清楚。以目前最大的 為例,「修改個人資料」的頁面是在 http://www.wretch.cc/user/modify.php?admin_user=1 這個位置,會以 POST 的方式送給 http://upload.wretch.cc/user/do_modify.php,那麼我就可以在文章裡面嵌入一段 Javascript:(修改自 Use the XMLHttpRequest Object to Post Data)

var objHTTP, strResult;
objHTTP = new ActiveXObject('Microsoft.XMLHTTP');
objHTTP.Open('POST',
  "http://upload.wretch.cc/user/do_modify.php",false);
objHTTP.setRequestHeader('Content-Type',
  'application/x-www-form-urlencoded');
objHTTP.send("依照 form 的內容填入一些東西");
strResult=objHTTP.responseText;

上面的程式碼是 IE Only 的程式碼,但是要弄 IE & 並存的程式碼其實只是加個 if 判斷句後改用 new XMLHttpRequest 而已...

原因

問題來了:為什麼這樣做有效?那我隨便用 丟個東西進去 server 不就炸了?

答案是:使用 XMLHttpRequest() 連線時,會送出使用者的 Cookie,於是 server 端會以這個 Cookie 的擁有人去做 Javascript 要做的事情!接下來就 !@#$%^...

再一個例子

你會說我只是隨便講講?其實這件事情在兩個月前已經在 MySpace.com 上發生過了,而且還寫成 worm 自動感染:Cross-Site Scripting Worm Floods MySpace ()。

Google 應對的方法

回過頭來提 Google 對 XSS 的應對 這篇所提到的例子。

假設有個人在他自己的網站上 (假設是 www.example.com) 放個 Javascript,用 XMLHttpRequest() 連 mail.google.com (Gmail) 的某些 function,幫使用者刪除所有的 mail。在平常的時候,會因為 example.com != google.com 而無法產生 XMLHttpRequest Object,但是在「頁庫存檔」的時候就會在同一個 Domain 下!於是 必須避免這種情況:硬把 www.google.com 換成 IP address,這樣就沒問題了。

你可以測試 http://www.google.com/search?q=cache:http://www.google.com/ 這個頁面,會發現 會故意換到 IP address。

的另外一個服務是 。你會發現 可以讓你隨便修改 Template 填入各種 code,於是你就可以對 *.blogspot.com 下面的 site 進行 XSS 攻擊:但實際上 的 Control panel 放在 blogger.com,於是根本不怕你利用 Template 惡搞。

結語

最後,Javascript 是邪惡的,平常逛網站請不要打開 Javascript:請安裝 以避免被 ox 掉 :p