NAKAMURA Minoru の日記 (2019年12月)

先月の日記(2019年11月) 今月の日記(2019年12月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita



12/28 (金)

[Food] Eataly @東京駅 丸の内地下

東京駅の地下にEataly(公式食べログ)というイタリヤ食材店がある。 ここにはシチリア菓子として有名なカンノーリを食べられる場所がある。

映画やドラマによく出るカンノーリだけど、皮はカリカリだったのね。


12/26 (木)

[Food] 3 STARS PANCAKE@武蔵中原

武蔵中原にあるパンケーキの専門店 3 STARS PANCAKE (食べログ)。 パンケーキは厚みがあるが柔らか、というか密度が低い。 ナイフで思ったように切れない。


12/21 (土)

[Movie] スター・ウォーズ9: スカイウォーカーの夜明け

チネチッタで『スター・ウォーズ9: スカイウォーカーの夜明け』(原題: Star Wars: The Rise of Skywalker)を観る。

ルーカスが宣言した「スターウォーズは9部作だ」がこれで本当になった。 ルーク、ハン・ソロ、レイアがみんな死んでレジェンドは終了か。 私が生きているうちに完結するとは感慨深い。


12/20 (金)

systemctl edit

Docker デーモンは通常 UNIX ドメインソケットでクライアントと通信するが、TCP ソケットで接続することも可能である。 その場合、docker デーモンの起動オプションを追加する必要があるので /lib/systemd/system/docker.service を変更する必要がある。

- ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
+ ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock

ただ /lib/systemd/system/docker.service を直接書き換えると、docker の RPM パッケージをアップデートしたタイミングで設定が更新されてしまう。 これを防ぐには systemctl edit を使えばよいらしい。

sudo systemctl edit docker.service

systemctl edit はドロップインファイルというユニット設定を差分更新するファイルを記述する。 今回は /etc/systemd/system/docker.service.d/override.conf というドロップインファイルができる。 2行目の空の ExecStart= は既存の設定を削除するので書かない場合は、元の ExecStart と追加した ExecStart の 2 行が出来て正しいユニット設定にならないらしい。

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock

ドロップインファイルを適用後の状態は以下のコマンドで確認できる。

sudo systemctl cat docker.service

12/19 (木)

Box API

Box.com を API 操作するための API リファレンス を見ているが、この API は GET https://api.box.com/2.0/files/:file_idGET https://api.box.com/2.0/folders/:folder_id と ID でパラメータを指定することになっている。 /path/to/my/file のようなファイルのパスでファイルやフォルダーを検索する API は提供されていないようだ。

やり方としては GET https://api.box.com/2.0/folders/0 でルートフォルダーから順番にトラバースして、必要なパスの各段階を取ってゆくしかないようだ。

他にはコンテンツを検索する GET https://api.box.com/2.0/search があり、ancestor_folder_id を指定するとフォルダー直下にあるファイルの名前を使って検索ができる。 ただしこれも ancestor_folder_id をフォルダーIDを使うので、API の発行回数は GET https://api.box.com/2.0/folders/:folder_id と同じになる。 ただフォルダー内の大量にエントリーがあった場合でもピンポイントでフォルダーを参照できる点が有利か?

4年前の Stack Overflow の Can you lookup files by path using the box API? の記事でも、この点が議論されているがうまい解決方法はないようだ。


12/14 (土)

[Movie] 屍人荘の殺人

109 シネマズ川崎で『屍人荘の殺人』を観る。 小説のほうは読んでいたが、ゾンビ・パンデミックスの最中に殺人事件の推理劇が行われるというのはシュールだ。

[Movie] ジュマンジ/ネクスト・レベル

チネチッタで『ジュマンジ/ネクスト・レベル』(原題: Jumanji: The Next Level)を観る。 ウェルカム・トゥ・ジャングルの直接の続編になっている。

続編があることをにおわせて終わるが、次回作はジュマンジが現実世界に進行してくると予想する。 前作のボスのヴァン・ペルトと今作のボスのユルゲンは復活するんだろうなぁ。


12/9 (月)

蒲田移転

今日から川崎から蒲田オフィスへ移転することに。 多摩川線で出勤になる。


12/7 (土)

Amazo S3 様オブジェクトストレージのモデル

Amazo S3 に似たオブジェクトストレージ、つまり S3 や Azure Blob Storage と GCP Google Cloud Storage などをファイルシステムとしてマッピングすることをずっと考えている。

各オブジェクトストレージを横断的に調べていると、共通点も見えてくる。

  1. どのオブジェクトストレージも Web サーバーをモデル化している。 つまり https://bucket.objectstorage.example.com/objectpath のような URL とのマッピングを行い objectpath の部分が識別子となる。
  2. どのオブジェクトストレージもオブジェクトを移動する機能を提供しない。
  3. どのオブジェクトストレージもバケットやコンテナと呼ばれる単位の下にオブジェクトが何十万個も並べるようになっているが、それでは管理上扱い辛いこともあるので objectpath に "/" を含んだ場合に、それをディレクトリのように階層化してオブジェクトをリスティングする機能を持っている。 ただしこれは実際にディレクトリが存在する訳ではなく、オブジェクト名のパターンマッチングである。
  4. 3. の理由により、「ディレクトリを作成する」という操作が存在しない。 Azure Storage Explorer などのクライアントツールは、オブジェクトストレージをファイルシステムのように見せているが、これらのツールは「仮想ディレクトリを作成する」ことはできるが、その後に作成した仮想ディレクトリにファイルをアップロードしてオブジェクトを登録する必要がある。 仮想ディレクトリはクライアントツール内のみの揮発する情報で、オブジェクトを登録しない仮想ディレクトリはしばらくすると消えてしまう。
  5. 半面、"/" で終わる名前のオブジェクトを作成することができる。これは仮想ディレクトリではなく、実体のあるオブジェクトだ。

3. と 4. の制限が邪魔になって、オブジェクトストレージのファイルシステムマッピングが面倒になっている。 せめて名前の最後が "/" で作成できるオブジェクトを禁止してくれればよかったのに…


12/2 (月)

Kong の宣言的定義

Kong は API アグリゲーターで、複数の API を統合することができるが、その管理も API になっている。 だがバージョン 1.1 から declarative config file が導入され、YAML 形式で定義ファイルを書くことができるようになった。

Declarative config file は

  1. DB-less 運用のための設定ファイル。Kong は動的に API を管理する時はバックエンドに PostgreSQL や Cassandra を使うが、運用中に設定を変更しない場合に起動時に設定ファイルを渡す。
  2. DB 運用の場合、DB の中の設定を設定ファイルとして取り出したり、逆に DB に設定したりする。

1. の場合は kong.conf の中で、DB-less 運用の指定と declarative config file ファイルのパス(下の例だと kong.yml)を設定する。

database = off
declarative_config = ./kong.yml

一方、2. の場合は kong config のコマンドを使うことになる。 その際に DB から設定をセーブする db_export はいつでも使えるのだが、DB に設定をロードする db_import は Kong の起動前(kong start)にやらないと効果がないということが分かった。

これに気づかずに3時間ぐらいを浪費した。 kong start 後に kong db_import をした後にアクセスしても {"message":"no Route matched with those values"} が出るので、何が悪いのか分からずにすったもんだしたよ。 せめてドキュメントに書いておいてくれればよいのに…

過去の日記


先月の日記(2019年11月) 今月の日記(2019年12月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita


Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp