2014年3月27日木曜日

Google ドキュメントで頻繁に「再接続」されたり固まる場合、Adblock, Disconnect を無効にする

1. Google Drive で固まる

 Google ドキュメントを編集していたら、接続が頻繁に切れた。メニューバーの辺りに

再接続しています…

SnapCrab_No-0888

という通知が何度も表示される。

 

2. Adblock を無効にする

これに対して、ドメイン docs.google.com で Adblock Plus を無効にしたら、再接続が表示されなくなった。

  • Adblock Plus のアイコンをクリック > docs.google.com で無効

を選択する。

SnapCrab_No-0889

 

3. Disconnect を無効にする

追記(2015/1/11): Disconnect をインストールしている場合、whitelist の設定を行う。それでも問題があるようなら、このアドオンを無効化する

 

関連記事

ウェブページの表示や挙動がおかしい場合、真っ先に Adblock Plus を疑うのが良い。

2014年3月24日月曜日

Windows Live Writer のプラグイン Dynamic Template plug-in で「アンカー」「日付」「ソースコードの整形」をテンプレートで挿入する

1. テンプレートを挿入する Snippets Manager の起動でエラーが表示される

Windows Live Writer でテンプレートを挿入するプラグインとして、Snippets Manager  を利用していた。

このプラグインを起動するとき、エラーが表示されるようになってしまった。

SnapCrab_No-0879

使用上は問題ない。しかし、エラー表示が気になるので、同じような機能を持つプラグインに乗り換えることにした。

 

2. Dynamic Template plug-in に乗り換えた

Dynamic Template plug-in は、テンプレートを登録できるプラグイン。

SnapCrab_NoName_2015-12-2_2-53-0_No-00

特徴は、静的なテンプレートだけではなく、C# を利用して動的に文字列を生成することができること。

より、DynamicTemplate.msi をダウンロードしてインストールした。

 

a. 基本的な書き方

テンプレートの中で C# の文を実行するには、

<% 文 %>

式の結果を得るには、

<%= 式 %>

「選択した文字列」を表す、特別な変数も用意されている。

_selection

 

b. 「アンカー」を挿入する

最初に、Snippets Manger を使ってアンカーを作成したテンプレートと同じものを登録する。

Windows Live Writer のメニューより、挿入 > Dynamic Template を選択。

SnapCrab_No-0878

Insert Template ダイアログで New ボタンを押す。

New Template ダイアログの Name: フィールドにテンプレートの名前を入力する。ここでは Anchor とした。

SnapCrab_No-0883

このテンプレートを使うとき、アンカーを挿入するために、「アンカーの名前」をダイアログで入力する必要がある。

そのためには、Edit Template: 画面で、ダイアログで入力された文字列を受け取る変数 name と、ダイアログに表示するラベル Anchor name を設定した。

SnapCrab_No-0884

Template Body: には、以下のように入力する。

<a name="<%= name %>"><%= _selection %></a>

 

c. 「追記(日付): を挿入する

ブログの内容を後から「追記」するとき、自分の場合、以下の形式で書くようにしている。

追記(2014/3/23): 追記したい内容

「日付」を自動で入力するには C# を利用して、Template Body に以下のように入力する。

<strong>追記(<%= DateTime.Today.ToString("yyyy/M/d") %>)</strong>:

ついでに、「追記」の位置に日付でアンカーを挿入するには、以下のように記述する。

<strong>追記<a name="<%= DateTime.Today.ToString("yyyyMMdd") %>"></a>(<%= DateTime.Today.ToString("yyyy/M/d") %>)</strong>:

 

d. ソースコードを整形する

ブログにソースコードを貼り付ける場合、google-code-prettify を利用している。ブログに内容を貼り付けるには、コードを選択し、 AutoHotKey で自動入力している。

同じようなことを Dynamic Template plug-in で行うには、Template Body に以下のように入力する。

<pre class="prettyprint"><%= _selection %></pre>

このテンプレートを利用するには、

  1. Windows Live Writer にソースコードを貼り付ける。
  2. ソースコードを選択し、上記のテンプレートを実行する。

 

e. HTML のソースを変換する

追記(2014/3/26): HTML のソースを、Windows Live Writer の「編集」モードで記述したときの状態に変換することができる。Level 3 - Using Selection > Watch Example 4 にサンプルが紹介されている。

<%= HtmlDecode(_selection) %>

これにより、例えば、以下の HTML のアンカー表現を、

<a href="http://jutememo.blogspot.jp/">すぐに忘れる脳みそのためのメモ</a>

下記のように変換することができる。

すぐに忘れる脳みそのためのメモ

これにより、書式情報を持つことができないエディタから、HTML のアンカーを貼り付けたものを簡単に変換することができるようになった。

ただし、Windows Live Writer に HTML のアンカーを貼り付けると、下記のように http:// ではじまる部分が自動的にリンクに変換されてしまうので、予めリンクを削除しておく必要がある。

