2012年3月30日金曜日

Firefox の動作がおかしいので、すべての履歴を消去した

1. 一部のサイトが正常に表示されない

Firefox で、一部のサイトが正常に表示されなかったり、読み込みが遅くなった。

また、以下のサイトで表示がおかしい。

アドオンをたくさんインストールしているから、動作が多少おかしくなっても仕方がないと思っていた。しかし、最近の Firefox の動きを見ていると、明らかに異常。試しに、アドオンを全て無効にしても、上記の表示は変わらない。

また、プロファイルの異なる Firefox を起動すると、メインで使っているブラウザだけ動きが鈍い。

Firefox が重くなったら、新しくプロファイルを作成するのが良い。しかし、各アドオンの設定をし直すのが面倒なので、及び腰になっていた。

 

2. Firefox の履歴を消去したら、正常に表示された

これまで、Firefox のアップデートを重ねている。プロファイルを新しく 作成し直したことはあるけれど、履歴を消去したことはなかった。

履歴を消すには、Firefox ボタンより、オプションを選択。

  • プライバシー > 履歴の「最近の履歴を消去」

をクリック。

img_0103

消去する履歴の期間を「すべての履歴」とし、消去する項目を全てチェックし、「今すぐ消去」した。

これにより、再起動した後、Firefox の動作が良くなった。上記の問題があったサイトも、正常に表示される。

履歴を消去することによって、動作が良くなると思ってなかったので、何が影響していたのか検証していない。こんな基本的な操作で動作が良くなるのなら、もっと早く試しておけば良かった。 (+_+) プロファイルを作り直す前に、履歴の消去を試す価値はある。

 

関連記事

2012年3月28日水曜日

Firefox でアドオン Configuration Mania を使い SPDY を有効化

1. Firefox で SPDY を有効化

Firefox 11 は、SPDY プロトコルに対応している。

Firefox 11.0 リリースノート によると、

ページの読み込みを高速化する SPDY プロトコルに対応し、開発者がテストできるようになりました。(Bug 528288)

ただし、デフォルトで SPDY は無効になっている。将来は、デフォルトで有効になりそう。

「Firefox 13」の「Aurora」版が公開--「SPDY」がデフォルトでオンに - CNET Japan

米国時間3月19日に公開された「Firefox 13」初となる「Aurora」版で、「SPDY」プロトコルがデフォルトでオンにされたのだ。これはSPDYを「Firefox」に搭載するための4カ月以上にわたる取り組みの集大成と言える。

 

Configuration Mania

Firefox では、Configuration Mania を使い、SPDY を有効にできる。

Configuration Mania の設定より、

  • HTTP ネットワーク > 接続

にける「SPDYプロトコルを有効にする」にチェックを入れる。

img_0102

 

2. SPDY indicator で見分ける

SPDY プロトコルが使われているサイトを見分けるには、アドオンを利用する。

Twitter、Google提案のSPDYプロトコルを導入 | マイナビニュース によると、

TwitterがSPDYで通信しているかどうかは、SPDYを観測する拡張機能を入れることで確認できる。ChromeはChrome SPDY indicatorを、FirefoxはSPDY indicatorをインストールする。この拡張機能はいずれもSPDYで通信した際に、アドレスバーにグリーンの稲妻アイコンが表示されるようになっている。

 

3. SPDY は SSL の上にセッションレイヤーを追加する

SPDY の読み方は、SPDY - Wikipedia によると、

SPDY (pronounced speedy)[1]

スピーディー。

SPDY プロトコルとは、Google提唱の新プロトコル「SPDY」とは--SPDYで変わること、変わらないこと - builder によると、

SPDYは2010年に発表され、2011年前半にはブラウザのChromeに実装され、一般のユーザーでも利用できるようになった。…

SPDYではHTTPのアプリケーションレイヤーとTCPトランスポートレイヤーの間に新しいセッションレイヤー(フレーミングレイヤー)を割り込ませてデータの流れをコントロールする。…

TCPとHTTPの橋渡しとなるSPDYのセッションでは、次のような機能が実現される。

  • 1つのSPDY接続で同時に複数のリクエストを受け付けることができる。リクエスト数に上限はない。
  • クライアントはリクエストに優先度を付けることができる。
  • ヘッダはデフォルトで圧縮され、不要なヘッダは削除される。
  • サーバプッシュ通信(クライアントからのリクエストを待たずに、サーバ側からデータを送信すること)をサポートする。

