Posts for: #Pypi

ハンズオン資料の作成に着手

晩ご飯食べてくつろいでからまたオフィスに戻って作業してた。3時過ぎに寝て8時に起きた。寝不足のせいか、今日も夕方に眠くなって家に戻って3時間ほど寝てた。

今日の筋トレは腹筋:25x1,腕立て:10x0,スクワット15x1をした。

ストレッチ

今週もとくにお仕事で疲労や負荷はないものの、筋トレを継続しているせいか、やや腰が痛いかなといったところ。トレーナーさんによると、筋トレで筋肉痛になっていると体が硬くなるという。おそらくそのせいでやや硬めの印象になっているのだと思う。腰や太ももの前・後ろの筋に張りがあったのでこれらはスクワットの反動ではないかと思われる。今日の開脚幅は開始前152cmで、ストレッチ後157cmだった。先週と同じだ。

ハンガーラック受け取り

ジモティーで「ハンガーラック」を500円で購入した。これもコワーキングスペースで使う。この前帰ったときにジャケットを掛けるものがないと気付いた。引き取りに東灘区へ行く機会が増えてきてだいぶ道を覚えてきた。マンションの駐車場まで行って、そこでハンガーラックを受け取った。解体してくれていたので難なく荷室に積めた。丁寧な方で駐車場から車が出ていくときまでお見送りしてくれた。ジモティーだと受け渡しが終わったらすぐ帰る人の方が普通なので性格なのかホスピタリティの違いが出るなと思った。

iostat-tool のメンテナンス

日記を書こうと決めて初日に書いた内容 が iostat-tool の保守だったなと思い出した。2年半ほど前。一昨日からプルリクエストが届いていたのでレビューしたり、CI 環境の設定を更新したりしてマージした。

マージしてから 0.3.1 として https://pypi.org/project/iostat-tool/ にパッケージをアップロードした。

ファイナンシャルプランナーとの打ち合わせ

先週の続き 。17時からの予定だったが、プランナーさんの前の予定が早く終わったそうで15時半からに変更になった。お昼以降ならいつでもよいと伝えていたのでこういった調整ができてよいと思う。卓上カレンダーをお土産にもってきてくれた。今日は次のような内容を話した。

  • 人生のキャッシュフローに問題ない
  • 預貯金が多いのでもう少し運用にまわしたい
    • どういった運用があるのかノーアイディアなので提案してほしい
  • 資産形成ではなく万が一のときのための役員向けの保険を提案してほしい

先方もどうせ来るならもっと準備して来たらいいんじゃないかとも思うが、次は teams でテレビ会議にしましょうと提案した。30分の打ち合わせのために三ノ宮のオフィスまで来てもらうのも申し訳なく思えてきた。その際にメールアドレスを伝えていて「すべて小文字ですか?」と聞くのでメールアドレス (ドメイン名) は大文字小文字を区別せず、大文字でも届きますよと教えてあげたら思いの外驚かれていた。昔からある古い仕様は大文字小文字を区別しなかったりする。大文字小文字を区別しないというのは、多くのケースで百害あって一利なしだけれども、互換性のために変更することもできない。

hugo のハンズオン資料作り

先日の打ち合わせ を受けて資料作りに着手した。hugo のサイト構築やテーマ設定は一度行ったらそうそう変更することはないので久しぶりに設定したら忘れていて、これどうだったかな?とか、このフォーマットはどこからきているのか?とか、いろいろ調べて思い出しながらやっていた。

hugo は設定ファイルを yaml, toml, json で記述できる。フォーマットを複数対応するというのはよくないということに気付いた。json はみたことないけど、テーマのサンプルの設定ファイルを yaml と toml の、開発者が慣れた方を使う。そうすると、テーマのサンプルの設定ファイルを yaml で提供していて、hugo.toml でサイトの設定をしていた場合、テーマの設定を yaml から toml に変換する作業が発生する。コンテンツの markdown も toml と yaml の両方で記述できるからフォーマットの統一感もなかったりする。なによりも初心者が調べたときに設定ファイルが toml だったり、yaml だったりして混乱する。

デフォルト設定は toml になっているので hugo で yaml は使わない方がいいんだろうなと思えた。

さらに設定ファイルの名前も昔は config.toml だったのが、最近は hugo.toml に変わり、さらにどちらのファイル名でもよいという仕様になっている。こんなことになんの意味があるのかもわからない。

With v0.109.0 and earlier the basename of the site configuration file was config instead of hugo. You can use either, but should transition to the new naming convention when practical.

