Google Chrome 41 的加速改善

在「New JavaScript techniques for rapid page loads」這篇提到了 Google Chrome 41 對網頁速度的改善,尤其是 JavaScript 很多的情況下:

另外 Google Chrome 42 則會再透過 cache 加速 (目前的穩定版是 41):

Chrome 42 introduces an advanced technique of storing a local copy of the compiled code, so that when the user returns to the page the downloading, parsing, and compiling steps can all be skipped. Across all page loads, this allows Chrome to avoid about 40% of compile time and saves precious battery on mobile devices.

jQuery 這類經常被重複載入的程式碼將會被 compile + cache,大幅加快頁面呈現的速度。

從另外一方面觀察,已經進展到使用 cache 機制加速,看起來其他的都做的差不多了?

把 MySQL MyISAM 換到 Galera Cluster 的 InnoDB 上...

在「Switching from MySQL/MyISAM to Galera Cluster」這邊看到一個 script 可以檢查 MySQL MyISAM 換到 InnoDB,而且預定要換成 Galera Cluster 時的問題。

常見的問題都有檢查到,還蠻有用的:

  • 針對沒有 Primary Key 的表格提出警告,讓管理者規劃補上 Primary Key。
  • 針對 MyISAM 換成 InnoDB 後造成 Primary Key 太長的表格提出警告,讓管理者想辦法修改。

Galera Cluster 無法處理沒有 Primary Key 表格的刪除動作:(可以參考「MariaDB Galera Cluster - Known Limitations」這邊的說明)

DELETE operation is unsupported on tables without primary key. Also rows in tables without primary key may appear in different order on different nodes. Don't use tables without primary key.

不過每個表格都要有 Primary Key 並不難,因為如果有正規化時通常都會達到目標。就算不去用他也還是可以設計一個 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT 放著。(過大的時候再換成 BIGINT UNSIGNED)

把 Google Plus 的數字 icon 藏起來...

那個紅色的數字 icon 還蠻妨礙工作的,到 userscripts.org 上翻一翻,果然有人有寫過了 (雖然是沒幾天前):「Go Away! Google Plus」。

PS:隨便丟字進去測試的時候,發現 "test" 第五名是 tw.yahoo.com,這是怎麼了...?

gitolite 的 hook...

弄了整個週末的 gitolite,總算是把 hook 搞定。

簡單的說,修改完 ~/.gitolite/hooks/common/ 裡的 hook script 後,需要下 gl-setup 指令,這個指令會把現在所有的 git repository 內的 hook script 再 symbolic link 一次。

另外,gitolite 的環境變數可能會影響 git 本身執行 (我是在 git pull -v 更新某個目錄下的 git repository 時失敗),這時可以用 /usr/bin/env -i /usr/local/bin/git 確保 git 執行時不會被環境變數影響...

gitolite 看起來是個好東西,不過光是靠官方的文件要搞定頗累... (週末都在 Stack Overflow 上度過)

Google Chrome 的 user script 與 Greasemonkey 的不同...

實在是睡不著,來整理一些資料...

不知道「User Scripts - The Chromium Projects」這份是否 outdated 了,但至少發現在 Google Chrome 裡面推薦用 @match 設定 url,不過原先的 @include 還是可以用:

Support for Greasemonkey-style @include patterns is also implemented for compatibility, but @match is preferred.

在 Greasemonkey 的「Metadata Block - GreaseSpot」說明中則是用 @include 設定,直到 0.9.8 (2011/08/01 release) 以及之後的版本才同時支援 @include@match

之後改寫 script 的時候再更新好了...

Twitter 轉 Plurk 的程式...

程式在這裡,用 Perl 寫的,讀 Twitter 的 RSS feed 然後丟上 Plurk

另外裡面用到的 SQLite schema 是:

CREATE TABLE entry (id INTEGER PRIMARY KEY AUTOINCREMENT, guid VARCHAR, updated BOOLEAN);

其中 updated 欄位是沒用到的,但我暫時懶的改了...

btw,寫這個程式讓我對 Plurk 的資安感覺到絕望 XD