SPDY: An experimental protocol for a faster web - The Chromium Projects

SPDY adds a session layer atop of SSL that allows for multiple concurrent, interleaved streams over a single TCP connection.

通信プロトコルについては、以下を参照。

サーバとしては、InfoQ: JettyがSPDYをサポート(2012年3月26日)

Jettyはバージョン7.6.2のリリースで、SPDY™プロトコルサポートした。当初はバージョン8.2向けに実装されていたが、7.6.2と8.1.2に後方移植された。また、JettyとHightideアプリケーションサーバの今後のバージョンでもサポートされる予定だ。

SPDY™は次世代のHTTP接続向けトランスポートレイヤであり、デフォルトではGoogle Chromeで利用できる。また、Firefox 11ではコンフィグを設定すると有効になる。まだ標準化されていないが、IETFへhttpbisワーキンググループのドラフトとして提案されている。多くのGoogleのサービスはSPDY経由で利用できる。また、一般的なウェブサイトにもSPDYをサポートしているサイト(such as WebtideTwitterなど)がある。

DNS の IPv6 の設定を Google Public DNS に変更

1. DNS に Google Public DNS を利用する

DNS(Domain Name System)は、Google Public DNS を利用している。

Domain Name System - Wikipedia とは、

インターネット上のホスト名や電子メールに使われるドメイン名と、IPアドレスとの対応づけを管理するために使用されている。

Google Public DNS は、Using Google Public DNS - Public DNS — Google Developers によると、

  • 8.8.8.8
  • 8.8.4.4

IP アドレスがシンプルで覚えやすい。ただし、この IP アドレスは IPv4 のためのもの。

IPv4アドレスの枯渇 によると、

IPv4のグローバルアドレスが枯渇してしまい、新規にIPv4のグローバルアドレスを割り当てることができなくなるため、インターネット上に公開されたIP機器を増設することが不可能になる問題である。

 

IPv6

700億リクエストを処理、Google DNSサービス | マイナビニュース(2012/02/16) によると、

IPv6への取り組みも実施しており、「World IPv6 Day」にはIPv6で利用するためのアドレスとして「2001:4860:4860::8888」および「2001:4860:4860::8844」を発表した

IPv6 - Wikipedia とは、

インターネットプロトコルの次世代版 (Version 6) となる通信プロトコルである。

現在、主流のIPv4にかわるものとして、それまで約 232(= 約42億)個であったIPアドレスを約 2128(= 約340澗)個まで使えるようにしたのが大きな特徴の一つである。340澗個のアドレスとは、340兆の1兆倍の1兆倍のアドレス空間があるということである。この値は、事実上無限大であると考えても差し支えないほど大きい。

 

2. Windows 7 における IPv6 の設定

Windows 7 において、IPv6 で、Google Public DNS を使ってみる。

  1. コントロール パネル > ネットワークとインターネット > ネットワークと共有センター を開く。
  2. 接続をクリックすると、「ネットワーク接続」の状態を表示するダイアログが開く。
    (ここで IPv6 が利用できる場合、「IPv6 接続」が「インターネット」と表示されている。)
  3. 「ネットワーク接続」の状態のプロパティをクリックすると、「ネットワーク接続」のプロパティを表すダイアログが開く。
  4. ネットワークタブのインターネット プロトコル バージョン6(TCP/IPv6) のプロパティをクリックすると、更にダイアログが開く。img_0100
  5. 「次の DNS サーバーのアドレスを使う」を選択し、
  6. 優先 DNS サーバーを、上記の 2001:4860:4860::8888 を設定し、
  7. 代替 DNS サーバーを、2001:4860:4860::8844 に設定した。

cf. Using Google Public DNS - Public DNS — Google Developers

 

3. Firefox の Configuration Mania で DNSプリフェッチを有効にする

IPv6 の設定をしたので、 ついでに Firefox で「DNSプリフェッチ」を有効にした。

Configuration Mania をインストールした後、設定画面より、

  • ブラウザ > その他

において、「DNSプリフェッチを有効にしてページの表示速度を向上する」にチェックを入れた。

img_0101

また、DNSプリフェッチの設定の上にある

  • IPv6でDNSに問い合わせをしない

