読者です 読者をやめる 読者になる 読者になる

M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Springのプロパティ・プレースホルダでデフォルト値指定

Spring BootおよびSpring Web MVCのAPIリファレンスを見ていて知ったことのメモ。例えばSpring Web MVCが提供するアノテーションの1つ、RequestMappingのvalueフィールド(Javadoc)。アノテーションが付与される型もしくはメソッド(コントローラ)が処理す…

Apache POIのMissingCellPolicyの解説を見つけた

Apache POIはJavaアプリケーションからExcelやWordのドキュメントを参照/更新するためのライブラリです。このライブラリには「Missing Cell」とか「Blank Cell」という概念があり、その意味するところはいまいち判然としないのですが、とくに「Missing Cell…

JavaでEPUB3形式ファイルをパッケージングする

直近、例によっていろいろあってEPUB3形式ファイルのつくり方を調べていました。EPUB3はごくごく単純化して言えば拡張子が.epubで終わるZIPファイルなのですが、ディレクトリ構造や必須のファイルなどいくつかのルールがあります。こちらのページにある手順…

C#のメソッド戻り値や可視性が共変(Covariance)でないのが地味ーに窮屈

近ごろお手製ライブラリのJava版とC#版のあいだを行き来していて、その中で地味ーに窮屈だと感じているのが、「C#のメソッド戻り値や可視性が共変(Covariance)でない」ということです。※一応註記しておくと、ここで「戻り値の共変」と述べているのはジェネ…

JP1/AJS2ユニット定義パーサAPIをC#向けにポーティングした

すでに何度も紹介してきたJP1/AJS2ユニット定義パーサAPIですが、最近取り組んでいるC#のお勉強の「実践編」としてC#向けにポーティングしてみました。リポジトリはこちら。サンプル・コードをご覧になればお分かりのように使い方はほとんどかわりません。途…

C#のyield return文に対応するものをJava 1.6でがんばってつくってみた

直近C#についてお勉強していて「これは、やばい・・・」と感じたのはなんといってもyield return文です。細かいことを述べるのはやめておきます。ようするに「for文を書いて遅延評価型の反復子をつくる」というとんでもない糖衣構文です。裏側ではC#のコンパ…

"JDK-6962931 : move interned strings out of the perm gen" の意味するところが判然としない

今現在.NETのCLR関連の資料を読んでいて、それと比較対象するためにJVMについての資料も漁っていたのですが、そのなかで「OracleのJDK7に同梱されたHotspot VMからinternされた文字列の格納先がPermanent領域から非PermanentなHeap領域に変更になった」とい…

DOMをラップし代替するライブラリをつくってみた

なんだか過去にも似たようなことをした記憶があるのですが、使い勝手の悪いDOMのAPIをラップし、代替するライブラリをつくってみました。リポジトリはこちらです。 重要なオブジェクト このライブラリの中核にあるのはQuery<R>オブジェクトです。このオブジェク</r>…

JP1/AJS2ユニット定義パーサにDate-Time APIライクな機能追加

以前何度か紹介したJP1/AJS2ユニット定義パーサに、Java 8で導入されたDate-Time APIをまねた機能を追加しました。これにともない古いAPIのかなりの部分を破棄しています。Date-Time APIはその名の通り日付・時間をあつかうためのクラス/インターフェース群…

JDKバージョン8+ターゲットバージョン7以下でIteratorコンパイルエラー

ハマった後で「ははーなるほどー」と感じた事象について。EclipseでJavaプロジェクトをつくって開発をしていたのですが、その際のプロジェクトのJavaコンパイラ設定のターゲット・バージョンは6もしくは7にしていました。一方で全体設定の「インストールされ…

Jacksonシリアライザの@JsonIgnoreは@JsonPropertyと対にして使う

例によって細かい話です。現在開発中のアプリケーションではSpring MVCのRestConrtollerを利用してクライアント側とJSON形式でデータをやり取りする構成をとっているので、内部的にはJacksonシリアライザによるJavaのオブジェクトとJSONとの相互変換が行われ…

SVNKitのDate型をPostgreSQLドライバに食べさせると毒死

引続きMyBatis関連でハマったはなしです。SVNリポジトリや作業コピーをJavaコードから操作するためのライブラリSVNKitにまつわるはなしです。まずは結論。 結論 SVNKitのAPIが返すjava.util.Date型オブジェクトをPostgreSQLのJDBCドライバに食べさせてはいけ…

