FirefoxのGoogle™ Translatorが特定のサイトで動かない

f:id:nextugi:20151215221906p:plain:w400

Google™ Translator っていう翻訳アドオンを使ってるんだけどさ、これが4chanで動かない。翻訳ボタンは出てくるんだけど、クリックしても結果が出てこない。

どうなっているのか調べたら4chanCSSとバッティングしてたわ。Google Translatorは以下の様な要素をページに挿入して結果を表示してるんだけど、

<iframe scrolling="no" class="igtranslator-iframe" src="about:blank" frameborder="0"></iframe>

4chanCSS https://s.4cdn.org/css/catalog_yotsuba_b_new.639.css に以下のような記述があるからiframeが見えなくなっちゃう。

iframe[src="about:blank"] {
    display: none;
}

なんという偶然。

回避策

原因がわかれば対処法は簡単である。
userContent.css に、こう書いておけばいい。

@-moz-document domain(boards.4chan.org)
{
  div.igtranslator-main-div iframe.igtranslator-iframe {
    display: block !important;
  }
}

Windows10 TH2 の更新に失敗する

TH2の更新に成功したら、なぜかイベントログが全部吹き飛んでしまい、今となっては詳細の記述ができないのだが……

Windows Update関連のイベントで 0x8024200D というエラーコードが1回、かつWindowsを再起動する度にソース Service Control Manager で 7031 が発生して、TH2のアップデートに失敗するということがあった。

これはシステムの保護を無効にしてから再起動したらうまくいくったのだが、なんとなくもうこのPCはハードウェアが壊れてかけているような気がしないでもない。

それにしても

Windows TH2のアップデートは、毎月のセキュリティパッチのごとく気軽に再起動を要求してくるが、いざ再起動すると1時間弱もPCが使えなくなってしまうというのはかなり不親切である。まあSSDとか積んであれば早く終わるんだろうけど、やはり古いPCはWindows10にアップグレードしない方がいいかもね。

ヘルプファイルがフリーズするんだが

Autohotkeyのヘルプファイル(AutoHotkey.chm)でキーワード検索しようとすると
hh.exeがCPUコアを100%使いきって「応答なし」になる現象が発生。

f:id:nextugi:20151015233402p:plain

これ前から気になっていて、どうしても解決できなかったんだけど、今日このフォルダーを削除すると、ヘルプファイルが正常に動くようになることに気がついた。

%LOCALAPPDATA%\VirtualStore\ProgramData\Microsoft\HTML Help

フォルダーの中には何も入ってない。なんなこりゃ?

これファイルの仮想化か、HTMLヘルプのバグなんじゃないかなあ。誰か再現できるなら報告しておいてくれ。

Googleマップが遅い

GoogleIPv6が復活したと思ったら、何かGoogleが凄く遅い。特に細かいデータをやり取りする(と思われる)Googleマップが遅い。

ひょっとしてプロバイダーのIPv6が遅いのかなと思い、IIJmio IPv6スピードテスト(β) でテストしてみるが、遅くない。むしろIPv4よりはいくらか高速である。別のIPv6対応サイト(例えばMozilla Japanとか)では特に何も感じないので、ISPは悪くないと思われる。

次にpingを打ってみたんだけど、ここで異常を発見する。GoogleIPv6サーバーの反応速度が凄く遅い。

ping -4 www.google.co.jp
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 5ms、最大 = 6ms、平均 = 5ms
ping -6 www.google.co.jp
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 152ms、最大 = 153ms、平均 = 152ms

IPひろばで調べるとIPv6サーバーの場所はオーストラリアとか出てくる。CDNがぶっ壊れてないか、これ?

追記 (2015年10月04日)

今日はやけに快適だなと思ったら、またIPv6が引けなくなってた。digでAAAAを引くと、SOAレコードが返ってくるだけ。なんかゴタゴタしてんな。

「4桁ごとに区切ると読みやすいよ」「は?」

大きな数字は4桁ごとに区切ると読みやすくなるよって言っても、すぐには理解してくれないことがよくあるので表で説明。


一般的に数字は3桁ごとにコンマを振るようになっているが、これは欧米にとって都合のいいやり方。*1

表記(3桁毎にコンマ) 読み方(英語)
1,000 1 thousand
1,000,000 1 million
1,000,000,000 1 billion
1,000,000,000,000 1 trillion

例: $ 12,345,678 → 12 million 345 thousand 678 dollars


日本を含め東アジアでは4桁ごとに区切ると都合がいい。