チェックボックスは外した。

 

関連記事

参考サイト

2012年3月24日土曜日

Firefox の高速化に関する設定をリセット - about:config を利用して

1. デフォルトの設定に戻したい

Firefox の設定を変更することにより、高速化を図るアドオンはいくつかある。

Firefox のバージョンによって、デフォルトの設定値が異なるらしい。

上記のアドオンを削除した後、設定した値をデフォルトに戻したい。

 

2. about:config で検索する文字列

には、Firefox の高速化に関する設定が詳しく説明されている。ここで説明されている値をデフォルトに戻す。

ロケーションバーで

about:config

を入力。

各値を検索するのは面倒なので、以下の文字列を検索。

  • network.
  • content.
  • nglayout.
  • browser.cache.
  • User.Interface.

太字になっている設定を探し、高速化に関するものであれば、

  • 右クリック > リセット

を選択する。

追記(2012.4.22): 上記に加え、JavaScript 関係の設定もリセットしておくと良い。

  • javascript

追記(2013/09/03): dom.max もリセットするようにした。

追記(2015/3/10): Firefox で警告「応答のないスクリプト」ダイアログが邪魔 なので、スクリプトの実行時間に関する設定だけは残した。

追記(2013/10/29): Configuration Mania を使う場合、上記のように一度設定をデフォルトに戻してから行う方が調子が良かった。

 

関連記事

参考記事

2012年3月22日木曜日

Process Lasso で CPU の平均使用率の高いプロセスの優先度を下げて、レスポンスを良くする

Windows のプロセス管理に Process Lasso を利用している。

PC のレスポンスを良くするには、必要に応じて、各アプリケーションの優先度を手動で設定するのが良い。

そのためには、

  1. Process Lasso のメイン画面を表示させ、CPU の平均使用率 (CPU avg) を確認する。
  2. この列をクリックして、CPU の平均使用率を降順に表示させる。
  3. 平均使用率の高いアプリケーションの内、頻繁に操作しないものを右クリック。
  4. Default priority class を Below normal に設定する。

img_0092

逆によく利用するアプリケーションに対しては、Default priority class を High, Above normal に設定。

自分の場合、Firefox.exe と、マウス用のユーティリティである SetPoint.exe を High にしている。これにより、Firefox で、マウス操作をしたときのレスポンスが良くなった。

一度、優先度を設定しておけば、Process Lasso が優先度を覚えてくれる。再起動する度に、設定し直す必要はない。

2012年3月13日火曜日

レキシカルスコープとダイナミックスコープ

1. レキシカルスコープとダイナミックスコープの違い

言語によって、変数のスコープに関する仕様が異なる。スコープには、レキシカルスコープとダイナミックスコープがある。採用しているスコープにより、変数の参照の仕方が違う。

レキシカルスコープでは、プログラムとして書かれた字句を解析すれば、変数のスコープを把握できる。実行時のことは考えなくて良い。これに対して、ダイナミックスコープでは、実行時における関数の呼び出され方により、参照できる変数が異なる。

用語の説明を見る前に、具体例を見た方が理解しやすい。

Scope (computer science) - WikipediaLexical scoping and dynamic scoping によると、

… if function f invokes a separately-defined function g, then under lexical scoping, function g does not have access to f's local variables (since the text of g is not inside the text of f), while under dynamic scoping, function g does have access to f's local variables (since the invocation of g is inside the invocation of f).

(同上より、装飾は引用者による)

関数 f から関数 g を呼び出す場合を想定する。関数は、各々独立に定義されており、一方の関数がもう一方をネストしてないとする。

関数 f で定義されているローカル変数を、関数 g から、

  1. レキシカルスコープでは、参照できない。
  2. ダイナミックスコープでは、参照できる。

img_0058

 

各言語が採用しているスコープ

言語によって、採用しているスコープが異なる。もしくは、両方使える。

Lexical scoping によると、

Lexical scoping is standard in all ALGOL-based languages such as Pascal, Modula2 and Ada as well as in modern functional languages such as ML and Haskell.

Dynamic scoping

Some languages, like Perl and Common Lisp, allow the programmer to choose static or dynamic scoping when defining or redefining a variable. Logo and Emacs lisp are examples of languages that use dynamic scoping.

