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

macOS Sierra で NetBeans から GlassFish が起動できない (というか起動はするけど繋がらない)

Sierra にアップデート後、NetBeans のサービスタブから GlassFish を起動しても応答が帰ってこない事象があり、あまり情報が落ちていないので書いておきます。 事象 NetBeans の GlassFish バンドル版をインストール時、インストールにえらい時間がかかる(…

日本人の名字をランダムに抽出する 〜 Alias Method 〜

なにがやりたいか 重み付きランダム Alias method ダーツを投げる Alias Method の実装 日本人の名前の分布 なにがやりたいか 日本人の名字をランダムに取得したい。 ただし、佐藤さんや鈴木さんはより多く、大柿さんや桑畑さんは低頻度といった具合に、名字…

JSF で JQueryUI Sortable を使う

最近すぐに忘れてしまうので、細かいことでも書いておこう。 テーブルの一覧画面の並び順や項目名、表示/非表示などをユーザが自由にカスタマイズする機能追加の対応があった。 ユーザ独自のビューとして画面で見たり、ダウンロードして他のシステムに投入し…

Class#getEnumConstants() って初めて使った気がする

Enum#values() ある Enum の値を取得したい場合は Enum の static メソッドである values() を使う。 public enum Fruits { APPLE, ORANGE, BANANA; } Fruits.values(); この values() の実装は、コンパイラが生成してクラスに埋め込む。 言語仕様的には 8.9…

リリース間近 JUnit5 に備えよう

はじめに Gradle の設定 テストの実行 アサーション Matcher ライフサイクル Display Names @Tag Nested Tests コンストラクタとテストメソッドへの DI Assumptions Dynamic Tests ライフサイクルコールバック はじめに JUnit5 のリリースが近づいています。…

Payara micro で Hello World

Payara とは Glassfish から fork した JavaEE アプリケーションサーバです。 Glassfish は Oracle による商用サポートの提供が廃止されましたが、Payara は Payara Team による商用サポートが提供されています。 Glassfish 4.1 のコードベースに対してバグ…

遅延初期化とvolatileにまつわるエトセトラ

JSON Processing Java API for JSON Processing (JSR 353) の RI 実装を見ていたらこんなコードがありました。 abstract class JsonNumberImpl implements JsonNumber { // ・・・略 // Optimized JsonNumber impl for int numbers. private static final cl…

Docker for mac 正式版が公開されたので改めて導入手順を見てみましょう

2016年7月28日 「Docker For Mac And Windows Is Now Generally Available And Ready For Production」というポストで Docker For Mac と Docker For Windows の正式リリースが発表されました。 2016年3月に公開された限定ベータ、パブリックベータを経た い…

ディシジョンテーブルをカルノー図で簡単化するか?

SlideShare でこんなスライドがあった。 エスイーが要件定義でやるべきたったひとつのこと from Yoshitka Kawashima www.slideshare.net ディシジョンテーブルはいいけど、カルノー図かいて整理してロジックに落としましょう。 という至極まっとうなもの。 …

未来を感じずにはいられないクラウドIDE 〜番外編 Codenvy〜

前回は Cloud9 で Java開発環境の構築について見てみました。 blog1.mammb.com Cloud9 による Java サポートはまだまだこれからといった感じでした。 今回は Eclipse Che が使えるクラウドIDE である Codenvy を簡単に見ていきましょう。 Eclipse Che とは C…

未来を感じずにはいられないクラウドIDE 〜Cloud9〜 Java開発編

前回は Cloud9 の導入方法を見てきました。 blog1.mammb.com 今回は Cloud9 IDE による Java 開発について見ていきましょう。 Cloud9 IDE の言語サポートは、今のところ PHP, Ruby, Python, JavaScript(Node), Go が手厚くなっています。 Java 向けサポート…

未来を感じずにはいられないクラウドIDE 〜Cloud9〜

Cloud9 IDE とは Cloud9 のはじめ方 ワークスペースの作成 Rails Tutorial をかじる サーバの実行 Hello World する まとめ Cloud9 IDE とは Webブラウザ上で動作する統合開発環境です。 クライアント環境に依存せず、Docker コンテナ上に構築されたワークス…

サーバサイドエンジニアのためのフロントエンド入門 〜ECMAScript編〜

フロントエンドの移り変わりが激しすぎてついていけない。 というサーバサイドエンジニア向けのフロントエンドの概要第3回目です。 より深い話題については他を当たってください。。 前回は CSS について見ました。 blog1.mammb.com 今回は ECMAScript につ…

サーバサイドエンジニアのためのフロントエンド入門 〜Sass編〜

フロントエンドの移り変わりが激しすぎてついていけない。 というサーバサイドエンジニア向けのフロントエンドの概要第2回目です。 より深い話題については他を当たってください。。 前回までで、node と gulp を導入しました。 blog1.mammb.com 今回は gulp…

サーバサイドエンジニアのためのフロントエンド入門 〜環境編〜

フロントエンドの移り変わりが激しすぎてついていけない。 というサーバサイドエンジニア向けのフロントエンドの概要です。 より深い話題については他を当たってください。。 node とは CommonJS とは node を nodebrew でインストールする npm とは gulp と…

JAX-RS でリソースを動的ディスパッチする

Subresource Locator JAX-RS では @Path アノテーションでリクエストURLを、@GET などのアノテーションで HTTPメソッドをマッピングします。 HTTPメソッドを指定するアノテーションを付けず、@Path アノテーションだけを定義し、戻り値としてリソースクラ…

これぐらいでイイ これぐらいがイイ Riot.js

Riot.js(ライオット) とは 簡単なサンプル マウント ループ Conditional expressions イベント Named elements タグのネスト update unmount yield Observable Router まとめ Riot.js(ライオット) とは React と Polymer のコンセプトをすごくシンプルに体現…

3人のプログラマの話

etc

あるIT部門で一人の男が難しい顔をしてPCに向かっていた。 「あなたはここでいったい何をしているのですか?」 「何って、プログラミングに決まっているだろ。朝から晩まで、設計書の内容を間違わずにコードに落とさなきゃいけないのさ。あんたにはわからな…

JVMオプションの確認方法

標準オプション 非標準オプション オプションのカテゴリと設定 jcmd によるオプションの確認 プラットフォーム固有のデフォルトチューニングフラグ プラットフォーム別のコンパイラ指定 主要なオプション 標準オプション -help または -? で標準オプションが…

Jersey Grizzly で始める JAX-RS 入門 〜STEP6〜

前回からの続き。 blog1.mammb.com 今回はフィルタについてです。 フィルタ フィルタ適用のタイミング リクエストフィルタ リクエストフィルタの動作 レスポンスフィルタ Reader Interceptor と Writer Interceptor Reader Interceptor と Writer Intercepto…

Jersey Grizzly で始める JAX-RS 入門 〜STEP5〜

前回からの続き。 blog1.mammb.com 例外ハンドリング 定義済み例外 ExceptionMapper 例外ハンドリング アプリケーションからスローされた WebApplicationException およびそのサブクラスはJAX-RSのコンテナによりキャッチされ、例外に応じたレスポンスが返却…

Jersey Grizzly で始める JAX-RS 入門 〜STEP4〜

前回までで作成したアプリケーションを Customer エンティティの CRUD 操作をできるようにしていきます。 blog1.mammb.com CustomerResource の変更 静的コンテンツのハンドラ追加 リクエスト処理 実行 CustomerResource の変更 前回作成した CustomerResour…

Jersey Grizzly で始める JAX-RS 入門 〜STEP3〜

前回作成したサンプルに続けてJAX-RS を使った CRUD アプリケーションを作成していきます。 blog1.mammb.com EBean の導入 EBean 設定と起動 Entity の作成 CustomerResource リソースへのアクセス EBean の導入 永続化を行うため、何でもよいですが今回は導…

Jersey Grizzly で始める JAX-RS 入門 〜STEP2〜

前回作成したサンプルを使って JAX-RS のパスのマッピングについて見ていきます。 blog1.mammb.com Path の指定 メソッド の指定 QueryParam @PathParam パスの正規表現指定 @MatrixParam PathSegment ヘッダ情報の取得 @FormParam @BeanParam モデルの作成 …

Jersey & Grizzly で始める JAX-RS 入門 〜STEP1〜

はじめに JAX-RS とは Jersey とは Grizzly とは プロジェクトの作成 Main クラスの作成 Resource クラスの作成 実行 はじめに Jersey と Grizzly を使って簡単な JAX-RS アプリケーションを作っていきます。 Glassfish などの JavaEE アプリケーションサー…

ArrayList と HashMap の遅延初期化(7u40)

小ネタです。 Java 7u40 で空の ArrayList と HashMap のインスタンス生成が最適化されました。 Bug ID: JDK-8011200 (coll) Optimize empty ArrayList and HashMap ArrayList の初期化 今までは、 new ArrayList<>(); とした時点で、以下のように初期容量10…

Mockito で任意の可変長引数にマッチさせる

anyVararg() マッチャーを使う。よく忘れる。 以下の可変長引数を取るメソッドがあった場合、 Account getAccount(Long id, AccountType...types); 以下のようにすると任意の可変長引数にマッチできる。 AccountService service = mock(AccountService.class…

絶対にはまる SuperCSV(ver2.2.1で解消済み) の罠

2015年1月リリースのSuperCSV 2.2.1 より前のバージョンには、大抵の人がはまる罠があります(長い間放置されてきました)。 新しいバージョンでは修正されていますが、いくつものプロジェクトで誤った使われ方となっているのを見てきましたので、古い SuperCS…

Strategy enum パターンを使う場合の注意点

普通の enum 普通に enum 定義して、 package foo; public enum Operation { PLUS, MINUS, ; } クラス名を取得すると以下となる。 Operation.PLUS.getClass().toString(); // -> "class foo.Operation" Operation.PLUS.getClass().getSimpleName(); // -> "O…

Java の Optional は Serializable ではない

Java の Opional は関数の戻り値として利用することに焦点が当てられているため、Serializable ではない。 よって以下のようにフィールドとして定義したり、 private Optional<String> name; コレクションに入れたり、 List<Optional<String>> list; メソッドの引数で受けたり、 publi</optional<string></string>…