2013-01-01から1年間の記事一覧

PrimeFacesのファイルダウンロードを条件によってエラーにする

PrimeFacesにはファイルダウンロードのコンポーネントがあって、これは非常に便利なのですが、Ajax動作ができないのでダウンロードすべきデータがないときなどのエラー処理ができません。 そこで、別ボタン経由でダウンロード開始を行ってエラー処理を行うよ…

JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由

lombokは、JavaでのアクセッサやtoString、equalsなどボイラープレートなコードをコンパイル時に生成してくれるライブラリです。 ただ、こういったコードの生成は、IDEを使えば自動で行えるので、わざわざlombokを導入するまでもないと考えることもできます…

英単語帳、1冊の1/3すすんだ

英単語帳を買ってから、ちょうど2ヶ月で1冊の1/3進みました。 英単語帳を買ったら思いのほか面白かった つまり、12レベルある中のレベル4の1000語がおわったということです。 とはいえ、全部覚えてるわけではない、というかむしろほとんど覚えてはいないのだ…

TDDで「テストばかり書いて間に合うのか?」と質問されたときの正解

TDDにおいて、顧客などから「テストばかり書いていて間に合うのか?」などと質問されることがあると思います。そんなときには、後ろからそっと抱きしめて 「そんな質問させてごめんな」 が正解です。https://twitter.com/kis/statuses/350279800600018944 テ…

DDD(ドメイン駆動設計)に関する資料