多くの言語で、レキシカルスコープが採用されている。ダイナミックスコープを採用している言語として、Emacs Lisp がある。

 

レキシカルスコープの例

Scope (computer science) - Wikipedia に書かれていた例を、各言語で試してみる。

Python

x = 7
def g(): return x
def f(): 
    x = 9
    return g()
print f()           #=> 7

javascript

var x = 7;
function g(){ return x; }
function f(){ 
    var x = 9;
    return g();
}
f();                //=> 7

Haskell

x = 7
g = x
f = let x = 9 in g
main = print f      #=> 7

scheme

(define x 7)
(define g (lambda () x))
(define f
  (lambda ()
    (let ((x 1))
      (g))))
(f)   ;=> 7

関数 f が呼び出された後に、関数 g が呼び出されても、関数 g の中にある変数の参照先は変わらない。

レキシカルスコープの実行結果を見ると、「コレ普通じゃない?」と感じる。理由は、

Dynamic scoping によると、

dynamic scoping can be dangerous and few modern languages use it.

ダイナミックスコープは取り扱いが難しいので、モダンな言語でほとんど採用されていない。そのため、レキシカルスコープの考え方の方が馴染みがある。

 

ダイナミックスコープの例

続いて、ダイナミックスコープを採用している Emacs Lisp の例。

Emacs Lisp

(setq x 7)
(defun g () x)
(defun f ()
  (let ((x 9))
    (g))
(message "%d" (f))  ;=> 9

レキシカルスコープの言語に慣れていると、ダイナミックスコープの結果に違和感を感じる。

関数 f を呼び出した後、関数 f の中で関数 g が呼び出される。これにより、関数 g の中にある変数の参照先が変わってしまう。

もし、関数 f が呼び出されず、関数 g だけが実行されたら、

(setq x 7)
(defun g () x)
(message "%d" (g))  ;=> 7

関数の呼び出され方により、参照できる変数が変わる。実行時のことを考える必要なければならない。そのため、コード全体を見通すことが大変そう。 (+_+)

では、ダイナミックスコープにメリットはあるのだろうか?

Emacs Lisp - Wikipedia によると

Emacs Lispは、アプリケーション・プログラミングで使われる方言群であるSchemeCommon Lispとは根本的に異なる。大きな違いの1つは、デフォルトで字句的スコープではなく動的スコープを使うことである。つまり、呼出し関数の局所変数は、ポインタや参照を渡さなくとも、呼び出された関数から参照できる。

関数から呼び出された側の関数は、自分のローカルにある変数の内容が、呼び出された文脈により変化する。

レキシカルスコープ的な視点で考えると、呼び出された側の関数は、呼び出した側の関数にネストされたかのように見える。

ところで、なぜ Emacs Lisp は、ダイナミックスコープを採用したのだろう?

Scope (computer science) - Wikipedia, the free encyclopedia によると、

Correct implementation of static scope in languages with first-class nested functions is not trivial, as it requires each function value to carry with it a record of the values of the variables that it depends on (the pair of the function and this environment is called a closure).

Dynamic scoping is fairly easy to implement. To find an identifier's value, the program could traverse the runtime stack, checking each activation record (each function's stack frame) for a value for the identifier.

レキシカルスコープより、ダイナミックスコープの方が実装が簡単とのこと。

Scope - GNU Emacs Lisp Reference Manual にも、同様のことが書かれている。

Emacs Lisp uses dynamic scoping because simple implementations of lexical scoping are slow. In addition, every Lisp system needs to offer dynamic scoping at least as an option; if lexical scoping is the norm, there must be a way to specify dynamic scoping instead for a particular variable. It might not be a bad thing for Emacs to offer both, but implementing it with dynamic scoping only was much easier.

 

2. レキシカルスコープとダイナミックスコープにおける変数の生存期間

書かれたテキストにより決まるレキシカルスコープ

Scope (computer science) - WikipediaLexical scoping and dynamic scoping によると、

In lexical scoping (…), if a variable-name's scope is a certain function, then its scope is the program text of the function definition: within that text, the variable-name exists, and is bound to its variable, but outside that text, the variable-name does not exist.

レキシカルスコープでは、関数の中で定義されてる変数のスコープは、プログラムの字句によって決まる。関数の中に書かれている変数は、その関数が記述されている内側で存在するが、外側では存在しない。

 