<a href=http://jutememo.blogspot.jp/>すぐに忘れる脳みそのためのメモ</a>

Make Link  で作成 した HTML のアンカーを、Firefox のアドオン QuickFox NotesGoogle Keep に保存したものを活用しやすくなった。

Windows Update が失敗する場合、「詳細情報」からパッケージを直接ダウンロードしてインストールする (KB2923545)

Windows Update を実行しても、一つだけ失敗している更新プログラムがあった。

いつものように MacType が原因ではなかった。何度、Windows Update を実行してもダメ。レジストリを掃除してもインストールできない。不必要なアプリケーションを削除しまくってもどうにもならない。そこで、

  1. Windows Update > 更新履歴の表示
  2. インストールに「失敗」した更新プログラムで右クリック > 詳細のコピー

SnapCrab_No-0892

コピーされた内容は、

Windows 7 for x64-Based Systems 用更新プログラム (KB2923545)

インストール日時: ‎14/‎03/‎24 8:10

インストール状態: 失敗

エラーの詳細: コード 8024200D

更新プログラムの種類: 推奨

この更新プログラムをインストールすると、Windows の問題が修正されます。この更新プログラムの対象となる問題の完全な一覧については、サポート技術情報を参照してください。インストール後には、コンピュータの再起動が必要になる場合があります。

詳細情報:
http://support.microsoft.com/kb/2923545

ヘルプとサポート:
http://support.microsoft.com

上記の「詳細情報」より、RDP 8.1 用の更新プログラムは、Windows 7 SP1 の を開き、パッケージをダウンロードしてインストールしたら、「成功」した。

 

参考記事

2014年3月22日土曜日

Windows Live Writer のプラグインを削除するにはインストーラーを利用する

1. プラグインを削除したい

Windows Live Writer にインストールしたプラグインを削除したい。

  • アプリケーション ボタン > オプション > プラグイン

より、プラグインを無効にすることはできる。しかし、削除するための操作ボタンはない。

SnapCrab_No-0886

 

2. インストーラーを利用して削除

プラグインを削除するには、プラグインをインストールしたときのインストーラーを利用する。

例えば、アンカーを挿入するプラグインである Snippets Manager を削除したいとする。

最初に Snippets Manager をダウンロードし、インストーラーを起動する。

もし、Snippets Manager が既にインストールされている場合、プラグインの「修復」または「削除」の選択肢が表れる。このとき、Remove Snippets Manager … を選ぶとプラグインを削除できる。

SnapCrab_No-0885

2014年3月21日金曜日

Windows Live Writer を 2012 (v16.4.3522.110) に更新し、WLW Post Downloader Plugin を再インストールした。

1. 長いことアップデートしてなかった Windows Live Writer 2011

SnapCrab_No-0874ブログを書くために、Windows Live Writer を利用している。このアプリケーションを長いことアップデートしてないで使い続けていた。

バージョンを確認すると、

Windows Live Writer 2011, Version 2011 (Build 15.4.3555.308)

Windows Live Writer – Wikipedia によると、

最新版  2011 (15.4.3502.0922) / 2010年09月30日(3年前)

と書かれているが、Windows Live Writer - Wikipedia には、安定版として、より新しいバージョンが記載さている。日付を見ると、割と最近も更新されている

Stable release  2012 (v16.4.3522.110) / February 20, 2014; 25 days ago

MS 製品なので、自動的にアップデートの通位が来ると思っていたが、手動でインストールする必要があるらしい。

古いバージョンのアプリケーションをダウンロードできる FileHippo.com で確認しても、2012 (16.X.XXXX) の系列が列挙されている。

新しいバージョンがあることに気がついていなかった。(+_+)

 

2. Windows Live Writer 2012 に更新

Windows Essentials - Windows Live Essentials より Windows Essentials をダウンロード。

起動して、ダイアログが表示されたら、「インストールする製品の選択」を選ぶ。

SnapCrab_No-0876

「インストールするプログラムの選択」ウィンドウで、Writer のみ選択する。

SnapCrab_No-0877

これで最新の Windows Live Writer 2012 に更新された。

バージョンは Version 2012 (Build 16.4.3522.110)

SnapCrab_No-0875

 

3. WLW Post Downloader Plugin を再インストール

Windows Live Writer をインストール後、投稿した記事を編集する WLW Post Downloader Plugin が正常に動作しなくなった。そのため、再インストールした。

2014年3月19日水曜日

userstyles.org に OpenID でログインできなくなったので、管理者に User name/password による方法に変更してもらった

1. userstyles.org に OpenID でログインできない

Stylish で作成した CSS は、userstyles.org に登録している。

これまで、サイトにログインするために、Blogger の OpenID を利用していた。

SnapCrab_No-0868

しかし、最近、OpenID でログインしようとしたら、ログインできなかった。

画面は遷移したが、何も表示されない。ただし、タイトルには

Whoops, that's an error

と表示された。

 

2. 管理者に User name/password に変更してもらう

