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

2013年まとめ:今年はJava8の年だった

うっかり帰省しそびれて、ひとりだらだら年越しすることになったので、はてブがたくさん付いた記事を中心に月ごとのエントリをまとめてみます。 1月 この月に一番ぶくまついたのはこの記事。それでも33程度。 SIerが日本にしかいないという割には、デマルコ…

Java8で複数の処理を確実に実行するイディオム

たとえばこんな感じで複数の処理があるとしますね。 public static void proc1(){ System.out.println("proc1"); } public static void proc2(){ System.out.println("proc2"); } public static void proc3(){ System.out.println("proc3"); } この、proc1と…

Java8には型推論があるので型指定不要で変数が使えますよ

Javaプログラマのみなさんは、Javaは型推論がないから変数の型指定をしなくていけなくてダサい、などとイジメられた経験があると思います。 おかあさんに型推論をねだるとGroovyをわたされたり、おとうさんに型推論をねだるとScalaがやってきたり、プレステ…

Streamで2つの集計を同時に行う

個数と平均と合計、最大、最小を取るのであれば、標準でできます。 IntSummaryStatistics iss = IntStream.of(2, 5, 7) .summaryStatistics(); System.out.printf("%d %d %.1f%n", iss.getCount(), iss.getSum(), iss.getAverage()); ただ、二乗和とかを取ろ…

Java EEのCDIで定義しておくと便利なプロデューサーとインターセプター

このエントリはJava EE Advent Calendar 2013の13日目の金曜日です。 昨日は@nagaseyasuhitoさんでした。 メソッドバリデーションのユニットテスト | nagaseyasuhito Daily works. 明日は@yamadamnさんが、ぼくの知らない世界のことを書いてくれるんだと思い…

Java SE 8でパターンマッチを実装する

Java Advent Calendar 2013の12日目のエントリです。 昨日はtorutkさんでした。 Java Advent Calendar 2013 11日目 - Java SE 8の新クラス・メソッド一覧 - torutkの日記 明日はbitterfoxさんがマニアックな記事を書くんだと思います。 ところでパターンマ…

JavaFXでSeleniumっぽいものを作る

JavaFX、SeleniumのAdvent Calendar11日目です。 JavaFX Advent Calendar 2013 - Adventar Selenium Advent Calendar 2013 - Adventar 両方に対応できるネタとして、JavaFXでSeleniumっぽいものを作ってみました。というか、以前ためしに作ってみたものを、…

イベント:ぷろぐぱ福岡(12/7 土) 〜プログラミング言語のパフォーマンスを考える〜

12/7(土)に福岡でプログラミング言語のパフォーマンスを考えるイベント「ぷろぐぱ」を行います。 参加登録はこちらから。 http://atnd.org/event/E0021897 ただ、編集などに制限があるので、こちらで詳細公開しておきます。 概要 プログラマにとって一番身近…

CDI1.1でInterceptorを使うときの注意

CDIを使うときに便利なInterceptorですが、なんかJava EE 7のCDI 1.1で試そうと思ったら Enabled interceptor class MyInterceptor in file:/C:/.../beans.xml@7 is neither annotated @Interceptor nor registered through a portable extension という例外…

直列加算と並列加算でdoubleの足し算の結果が変わる話

