2015年1月18日日曜日

VMware Fusion 7上のWindows 8.1でUSキーボードを使う方法

VMware Fusion 7上のWindows 8.1でUSキーボードを使う方法をメモしておきます.

レジストリエディタ(regedit.exe)を起動した後,次のレジストリエントリにある値を下記の表のとおりに設定します.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

値の名前 値の種類 値のデータ
LayerDriver JPN REG_SZ kbd101.dll
OverrideKeyboardIdentifier REG_SZ PCAT_101KEY
OverrideKeyboardSubtype DWORD 0
OverrideKeyboardType DWORD 7

[1] コンピューターに USB キーボードを接続したときに Windows で正しいキーボード レイアウトが使用されないことがある, http://support.microsoft.com/kb/927824

2015年1月11日日曜日

[読了]Hooked ハマるしかけ

「Hooked ハマるしかけ」を読みました.

Nir Eyal, Ryan Hoover: Hooked ハマるしかけ, 翔泳社, 2014-05 [アマゾン, 楽天]

本書についてのメモを以下に記しておきます.

習慣とは,無意識,あるいは,ほとんど意識しないままに行われる行動のことである.ある種のビジネスにとって,プロダクトの習慣化は,成功の必須要素となる.本書で記されているフック・モデルはそのための効果的な枠組みを提供する.

フック・モデルは,トリガー,アクション,リワード,インベストメントという4つのフェーズをスパイラルに回して,プロダクトの習慣化を図ろうとするものである.使うきっかけを与え(トリガー),使っている最中は心地よさを感じさせながら(アクション),好感を持って使い終わるようにし(リワード),そして,次に使う準備をユーザにしてもらうようにすれば(インベストメント),プロダクトは継続して使われる可能性が上がる.

フック・モデルの各フェーズにおいて示されている方針は,心理学等の研究成果に基づいたものなので,それに従ったプロダクトを開発すれば,そのプロダクトに高い習慣化能力を持たせることができるように思える.長期的な利用を狙ったプロダクトの開発にちょうど携わっているので,このプロダクトにフック・モデルを適用させてみたい.

2015年1月10日土曜日

サーブレットでネイティブライブラリを使う方法

サーブレットでネイティブライブラリをロードする方法についてメモしておきます.

java.lang.Systemクラスのloadメソッドを使うと,Webアプリケーションの範囲外に特別な設定をせずにネイティブライブラリをロードすることができます.例えば,OpenCVのネイティブライブラリが,次のように配置されている場合,

/opt/local/share/OpenCV/java/libopencv_java2410.dylib
java.lang.Systemクラスのloadメソッドを次のように記述すれば,そのライブラリをロードできます.
System.load("/opt/local/share/OpenCV/java/libopencv_java2410.dylib");

Javaアプリケーションの場合,ソース内では,java.lang.SystemクラスのloadLibraryメソッドを使い,

System.loadLibrary("opencv_java2410");
javaコマンドのオプションでネイティブライブラリのディレクトリを指定すればよいのですが,
java -Djava.library.path=/opt/local/share/OpenCV/java/ ...
これをjava.lang.SystemクラスのsetPropertyメソッドを使って肩代わりさせようとすると,ライブラリのロードに失敗します. どうも「java.library.path」の値は,起動時のものが使われるようで,その後に内容を変更しても使われないみたいです.

そういうわけで,Webアプリケーションで閉じた方法を探していたところ,上記の方法にたどり着きました. 絶対パスが入っているので,環境依存にはなるのですが(必要なら動的に変更できるようにすればいいし), アプリケーションサーバの設定を触らなくていいので,こちらのほうが自分の好みに合います.

2015年1月7日水曜日

java.lang.ClassクラスのgetResourceメソッド

java.lang.ClassクラスのgetResourceメソッドについてメモしておきます(裏はとってないので,あくまで自分の推測です).

java.lang.Class#getResourceがリソースを探索する際の起点は,CLASSPATHに指定されたパスになる.

例えば,「HogeHoge.class」というプログラムと「hogehoge.txt」というファイルが,次のように配置されている場合,

/tmp/bin/HogeHoge.class
/tmp/etc/hogehoge.txt
「HogeHoge.class.getResource("hogehoge.txt")」が「hogehoge.txt」のURLを返すためには,
java -cp "/tmp/bin:/tmp/etc" HogeHoge
というように「hogehoge.txt」が置かれたディレクトリのパスをCLASSPATHに指定してプログラムを実行する必要あります. ちなみに,HogeHogeクラスのソースは以下のとおりです.

import java.net.URL;
public class HogeHoge {
    public static void main(String[] args) {
        URL url = HogeHoge.class.getResource("hogehoge.txt");
        System.out.println(url);
    }
}

