2011年8月29日月曜日

Google Chrome のキャッシュを RAM ディスクへ移動

0. 目次

Firefox のキャッシュを終了時に削除 につづく…

 

1. キャシュを RAM へ移動させたら、サクサク動くだろうか?

Google Chrome は、デフォルトの状態でレスポンスが良い。しかし、慣れてくると、一瞬待たされるのが気になる。

Firefox と同様に、Firefox と同様に、Chrome もキャッシュを RAM ディスクへ移動させてみる。

 

2. RAM ディスクの作成

RAM ディスクを作成 を参照。 F ドライブの中にフォルダを以下のように作成した。

  • F:
    • Chrome
      • default
      • 1
      • 2

ただし、Chrome フォルダ以下にある default は、以下のフォルダに対応させた。

  • %APPDATA%\..\Local\Google\Chrome\User Data\Default\

また、もし、Google Chrome に複数のユーザーを作成している場合、以下のフォルダに Profile 1, Profile 2, … が含まれる。この数字に対応させた。

  • %APPDATA%\..\Local\Google\Chrome\User Data\

 

3. キャッシュの設定

a. キャシュフォルダを RAM ディスクへ移動

次に、キャッシュフォルダを RAM ディスク内に移動し、

最初に、デフォルトのフォルダのキャッシュを移動する。

  • %APPDATA%\..\Local\Google\Chrome\User Data\Default\Cache

上記フォルダを RAM ディスク内に作成した F:\Chrome\default に移動し、既存のキャッシュフォルダを削除する。

もし、Google Chrome に複数のユーザーを作成している場合、

  • %APPDATA%\..\Local\Google\Chrome\User Data\

の直下にある Profile [数字] の中にある Cache フォルダも、RAM ディスク内に作成した数字のフォルダに対応させて移動する。

 

b. RAM ディスクへ移動させたキャシュフォルダへのリンボリックリンクを作成

最後に、元のキャッシュがあった場所へ、シンボリックリンクを作る。そのためには、 Link Shell Extension を使う。

Link Shell Extention の使い方は、

  1. RAM ディスクへ移動させた Cache フォルダを右クリックし、クリックを押したまま「キャシュフォルダがあった元の位置」へ、ドラッグアンドドロップ。
  2. 「ここにリンクを作成 > シンボリックリンク」を選択する。

 

c. 起動オプションで設定する問題

ところで、Google Chrome では、起動するときのオプションでキャシュフォルダを指定できる。

                 起動オプション - Google Chrome まとめWiki によると、

--disk-cache-dir="R:\Chrome Cache" RドライブのルートにあるChrome Cacheフォルダをディスクキャッシュフォルダに指定します。

スタートメニューから Google Chrome のアイコンを探して、右クリック > プロパティを選択。

リンク先のフィールドに、以下を追加してみた。

--disk-cache-dir="F:\Chrome"

ただし、この方法では起動するときにオプションが指定されている必要がある。そのため、他のアプリケーションから Google Chrome を起動する場合、当該アプリケーションでオプションを指定できない場合、キャッシュを利用できない。

 

4. 結果

Firefox と同じく、レスポンスが良くなった。

 

関連記事

2011年8月28日日曜日

Firefox(Cyberfox) のキャッシュを RAM ディスクへ移動

0. 目次

Firefox のキャッシュを終了時に削除, プログラム本体とプロファイルを RAM ディスクに配置 につづく…

 

1. キャシュを RAM へ移動させたら、サクサク動くだろうか?

ディスクキャッシュを無効

これまで Firefox をディスクキャッシュを使わない設定で使っていた。

ブラウザをメモリディスクを使って高速化する方法 | マイコミジャーナル によると、

Firefoxのアドレスバーにabout:configと入力して設定モードへ進み、browser.cache.でフィルタを実施。 browser.cache.disk.enableをfalseに設定し、browser.cache.memory.enableをtrueへ設定。

整数値で新しくbrowser.cache.memory.capacityを作成して、使用するメモリディスク容量をキロバイトで指定。

なお、 browser.cache.memory.capacity-1を指定すると物理メモリサイズに合わせて自動的に値を設定してくれると説明がある。

ディスクキャッシュを使わない設定と、RAM ディスクにキャッシュを移動するのと、どちらがサクサク動作するのだろうか?

 

2. RAM ディスクを作成

