Xiaomi Smart Band 7で水泳?/川口まちこうば芸術祭2023/GoでMySQLで文字列検索/dockerコンテナ内からホストにアクセスできない

Xiaomi Smart Band 7で水泳?

僕はXiaomi Smart Band 7を使っている。健康診断で心拍が多いと指摘を受けたときに病院でスマートウォッチを勧められて買った(なんでもなかった)。スマートウォッチ界の低予算部門のスターのような製品だ。心拍は一応そこそこ正しい値が取れる。歩数は実際の19%増しくらいの値になる(数えた)。

先日初めて水泳の測定に使ってみた。Workout > Swimmingで水泳モードに入れる。水泳モードでは水で画面が傷まないように(?)画面表示がデフォルトでオフになる。画面を操作するためには画面を↑↓と繰り返し撫でる必要があるが、水がノイズになってなかなか入力に成功しない。泳ぐプールの長さを入力することができ、休憩やターンを自動で検知して今何往復したのかを記録してくれる。泳いでいるとカウントがわからなくなるのでこれは助かる。そこそこ正確だ。ストローク数も取れる。

水泳モード中は心拍数の計測が止まる。水中では光学式心拍測定の信頼性が低いから取っても意味ないってことなのかな。水泳モードにしなければ心拍数は取れるらしい。

川口まちこうば芸術祭2023

こんなイベント。
https://www.kawaguchicci.or.jp/kawaguchifaf/

やってたので見てきた。金属加工を使った家具やおもちゃ、芸術品などが展示されていた。特に新光ステンレス研磨による時計は特殊研磨によって美しく妖しく光り輝いていて欲しくなっちゃったが(買える)、さすがに高かったので諦めた。

GoでMySQLで文字列検索

愚直に

db.Query("SELECT * FROM status WHERE text LIKE '%?%' ", includedText)

みたいに書いたんだけど?がplaceholderとして扱われずincludedTextが入らなかった。なんか調べてみたら
https://graff-it-i.com/2021/06/24/golang-mysql-like/
こういう話があって

db.Query("SELECT * FROM status WHERE text LIKE CONCAT('%', ?, '%') ", includedText)

CONCATでやるらしい。へぇ〜。

dockerコンテナ内からホストにアクセスできない

今作ってるアプリケーションのコンテナから、同じサーバーに乗っているmstdn.chao.tokyoにアクセスしようとしたらconnection refusedになってしばらく頭をひねっていた。コンテナ内でdig mstdn.chao.tokyoすると127.0.0.1に解決されていた。本来ならグローバルIPが引けるはずなのに、これはおかしい。

ホストの/etc/hostsに127.0.0.1 mstdn.chao.tokyoが書いてあるせいだった(たぶん以前動作確認のために書いた)。理屈はよくわからないがコンテナ内からの名前解決でもホストの/etc/hostsが読まれてしまうことがあるようで、コンテナ内から127.0.0.1に解決されるので、コンテナ自分自身にアクセスが戻ってくる。コンテナ自身の443ポートは開いてないのでconnection refusedになったわけだ。

https://qiita.com/tksugimoto/items/804e0051bf1b1ddab168
この記事によるとホストの/etc/hostsはコンテナ内の名前解決に影響を与えないとのことだが、僕のサーバーはnginx-proxyを活用するために結構変なdocker networkが立っているのでその影響があるのかもしれない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です