2017-01-01から1年間の記事一覧
November 13, 2017 に Kotlin 1.1.60 がリリースされました。 だからって訳ではないですが、以下について最初の一歩として簡単な導入部分を見ていきます。 kotlin-dsl によるGradle プロジェクトのビルド Kotlin でサーブレット Kotlin の SQLライブラリ Exp…
はじめに 当たり前な話 ジェネリック型の継承関係 共変(covariant)の問題点 共変(covariant) が妥当なケース 反変 (contravariant) の問題点 反変 (contravariant) が妥当なケース ここまでのまとめ ジェネリクスが不変だと、、 ジェネリクスに共変性を持た…
クラスファイルの中身 クラスファイルの構造 javap コマンド javap 出力の概要 型とメソッドの読み方 オペランドスタック コンストラクタの実行 加算メソッド invoke 系命令 条件判断 for ループ まとめ 普段使いでは困ることはないですが、昨今はバイトコー…
前回、Stream の裏舞台について見てみました。 blog1.mammb.com ついでなので、今回は Lambda 式の裏舞台について見てみましょう。 はじめに 有名な話ではありますが、以下の匿名クラスを含むコードをコンパイルすると、2つのクラスファイルが生成されます。…
Java9 も出た昨今でいまさらですが、Stream パイプラインが裏でどのように動いているのかをコードを交えて紹介します。 以下の単純な例を元に、内部処理を追っていきましょう。 Arrays.asList("a", "b", "c") .stream() // (1) Stream の生成 .filter(String…
前回はEJBにおけるトランザクションの開始と終了の流れを見てきました。 blog1.mammb.com 今回は、トランザクション属性による動作を少しだけみてみましょう。 はじめに 最初のトランザクション 次のトランザクション トランザクションのサスペンド REQUIRES…
前回は Glassfish 4.1.2 のソースコードを元にして EJB のメソッド呼び出しの概要を見ました。 blog1.mammb.com 今回は、この流れの中でトランザクションの開始と終了について見ていきます。 前回と同様に今回の説明のために不要な箇所は大幅に省略または改…
Glassfish のソースコードを元に、リモートEJBコールがどのように処理されていくかを説明します。 トラブルシュートにはどうしてもソースコードを読む必要がありますし、設定の問題なのかバグなのかの切り分けも容易になります。手っ取り早いし確実です。 そ…
Rust のインストール Hello World ビルドと実行 IntelliJ Rust Rust のインストール brew 使う場合は以下。 $ brew install rust ただ、公式通り rustup を使った方が複数バージョンの管理できたりするので、以下でインストールする。 $ curl https://sh.rus…
Gradle プロジェクトの準備 ソースファイルの作成 ビルド&実行 ビルドスクリプトをKotlinで書く Gradle プロジェクトの準備 init タスクでプロジェクト準備します(gradle は導入済みの前提)。 $ mkdir kotlin-example $ cd kotlin-example $ gradle init kot…
Gradle 4.0 向けに以下の記事の更新版です。 blog1.mammb.com 試験的な提供なので将来が計画されていますが、Gradle 4.0 時点でどのようなになるかメモしておきます。 Build Init Plugin Build Init Plugin を使うと Gradle build プロジェクトの作成をタイ…
文字列結合 StringBuilder StringBuilder 簡略版 commons.lang StringUtils Guava Joiner Java8 String Collectors joining StringJoiner collect with StringJoiner JMH ベンチマーク測定ツール Gradle ビルドスクリプトの作成 ベンチマーク用ソースの作成 …
みなさんは Markdown エディタは何を使っているでしょうか? Atom や Visual Studio Code のプラグインでプレビュー表示していたり、Windows だったらMarkdownPad 、Mac だったら MacDown などの専用エディタを使っている方が多いのではないでしょうか。 そ…
blog1.mammb.com ということで、クリーンインストール直後の作業をメモしておく。 キーリピート システム環境設定の最速では遅すぎるので変更。 現在値の表示 defaults read -g KeyRepeat defaults read -g InitialKeyRepeat 設定変更 defaults write -g Key…
はじまりは まずはお決まりの NVRAM(PRAM) リセット 念のため SMC リセット セーフモードで起動する リカバリモードで シングルユーザモードでディスク復旧 Apple Hardware Test ターミナルからデータバックアップ どうしようか Sierra クリーンインストール…
payara-embedded や payara-micro では普通にログイン認証作っても動きません。 login.conf を明示的に指定しないといけません。 embedded サーバを使うには fileRealm とか jdbcRealm が動かない どこでエラーになるか JAASログイン構成ファイルとは payara…
例えば JUL のログレベルや、H2 database や Glassfish などのログメッセージなどローカライズされていて鬱陶しい。 エンコーディングが違ったりすると読めないし。 ログ内容で検索しても国外の情報拾えないし。 起動時のシステムプロパティで変更する 実行…
Gradle のマルチプロジェクトで、ビルドスクリプトの評価順序を定義するには evaluationDependsOn を使う。 ビルド成果物の依存は dependencies タスク間の実行時依存関係は dependsOn 評価時の依存は evaluationDependsOn ビルド成果物の依存は dependencie…
可変長引数のループで ヌルポ発生 普通の呼び出し なんだ!? これ 念のため どうしても null を渡したい場合 まとめ 可変長引数のループで ヌルポ発生 先日とあるプロジェクトで、可変長引数を for - each している箇所でヌルポになっていた。 実際にはずっと…
前回はデータベースの操作方法を見てきました。 blog1.mammb.com 今回はWebサーバで受けた情報をデータベースに保存します。 POST でデータ保存 GET でデータ取得 実行 まとめ POST でデータ保存 POSTで受けたリクエストボディの Json 文字列をデコードし、…
前回は H2 データベースの準備を行いました。 blog1.mammb.com 今回はデータベース操作を行っていきます。 ドライバのインポート データベース接続 テーブル作成とレコードの挿入 Query h2パッケージの作成 ドライバのインポート postgres のドライバはいろ…
前回は Go で簡単なWebサーバを作成しました。 blog1.mammb.com 今回からはデータベース操作を行っていきます。 データベースの準備 ファイルのダウンロード コマンドの実行 まとめ データベースの準備 今回はデータベースサーバに H2 を使います。 H2 は po…
前回、 blog1.mammb.com の続きです。 Hello, World on HTTP REST サーバ Hello, World on HTTP Go には簡易な Http サーバのパッケージがバンドルされています。 net/http をインポートするだけで簡単に Http サーバを動かすことができます。 package main …
インストール Homebrew 更新 インストール & バージョン確認 ワークスペースの作成 Hello World ライブラリの作成 JetBrains Gogland インストール Homebrew 更新 $ brew update $ brew info go インストール & バージョン確認 $ brew install go $ go versi…
もう10年以上前の本、Hibernate in Action に書かれている DTO についての考察です。 HIBERNATE イン アクション作者: Christain Bauer,Gavin Ki,倉橋央,勝嶌和彦出版社/メーカー: ソフトバンク クリエイティブ発売日: 2005/12/28メディア: 大型本購入: 3人 …
例えば H2 database を以下のように起動するとめっぽう遅い java -cp h2.jar org.h2.tools.Server H2 database に限らず、Tomcat だったり Logback だったり、あらゆるものが遅い 以下にあるように InetAddress.getLocalHost() から呼ばれる DNS Lookup に原…
リストからマップを作る時に使う以下のコード Map<String, String> phoneBook = people.stream() .collect(Collectors.toMap(Person::getName, Person::getAddress); なつかしい以下のコードとは挙動が異なります。 Map<String, String> phoneBook = new HashMap<>(); for (Person p : people</string,></string,>…
いつまでたっても間違いが無くなりません。 以下のようにListの初期化で多用するArrays.asList()。 List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); Arrays.asList() が返すインスタンスは、java.util.Arrays$ArrayList であって、java.util.ArrayL</string>…
前回 blog1.mammb.com の続きです。 TemplateEngineProducer JAX-RS Application Fragments コントローラ Owner 検索 Owner 編集 使いにくい点 まとめ TemplateEngineProducer Ozark で Thymeleaf を使えるように org.thymeleaf.TemplateEngine の Producer …
はじめに モデル 構成 Payara 起動クラス persistence.xml web.xml ベースエンティティ Owner Pet Visit Repository OwnerRepository の実装 PetRepository の実装 VisitRepository の実装 まとめ はじめに Spring MVC ベースのサンプル・アプリケーション S…