<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>でらうま?!てらそるな</title>
<link>https://ameblo.jp/cw0809711/</link>
<atom:link href="https://rssblog.ameba.jp/cw0809711/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>telasorunaについていろいろとお勉強していきます。あとタイトル変えました。</description>
<language>ja</language>
<item>
<title>TERASOLUNA、4月中に現行版が抱える課題の解消を図る</title>
<description>
<![CDATA[ <p>参照した記事のタイトルは　NTTデータ、TERASOLUNAを捨てる</p><p><a href="http://itpro.nikkeibp.co.jp/atcl/column/14/346926/040400918/">http://itpro.nikkeibp.co.jp/atcl/column/14/346926/040400918/</a></p><p>&nbsp;</p><p>記事より、「新たな事業形態や開発スタイルに対応」「4月中に予定する新たな開発方法論は、一連の課題を克服したものになる」とあるので、terasolunaフレームワークの開発を活かす為の施策が打ち出されるものだと期待しています。</p><p>&nbsp;</p><p>しかし「現行版のTERASOLUNAが抱える課題の解消を図る」と記事にあるのに、なぜ捨てるという表現を使ったのか・・・このブログのタイトルみたいな感じでいいのに。</p><p>&nbsp;</p><p>＃　インパクトあるニュース見出しにしたかったのか、それとも表に出ていない何かを匂わせているのか。（例えば名称が変わるとか）</p>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12264249955.html</link>
<pubDate>Mon, 10 Apr 2017 07:09:49 +0900</pubDate>
</item>
<item>
<title>SystemException</title>
<description>
<![CDATA[ <p>SystemExceptionで渡したメッセージが、どこに渡されるのか、という話題になったので少し調べました。</p><br><p>◎まずは継承関係確認：JavaDoc<br></p><p><a href="http://terasoluna.osdn.jp/javadoc/server-web_2.0.0.2/jp/terasoluna/fw/exception/SystemException.html">http://terasoluna.osdn.jp/javadoc/server-web_2.0.0.2/jp/terasoluna/fw/exception/SystemException.html</a></p><br><p>java.lang.Object<br>&nbsp; <img alt="上位を拡張 " src="https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fterasoluna.osdn.jp%2Fjavadoc%2Fserver-web_2.0.0.2%2Fresources%2Finherit.gif" abp="74">java.lang.Throwable<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="上位を拡張 " src="https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fterasoluna.osdn.jp%2Fjavadoc%2Fserver-web_2.0.0.2%2Fresources%2Finherit.gif" abp="75">java.lang.Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="上位を拡張 " src="https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fterasoluna.osdn.jp%2Fjavadoc%2Fserver-web_2.0.0.2%2Fresources%2Finherit.gif" abp="76">java.lang.RuntimeException<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="上位を拡張 " src="https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fterasoluna.osdn.jp%2Fjavadoc%2Fserver-web_2.0.0.2%2Fresources%2Finherit.gif" abp="77"><b abp="78">jp.terasoluna.fw.exception.SystemException</b></p><br><p>◎Terasoluna 5.7 例外ハンドリング</p><br><p><a href="https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/ExceptionHandling.html">https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/ExceptionHandling.html</a></p><br><p><a class="toc-backref" href="https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/ExceptionHandling.html#id41">5.7.1.2. 例外のハンドリング方法</a></p><br><p>の、どのパターンに入っているかでハンドリングが変わるとのこと。</p><br><p>今回は(1)のtry-catchかな。・・・ん？</p><p><a class="toc-backref" href="https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/ExceptionHandling.html#id51">5.7.2.2.1. ユースケースの一部やり直し(途中からのやり直し)を促す場合</a><a title="Permalink to this headline" class="headerlink" href="https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/ExceptionHandling.html#exception-handling-class-from-middle-label"></a></p><p>に誘導されてるんだけど、期待するハンドリングは</p><p><a class="toc-backref" href="https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/ExceptionHandling.html#id53">5.7.2.2.3. システム、またはアプリケーションが、正常な状態でない事を通知する場合</a></p><p>なんだけどな。。。ちゃんと見てみるか。</p>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12211078442.html</link>
<pubDate>Wed, 19 Oct 2016 07:11:16 +0900</pubDate>
</item>
<item>
<title>JavaScript開発用メモ</title>
<description>
<![CDATA[ <p><font face="Courier New"><code class="javascript plain">開発用メモ。（これもTERASOLUNAと直接関係ないけど）</code></font></p><p><font face="Courier New"><code class="javascript plain"></code></font></p><p><font face="Courier New"><code class="javascript plain"></code></font></p><font face="Courier New"><code class="javascript plain"><p><code class="javascript plain"><font face="Courier New"><br></font></code></p><p><code class="javascript plain"><font face="Courier New"><span id="ctl00_ContentPlaceHolder1_Label_Title" class="TitleCaption" abp="22">[JavaScript] テキストボックスの値を取得する</span></font></code><code class="javascript plain"><font face="Courier New"><span class="TitleCaption" abp="22"><br></span></font></code><font face="Courier New"><code class="javascript plain"><font face="Courier New"><a href="https://www.ipentec.com/">https://www.ipentec.com/</a> <br>document/document.aspx?page=javascript-get-textbox-value </font></code></font></p><br><p><span id="ctl00_ContentPlaceHolder1_Label_Title" class="TitleCaption">[JavaScript] ラジオボタンのチェック状態を取得する</span><span class="TitleCaption"><br></span><a href="https://www.ipentec.com/">https://www.ipentec.com/</a> </p><p>document/document.aspx?page=javascript-get-radiobutton-value </p><br><p>(なぜかリンクを一続きにするとアメブロにおこられる)<br>=====</p><p>・・・って、jQuery使ってるんだから</p><p>そっち側を作らないと指針に違反してしまう。</p><p><br><span id="ctl00_ContentPlaceHolder1_Label_Title" class="TitleCaption">[JavaScript] jQueryでテキストボックスの値を取得する</span> </p><p><a href="https://www.ipentec.com/">https://www.ipentec.com/</a> </p><p>document/document.aspx?page=javascript-jquery-get-textbox-value</p><p><br><span id="ctl00_ContentPlaceHolder1_Label_Title" class="TitleCaption">[JavaScript] jQueryでラジオボタンのチェック状態を取得する</span></p><p><span class="TitleCaption"><a href="https://www.ipentec.com/">https://www.ipentec.com/</a> </span></p><p><span class="TitleCaption">document/document.aspx?page=javascript-jquery-get-radiobutton-value</span></p><p><span class="TitleCaption"><br></span></p><span class="TitleCaption"><p>・・・というか、後輩にプログラム組ますときに</p><p>こういうこと言っておかないとダメだったんじゃ。</p></span><p><span class="TitleCaption">調べ方を工夫させないと。なんでもできてしまう言語だから特に。</span></p><p><span class="TitleCaption"><br></span></p></code></font>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12153713164.html</link>
<pubDate>Mon, 25 Apr 2016 08:29:03 +0900</pubDate>
</item>
<item>
<title>Terasolunaとは関係のないメモ</title>
<description>
<![CDATA[ <p>占いは統計学なのか？に対して、「占い　統計学」で検索したページを見てみると</p><p>違うようだ。という検索結果が大半。</p><p>風水は統計学なのか？に対して、「風水　統計学」で検索したページを見てみると</p><p>そうだ。という検索結果が大半。</p><br><p>なんか違和感。</p><br><p>以下引用</p><br><p>「占い　統計学」</p><br><p><a href="http://constellation.client.jp/uranaito_toukeigaku.html">http://constellation.client.jp/uranaito_toukeigaku.html</a> </p><p><span style="LINE-HEIGHT: 140%">【統計的方法】　<font size="2">（初等統計学<font color="#000000">　ポール・Ｇ・ホーエル　培風館）</font></font><br>統計的方法とは、最も広義に定義すれば、数量的データを処理する方法であると言える。<br><br>【統計】　<font size="2"><font color="#000000">（広辞典　　文学博士、宇野哲人編　集英社）</font></font><br>社会、自然の集団に関する現象を分析し、分類してまとめたもの「─学」<br><br>【統計学とは】<font size="2"><font color="#000000">　（はてなダイアリー）</font></font><br>数量的比較を基礎として、多くの事実を統計的に観察し、処理する方法を研究する学問。 </span></p><br><br><p><a href="http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1329235618">http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1329235618</a> </p><br><p>皆さんの解答を読むに<br>「占い」などには何かしらの<br>「数字」「統計」はあるが<br>そこから「計算」などは無く、<br>「占い師」の「経験則」で判断するようですね。<br><br>それでは「数字」は、ただ「占い師」の<br>「看板」です。</p><br><p><a href="http://www.senjutsu.jp/archives/2013/82">http://www.senjutsu.jp/archives/2013/82</a> </p><br><p>全てのデータに、全て同じ占法を使って、同じロジックで、全て機械的に鑑定を進めた結果として記録し続けなくてはなりません。 </p><p>「○○さんだけ断易や人相も使って鑑定しました」ということは許されません。<br>データを集めている最中、その占い師さんは進歩しても、退歩してもいけないのです。果たして、実務上そんなことが可能でしょうか？ </p><br><p>「風水　統計学」</p><br><p><a href="http://r25.yahoo.co.jp/fushigi/wxr_detail/?id=20150317-00040898-r25">http://r25.yahoo.co.jp/fushigi/wxr_detail/?id=20150317-00040898-r25</a> </p><br><p>昔の人の経験則に基づく一種の統計ともいうべき側面がありますよ</p><br><p>北の方角は日光が入りにくく、冬には北風が当たります。つまり、夏は湿気がこもりがちで冬は冷える場所。ですので出入り口や、トイレ、風呂などの水まわりを配するとよくない</p><br><p><a href="http://oshiete.goo.ne.jp/qa/194040.html">http://oshiete.goo.ne.jp/qa/194040.html</a> </p><br><p>風水自体は前に回答しておられる方がおっしゃるように中国伝来の一種の統計的地政学だとは思います。</p><p>北東の方角は鬼門だとか水回りがどうしたとかいうのは、気候上湿気がたまりやすい場所には台所は作らないようにとか昔の生活の知恵が伝承となっていることがあるので、そういう観点で見て納得のいくものは取り入れるくらいでいいと思います。<br><br>占い＋伝承＋地理≒風水（但し科学的根拠に乏しい）というところじゃないですか？</p><br><br><p><a href="http://fusu.myumic.com/%E9%A2%A8%E6%B0%B4%E3%83%9E%E3%83%A1%E7%9F%A5%E8%AD%98/%E9%A2%A8%E6%B0%B4%E3%81%AF%E7%B5%B1%E8%A8%88%E5%AD%A6.html">http://fusu.myumic.com/%E9%A2%A8%E6%B0%B4%E3%83%9E%E3%83%A1%E7%9F%A5%E8%AD%98/%E9%A2%A8%E6%B0%B4%E3%81%AF%E7%B5%B1%E8%A8%88%E5%AD%A6.html</a> </p><br><p>風水とは、古代中国の思想です。</p><p>2000年以上の間、人間の行動や環境によって</p><p>起こる結果を蓄積した統計学なのです。</p><p>占の一種だと思ってください。</p><p><br>---</p><br><p>占いと風水が似てる、と思っていたが</p><p>占いの一種が風水だと。</p><br><p>統計「学」まではいかなくても、風水は天候と建物を入力としていて</p><p>しばらく中国内でとどまっていたのなら、ある程度経験則と根拠が結びつくんだろうなと。</p><br><p>ただ、どこかの方角に何色を置くと金運があがる、というのはサッパリです。</p><p>たまたまお金持ちの人の家の内装がそうだったか、何かしらのブームがあったかぐらいじゃないでしょうか。</p><p>10年以上前、バラエティのテレビ番組で「ちびまる子ちゃんの視聴率」と「原油価格の推移」が非常に似ていることから</p><p>「ちびまる子ちゃんはサダムフセインの申し子だ」のようなトンデモ結論が展開されていたのを思い出した。</p><br><p>つい最近でも水曜日のダウンタウンで「松本人志　ロシアのスパイ説」とこじつけされていましたが、あーいうの誰が見つけるんでしょうね。</p><br>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12133583249.html</link>
<pubDate>Sun, 28 Feb 2016 06:34:21 +0900</pubDate>
</item>
<item>
<title>TERASOLUNAの入力チェックについて</title>
<description>
<![CDATA[ <p><a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/index.html" target="_blank">TERASOLUNA</a>では、いくつかの入力チェックの方法が用意されています。</p><p><a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ArchitectureInDetail/Validation.html" target="_blank">5.5章の入力チェック</a>を参考に、情報をざっくりまとめてみたいと思います。</p><p>---</p><p>5.5.1. Overview</p><br><p>長さや形式など、文脈によらず入力値だけを見て、それが妥当かどうかを判定できる検証</p><p>→「入力チェック」</p><p>システムの状態によって入力値が妥当かどうかが変わる検証</p><p>→「業務ロジックチェック」</p><p>と定義し、前者の入力チェックについて説明します（後者は<a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ImplementationAtEachLayer/DomainLayer.html" target="_blank">ドメイン層の実装</a>をみてね）、とあります。</p><br><p>サーバサイドの入力チェックとクライアントサイドの入力チェックについて、以下のような言及をしています。</p><p>・サーバサイドの入力チェック：<font color="#ff0000"><strong>必須(JavaScripによる改ざん防止のため)</strong></font></p><p>・クライアントサイドの入力チェック：ユーザビリティの向上</p><br><p>5.5.1.1. 入力チェックの分類</p><br><p>単項目チェックと相関項目チェックがあり、特徴を表でまとめています。</p><br><p>単項目は単一項目でのチェック、相関項目は複数項目に相関するチェックという感じです。</p><p>実現方法は以下の通りです。</p><br><p>・単項目チェックは「BeanValidation」を使用 (実装ライブラリとしてHibernate Validatorを使用)</p><p>・相関項目チェックは、「<a class="reference external" href="http://docs.spring.io/spring/docs/4.1.7.RELEASE/spring-framework-reference/html/validation.html#validator">org.springframework.validation.Validator</a>インタフェースを実装したValidationクラス」または「BeanValidation」を使用</p><br><p>5.5.2.1. 依存ライブラリの追加</p><br><p>アプリケーションサーバにデプロイして動かす場合は依存ライブラリは追加しなくてよいとのこと。</p><p>スタンドアロン環境(JUnitなど)で動かす場合は、これらのライブラリを依存ライブラリとして追加する必要があるとのこと。</p><p>必要なものは<a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ArchitectureInDetail/Validation.html#id4" target="_blank">TERASOLUNAの5.5.2.1</a>を参照ください。</p><br>5.5.2.2. 単項目チェック<br><p>単項目チェックするには、３ヶ所に対して手を施す必要があるそうです。</p><li>フォームクラスのフィールドに、Bean Validation用のアノテーションを付与する</li><li>Controllerに、検証するための<code class="docutils literal"><span class="pre">@Validated</span></code>アノテーションを付与する</li><li>JSPに、検証エラーメッセージを表示するためのタグを追加する</li><br><p>アノテーションを付与する、という表現に関しては後述にて説明します。</p><br>5.5.2.2.1. 基本的な単項目チェック<br><p>フォームクラス、Controller、JSPについての例が記載されています。</p><p>----</p><p>フォームについては、下記Appendixを参考にアノテーションを付与してね、と言ってます。</p><p>5.5.4.1. Hibernate Validatorが用意する入力チェックルール <br><a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ArchitectureInDetail/Validation.html#validation-jsr303-doc" target="_blank">5.5.4.1.1. Bean Validationのチェックルール</a><br><a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ArchitectureInDetail/Validation.html#validation-validator-list" target="_blank">5.5.4.1.2. Hibernate Validatorのチェックルール</a><a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ArchitectureInDetail/Validation.html#validation-validator-list"></a></p><br><p>これらのうち、ガイドラインの例では、@NotNull、@Size、@Email、@Min、@Maxを使ってます。</p><br><p>で、この@なんちゃらを<strong>アノテーション</strong>と呼んでいます。</p><p>アノテーションを付与するとは、宣言の前に@なんちゃらを記載することと捉えます。</p><br><p>ガイドラインの以下の例では、 <span class="kd">private</span> <span class="n">String</span> <span class="n">name</span><span class="o">;　の前に、@NotNullと@Sizeが記載されていますね。</span><br><br><a href="http://stat.ameba.jp/user_images/20151115/14/cw0809711/50/0c/p/o0279006513484306947.png"><img border="0" alt="annotationForm" src="https://stat.ameba.jp/user_images/20151115/14/cw0809711/50/0c/p/t02200051_0279006513484306947.png"></a></p><br><p>付与することにより、様々な入力チェックを実施してくれます。</p><p>Hibernate Validatorが準備しているアノテーションの種類と入力チェック内容が、上記Appendixに記載されています。</p><p>----</p><p>Contollerについては、入力チェック対象のフォームクラスに<code class="docutils literal"><span class="pre">@Validated</span></code>を付けてね、と言ってます。</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/14/cw0809711/e3/23/p/o0800065713484306948.png"><img border="0" alt="annotationController" src="https://stat.ameba.jp/user_images/20151115/14/cw0809711/e3/23/p/t02200181_0800065713484306948.png"></a><br></p><p>黄色の部分、UserFormの前に<span class="pre"><font face="Courier New">@Validated</font></span>がありますね。</p><p>----</p><br><p><span class="pre"><font face="Courier New">JSPについては、&lt;form:errors&gt;</font></span>タグで入力エラーがある場合にエラーメッセージを表示できますよ、と言ってます。</p><br><p>各入力フォームにタグを指定して・・・<br><a href="http://stat.ameba.jp/user_images/20151115/15/cw0809711/8a/f6/p/o0548033413484315175.png"><img border="0" alt="annotationJSP" src="https://stat.ameba.jp/user_images/20151115/15/cw0809711/8a/f6/p/t02200134_0548033413484315175.png" width="220" height="134"></a></p><p><br>すべての入力フィールドを未入力のまま送信すると、以下のようにエラーメッセージが表示されるよ、という例が記載されています。</p><p><a href="http://stat.ameba.jp/user_images/20151115/15/cw0809711/bf/cc/p/o0465011913484315174.png"><img border="0" alt="annotationJSPexample" src="https://stat.ameba.jp/user_images/20151115/15/cw0809711/bf/cc/p/t02200056_0465011913484315174.png"></a><br></p><p>また、cssを変更することによりエラーメッセージの出力方法を変えられる、とも言っています。</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/15/cw0809711/34/73/p/o0493018413484318664.png"><img border="0" alt="annotationJSPexample2" src="https://stat.ameba.jp/user_images/20151115/15/cw0809711/34/73/p/t02200082_0493018413484318664.png"></a></p><br><p>上記のように一覧で表示する場合「標準では出力順序を制御できないから、入力フィールドの横にエラーメッセージを出すことを推奨する」とあるけども</p><p>入力項目が多い場合とか他の画面との一体感の兼ね合いで、必ずしもそうではない、とは思ったりします。<br></p><p>5.5.2.2.2. ネストしたBeanの単項目チェック</p><br><p>基本的には</p><p>・Formのすべての項目にアノテーションを用意して</p><p>・JSPのすべての項目に&lt;form:errors&gt;タグを付ける</p><p>というのが上記の例です。</p><br><p>しかし、あるFormAから別のFormBを複数呼び出すときに</p><p>ネスト先のFormBの項目にアノテーションを付与すれば、FormA側のアノテーション宣言は不要になります、と言っています。</p><br><p>例えば、注文フォームに送り元住所と送り先住所があり、それぞれ同じ入力項目欄を準備する場合</p><p>住所フォームを用意し、送り元と送り先に同じ住所フォームを用いるのが一般的かと思いますが</p><p>その住所フォームにアノテーションを用意すれば、送り元と送り先それぞれの各項目に</p><p>アノテーションを付与したのと同じになります。</p><br><p>ただし、JSP側は全ての項目に設定が必要で、更に場合によっては</p><p>各FormBのすべてのパラメータが送信されなかった場合の&lt;form:errors&gt;タグを準備するなど</p><p>逆に手間がかかってしまう場合があるので、注意が必要です。</p><br><p>5.5.2.2.3. バリデーションのグループ化</p><br><p>・一つのフィールドに対して、グループごとに入力チェックルールを決められる「バリデーショングループ」を作れます。</p><p>・FormにグループごとのInterfaceを準備します。</p><p>・アノテーションリストを作り、そのリストの１つ１つにグループの条件を追加します。</p><p>・Controllerで、どの入力のときにどの条件を使うかを明示します。大きな変更になります。</p><p>・JSPはグループを判断できる入力項目があればよく、大きな変更は不要です。</p><br><p><br>5.5.2.3. 相関項目チェック</p><br><p>SplingValidatorとBeanValidatorのメリット、デメリットが記載していますが、メリットを抜き出すと以下になります。（もう片方に書いてあることがしづらいのがデメリット、という認識で）</p><br><p>・SplingValidator</p><p>特定のクラスに対する入力チェックの作成が容易</p><p>特定のフォームに依存した業務要件固有の入力チェック実装に向いている</p><p>・BeanValidator</p><p>Controllerでの利用が容易</p><p>特定のフォームに依存しない、開発プロジェクト共通の入力チェック実装に向いている。</p><br><p>5.5.2.3.1. Spring Validatorによる相関項目チェック実装</p><br><p>「パスワードリセット」処理を例に実装方法を説明しています。</p><p>Validatorクラスを作って、Controllerクラスで宣言します。</p><br><p>■Validatorクラス</p><p>・チェック対象以外のクラスは処理しないような実装とする。</p><p>・単項目チェックでひっかかったときにチェックしないようなら、そのような実装もする。</p><p>・チェックロジックを実装する。</p><p>・エラーが表示されるフィールド（場所）を実装する。</p><p>・エラーメッセージ（コードとデフォルト）を実装する。</p><p>■Controllerクラス</p><p>・Validatorをインジェクションする。</p><p>（インジェクションする・・・直訳すれば注入するとか注射するとかですが、要は「機能を有効にするための記載を加える」ぐらいの認識でよいかと）</p><p>・@<font face="Courier New">InitBinderをアノテーションして、作成したValidatorを追加する。</font></p><br><p><br>5.5.2.3.2. Bean Validationによる相関項目チェック実装</p><p>（5.5.3. How to extend）</p><p>Bean Validationによって、相関項目チェックの実装するためには、独自バリデーションルールの追加を行う必要がある。</p><p>大きく、以下の２つの観点に分かれる</p><p>・既存ルールを組み合わせ</p><p>・新規ルールを実装</p><br><p>5.5.3.1. 既存ルールを組み合わせたBean Validationアノテーションの作成<br>・エラーメッセージの共通化をしたいときなどに有用</p><br><p>5.5.3.2. 新規ルールを実装したBean Validationアノテーションの作成 <br>・<span class="pre"><font face="Courier New">javax.validation.ConstraintValidator</font></span>インタフェースを利用し、任意のルールを作ります。</p><br><p>5.5.3.2.1. 既存のルールの組み合わせでは表現できないルール<br>・<span class="n">ConstraintValidatorを継承したValidatorと、それを使用するアノテーションを作成します。</span></p><p>・アノテーション内に、表現したいルールを実装します。</p><br><p>5.5.3.2.2. 相関項目チェックルール</p><p>・<span class="n">ConstraintValidatorを継承したValidatorと</span>アノテーション、フォームを作成する。</p><p>・相関項目チェック用のアノテーションはクラスレベルに付与できるようにします。</p><p>・フォームのクラスレベルに作成したアノテーションを付与する。</p><p>・Spring Validatorによる相関項目チェック実装で用いた InitBinderの宣言は不要</p><br><br><p>5.5.3.2.3. 業務ロジックチェック</p><p>（コピペです）</p><div class="line">業務ロジックチェックは、基本的には<a class="reference internal" href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ImplementationAtEachLayer/DomainLayer.html#service-implementation-label"><span>ドメイン層のServiceで実装</span></a>し、結果メッセージは<code class="docutils literal"><span class="pre">ResultMessages</span></code>オブジェクトに格納することを推奨している。</div><div class="line">したがって、<a class="reference internal" href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/ArchitectureInDetail/MessageManagement.html#message-display"><span>通常画面の上部などに表示されることを想定している</span></a>。</div><p>一方で、「入力されたユーザー名が既に登録済みかどうか」など、対象の入力フィールドに対する業務ロジックエラーメッセージを、フィールドの横に表示したい場合もある。 このような場合は、ValidatorクラスにServiceクラスをインジェクションして、業務ロジックチェックを実行し、その結果を、<code class="docutils literal"><span class="pre">ConstraintValidator.isValid</span></code>の結果に使用すればよい。</p><br><p>5.5.2.4. エラーメッセージの定義 </p><p>Springのルール、BeanValidationのルールがあり、Springのほうが優先される。</p><br><p>Springの場所はここ。<br><a href="http://stat.ameba.jp/user_images/20151115/16/cw0809711/82/80/p/o0300017913484384986.png"><img border="0" alt="場所" src="https://stat.ameba.jp/user_images/20151115/16/cw0809711/82/80/p/t02200131_0300017913484384986.png"></a><br></p><p><br>5.5.2.4.1. ValidationMessages.propertiesに定義するメッセージ<br><span class="na">javax.validation.constraints.Size.message</span><span class="o">=</span><span class="s">size is not in the range {min} through {max}.</span><br><span class="c"><br></span>のように、属性値の埋め込みが可能<br><span class="na">javax.validation.constraints.Min.message</span><span class="o">=</span><span class="s">can not be less than {value}.</span></p><p>のように、不正となった入力値は、<code class="docutils literal"><span class="pre">{value}</span></code>で埋め込むことができる。</p><p><span class="na">org.hibernate.validator.constraints.Email.message</span><span class="o">=</span><span class="s">"{0}" is an invalid e-mail address.</span></p><p><span class="s">のように、フィールド名は{0}で埋め込むことができる。</span></p><p><span class="s"><br></span></p><p>5.5.2.4.2. application-messages.propertiesに定義するメッセージ</p><p><span class="na">ValidationMessages.を上書きたい場合に使用。</span></p><p><span class="na">アノテーション名.フォーム属性名.プロパティ名</span><span class="o">=</span><span class="s">対象のメッセージ</span></p><p><span class="s"><br></span></p><p>====================</p><br><p>というわけで、（コピペもありますが）TERASOLUNAの入力チェックについてのまとめですた。</p>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12095800736.html</link>
<pubDate>Sun, 15 Nov 2015 14:05:37 +0900</pubDate>
</item>
<item>
<title>環境構築その３：EclipseからDB接続してみる（ギブ）</title>
<description>
<![CDATA[ <p>環境構築第３弾です。</p><br><p><a href="http://flyingbrown.blog.fc2.com/blog-entry-12.html" target="_blank">フライングラビットさんのページ</a>を参考に、進めます。</p><br><p>まずは「PostgreSQLにJavaプログラムからアクセスするための、JDBCドライバを入手」します。</p><br><p>参考ページにある「Java8の人はJDBC42を使え」というのは・・・あ、この文か。</p><p>「If you are using 1.8 then you should use the JDBC42 version」</p><br><p>というわけで、入手して、libの下に置きました。</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/10/cw0809711/ab/20/p/o0800038013484130203.png"><img border="0" alt="jarget" src="https://stat.ameba.jp/user_images/20151115/10/cw0809711/ab/20/p/t02200105_0800038013484130203.png"></a><br></p><p>そんでもって、controllerの内容を書き換えます。</p><p>（DBを取り扱えるのはrepositoryしかない、と思っていたのですが・・・できるんだ）</p><p>（List &lt;String&gt; が、List &lt;string&gt;と小文字のsだとエラーが出る、というのも理由が良く分かってない）</p><br><p>ちなみに、todoリストのプロジェクトは、STSでサンプルプログラムで作ったものをそのまま使ってます。</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/12/cw0809711/39/a7/p/o0800058213484200120.png"><img border="0" alt="copypaste" src="https://stat.ameba.jp/user_images/20151115/12/cw0809711/39/a7/p/t02200160_0800058213484200120.png"></a><br></p><p>で、実行したら、ドライバ認識せずに接続エラー、と。なぜじゃ。</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/12/cw0809711/53/06/p/o0800058213484202148.png"><img border="0" alt="接続エラー" src="https://stat.ameba.jp/user_images/20151115/12/cw0809711/53/06/p/t02200160_0800058213484202148.png"></a><br></p><br><p>対処してみた1：tomcathomeの変更→変わらなかった。</p><p>参考URL:　<a href="http://blog.job-is.jp/archives/287">http://blog.job-is.jp/archives/287</a><br></p><p><br><a href="http://stat.ameba.jp/user_images/20151115/12/cw0809711/bc/eb/p/o0800070313484203513.png"><img border="0" alt="tomcathome" src="https://stat.ameba.jp/user_images/20151115/12/cw0809711/bc/eb/p/t02200193_0800070313484203513.png"></a><br></p><p>対処してみた2：ユーザーエントリーに追加→変化はあった。</p><p>参考URL：　<a href="http://www.yukun.info/blog/2010/03/java-no-suitable-driver-found.html">http://www.yukun.info/blog/2010/03/java-no-suitable-driver-found.html</a></p><p><br><a href="http://stat.ameba.jp/user_images/20151115/12/cw0809711/a5/bb/p/o0800060413484205620.png"><img border="0" alt="実行構成" src="https://stat.ameba.jp/user_images/20151115/12/cw0809711/a5/bb/p/t02200166_0800060413484205620.png"></a><br></p><p>変化があったといっても、エラーが出るようになって余計悪化ようには見えます。</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/12/cw0809711/34/18/p/o0670032713484206901.png"><img border="0" alt="error" src="https://stat.ameba.jp/user_images/20151115/12/cw0809711/34/18/p/t02200107_0670032713484206901.png"></a><br></p><p>でもまぁ、connect部分のソースは通ってるし・・・</p><p>DBの値はコンソールに一応出てきてるし・・・</p><p>とりま接続できたということで、ギブアップです（汗</p><br><p><br><a href="http://stat.ameba.jp/user_images/20151115/12/cw0809711/33/75/p/o0800059513484210395.png"><img border="0" alt="いいわけ" src="https://stat.ameba.jp/user_images/20151115/12/cw0809711/33/75/p/t02200164_0800059513484210395.png"></a><br></p><p>（最後の3文のトレースログ）</p><p>date:2015-11-15 12:17:12 thread:http-nio-8080-exec-2 X-Track:a3a32d5eb5b34d6faa194ffe2698b46a level:TRACE logger:o.t.gfw.web.logging.TraceLoggingInterceptor      message:[END CONTROLLER  ] TodoController.list(Model)-&gt; view=todo/list, <a href="mailto:model={todoForm=todo.app.todo.TodoForm@12df1e2">model={todoForm=todo.app.todo.TodoForm@12df1e2</a>, todos=[豚生姜焼き, お, おろしポン酢], org.springframework.validation.BindingResult.todoForm=org.springframework.validation.BeanPropertyBindingResult: 0 errors}<br>date:2015-11-15 12:17:12 thread:http-nio-8080-exec-2 X-Track:a3a32d5eb5b34d6faa194ffe2698b46a level:TRACE logger:o.t.gfw.web.logging.TraceLoggingInterceptor      message:[HANDLING TIME   ] TodoController.list(Model)-&gt; 111,482,029 ns<br>重大: サーブレット jsp のServlet.service()が例外を投げました [日 11 15 12:17:12 JST 2015]<br></p><br><br>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12095747193.html</link>
<pubDate>Sun, 15 Nov 2015 12:47:30 +0900</pubDate>
</item>
<item>
<title>環境構築その２：tomcatでTERASOLUNA-todoアプリケーションの動作確認</title>
<description>
<![CDATA[ <p>環境構築第２弾として、tomcatをインストールします。</p><br><p>といっても、公式サイト（<a href="http://tomcat.apache.org/" target="_blank">http://tomcat.apache.org/</a> ）からダウンロードして</p><p>任意の場所に置くだけです。</p><p>（例によって、フライングラビットさんのページ（<a href="http://flyingbrown.blog.fc2.com/blog-entry-5.htm" target="_blank">http://flyingbrown.blog.fc2.com/blog-entry-5.htm</a> ）を参考ください）</p><br><p>bin配下のstartup.batをダブルクリックして、「Server startup in xxxx ms」の表示を確認し、、、<br><br><a href="http://stat.ameba.jp/user_images/20151115/07/cw0809711/80/04/p/o0800057013484024995.png"><img border="0" alt="tomcat単体サーバ起動" src="https://stat.ameba.jp/user_images/20151115/07/cw0809711/80/04/p/t02200157_0800057013484024995.png"></a> <br></p><br><p>http://localhost:8080/ に猫(?)が出てきたら、tomcat単体の動作確認は終了です。</p><p><a href="http://stat.ameba.jp/user_images/20151115/07/cw0809711/67/6f/p/o0676053313484024996.png"><img border="0" alt="ねこ" src="https://stat.ameba.jp/user_images/20151115/07/cw0809711/67/6f/p/t02200173_0676053313484024996.png"></a> </p><br><br><p>ここで、eclipse を起動させて、tomcatサーバの設定を行います。</p><br><p>----</p><p>なお、Eclipseの起動に関して、私のPCは64bitのはずなのですが、</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/07/cw0809711/fe/76/p/o0800031913484030558.png"><img border="0" alt="64bit" src="https://stat.ameba.jp/user_images/20151115/07/cw0809711/fe/76/p/t02200088_0800031913484030558.png"></a> <br></p><p><a href="http://mergedoc.osdn.jp/">http://mergedoc.osdn.jp/</a> より、「64bit用のJava（FullEdition）」をDLし実行しても、なぜかエラーとなってEclipseが起動せず</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/07/cw0809711/62/b8/p/o0778016013484030557.png"><img border="0" alt="error" src="https://stat.ameba.jp/user_images/20151115/07/cw0809711/62/b8/p/t02200045_0778016013484030557.png"></a> <br></p><p>「32bit用のJava（FullEdision）」をDLし実行すると、普通にEclipseが起動するという謎の事象が発生していますが</p><p>そのまま突き進んでいることをご了承ください。</p><br><p>あ、あとMavenのインストールおよびブランクプロジェクトのインストールまでは終わっています。</p><p>----</p><br><p>サーバで実行を選びます。</p><p><br><a href="http://stat.ameba.jp/user_images/20151115/08/cw0809711/41/e4/p/o0800058713484041598.png"><img border="0" alt="サーバ上で実行" src="https://stat.ameba.jp/user_images/20151115/08/cw0809711/41/e4/p/t02200161_0800058713484041598.png"></a> <br><br></p><p>Tomcat8を選びます。</p><p><a href="http://stat.ameba.jp/user_images/20151115/08/cw0809711/c7/9c/p/o0700074413484041596.png"><img border="0" alt="tomcat8を選択" src="https://stat.ameba.jp/user_images/20151115/08/cw0809711/c7/9c/p/t02200234_0700074413484041596.png"></a> </p><br><p>HelloWorldが表示されました。</p><p><a href="http://stat.ameba.jp/user_images/20151115/08/cw0809711/9d/14/p/o0800058213484041597.png"><img border="0" alt="はろわ" src="https://stat.ameba.jp/user_images/20151115/08/cw0809711/9d/14/p/t02200160_0800058213484041597.png"></a> </p><br><br><p>・・・駆け足もいいところですが、Tomcat設定を終わります。</p><br>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12095703448.html</link>
<pubDate>Sun, 15 Nov 2015 07:15:47 +0900</pubDate>
</item>
<item>
<title>環境構築その１：postgresをインストールする</title>
<description>
<![CDATA[ <p>環境構築第１弾として、まずは DB をインストールします。</p><br><p>フリーで postgres があるので、そちらを使用。</p><br><p>フライングラビットさんのページ（<a href="http://flyingbrown.blog.fc2.com/blog-entry-11.html">http://flyingbrown.blog.fc2.com/blog-entry-11.html</a>）を参考にします。</p><br><p>----</p><p>まずは、<a title="日本PostgreSQLユーザ会" href="https://www.postgresql.jp/" target="_blank">日本PostgreSQLユーザ会</a>から<a href="http://www.enterprisedb.com/products-services-training/pgdownload#windows" target="_blank">EnterpriseDB社</a>のページへ飛んで、<strong><em>Version 9.4.5 </em></strong>のWinx86-64をDL。</p><br><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/63/4d/p/o0800048013483245319.png"><img border="0" alt="ダウンロードサイト" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/63/4d/p/t02200132_0800048013483245319.png"></a></p><br><p>VisualC++のプロパティが出て、少し経って消えたあと、setupの画面へ。<br><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/b0/7b/p/o0706053213483245318.png"><img border="0" alt="EDB" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/b0/7b/p/t02200166_0706053213483245318.png"></a><br></p><p>Nextを押したら、<br>Installation Directory、Data DirectoryとデフォルトのままNextを押し、</p><p>（C:\Program Files\PostgreSQL\9.4、C:\Program Files\PostgreSQL\9.4\data）<br>Password を postgres と入力してNext、<br>Port を 5432 とこちらもデフォルトのままNext、<br>最後 Advanced Option も Default locale のままNextを押し<br>Ready to Install で Next を押したらインストールが開始されます。</p><br><p><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/17/74/p/o0706053213483251489.png"><img border="0" alt="インストール中" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/17/74/p/t02200166_0706053213483251489.png"></a></p><br><p>ここで、豚の生姜焼きでも食べながら、しばらく待ちます。</p><br><p>食べ終わるころには、インストール完了してました。</p><br><p><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/7c/bb/p/o0706053213483251490.png"><img border="0" alt="インストール完了" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/7c/bb/p/t02200166_0706053213483251490.png"></a></p><br><p>Windows8ってスタートメニュー無いのかな？</p><p>左下のWindowを押して、さらに↓をおして出てくる「アプリ」の中に</p><p>同等のものがありました。</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/5d/60/p/o0481057313483251491.png"><img border="0" alt="Windows8.1のアプリに追加されました" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/5d/60/p/t02200262_0481057313483251491.png"></a><br><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/7c/bb/p/o0706053213483251490.png"></a></p><p>インストール完了したので、動作確認です。</p><br><p>pgAdmin III を起動します。<br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/17/74/p/o0706053213483251489.png"></a></p><p>サーバ起動、データベース作成、テーブル作成とフライングラビットさんのページ通りに進めます。<br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/b7/8d/p/o0800058713483255423.png"><img border="0" alt="サーバ接続" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/b7/8d/p/t02200161_0800058713483255423.png"></a><br><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/2a/cf/p/o0800058713483255424.png"><img border="0" alt="DB作成" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/2a/cf/p/t02200161_0800058713483255424.png" width="220" height="161"></a><br></p><p><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/42/47/p/o0676064913483255422.png"><img border="0" alt="テーブル作成" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/42/47/p/t02200211_0676064913483255422.png" width="220" height="211"></a></p><br><p>主キーを設定してっと・・・おっと間違えた。</p><p>todo_id を指定したつもりが todo になってた・・・</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/59/e7/p/o0800063013483259475.png"><img border="0" alt="主キー間違い" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/59/e7/p/t02200173_0800063013483259475.png"></a><br></p><p>テーブルのtodoを右クリックで、プロパティを開きます。</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/2b/3b/p/o0800061213483259474.png"><img border="0" alt="プロパティを開く" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/2b/3b/p/t02200168_0800061213483259474.png"></a><br></p><p>制約タブを開くと、間違いを確認できます。</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/b8/e6/p/o0676064913483259473.png"><img border="0" alt="間違い確認" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/b8/e6/p/t02200211_0676064913483259473.png" width="220" height="211"></a><br></p><p>削除をクリック。</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/cc/c3/p/o0444021213483261729.png"><img border="0" alt="ダイアログ・・・日本語が" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/cc/c3/p/t02200105_0444021213483261729.png"></a><br></p><p>「選択した制約を削除したいと思うことは確かですか？」と問われます。</p><br><p>確かなので、はいを選びます。</p><br><p>その後、todo_id を追加します。</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/6e/4c/p/o0583064913483264563.png"><img border="0" alt="主キー再設定" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/6e/4c/p/t02200245_0583064913483264563.png"></a><br></p><p>追加→OKを押して、主キーが変わったのを確認します。<br><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/d8/98/p/o0800063013483265529.png"><img border="0" alt="修正確認" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/d8/98/p/t02200173_0800063013483265529.png"></a><br><br></p><p>最後に、データの確認です。</p><p>「選択オブジェクトでデータをビュー」のアイコンを選びます。</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/17/47/p/o0800061913483269263.png"><img border="0" alt="選択オブジェクト" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/17/47/p/t02200170_0800061913483269263.png"></a><br></p><p>いくつかデータを追加します。</p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/4f/c1/p/o0750062413483269262.png"><img border="0" alt="データ追加" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/4f/c1/p/t02200183_0750062413483269262.png" width="220" height="183"></a><br><p>（２つ目は「おろしポン酢」と入れたつもりが、お、だけで確定してしまいました。</p><p>データ追加中は、ダブルクリックしても編集できなかったので、そのまま３つめを追加しました。）</p><br><p>ここで、リフレッシュのボタンを押すと todo_id が自動で採番されました。</p><p>（参考のページはビューを閉じて再度開きなおすことで自動採番してましたね。）</p><p><br><a href="http://stat.ameba.jp/user_images/20151114/11/cw0809711/0a/4e/p/o0750062513483269261.png"><img border="0" alt="リフレッシュ" src="https://stat.ameba.jp/user_images/20151114/11/cw0809711/0a/4e/p/t02200183_0750062513483269261.png" width="220" height="183"></a><br></p><p>ここまでで、postgres環境構築編は終わりです。</p><br>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12095389861.html</link>
<pubDate>Sat, 14 Nov 2015 10:57:53 +0900</pubDate>
</item>
<item>
<title>テスト</title>
<description>
<![CDATA[ <p>TERASOLUNAについて勉強していきます。 </p><br><p>terasolunaガイドライン</p><p><a href="http://terasolunaorg.github.io/guideline/">http://terasolunaorg.github.io/guideline/</a> </p><br><p>今は5.0.1が最新版のようですね。 </p><p><a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/">http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/</a> </p><br><p>とりあえずTodoアプリケーションを動かしたいですね。</p><p><a href="http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/TutorialTodo/index.html">http://terasolunaorg.github.io/guideline/5.0.1.RELEASE/ja/TutorialTodo/index.html</a></p><br><p>ガイドラインには、STSっていうのを使って実装する、とあるけども訳あってEclipseを使って実現したいのですね。 なので、もっぺん環境構築からやり直してみようかなと。</p><br><p>（余談）</p><p><a href="http://wkp.fresheye.com/wikipedia/TERASOLUNA">http://wkp.fresheye.com/wikipedia/TERASOLUNA</a> </p><p>TERASOLUNA Server Framework for Javaの説明で「StrutsベースのためXML地獄という現象に陥ることがある。」ってあるけど、、どんな地獄？</p><br>
]]>
</description>
<link>https://ameblo.jp/cw0809711/entry-12088120944.html</link>
<pubDate>Sun, 25 Oct 2015 14:41:55 +0900</pubDate>
</item>
</channel>
</rss>