Contact the admin. から userstyles.org の管理者に連絡したら、OpenID でログインできない理由は Blogger に由来しているらしい。

管理者に OpenID によるログインから、User name/password でのログイン方法に変更してもらった。

SnapCrab_No-0869

これによ、userstyles.org に再びログインできるようになった。

自分は英文は読めるが、書くことができない。そこで、Google 翻訳 を利用して、たどたどしい英文で管理者とメールのやりとりを行った。何とか通じるものなんだねぇ。

OpenID でログインしたときの状況を説明して、通常のユーザー名とパスワードでログインできるように頼めば良かったようだ。

I have not  been able to login userstyles.org with OpenID from a few weeks ago.
My OpenID is [ここに OpenID の URL を入れる] .

I login userstyles.org, then nothing is displayed in browser but the title "Whoops, that's an error", URL is below.

[ここに エラーが表示されたときの URL を入れる]

Please add a normal login/password to my userstyles account.

ログインできるようになったら、最後にお礼を。

Thank you for your support.
I came to be able to login again.

アプリケーションをアンインストールできない場合、IObit Uninstaller で削除する。その後、レジストリの修復に Advanced SystemCare。

1. アプリケーションが削除できなくなった

コントロールパネル > プログラムのアンインストール で、アプリケーションを削除しようとしたら、

…アンインストールするのに必要なアクセス権がありません。

と表示された。何度やっても、どうしてもアプリケーションが削除できない。

SnapCrab_No-0891

 

2. IObit Uninstaller で削除する

IObit Uninstaller を利用すると、上記のように削除できないアプリケーションを強制的にアンインストールできる。

最初に、複数削除したいアプリケーションがある場合、「複数選択」にチェックを入れておく。

次に、削除したいアプリケーションを選び、「削除」ボタンを押す。

SnapCrab_No-0893

 

3. Advanced SystemCare でレジストリを修復

コントロールパネル > プログラムのアンインストール において、特定のアプリケーションだけアンインストールできないと思ったら、他のアプリも削除できなくなっていた。

そこで、Advanced SystemCare Free をインストール。

「ケア」タブにおいて、「レジストリデフラグ」「レジストリ修復」をチェックして「スキャン」ボタンを押す。

SnapCrab_No-0875

この結果、アプリケーションを普通に削除できるようになった。

この手のアプリケーションでレジストリの修復をしたことがあるが、本当に役に立っているのか分からなかった。今回はじめて実際に役に立ったのを見た。

2014年3月16日日曜日

Windows の CorvusSKK で Azik + Google 日本語入力の変換を利用。設定ファイルはクラウドへ保存。

1. SKK が恋しくなってきた

SnapCrab_No-0886日本語の入力に Google 日本語入力 を利用している。

変換効率の良さ。入力ミスしても間違いを指摘してくれる気の利いたところ。サジェストされる単語を見ながら素早く文字を確定。気がづけば、入力と同時に変換候補に視線が移動し、左手の小指は Tab キーを押す準備をしている。

打鍵を減らすために AZIK 方式にカスタマイズできるところも良い。

Google 日本語入力を使う前は、SKKIME を長い間使っていた。SHIFT キーを多用するマニュアル操作が妙なダイレクト感を生む。

最近、また SKK の入力方式が恋しくなってきた。久しぶりに使ってみようかな。

 

2. CorvusSKK と SKK日本語入力FEP

Windows 環境で SKK を利用したい場合、現在のところ SKKIME 以外に CorvusSKKSKK日本語入力FEP がある。この二つを比べてみる。

WindowsのSKKでACT(Dvorak版AZIK) によると、

WindowsでSKKを使用する手段としては昔からある SKKIME と最近登場した CorvusSKKSKK日本語入力FEP がありますが,個人的にはCorvusSKKが一番オススメです.

skkimeの後継について - しげぽん日記

実際に使ってみたところSKK日本語入力FEPって非常にキモい。慣れればどうっちゅう事もないんだろうけど、入力の方法はたしかにskkなんだけど見た目skkじゃない感じ。まぁおもしろそうではあったんだけどそこまでこだわる事もないなと思った。

次にCorvusSKKを使ってみたら、まぁ普通に使えた。こっちの方が自分としては(というか従来からのskk使いはみんなこっちがいいって言うんじゃないかと思うんだけど)やっぱり使いやすいのでこれを使う事にした。

SKK - 日本語を書くなら絶対に導入したい! 私が10年で厳選した超おすすめ入力メソッド10選 – Qiita によると、

3位に輝いた CorvusSKK ! これはWindowsで動作するSKKで、Windowsストアアプリ上でも動作します

栄光の第1位は… SKK日本語入力FEPです!

SKKの伝統を受け継ぎつつ、現代的な日本語入力メソッドとして再設計され、ほかの日本語入力からの移行も違和感がありません!

SKK日本語入力FEP を試してみようとしたが、自分の環境ではインストーラーが起動しなかった。そこで、今回は CorvusSKK を使うことにした。

 