RAM ディスクを作成するアプリケーションとして、Dataram RAMDiskSoftPerfect RAM Disk がある。現在はインターフェイスがシンプルで、制約が少ない SoftPerfect RAM Disk を使っている。

「シャットダウン時に RAM の内容を保存する」設定は、以下を参照。

追記(2015/3/24): 32bit OS で OS管理外のメモリ領域を活用したらり、定期的に RAM の内容を保存したい場合は RAMDA を利用する。

 

c. ブラウザのキャシュ用のフォルダを作成

F ドライブを RAM ディスクとして作成した。その中に、Firefox と Google Chrome 用のキャシュフォルダを作った。

  • F:
    • Firefox

 

3. キャッシュを設定する

a. キャッシュに関する設定をデフォルトに戻す

予め ロケーションバーに about:config と入力し、

browser.cache.

で検索し、キャッシュ関係の設定をデフォルトの値にしておいた。

 

b. Configuration Mania により設定する方法

Firefox では、アドオン Configuration Mania を利用すると、GUI で設定できる。

Configuration Mania の設定を開き、

  • ブラウザ > ブラウザのキャッシュ > キャッシュの保存先

において、「参照」ボタンを押し、ダイアログから F:\Firefox を選択した。

SnapCrab_Configuration Mania_2013-1-16_0-27-8_No-00

 

c. about:config により設定する方法
Configuration Manai を使わない場合は、 ロケーションバーに about:config を入力して、Firefox の設定値を表示する。
  • 右クリック > 新規作成 > 文字列

で、browser.cache.disk.parent_directory を作成し、値を以下のように設定。

F:\Firefox

※ user.js ファイルに記述するときは、F:\\Firefox と記述する。

Browser.cache.disk.parent directory - MozillaZine Knowledge Base によると、

Note: In Windows, if the "browser.cache.disk.parent_directory" value is being set in the prefs.js or user.js file instead of about:config, the path separator must be two backslashes (e.g., "C:\\Path\\To\\Parent").

 

d. まるごと移動する方法

 

4. 結果

Firefox を再起動し、キャシュフォルダが作成されたことを確認する。

RAM ディスクを利用すると、ブラウザのレスポンスが良くなった。ただし、Firefox が頻繁に落ちるようになったら、この設定を戻した方がよい。

 

関連記事

参考サイト

2011年8月27日土曜日

Dataram RAMDisk で RAM ディスクを作成 - シャットダウンするときに内容を保存する

1. Datam RAMDisk のインストール

RAM ディスクを作成するために Dataram RAMDisk を利用する。

窓の杜 - “RAMディスク”構築ソフト「Dataram RAMDisk」 によると、

利用するには、まず[Settings]タブでRAMディスクのサイズを指定しよう。次に、作成するRAMディスクのファイルシステムとブートセクターの種類を選択する。通常は、ファイルシステムを“FAT32”、ブートセクターを“Windows boot sector”に設定しておけばよいだろう。最後に[Start RAMDisk]ボタンを押せば、RAMディスクが作成され、“マイ コンピュータ”から利用可能になる。

(装飾は引用者による)

RAMDisk - Dataram より、Download it を選択し、ダウンロードし、インストールする。

 

2. RAMDisk の作成

Dataram RAMDisk を起動し、以下の設定を行った。

  • Settings
    • Basic Settings
      • Disk Size : 512 MB
      • FAT32 Partition を選択
    • Boot Sector Settings
      • Windows boot sector を選択

CropperCapture[314]

これにより、F ドライブが作成された。

 

3. シャットダウン時に RAM の内容を保存する

RAM ディスクの内容を、PC の終了時に保存し、起動時に復元する設定に変更する。

窓の杜 - “RAMディスク”構築ソフト「Dataram RAMDisk」 によると、

RAMディスクの内容をOS終了時にバックアップしたり、次回起動時に内容を復元したい場合は、RAMディスクのサイズ指定に続いて[Load and Save]タブで設定を行う。

まず、一度もRAMディスクの内容を保存していない場合は、“Save Image Settings”エリアでRAMディスクのイメージを保存するパスを指定したあと、[Save Disk Now]ボタンを押す。すると、イメージがファイルとして保存されるので、“Load Image Settings”エリアで保存したイメージファイルのパスを指定すればよい。なお、RAMディスクのイメージファイルは“*.img”という拡張子で保存されるが、これは本ソフト独自の形式で、一般的に利用されているCDイメージファイルとは互換性がない。

