4/26 (金)
[Movie] アベンジャーズ エンド・ゲーム
チネチッタで『アベンジャーズ エンド・ゲーム』の字幕版を観る。 『インフィニティ・ウォー』の終わり方からして、今回はタイムトラベルものになるとみんな想像していたがやっぱりそうだった。 タイムトラベルは劇薬なので、それを取り扱う作品はいろいろ工夫をするものだが、エンド・ゲームは割と直球だった。 大作で登場人物が多いとそうなるよね…
4/21 (日)
[Movie] シャザム!
TOHO シネマズ川崎で『シャザム!』(原題: Shazam!)の吹き替え版を観る。 主役のビリーの吹き替えが緒方恵美なので、シンジ君感半端ない。
4/19 (金)
PowerDNS
Web から登録・変更が可能な DNS サーバーが欲しくて PowerDNS をインストールしたのだが、かなり手こずったのでメモしておく。
PowerDNS は Authoritative という権威サーバーと Recursor というキャッシュサーバーの 2 種類があり、別々に運用することを想定している。 PowerDNS Authoritative は example.com のようなドメインを公開するための DNS サーバーだが、それでも自分が持っていないドメインは設定ファイルの recursor というパラメータで指定した別の DNS サーバーに聞きに行くことができた。 ところが、権威サーバーでありながら他へ DNS サーバーへクエリーを回送できる機能は脆弱性につながると バージョン 4.1.0 から recursor パラメータを廃止してしまった。 そのため自分でドメインを運用しようと思った場合、PowerDNS Authoritative とは別にキャッシュサーバーとなるもう一台(PowerDNS Recursor を想定)が必ず必要となるとのこと。 Web 上の
とりあえず参考1のCentOS 7 x86_64に PowerDNS Authoritative Server 4.0.4 をインストール の記事を参考に PowerDSN をインストールする。 昔の Solaris 2.x の頃を思い出せる。
その後に PowreDNS Recursor をインストールする。 CentOS 7 の場合は yum instal pdns-recursor でインストールができる。
その後に、PowerDNS Authoritative はポート番号を 53 から別の番号に変更する。
daemon=no
guardian=no
launch=gmysql
setgid=pdns
setuid=pdns
gmysql-host=127.0.0.1
gmysql-user=username
gmysql-password=password
gmysql-dbname=pdns
local-port=5300
次に PowerDNS Recursor は forward-zones というパラメータでドメイン名と検索したい DNS サーバーを指定する。 forward-zones は forward-zones=(ドメイン名)=(DNSサーバー名) と記述し、すべてのドメインに一致させたければ . と書けばよい。 これは一般の DNS サーバーと接続する。 ここでは Google の DNS サーバー(8.8.8.8)を指定している。
一方、PowerDNS Authoritative が example.com を公開していれば forward-zones=example.com=127.0.0.1:5300 と書ける。
注意が必要なのは設定ファイルの記述順で、一般的には上から順番にパターンマッチングして行くように思えるが、どうも逆順のようだ。 一般的なものを上に書き、特殊なものを下に書く。
forward-zones=.=8.8.8.8 forward-zones=example.com=127.0.0.1:5300 allow-from=127.0.0.0/8, 10.0.0.0/8 local-address=0.0.0.0
参考
追記: 5/13
PowerDNS であってもドメインに NS フィールドを設定しないとセカンダリー DNS サーバーがゾーンを処理できないのを忘れていた。
4/18 (木)
Windows で使える WebDAV クライアントソフト
この内容は独立したページに移動。
Windows で使える WebDAV クライアントソフトを作る方法
Windows で WebDAV をクライアントソフトを作る方法。
- シェル拡張
- 仮想ドライブ
- Windows Driver Kit
- Dokan
- Dokan - User mode file system library for windows with FUSE Wrapper
- dokany
- DokanCloudFS (もしかすると WebDAV 対応があるかも)
- Dokan に似た製品
- ProjFS
4/16 (火)
Dropbox の同期デバイス制限
Dropbox が無料プランで同期できるデバイスを3 台に制限したけど、「これ以上 Dropbox にデバイスをリンクできません」という警告メールが来た。 現在使っているデバイスは 5 台(Android 2 台、Windows に 3 台)なので、今後新しいデバイスを購入しても利用できないことになる。 Microsoft Office 365 Solo をサブスクリプションしていると OneDrive 1TB の利用権が付いてくるので、これからはそちらを中心に使うしかないのか?
4/14 (日)
[Java] JAXB を一部
JAX-RS は JAXB を使って JSON データを Java のオブジェクトにマッピングするが、その際に JSON ドキュメントの一部分をデコードせずに文字列のままで受け取りたいということがある。
例えば JSON の一部分がうまくマッピングできない場合である。
{ "name":"nminoru", "password":"PASSWORD", "options":{ "opt":"OPT", "etc":"ETC" } }
Java のオブジェクトにマッピングした場合には、以下のようになることを期待している。
class Input { public String name; // nminoru public String password; // PASSWORD public String options; // {"opt":"OPT", "etc":"ETC"} }
これをやる方法をいろいろ探してたが、1. の Stack Overflow の回答にある @XmlJavaTypeAdapter
と XmlAdapter
を使えば可能だと分る。
2. のように JSON データの文字列(String) と JSON-P の JsonObject をマッピングできる。
具体的には以下のようなクラスを作成する。
public class JsonObjectAdapter extends XmlAdapter<String, JsonObject> { @Override public String marshal(JsonObject v) throws Exception { return v.toString(); } @Override public JsonObject unmarshal(String v) throws Exception { JsonReader jsonReader = Json.createReader(new StringReader(v)); return jsonReader.readObject(); } }
JsonObject 型の options に赤字のように @XmlJavaTypeAdapter
のアノテーションを設定する。
@XmlJavaTypeAdapter
を付けると Java のフィールド名がそのまま JSON のフィールド名と認識できなくなるようなので、青字のように @XmlElement
で名前も一緒に指定する必要があるようだ。
class Input { public String name; public String password; @XmlElement(name="options") @XmlJavaTypeAdapter(JsonObjectAdapter.class) public JsonObject options; }
XmlAdapter
の unmarshal
メソッドの引数 v には、JSON 構文的に v の最初の文字と構文上つりあう終了位置までが入力されるので、そのまま文字列として記録するもよし、JsonObject のようなデータ構造にマップするもよし。
4/12 (金)
Nexus Repository Manager をバージョンアップ
運用していた Nexus Repository Manager の 3.14.0-14 は脆弱性の警告が出ていたので、3.16.0-01 にバージョンアップした。