Corvus の意味はカラス?

ちなみに、corvusの意味 - 英和辞典 Weblio辞書 によると、

コルウス、からす座、烏座、crewやカラスの同義語(異表記)、烏座、コルウスまたはコルバス (corvus) とは、ローマ帝国海軍の兵器の一種で、ガレー船に備え付けられた渡し板、もしくは梯子である。

ガレー船 – Wikipedia によると、

衝角や投石機による射撃攻撃も行われたが、やはり白兵戦海戦の主役であった。ローマ海軍では移乗戦闘用に「コルブス」(カラス)と称される斬り込み用の跳ね橋を艦首に有し、敵艦へ強行接弦後、スパイク付きの橋を下ろして船間を固定。ここから武装兵を突入させる戦術を多用した。

ということは、Corvus (コルブス) って、アプリに橋をかけて切り込むってこと?

 

3. CorvusSKK のインストールと設定

より、最新バージョンをダウンロードして解凍。

自分の場合、OS は Windows 7 64bit なので、corvusskk-x64.msi を実行し、ウィザードに従いインストールを行った。

インストール後にコンピューターを再起動をする。

その後、言語バーで CorvusSKK に切り替え、入力方式より「設定」を選択すると、設定ウィンドウが開かれる。

 

辞書の設定

最初に辞書の設定を行う。

SKK辞書 - SKK辞書Wiki より、SKK-JISYO.L をダウンロードして解凍。

  • 設定ウィンドウ >  「辞書」タブ

において、「追加」ボタンを押し、辞書ファイルを指定する。

SnapCrab_No-0888

その後、「取込」ボタンを押し、辞書を取り込んだ。

SnapCrab_No-0883

これで SKK 方式による日本語入力ができるようになる。もし、辞書が利用できない場合、Ctrl + Shift キー を押して、一度 IME を切り替え直すとよい。

 

日付入力のための辞書

SKK-JISYO.lisp - みずぴー日記 によると、

実は「今日の日付」のような複雑なEmacsLispの式を含む変換候補は、通常の辞書とは別で管理されています。…

CorvusSKK

一方、CorvusSKKはここの実装をがんばっていて、いくつかの関数もサポートしています。すごいです。

より、ダウンロードして、上記と同じく辞書の取り込みを行う。

これにより、「きょう」「あした」「きのう」`/today’, `/now’ により日付や時間に変換できる。

 

4. AZIK の設定

SnapCrab_No-0897次に、入力方式を AZIK に変更する。

Release CorvusSKK 2.2.3 > corvusskk-2.2.3.zip を解凍したフォルダの中に

  • config-sample.zip

がある。この中に AZIK の設定ファイルがある。

自分の場合、US 配列のキーボードを使っているので、

  • config - azik-uskbd.xml

を config.xml に名前を変更した。

設定ファイルは %AppData%\CorvusSKK に置かれている。

このフォルダの中にある config.xml を上記ファイルと置き換えた。

 

打鍵について

Google 日本語入力で AZIK 方式にカスタマイズしたとき、「じ」を `ji’ で入力していた。「じ」は `zi’ で入力するのが本来の打ち方だった。

また、小さな「ぁぃぅぇぉ」を入力するために、`l’ を入力してから母音を打鍵していた。ここでは `xx’  を入力してから母音を打鍵する。

AZIK総合解説書AZIK の SKK チュートリアル によると、

☆「ゃゅょ」などの小さな文字を単独で入力するときは、「XX」を前置する。
    例:わぁ→WAXXA  くゎ→KUXXWA [*]
    注)純正の AZIK では「L」を前置する。

 

5. 設定・辞書ファイルをクラウドに移動

SnapCrab_No-0898PC が壊れたときのために、設定・辞書ファイルはクラウドに保存しておく。

今回は Amazon Cloud Drive を利用した。

Amazon Cloud Drive をインストールすると、

  • C:\Users\ユーザ名\Cloud Drive\

が作られる。最初に Cloud Drive 直下に programs フォルダを作成した。

  • C:\Users\ユーザ名\Cloud Drive\programs\

次に programs フォルダに

  • %AppData%\CorvusSKK フォルダ

を移動した。ただし、普通に %AppData%\CorvusSKK フォルダを移動することはできない。理由は、その中にある辞書や設定ファイルをCorvusSKK が利用しているため。

そこで、予め Unlocker%AppData%\CorvusSKK フォルダのロックを解除しておいた。

その後、C:\Users\ユーザ名\Cloud Drive\programs\ 以下に %AppData%\CorvusSKK フォルダ を移動した。

最後に、Link Shell Extension を用いて、「移動先のフォルダ」から「移動元」へシンボリックリンクを貼った。

もし、ロックの解除が上手くいかなかった場合、CorvusSKK 以下の各々ファイルに対して、シンボリックリンクを貼れば良い。

 

環境変数を設定

