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"); } } ところが、残…

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

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

JUnitのassertThatのいいところ

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

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

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

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>

PrimeFacesのテーマ設定

PrimeFacesのテーマは、jQuery UIのThemeRollerで作成します。 ThemeRoller | jQuery UI バージョンはとりあえず1.10.0で。 ダウンロードでは、コンポーネントはダウンロードする必要がないので、「Components」の「Toggle All」のチェックをはずしておくと…

JavaEEのJPAで、同じCriteriaなのに違うSQLが生成されることがある

JPAで、同じCriteriaなのに違うSQLが生成されることがあって、毎回違う結果を返してくるのでハマりました。 EclipseLink 2.3.2です。 同じテーブルをさすRootを2つ作ると、場合によって解釈が違うという感じです。 つまり CriteriaQuery cq = em.createQuer…

Javaでのシリアル通信の現状

DE0にRS-232Cポートを半田付けしたのだけど、ターミナルで確認するだけじゃなくてプログラムから通信したくて、まあ込み入った処理をすることもあるだろうなーということでJavaでシリアル通信をしたほうがいいかなと思った。 で、Javaではシリアル通信は標準…

GlassFishのカスタムリソースに日本語で説明を入れるとNetBeansが認識しなくなる

JavaでWebアプリを開発するとき、開発環境と本番環境で違うような値はカスタムリソースとして持たせたりすると思うのだけど、その説明に日本語を入れるとNetBeansがGlassFishを認識できなくなってしまった。 説明を英語にすると認識できるようになった。 こ…

JPA+MySQLでの文字化けにはまった件

JPA+MySQLで、登録時はちゃんと登録できて、一覧でもちゃんと表示されてるのに、ある程度時間がたつと文字化けしているという現象が起きてちょっとはまってた。 MySQLの設定を見直したりしてたのだけど、これもしかしてJPAのキャッシュの問題じゃないか、と…

PrimeFacesのファイルアップロードでパラメータが文字化けする件

(2013/4/6 追記:PrimeFaces3.5では、そのままFileUploadFilterを使ってよいようです) PrimeFacesでファイルアップロードするときは、FileUploadFilterというのを組み込まないといけないのだけど、それだけだとファイル以外のパラメータでの日本語が文字化け…

Javaでのパターンマッチを考える

このエントリはJava Advent Calendar 2012の20日目のエントリです。 昨日は@akirakoyasuさんのアノテーションのインスタンスを取得するでした。 明日は@Fantom_JACさんです。 パターンマッチとは 多くの関数型言語には、パターンマッチという仕組みが用意さ…

Sencha TouchでのクロスドメインなJSONP通信

12/1に、福岡RubyKaiki01で、ぜんぜんRubyとは関係ないSencha Touchの話をしてきました。そのときに紹介したJSONPのコードについて。 JSONPについては、サーバーの記述も必要なので、本には書いてなかった、というか書かないから調べてなかったので。 Sencha…

JavaFXのWebViewでSeleniumみたいなWebテストやってみたら面白かったんだけど

JavaFX2.0のWebViewで、Javaからブラウザが操作できるようになって、これをSeleniumが組み込んだらおもしろいことになるだろうなと思ってたのですが、よくよく考えると、SeleniumナシでWebサイトのUIテストが簡単に書けることに気づきました。 ということで…

Javaでブラウザが表示できるようになるよ!

JavaFX 2.0 betaが公開されました。いまのところ32bit Windows用だけですけど。 JavaFX GA downloads で、JavaFX、あんまり興味ない人も多いかと思いますが、2.0ではWebKitベースのブラウザが入ったのです。 そして、JavaFXはJavaFX ScriptがなくなってJava…

4コア8スレッドCPUを手に入れたので試してみたら不思議な結果に