まずはサイト構築して github actions で github pages へアップロードする環境構築を完了した。

徐々にコンテンツを追加していく。

iostat-tool メンテ

再現調査

お昼ぐらいオフィスに行って事前に下調べしてあった iostat-tool の不具合修正をする。

前職でディスクI/Oの振る舞いを調査していたときに iostat のアウトプットを直接みてもわからないので視覚化するツールを作った。例えば、iostat -ymxt 1 のアウトプットは次のようなログになる。

06/13/2018 02:10:50 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.47    0.00    0.24    0.18    0.00   99.11

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.07    45.88    1.57    0.59     0.08     0.18   246.55     0.26  121.04    1.28  436.94   2.07   0.45
sdh               0.07    45.78    1.59    0.60     0.08     0.18   245.64     0.22  101.97    1.17  367.51   1.89   0.41
sdb               0.25    74.42    5.70    0.87     0.57     0.29   268.00     0.32   49.24   38.06  123.00   1.83   1.20
sdg               0.07    45.84    1.57    0.60     0.08     0.18   246.12     0.26  118.32    1.24  426.10   2.05   0.44
sdc               0.10    46.79    1.62    0.63     0.09     0.19   246.47     0.16   72.62   11.13  232.29   1.39   0.31
sde               0.07    45.79    1.56    0.60     0.08     0.18   246.16     0.21   98.68    1.10  351.50   1.83   0.39
sdj               0.07    45.88    1.56    0.60     0.08     0.18   245.68     0.21   95.91    1.07  341.03   1.80   0.39
sdf               0.07    45.76    1.58    0.60     0.08     0.18   245.70     0.19   85.95    1.03  308.11   1.79   0.39
sdk               0.07    46.68    1.56    0.61     0.08     0.18   247.68     0.28  128.43    1.25  455.92   2.17   0.47
sdi               0.07    45.67    1.57    0.60     0.08     0.18   244.58     0.21   96.74    1.11  344.99   1.84   0.40
sda               0.16    15.06    0.15    1.95     0.01     0.07    72.69     0.13   61.45    3.77   65.84   8.24   1.73

当時 rhel6 相当のディストリビューションで検証していた。そのため、その iostat のバージョンしかテストしてなかった。その後、時間が経って新しい項目が増えたり、同じ項目でも名前が変わったりしたみたい。vagrant で bento/centos-8 の環境を構築して man iostat や iostat のアウトプットを出力しながら確認した。

CentOS 8.3 の systat 11.7.3 のバージョンのアウトプットはこんな感じ。

09/26/21 03:35:19
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00    1.00

Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              1.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00    1.00    0.00   0.00     8.00     0.00   2.00   0.20

時刻のフォーマットが違う

これは sysstat のバージョンによるものではないけど、ロケールの LC_TIME のエンコーディング指定を変えると時刻のフォーマットが変わることに気づいた。これも en 環境しかチェックしてなかったから今回 ja でも正しく時刻をパースできるように修正した。

old: 06/13/2018 02:10:50 PM  # LC_TIME="en_US.UTF-8"
new: 09/26/21 03:35:19       # LC_TIME="ja_JP.UTF-8"

Device の軽微な変更と項目の変更

新しいフォーマットだと Device: のコロン文字がなくなってたりしてパースできなくなっていた。あと次の項目が名前変更、または新規追加されてた。

  • aqu-sz
  • rareq-sz
  • wareq-sz
  • %rrqm
  • %wrqm

基本的にパーサーをいじる必要はなくて項目の追加などで対応できた。当時、検証していたとき、作業がうまくいってなくて2-3日で突貫で作ったツールなのでパーサーはあまりきれいに実装はされていない。作った本人がみても1-2時間デバッグしながら直す必要があった。今後も iostat のアウトプットに大きな変更があるとは思えないからまぁいいかな。

generator-based coroutines の deprecated

このツールを作った当時、python 3.4 以上をサポートする必要があったの generator-based coroutines で実装した気がする。それが 3.8 以降は deprecated になっているみたい。今回保守するときにサポート対象を 3.6 以上に変更したのですべて async def で書き直せるようになった。そう急ぐ必要もないのでまた今後、気が向いたら async 周りの実装も見直しながらやってみる。覚えていたら。

Deprecated since version 3.8, will be removed in version 3.10: Use async def instead.

https://docs.python.org/ja/3/library/asyncio-task.html#asyncio.coroutine

iostat-tool 0.3.0 リリース

2018年から約3年ぶりに保守した。ついでに GitHub Actions で lint check と doctest の CI を実行するように変更した。