Apache Maven で javadoc 出力を HTML5 にする ちょっとした設定

$HOME/.m2/settings.xml に次のプロファイルを追加:

<profile>
    <activation>
        <jdk>[9,)</jdk>
    </activation>
    <properties>
        <additionalJOption>-html5</additionalJOption>
    </properties>
    <id>java9</id>
</profile>

本来 additionalJOption-J… 形式のオプションを指定するものですが、それ以外も使えるということでこれを流用します。

ブラウザー上で X11 サーバーは動くか

最近はウェブ ブラウザー上に JavaScript でいろいろ作るのが流行っているようなので、昔懐かしい X11 サーバーを作れないかと考え始めてしまいました。

まず WebSocket で双方向通信が容易になったとは言え、 X11 サーバーには TCP 接続を待ち受けるサーバー ソケットが必要なので、何らかのエージェント プロセスは必要になりそうです。

複数クライアントに対応するとなると、 WebSocket の多重化も必要でしょうか。もっともこれは標準化が進められている様子なので、簡易なもので良さそうですかね。

Azure Functions で Docker Hub 自動タグ付けに挑戦中

docker pull しなくてもタグ付けができるのではないかと考えて、自動タグ付け機能を Azure Functions で実現しようとしています。

ウェブフックで API を呼び出そうとするとコールド スタートでタイムアウトしそうなことが判明して、キューを介した非同期処理にすることで回避しましたが、API の呼び出しはまだこれからといったところ。このまま無事完成するのでしょうか。

https://bitbucket.org/linuxfront/functions-azure

Azure Functions のコールド スタートが遅い

Azure Functions でウェブフックを立てようとしていますが、コールド スタートに時間がかかっているようなので対策を検討しています。一度キューに突っ込んで非同期化すれば良さそうですが、キューに入れるだけでも Functions を使うと解決しそうもないのですよね。

キューに入れるところは Microsoft Flow に持って行くとかでしょうか。

https://github.com/Azure/Azure-Functions/issues/131

Hudson と Mercurial を利用した Maven 成果物のリリース管理

たまには何か書かないと PV が増えないので、今回は HudsonMercurial を利用した Maven 成果物 (artifact) のリリース管理について書いてみたいと思います。

ご存じの方もいるかと思いますが、私は OSSRH を利用して Maven Central Respository に Java 系成果物を公開しています。一例としては Google Login Plugin for Hudson とかですね。

ところで、Maven にはバージョンの末尾に -SNAPSHOT が付くと、リリース前のスナップショットとして扱われるという慣例があります。例えばバージョン X.Y-SNAPSHOT はバージョン X.Y より前のスナップショットという意味になり、Maven のリポジトリーでも別枠となります。

さてここまでを前置きとして、今回紹介するのは Hudson と Mercurial を利用して、成果物のリリースを半自動化してしまう手法です。

Hudson の使い方については別途調べてもらうとして、Hudson を使うことで Maven 成果物のデプロイ (deploy) までは自動化可能です。スナップショットの段階なら Hudson が新しいリビジョンを見つけるたびに自動デプロイしても何ら問題はありませんが、正式のリリースとなるとそうも言っていられません。

一応 OSSRH にステージング機能があるので、デプロイしてもいきなりリリースされることはないのですが、リリースしないものは破棄しなければなりませんので、リリース バージョンの自動デプロイは極力減らしたいところです。

そこで活用するのが Mercurial のブックマークです。例えばブックマーク release-candidate をリリース用のブランチに作成して、Hudson ではこのブックマークを追跡して自動デプロイするようにジョブを作っておきます。こうすると release-candidate の移動に伴ってリリース候補が OSSRH のステージング領域に自動デプロイされることになりますので、リリース OK となったら最後のリリース候補をリリースして残りを破棄すればリリース完了という流れです。

注意点としては、一旦リリースしたら次のリリースまでブックマークを移動しない (つまり自動デプロイしない) ようにすることでしょうか。Git でもブランチの移動を工夫すれば同様のことは可能だと思いますので、ぜひ試してみてください。