Dockerコンテナ内で作ったファイルの所有者はrootになる

※この記事は『プライムリッチ』を飲んで書かれた。

『プライムリッチ』はアルコールが6%で重い。しばらく昏倒していて起きて作業している。

室温記録システムのサーバをScala+Play Frameworkで作っている。サーバ環境のもろもろの事情と技術的興味でDockerで環境構築をしたいが知見が少ない。参考にしているのはこれだ。

一点ハマりポイントを発見したので共有する。『プロジェクトの初期化』の節の内容を実行するとホスト側にプロジェクトが生成されるが、これらのファイルは所有者がrootになっているのでchown -Rしないと編集できない。永続的に解決したいのなら参考はこのあたり

てかこれ当該記事のコメント欄に書くべきだな…Qiitaアカウント作るか。Qiitaアカウントを持っていないのは必要になったことがないからだ。自分で発信プラットフォームを持つことには価値があると思っているけど、Qiitaが潰れる可能性と僕がさくらインターネットに972円を払い忘れる確率だとどっちが高いかな。後者だね普通に。

Raspberry Pi Zero WHで温度センサPart.1―キーボード・ディスプレイなしでssh接続するまで

※この記事は『のどごしZERO』を飲んで書かれた

↑6本飲み終わったので次はどうしようか考えている。

Raspberry Piで温度を計測してひたすらネットのどこかに投げ続けるやつ作ってる。Raspberry Piにキーボードを繋げないとセットアップできないのかと思ったが、母艦PCでインストールメディアを作る段階で細工をしておけばいきなりssh接続できる。ssh接続できればなんでもできる。みんな黒い画面好きだよね?

調達

Raspberry Pi Zero WH(2000円@マルツ)はwifiがついていて何かと便利だ。ただし電源供給用のmicro USBケーブルとストレージ用のmicro SDカード(16GB480円@マルツ)、そして母艦となるPCは必要だ。micro USBケーブルの逆側はACアダプタでコンセントに繋いでもいいし(5V3A; 700円@秋月)、Type-AでPCから給電してもいい。micro SDカードに自分でOSのイメージを焼く必要があるのでmicro SDカードが挿さる母艦PCが必要だ。僕の場合はSDカードサイズのマウンタを使ってノートPCのSDカードリーダーに接続した。

母艦PCでインストール準備

Raspberry Pi向けのOSであるRaspbianのイメージをダウンロードし(NOOBSではない)、フリーソフトのEtcherでmicro SDカードに焼く。Raspbianはトラブル対処の自信がある人だけがLiteを選んで良い。Etcherはマルチプラットフォーム対応だがUbuntu16.04で使ったところmicro SDカードを認識しなかったのでWindows10で焼いた。どうしてもUbuntuでやりたい人はイメージファイルを焼く別のソフトを探す必要がある(いくらでもありそう)。焼き終わるとmicro SDカードが(論理的に)取り出されるので物理的に取り出して再挿入する。デバイス名がbootになっているはずだ。

ssh接続を有効にするためboot直下にsshという名の空のファイルを作る。Windowsのメモ帳で作ると勝手にssh.txtになってしかもエクスプローラ上ではsshと表示されるので注意。次に同じくboot直下にwpa_supplicant.confを作る。中身は参考リンクのものをコピペして編集する。これによって自動でwifiに接続するようになる。

Raspberry Piでの作業

micro SDカードを母艦PCから取り出しRaspberry Piに挿入する。その後電源をつなぐ。micro USBが刺さる端子は2つあるがPWRの方だ。緑色のランプが点灯し、Raspberry Piが起動する。

母艦PCからssh接続

母艦PCでターミナルを開きssh pi@raspberrypi.localと打つ。ここまでの手順に間違いがなければssh接続が成功し、パスワードを聞かれる。パスワードはraspberry

大抵なんか間違ってるよ

でも素人は大抵sshで名前解決ができないとか接続拒否とか出る。そのときはRaspberry Piの電源を抜き差ししたり待ったりする。それでもダメならsshファイルを作るあたりから見直す。

繰り返す後悔

※この記事は友人宅で色々酒を飲みまくって書かれた

↑最近飲み過ぎかもしれない。

毎週日曜の夜に「この休日も掃除できなかった…」と後悔している。

週末日高屋

終業後に映画を見て帰りたかったので時間を持て余していたところ、日高屋で飲みが発生して面白かった。『プロメア』楽しかったです。

evdevを消してパソコンを漬物石にして直した/デジタル断捨離

※この記事は『のどごしZERO』を飲んで書かれた。

↑所詮発泡酒だが『ぐい麦』に比べればはるかにマシ。甘い香りがある。

Ubuntuでマウスやらキーボードやらを使うときはlibinputとかevdevがドライバとして動いている。それを消すとどうなるかというと、マウスもキーボードも使えないのでログイン画面で詰む。

発端はマウスの不調(体感)だ。カーソルが跳ねたり動きが鈍かったりということがなんとなく増えた気がしていたが、たまに起きるだけだから測定も原因特定もできずにいた。でも何か対策っぽいことをせずにはいられずにドライバ周りをいじっているうちにうっかりevdevを消したままrebootをかけてしまったらログインできなくて詰んだ。

sshでコマンドを実行できないかとか、リカバリーモードなら起動できないかとかいろいろ案はあったが、どれも成功せず(sshはsshdがないからだがなぜリカバリーモードに入れないのか)結局SSDをバックアップしたうえでUbuntu18.04を再インストールした。

