mike-neckのブログ

Java or Groovy or Swift or Golang

Java

Streamパイプラインを1つ生成するのに必要なメモリを求めてみる

元になった記事はこれ。 Java 8 Streamの挙動を調べたった - mike-neckのブログmike-neck.hatenadiary.com パイプライン一つ一つがリンクドリスト状のStreamのインスタンスで構成されているということで、どれくらいの長さのストリームパイプラインを書くとO…

Javaでできることが云々

あまり火に油を注ぐようなことはしたくないし、議論されていることの内容が僕の頭で理解できるレベルを超えているので、あまり書きたくはないけど、まあ雑感という感じで。 「ScalaでできることJavaでできること以上のことはできない」的なツイートの後、ま…

Java 8 Streamの挙動を調べたった

表記の件について、JavaのListから作るStreamは操作中に変更をするとその後の挙動についてなんら結果を保証しないので、ListからStreamを作った場合は、変更をしないか、あるいは不可変なListに変換してから作るのが良いです。 と、書いておいてからなのです…

Javaラムダで竹内関数を書こう

『ふつうのHaskell』を読んでて竹内関数というのが出てきたので、それをJavaでやってみようと思った。 ちなみに竹内関数とは 竹内関数(たけうちかんすう)は、プログラミング言語処理系のベンチマークなどに使われる、再帰的に定義された関数である。 Wikip…

JUnit4.12時代のParameterized Test