表記(4桁毎にスペース) 読み方(日本語)
1 0000 1万
1 0000 0000 1億
1 0000 0000 0000 1兆
1 0000 0000 0000 0000 1京

例:¥ 12 3456 7890 → 12億3456万7890円

区切るのに使う記号は何でもいい。従来通りのコンマでもいいし、スアポストロフィでもハイフンでも何でもいい。


さらに、インドでは3桁でも4桁でもない別の方式が使われているらしい。

インドの命数法 - Wikipedia

ちなみに、コンピュータの方は既に世界の様々な事情に合わせて桁区切りできるようになっている。例えば、以下のコードを実行してみると、最初3桁、次からは2桁というインドの変なやり方で区切れるようになっていることがわかる。

#include <string>

void test(void)
{
    std::wstring output;
    wchar_t buf[256];
    wchar_t *sample = L"123456790";

    output += L"日本語:";

    if (! GetCurrencyFormat(0x0411, LOCALE_NOUSEROVERRIDE, sample, NULL, buf, 256)) {
        return;
    }

    output += buf;
    output += L"\n";
    output += L"ヒンディー語:";

    if (! GetCurrencyFormat(0x0439, LOCALE_NOUSEROVERRIDE, sample, NULL, buf, 256)) {
        return;
    }

    output += buf;

    MessageBox(NULL, output.c_str(), L"", MB_OK);
}

f:id:nextugi:20150731234041p:plain

そういえば、最近インドの実情に合わせた電卓を発売したらバカ売れしたとかいう話があったか。
toyokeizai.net

ちにみに、何で日本ではこうなっていないのか調べてみたのだが、明治時代から4桁に変更しようという話は一応ある模様。
ameblo.jp

他にも明治時代に決まってしまった不合理なルールと言えば、モールス符号があるか。オリジナルのモールス符号は、英文を表現したときに、電文の長さが短くなるよう可変長のコードが採用されている。しかし、和文モールスでは平仮名の頻度に関係なく割り当てられていているので短くならないという。これなら、初めから固定長にした方が聞き取りやすかっただろうに。6ビットあれば「平仮名+記号類+数字」がちょうど入りそうだし。*2

このように、表面だけ真似して本質な部分が置き去りになっている状態を「カーゴカルト」と呼ぶので覚えておこう。

*1:コンマではなくピリオドやアポストロフィで区切る地域もある。いずれにせよ3桁ごとに区切るのは同じ。

*2:よく考えると、当時はそもそもビットという概念自体がなかったね。よく可変長にするとか思いついたものだ。

Firefoxは訪問回数を記録している

places.sqliteに入ってるmoz_historyvisitsというテーブルを見ればわかると思うけど、Firefoxはユーザーがいつどこのサイトに訪問したのか記録している。

f:id:nextugi:20150730182730p:plain

こういうデータを解析すると面白いことがわかりそうなのだが、残念ながら小生は統計にもSQLにも詳しくないので、あまり複雑なことができない。とりあえず「よくアクセスするページのランキング」を作ってみた。

SQLを勉強中で、なおかつFirefoxユーザーであるなら、実際のデータを見てみると色々参考になるかも。

-- よくアクセスするページのタイトルとURLを訪問回数順に100件表示
SELECT
  h.visit_count, p.title, p.url
FROM
  moz_places AS p
INNER JOIN
  (
     SELECT
       place_id, count(place_id) AS visit_count
     FROM
       moz_historyvisits
     GROUP BY
       place_id
     ORDER BY
       count(place_id) DESC
     LIMIT
       100
  ) AS h
ON
  p.id = h.place_id
ORDER BY
  h.visit_count DESC;

SQLを実行するツールだけど、いくつか候補がある。FirefoxのアドオンであるSQLite Managerか、単体で動くDB Browser for SQLiteが単純でいいと思う。もっと豪華なやつはたくさんあるけど、さしあたりはこの2つで間に合う。

ちなみに上のコードだけど、SELECTを1個にすると微妙に重いので、サブクエリーを使っている。いや、最適化とか全然知らないんだけどさ、たぶんmoz_historyvisitsが大きすぎるので早いうちに集約しておかないと連結処理に時間がかかるんだと思う。

fgtsの意味

たぶんfgt複数形。

じゃあfgtは何かというと、たぶんfaggotの省略形。

faggotは何かというと同性愛者のこと。でも、相手が同性愛者でなくても使われているような気がする。経験上、厨房に近い用語ではないかと。厨房は相手が中学生じゃなくても使うでしょ。