Amazon Cloud Drive へのパスを環境変数に設定しておいた。

  • スタートメニュー > コンピューター で右クリック > プロパティ > システムの詳細設定 > 環境変数

において、新規ボタンを押し、変数名 CLOUDDRIVE を設定し、変数値として Amazon Cloud Drive へのパスを入力する。

SnapCrab_No-0887

 

6. Google 日本語入力の変換を利用する

追記(2014/4/2): 最後に、CorvusSKK から Google 日本語入力 の変換を利用できるようにしておく。

より、crvskkserv-1.1.0.zip をダウンロードして解凍し、crvskkserv.exe を起動する。タスクトレイにcrvskkserv のアイコン SnapCrab_No-0910 が表示されるので、クリックして設定画面を表示する。

設定画面の 「GoogleCGIAPI追加」ボタンを押すと、GoogleCGIAPI追加ダイアログが表示されるので、OK ボタンを押す。

SnapCrab_No-0912

ポート番号の 1178 を控えておく。

SnapCrab_No-0909

次に CorvusSKK の設定画面を開き、「辞書」タブを選択し、

  • 「SKK辞書サーバーを使用する」

にチェックを入れ、ポートに 1178 を入力する。(※ 末尾に空白が入力されてないことを確認すること)

SnapCrab_No-0913

corvus-skk で用意されている crvskkserv の方が、下記の google-ime-skk を利用する方法よりも、変換のレスポンスが余良かった。

追記(2014/4/24): 上記の「タイムアウト」の時間が 1000 msec だと変換がもたつく。そこで、この値を 5 msec に変更した。

 

googel-ime-skk をバッチファイルで起動して使う方法は遅かった。

上記以上の方法として、

で利用した google-ime-skk を利用することもできる。

ここでは、Amazon Cloud Drive の直下に skk フォルダ を作成。その中に以下の内容のバッチファイル googleime.bat を作った。

google-ime-skk

次に CorvusSKK の設定画面を開き、「辞書」タブを選択し、

  • 「SKK辞書サーバーを使用する」

にチェックを入れ、ポートに 55100 を入力する。

SnapCrab_No-0885-2

バッチファイルを実行すると、Google 日本語入力の変換を利用できるようになる。

ただし、バッチファイルを実行すると、コマンドラインを実行したウィンドウが表示されてしまう。

ウィンドウが表示されないようにするには、googleime.bat と同じフォルダに、以下の内容の googleime.vbs ファイルを作成する。

CreateObject("WScript.Shell").Run """%CLOUDDRIVE%\programs\skk\googleime.bat""",0

そして、ログインしたときに上記ファイルを実行するために、ショートカットをスタートアップ フォルダ に登録しておいた。

 

7. プロセスの優先度を高くする

最後に、入力したときのレスポンスを良くするために、skk に関するプロセスの優先度を高く設定しておいた。

プロセスの優先度を変更するアプリは様々ある。自分は、PC を起動するときのアプリを遅延させる Startup Delayer の機能を利用することにした。

スタートアップ項目から、以下、各々のアプリ設定画面を開き、

  • crvskkserv
  • imcrvmgr

SnapCrab_NoName_2016-5-14_22-35-4_No-00

  • 起動の詳細 > 高度 > 優先度

において、「高い」を選択した。

その場で、優先度を変更したい場合、対象のアプリを選択し、

  • 右クリック

をした後、「選択項目を直ちに起動」または「選択項目を直ちに停止起動」を選択し、アプリを実行状態にする。だめなら、PC を再起動する。

なお、もし、言語バーが消えてしまった場合、Win + R でファイル名を指定して実行するウィンドウを開き

  • ctfmon

を実行する。

VBScript でパスに空白を含むアプリケーションを起動するときには、二重引用符を 2 つ続ける

1. パスに空白を含むアプリケーションを起動するスクリプト

SnapCrab_No-0888 VBScript で Program Files フォルダの中にあるアプリケーションを起動したい。

例えば、LibreOffice を立ち上げるために test01.vbs ファイルに以下のように記述した。

CreateObject("WScript.Shell").Run "C:\Program Files (x86)\LibreOffice 4\program\soffice.exe"

実行すると、「ファイルが見つからない」旨のエラーが表示される。

---------------------------
Windows Script Host
---------------------------
スクリプト:    C:\test01.vbs
行:    1
文字:    1
エラー:    指定されたファイルが見つかりません。
コード:    80070002
ソース:     (null)

 

2. 文字列型のリテラルで二重引用符を用いる場合、二重引用符を 2 つ続ける

理由は、アプリケーションのパスに空白を含むときは、引用符を付ける必要があるため。

上記のコードでは、アプリケーションのパスを二重引用符で囲んでいる。しかし、これは文字列リテラルを表すためのもの。

Visual Basic における文字列の基本 によると、

文字列型 (String) の変数にリテラルを代入する場合は、二重引用符 ("") で囲む必要があります。 このため、文字列内の二重引用符は、二重引用符で表現できません。

