WildFly Swarm 2016.9 リリース、MicroProfileで実行
WildFly Swarm 2016.9がリリースされたので試してみます。
WildFly Swarm Project Generatorでデフォルトのまま生成してみると以下のpom.xmlが生成されました。Swarmのバージョンが2016.8.1
とひとつ前のものになっているので、2016.9
に書き換えてmvn package
でビルドします。ビルドしたら50MB弱のtarget/demo-swarm.jar
が出来上がり、java -jar target/demo-swarm.jar
で起動できます。http://localhost:8080/rest/helloにアクセスするとHello from WildFly Swarm!
が表示されます。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <name>Wildfly Swarm Example</name> <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <version.wildfly.swarm>2016.8.1</version.wildfly.swarm> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <failOnMissingWebXml>false</failOnMissingWebXml> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>bom-all</artifactId> <version>${version.wildfly.swarm}</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <build> <finalName>demo</finalName> <plugins> <plugin> <groupId>org.wildfly.swarm</groupId> <artifactId>wildfly-swarm-plugin</artifactId> <version>${version.wildfly.swarm}</version> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <!-- Java EE 7 dependency --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <!-- Wildfly Swarm Fractions --> </dependencies> </project>
demo-swarm.jar
の中には_bootstrap/demo.war
というようにアプリケーションのwarが含まれています。
swarm.jarを実行するのではなく、WildFly Swarm MicroProfileを使って指定したwarを実行することもでできます。
java -jar microprofile-2016.9-hollowswarm.jar target/demo.war
OpenShift Origin v1.3.0-rc1をoc cluster up
VagrantでVMセットアップする部分は前回のFedora 24でoc cluster upを利用してOpenShift Originをセットアップするを参照。
DOWNLOAD_URL=https://github.com/openshift/origin/releases/download/v1.3.0-rc1/openshift-origin-client-tools-v1.3.0-rc1-ac0bb1bf6a629e0c262f04636b8cf2916b16098c-linux-64bit.tar.gz FILENAME=$(basename $DOWNLOAD_URL) PATHNAME=${FILENAME%%\.tar\.gz} sudo dnf install git docker -y sudo sh -c "echo INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16' >> /etc/sysconfig/docker" sudo systemctl start docker sudo systemctl enable docker curl -LO $DOWNLOAD_URL sudo tar xf $FILENAME --strip=1 -C /usr/bin $PATHNAME/oc sudo curl -L https://raw.githubusercontent.com/openshift/origin/master/contrib/completions/bash/oc -o /etc/bash_completion.d/oc . /etc/bash_completion.d/oc sudo oc cluster up --metrics mkdir ~/.kube/ sudo cat /var/lib/origin/openshift.local.config/master/admin.kubeconfig > ~/.kube/config
NexusをDockerで動作させる
Nexusは基本的にOpenShift上で動作させて使ってるんだけど、自分の場合はOpenShift環境が複数あってNexusも作って壊して、みたいなことが多いという特殊な状態なので、別の環境にマスターとなるミラーがあったほうが良さそうだなぁ、ということで自分の汎用サーバにしているRHEL 7 VMでNexusを動かすことにした。
データボリュームはホストマウントでsystemdのUnitファイル書いておしまい。
sudo mkdir /sonatype-work && sudo chmod 777 /sonatype-work sudo sh -c "cat << EOM > /etc/systemd/system/nexus.service [Unit] Description=Nexus on Docker Requires=docker.service After=docker.service [Service] Type=simple ExecStartPre=-/usr/bin/docker stop nexus ExecStartPre=-/usr/bin/docker rm nexus ExecStartPre=/usr/bin/docker pull sonatype/nexus ExecStart=/usr/bin/docker run --name nexus -p 8081:8081 -v /sonatype-work:/sonatype-work:Z sonatype/nexus [Install] WantedBy=multi-user.target EOM" sudo systemctl start nexus && sudo systemctl enable nexus
Bose QuietComfort 35を買った
Bose QuietComfort 15を使っていて今年の3月にアンオフィシャルのイヤーパッドに交換していたのだけど、やはり安物なのかすぐ皮が割れてダメになってしまった。経験上オフィシャルのイヤーパッドは2年強持つけど5000円くらいするし、QC15はもう7年前の製品なのでこのタイミングでお金かかる補修も微妙だし本体ごと買い換えるかなー、ということで今年6月に発売されていたBose QuietComfort 35をポチった。ヨドバシのポイントが結構あったのも使いたかったしね。6時間でおうちに届いた。
Nexus 6はペアリングして問題なく利用できた。
Fedora 24はペアリングできたように見えるけどヘッドフォンとして認識していない。調べてみると、LinuxのbluezはLEでのペアリングをサポートしておらず、LEが有効になったままペアリングするとダメなので一度bredrにしてペアリングして設定を戻す、という作業が必要とのこと。ペアリングを除けばLEはLinux 3.4/bluez 5からサポートされているということらしい。
http://unix.stackexchange.com/questions/292189/pairing-bose-qc-35-over-bluetooth-on-fedora
Soundを開いてBose QuietComfort 35を選択。Profileには"High Fidelity Playback (A2DP Sink)"と"Headset Head Unit (HSP/HFP)"という2つのProfileがあり、前者はふつうに高音質だが後者は非常に低音質になる。ただし、後者じゃないとマイクが認識しない。InputでQC35を選択すると自動的に後者のプロファイルになるようだ。
調べてみるとこれはBluetoothの仕様で、A2DPは片方向トラフィックなのでマイクは明らかに機能しないとのこと。音楽聞くときとビデオカンファレンスするとき、それぞれ設定で切り替えないといけないのは面倒だなぁ。
WildFly 10.1.0.Final リリースしました
WildFly 10.1.0.Finalがリリースされました。WildFlyのサイトからダウンロードできます。
リリースノートはこちら。今回のハイライトはデフォルトでのHTTP/2のサポートです。
HTTP/2をサポートするには、TLSの拡張であるALPNをサポートする必要があるのですが、JavaのTLS実装にALPNのサポートが追加されるのはまだリリースされていないJava 9です。
Jettyにはalpn-boot.jarというbootclasspathを利用してTLS実装を差し替えるというhackライブラリがあるのですが、利用するJavaのバージョンに依存があり、バージョン毎に対応するalpn-boot.jarを利用しないと動作しないという欠点があります。そこで、WidFlyのWebサーバであるUndertowでは、ALPNをサポートする別のhackを実装して、今回のリリースとなりました。
Got 13 seconds?? All you need to learn HTTP/2 on #WildFly 10.1 #theeasylife #javaee #jboss https://t.co/Mx5hF2EPfA pic.twitter.com/K4X3Bkmugz
— Jason Greene (@jtgreene) August 20, 2016
ChromeでF12を押して、Networkタブを開き、表示項目を右クリックしてProtocolを追加するとHTTP/2であるかどうかを上のツイートのように確認できます。
OpenShift Origin 1.3.0 v1.3.0-alpha.3をoc cluster up
前回のFedora 24でoc cluster upを利用してOpenShift Originをセットアップするのalpha3バージョンです。コマンドのメモだけ。
sudo dnf install git docker -y sudo sh -c "echo INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16' >> /etc/sysconfig/docker" sudo systemctl start docker sudo systemctl enable docker curl -LO https://github.com/openshift/origin/releases/download/v1.3.0-alpha.3/openshift-origin-client-tools-v1.3.0-alpha.3-7998ae4-linux-64bit.tar.gz sudo tar xf openshift-origin-client-tools-v1.3.0-alpha.3-7998ae4-linux-64bit.tar.gz --strip=1 -C /usr/bin openshift-origin-client-tools-v1.3.0-alpha.3-7998ae4-linux-64bit/oc sudo curl -L https://raw.githubusercontent.com/openshift/origin/master/contrib/completions/bash/oc -o /etc/bash_completion.d/oc . /etc/bash_completion.d/oc sudo oc cluster up mkdir ~/.kube/ sudo cat /var/lib/origin/openshift.local.config/master/admin.kubeconfig > ~/.kube/config
Fedora 24インストール
Fedora 24がリリースされたのでいつも通りWorkstationを半自動クリーンインストール。会社のThinkPad T440s、おうちのDell XPS 13 9350とThinkPad X1 Carbon 2012。
Fedora 23でいつも通りliveusb-creator
を使ったらUSBメモリの内容が初期化されてしまった。Fedora 23でliveusb-creator
が破壊的な変更をするようになってしまったようだ。How to create and use Live USBに従ってliveusb-creator
ではなくCUIのlivecd-tools
を使って書き込めばいままで通りのUSBメモリが維持できる。
セットアップの流れは以下のような感じ。
- sudo visudo
- USBメモリから$HOMEの
.git
を取得してgit reset --hard
- $HOME以下の設定ファイルや自前スクリプト群が復元する
- sudo dnf update -y
- gsettings修正スクリプト実行
- gitからいくつかcloneするスクリプト実行
- いくつかパッケージをインストールするスクリプト実行
- USBメモリからアーカイブ類のバックアップを復元するスクリプト実行
- Emacsでpackage-install
- ack
- twittering-mode
- helm
- go-mode
- Emacsのsemiとwanderlustインストール
- こいつらはmake install
- chromeとbluejeansのrpmのインストール
- Firefox syncのセットアップ
- Firefox about:config
- browser.showQuitWarning = true
- middlemouse.contentLoadURL = false
- browser.urlbar.trimURLs = false
- 会社のCA証明書、Wireless、VPNセットアップ
追加でインストールしているパッケージは現状こんな感じ。過去インストールしていたもののうちいくつかは会社のサーバやDockerイメージに追い出した。
git autofs nfs-utils sshfs ack man-pages hexchat java-1.8.0-openjdk\* emacs emacs-apel flim w3m emacs-w3m aspell-en libreoffice-writer libreoffice-calc libreoffice-impress sysstat tcpdump strace wireshark-gnome zlib-devel docker spice-xpi libvirt vagrant vagrant-libvirt virt-manager virt-install gimp rpm-build rpmdevtools golang
セットアップはだいたい30分で終わる。