ちょっとまとめ。 ドメイン駆動設計・開発の実践 Eric EvansがDDD(ドメイン駆動設計)を語る Domain-Driven Designのエッセンス -目次- ドメイン駆動設計 ( DDD ) をやってみよう DDD時代の設計 - DDD-memo エリック・エヴァンスのドメイン駆動設計 (IT Arc…

Struts1職人の朝は早い

Struts1職人の朝は早い。 「毎日毎日DBとアプリサーバーが違う。機械ではできない」 「このstruts-config.xmlはダメだ。ほら、すぐ裂けてしまう」 ここ数年はLLとScalaに押されているという。下町Struts1の灯火は弱い。だが、まだ輝いている。 「やっぱりア…

WebSocketをネタにJava EE 7正式版を試してみる

Java EE 7がリリースされて、それに対応したGlassFish 4もリリースされました。 ついでに、Java EE 7やGlassFish 4に対応したNetBeans 7.3.1もリリースされています。 ということで、NetBeansとGlassFishを使ってJava EE 7を試してみようと思います。 今回は…

Java8で最もインパクトのある構文拡張、デフォルトメソッド

Java8でのラムダの使い方などを説明してきたのですが、構文拡張自体には触れていなかったので、改めてここで簡単に説明しておこうと思います。 まずは、Java8で実際に最もインパクトがある言語拡張、インタフェースのデフォルトメソッドです。 デフォルトメ…

Java8でのプログラムの構造を変えるOptional、ただしモナドではない

※ 5/29 3:23 追記:なんかモナドになったかも。最下部参照 さて、Java8での拡張をいろいろ見てきたわけですが、ではアプリケーションプログラムでFunctionを受け取るメソッドをがんがん定義するかというとそういうことはあまりなく、フレームワーク的な部分…

Java8で強化されたMapと、書きやすくなったメモ化再帰

Java8のlambda構文の話を書くと、旧来の書き方でいいというコメントがつくのですが、それでも便利になったMapの恩恵を受けることは多いんじゃないかと思います。 ※ 2018/5/31 Java9からはメモ化再帰には使えなくなっています ※ 2019/2/15 なんか問題ない? M…

Java8のlambda構文がどのようにクロージャーではないか

Java8にlambda構文が入りましたが、これはクロージャーではない、とされています。 では、どのように「クロージャーではない」のか、ちょっと見てみます。 まず、lambdaを返すメソッドを定義します。 public static Supplier<String> createMessenger(String name, S</string>…

Java8で体験するオブジェクトと関数の狭間

Java8でlambda構文が導入されることで、Java言語も関数型のような性質をもつことになりました。 関数型の性質として大事なことのひとつに、関数を戻り値として返せるということがあります。lambda構文によって、Javaでも表記上は関数を戻り値として返すこと…

英単語帳を買ったら思いのほか面白かった

プログラム作業中に困ったときに検索してひっかかった英語の技術文書を読む程度だと、辞書をひくことなく英語が読めるのだけど、技術解説になるとちょっとつらいし、ブログにのってる意見になると知らない単語が増え、ニュースになると知らない単語の頻度が…

Java大好き男に「どのIDEが好き?」と訊ねられたとき、女はどう答えたらいいの?

あ、まず前提として、 貴女がJava大好き男を夢中にさせることが、 はたして貴女を幸福にするかどうか、それはまた別問題だけれど。 とはいえ、Java大好き男たちは玉石混交ながら、 大手SI系の給料高い男なども多く、 したがって、釣り師たる女たちにとっては…

Java8のStreamの目的と書きやすさや可読性、並行処理の効果について

さて、前回Java8のStreamの使い方をざっと見てみたのですけど、はてなブックマークのコメントで「Javaが使われている領域でこんな言語拡張は必要か」「可読性が損なわれていて単なる自己満足ではないか」のようなコメントがついていました。 実際どうなのか…

Java8のStreamを使いこなす

さて、Java8で関数型っぽいことをやって遊んでみたわけですが、実際はそんな書き方しませんよね。 Java8で実際に使うのは、Streamです。 ということで、Streamの使い方をひととおり見てみます。 ※5/17 仕様変更があったので、修正しました 基本 まずは、Iter…

Java 8を関数型っぽく使うためのおまじない

やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで…

JavaDB(Derby)でのNOT NULL制約の解除

なんか他のDBと違うのでメモ ALTER TABLE my_table ALTER COLUMN my_column NULL;

文字列でswitchするときはif-else switchイデオムを使うほうが安全

Java SE 7から、switch構文で文字列が使えるようになりました。 public void hoge(String s){ switch(s){ case "a": System.out.println("AA"); break; case "b": System.out.println("BB"); break; default: System.out.println("Other"); } } ところが、残…

PrimeFacesのColumnGroupではconvertNumberとか使えない?

PrimeFacesでは、ColumnGroupでフッターが指定できます。 PrimeFaces - DataTable - Grouping でも、このテキストにf:convertNumberを適用させる方法がわかりません。 フォーラムでも同じ質問している人がいるのだけど「hey guys, any clue?」切ない・・・ P…

PrimeFacesのSelectOneRadioをJavaScriptから操作する

kikutaro777さんが書いてるように、PrimeFacesではClient APIを使って結構手軽にJavaScriptからコンポーネントを操作できます。 PrimeFacesのTabViewをJavaScriptで操作する - Challenge Java EE ! ところが、SelectOneRadioはそういう便利APIが用意されてい…

Javaで指定したファイルを全部zipに圧縮するメソッド

なんか便利メソッドできた。圧縮するファイルにディレクトリ指定しちゃだめ。 /** * ファイルをまとめて圧縮する * @param filename 保存ファイル名 * @param base 圧縮するファイルのベースパス * @param paths 圧縮するファイルの名前 * @throws IOExcepti…

JUnitのassertThatのいいところ

JUnitでのテストでは、古くは次のように書いてました。 assertEquals("期待値", "実際の値"); で、比較の種類だけassertXxxがあるわけです。 最近だと assertThat("実際の値", is("期待値")); のようにも書けます。 別にどっちでもええやん、とか思ってたの…

ファイル処理するコードがJSFであっというまにファイルアップロード対応になって驚いた件

ちょっとExcelファイルを処理するコードを書いたんですよ。 まあ、Apache POI使ってこんな感じだったとします。 @Named public class Importer{ public void doProcess(InputStream is){ System.out.println(WorkbookFactory.create(is) .getSheetAt(0).getR…

FPGAのおすすめ教材

ここ最近のエントリを見て、モテたくてFPGAを触りたくなったという人もいるだろうと思います。 ただ、FPGAを触るといっても、どこから始めればいいのか、何を買えばいいかわからない人も多いのではないでしょうか。 そこで、FPGAを触るために用意するもので…

Ajaxを使うJSF2のイベントの呼び出しタイミング

jsf

JSF2でAjaxに対応していろいろできるんですけど、そのときのメソッドの呼び出しタイミングについて調べてみたのでまとめておきます。 ここで、JSF標準とPrimeFacesのcommandButtonについてactionとactionListener、あとsetPropertyActionListener、それから…

ソフトウェア工学は失敗している

特に学術的にソフトウェア工学に触れたことはないのですが、むしろそうではなく現場にいる身としては、ソフトウェア工学は失敗しているように見えます。 「成功していない」ように見えるのではなく「失敗している」ように見えるのです。 もちろん、いまソフ…

PrimeFacesでThemeRollerのテーマを使ったときTabViewが最初に全部表示される

PrimeFacesではThemeRollerでテーマが設定できるのですが、そうするとTabViewを使ったときの初期表示で、すべてのタブの内容が表示されてしまいます。 で、しばらく悩んでたのだけど、ここに答えがありました。 PrimeFaces Community Forum • View topic - W…

FPGAチップが今後バカみたいに安くなるかもしれない話

ふと、今後5年でFPGAはバカみたいに安くなってくるかもしれないと思ったので、まとめておきます。 ただし、材料はブログで見た話とか人に聞いた話とかで、しかもそれをいいように解釈しての話なので、妄想レベルであることを最初に断っておきます。 用語とし…

Jacoco+NetBeansでカバレッジを取ってJenkinsで記録

カバレッジをとるのに、Jacocoを使ってみました。 設定などのメモ。 Mavenの設定 project > build > pluginsタグに次のようなプラグインを追加します。 <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.6.2.201302030002</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> </executions></plugin>