… Visual Basic は二重引用符が文字列リテラルに 2 つ続けて出現した場合に、文字列内の 1 つの二重引用符として解釈します。

よって、次のように修正する。

CreateObject("WScript.Shell").Run """C:\Program Files (x86)\LibreOffice 4\program\soffice.exe"""

メッセージボックスに文字列を与えたときの動作を確認すると理解しやすい。

MsgBox "C:\Program Files (x86)\LibreOffice 4\program\soffice.exe"
MsgBox """C:\Program Files (x86)\LibreOffice 4\program\soffice.exe"""

実行すると、ダイアログに以下のように表示される。

C:\Program Files (x86)\LibreOffice 4\program\soffice.exe
"C:\Program Files (x86)\LibreOffice 4\program\soffice.exe"

前者は引用符で囲まれておらず、後者は引用符で囲まれている。

 

参考サイト

2014年3月12日水曜日

COMODO Firewall でブロックしたアプリを許可 - 「アプリケーションルール」を変更

1. Advanced Settings を表示する

COMODO Firewall で「ブロックしたアプリケーション」を許可したい。

そのためには、タスクトレイにある COMODO Firewall のアイコン SnapCrab_No-0874 をダブルクリックし、メインウィンドウを表示。

メインウィンドウ左上にある Advanced View ボタンを押す。

SnapCrab_No-0875

Advanced View ボタンの下に表示された Firewall の文字をクリック。

SnapCrab_No-0876

追記(2014/9/10): Version 7.0.3XXXXX.XXXX では `Tasks’ をクリック。

SnapCrab_No-1455

検索フィールドで `advanced’ を入力する。

SnapCrab_No-1454

 

2. Application Rules の一覧からブロックしたアプリケーションを検索する

COMODO Advanced Setting ウィンドウの左側メニューにある Application Rules を選択。

Application Rules の一覧右上の Search ボタンをクリック。

SnapCrab_No-0877

ブロックしたアプリケーションを検索するために、検索フィールド左にあるセレクトボックスで Treat As を選択。

