2011-10-21 struts2 + ovalでskipvalidationを使う
■
プログラミング | |
![]()
strtus2のデフォルトValidationであるConnvertionパッケージ以下を使用した場合、SkipValidationアノテーションが使える。
が、ovalでは使用できない。(使用できるかも知れませんが、ちょっと調べただけでは分からずじまい)
これに不便を感じ、SkipOvalValidationなるものを作成し使用した。
@SkipOvalValidation
package org.framework.ext.oval.validation; import static java.lang.annotation.ElementType.METHOD; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(METHOD) public @interface SkipOvalValidation { }
OvalAnnotationValidationInterceptor
package org.framework.ext.oval.validation; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Collection; import org.apache.struts2.oval.interceptor.OValValidationInterceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.util.AnnotationUtils; public class OvalAnnValidationInterceptor extends OValValidationInterceptor{ protected String doIntercept(ActionInvocation invocation) throws Exception { if (checkSkipValidation(invocation)) return invocation.invoke(); return super.doIntercept(invocation); } protected boolean checkSkipValidation(ActionInvocation invocation) throws Exception { Object action = invocation.getAction(); if (action != null) { Method method = getActionMethod(action.getClass(), invocation.getProxy().getMethod()); Collection<Method> annotatedMethods = AnnotationUtils.getAnnotatedMethods(action.getClass(), SkipOvalValidation.class); if (annotatedMethods.contains(method)) return true; //check if method overwites an annotated method Class clazz = action.getClass().getSuperclass(); while (clazz != null) { annotatedMethods = AnnotationUtils.getAnnotatedMethods(clazz, SkipOvalValidation.class); if (annotatedMethods != null) { for (Method annotatedMethod : annotatedMethods) { if (annotatedMethod.getName().equals(method.getName()) && Arrays.equals(annotatedMethod.getParameterTypes(), method.getParameterTypes()) && Arrays.equals(annotatedMethod.getExceptionTypes(), method.getExceptionTypes())) return true; } } clazz = clazz.getSuperclass(); } } return false; } protected Method getActionMethod(Class actionClass, String methodName) throws NoSuchMethodException { Method method; try { method = actionClass.getMethod(methodName, new Class[0]); } catch (NoSuchMethodException e) { try { String altMethodName = "do" + methodName.substring(0, 1).toUpperCase() + methodName.substring(1); method = actionClass.getMethod(altMethodName, new Class[0]); } catch (NoSuchMethodException e1) { // throw the original one throw e; } } return method; } }
strtus.xml
<package name="ann-oval-default" extends="struts-default"> <interceptors> <interceptor name="annOvalValidation" class="org.framework.ext.oval.validation.OvalAnnValidationInterceptor" /> <interceptor-stack name="ovalAnnotaionStack"> <interceptor-ref name="autowiring" /> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="i18n"/> <interceptor-ref name="prepare"/> <interceptor-ref name="chain"/> <interceptor-ref name="debugging"/> <interceptor-ref name="profiling"/> <interceptor-ref name="scopedModelDriven"/> <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="staticParams"/> <interceptor-ref name="actionMappingParams"/> <interceptor-ref name="params"> <param name="excludeParams">dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="conversionError"/> <interceptor-ref name="annOvalValidation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack> </interceptors> </package>
TestAction
@Namespace("/") @ParentPackage("ann-oval-default") @InterceptorRefs({ @InterceptorRef(value="ovalAnnotaionStack") }) @Results({ @Result(name="success" , type="dispatcher" , location="success.jsp") }) public class TestAction extends ActionSupport { @NotEmpty private String name; @SkipOvalValidation public String sayName() { return "success"; } public String checkName(){ return "success"; } public String execute() { return "success"; } }
success.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="windows-31j"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Insert title here</title> </head> <body> <s:form> <s:fielderror></s:fielderror> name:<s:input name="name" /> <s:submit action="input" method="sayname" value="sayname(skip)"></s:submit> <s:submit action="input" method="check" value="check"></s:submit> </form> </body> </html>
見てわかるように、org.apache.struts2.interceptor.validationの中身を少しアレンジしただけ。
2011-10-08 システムアーキテクトの午後問題(I)は得べし
システムアーキテクトの午後問題(I)は得べし
雑記 | |
![]()
次週のシステムアーキテクトの為に昨日からシャカリキに勉強しているが、いま非常に後悔している。
今から来週まで参考書の問題全てを解答出来いからだ。
なぜなら、午後問題(I)に様々な業種のシステムが単純化され、開発の問題として提示されており、各場面(企画、開発、運用、等々)に触れる事が出来るからだ。
これは、ソフトウェアアーキテクトは、改修・新規構築システムを適切にモデリングし、関係者に対しそのモデルに対する回答責任がある。と思っている私のような輩には非常に痛い。*1
そして、もうひとつは、「論文」が思ったより書けないからだ。。。。
*1.試験が終わっても、参考書とけばいいじゃん!って思うかも知れませんが、教科書が嫌いな人にとって問1..Nを解答するのは、リリース日が必要なのです(はははぁ〜。。。)
2011 システムアーキテクト予想問題集 (情報処理技術者試験対策書)
- 作者: アイテック情報技術教育研究部
- 出版社/メーカー: アイテック
- 発売日: 2011/06/10
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 鈴木雄介,Richard Monson-Haefel,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/10/05
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 330回
- この商品を含むブログ (76件) を見る
2011-08-08 Mysql Access denied for userにはまった

RedMineをCentOS(Vm)にインストールしようと、Mysql5.5をセットアップ。
RedMindMineのテーブルを作成しようとすると「 Access denied for user 」が出てしまう。。。。
てか、mysql -u user_redmine -p を打ち込んでも「 Access denied for user」が。。。
仕方ないから、/var/lib/mysql以下を全て消して、Mysqlをクリーンインストール + サボってた「mysql_secure_installation」を実行。
すると、無事解決!!。Mysqlをインストールしたら、とりあえず、
1.my.cnfにutf8を追加
2.mysql_secure_installation
をしておけばいいのか?てか「mysql_secure_installation」はrootユーザのコントロールと匿名ユーザのブロックしか設定しないと思っていただけに、
原因が分からず気持ち悪い。
本当は調べたいけど、忙しいからまあいいや。
2011-07-22 Eclipse3.7(64bit) Indigoを日本語で使う
Eclipse64bitはいい感じ
プログラミング | |
![]()
最近、Androidのソフトを作るのにはまっています。GPSを使ったアプリ開発とか、モーションセンサーとか面白すぎです。
ただ、画面をプレビュー&開発できるGraphical Layoutのところでメモリーが足りなくてよく落ちてしまう。。。Eclipse 32bitなので、ヒープを1024Mしか確保できるのですが、それではまったく歯がたたないらしい。
なので、win7 64bit力を借り、メモリーいっぱい確保しましょう。という魂胆。
以下のようにしたら、一応何も問題なく動いたので、一応展開します。
*試すのは、自己責任で。
1.以下のサイトからjdk ver6,64bitを落とし、インストール。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
2.以下のサイトからEclipse3.7を落とし、解凍。
(私は、Eclipse IDE for Java EE Developers)を選択
http://www.eclipse.org/downloads/
3.Pleiadesから、JREなしのEclipseを落とし、解凍。
(私は、Javaを選択)
http://mergedoc.sourceforge.jp/index.html#/pleiades.html
4. 2.で解凍したEclipseが起動するか確認し、起動したら閉じる。
5. 3.で解凍したEclipseにある「dropins」フォルダを2.で解凍したフォルダに上書きする。
6. 起動できるか確認。
7. 2.で解凍したフォルダにあるeclipse.iniの末尾に「-javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar」を入れる。
ちなみに、今回の目的であるメモリー拡大大作戦のため、以下のようにeclipse.iniを編集した。
-startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 512M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 512m --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.6 -Xms1024m -Xmx2048m -javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
8.Eclipseを起動する。
9.今まで使用していたEclipseのプラグインをインストールするため、ファイル->インポート->インストール->既存インストールからを選ぶ。
10.インポートダイアログの「元のアプリケーション・インストール」に今まで使用してたEclipseのインストール(展開)フォルダを指定する。
11.一覧が表示されたら、いるものをチェックし、インストールする。
(ちなみに私は、Androiodの開発系とPython系の開発、javaのテストをインストール。Google Apps Engineはインストールできなかったため、別途インストールした。)
12.終了。
以上です。画像なしでわかりづらいですね。。面倒なんです。。。ごめんなさい。
2011-05-18 新世界よりは凄い
新世界よりは凄い
小説 | |
![]()
この本は凄い。1000年後の世界は「呪力」をもった超能力者(人間)が支配し、その持つ力は1人1人が核兵器レベルという非現実世界。
それに、人間が持っている支配欲等々の恐ろしさと神に近い存在であり、1000年たってもそれを受け止めるきれない社会システムとその歴史。という非現実的だけど、どこかあり得そうな話が見事に描かれていて、グイグイ引き込まれる。一気読みしそうになるが、所々で考えさられ、迷ってしまう。そして、最後の落ちが本当に恐ろしい。
宮崎はやおのような「アニメ」で映画化してほしい。いや、この世界観を「グロ」無しで描くのは駄目だと思うから無理か。。。
「グロ」が大丈夫な人は絶対にお勧めできる本。読まないと損です。
- 作者: 貴志祐介
- 出版社/メーカー: 講談社
- 発売日: 2011/01/14
- メディア: 文庫
- 購入: 6人 クリック: 232回
- この商品を含むブログ (76件) を見る
- 作者: 貴志祐介
- 出版社/メーカー: 講談社
- 発売日: 2011/01/14
- メディア: 文庫
- 購入: 4人 クリック: 26回
- この商品を含むブログ (52件) を見る
- 作者: 貴志祐介
- 出版社/メーカー: 講談社
- 発売日: 2008/01/24
- メディア: 単行本
- 購入: 3人 クリック: 48回
- この商品を含むブログ (162件) を見る
2011-04-22 さくらVPSのssh設定にはまった

2011-02-26 ソーシャルネットワーク観てきた
ソーシャルネットワーク観てきた
映画 | |
![]()
視点がFacebookやソーシャルネットワークに向けられておらず、「マーク・ザッカーバーグ」の映画用に誇張された?性格に視点が当てられている。
Facebookのサービスに視点が当てられたものを読みたいときは、以下の本の方がいい。
フェイスブック 若き天才の野望 (5億人をつなぐソーシャルネットワークはこう生まれた)
- 作者: デビッド・カークパトリック,小林弘人解説,滑川海彦,高橋信夫
- 出版社/メーカー: 日経BP社
- 発売日: 2011/01/13
- メディア: ペーパーバック
- 購入: 27人 クリック: 2,783回
- この商品を含むブログ (233件) を見る
うえの本の(一部が)面白いと感じた人は以下の本もお勧め
- 作者: デビッドヴァイス,マークマルシード,田村理香
- 出版社/メーカー: イースト・プレス
- 発売日: 2006/05/31
- メディア: 単行本
- 購入: 7人 クリック: 175回
- この商品を含むブログ (138件) を見る
2010-10-10 面白い一局
清水市代女流王将 vs あから2010
雑記 | |
![]()
将棋好きであり、将棋対戦ソフト(弱小)を作った自分にとって、今回の対戦は対戦結果だけを求める一般の方よりも関心を持って観ていました。
関心の対象としては、結果としてどちらが勝つか、どんな手を指しあうかと言った今回だけの関心事も勿論あります。
ただ、今回のような場でのコンピュータ側勝利によって、「将棋に携わる人」、「コンピュータ将棋に携わる人」、「これから両者どちらか、もしくはどちらにも携わろうとする人」への影響とその影響から今後これらの人、これらの人が所属しているコミュニティはどうなるのか?
といったところにもまた面白みがあると感じさせてくれる一局でした。
そんな、へんちくりんな感想を持ったわけですが、「真剣勝負面白かった」の一言に尽きます。今回の対局を用意して下さった関係者、あから2010開発者みなさん、そして清水市代女流王将。本当にお疲れ様でした。これからも面白い一局の提供をお願いします。
ボナンザVS勝負脳―最強将棋ソフトは人間を超えるか (角川oneテーマ21)
- 作者: 保木邦仁,渡辺明
- 出版社/メーカー: 角川書店
- 発売日: 2007/08
- メディア: 新書
- 購入: 16人 クリック: 1,995回
- この商品を含むブログ (66件) を見る
Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)
- 作者: 池泰弘
- 出版社/メーカー: 工学社
- 発売日: 2007/04/25
- メディア: 単行本
- 購入: 8人 クリック: 15回
- この商品を含むブログ (10件) を見る
2010-10-07 Win7 64bitでSSDに移行
Win7 64bitでHDD(120G)→SSD(64G)に移行
PC-機器 | |
![]()
この頃、HDDの調子がおかしいため、思い切ってSSDに移行した。
下記の環境においてフリーソフトのみで移行、および、空き容量を限界まで詰めたパーティション操作を断行した方が見られなかったので、とりあえずまとめておく。
注意!!
OSが再起動しなくなる恐れが高い操作なので、初心者にはお勧めできません。また、下記方法で何か問題が起きても責任取れません。自己責任でお願いします.....
■環境
移行元HDD容量:500G Sage
移行元パーティション容量:120G(使用容量:80G)
移行先SSD:64G
■使用ソフト
パーティション編集: MiniTool Partition Wizard Home Edition
HDD移行:EASEUS DISK COPY
■効果
・リコンパイル、起動、補間もっさりEclipseがきびきびEclipseに(笑)
・あらゆるソフトの起動が兆速。
1CPU→2CPUにした時と同じ感動を味わえた(適当)
■移行手順
0.SSDをフォーマット
→60Gとなり、目標値が設定される。
1.ありとあらゆる不要なソフト、データを削除 or 他のHDDに退避する。
→削除目標が後5G〜10Gぐらいなら、hiberfil.sysとpagefile.sysを削除する(後で戻しましょう)削除方法は
・[hiberfil.sys]管理者のコマンドプロンプトで、
・[pagefile.sys]コンピュータを右クリック→プロパティ、左メニューのシステム詳細設定→詳細設定タブのパフォーマンスのところの設定→パフォーマンス→仮想メモリ→数値を変更→保存→再起動
2.デフラグをかける
3.MiniTool Partition Wizard Home EditionからMove/Resizeでサイズを変更(縮小)Applayで反映する。
4.再起動出来るか一応確認
5.EASEUS DISK COPYの入ったCDをトレイに入れ、再起動
6.コピーして終わり
■最後に
SSD最高!!!
あっ、でも環境が3年前ぐらいのものだからRead 260Gしか出ない.悲しい......
- 出版社/メーカー: Crucial Technology
- 発売日: 2010/06/22
- メディア: Personal Computers
- 購入: 3人 クリック: 28回
- この商品を含むブログ (9件) を見る
Microsoft Windows7 Home Premium 64bit 日本語 DSP版 + メモリ [DVD-ROM]
- 出版社/メーカー: マイクロソフト
- メディア: DVD-ROM
- 購入: 24人 クリック: 292回
- この商品を含むブログ (9件) を見る



ありがとうございました!