実行時に決まるダイナミックスコープ

Scope (computer science) - WikipediaLexical scoping and dynamic scoping によると、

By contrast, in dynamic scoping (or dynamic scope), if a variable-name's scope is a certain function, then its scope is the time-period during which the function is executing: while the function is running, the variable-name exists, and is bound to its variable, but after the function returns, the variable-name does not exist. (同上より)

ダイナミックスコープでは、関数の中で定義されてる変数のスコープは、その関数が実行されている期間と同じ。関数が実行されている間、変数は存在するが、関数の実行が終了すると変数は消える。

 

3. 実装から見る、名前の解決

実装の難しさ

レキシカルスコープとダイナミックスコープを実装する難しさについて、以下のように述べられている。

Lexical scoping

Correct implementation of static scope in languages with first-class nested functions is not trivial, as it requires each function value to carry with it a record of the values of the variables that it depends on (the pair of the function and this environment is called a closure).

レキシカルスコープを実装することが難しいのは、関数に対して、クロージャと呼ばれる、その関数が依存する変数(環境)を持って回る必要があるため。

Dynamic scoping

Dynamic scoping is fairly easy to implement. To find an identifier's value, the program could traverse the runtime stack, checking each activation record (each function's stack frame) for a value for the identifier. In practice, this is made more efficient via the use of an association list, which is a stack of name/value pairs. Pairs are pushed onto this stack whenever declarations are made, and popped whenever variables go out of scope.[1]

ダイナミックスコープの実装が簡単なのは、実行中の関数に関する情報を持つスタックの中から、参照したい値を探すだけで済むため。

スタックとは、Call stack - Wikipedia によると、

Since the call stack is organized as a stack, the caller pushes the return address onto the stack, and the called subroutine, when it finishes, pops the return address off the call stack and transfers control to that address. If a called subroutine calls on to yet another subroutine, it will push another return address onto the call stack, and so on, with the information stacking up and unstacking as the program dictates.

サブルーチンを呼ぶときに、利用されるデータ構造。サブルーチンが呼び出されるとき、スタックにリターンアドレスが積まれ、呼び出されたサブルーチンが終了すると、リターンアドレスが取り出され、そのアドレスに制御が移される。

プログラムを実行するときの、メモリの利用のされ方と名称について、詳しくは、 Data segment - WikipediaProgram memory を参照。

The computer program memory is organized into the following:

 

名前(識別子)の探し方

変数を参照するとき、レキシカルスコープとダイナミックスコープでは、以下の点が異なる。

Lexical scoping によると、

With lexical scope, a name always refers to its (more or less) local lexical environment. This is a property of the program text and is made independent of the runtime call stack by the language implementation. Because this matching only requires analysis of the static program text, this type of scoping is also called static scoping. …

Static scoping allows the programmer to reason about object references such as parameters, variables, constants, types, functions, etc. as simple name substitutions. This makes it much easier to make modular code and reason about it, since the local naming structure can be understood in isolation.

レキシカルスコープでは、「名前」が指し示す対象は、プログラムの字句を見れば分かる。実行時のことを考える必要ない。そのため、プログラムのテキストにおいて、参照しているものの名前を置き換えるだけで、何を指し示しているか把握できる。

Dynamic scoping によると、

With dynamic scope, each identifier has a global stack of bindings. Introducing a local variable with name x pushes a binding onto the global x stack (…), which is popped off when the control flow leaves the scope. Evaluating x in any context always yields the top binding. In other words, a global identifier refers to the identifier associated with the most recent environment. Note that this cannot be done at compile-time because the binding stack only exists at run-time, which is why this type of scoping is called dynamic scoping.

ダイナミックスコープでは、実行時に変数のような識別子があると、スタックに積まれる。その後、識別子が必要になったら、スタックに積まれている順に検索される。つまり、実行中の関数から、一番近い場所にある環境から、対象を見つけ出そうとする。

先ほどの例で考えると、