検索フィールドに `block’ と入力し Enter キーを押すと、Blocked Application が選択される。

SnapCrab_No-0878

 

3. アプリケーションを許可する

ブロックしたアプリケーションをダブルクリックすると、COMODO Application Rule ウィンドウが表示される。

Use Ruleset のセレクトボックスにおいて Allowed Application を選択する。

SnapCrab_No-0879

 

関連記事

以前は「アプリケーションルール」の一覧がどこにあるのか分からず、Tasks よりログを確認して Firewall Taslks から Allowed Application を設定していた。

このような設定は Privatefirewall の方がやりやすい。

2014年3月11日火曜日

Firefox で Configuration Mania や about:config で設定した値が意図せず変わってしまう場合、プロファイルフォルダにある user.js を確認する

1. Configuration Mania やabout:config で設定した値が再起動するたびに変わる

Firefox で「HTTP ネットワークの最大接続数」を設定をするために Configuration Mania を利用した。しかし、Firefox を再起動する度に設定した値が変わってしまう。

SnapCrab_No-0872

ロケーションバーに about:config を入力し、直接、値を書き換えてもダメ。

SnapCrab_No-0873

 

2. プロファイルフォルダにある user.js を確認する

about:config で表示される値は、プロファイルフォルダにある

  • user.js ファイル

で設定できる。

about:config と user.js による Firefox のカスタマイズ – えむもじら によると、

詳細設定を行う方法として prefs.jsuser.js があります。

prefs.js は Firefox のプロファイルフォルダにあるテキストファイルで、Firefox のカスタマイズ情報のほとんどが格納されています(…)。このファイルを直接編集しても良いのですが、別途 user.js というファイルも利用できるようになっています。

user.js をプロファイルフォルダに置いておくと(…)、起動時に読み込んで、prefs.js の設定を上書きしてくれます。

プロファイルフォルダを確認したら、user.js ファイルが存在していた。中身にHTTP ネットワークの最大接続数などの設定が書かれていた。以前、自分で設定したのを忘れていたようだ。 (+_+)

prefs.jsuser.js の関係を理解しておくと、きっとあとで役に立ちます。

  • Firefox 起動時の動作
    1. デフォルトの設定を読み込み
    2. prefs.js を読み込み
    3. user.js を読み込み
  • Firefox 使用中の動作
    1. オプション画面または、about:configからの設定の変更後即座に、現在の設定を prefs.js に書き込み(デフォルト値から変更されているもののみ)

pref.js よりも user.js が優先されるため、Configuration Mania や about:config で設定を変更しても、Firefox を再起動する度に値が変わってしまっていた。

 

関連記事

2014年3月10日月曜日

ブラウザの「訪問済みリンク」色が変わらないサイトに対して、Stylish で強制的に既読リンクと未読リンクを区別する

1. 「未訪問リンク」「訪問済みリンク」の区別がつかないサイト

ブラウザでリンクを開くと、「未訪問リンク」が「訪問済みリンク」となる。

「訪問済みのリンク」を判別できるように、ブラウザにはデフォルトでリンク色が設定されている。

ただし、サイトによってはブラウザのデフォルトの設定を上書きし、「未訪問リンク」と「訪問済みリンク」の区別がつかないことがる。これでは、後になってサイトをどこまで見たのか分からなくなる。

ユーザビリティやリピータの為に結構大切なa:visitedの色 | 無料SEO対策のススメ によると、

次の日また見に来てくれればどのページまで見たのかが分かると思いますが、時間を置いて再び訪問した場合には、未訪問と訪問済が一発で識別できた方が便利だと思います。(時間が空きすぎると全て未訪問扱いになります。)

Firefox では、オプション > コンテンツ > フォントと配色 > 配色設定 より、デフォルトの色を確認できる。

SnapCrab_No-0859

 

2. Stylish で「未訪問リンク」「訪問済みリンク」の色を設定する

SnapCrab_No-0868Firefox, Google Chrome では、以下のアドオンを利用する。

設定の注意点は、:link、:visited、:hover、:active の記述順序とその覚え方 | jmblog.jp によると、

実はこの4つの擬似クラスの記述順序には注意が必要で、上記のように link、visited、hover、active の順番で記述しないと意図した結果にならなかったりします。

 

全てのサイトで有効な CSS

サイトごとに「未訪問リンク」「訪問済みリンク」色の設定が必要ないなら、以下のスタイルをインストールすれば良い。

 

Firefox

Firefox で Stylish を使う方法は、以下を参照

 

Googe Chrome

Google Chrome に Stylish をインストールした後、「未訪問リンク」「訪問済みリンク」を設定したいサイトを開く。

  • Stylish のアイコンを右クリック > 「インストール済みのスタイを管理」

を選択する。

SnapCrab_No-0857

「新しいスタイルを作成」ボタンを押す。

SnapCrab_No-0858

スタイルを編集画面で、最初に適当に名前をつける。

コードに以下を記述する。

a:link { color:#0000EE; }
a:visited { color:#551A8B; } 

次に、「個別指定」ボタンを押し、特定のサイトのみ有効にできる。

SnapCrab_No-0860

SnapCrab_No-0862

最後に、スタイルの保存ボタンを押す。

 

3. プライバシーの問題

プライバシーと :visited セレクタ - CSS | MDN

歴史的に、CSS の :visited セレクタは、getComputedStyle() や他の方法を使って、ユーザの履歴を調べてどのサイトが訪問されたのかを明らかにし、サイトからユーザの履歴を問い合わせることに使われてきました。

CSS の :visited に行われるプライバシー対策 | Mozilla Developer Street (modest)

長年にわたり、CSS の :visited セレクタ はユーザの履歴を取得する経路となっていました。このセレクタ自体は特に危険ではありませんが、JavaScript の getComputedStyle() とともに使われることで、ユーザの履歴を詮索しどのサイトに訪れていたのかを知ることができるのです。

そして、これらはとても素早く行われます。テストでは、1分間で 210,000 もの URL を確認できた という結果が出ています。この割合でいけば、ユーザの履歴にブルートフォースを行う(訳注: 総当たり検索でユーザの訪問済みサイトリストを取得する)ことや、最低限でも フィンガープリンティングによるユーザの識別 を行えてしまいます。ブラウザが履歴を長期間保存することもあり、ユーザの Web 上の行動をかなり把握されてしまうおそれがあります。

 

関連記事

2014年3月4日火曜日

Google スプレッドシートのカスタム関数に「列」(範囲)を引数として与えた場合、目的の型に変換する必要がある

1. 日付の「列」をカスタム関数に与えたら、 Date 型メソッドの呼び出しで TypeError

a. 日付が入力された「セル」をカスタム関数に与えたら、Date 型メソッドを呼び出せる

Google スプレッドシートで、日付から「日」を得るカスタム関数を以下のように定義した。

function getDate(date){
  return date.getDate();
}

シートの A 列に日付を入力し、B1 セルで上記のカスタム関数を呼び出す。そして、下方向へコピーした。

SnapCrab_No-0838

その結果、B 列に「日」を表示することができた。

 

b. 日付が入力された「列」をカスタム関数に与えたら、Date 型メソッドを呼び出せない

次に、上記の「カスタム関数呼び出しの繰り返し」を配列数式で置きかえるために、以下のように関数を定義しした。

function getDateList(dates){
  var i, result = [];
  for (i = 0; i < dates.length; i++){
    result[i] = [dates[i].getDate()];
  }
  return result;
}

getDateList 関数を B1 セルで呼び出した結果、TypeError が表示された。

SnapCrab_No-0840

TypeError - JavaScript | MDN とは、

値が期待される型でない場合のエラーを表します。

先ほどの getDate 関数は、日付が入力された「1つのセル」を引数として与えた。関数の中で getDate() メソッド を呼び出すとき、「日付型の値に対してメソッドを呼び出す」と考えてコードを記述した。

これに対して、getDateList 関数では、「日付の列」を与えている。関数の中では、各要素に対して getDate() メソッド を呼び出した。しかし、結果、そのようなメソッドはオブジェクトに定義されていないというエラーが表示された。

どうやら、カスタム関数に「列」(範囲)を引数として与えると、各要素の型情報が失われるようだ。

 

c. JavaScript の配列と比較

JavaScript では日付型の要素を持つ配列の要素に対して、getDate() メソッド を呼び出すことができる。

[
    new Date('2014/1/1'),
    new Date('2014/1/2'),
    new Date('2014/1/3')
].map(function (x) {
    return x.getDate();
});

実行すると、結果は以下のように表示される。

[1, 2, 3]

つまり、Google スプレッドシートで、カスタム関数に「列」(範囲)を引数として与えることは、JavaScript の配列を与えることとは異なる。

 

2. カスタム関数において列(範囲)から要素を取り出したら、目的の型に変換する必要がある

Google スプレッドシートで上記の TypeError を回避するためには、「列」(範囲)から要素を取り出すときに、日付型に変換する必要がある。

function getDateList(dates){
  var i, result = [];
  for (i = 0; i < dates.length; i++){
    result[i] = [new Date(dates[i]).getDate()];
  }
  return result;
}

これにより、Date 型のメソッドを呼び出すことができるようになる。

SnapCrab_No-0842

 

3. シート上の計算と、カスタム関数、配列数式における「文字列」「数値」「日付」の扱われ方の比較

上記の点について、Google スプレッドシートで「文字列」「数値」「日付」がどのように扱われるのか確認しておく。

a. 表計算のシート上で 1 を足す

最初に、表計算のシート上における計算について確認する。

対象の値は、

  • 文字列 「ほげ
  • 数値 `100
  • 日付 `2014/1/1

各値に対して + 演算子を使い、「1を足す」計算を行う。

SnapCrab_No-0843

結果、数値は 1 加算され、日付は1日後が表示された。

ただし、文字列に対して 1 を足すことはできない旨のエラーが表示された。

 

b. 単一のセルを与えるカスタム関数で + 1

次に、セルの値に対して + 1 するカスタム関数を定義する。

function addOne(cell){
 return cell + 1; 
}

この関数を呼び出した結果、文字列 「ほげ」 に `1’ が連結された。これは JavaScript の仕様で、文字列に + 演算子を適用すると文字列の連結となるから。