最後に、“Load Disk Image at Startup”と設定画面の“Save Disk Image on Shutdown”というチェックをONにすれば設定は完了。

11-20-20111

 

4. その他

追記(2013/02/16): 現在は SoftPerfect RAM Disk を使い RAM ディスクを作成している。

2011年8月20日土曜日

TeamViewer で誤って接続先 PC を操作しないためのアクセスコントール - 相手の画面を覗くだけ、必要に応じてフルアクセス

1. 接続先 PC を誤って操作することを防ぎたい

SnapCrab_NoName_2013-1-28_2-42-35_No-00TeamViewer を使うと、PC をリモートから操作したり、画面の内容を見ることができる。

デフォルトでは、接続先の PC を操作するモード(フルアクセス)になっている。このため、誤って接続先の PC を操作してしまうことがある。

これを次のような設定に変更したい。

  1. 接続したときは、接続先 PC の画面を表示するだけで、接続先の PC を操作できない。
  2. リクエストを送った後、接続先の PC を操作できるようにする。

 

2. 【接続された側】フルアクセスで接続された場合、リモート入力を無効化にする

「フルアクセス」で接続された PC 側では、リモート入力を無効にすることができる。

接続された側の画面右下には、TeamViewer で接続されたときにウィンドウが表示される。その中の

  • 「リモート入力の有効化/無効化」ボタン

をクリックすることにより、リモート入力を無効化できる。

CropperCapture[306]

 

3. 【接続する側】接続先の画面だけを表示する「デフォルト」の設定

a. 接続先の相手に許可を求める
  1. TeamViewer を起動し、メニューより「その他 > オプション」を選択する。
  2. 左側ニューにある「詳細」をクリックした後、「詳細オプションを表示」のボタンを押す。
  3. 他のパソコンとの詳細な接続設定」の「アクセスコントロール」において、「表示」を選択する。

SnapCrab_TeamViewerのオプション_2013-1-28_1-46-36_No-00

ただし、この方法では、接続先にアクセスするたびに許可が必要となる。

 

b. 接続先の許可を必要としない設定

接続先の許可を必要とせず、アクセスしたい場合は、同上の「アクセスコントロール」において

「カスタム設定」

を選択する。

SnapCrab_TeamViewerのオプション_2013-1-28_1-46-0_No-00

「カスタム設定」の下にある「設定...」ボタンを押す。

表示されたダイアログで、

  • リモート画面表示: 許可
  • リモートコントロール: 確認後

とする。SnapCrab_アクセスコントロールの詳細_2013-1-28_1-54-37_No-00

 

c. 接続先ごとに設定する

接続するパートナーごとに、画質の設定をしたい場合は、

  1. コンピュータ&パートナー」ウィンドウに表示されているパートナーを右クリック > 「プロパティ」を選択。
  2. 「詳細」を選択
  3. 表示設定 > 画質 を選択する。

 

4. 【接続する側】接続する際に個別に設定する

追記(2013/02/11): 上記のようにデフォルトの接続設定をした後に、特定のコンピュータにフルアクセスしたい場合、次の手順で行う。

  1. 「コンピュータ&パートナー」を表示する。
  2. 接続先の相手をダブルクリックすると、「TeamViewerの認証」のダイアログが表示される。
  3. 詳細」を表示し、「アクセスコントール」から「フルアクセス」を選んで接続する。

SnapCrab_NoName_2013-2-11_14-16-59_No-00

2011年8月17日水曜日

Google Chrome でドラッグにより「選択した単語を検索」し、「リンクを開く」 Gestures for Chrome のスーパードラッグ

1. Google Chrome で検索と、リンクを開く操作を素早く行いたい

Google Chrome で、以下の操作をしたい。
  1. 選択したテキストをドラッグして検索する
  2. リンクをドラッグして、新規タブに開く
Firefox ではアドオン Easy DragToGo, DragIt, Super Drag を用いると実現できる。

2. Gestures for Chrome のスーパードラッグ

マウスジェスチャー機能
Gestures for Chrome(TM) は、「マウスジェスチャー」により、ブラウザを操作するための拡張機能。
マウスジェスチャーの設定は、
  • オプション > Actions タブ
で割り当てることができる。
SnapCrab_No-0098
この拡張機能に、上記の操作を行うことができる機能が含まれている。

「スーパードラッグ」を有効にする
  • Gestures for Chrome の設定 > Basics タブ
