2013年12月19日木曜日

Qiitaに初投稿した際に見つけた、ハードウェア仮想化サポートの調べ方

こんな記事を書きました。タイトルの通り、Qiita初投稿です。
コメントしてくれた方に返信する際に、使っているマシンのハードウェア仮想化サポートを調べる方法(英語)を見つけたので、メモがわりに書いておきます。

IntelやAMDのモデルNoから調べる方法、/proc/cpuinfoのフラグを見る方法、dmesgでKVMのサポートを表示した出力を確認する等々ありますね。

# これもきちんとまとめるならQiitaに書いたほうがよさそうですね。
# でも自分のエネルギーがあるときじゃないとQiita向けの記事は大変...

# ブログは気楽に自分のペースで書いていいし、完成の基準や区切り目も
# 自分で線を引くことが許されているから、アイデアを死なせなくて済む、という
# メリットがある気がします ; )

2013年11月19日火曜日

"DAOを繰り返すな! (原題: Don't repeat the DAO!)" のGradleビルド版をつくりました

既存Struts環境へのDAO導入のため、最近はモデルまわりの調査をよくしています。その過程でやってみたのが今回のGradleビルドです。

ネタ元はIBM Developer Worksの"Don't repeat the DAO!(邦題: 「DAOを繰り返すな!」)のサンプルコード。原作者さんの許諾を得て、自分のGithubアカウント下に置きました。

インターネット環境とJavaコマンド(jdk5以上)が使えるなら、cloneしたディレクトリで下記コマンドを打つだけです。
gradle build
build.gradleは最小限にまとめたので、Gradleのデフォルトの動き(特にresourcesとXML設定ファイルがらみ)が把握しやすいかと思います。


** 追記 **

記事と同じ趣旨のDAOは現在、Spring Dataを用いることで実現可能です。
http://projects.spring.io/spring-data/

ジェネリクスを用いたリポジトリインターフェイスを継承して実型引数のCRUDを利用したり、ファインダーメソッドを作成することも(背後でAOPを利用しているとことさら意識させられることなく)容易に実現できます。

ただし、伝統的なRDBを使う場合、サポートされる方式は現時点(2013年11月)でJPAのみとなっています。

2013年10月13日日曜日

NTEmacsでEmacs Code Browserを使ってIDE風の表示に

久々の投稿です。前回の投稿から仕事も変わり、製造業の社内エンジニアになりました。またソフトウェア開発や情報インフラ運用に触れる時間が増えたので、役立ちそうな取り組みを少しずつ投稿していきたいと思っています。

現在の仕事で使っている言語はJavaで、Eclipseを用いて開発しています。Gradleというビルドツールを使うように数ヶ月前から変更し、これからガンガン開発するぞ!という矢先。なんとEclipseのGradleプラグインが頻繁にフリーズするようになってしまいました...orz

原因の調査が必要ですが、今まで利用していたWindows XPのマシンをリース更新でWindows 7に変更した直後のこと。Eclipse依存を断ってビルドツールに乗っければ環境をもっとポータブルにできるぞ!と意気込んでGradle化したけど、やっぱり甘かったですね...: P

しかし、その努力がムダだったわけじゃなくて、Eclipseから切り離してもテキストエディタ+コマンドプロンプト(からGradleを叩く)、で開発ができるようになりました。手を止めたくないのでしばらくEclipseなしでも「おー、できるじゃん!」って思いながら開発を進めていましたが、でもやっぱり不便!

せめてソースコードの階層くらいIDEっぽく表示したい!という思いから、「Emacsで何とかしてみよう!」と思い至りました。前置きが長くなりましたが、以下、その取り組みをメモ的に記載。

[やったこと(やりたいこと)]

Windows環境でEmacsを導入し、Emacs Code Browser (ECB)を導入した。
(今後さらにmalabar-modeを導入して、もう少し便利に使いたい)

[導入した環境]

  • OS: Windows 7 (32bit版)
  • Emacs: NTEmacs (24.3.1) - ここのビルドを使わせてもらいました
  • ECBプラグイン: https://github.com/alexott/ecb (最新のCEDETで動作するよう手を加えた版 - 後述)

[手順]

NTEmacsを任意のフォルダに展開(今回はD:\emacsとして話を進める)

ここで、ECBの本家版をD:\emacs\site-lisp に展開してmake、とするが、下記エラーで失敗する。要は新しい環境に対応していないとのこと。
ECB 2.40 - Error: ECB can only be used with cedet [1.0pre6, 1.0.9]! Please install it and restart Emacs!
調べると、下記のチケットが見つかり、上記で記載した最新版対応のECBプラグインがあるとのこと。上記ECBプラグインが紹介されているので、そっちを試すことに。
https://github.com/alexott/ecb の中身を落として、D:\emacs\site-lisp\ecb-2.40 として展開。さらに、%APPDATA% (Windows 7の場合 C:\Users\(Windowsユーザー名)\AppData\Roaming のようなパスになる)に .emacsファイルを作成、下記の内容を記載して起動した。
(add-to-list 'load-path "d:/emacs/site-lisp/ecb-2.40")
(require 'ecb)
byte-compileをするため、D:\emacs\site-lisp\ecb-2.40\make.bat の中身を編集。47行目あたりから、下記のようにパスを設定。(emacs.exeのバイナリパスをEMACSとして設定し、NTEmacs組み込みのCEDETを指定)
set EMACS=D:/emacs/bin/emacs.exe
set CEDET=../../lisp/cedet
さらに、make.batのcedet.elへのパス指定は単体配布版のディレクトリ構造を想定しているようです。Emacs組み込みのCEDETはcommonディレクトリがなかったので、
echo (load-file "%CEDET%/common/cedet.el") >> ecb-compile-script-init
となっていたところ、common/の部分を削除して、下記のようにパス合わせをしたところ、makeが完了できました。
echo (load-file "%CEDET%/cedet.el") >> ecb-compile-script-init

[起動]

Emacsを立ち上げて、
M-x ecb-activate
を実行すればOK。ECBは自動起動させたかったので、READMEに書いてあった 
(require 'ecb-autoloads)
も試したけれど、書いただけではうまく動作しませんでした。こっちはしばし保留。

[スクリーンショット]

左側がIDE風になっています。