Humanity

Edit the world by your favorite way

Java

Vim script に ECMAScript の Observable がほしい

タイトルは前記事からの流用。 最近 Vim script で Java 8 の Stream API を実装する、ということをしている。 tyru.hatenablog.com github.com Vim 8 でも lambda が入ったので、メソッドチェインでどんどん処理を繋げるスタイルの書き方ができると嬉しいと…

Java の Web アプリで色んなコードを共通化したい

この記事は Java EE Advent Calendar 2016 5 日目の記事です。 昨日は lbtc_xxx さんの「JPA Builder パターン」 でした。 明日は glory_of さんです。 Java の Web アプリを書く時、共通化したいけどどうすればいいか、 どう書くのが推奨されているのかをま…

Spring でリクエストボディの JSON に対してバリデーションを行う

問題 Spring でリクエストボディの JSON に対して共通のバリデーション処理を行うに当たって、まずは問題がある。 @ControllerAdvice を使うと、コントローラーが実行される前にバリデーションなどの共通処理を行うことができるが、 @ControllerAdvice で実…

Java のマルチスレッドに関する本を読んだ

並行処理に限る訳ではないけど、ここに挙げた本読めば Java でそこそこ安全にマルチスレッドなプログラム書けそうな気がしてくる。 まぁ実際並行・並列処理は量書いて身につけないとしょうがないけど… ぶっちゃけて言えば、読む前から変わらなかった意見は「…

Java 8 でインスタンスを遅延して構築するいくつかの方法

シングルトンを構築するには、enum を使うのがスレッドセーフだしお手軽です。 なぜなら enum の初期化は1つのスレッドから1度だけ行われると規定されているからです。 また、コンストラクタを private にしてもコンパイルエラーにはならず、何の問題もなく…

「常に」ファクトリーメソッドにするべきか?