における「スーパードラッグ」にチェックを入れる。
CropperCapture[297]

アクションの設定
次に、Drag Actions タブ の for link, for text のそれぞれに対して、add new gesture ボタンを押す。
マウスをドラッグして上下方向の操作を追加し、
  • 下方向の操作により、バックグラウンドで処理
  • 上方向の操作により、フォアグラウンドで処理
という設定にする。
CropperCapture[299]
ただし、ジェスチャーの設定を行う前に、以下の操作をしないと、ジェスチャーを設定することができなかった。
もしくは、
  1. for link, for text に予め設定されているジェスチャーを全て削除。
  2. 一度、Drag Action タブ以外のタブをアクティブにする。
  3. Drag Action タブを再度アクティブにする。このとき、すべてのジェスチャーが完全に消えていることを確認する。
この後、add new gesture ボタンを押して、ジェスチャーを設定した。

ブルースクリーンの原因は無線LAN子機だった

1. 再び BSOD が頻発

近頃まで、割と安定していた PC 。オーバークロックしても大丈夫なように BIOS を調整していた。

しかし、最近、また動画の再生中に、突然ブルースクリーンになることが頻発するようになった。

以下の対策をしたけれど、どれも効果なし。

  • オーバークロックをやめて、定格で運用。
  • Flash Player を再インストール。
  • グラフィックボードのドライバを、最新のものから、安定していると言われるバージョンまでを各々インストール。
  • Flash や Firefox のハードウェアアクセラレーションを切る。
  • デフラグとハードディスクのエラーチェック

 

2. BlueScreenView で BSOD の原因を探る

BlueScreenView を使うと、BSOD の原因を探ることができる。

ブルースクリーンで強制終了した原因を解析して教えてくれるフリーソフト「BlueScreenView」 – GIGAZINE によると、
大体どのドライバが原因でクラッシュしたかがわかるので、あまりにも何度も同じドライバが原因でブルースクリーンが起きる場合には、そのドライバをアンイ ンストールするか、アップデートして最新版にするか、あるいは旧バージョンで安定したドライバに置き換えるとたいていの場合、その問題が解決します。ピンク色になっているのがおそらく原因と思われるドライバです。

より、ダウンロードしてインストール。

BlueScreenView で調べた結果、

Caused By Driver

の列に何度も記載があるのは、以下の2つ。

  • nwifi.sys
  • ntoskrnl.exe

nwifi.sys は無線LAN に関係しているようだ。

 

3. 無線LAN子機が怪しい

自分が使っている無線LAN の機器は、BUFFALO の WLI-U2-KG54L

調べてみると、同じ無線LAN子機を使い、ブルースクリーンになる状況が自分とよく似ている人がいた。