一応バックアップはしたが設定は自力で再調整するのが楽しいし、作業用の環境なんかはほとんどクラウドにあるので何も輸送する必要はないかもしれない。いい時代だ。

よく喋った

※この記事は『ぐい麦』を1.5本飲んで書かれた。

↑0.5本分同僚に飲ませてフィニッシュ。

今は黙々とプログラムを書くのが仕事だが、今日は昼食・帰り道・帰宅後によく人と喋った。雑談の中にふと人となりが現れるのは面白いし、真剣な話の中でまっすぐに意見をぶつけ合うのも面白い。もしかしたら僕は人間が好きかもしれない。

東銀座の風と汐留の光

※この記事は『プレミアムモルツ』を飲んで書かれた。

今日は東銀座のスープカレー屋『イエロースパイス』でランチを食べた。のんびり歩いていると春の気持ちいい風がゆっくり吹いてきて、太陽の光も柔らかく、幸せな気分になった。

夜は同僚と飲んで汐留から帰った。汐留シティセンターの地下に潜る階段の前に立つと、目の前には広大な半地下空間が、そして目線を上げると高い高いビルがあり、一つ一つの窓から照明の青白い光が漏れていた。

これだから東京は面白い。

財テク/初のOSSコミット/オイスターソース舐め妖怪で学ぶ共変・反変

※この記事は『BREWDOG INDIE』を飲んで書かれた。

財テク

最近はお金のことばかり考えている。どのような税金が引かれているのか、確定拠出年金はやるべきか、学生納付特例で払わなかった年金は追納すべきか、貯金は普通預金か投資信託か。正しい戦略を立てないとこれからの人生で大きなロスをしてしまうという危機感がある。

なおこの記事やリンク先の記事の正しさは保証しない。その能力が僕にないので。

確定拠出年金

やる。今年は様子見で小さい額にしたが、来年からはできる最大額を突っ込むつもりだ。自分で運用するのと大きく違うのは節税効果であり、確定拠出年金への拠出は所得控除の対象となり課税されない(所得税住民税)。拠出した額の3割くらいの節税になる。

年金の追納

やらない。年金制度が現状維持すると仮定してもそれほどインパクトのあるメリットは出てこないし、現状維持できるとも思えない。

あてにしちゃダメって言われても年金天引きされてるんですが…

以下参考。お金の話ではポジショントークではない文章を探す方が難しく信頼性の低い記事だが、知識のない僕が自分で考えるよりはマシだった。

貯金

運用は投資信託を考えているが、これは長期的にやるものであっていつでも引き出して生活資金に充てられるものではない。調べていくうちに生活防衛資金という言葉を知った。とりあえず貯金用の普通預金口座(元本割れがなくいつでも引き出せることが重要)を作り、そこに月収の6ヶ月分の貯金を作れたら余剰金で投資信託を始めようと思う。6ヶ月分というのは感覚で決めたが、歳を取って健康のリスクが増大したら増やす必要があるだろう。

初のOSSコミット

Dota2の情報サイトにOPENDOTAというのがある。オープンソースだ。そこに日本語訳の不十分な箇所や間違っている箇所があったのでプルリクエストを送ったところ、すんなりマージされた。日本語話者にとって翻訳の修正というのは最も手っ取り早くOSSに貢献できる方法だろう。機能面でも改善できる箇所があるのでこの調子でやっていきたい。

オイスターソース舐め妖怪で学ぶ共変・反変

普通のソース焼きそばに飽きてきたのでオイスターソース焼きそばを作ろうと思ってツイートしたら、ゆーちきプロから怪文書が送られてきた。

これはプログラミングにおける共変という概念だ。「A <: B」はAがBを継承していることを表す。大雑把に言えばAの代わりにBを使えるという意味だ(実際はこの文脈ではオイスターソースはソースの下位分類ではないが、それは忘れよう)。横棒は上ならば下という前提条件を表す。

さて、上記ツイートは妥当だろうか。つまりソースの種類と、それを使った焼きそばは共変だろうか。(なんでもいいから)ソースを求められた場面でオイスターソースを使うことはできる。何でもいいからソースがかかった焼きそばを出せと言われたときにオイスターソース焼きそばを出してもまあいいだろう。だから共変。

反変という概念もある。オイスターソースがソースを継承しているという前提条件はそのままに、オイスターソース舐め妖怪とソース舐め妖怪の関係を考えてみる。

  • オイスターソース舐め妖怪はオイスターソースだけ舐めることができる
  • ソース舐め妖怪はソースならなんでも舐めることができる

このとき、どちらがどちらの代わりになれるだろうか。もちろん「ソース舐め妖怪がオイスターソース舐め妖怪の代わりになれる」が正しい。つまりソース舐め妖怪はオイスターソース舐め妖怪を継承している(と解釈して問題が生じない)。

オイスターソース <: ソース
---------------------------
ソース舐め妖怪 <: オイスターソース舐め妖怪

前段と後段で継承関係が入れ替わるのだ。

本質はなにか。オイスターソース焼きそばは客にソースの情報を提供する側だが、オイスターソース舐め妖怪はソースの情報を受け取る側。たぶんそういうことだと思う。具体例をつかってイメージするのは大事。

今日の日記長すぎない?