ファクトリーメソッドのメリット 毎回インスタンス生成しなくてもいい Flyweight パターンの様にキャッシュ コンストラクタではジェネリクス引数の型を記述しなければならないが、メソッドなら引数の型を勝手に推論してくれるので記述する必要がない(C++ と…

JUnit で hamcrest のライブラリを依存関係に追加した時の SecurityException

stackoverflow.com 色々自信なさげなエントリだけど一応メモ代わりという事で。 自分の場合、これが起きた原因として、一度 Maven の依存関係に JUnit が無い状態でテストクラスを作ろうとして、 「jar を追加しますか?」(うろ覚え)みたいに聞かれて Ecli…

最近の Java EE について調べてみた

私は仕事で Java に関わってきましたが、実質仕事で関わってきたプロジェクトはまだ3~4年ぐらい、 そしてそのプロジェクトの中にはいくつかコードを書く仕事ではなく Excel 仕事がメインというプロジェクトもあり、 正直言うとあまり積極的に Java に関わろ…

GlassFish に asadmin で H2 DataSource 登録

GlassFish なら管理コンソール(http://localhost:4848/)で操作もできるけど、4.1 や 4.1.1 だと JDBC に H2 の DataSource を登録する時に RuntimeError が出て登録できなかった… ので仕方なくコマンドのやり方を調べた。 コマンド asadmin create-jdbc-co…

BlockingQueueメモ

前回の記事で@kaoriyaさんに教えてもらったBlockingQueueについて。 Javaでコルーチン実装書いてみた - tyru's diarytyru.hatenablog.com notify()/wait()にしてもLock/Conditionのsignal()/await()にしても、待つ前に通知されてしまうと通知を取り逃がして…

Javaでコルーチン実装書いてみた

当初、一つのグローバルオブジェクトを持ち回ってnotify()/wait()すればそのままコルーチンの実装に使えるんじゃないかなーと思って書き始めてみたけど、結局デッドロックになってしまって、結局スレッド数分のCondition*1を用意したらうまくいったので、そ…

Eclipseで「ライフサイクル構成でカバーされていないプラグインの実行」というエラーが出た場合

というエラーが出て、ググった所、結構同じような現象が起きている人はいるにも関わらず解決法を試してみても全く解決しない。 結局m2eのプラグインでAPT処理*1を行う m2e-aptというプラグインが必要だったというオチ。 なのでマーケットプレイスからインス…

m2eclipse 1.5.0にはEclipse 4.4(Luna)が必要

m2e-aptが入れられなくてエラーメッセージ見てみたら、Eclipseのバージョンが古くてm2eが1.4.0までしか入らなかったせいだったらしい。 Eclipse 4.4にしたら無事m2eとm2e-aptが入って解決した。 操作の詳細 1 つ以上の必須項目が見つからないため、インスト…

VimでFreeMarkerの記法をハイライトする(ついでにHTMLなんかに埋め込まれてた場合はHTMLも)

:setfiletype html.ftl ざっくりした説明 filetypeは「.」を挟むと複数のfiletypeを定義できる。 定義すると順番に読み込まれていく。 kanaさんはcompound filetypeとか言ってる。 そういえば はてなダイアリはText::VimColorを使っているので内部的にVimを…

最近Java書いててjavadocが状態遷移を表すのに使えないことを知った。 いやjavadocどういうものか知ってたけど、 あまりがっちりAPIのドキュメントとか書きたくない書いたことないから javadocで適当に説明だけ書いとけばいいやなノリで書いてて、 最初に「…

java.util.logging.Loggerでメッセージを横取りする方法 (がわからない)

「java util logging logger メッセージ 横取り」で検索すると 以外にもJava Platform SE 6の本家APIがヒット。 ただロガーの生成方法がわからない。Logger.getLogger()とファクトリークラスで作るために、 Loggerのインスタンスは作れても Loggerを継承した…

クラス メモ

Iteratorで統一したいとか考えてしまう、とかあえて突っ込まれそうなことを言ってみるテスト Stream系 Reader系 Stream系をうまく扱ってくれるっぽい?ユーティリティ的な...(適当 Scanner系 トークンで分割して読み込みたい時とか 分割とか言ってもループ必…

InputStreamからStringへの変換

記事のタグにVimってつけそうになりましたtyruですこんばんは。eclipse便利ですね。追記: id:thincaさんが添削してくれた。のでgist修正した。詳しくはトラックバック参照。 こんなんでいいのかな。クラスいっぱいありすぎてわかりにくい。 あと見てわかる通…

Re: return と ensure 節

return と ensure 節 - #!/usr/bin/env japanese - Teq.g Rubyではensure(finally的なもの?)でreturnできるらしい。 というか他の言語はfinallyでreturnできるのか気になったので調べてみた。 Vimスクリプト なんで最初がこの言語なんだよ。 function! s:fo…

Flash作れなくて悔しかったのでJavaアプレット作ってみた

※相変わらず深夜なのでテンション高め。 JavaアプレットとJavaScriptが相互にアクセスできるなんて知らなかった!! Javaすげぇ! Google App Engineでも採用されたしこれからはJavaの時代ですね! という訳で久しぶりに作ってみた。 まぁ上の記事は2年前な…

Javaでインベーダーゲーム

をとりあえず敵がうにょうにょ動き回って全部撃てばエンディングってとこまで作った。http://javagame.main.jp/ ここを参考にしてもらって作りましたっていうかほとんどこれと同じなんだけど。ま、まぁ勉強だし!! http://www.itmedia.co.jp/news/articles/…

インベーダーゲーム

をjavaで作ってたら壁にぶち当たった。 いや、壁っていうか元々ある壁を知らずによそ見しながらちんたら歩いてたらいきなりSmaaaaaaaash!!したって感じ。何故か俺、弾をスレッドを使ってやろうとか思ってたんだけど(一発ごとに一つのスレッド。。。) そし…