2011-06-27

Windows 7 でデスクトップアイコンの位置が変更できない…

Windows 7 でデスクトップのアイコンの位置が固定されてしまった。詳しく言うと、アイコンは移動できるのだけれど、Windows を再起動すると、アイコンの位置が以前のものに戻されてしまう。

で、解決策を発見。

C:\Users\(ユーザー名)\AppData\Local にある IconCache.db を削除するだけ。簡単簡単。

ちなみに、AppData や IconCache.db はそれぞれ隠しフォルダ、隠しファイルになっているので、エクスプローラーで確認する際には、

コントロールパネル > フォルダーオプション > 隠しファイル、隠しフォルダー、および隠しドライブを表示する

という設定をしておく必要あり。

2011-06-22

キーボード・マウス用 USB 切り替え器買った

ちょっと前から使っている PFU Happy Hacking Keyboard Lite 2 のキーボード。Control キーや半角/全角キーの位置が特殊だけれど、慣れてくると非常に使いやすい。


PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ブラック PD-KB220B/U

新しくパソコンを購入してからも、使い慣れたこのキーボードや Microsoft の 5 ボタンマウスをつないでいる。

たまに前のパソコンを立ち上げるときには、そのたびにキーボードをつなぎなおしていたのだけれど、だんだんそれも億劫になってきたので、USB 切り替え器を購入。


ELECOM パソコン切替器 キーボード・マウス用 手元スイッチ付 ブラック KM-A22BBK

ボタン一つで、2 つのパソコン間で USB 機器を切り替えることが可能。ディスプレイは新しいのをすでに共有して使っているので、一つの PC ラックで、とてもコンパクトに 2 つのパソコンを扱えるようになった。

この手の切り替え器には、USB ハブをつなげないものもあって要注意と聞いていたのだけれど、こちらは全く問題なし。HHKB Lite 2(2 つの USB ポートあり)にテンキーとマウスをつないでも、全部ちゃんと使えている。

切り替え器自体のあと 1 ポートにはプリンタを接続。プリンタのつなぎ直しもなくなり快適快適。

2011-06-17

typeof x == 'undefined' がいい感じ

JavaScript で、変数が定義されているかどうかのチェックするための方法 3 つ。
  • (!x)
  • (x == undefined)
  • (typeof x == 'undefined')
詳しい違いについては、こちらが参考になった。 で、たとえば、
<script type="text/javascript">
  var color = "FF0000";
</script>
<script type="text/javascript" src="check.js"></script>
っていう風に呼び出される check.js の中で、呼び出し元で色が指定されていたらその色を、指定されていなかったらデフォルトの青色を使う、みたいなことをしたい場合には、
  • (typeof x == 'undefined')
を使うのが一番いいみたい。というか、ほかのだと、color が書かれていない場合にエラーが出てしまう。カスタマイズ可能な、スクリプトを公開するときなんかには、気を付けないと。

2011-06-09

GAE/J で XPath を使って XML 解析

今まで使ったことがなかったのだけれど、XML を解析するのに XPath がめちゃくちゃ便利。
ブログ ID +ポスト ID で投稿のタイトルや URL を取得しようと思っていたのが、ちょっぴり挫折。URLFetch して、XML のパーサを使うか、正規表現でゴリゴリするか、迷い中…。
って前回悩んでいたのだけれど、その URLFetch で得た Blogger の個別投稿フィードを XPath で解析するコードが、ほらこの通り。
/* フィードを取得して InputStream に */
String feed = getSiteText("http://www.blogger.com/feeds/" + blogId + "/posts/summary/" + postId);
InputStream is = new ByteArrayInputStream(feed.getBytes("UTF-8"));

/* Evaluator を生成し、タイトル、サマリー、URL、公開日時を取得 */
XPathEvaluator evaluator = new XPathEvaluator(is);
String title = evaluator.getString("//title");
String summary = evaluator.getString("//summary");
String url = evaluator.getString("//link[@rel='alternate']/@href");
String published = evaluator.getString("//published");
って、非常に簡単に XML のデータを取得できる。ちなみに、getSiteText(String) は、以前に書いたこれ。

public static String getSiteText(String url, String charset) throws IOException {
    return new String(URLFetchServiceFactory.getURLFetchService().fetch(new URL(url)).getContent(), charset);
}
public static String getSiteText(String url) throws IOException {
    return getSiteText(url, "UTF-8");
}
で、一番大事な XPathEvaluator は、こちらで公開されている XPath のラッパークラス。 便利な時代になったものです。ありがたやー。