加快 Ubuntu 上 Firefox 的速度...

新版的 Firefox 已經支援 Multi-processes 架構 (Electrolysis),但 Ubuntu 上會因為預設值的關係而被關閉,這篇文章就是講原因以及怎麼打開:「Enabling This Makes Firefox More Responsive On Ubuntu」。

由於大家都會裝一堆套件,看起來得用 Force Enable 這邊提到的方法打開,也就是手動在 about:config 內加入 browser.tabs.remote.force-enable,並設為 true

Firefox 的轉換還有很長一段時間要走...

下個版本 Firefox 的 Multi-Process 將預設全面開啟

Mozilla 說明了 Multi-Process 最近的一些進度:「Update on Multi-Process Firefox」。

就目前測試的資料看起來,速度大幅提昇:

Those users have been enjoying the 400% increase in responsiveness and a 700% improvement when web pages are loading.

現在的 Firefox 是 50 版,目前的情況是當 extension 標成 multi-process compatible 就會啟用:

With Firefox 49 we deployed multi-process Firefox to users with a select set of well tested extensions. Our measurements and user feedback were all positive and so with Firefox 50 we deployed multi-process Firefox to users with a broader set of extensions, those whose authors have marked them as multi-process compatible.

下一個版本 (51) 則是會全面開啟,除非有 extension 標成 multi-process incompatible:

Beyond Firefox 50, we have more work to do to enable multi-process Firefox for users with as yet unsupported extensions. In Firefox 51, if all testing goes according to plan, we’ll be enabling multi-process Firefox for users with extensions that are not explicitly marked as incompatible with multi-process Firefox.

總算要把整個架構換過去了...

Google Chrome 停用平滑捲動

因為把 JavaScript 開回來了,所以有這個困擾... :(

Google Chrome 的平滑捲動可以透過 chrome://flags 裡面的設定關閉 (OS X 上則是透過系統設定關閉),但就是有不少網站會很雞婆,用 JavaScript 模擬平滑捲動,所以就花了時間把 extension 寫出來:「Stop Smooth Scrolling」。

由於大多數平滑捲動的作法都是透過對 document 或是 window 上掛上與平滑捲動相關事件做到的,所以我是透過 addEventListener()useCapture flags,然後再用 preventDefault() 擋下後續的處理。

這樣做會有一些問題,其中比較明顯的是地圖類功能的滾輪會失效,這個部分我先放進預設的白名單了,如果有其他的問題,除了可以自己加以外,也可以開 ticket 讓我加進預設清單 :o

實際運作起來大概是這樣:

Anyway,寫這個還蠻有趣的,玩了不少新東西:

用乾淨的環境跑 Composer

Composer 包太多 module 進去跑會變慢不少 (像是把 xdebug 包進去時),所以自己寫了個小 script 只包必要的東西進去:

#!/bin/sh
exec php \
    -n \
    -d 'extension=curl.so' \
    -d 'extension=filter.so' \
    -d 'extension=hash.so' \
    -d 'extension=iconv.so' \
    -d 'extension=json.so' \
    -d 'extension=openssl.so' \
    -d 'extension=phar.so' \
    -d 'extension=posix.so' \
    -d 'zend_extension=opcache.so' \
    "$(dirname $0)/composer.phar" $*

用 -n 忽略掉 php.ini 裡面的東西 (這包括了 extension 設定) 後再開始自己加 extension 設定。

其中 opcache.so 是加速用的,posix.so 是因為想要有輸出的色彩,這兩個 so 檔不加進去還是可以動,而其他的都是必要的 extension。

改用 Simple JavaScript Toggle 切換 Google Chrome 的 JavaScript

在前一篇「用 JavaScript Switcher 快速啟用 JavaScript...」被小光光 kcwu 指出來我測錯了,JavaScript Switcher 在重開瀏覽器後並不會將設定清掉 (會保留到下次)。

我再找了 Web Store 上了好幾個不同的 extension 測了好幾次,這次在「Simple JavaScript Toggle」這個套件測了好幾次,確認有清掉。另外我也確認原始碼的部份有這段:

// Clear previous contentSettings made by the extension
function init() {
    patternStates = {};
    chrome.contentSettings['javascript'].clear({
        'scope': 'regular'
    });
}

這樣應該是 okay 了,再找機會請小光光吃飯 Q_Q

在網頁行動版的 Twitter 上增加快速鍵

現在 Twitter 的網頁版愈做愈慢,於是有不少人在桌機上是用提供給行動裝置的版本瀏覽 (也就是 mobile.twitter.com 這個站),但這個站的功能其實頗陽春。

sindresorhus/refined-twitter 這個專案則在行動版本上面增加了許多快速鍵,在 Google Chrome 上可以透過 Store 安裝:「Refined Twitter」。

之前沒用過行動版的網站,這速度快好多啊...

用瀏覽器看 Netflix 加速播放

前陣子開始用 Netflix 看流言終結者,但以往看動畫已經習慣至少兩倍速了,舊址好找看看電腦上有沒有方案可以加速。

還頗幸運的是,早就有人把方法找出來了:「Netflix streaming playback speed and hidden menus」。

Netflix 在 Google Chrome 上面用 HTML5 player,而就有 extension 可以對 HTML5 player 加速:「Video Speed Controller」。

這樣消化影片的速度就快多了 :p

關閉 Google Chrome 49 的平滑捲動

在這次 Google Chrome 的「Stable Channel Update」裡引入了平滑捲動,在 comment 的地方有人提出解法,可以在 chrome://flags 裡找 disable-smooth-scrolling 關掉後重開 Google Chrome:

You can disable it here: chrome://flags/#disable-smooth-scrolling

另外一個 bug 是跑出一堆 extension icon 要重新蔵:

Hiding extensions needs to be made available again.

另外這次的安全更新有很多是透過「AddressSanitizer, ThreadSanitizer, MemorySanitizer」與「Control Flow Integrity」這兩個專案所找出來的。

Decentraleyes:避免從 Public CDN 取得檔案

先前看到的,一個 Firefox 的 Extension,在本地端存了一份常用的 library,當瀏覽器想要去 CDN 取得的時候改從本地端的資料提供:「Decentraleyes」。

Protects you against tracking through "free", centralized, content delivery. It prevents a lot of requests from reaching networks like Google Hosted Libraries, and serves local files to keep sites from breaking. Complements regular content blockers.

另外一個說明是:

A Firefox add-on that emulates Content Delivery Networks locally by intercepting requests, finding the required resource and injecting it into the environment. This all happens instantaneously, automatically, and no prior configuration is required.

原始程式碼在 GitHub 上:「Decentraleyes - Local emulation of Content Delivery Networks.」。

Google Chrome 上看連線是使用 IPv4 或是 IPv6

想說應該會有 extension 可以看連線是 IPv4 或是 IPv6,找了一下果然有:「IPvFoo」。

右上角會出現目前連線的屬性。透過 Google Chrome 提供的 webRequest 取得資訊後更新上去的。

目前比較常見的站台應該是 Facebook (包括 Instagram)、GoogleYahoo,也剛剛好都是 HTTPS Policy 的先驅... 不過可以看出來不是所有的資源都走 IPv6,還是有不少走 IPv4 的 domain。

Twitter 的主網站沒有 IPv6,但幾個自己的子網域有?看起來還在逐步測試開通...

HiNet 的 IPv6 服務已經可以透過網路櫃台直接線上申請 (需要幾個工作天開通),我用 Ubuntu 可以 PPPoE 取得...