インテルCore i7 2600Kという4コア8スレッドのCPUを手にいれたので、並列処理でどうなるか試してみたら、面白い結果に。 Intel CPU Core i7 i7-2600K 3.4GHz 8M LGA1155 SandyBridge BX80623I72600K出版社/メーカー: インテル発売日: 2011/01/09メディア: Pe…

CDIではフィールドを直接参照してはいけない

ちょっとハマったので、メモ こんなSessionScopedなクラスを作ります。 import java.io.Serializable; import javax.annotation.PostConstruct; import javax.enterprise.context.SessionScoped; import javax.inject.Named; @Named @SessionScoped public c…

memcachedのかわりにInfinispanを使う

さて、分散データグリッドのInfinispanですが、いまだにInterspinとかInfospamとかInfinispecとか、名前なんだったか覚えてないですって話じゃなくて、代表的メモリキャッシュであるmemcachedと同じインタフェースをもってるんでmemcachedの代わりにつかって…

JBoss Cache改めInfinispanを使ってみる

といっても、起動してみた程度だけど。 Infinispanってなに? Infinispanは、JBoss Cacheを前身とする、「データグリッド」プラットフォームです。と書いてあります。わかりやすい言葉でいうと、キャッシュサーバーです。 http://www.jboss.org/infinispan …

Java 7の並列ライブラリをためしてみる

と言っても1メソッド呼び出してるだけですけど。ソースは最後においていますが、整数のリストの合計を取得してます。 次のようなCallableインタフェースを実装したクラスを用意して SummaryTask implements Callable<Integer> そのクラスのリストを用意して List<SummaryTask> summ</summarytask></integer>…

Google App Engine for Javaでのメール受信コード

Google App Engineで受信メールの処理ができるようになった。 具体的な手順はこちら。 http://code.google.com/intl/en/appengine/docs/java/mail/receiving.html 手順はこう。 まず、appengine-web.xmlに次の設定を追加 <inbound-services> <service>mail</service> </inbound-services> そうすると、string@appid.ap…

過去の状態のスナップショットを取れるMap

時間を指定して、その時点での状態を取れるようなMapを作ってみた。 何に使うかとかは考えてない。 こういった、データの世代別管理をして過去のある時点をスナップショットとして取得できるようなデータ構造は、扱うデータが巨大になってバックアップのため…

1台のマシンで並列実行するためのMapReduceフレームワークを作ってみた

ブックマークのコメントに 1台でもGbyte単位のデータを処理可能なプログラムを簡単に書けるのは十分なメリットだと思う。 とあったので、ついカッとなって作ってみた。 サンプルは前と同じく、クラスがJavaソース中でimportされている回数を数えるもの。 map…

エラー処理の方針とString#equalsの書き方

String#equalsを使った文字列リテラルとの比較の書き方として、str.equals("リテラル")と書くのがいいか、"リテラル".equlas(str)と書くのがいいかという論争がありました。 そこで、この問題について、エラー処理の方針と絡めて考えてみようと思います。 エ…

HadoopでのMapReduceを気軽に試すサンプル

Googleの分散処理技術であるMapReduceを、そのオープン実装のHadoopを使って試したいと思っても、なんか設定がめんどくさそうで二の足を踏んじゃう人は多いはず。 そこで、並列計算をせずにサーバーなしで動かせるサンプルを作ってみた。 ただ、設定は不要な…

メッセージキューで遊びたいのでJMSを試す

これからはメッセージキューが大切ということで、JavaのメッセージングAPIであるJMS(Java Messaging Service)を試してみます。 JMS試すにはメッセージングサーバーが必要で、Open MQとかを使います。けど、わざわざOpen MQとかをインストールして起動させる…

Seasarの問題点など

なんとなく思ってたSeasarの問題点をまとめてみる。 Seasarというのは、JavaのDIコンテナ+その周辺ライブラリを含めたSeasar2のことと、それらの周辺プロジェクトをとりまとめるSeasarファウンデーションのこと。どの問題がどっちの問題なのかもよくわからな…