3/31 (日)
Docker の REST API を HTTP 化する
Docker のコマンドはデーモンに対して UNIX ドメインソケットで接続し、REST API と同形式のコマンドを送り込むことで実行する。 そのため docker コマンドは root 権限で実行する必要があるし、同一ホスト内でしか実行できない。
root 権限以外のプロセスが docker コマンドを実行したり、リモートから実行するには docker の設定を変更する必要がある。 以下は、Docker は CentOS 7 に対して Docker CE 18.09 をインストール(2018年11月26日の日記)した前提で進める。
設定の変更箇所は /lib/systemd/system/docker.service になる。
- ExecStart=/usr/bin/dockerd -H fd://
+ ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd://
設定変更後はデーモンがリブートする。
# systemctl daemon-reload # systemctl stop docker # systemctl start docker
参考
- Docker Documentation | Develop with Docker Engine SDKs and API
- Docker Documentation | Protect the Docker daemon socket
追記:12月20日
/lib/systemd/system/docker.service を修正するよりも、systemctl edit を使った方がよい(12月20日の日記)
3/30 (土)
[Movie] 劇場版レゴ・ムービー2
チネチッタで『レゴ・ムービー2』(原題: The LEGO Movie 2)を字幕版で観る。 1作目(2014年4月5日)はレゴを接着剤で固定化しようとする人間の父親がラスボスだったが、今回も男子に妹ができて兄の作ったレゴタウンは妹の襲撃を受けて…というメタ構造を持つストーリーだった。 今回もなぜか準主役のバットマンとD.C.のキャラクターが出そろい。
3/24 (日)
[Movie] バンブルビー
チネチッタで『バンブルビー』(原題: Bumblebee)の字幕版を観る。 トランスフォーマーの映画シリーズの中では妙にフュチャーされているバンブルビーが単独主演映画に。 バンブルビーはオプティマスプライムの次の司令官ホットロディマスよりも存在感が強い。 前作のシリーズ本流の最後の「トランスフォーマー 最後の騎士王」でもオプティマスプライムの後継者という位置づけだったし、バンブルビーがしゃべれるようになった以上事実上の司令官か。
3/21 (木)
[Java] Maven + JUnit でユニットテストの種類を増やす
JUnit は「カテゴリー」によってテストケースを分類し、実施するテストを分類することができる。 ただせっかくカテゴリーを設定した以上、ソースコードに手を触れずに mvn test と打つときにカテゴリーを指定して実行するということがやりたいが、やり方があまり載っていない。 とりあえず Maven のプロファイルと JUnit を組み合わせることで、コマンドラインで選択という目的は一応達成できるのでここにメモしておく。
JUnit のテストケースにカテゴリーを作るには、まずインターフェイスを定義する。
package jp.nminoru.foo; public interface DefaultTest { }
テストの中に @Ctagory
アノテーションで指定する。
package jp.nminoru.foo;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import static org.junit.Assert.*;
@Category(jp.nminoru.foo.DefaultTest.class)
public class FooTest {
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void test() {
}
ついぎに pom.xml を定義する。
- maven-surefire-plugin をインストールし、その test フェーズに対して、<groups/> を定義する。 ここに実行するカテゴリーをかけるのだが、変数にしておく。
- Maven にはプロファイルが設定できるので、デフォルト以外のプロファイル(この例では )を定義する。
<project> <build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <executions> <execution> <id>default-test</id> <phase>test</phase> <goals> <goal>test</goal> </goals> <configuration> <groups>${testcase.groups}</groups> </configuration> </execution> </executions> </plugin> </plugins> </build> <profiles> <profile> <id>default</id> <activation> <activeByDefault>true</activeByDefault> ← デフォルトのプロファイルは true にする。 </activation> <properties> <testcase.groups>jp.nminoru.foo.DefaultTest</testcase.groups> </properties> </profile> <profile> <id>extra-test</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <testcase.groups>jp.nminoru.foo.ExtraTest</testcase.groups> </properties> </profile> </profiles> </project>
Maven でテストを実行する時に -P オプションを指定することでプロファイルを指定して実行することができる。 これでカテゴリーを指定してのテスト実行が可能に。
mvn test -P extra-test
3/20 (水)
Java でミックスイン
Java は C++ を反面教師にクラスの多重継承を禁止して生まれたけど、クラスの継承は常に1つの親から派生するというルールを定めている。 ただしクラスは実装を伴わないインターフェイス(interface)を複数取り込むことができる。
しかし Java 8 から interface に対するインターフェイスメソッドにデフォルトの実装を書くことができるようになり、これを利用することで擬似的にミックスインが可能になった。 それでも interface にはフィールドは定義できないので、C++ で問題になるような多重継承は避けられるようだ。 Java 9 からは private メソッドも
1.0 | 8.0 | 9.0 | ||
---|---|---|---|---|
インスタンス | public メソッド | 〇 | 〇 | |
protected メソッド | ||||
private メソッド | 〇 | |||
クラス | static メソッド | 〇 | 〇 | |
public static final 変数 | 〇 | 〇 | 〇 |
- ギークを目指して - Java8のインタフェース実装から多重継承とMixinを考える
3/4 (月)
風疹の抗体検査
風疹の抗体検査を会社の付属病院で受ける。 川崎市の助成があるようで、検査は無料になる。 検査結果次第(おそらく抗体なし)で、予防接種を受けることになる。 南無三。
追記: 3/14
検査の結果が返ってきた。 免疫はあるらしく予防接種は不要とのこと。 三種混合ワクチンの効果が残っているようだ。
3/9 (土)
3/3 (日)
[Movie] 移動都市/モータル・エンジン
『移動都市/モータル・エンジン』(原題: Mortal Engines)は上映劇場が極端に少なくて、川崎でやってない。 神奈川だとららぽーと横浜と海老名の2館だということで、ららぽーと横浜で観る。
ららぽーと横浜は NEC の横浜事業場の跡地である。 学生時代に会社見学に来たことがあるのを微かに記憶していた。 上映までの時間にららぽーと横浜を眺めてみるが、立体駐車場やなんとなく郊外型イオンシティーを思わせるたたずまいに何とも言えない田舎を感じる。 川崎や横浜の湾岸地帯は別世界だ。
ららぽーと横浜に入っているシネマコンプレックスは TOHO シネマズだが、プレミアムシアターというのがあり全席がプレミアムシートになっている。 入口に専用のロビーもある。 豪華だ。 『移動都市/モータル・エンジン』もプレミアムシアターで上映される。
『移動都市/モータル・エンジン』の字幕版を観たが、ハウルの動く城感がすごい。
3/2 (土)
[Movie] スパイダーマン・スパイダーバース
109シネマズ川崎で『スパイダーマン・スパイダーバース』(原題: Spider-Man: Into the Spider-Verse)の IMAX 3D の字幕版を観る。 2Dと3Dのあいのこのような独特な表現形式は面白い。 久々に 3D で観てよかったと思える映画だ。