(setq x 7)
(defun g () x)
(defun f ()
  (let ((x 9))
    (g))
(message "%d" (f))  ;=> 9
  1. 変数 x は 7 に束縛され、スタックに積まれる。
  2. 関数 f の呼び出しにより、変数 x は 9 に束縛され、スタックに積まれる。
  3. 関数 g が呼び出され、変数 x が参照される。このとき、直前にスタックに積んだ、中身が 9 の変数 x が取り出される。

これにより、結果が 9 となる。

2012年3月12日月曜日

Windows 7 でシャットボタンをスリープに変更する

Windows 7 を使うようになってから、シャットダウンするよりも、スリープさせるほうが圧倒的に多い。

PC をスリープさせるには、

  1. スタートメニューより、
  2. 「シャットダウン」ボタンの右横にある小さな三角印にポインタを乗せ、
  3. スリープを選択する。

毎回、この操作を行うのは面倒。

そこで、シャットボタンをスリープに変更することにした。

  • タスクバーで右クリック > プロパティ

[スタート]メニュー タブより、「電源ボタンの操作」のセレクトボックスで、「スリープ」を選択。

img_0078

これにより、スリープさせたいときは、スタートメニューからすぐに押せるようになる。

img_0080

キーボードからスリープさせたいときは、以下の順にキー入力を行えば良い。

  1. Windows キー
  2. Tab
  3. Tab
  4. Enter

2012年3月6日火曜日

Facebook でウォールに投稿した写真を、後からアルバムを作成してまとめる

1. 投稿した写真をアルバムに分けたい

Facebook に、これまで個別にウォールへ投稿した写真がある。

アルバムを新規に作成し、写真を内容ごとにアルバムに分けたい。

 

2. 空のアルバムを作成する

最初に、空のアルバムを作成する。

  1. 近況アップデートで、「写真・動画」を選択し、「写真アルバムを作成」する。 img_0079
  2. アルバムの「タイトル」を入力し、共有範囲を設定したら、「キャンセル」するimg_0084
  3. ダイアログが表示されたら、「アルバムを保存」ボタンを押す。

「キャンセル」すると、空のアルバムが作成される操作が分かりづらい。

 

3. 写真をアルバムに移動する

次に、新規に作成したアルバムに、写真を移動させる。

  1. 自分のタイムラインを表示する。
  2. 基本データの右側にある「写真」を表示する。
  3. アルバム「ウォールの写真」を開く。
  4. 「アルバムを編集」を選択する。
  5. ダイアログが表示されたら、「アルバムの写真を編集」を選択する。
  6. 移動させたい写真の「移動先」を、新しく作成したアルバムにする。
  7. 変更を保存する。

「アルバムを編集」と「アルバムの写真を編集」の 2 段階あるところが分かりづらい。

 

4. 空のアルバムを含めた、アルバム一覧を表示させる

アルバムの操作で一番分かりづらいのは、自分の写真一覧を表示させたとき、空のアルバムが表示されないこと。

空のアルバムを含めた、アルバム一覧を表示させるには、

  1. 自分のタイムラインを表示する。
  2. 基本データの右側にある「写真」を表示する。
  3. どのアルバムでのいいので、適当にアルバムを開く。
  4. アルバムのタイトルの下にある。 `XXXXX さん作成(アルバム)’と書かれている、「アルバム」のリンクをクリックする。

2012年3月5日月曜日

リボンUI を活用するためのショートカットキーの設定 - Windows LiveWriter の場合

1. リボン UI におけるショートカットキー

Windows Live Writer では、リボンUI が採用されている。

リボン (GUI) - Wikipedia によると、

リボンとは、マイクロソフトアプリケーションソフトウェアツールバータブバーで採用しているグラフィカルユーザインタフェース (GUI)である。Microsoft Office 2007で初めて搭載されて以降、徐々にリボンを採用したソフトが増えている。

WLW におけるリボンUI は、以下のようになっている。

img_0065

例えば、文章を書いていて、箇条書きにしたい場合は、

  • ホーム > 段落 > 中黒

を選択。キーボードショートカットを用いるなら、Alt キーを押した後、H を押し、

img_0067

ZP11 を順に押下した後、

img_0066

L1 を順に押す。

img_0068

しかし、この方法では、ショートカットキーが長すぎて、キー入力が面倒。 (+_+)

 

2. 短いショートカットキーを利用する

Windows Live Writer のウィンドウの幅を広げると、中黒が表示される。この場合、

  • Alt, H, L, 1

と順にキーを入力をすると、中黒を選択できる。

img_0070

便利なことに、上記のショートカットは、ウィンドウの幅が狭く、中黒が表示されてない先ほどの状態でも使えること。

 

3. 「クイック アクセス ツールバー」を利用して、ショートカットキーを短縮

よく使う操作に対して、より素早くアクセスするために、「クイックアクセスツールバー」に登録することができる。

例えば、中黒が、よく使うショートカットキーなら、、

  • 中黒のボタン(アイコン)の上で右クリック > 「クイック アクセス ツールバーに追加

を選択する。

これにより、 Alt, 1 を順に押下することにより、中黒が打てるようになる。

img_0071

USB スピーカーから音楽を再生し、それ以外の音をヘッドフォンで聞く - Winamp を使って

1. 音楽と、それ以外の音を出力する先を分けたい

PC から音を再生するために、USB で接続するスピーカーを使っている。

USB 接続のスピーカーから音楽を再生し、同時に PC から出ている音はヘッドフォンで聞きたい。

PCの音声出力口が2つ以上ある場合に、アプリケーションごとに音.. - 人力検索はてな によると、

Winamp、GOMPlayer、foobar2000といったサードパーティのメディアプレーヤーでは、音声の出力先を選択することができます。

そこで、音楽を再生するアプリケーションとして、Winamp を利用する。

 

2. 再生デバイスの設定

再生デバイスの確認をしておく。

  • タスクトレイより、スピーカーを右クリック > 再生デバイス

を選択。実際のデバイスと、再生デバイスとの対応は、

  • USB 接続のスピーカー: スピーカー, 4-USB Audio DAC
  • ヘッドフォン: スピーカー, SoundMAX Integrated Digital HD Audio

img_0065

ここで、ヘッドフォンを既定のデバイスに設定しておく。

 

3. Winamp の設定

Winamp のメニューより、

  1. オプション > 設定... > プラグイン > 出力 > Nullsoft DirectSound 出力において、設定ボタンを押す。
  2. 「デバイス」タブにおける、セレクトボックスで、USB 接続しているスピーカー (04: スピーカー(4-USB Audio DAC) を選択。

img_0057

これにより、Winamp で再生した音楽は、USB 接続のスピーカーから再生される。

 

4. 音量ミキサーの設定

USB スピーカーと、ヘッドフォンの音量を調整するには、音量ミキサーを使う。

  • タスクトレイより、スピーカーを右クリック > 音量ミキサーを開く

スピーカーで、調整したいデバイスを選択し、アプリケーションごとにスライダーを動かして、音量を調整する。

img_0066

 

5. VSTHost と ASIO4ALL を利用している場合

普段は、VSTHost を利用して、PC から出力される音質を調整している。

  1. この場合、再生デバイスにおいて、規定のデバイスとして、仮想的なサウンドデバイス(WsAudio_DeviceS(1))を指定。
  2. ASIO4ALL の設定で、USB Audio DAC のチェックを外し、SoundMAX Integrated Digital HD Audio > SoundMAX HD Audio O のチェックを付ける。

2012年3月2日金曜日

Facebook で共有範囲を指定して友達のウォール(タイムライン)に書きこむ - 自分の投稿を知らない人に見られたくない場合

1. 友達のウォールに投稿すると、友達の友達に見られる

Facebook で分かりづらいのは、プライバシーの設定。投稿した内容が、どの範囲の人に見られるか?という点。

例えば、自分が、友達 A のウォール(タイムライン)に書き込んだ場合、デフォルトでは、友達 A の友達は、自分の投稿内容を見ることができる。ただし、友達 A のプライバシーの設定によっては、全く書きこむことができない。

 

自分のウォールに対して、友達に書きこませない

自分のウォールに、友達が書き込めないようにするには、

  • プライバシー設定 > つながりの設定 > 設定を編集

img_0060

において、

  • 「あなたのタイムラインに投稿できる人」 を「自分のみ」

と設定する。

 

2. タグ付でも、友だちのウォールに投稿される

友達のウォールに書き込むには、直接、友だちのウォールに書き込む以外に、もう一つ方法がある。

タグ付け機能で、Facebookのやりとりを円滑に! - Facebook navi[フェイスブックナビ] によると、

投稿した内容を特定の相手に確実に伝えたいけれど、わざわざメッセージを送るほどではない。そんな時に便利なのが、Facebookの「タグ付け」機能です。[近況アップデート]の投稿画面で、「@友達の名前」と入力すると、ドロップダウンメニューで候補が表示されます。該当する友達の名前を選べば、タグ付け完了!

投稿した内容がそのまま相手のウォールにも投稿され、同時に「○○さんが投稿にあなたをタグ付けしました」というお知らせが通知されます。

(装飾は引用者による)

Twitter の返信と同じく、@ を使う。Twitter と異なるのは、

  1. 返信とは呼ばず、「タグ付け」と呼ばれる。
  2. 返信できる対象が限られていること。
  3. 自分と投稿した友達の、両方のウォールに投稿内容が表示される。

 

3. 友達からタグ付けされた投稿内容に対して、閲覧できる人を制限する

タグ付の機能により、友達から、自分のウォールに投稿されることがある。この投稿内容に対して、見ることができる人を制限したい場合、

  • プライバシー設定 > タグ付の設定 > 設定を編集

img_0059

において、

を変更する。

ただし、ここで閲覧できる人を制限したとしても、制限できるのは自分のウォールに対してのみ。

  1. 投稿した友達が、投稿した内容に対して、
  2. 共有範囲をどのように設定しているのか

により、投稿した友達のウォールにおける、投稿した内容を閲覧できる人が決まる。

 

4. タグ付で友達のウォールに投稿するとき、投稿内容を閲覧出来る人を制限する

タグ付で友達のウォールに投稿すると、自分が投稿した内容は、友達の友達にも見られる。

閲覧出来る人を制限したい場合、投稿するときに、「共有範囲」を設定する。

img_0061

 

予めリストを作成しておく

上記の方法による投稿を頻繁にする場合、閲覧できる人のリストを作成しておくと良い。

例えば、友達 A のウォールにタグ付で投稿したら、その内容は、リスト test に所属する人に見られても良いとする。

img_0062新しくリストを作成するには、

  1. 友達の「リスト」にマウスのポインタを近づけ、「もっと見る」を選択する。
  2. リスト test を新しく作成し、test に所属する人を追加。

投稿する場合は、

  1. 友達の「リスト」より、リスト test を選択する。
  2. 近況アップデートにおいて、タグ付きで、友達 A に対して投稿する。

これにより、友達 A に投稿した内容は、リスト test に所属する人だけが閲覧できる。友達 A の友達うち、自分がリスト test に所属させた人以外は、投稿を見ることができない。

2012年3月1日木曜日

Firefox で Google 日本語入力とスクロールのレスポンスを良くするには、相性の良いビデオカードのドライバをインストールする

1. たくさんのアドオンをインストールした Firefox で、Google 日本語入力の反応が悪い

Firefox にでアドオンをたくさん入れると、動作が重くなる。特に困るのが、日本語入力とマウスでスクロールしたときの反応悪さ。これが良くないとストレスがたまる。

IME として、Google 日本語入力を利用している。

アドオンを全く入れていない Firefox で、日本語変換を利用するときは全く問題ない。しかし、多くのアドオンをインストールした Firefox では、キー入力をしてもすぐに反応してくれない。

他のアプリケーションで、日本語入力をしても反応は悪くない。おそらく、Firefox とアドオンの利用状況が原因のようだ。

 

2. グラフィックボードのドライバを更新したら、レスポンスが良くなった

プロセスの優先度を上げても、あまり効果なし

日本語入力の反応の悪さを解消するために、プロセスの優先度を変更できる Process Lasso を使った。

優先度を変更するには、Process Lasso を起動し、

  • 対象のプロセスで右クリック > Default priority class > Above normal

しかし、Firefox や Google 日本語入力のプロセスの優先度を上げても、レスポンスはそれほど良くならなかった。

 

相性の良いビデオカードのドライバ

ビデオカードのドライバは、更新がある度にクリーンインストールしている。ビデオカードのドライバの更新によって、これまで Firefox における日本語入力の反応が良くなることはなかった。

使っているビデオカードは、NVIDIAGeForce 8600 GT

NVIDIAドライバダウンロード より、ドライバをダウンロードして、インストール。今回インストールしたバージョンは、

このバージョンをインストールしてから、日本語入力とスクロールの反応が良くなった。相性が良かったのだろうか。

併せて、上記の Process Lasso で、Firefox の優先度を上げたら、レスポンスがより改善された。