2009年2月18日 星期三

一個OS,兩個不同Profile/版本的FF

[24/2 Update: 潛在風險]
這招對Developer超有用: 在不同的windows用不同的profile/不同版本的FF
可以一個Profile裝Firebug+Web Developer等大食AddOn,另一個裝NoScript、AdBlock Plus、GM等強化AddOn (*不是說笑,以上AddOn在同一個Profile全開會令FF穩定性大降...)
又可以一個Profile開GMail A,另一個Account開GMail B,大搞Multiple login (cookie),一個OS用FF開兩個Google Account 也可以一個OS上跑不同版本的FF
聽上去不錯是吧,那麼要怎樣做呢?
一句話: firefox command 加上command line option [全option列表 (mozilla.org)]
 -P -no-remote
於是整個command變成
firefox -P -no-remote
Windows是firefox.exe -P -no-remote,Mac是/Applications/Firefox.app/Contents/MacOS/firefox -P -no-remote

2009年2月17日 星期二

FF (Firefox) restart loop的解決方法

因為運氣實在太背,終於研究出FF會不斷restart (FF restart loop)原因...
[21/2 Update: 更新X11(linux/unix)的Memory Corruption Solution、plugin問題]
  1. sqlite lock corrupted
    FF3開始FF會用sqlite資料庫去貯存history、cookie、anti-phishing filter等user data,不過要是FF中途死掉資料庫可能會被鎖死(lock corrupted),導致FF不斷restart...
    solution: 先到profile[不同OS下profile的location]移走sqlite檔再重開FF
    如果需要sqlite的資料可以用sqlite manager這個Addon開先前移走了的sqlite檔再dump出來
    *bookmark和places.sqlite有關,但殺了這個sqlite是不會影響到bookmark的,不過要是不放心可以先backup bookmark
  2. Memory corruption
    這個在Linux比較明顯,因為Linux有為active program做buffering/caching,要是FF中途死掉可能會讓cache corrupted,然後怒爆segmentation fault
    solution:
    Linux
    1. 在terminal下執行
      sync; echo 3 > /proc/sys/vm/drop_caches [解說]
    2. 在terminal下執行
      firefox --sync [Unix Option列表]
    Windows找個ram cleaner就好
    (Mac暫時沒遇到,而且和linux系統不一樣...)
    如果做了還是不斷restart...reboot OS = ="
  3. Plugin 暴走:
    有可能是某個網頁造成的(embed語法錯誤),所以Restart FF時Session只能開新的,不能選Restore Previous Session
    但如果去個Google也會Restart可能是Plugin有相容性問題
    Linux下的FF Flash Plugin、Windows的FF WMV Plugin也是暴走高危族,如果session開新的、ram也清了都是不行試試run一次safe mode看看問題有沒有改善
    solution: 啟動FF Safe mode一次,如果問題持續事再啟動FF Safe mode,選Disable All Plugin and Addon(停用所有附加元件),然後逐個Enable(啟用) [Safe Mode的運行方法-除Windows外全部都要terminal

2009年2月12日 星期四

Web Developer ToolBox, Vol 2

網頁開發工具箱,Vol 2 參考文件(Reference)上篇
[12/2 Update: 加入When can I use這個超強相容性查詢器]

2009年2月6日 星期五

JS加速: Speed up your JavaScript

Nicholas C. Zakas (NCZ)幾天前出完整個Javascript加速系列:
Speed up your JavaScript, Part 1
Speed up your JavaScript, Part 2
Speed up your JavaScript, Part 3
Speed up your JavaScript, Part 4
Part 1是loop (array looping優化),Part 2是function (anonymous function加速法及Memoization),Part 3是Memoization,Part 4是DOM(DOM DocumentFragments)<br /> (*部分方法是很吃Ram的,注意)
[More]
關於loop另外有一篇深入探討不同的for loop寫法效能 [What's the Fastest Way to Code a Loop in JavaScript?]
關於DOM DocumentFragments,John Resig有很詳細的文章探討 [DOM DocumentFragments]