6月20日のWindowsアップデート直後からブルースクリーン連発。。。

  • ブルースクリーンの発生は、100%がブラウジング中。
  • IE9またはFirefoxを起動、4~10ページブラウジングすると、急に回線が不安定になりだす。
  • 「あれ?Webページが開かなくなったぞ?」と思ったら、その10秒後くらいにブルースクリーン発生。
  • 自分の場合は、ブルースクリーンになる前、ブラウザの動画がおかしくなる。そして、マウスを動かしたときの感触から、直前に

    「ブルースクリーンの画面になる…!」

    ということがわかる。同じ型の無線LAN子機をもう一つ持っているが、同じ現象が生じる。

    上記のブログによると、

    無線LAN機器を新調したら、通信環境が驚くほど改善しました。

    と書かれていた。

     

    4. 新しい無線LAN子機にしたら、ブルースクリーンにならない

    価格.com - 無線LANアダプタ を確認すると、WLI-UC-G301N が価格が手頃で、評価も高く、売れ筋だった。

    このまま BSOD が続くようであれば、マザーボード、CPU、メモリを変えるしかない。それに比べれば、無線LAN子機を購入するだけなら出費が少なくて済む。

    半信半疑で無線LAN子機を購入。

    その結果、ブルースクリーンに全くならなくなった。複数の動画を同時に再生しても、何の問題もない。 ^^

    あまりにも劇的な変化に驚いた。ブルースクリーンの原因は、メモリかマザーボードにあると思い込んでいた。まさか、USB に接続していた無線LANが問題だったとは…。 (@_@;

     

    5. オーバークロックしても問題なし

    定格でブルースクリーンにならないので、再びオーバークロックすることにした。

    その結果、以前よりも低い電圧で、高いクロック周波数で動作させることができるようになった。

    BIOS の設定

    PC で利用しているパーツは以下のもの。

    BIOS の Advanced 設定。

    • Ai Overclock Tuner : Manual
    • CPU Ratio Setting : 9.0
    • FSB Strap to North Bridge : 400MHz
    • FSB Frequency : 420
    • PCIE Frequency : 100
    • DRAM Frequency : DDR2-840MHz

    CPU, DRAM, North Bridge の電圧。

    • CPU Voltage : 1.275V
    • NB Voltage : 1.40V

    ( cf. とりあえず基礎知識を, DRAM Frequency の設定に気をつける )

    上記の設定でもブルースクリーンにならなくなった。

    ただし、メモリのレイテンシと電圧を設定した方が動きが良いようだ。

    DRAM Timing Conrtol : Manual
    • CAS# Latency : 6 DRAM Clocks
    • RAS# to CAS# Delay : 6 DRAM Clocks
    • RAS# PRE Time : 6 DRAM Clocks
    • RAS# ACT Time : 20 DRAM Clocks

    (cf. メモリに無理をさせない設定

    • DRAM Voltage : 1.95V

    ( cf. メモリの電圧を少し上げる )

     

    6. その他、変わったこと

    以前は、USB セレクティブ サスペンドの設定を無効にしないと、スリープから復帰できなかった

    無線LAN子機を変更してから、この設定を「有効」にしても問題なくなった。

    CPU は、Core 2 Duo E8400 を使っている。CPU の使用率を観察していると、以前より各々が独立して動いているように見える。

    マウスの動きも少し良くなった気がする。

    2011年8月7日日曜日

    Firefox で直前に選択していたタブに戻る - Tab Mix Plus を用いてキーボードでフォーカスを切り替える

    1. タブを切り替えるショートカットキーの動作を変えたい

    ブラウザでタブを切り替えるには、キーボードで、

    Ctrl + Tab

    を押す。 デフォルトの動作は、Ctrl + Tab を押すたびに、右側のタブにフォーカスが移る。

    しかし、この動作はイマイチ便利ではない。

    理由は、キーボードでタブを切り替える目的は、2 つのタブ間で内容を見比べたりすることだから。例えば、一つのタブで Google Docs を開きながら、別のタブで Goolge Docs に貼りつけたい内容を読む。このとき、キーボードで2つのタブを頻繁に切り替える。

     

    2. アドオン Tab Mix Plus で直前のタブに戻る

    Tab Mix Plus を使うと、上記の動作をカスタマイズできる。

    Tab Mix Plus の設定より、

    • オプション > イベント > タブ機能

    Ctrl + Tab で最近表示した順にフォーカスを移す」にチェックを入れる。

    CropperCapture[287]

    これにより、Ctrl + Tab を押すたびに、直前にフォーカスがあったタブに戻ることができる。

    デフォルトの動作のように、タブのフォーカスを順に移動させたい場合は、Ctrl キーを押下したまま Tab を押し続ければよい。

    Google Chrome も同じ設定にしたいのだけれど、どの機能拡張を利用すればいいんだろう (?_?)

    Ruby で簡単なテキスト処理 - ファイル処理と正規表現

    1. 目的

    テキストファイル内の、特定の文字列を変換し、新たなファイルに保存したい。

     

    2. 問題

    例えば、あるディレクトリ中の HTML ファイルを対象にして、img 要素の属性を変更したい。ただし、元のファイルを直接変更せず、拡張子を .php に変更したファイルを新たに作成する。

    img 要素の属性を変更する仕様は、

    <img class=”XXXXX” src=”YYYYY” alt=”ZZZZZ” />

    と記述があったら、

    <img clas=”XXXXX” src=”<?php echo PATH . "YYYYY"; ?>" alt="ZZZZZ" />

    とする。

     

    3. 方法

    ファイルの操作。

    • Dir.glob : ディレクトリの中のファイル名を取得する。
    • File
      • open : ファイルを開く。
      • basename : 拡張子を除く、ファイル名を取得する。

    エンコーディング。

    特殊な記法。

     

    4. ソースコード

    # -*- coding: utf-8 -*-
    
    Encoding.default_external = 'UTF-8'
    
    Dir.glob("*.html") do |f|
      File.open(f, "r") do |rf|
        File.open(File.basename(f, ".*") + ".php", "w") do |wf|
          rf.each do |line|
            if %r|(.*<img.+src=")(.+?)"| =~ line
              wf.puts %Q|#$1<?php echo PATH . "#$2"; ?>"#$'|
            else
              wf.puts line
            end
          end
        end
      end
    end

    上記は、UTF-8 で記述。

     

    5. 変更したい点

    上記は、以下の点が固定されている。

    • 対象とするファイル
    • ファイル名の変換の方法
    • 特定の文字列の変換の仕方

    これらの値と処理を変更できるようにしたい。

     

    手続きオブジェクトの利用

    処理を変更可能にする場合、関数の引数に、関数を渡せるように変更すれば良い。シンプルな処理なので、ストラテジーパターンを適用するほどでもない。 Ruby は関数を直接渡せないので、この場合、手続きオブジェクト を代わりに与える。

    手続きオブジェクトとはブロックをコンテキスト(ローカル変数のスコープやスタックフレーム)とともにオブジェクトしたものです。Proc クラスのインスタンスとして実現されています。

    関数の引数に、関数を渡せる言語では、素直に与えられた関数を呼び出すだけ良い。これに対して、Ruby で手続きオブジェクトを呼び出すには、Proc#call メソッドを使う。例えば、f を手続きオブジェクトだとすると、

    f.call(引数)

    と書いて呼び出す。

    上記 f に対応した、無名関数に相当する手続きオブジェクト作るには、

    lambda { |引数| 式 }

    と記述。lambda の代わりに proc と書くことができるが、lambda の方がシンプルのようだ。

    ( cf. Ruby のブロックと Proc )

     

    正規表現にマッチした変数を遅延評価

    パターンマッチに成功した値を格納する $1 のような特殊な変数の値は、パターンマッチが行われたタイミングに依存する。そのため、$1 を含む正規表現リテラルを交換できるように処理から抽出する場合、変数の評価が、パターンマッチ後に行われるようにしなければならない。

    評価を遅延させるためには、上記の手続きオブジェクトを利用する。

    ( cf. メタプログラミングRuby, p123 )

     

    オープンクラス

    拡張子を除いたファイル名を取得するメソッド名が一見したところわかりづらいので、既存の File クラスにメソッドを追加する。

     

    変更したソースコード
    # -*- coding: utf-8 -*-
    
    Encoding.default_external = 'UTF-8'
    
    class File
      def self.without_ext(filename)
        self.basename(filename, ".*")
      end
    end
    
    def convert(targets, cnv_filename, f)
      Dir.glob(targets) do |filename|
        File.open(filename, "r") do |read_file|
          File.open(cnv_filename.call(filename), "w") do |write_file|
            read_file.each do |line|
              write_file.puts(f.call(line))
            end
          end
        end
      end
    end
    
    re = %r|(.*<img.+src=")(.+?)"|
    rplc = lambda{ %Q|#$1<?php echo PATH . "#$2"; ?>"#$'| }
    
    convert("*.html", 
            lambda { |filename| File.without_ext(filename) + ".php" }, 
            lambda { |line| if re =~ line then rplc.call else line end })

     

    矢印ラムダ

    Ruby 1.9 より、lambda の代わりに矢印ラムダを使える。

    使い方は、Arrow Lambdas, a Ruby 1.9 Vignette | Rails Fire によると、

    -> { } # the basic form
    ->(x) { x * 2 } # with an argument
    -> x { x * 2} # (without parenthesis, too)
    ->(x, y) { x * y } # multiple arguments
    ->(x, y = 2) { x * y } # default arguments
    ->(x, y, &z) { x * y * z.call } # take a block

    cf. The Ruby programming language - Google ブックス

    こちらの書き方のほうが、引数が、関数の引数らしく見えるかも。

     

    関連記事

    2011年8月5日金曜日

    Excel, LibreOffice, SQL におけるワイルドカード (*) の意味

    1. Excel でワイルドカード

    Excel で文字データを入力した。入力中、不明なデータについては、半角で

    ?

    とした。後になって、不明なデータを検索しようと `?’ を検索。しかし、上手くヒットしない。ただし、全角の

    で検索すると、半角の ? がヒットした。

    なぜなら、Excel では、半角の `?’ が 任意の一文字を表すため。また、全角の `?’ は、文字通りクエッションマークとして認識され、デフォルトでは半角と全角を区別しないことにより、半角の `?’ も検索対象となるため。

    「*」と「?」を検索する:Excel即効テクニック によると、

    Excelでデータを検索するときに文字列の一部が分からなくても、ワイルドカードと呼ばれる特別な記号「*」と「?」を使って検索できるのはご存知の通り。「*」は任意の文字列を表し「?」は任意の1文字を表す。…

    「*」と「?」を検索文字として指定するときは「~*」「~?」のように「~」を付けて入力すればよい

    正規表現 – Wikipedia の書き方とは違うので気をつける必要がある。

     

    2. LibreOffice で正規表現による検索

    これに対して、LibreOffice では、正規表現で検索できる。

    Writer/Using Wildcards in Text Searches/ja - LibreOffice Help によると、

  • 編集 → 検索と置換を選択します。
  • ダイアログを展開するには、詳細オプションをクリックします。
  • 正規表現チェックボックスを選択します。
  • 素直に書けるので、検索するときに間違えることはない。

  • 任意の 1 文字を表すワイルドカードは、ピリオド記号 (.) です。
  • 直前の文字の任意回数の繰り返し (ゼロ回を含む) を示すワイルドカードは、アスタリスク記号です。
  • LibreOffice の方がシンプルで好きだなぁ。

     

    3. SQL との比較

    ちなみに、SQL では、任意の一文字を表すのに `_’ を用いる。

    SQLの基礎「SELECT」文を覚えよう によると、

    (4) LIKE条件
    文字の検索条件を指定します。ここで、%と_(アンダースコア)は特殊な意味が割り当てられており、%は「任意の文字数の任意の文字」_は「1文字の任意の文字」を表します。

    Access は `?’, `_’ が任意の一文字を表す。

    あいまいな条件抽出 - LIKE演算子 : SQL入門講座 によると、

    アスタリスク (*)
    パーセント(%)

    0文字以上の任意の文字列を表す。

    疑問符(?)
    アンダスコア(_)

    任意の一文字を表す。

    普段から使ってないと、混乱する。 (+_+)

    上方向への視線移動を少なくし、表示される情報量を絞ると、PC が使いやすくなる

    1. モニタが広いと視線の移動が疲れる

    a. 縦方向にも解像度が高いモニタ

    大きくて解像度が高いモニタが普通となった昨今のデスクトップPC。小さなモニタを使っていたのは今は昔。アクティブなウィンドウを画面一杯に広げ、アプリケーションを利用していた頃がなつかしい。

    現在、自分が使っているモニタの解像度は WUXGA(1920×1200)価格.com で調べると、売れ筋のサイズは フルHD(1920×1080)

    自分のモニタは、売れ筋より縦方向にやや解像度が高い。このため、ブラウザのウィンドウを縦一杯に広げた場合、表示領域が結構広くなる。

    下図に示されている通り、WUXGA と HD1080 とを見比べた場合、それほど違いはないように見えるが使ってみるとかなり違う。

     

    b. 視線の上方向への移動が辛い

    当初、アプリケーションのウィンドウを縦方向に目一杯広げて使っていた。

    Windows 7 には、「Aero スナップ」という、画面いっぱいにウィンドウを広げる機能がある。

    スナップ - Windows 7 の機能 - Microsoft Windows

    ウィンドウをドラッグする場所によって、垂直方向に広げたり、全画面表示にしたり、または別のウィンドウと左右に並べて表示することができます。スナップを使えば、ウィンドウの閲覧や整理、比較が簡単になります…

    モニタの表示領域が広いのは快適である。しかし、なぜかブラウザを使っているときにストレスを感じるようになった。理由を考えてみると、ブラウザを利用するときの視線の移動に原因があった。

    ブラウザに表示される記事の内容は、通常上から下へと書かれている。視線の移動は上から下へと移動していく。タイトルが表示されているタブは上に位置している。ある記事を読んだ後、別のタブに開かている内容を読みたい場合、視線は再び上と戻さなくてはならない。この上方向への移動を繰り返す動作が辛い。(+_+)

    これに対して、視線の横方向や下方向への動きは全く辛くない。

    マウスホイールがない時代、ブラウザで文章を読み進めていくとき、スペースキーを押して一画面分をスクロールしていた。今では視線の移動を最小限に抑えるため、読みたい内容をこまめにマウスホイールで視線の先に移動させている。画面のサイズは大きいが、見ている範囲は割と狭い。

     

    c. 画面が広いと目に飛び込んでくる情報が多くなる

    表示領域が広いと、目に入る情報量が増える。そのため、大量の情報に惑わされる。

    それは、電車の中で他人が携帯で会話しているのが不快に感じるのと似ている。聞くつもりはないけれど、音声が強制的に耳に入る。頭の中で自動的に意味の解釈が進み、話している内容を嫌でも意識してしまう。

    iPad のようなタブレット型のデバイスは、割と使いやすそうに見える。その理由は、表示される範囲が限られているためだろう。

     

    2. 上下方向の視線移動を抑えるための方法

    a. ウィンドウの縦方向を狭める

    上下方向の視線移動を抑えるには、ウィンドウを縦方向目一杯に広げるのをやめれば良い。

    使わない空間を開けておくのはもったいないので、ウィンドウを狭めて使用するという考えになかなか至らなかった。

    CropperCapture[276]-vert

    上図では、下側のウィンドウは 100ピクセルほど縦方向に狭めた。見た目はあまり変わらないが、視線の上下運動は結構楽になる。

     

    b. Aero スナップを無効にする

    CropperCapture[277]ウィンドウを画面いっぱいに広げる機能は必要なくなったので、Aero スナップを無効にした。

    • コントロール パネル\コンピューターの簡単操作\コンピューターの簡単操作センター\マウスを使いやすくします

    の「ウィンドウの管理を簡単にします」における

    • 「ウィンドウが画面の端に移動されたとき自動的に整列されないようにします」

    にチェックを入れる。

    もしくは、スタートメニューより、「プログラムとファイルの検索」フィールドに

    「端」

    と入力すれば、上記項目にすぐにアクセスできる。

     

    c. ウィンドウの大きさ変えるには hMouseLimit を利用する

    Aero スナップに頼らず、ウィンドウの大きさを変えには、hMouseLimit を使うと便利。

     

    3. 上下方向の視線移動を抑えるためのアプリケーション・アドオン

    a. Firefox の Tab Mix Plus でタブをウィンドウの下部に表示

    CropperCapture[266]ブラウザのタイトルを見上げる動作は辛い。下部にタブがある方が視線の移動が楽なので、Tab Mix Plus を使ってカスタマイズする。

    • Tab Mix Plus のオプション > 表示 > タブバー > タブバーの位置

    を「Bottom」に設定した。

     

    b. 画面の情報量を減らすには仮想デスクトップを利用

    画面の情報量を減らすには、仮想デスクトップを使うと良い。必要な情報を見ている画面から追い出し、作業単位に画面を割り当てる。

    追記(2014/5/4): Firefox 29 の新 UI `Australis’ ではウィンドウ下部に置いていたタブの表示が崩れた。about:config でウィンドウ上部にタイトルを表示。

    2011年8月2日火曜日

    AutoHotkey で Esc キーを別のキーに割り当てる - Ctrl + [ でエスケープキーを入力

    1. エスケープキーを入力するための代替キーを設定する

    入力や操作を取り消すために「エスケープキー」を使う。

    エスケープキーは、キーボードの左上に位置する。ホームポジションから遠いため、押しにくい。(+_+)

    そこで、エスケープキーを入力するために、別のキーを割り当てることにした。

     

    2. Ctrl + [ で Esc を入力

    では、どのようなキーを Esc に割り当てるのが適切だろう?

    例えば、Emacs では、

    C-[

    を入力すると、エスケープキーが入力される。

    10.14 Escape キーがない場合はどうしたらいいのですか? によると、

    C-[ を代わりに使ってください。これは ESC と同じく ASCII コードの 27 を送信します。

    vi でも同じ。

    Escキーが遠い - このブログは証明できない。」によると、

    Vimの悩ましき問題点といえば、Escキーが遠いことです。よく使うのに、遠い。

    そこで、Ctrl+[を押すと、Escキーを押したことになるそうです。

    そこで、Ctrl + [ を Esc キーに割り当てることにした。

     

    3. AutoHotkey で キー入力の変更

    予め、AutoHotkey Download より、AutoHotkey_L をインストールしておく。

    エディタで、以下の内容を記述する。

    ^[::Send {Esc}

    これをファイルに保存し、拡張子を .ahk として、適当に名前をつける。

    後は、スタートアップに入れて、起動するようにした。

    Esc キーを Ctrl + [ に変更したところ、思っていた以上に快適になった。

     

    関連記事

    参考サイト