MyBatisのEnumTypeHandlerにハマる

季節感というか日付感のない記事で恐縮ですが、正月とか元旦とか関係なくMyBatisのEnumTypeHandlerでハマったはなしです。例によって結論から述べましょう。 結論 MyBatisでSQLのパラメータとしてenumを渡し、SQLのステートメント内で#{paramName.propertyNa…

Spring Boot x Spring Security のサンプルをつくった

開発中のアプリケーションの実装方法調査のため種々しらべた結果を元に、Spring BootとSpring Securityを組み合わせて使うサンプルをつくってみました。アプリケーションの・・・とくに認証に関する要件は以下のとおりです: アプリケーションのユーザにはロ…

Java7→Java8アップグレードに成功・・・

さっそく、「Upgrade Java SE 7 to JavaSE 8 OCP Programmer」試験を受けてきました。結果、なんとかアップグレードに成功。参考書なしで試験をうけるのはRuby Gold試験以来かもしれません。当たり前ですが基本的にOracleの公式ページに示されたトピックスか…

Java8で導入されたdefaultメソッドについてメモ

Javaプログラミング言語の拡張機能を読む限りだいたいこんな感じでしょうか: 基本ルール defaultキーワードを持つメソッドは実装を持つ。持たねばならない。 defaultキーワードを持つメソッドは同一インターフェースにいくつでも持たせることができる。 宣…

公式チュートリアルの「ターゲット型付け」セクションを読む

前回ポストのあとOracleの公式チュートリアル"The Java Tutorials"の"Nested Classes" > "Lambda Expressions"に含まれるセクション"Target Typing"を読んでみました。ターゲット型とターゲット型付けという概念の理解のため若干の助けになるかと思います。 …

Java8の試験トピックにある「ターゲット型付け」とは何か?

・・・というわけで、にわかにJava8の新機能についてしらべはじめたのですが、アップグレード試験「Upgrade Java SE 7 to JavaSE 8 OCP Programmer」のトピックの中に「ターゲット型付け」というワードを見かけて「なんだこれは」ということになりました。ラ…

Oracle認定 Java資格受験 20%OFF キャンペーン開催中・・・

Java SE 8系試験の日本語版が順次リリースされていますが、ピアソンVUEではこれと並行してJava 20周年記念!Oracle認定 Java資格受験 20%OFF キャンペーンを開催中です。試験体系が刷新され、Programmer資格がBronze・Silver・Goldに階層化されたことで、従…

XMLドキュメント・トラバースを支援するライブラリつくった

作成中のツールで設定情報をXMLから読み取るロジックを書こうとしたところ、Java標準APIのDOM実装──org.w3c.domパッケージに含まれる各種API──がとてつもなく使い勝手のわるいものであることに気が付きました。使い勝手がわるいのはW3Cの標準に忠実にあろう…

Typesafe Config 「ライブラリを使用する」を読む

というわけでTypesafe ConfigのGithubで公開されているREADME.mdのなかから"Using the Library"のセクションを読んでみました。ただしどうも記載内容に古い部分があるらしく現状の事実に即していない部分があったのと、意味をとることができないセンテンスが…

Typesafe Configを使ってみる