また,HogeHogeクラスがhogehogeパッケージのクラスの場合,つまり,ソースが次の場合,

package hogehoge;
import java.net.URL;
public class HogeHoge {
    public static void main(String[] args) {
        URL url = HogeHoge.class.getResource("hogehoge.txt");
        System.out.println(url);
    }
}
ファイル構成は次のようになり,
/tmp/bin/hogehoge/HogeHoge.class
/tmp/etc/hogehoge/hogehoge.txt
コマンドは次のようになります.
java -cp "/tmp/bin:/tmp/etc" hogehoge.HogeHoge

2014年5月6日火曜日

Google Maps JavaScript API v3でマップのサイズを変更する方法

Google Maps JavaScript API v3でマップのサイズを変更する方法をメモしておきます.

マップのサイズを動的に変更すると,次のように一部が欠けているような感じになることがあります.

これを起こさないようにするには,サイズの変更後にマップに対して「resize」イベントを送ればいいみたいです. そうすると,次のように一部が欠けることなく,マップのサイズを変更することができます.

試しに作ってみたコードは以下のとおりです.

2014年4月2日水曜日

CentOS6.5をネットワークインストールするためのUSBを作成

CentOS6.5をネットワークインストールするためのUSBを作成してみました. 手順をメモしておきます.

1.Linux Live USB Creator (Version 2.8.27)をWindows 7にインストール
2.CentOS-6.5-x86_64-netinstall.isoファイルをダウンロード
3.USBメモリを装着
4.Linux Live USB Creatorを起動し,下記の通り指定し,実行
  • 装着したUSBメモリを指定
  • ダウンロードしたISOファイルを指定

2014年2月3日月曜日

[読了]BORN TO RUN

「BORN TO RUN」を読みました.

Christopher McDougall: BORN TO RUN, NHK出版, 2010-02

本書についてのメモを以下に記しておきます.

ジョギングを始めてから4年目になる.1年目は5km走るのがやっとだったが,2年目には20kmを越えて走れるようになった.当時は,ひと月の走行距離が100kmを超えていたし,1kmを5分程度で走れるようになった.でも,最近は,ひと月に50kmを走るのがやっとで,1kmを5分台で走れなくなった.

原因は左膝の痛みである.走る回数が多かったり,1度に10kmぐらい走ったりすると,左膝が痛くなる.それを我慢して走ると,数日間激痛に悩まされることになる.4年も続けると,市民マラソンとかに挑戦したくなるのだが,「出場=ジョギングリタイア」になるはずなので,そうするわけにはいかない.そんな状況に嫌気がさしていたときに目に止まったのが本書である.

本書は,走ると足が痛くなる理由や,走りと人類の進化との関係を取り上げながら.著者と様々なランナー,そしてある部族との交流を描いた物語である.彼らの交流については,本書を読んでもらうことにして,ここでは,走ると足が痛くなる理由や,走りと人類の進化との関係について簡単にまとめておく.

走ると足が痛くなるのは,シューズと走り方に原因がある.人間の足は,長い進化の過程において裸足で走ることに最適化された.そのため,シューズを履いて走ると,そのバランスが崩れて,足の各部に痛みが生じる.また,足の接地部分を踵(かかと)から爪先に移して走る方法は,足のひねりを過度に引き起こし,シューズと同様の結果を招く.本書では,「高価なシューズほど故障率が上がる」,「分厚いクッション付きのシューズが踵から接地する走り方を産んだ」,「裸足でトレーニングすると,怪我をしなくなる」などの事例を挙げながら,その原因について分析している.

走りと人類の進化の話では,人間の足が裸足で走るのに最適化された理由について答えている.他の陸上動物と比べてこれといった強みを持たない人類が現在まで生き残れたのはなぜか.それは,我々人類が走る能力を身につけたからである.走る能力といっても,我々人類が身につけたのは,短い距離を速く走る能力ではなく,長い距離を絶え間なく走る能力である.ほとんどの陸上動物が速く走る能力を選んだのに対し,我々人類は長く走る能力を選んだ.それは,速く走る動物達は,長く走り続けるとバテて動けなくなるからだ.大昔の人類は,獲物を狩る手段を得るため,長い距離を絶え間なく走る能力を獲得したのである.

いずれも目からウロコ的な話だが,真偽の程は実践で確かめてみることにしたい.どうもアフリカのマラソンランナーの走り方がベストみたいなので,それを真似てみることにした.そうすると,踵から着地せずに走れるらしい.膝痛が解消すればよいのだが,さてどうなることやら.ちなみに,本書を読むと,読者は走りたくなるそうである.その話は本当だったので,走ろうかどうか迷っている人は,本書を読んで見るのが良いかもしれない.