移転しました
気まぐれにより、以下のアドレスに移転しました。
http://blog.ryhmrt.com/
金なし、コネなし、フィリピン暮らし! 改訂版
最近読んでいる本はこれです。
- 作者: 志賀和民
- 出版社/メーカー: イカロス出版
- 発売日: 2012/01/13
- メディア: 単行本(ソフトカバー)
- クリック: 17回
- この商品を含むブログ (1件) を見る
タイトルはけっこうふざけていますが、内容はしっかりしているように感じます。
現地に行ってからでないと、この本の内容が有用かどうかは判別できませんが。
Gitのリポジトリ眺めるのに便利なSourceTree
AppStoreをぼんやりと眺めていたら、SourceTreeというアプリが目に止まりました。
GitやMercurial、更にはSubversion(※)のリポジトリをGUIから操作できるという代物。
※ Subversionはgit-svn経由
開発元を見たら、Bitbucketを傘下に収めたAtlassianの名前がありました。
しかしGitHub対応を謳っているので、GitHubでも安心して使えます。太っ腹。
というか、普通にGitクライアントなので当たり前ですね。
個人的には、コミットなどの操作はコマンドラインから行った方が便利だと思いますが、
履歴を眺めるには良いツールだと思います。特に履歴が入り組んでしまった時など。
Struts2あれこれ
仕事でStruts2を触ったので、そのメモ。
ActionFormみたいな何か
ModelDrivenインターフェースを実装することで、対象のモデルクラスのフィールドをアクションにMixinするような感じにできる。
getModel() メソッドでは、編集対象のモデルオブジェクトを返す。
通常は以下のような感じになるかと思う。
public class HogeAction extends ActionSupport implements ModelDriven<Hoge> { private Hoge hoge = new Hoge(); public String execute() { return SUCCESS; } public Hoge getModel() { return hoge; } }
リクエストパラメータで渡ってきた値は自動的にモデルオブジェクトに設定される。
モデルに設定されたプロパティはStrutsのタグなどで参照可能。
<s:textfield key="hogehoge" />
既存のデータをモデルオブジェクトに読み込む
編集処理などでは、DBからモデルの内容を読み込みたいと思うだろうが、通常のアクション処理の中でモデルを書き換えてもうまくいかない。
Struts2がgetModel()する前にモデルを初期化しなければいけないのだ。
アプローチはたぶん2つくらいある。
- getModel() 内でデータを読み込む
- Preparableインターフェースを実装して、prepare()内でデータを読み込む
まず、どちらにせよ、リクエストパラメータはServletRequestのものを生で使う必要がある。
implements ServletRequestAware ってやると幸せ。
Preparableの例は以下のような感じ。
public class HogeAction extends ActionSupport implements ModelDriven<Hoge>, ServletRequestAware, Preparable { private Hoge hoge = new Hoge(); private HttpServletRequest request; public String execute() { return SUCCESS; } public Hoge getModel() { return hoge; } public void setServletRequest(HttpServletRequest request) { this.request = request; } public void prepare() { int id = Integer.parseInt(request.getParameter("hoge_id")); hoge = モデルオブジェクト読込処理(id); } }
org.apache.struts2.util.TextProviderHelperのWARNログがうるさい
<category name="org.apache.struts2.util.TextProviderHelper"> <priority value="error"/> </category>
Actionで発生した例外をログ出力しつつエラーページを表示
<interceptors> <interceptor-stack name="myDefaultStack"> <interceptor-ref name="defaultStack"> <param name="exception.logEnabled">true</param> <param name="exception.logLevel">ERROR</param> </interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="myDefaultStack"/> <global-results> <result name="systemError">/error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="systemError" exception="java.lang.Exception"></exception-mapping> </global-exception-mappings>
CygwinのPerlで "Unable to remap" とか言われたときの対処法
久々にCygwinでPerlを使ったら、"Unable to remap xxxx.dll" とか言われた。
Perlのプロセスを全部落として perlrebase を実行したら解決した。
参考: http://u.hoso.net/2011/01/rebase-for-perlbrew-perl-on-cygwin.html