近ごろ(といってもすでに数年来)、ScalaやPlay Frameworkとともに存在感を増しているTypesafe社。同社が汎用のコンフィギュレーションAPIとして公開しているその名もConfigというライブラリがある(キャメルではなくローワーケースが正式名称かも知れない…

それはParserというよりScannerだったのか

プログラミングの用語法とJava標準ライブラリのAPIに関するちょっとした話。結論を先にいえば「標準ライブラリ」についてきちんと理解しておくことは生産性の観点で重要」というそれだけの話です。以前、JP1/AJS2(日立製のスイートに含まれるジョブ実行管理…

型パラメータのスコープとシャドウ化の実験

Javaのジェネリクスの復習をしてヘンなコードを書いてみた。「やってはいけない」のカタマリみたいなコードである。 package x; class A {} class X {} // ...(1) public class Container<X extends A> { // ...(2) private X content; // ...(3) public <X> Container(X con</x></x>…

Spring Web MVCのコントローラで任意の型のパラメータを受け取る

久しぶりにSpring Web MVCについて調べてみた。タイトルの通り、やりたいことは「Spring Web MVCのコントローラで任意の型のパラメータを受け取る」ということ。サンプルコードは公式リファレンスのセクション"Customizing WebDataBinder initialization"に…

Scala.jsはもはや試験的段階を脱した!との由

ちょっと気になった記事の訳出を。Scala言語の公式サイトで公開されている2015年2月5日付けの記事です。原文は"Scala.js no longer experimental"です(2015/07/19取得)。 * * * Scala.jsはもはや試験的段階を脱した! 執筆:Sébastien Doeraene本日、私…

JP1/AJS2ユニット定義関連のライブラリとツールの依存性を整理

(2016/02/26追記 パーサ・ライブラリのリポジトリを移動しました。新しいリポジトリはこちらです。)おとといのポストで話題にしたGithub上にMavenリポジトリを構築する方法を応用して、個人用かつプロジェクト共用のMavenリポジトリをつくってみた。これは…

Github上に私設Mavenリポジトリをつくる

Mavenは依存性解決やビルド/デプロイ処理のためのツールとして非常に便利なのですが、個人的に作成した各種ライブラリやツールを配布するには、通常中央のリポジトリにものを登録する必要があります。そして中央リポジトリに登録するには、いろいろ準備がい…

Apache Commons CLI 1.3がリリースされている

いつのまにかApache Commons CLI 1.3がリリースされていました。Apache Commons CLIはJavaでコマンドライン・ツールを作成する際に便利なライブラリ。コマンドライン・オプションの定義を行い、その定義にしたがって引数(public void main(String... args)…

ログ加工ツールのテンプレートをつくってみた

アプリケーションをメンテナンスする上でログの確認は重要な作業となりますが、そのログはアプリケーションごとに固有の形式となっていて、これを機械的に整形して表計算ツールで分析したりするにはひと手間必要・・・というようなケースがままあります。そ…

JP1/AJS2 Jobdocをリカバリージョブに対応させた

思い立ったが吉日というかなんというか。ふと、以前このブログでも紹介したJP1/AJS2ユニット定義ドキュメント化ツールの生成するSVGがリカバリージョブに対応していないことに気がついて、テンプレートとロジックを修正しました。Githubのリポジトリ・ページ…

Apache Commons Execで外部コマンド実行するサンプル

とある事情でProcessBuilderオブジェクトを使用して外部コマンドを実行したものの*1その標準出力を取得しようとしたらロックしてしまった…という経験*2を踏まえ、別の方法としてApache Commons Execを利用することを考えました。Apache Commons ExecはJavaコ…

InputStreamを生成するOutputStreamを生成する

ちょっとふざけたようなタイトルですが今回はJavaについてのメモです。やりたいことは、何かしらの処理──例えばDOMのAPIを通じて作成したXMLデータや、テンプレートエンジンがレンダリングしたものをストリームに書き出すとか──の結果を、そっくりそのまま入…

Spring BootとAngularJSでREST APIアプリを実装してみる

例によって直近の必要に迫られ、あれこれ調べつつ、サーバ側にSpring BootベースのREST API/クライアント側にAngularJSベースのMVC(MVW)という構成を持つアプリを実装してみました。以前、Spring BootとMybatisの連携方法などを確認する(そしてそうした…

クラスパスからプロパティ・ファイルを検索する

訳あって.classや.jarを実行するときのクラスパスからプロパティ・ファイルを検索するロジックを考えることになった。・・・きちんとJavaについて理解している人であればそもそも考えるまでもないような話題のような気がするので恥ずかしい話なのだけれど。…

Thymeleafで名前空間修飾付きの属性をレンダリングする

テンプレート・エンジンThymeleafはその文法自体をXMLの構文ルールに従わせることで「そのままブラウザで参照可能なHTMLやXHTMLのファイルとしてテンプレート・ファイルをつくる」ことを可能にしています。これはこのテンプレート・エンジンを非常に便利なも…

Spring Batchでリーダーもライターもいらない処理をステップにする

引き続きSpring Batchの公式リファレンスからの抜粋です。今回は「タスクレット」についての記述。原典は"Spring Batch - Reference Documentation"の第5章2節「タスクレット・ステップ」(バージョンは3.0.2.RELEASE。2014/12/31取得)です。 * * * 5.2 …

Spring Batchの用語とステレオタイプ

今度は公式リファレンスから、Spring Batchフレームワークの用語と「ステレオタイプ」について。ここで「ステレオタイプ」とは「フレームワークを利用するにあたって必要になるオブジェクト・グラフの構成要素」とか「フレームワークの中である限定された役…

Spring Batchの"Getting Started"を読む

引き続きSpringキャンペーン中につき。今度はSpring Batchです。あまり深入りはしないつもりですが・・・。まずは例によって"Getting Started"を読んでみましょう。ビルドはMavenでする前提で、不要と判断した箇所は中略しています。原典はSpring公式サイト…

JP1/AJS2のジョブネット定義をドキュメント化

このかん多大な時間的犠牲をもってしてJP1/AJS2のジョブネット定義をドキュメント化ツールを作っていました。土台としたのは春〜夏ごろにかけて作りこんできたJP1/AJS2ユニット定義ファイルのパースAPIです。ツールもAPIも、そもそも構想やプロトタイプは職…

ThymeleafのTemplateResolverとキャラクターセット

種々の思惑からこのかんThymeleafを使用したコマンドライン・ツールを作っていて、その中で1つ発見した──というか遭遇した問題。Thymeleafのテンプレート・エンジンは基本的にWebアプリケーションに組み込んで使うことを想定しているけれど、そうでない用途…

Thymeleafテンプレートファイルのinclude/repalaceは再帰可能

引き続きThymeleafテンプレートエンジンについて調べたり使ったりしているうちに気がついたのですが、なんと(?)、th:include属性やth:replace属性による外部テンプレート断片の読み込み機能は再帰に対応していることがわかりました。・・・というより、も…

Thymeleafテンプレートエンジンをそれ単体で使う

このかんSpring Web MVCとの関連で取り上げてきたThymeleafテンプレートエンジンを、それ単体で──つまりサーブレット・コンテナの外、Spring Web MVCやSpring Bootを経由せず使う方法を知りたくなった(知る必要がでてきた)ので調べてみました。今回は依存…

Spring BootアプリケーションをビルドしてWARファイルにする

Spring Bootのビルド成果としてWARを得る方法を調べました。前提として、Spring BootアプリケーションのビルドにはMavenを使っています(GradleやSTSの場合の手順については触れません)。Spring BootでWebアプリケーションをビルドする場合、デフォルトでは…

「Getting Started - フォーム送信を処理する」を読む

引き続きSpring Bootについて調べて回っていて、今回はフォームから送信されたデータを処理する方法について書かれた公式ガイドを見てみます。このドキュメントは、いわゆる"form-backed object"とか"command object"と呼ばれるオブジェクト──FORM要素の子孫…

Spring関連の訳出記事まとめ

このかん──この1・2年散漫にあれこれ訳出してきたものが、その所在とかが自分でもわけわからなくなってきたのでまとめておきます。 Spring Web MVC Springフレームワークのコア・プロジェクトに組み込まれているMVCフレームワークのリファレンスの訳出。原典…

Spring MVCのドキュメント「コントローラを実装する」を読む(3)

前回に引き続きSpring Web MVCフレームワークに関するドキュメントの訳出です。原典は、Springフレームワーク(本体)のリファレンス・マニュアルである"Spring Framework Reference Documentation"の第5部"The Web"の第17章"Web MVC framework"の第3節(バ…

Spring MVCのドキュメント「コントローラを実装する」を読む(2)

前回に引き続きSpring Web MVCフレームワークに関するドキュメントの訳出です。原典は、Springフレームワーク(本体)のリファレンス・マニュアルである"Spring Framework Reference Documentation"の第5部"The Web"の第17章"Web MVC framework"の第3節(バ…

Spring MVCのドキュメント「コントローラを実装する」を読む(1)

今回はSpring Web MVCフレームワークに関するドキュメントの訳出です。Spring Bootフレームワークのリファレンスに言及されていたことで関心を持ち、ちょっとばかし読んでみました。原典は、Springフレームワーク(本体)のリファレンス・マニュアルである"S…

Venkat Subramaniam『Javaによる関数型プログラミング ―Java 8ラムダ式とStream 』

Javaによる関数型プログラミング ―Java 8ラムダ式とStream作者: Venkat Subramaniam,株式会社プログラミングシステム社出版社/メーカー: オライリージャパン発売日: 2014/10/24メディア: 単行本(ソフトカバー)この商品を含むブログを見るJava8で追加された…