共有するGitリポジトリを設定する方法をメモしておきます.
$ groupadd group
$ usermod -G group user
$ mkdir /path/to/repository.git
$ git init --bare --shared /path/to/repository.git
$ chown -R user:group /path/to/repository.git
共有するGitリポジトリを設定する方法をメモしておきます.
$ groupadd group
$ usermod -G group user
$ mkdir /path/to/repository.git
$ git init --bare --shared /path/to/repository.git
$ chown -R user:group /path/to/repository.git
GEAのDataNucleus Enhancerが「java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal」という例外で異常終了する問題に出くわしました.この問題の解決方法をメモしておきます.
今回は,[1]の質問に対する回答を参考にしました.
[1] | AppEngine Error [ java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal ], http://stackoverflow.com/questions/10234201/appengine-error-java-lang-noclassdeffounderror-org-w3c-dom-elementtraversal |
CSSではみ出した部分を「…」にする方法をメモしておきます.
.hogehoge {
width: 4em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
<div class="hogehoge">どうしてプログラムのサンプルに使うテキストは「ほげほげ」なんだろう?</div>
「text-overflow: ellipsis;」と記せば,「…」にならなかったので,何でだろうとずっと悩んでいたのですが, このプロパティは,先の例のように他の3つのプロパティといっしょに使わないと効果が発揮されないんですね. ようやく謎が解けた.\(^O^)/
文献[1]で紹介されているロジスティック回帰をJavaで実装してみました.
ロジスティック回帰は,分類問題に適用できる機械学習手法の1つです(確率化したパーセプトロンという理解でいいのかな). 文献で紹介されているとおりあらかじめ用意したデータを分類する関数を求めてみました. グラフにした結果は次の図のとおりです. 青の点が正解,赤の点が不正解,黄色の直線がそれらを分類するために推定された関数,オレンジが正解になる確率が0の領域で,緑が1の領域です. 直線付近は,正解と不正解の境界になっているので,正解になる確率がどんと落ちてます.
ちなみに,これまでグラフはExcelで描いてきたのですが,今回は難しかったので,d3.jsを使ってみました(かなりゴリ押しですけど). 使ってみて思いましたが,大本の文献で使っているPythonがやっぱり一番簡単そうですね.
[1] | 中谷 秀洋: ロジスティック回帰を実装してみよう, 機械学習はじめよう 第20回, http://gihyo.jp/dev/serial/01/machine-learning/0020 |
文献[1]で紹介されているパーセプトロンをJavaで実装してみました.
パーセプトロンは,分類問題に適用できる機械学習手法の1つです. 文献で紹介されているとおりあらかじめ用意したデータを正解(1)と不正解(-1)に分類する関数を求めてみました. グラフにした結果は次の図のとおりです. そうなるようにデータを作ってあるので,当たり前なのですが, 正解と不正解をうまく仕分ける関数を求めることができました.
[1] | 中谷 秀洋: パーセプトロンを実装してみよう, 機械学習はじめよう 第17回, http://gihyo.jp/dev/serial/01/machine-learning/0017 |
文献[1]で紹介されているベイズ線形回帰を記事[2]で作成したプログラムを元にしてJavaで実装してみました.
ベイズ線形回帰は,線形回帰を確率化してベイジアンで関数を求める手法です. 文献で紹介されているとおり基底関数をベイズ基底にして関数を求めてみました. 結果は次の図のとおりです. ベイズ線形回帰なので,関数だけでなく,確率密度も求めることができます.
[1] | 中谷 秀洋: ベイズ線形回帰を実装してみよう, 機械学習はじめよう 第14回, http://gihyo.jp/dev/serial/01/machine-learning/0014 |
[2] | mizo0409: 線形回帰をJavaで実装, http://mizo0409.blogspot.jp/2014/01/java.html |
「良い習慣悪い習慣」を読みました.
Jeremy Dean: 良い習慣悪い習慣, 東洋経済, 2014-09 [アマゾン, 楽天]
本書についてのメモを以下に記しておきます.
行動を習慣化させるには,どのくらいの時間がかかるか?本書は.この疑問の答えを探すところから始まる.巷によると21日が有力な説であるが,学術的な研究成果によると平均で66日になるらしい.行動によって短くなったり,長くなったりするが,行動を習慣化するにはどうも2ヶ月ぐらいかかるみたいだ.
習慣とは,自動化された行動である.行動の習慣化は,意図的にそうすることもできるし,経験からそうなってしまうこともある.いずれにせよ一旦行動が習慣化されれば,結果の善し悪しにかかわらず,無意識が周囲の状況に基づきその実行をコントロールするようになる.
行動を習慣化するためのポイントは次のとおりである.
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 |
「Hooked ハマるしかけ」を読みました.
Nir Eyal, Ryan Hoover: Hooked ハマるしかけ, 翔泳社, 2014-05 [アマゾン, 楽天]
本書についてのメモを以下に記しておきます.
習慣とは,無意識,あるいは,ほとんど意識しないままに行われる行動のことである.ある種のビジネスにとって,プロダクトの習慣化は,成功の必須要素となる.本書で記されているフック・モデルはそのための効果的な枠組みを提供する.
フック・モデルは,トリガー,アクション,リワード,インベストメントという4つのフェーズをスパイラルに回して,プロダクトの習慣化を図ろうとするものである.使うきっかけを与え(トリガー),使っている最中は心地よさを感じさせながら(アクション),好感を持って使い終わるようにし(リワード),そして,次に使う準備をユーザにしてもらうようにすれば(インベストメント),プロダクトは継続して使われる可能性が上がる.
フック・モデルの各フェーズにおいて示されている方針は,心理学等の研究成果に基づいたものなので,それに従ったプロダクトを開発すれば,そのプロダクトに高い習慣化能力を持たせることができるように思える.長期的な利用を狙ったプロダクトの開発にちょうど携わっているので,このプロダクトにフック・モデルを適用させてみたい.
サーブレットでネイティブライブラリをロードする方法についてメモしておきます.
java.lang.Systemクラスのloadメソッドを使うと,Webアプリケーションの範囲外に特別な設定をせずにネイティブライブラリをロードすることができます.例えば,OpenCVのネイティブライブラリが,次のように配置されている場合,
/opt/local/share/OpenCV/java/libopencv_java2410.dylibjava.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アプリケーションで閉じた方法を探していたところ,上記の方法にたどり着きました. 絶対パスが入っているので,環境依存にはなるのですが(必要なら動的に変更できるようにすればいいし), アプリケーションサーバの設定を触らなくていいので,こちらのほうが自分の好みに合います.
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