JUnitに追いつこう(2周回遅れ、男子一万メートルだと2分近くの差、箱根駅伝なら4分40秒の差)という趣旨のエントリーです。 要約はこっちを見るほうが早かった JUnit 4.12の新機能紹介まとめ - うさぎ組kyon-mm.hatenablog.com JUnit4.12に追いつこう(周回遅…

Groovy2.4.3でJava8のStreamとかOptionalの演算もClosureでできるようになってた件

表記のとおりです。 Java8のFunctionalInterface群は使い勝手がよくて、そっちを主に使っていましたが、GroovyもJava8の言語仕様対応を進めてて、Groovy2.4.3から(それ以前から?)は def func = [apply: {s -> s.size()}] as Function<String, Integer> などと書かなくてもClo</string,>…

JJUG ナイトセミナー 「Javaのプログラムはどうやって動いているの」で正解者が少なかったあの問題をバイトコードから見てみる #jjug

昨日のJJUG ナイトセミナーで出題されて正解者が少なかったAnniversary.javaの問題をjavapして、どのようにコードが実行されているか見てみようというだけのエントリーです。 なお、 さくらばさん「実はこれてらだよしおも間違えました」 #jjug #てらだよし…

JJUG ナイトセミナー 「Javaのプログラムはどうやって動いているの」に行ってきた #jjug

上記のとおりです。 【東京】【初学者向け】JJUG ナイトセミナ 「Javaのプログラムはどうやって動いているの?」jjug.doorkeeper.jp ツイートが下記の通りまとめられています。 【東京】【初学者向け】JJUG ナイトセミナ 「Javaのプログラムはどうやって動い…

WildFlyでh2データベースを使う【改】

この前こんな記事書いた。 WildFlyでh2データベースを使う - mike-neckのブログmike-neck.hatenadiary.com 早速JPA使ったアプリを載せたところ(今頃!?遅っ)、次のようなよくわからんメッセージが… [2015-04-23 08:55:32,221] Artifact web: Error during a…

WildFlyでh2データベースを使う

本文が長いので、結論に急ぎたい人はこちら 経緯 JSFがよくわからんので、適当なサンプルを書いてglassfishで実行しようとしたら、 $ bin/asadmin start-domain sample Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 JVM failed to start: com.sun.enterp…

Gs-Collections code kataをブートするgradleスクリプト作った

GS Collections code kataは一回やったら終わりという感じではなくて、何度もやるみたいなことが書いてあったけど、毎回ダウンロードしてきて、解凍して、IDEで取り込んでってやるのが煩わしかったので、表記のスクリプトというか何度でもやり直しのできるや…

IntelliJ IDEAでStringJoinerを使ったtoString()のテンプレートを作った

表記の通り。 StringJoinerでtoString()を作るテンプレートが欲しかったので作った。 テンプレートは次のような感じ public String toString() { #set($i = 0) #foreach($m in $members) #if($i == 0) return new StringJoiner(", ", "$classname:[", "]") #…

Enclosedと継承を使って特定のメソッドだけAfterとか実行させない

こんなのがあったから、マジクソレス。 眠いだけなので、害意はありません。 Kotlinの話と見せかけてJUnitの話をあげとく/ 【JUnit】出来るの?かもしれない@Aftrer処理をメソッド単位でSkipする方法 http://t.co/5YBT6r3M70— やんく (@yy_yank) 2015, 3月 2…

型引数からnewしたい時のおすすめの方法をためしてみた

数日前になぎせさんがツイッターで 型引数からその型のオブジェクトを作りたいときにはSupplierを渡すのがおすすめです 的なことをつぶやいていたので、試しにやってみた。 (どのツイートだったか探してたけど見つからなかったことは秘密です) 【2015/03/11 …

Java 8 で追加された StringJoiner が意外と便利っぽい

表記のとおりです。 java.util.StringJoinerはString.join(CharSequence, CharSequence...)などで用いられているクラスですが、そのまま使ってもなかなか便利そうです。 StringJoiner.metaClass.define { leftShift = {Object o -> delegate.add(o.toString(…

Servlet3.1のファイルアップロードが思いの外簡単だった件

こんにちわ、みけです。 Servlet3.0のファイルアップロードを触ったことがなかったので、ためしにさわってみました。 作ろうとしたもの ファイルをアップロードできる 送信できるファイルのサイズは1Mまで 送られてきたファイルの名前はyyyy-MM-dd-hh-mm-ss-…

【書評】『Javaプログラマーなら習得しておきたいJava SE8実践プログラミング』

こんにちわ、みけです。 つい先日に二章の書評を書きましたが、『Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング』の全体の書評です。 前提 書評というのは書くのが難しいと思っています。というのも、書評を書く人のコンテキストと書…

ラムダでいろいろやってたら、コンパイラーのバグにハマった件

こんにちわ、みけです。 表題の件ですが、すでにOpenJDKにバグ登録されて、ステータスがfixedになっているのですが、 まあしらなかったのでハマってしまいました。 JDK-8054210 NullPointerException when compiling specific code. バグの出るコード例 タイ…

JavaOne2014報告会Tokyoに参加してきた #j1jp

こんにちわ、みけです。 JavaOne 2014 サンフランシスコ報告会 Tokyoが 昨日(2014/10/18)開催されたので行ってきました。 詳細な内容は@kikutaro_さんが書いていますし、togetterにツイートのまとめなどがありますので、僕は適当なポエムを綴ります。 基調講…

【書評】Java SE8 実践プログラミング - 2章のみ

こんにちわ、みけです。 数々の技術書の翻訳で有名な柴田芳樹さんが 『Java SE8 実践プログラミング』 の書評を募集していたので、応募しました。 現在の進捗はこんな感じですが、 1章「ラムダ式とは」(未読) 2章「ストリームAPIの使い方」(読了) 3章「ラム…

StreamはAutoCloseableであると認識していないとアレな件

こんにちわ、みけです。 表題、何言ってるかわかりませんね。 ファイルを読み込んでStream<String>を扱うときに、 try-with-resourcesでStream<String>を宣言しておかないと、 リソースリークがあるかもしれないということです。 具体的には return Files.lines(path, Standa</string></string>…

Java8のOptionalの使い方メモ

こんにちわ、みけです。 2014/10/10のScala勉強会に向けてScalaをやってたら、 Optional<T>の自分でもいいと感じる書き方がわかってきたつもりなので、 メモ書きしておきます。 Optional<T>を使うときの自分的なベストプラクティス。 #isPresentは使わない 極力#ma</t></t>…

jettyで実行可能warファイルを作る

こんにちわ、みけです。 だんだん寒くなってきて、一日の半分ほどは寝てるような状態です。 ここ数週間(!!!)、JavaFXをサーブレットから叩くアプリケーションを作っているのですが、 最初は単純にwarファイルを作って、 jetty-runnerで走るようにするだけの…

Java8のDate and Time API - JPAでLocalDateTimeを扱う

こんにちわ、みけです。 最近、ずっとJava8のDate and Time APIをいじってきましたが、 多分、これでおわりです。 今日は新APIと古いAPIの相互変換についてです。 java.time.Instant 新APIと古いAPIでの相互変換はjava.time.Instantを経由して行います。 @Ru…

Java8のDate and Time API - LocalDateTimeとZonedDateTimeの相互変換

こんにちわ、みけです。 ここ最近さわってるJava8 Date and Time APIですが、 今日はLocalDateTimeとZonedDateTimeの相互変換についてです。 LocalDateTimeとZonedDateTimeの変換 ZonedDateTimeからLocalDateTimeへはゾーン情報を取り除くだけなので、 変換…

Java8のDate and Time API - 文字列から日付を取得してみる

こんにちわ、みけです。 前回、前々回に引き続き、Java8のDate and Time APIをさわります。 今日は、文字列から日付を取得する方法です。 DateTimeFormatterクラス 文字列とTemporalAccessorとを変換するクラスです。 DateTimeFormatter#format(TemporalAcce…

Java8のDate and Time API - ZonedDateTimeを少しだけさわってみる

こんにちわ、みけです。 前回に引き続き、Java8のDate and Time APIについて書いていきます。 今回はZonedDateTimeについて書きます。 ZonedDateTimeクラス ZonedDateTimeクラスは日時情報に加えて、時差情報をもつクラスです。 最初、よくわからずLocalDate…

Java8のDate and Time API - LocalDateTimeを少しだけさわってみる

こんにちわ、みけです。 わけありで、LocalDateTimeとかZonedDateTimeを 触っててわからんところいっぱいあったので、 メモってみました。 Java8のData and Time Apiはこれだけではないけど、 はじめて触る人がハマるだろう箇所にとことんはまっています。 L…

【ネタ】独自の日本語フォーマットで仕様を記述すれば、プログラミングレスでソースコードを自動生成できます。そうJavaならね。

こんにちわ、みけです。 タイトルからして明らかにネタなのですけど、 独自の日本語フォーマットで仕様を記述すれば、 プログラミングレスでJAVAソースコードを出力できるような アノテーションプロセッサーを作ってみました。 とはいっても、ネタで数時間で…

mustache.javaを使ってソースコードを出力する

こんにちわ、みけです。 アノテーションプロセッサーからソースコードを自動生成する際に、 ASTでソースコードを記述するのも魅力的なわけですが、 自分にあったライブラリー(学習コストが低い奴)を探すの面倒だったので、 mustacheのJava実装、 mustache.ja…