私が歌川です

@utgwkk が書いている

GW5日目

のんびり寝てから名古屋に向かう。せっかくの名古屋なので味仙の台湾ラーメンを食べたかったのだけれど、駅内の店は混みまくっていて、行ったことのある店は昼営業をやっていなかったので失敗。ラーメンを食べて、HUBでちょっと飲んだあとホテルにチェックインする。

ワイマーケットの3Fでビールを飲む。craftbeer.nagoya っていうドメインを見るたびにかっこいいなと思う。京都を代表する何か、というドメインを取れたらよさそう。

ホップバズに行って破産せずに済んだ。市内の中心部から離れたところにあったのが、店舗の移転でさらに遠くなっていた。

GW4日目

家で小休止。有意義なゴールデンウィークにしたい、という力学が働いている気がするけど、むしろたっぷり時間を取って休みまくって、気が向いたらなんかやる、ぐらいの方がちょうどいいのではないか。詰め込みすぎるとパンクしてしまう。あと、ゴールデンウィークは人が多いのだ……。

無印良品週間なので、無印に行っていろいろ物色する。アクリルケースを買って、ごはんにつかまり立ち赤ちゃんフィギュアを飾った。非常にいい状態になっている。

ちょっとHTMLを書いてPRを出した。昔ながらの個人サイトを手作りするようなプリミティブな喜びを久しぶりに味わえたと思う。GitHubのPRを使う、masterブランチにマージしたら自動でデプロイされる、というのが現代っぽい。

GW3日目

昼から高井戸のビアカフェで飲む。東京の西側でのんびり暮らせるとよい気もするけど、物価や家賃が気になる。コンテンツを効率的に摂取するなら東京に住むのが手っ取り早い。

雨が降ってきたのでどうしたものか、と思いつつ東京駅方面に向かって日本橋ブリュワリーで飲む。

新幹線に飛び乗って旅行にひと区切りつける。

GW2日目

やや二日酔い気味だった。あまり食欲がないけど何か食べないと力尽きると思って、ホテルを出て富士そばを食べる。雑な蕎麦という感じで東京っぽい (?)。

幕張メッセに行ってニコニコ超会議2022を見てきた。目当てのコンテンツは1つだけだったけどせっかくなのでいろいろ見て回った。ボカロエレクトロのDJがかなりよかった。やはり低音と大きな音が鳴っていると嬉しくなる。なんだかんだでニコニコ動画のコンテンツを見て育ってきた世代なので、何らかの感慨があるような、そうでもないような。

歩きまくった結果めちゃくちゃに疲れたけどなんとか東京に帰った。あとで見返すと1日で25000歩歩いていた。

京葉線を乗り過ごして、期せずして東京駅で乗り換えることに。動く歩道がなかったらまあまあの距離を歩かされることになって終わっていたと思う。

夜は池袋に行って飲み会。マンション購入にはまだそんなに興味がないな、と思った。とはいえ部屋が綺麗で広いとよさそう。

GW1日目

雨が降る前に上京したら、東京はちょうど雨が降りはじめるところだった。

ミチミチパイモンの人形があったドンキに再び行くと、まだ原神グッズコーナーが残っていた。大陸から輸入したものを売っていて、こっちで入手するのは大変なのでありがたい。ごはんにつかまり立ち赤ちゃんフィギュアを買った。

本人はいなかった。小冊子をもらって帰る。

夜は就職して上京した友だちと飲みに行った。一人あたりの支払い額が5000円を超えてもまあそういうものかと思ってきたけど、冷静に考えるといろいろ飲みまくっていて、飲みすぎなのではないか。

意識してゆっくり喋る

ふだんの会話でも、登壇するときでも、すごく急いでいるということがないならゆっくり喋るように心がけている。他の人から見て (聞いて?)、実際にゆっくり喋っているように感じられているのかはまた別だけど、自分の中では急がないように発話している、というイメージ。聞く側に立ったときも、早口でまくし立てられるよりはのんびりしている方が聞き取りやすい。リモートワーク中心の時代では聞き取りやすさが命になってくるので、突き詰めると最高のマイクを買うべし、という話になるのだと理解している。

早口で喋ると、思考に言葉が追い付かなくて詰まる感じがある。じゃあタイピングはどうなのかというと、こっちは言葉がスラスラ出てくるので指の動きに律速されることもある。メカニズムが違うのだろう。あるいは文字情報と音声情報とで語彙が違うとかだろうか? 誰か仕組みを知ってたら教えてください。

nginxのaccess_logとerror_logのログファイル名に変数を使えるかどうか

tl;dr

access_log には変数を使えるけど制約が多い。error_log には使えない。ホスト名の数だけ server directiveを列挙した方が早そう。

nginx 1.21.1 で確認した。

変数を使えるかどうか

表題のことが気になったので調べた。部内k8sクラスタにアプリケーションをデプロイする際に、ホスト名を列挙するだけで同じようなnginxの設定を反映できるようにしたい、そしてアクセスログやエラーログをホスト名ごとに分けたい、という経緯である。つまり以下のように書けるとありがたい。

server {
  listen [::]:443 ssl http2;
  server_name host-a.example.com host-b.example.com;

  access_log /var/log/nginx/$host.access.log main;
  error_log  /var/log/nginx/$host.error.log;

  location / {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://upstream;
  }
}

access_log

http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log を見ると、ファイル名に変数を使うことができるように読める。ただし制約がいろいろある。とくに、nginxを動かすuserがログファイルの出力先ディレクトリに書き込み可能でなければならない、という制約に引っかかった。/var/log/nginx の所有者が root:root で、パーミッションが700のときに、nginxを www-data userなどで動かしているとアクセスログが出力されない。

error_log

http://nginx.org/en/docs/ngx_core_module.html#error_log を見ると access_log とは違って変数に対する言及がなく、使えなさそう。実際、先述のようなnginx.confを反映したら /var/log/nginx/$host.error.log というファイルができていた……。

最終的にどうしたか

ホスト名を列挙しておいて、ホスト名の数だけ server directiveを展開するようにした。具体的には、以下のようなitamae recipeを反映した。

node.reverse_merge!(
  nginx_hosts: %w[
    host-a.example.com
    host-b.example.com
  ],
  # 中略
)

template '/etc/nginx/conf.d/multiple-hosts.conf' do
  owner 'root'
  group 'root'
  mode '0644'
  notifies :reload, 'service[nginx]'
end

templates/etc/nginx/conf.d/multiple-hosts.conf は以下のような内容になっている。

<% node[:nginx_hosts].each do |host| -%>
server {
  listen [::]:443 ssl http2;
  server_name <%= host %>;

  access_log /var/log/nginx/<%= host %>.access.log main;
  error_log  /var/log/nginx/<%= host %>.error.log;

  location / {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://upstream;
  }
}
<% end -%>