Javaに限った話ではないのだけど、Javaで並列加算が気軽にできるようになったので、気に留めておいたほうがいい話。 まず、次のようなコードを動かしてみます。 public static void main(String[] args){ double[] data = { 1.234E80, -1.234E80, 2, 3}; Sys…

Java8 Streamではクイックソートが書けない

タイトルは釣りです。 もちろん、汎用ライブラリなので、Streamを使ってクイックソートが書けないわけではありません。 ただ、Streamで完結したままではクイックソートは書けません。Listとの相互変換が必要です。 で、Streamで完結したままクイックソートが…

NetBeans7.4でCordovaを使うときの注意

だいたいの手順は、こちらのYouTubeの通り。 インストールしないといけないものは Android SDK node.js cordova git です。 Android SDK Android SDKはこちらから。 http://developer.android.com/sdk/index.html ここで注意する点は、Cordovaを使うためには…

Java SE 8 lambdaで変わるプログラミングスタイル

JavaOne2013報告会福岡第二段で話したlambdaの資料に加筆して公開しました。 lambdaの詳細な構文は適当に調べてもらうとして、lambdaでどのようにプログラミングスタイルが変わるかということに重点おきました。 追記「用意されたFuncationalInterface」のリ…

勉強会に参加しないと不幸になる話

昨日のOSC福岡2013の「勉強会x勉強会」セッションで飛び込みLTしたときのプレゼンに加筆して公開しました。 追記:福岡の人はFacebookの福岡IT関連勉強会に参加しておくと、勉強会情報が得やすいと思います。

ぷろぐぱ 福岡

http://atnd.org/event/E0021897https://groups.google.com/forum/#!forum/javacommu-q

今どきのJava Webフレームワークってどうなってるの?

昨日のSeasar2のエントリについたコメントなどで、「とはいえ代わりに何つかうの?」みたいな話が出てたので、とりあえずJava EEのWebフレームワークについて簡単にまとめてみます。 Java SE 8+Java EE 7+lombokで書いていますが、基本的なところはJava SE 7…

Seasar2を新規案件に採用するのはそろそろやめたほうがいい

Seasar2の機能追加停止が宣言されてから、すでに6年弱たっています。 Seasar2.4に対する追加要望があれば、もちろん検討します。ただし、大きな変更や追加はもうないでしょう。 Seasar2の今後のロードマップ 2008-01-29 - ひがやすを blog 後継になる予定だ…

NetBeans7.4には最新lombokを

NetBeans7.4がリリースされましたが、lombokが動かなくなってました。 で、NetBeans7.4ではlombokは動かない!というエントリーを書こうと思って改めてフォーラムを見ると、なんだか新しいバージョンでは動くようなことが書かれてました! 最新の1.12.2をダ…

日経ソフトウェア11月号にFPGAの記事を書きました

いま発売中の日経ソフトウェア11月号に、FPGAの記事を書きました。 入門記事といえるほど解説できてなくて、紹介程度の記事ですけど。分量を見積もりそこねて、この3倍くらいの原稿を書いてしまっていて、それを切った貼ったになっているので、ちょっと言い…

JavaOne2013 1日目 セッション漬け

(2013/10/15に書いてます) さて、JavaOne初日です。 JavaOneが本気だしてきたので、たくさんのセッションがあります。 8:30から21:30くらいまで、一日中セッション漬けでした。そんな朝からほんとに出てたの?という疑問があるかもしれませんが、時差ぼけの…

JavaOne2013 0日目 キーノートとコミュニティデイ

(2013/10/14に書いています) JavaOne前日です。 前日とはいえ、テクニカルキーノートや、コミュニティ系のセッションなどが行われています。 で、ホテルでネットが使えないので、まあ10時くらいからかなーと思いながらとりあえずヒルトンへ。 ロビーがJavaOn…

JavaOne2013 -1日目

移動日です。 でかける前にうちの近所のドコモショップで携帯の機種変更などをする。時間がないのに。アホですよねーとドコモのおねえさんともりあがる。 やはり時間がかかって、結構ぎりぎり。でも、ちゃんと飛行機にのれた。 ただ、成田での乗り換えがギリ…

Java8日付時刻APIの使いづらさと凄さ

いままでのJavaでは、日付時刻を扱おうとするとめんどくさい割に非常に低機能でした。 Java8では、新たに日付時刻APIが導入され、めんどくささが増しつつ非常に高機能になりました。 (以降、Java8で導入された日付時刻APIを単に「日付時刻API」と表します)も…

「南極点のピアピア動画」読んだ

先日、笹田さんとバルスを見ながらラーメン食べた日、その前に刺身たべてたときにSFとしてお勧めしてもらった「南極点のピアピア動画」を読んだ。 ピアピア動画という、なんか名前を聞いたことがある気がする架空の動画投稿サイトと、なんか見たことのあるボ…

Java8 Lambdaの文法拡張まとめ

デフォルトメソッドは前に解説しました。 Java8で最もインパクトのある構文拡張、デフォルトメソッドここでは、それ以外の構文拡張についてまとめておきます。 ラムダ式 実装すべきメソッドがひとつだけのインタフェースを関数型インタフェースといいます。 …

PrimeFacesでモーダルダイアログから子ダイアログを開くことはできない

kikutaroさんからリンク貼ってもらってたので、ひとつお得情報を。 PrimeFacesではダイアログコンポーネントを使ってモーダルダイアログ、つまりそのダイアログが開いてる間は元の画面が操作できないようなダイアログを扱うことができます。 で、ちょっとし…

カリーハワード同型対応についてのまとめ

昨日のエントリでカリーハワード同型対応について触れました。 関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのはてな ついでに、このエントリを書くのに調べたカリーハワード同型対応の資料をまとめておきます。 この記事では…

関数を扱えることはどのようにプログラミング言語の能力をあげるか

Java8で関数が値として扱えるようになりました。 このことが、「関数が渡せると便利だよね」という観点ではなく、プログラミング言語としての能力をどのようにあげるか考えてみます。 圏論からのテクニックが使いやすくなる 集合論はどちらかというと値にた…

PrimeFacesでラベルやパネルの表示非表示を切り替える

JSFではrendered属性でコンポーネントの表示・非表示を切り替えることができます。 ただ、Ajax動作で、例えばPrimeFacesのチェックボックスやコンボボックスで表示・非表示を切り替えようとすると、単純には切り替えできません。 たとえば、チェックボックス…

Java8のOptionalがモナドになったよ!

Java8にはOptionalクラスが導入されたのですが、5月にエントリを書いた時点ではモナドではありませんでした。 Java8でのプログラムの構造を変えるOptional、ただしモナドではない それが、5月末にどうもソースにモナドに必要なメソッドが追加されたらしいと…