数値は `100’ に 1 が足され 101 となった。JavaScript では数値に + 演算子を適用すると「加算」が行われる。

「日付」は、日付の文字列表現に 1 が連結された。

SnapCrab_No-0844

このような結果となる理由を探るために、各セルの値の型を検査する関数を定義した。

function testType(obj) {
  return typeof obj
}

結果、文字列は string、数値は number、日付は object となった。

SnapCrab_No-0846

日付の型は object と表示されたが、Date 型のメソッドを呼び出すことができる。JavaScript で日付を加算するには、以下のように記述する。

function addOneDate(cell){
  var d = new Date(cell);
  d.setDate(d.getDate() + 1);
  return d;
}

この関数を呼び出すと、引数に渡した翌日(1日後)が表示される。

SnapCrab_No-0845

 

c. 列(範囲)を与えるカスタム関数で + 1

上記の + 1 する「カスタム関数の繰り返し」を配列数式で置きかえるために、以下の関数を定義した。

function addOneList(col){
  var i, result = [];
  for(i = 0; i < col.length; i++){
    result[i] = [col[i] + 1]; 
  }
  return result;
}

この関数を呼び出した結果、先ほどと結果が異なった。さっきは数値が数値として扱われ + 1 が加算されたが、今回は数値が文字列として扱われ “100” に “1” が連結される形となった。

SnapCrab_No-0847

つまり、ここでもカスタム関数に「列」(範囲)を与えると、型情報が失われたことが分かる。

配列数式で型を検査する関数を定義して、型を確認してみる。

function testTypeList(col){
  var i, result = [];
  for(i = 0; i < col.length; i++){
    result[i] = [typeof col[i]]; 
  }
  return result;
}

この結果、全て object となった。やはり、カスタム関数に「列」(範囲)を与えた場合、自分で目的の型に変換しなければならないようだ。

SnapCrab_No-0848

 

d. 列(範囲)を与えるカスタム関数で数値を扱う

例えば、A 列に数値があり、B 列に + 1 した値を得たいとする。

このとき、配列数式でカスタム関数を記述する場合、列から要素を取り出した後、数値にキャストする必要がある。

function addOneNumberList(col){
  var i, result = [];
  for(i = 0; i < col.length; i++){
    result[i] = [Number(col[i]) + 1]; 
  }
  return result;
}

これにより、数値による計算が行われる。SnapCrab_No-0849

数値にキャストしない場合、+ 演算子が文字列の連結として扱われてしまう。

SnapCrab_No-0850