nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

Nexus 7 2012にPure Nexus 6.0.1をインストール

Nexus 7 2012 "grouper"のオフィシャルアップデートがパフォーマンスが致命的に悪いポンコツ5.1.1で終わってしまっていて使い物にならなかったのでCyanogenMod 12.1を入れて子どものYouTube端末にしていたんだけど、こちらも最近パフォーマンスが非常に悪い状態で10秒くらい固まることが多くなってきていた。

CyanogenModもstableは2015-11のままでアップデートされていないようなので、Pure Nexus 6をつっこんだ。前回CyanogenModを入れたときには、Pure Nexus 6はまともに動かなかったので、CyanogenModを入れたのだった。

Fedora 24ではandroid-toolsを入れるとadb/fastbootが使える。

sudo dnf install -y android-tools

bootloaderを起動した状態でunlockを発行する。bootloaderはUSB Debugging有効でsudo adb reboot bootloaderか、電源ボタン+ボリューム下ボタン長押しで電源ONにするかで起動できる。

sudo fastboot oem unlock

recovery領域をTWRPに入れ替える。

sudo fastboot flash recovery twrp.img

flashしたら、bootloaderからRecover起動を選択するとTWRPが起動する。

USB接続からPure NexusとOpen GAppsのzipをNexus 7のDownloadディレクトリに転送する。転送したらTWRP上のInstallでzip選択して実行。再起動するとPure Nexusになる。

さて、Pure NexusだとYouTube閲覧端末として十分なパフォーマンス出るかな?

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

VagrantVMセットアップする部分は前回の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 VMNexusを動かすことにした。

データボリュームはホストマウントで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のサイトからダウンロードできます。

f:id:nekop:20160201100503p:plain

リリースノートはこちら。今回のハイライトはデフォルトでのHTTP/2のサポートです。

HTTP/2をサポートするには、TLSの拡張であるALPNをサポートする必要があるのですが、JavaTLS実装にALPNのサポートが追加されるのはまだリリースされていないJava 9です。

Jettyにはalpn-boot.jarというbootclasspathを利用してTLS実装を差し替えるというhackライブラリがあるのですが、利用するJavaのバージョンに依存があり、バージョン毎に対応するalpn-boot.jarを利用しないと動作しないという欠点があります。そこで、WidFlyのWebサーバであるUndertowでは、ALPNをサポートする別のhackを実装して、今回のリリースとなりました。

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