pip installでlibclang.dylibが見つからない

環境構築をしているときに

pip install pymupdf

をする必要ができたのだが、ここでエラーが発生してしまった

エラーメッセージを眺めるとlibclang.dylibが見つかりませんと。。。
Xcodeは使っていないけど一応インストールはされている。
homebrewでもllvmをインストールしていたはずだが?
と思ったけど、そういえば今の仕事用PCではそれ以上何もしていないかも?

とりあえず何もしてなくても問題なく動けやというのが本音ではあるが、

  1. homebrewでインストールしたclangの方が優先されるようにPath設定
  2. DYLD_LIBRARY_PATHを設定

までやってみたが、やっぱりnot foundのまま。
仕方なくエラーメッセージを更に詳細に見ると、
確かにlibclang.dylibを探したディレクトリには存在しない。

というわけで、

sudo ln -s /opt/homebrew/opt/llvm/lib/libclang.dylib /opt/homebrew/lib

を実行したら無事にpip installができた。

重力渦式小水力発電

https://messe.nikkei.co.jp/files/EP4250/7-201610191643350545.pdf

佐々木明選手のFacebookで知った
そんなものがあるんですね。環境への影響を抑えて発電できると
効率とかどうなんでしょうね?というわけで自分で調べずにBing Copilotにお願いした

流石にそんなうまい話はなく、既存の水力発電を置き換えるような能力はないらしい とは言え、環境に負荷を掛けずに分散していくつも設置できるって話だと面白くなる?

pytest-xdist

当然ながらテストが増えるごとにテスト時間が増加していて困っていた
そもそもテストはそれぞれ独立しているので並列実行すればいいではないか!
ってことでググってみたらpytest-xdistを発見

pypi.org

pyproject.tomlにオプション指定したら既存コマンドでそのまま並列実行できるのはありがたい
先週見ていた記事は見つからなかったけど、ググったらこんなんでてきた

qiita.com

査読

gigazine.net

査読はほとんどやったことはないけど、最初の職場では不定期に回ってきていた
で、↑の記事をぼんやり読んでいて

  • 人間が論文執筆→AIが査読
  • AIが論文生成→人間が査読

両方AIって話は既にありそうだし、なんとなく片側人間パターンを考えてみた
後者の人間が査読するのってなんとなく仮想通貨の採掘っぽい???
AIが査読って結局「信頼性」の話でなかなか進まない気がするけど後者はなんかイケそう?

Slack画面共有 on Mac

随分前から困っていたのがSlackのハドルで画面共有できない問題
画面収録をSlackに許可すればOKとなっているけどできない
試しに一度許可を取り消して再度ってやってもダメ

というわけでサポートに問い合わせてみたら無事に解決
サポートの回答はわかりやすく、おそらくの原因と解決手順が付いていた

とりあえず解決手順を横においておいて
Slackのアプリを削除して、画面収録許可のところからSlackアプリを削除
App Storeではなく本家web siteからダウンロードしてインストール
再度画面収録を許可したら無事に解決した
どうもApp Store版のアプリを使っていると発生することがある問題らしい

ちなみに正規(?)解決手順だとアンインストール(アプリの削除)をしたあとに
追加でSlack設定ファイル周りも綺麗に一度削除する必要があったのだけど、
アプリ本体が悪いならば何とかなるのではないか?ということでそこ無視した

トリッキーなネットワーク最適化の実装ムズい

長らくNetworkXを使ってグラフ上での最短路問題を解き続けている今日このごろ。
コードが肥大化し過ぎたのでリファクタリングしている

元々はグラフ生成から各枝のコスト計算まですべて同じファイルだったけど、
ノードと枝についてのコードをそれぞれ分離中

通常(?)の枝はノードペアの情報からコストが計算できるが、
いくつか特殊な枝があって、その枝ではノードの情報が不足している
こんな枝のコストを擬似的にでも計算するために、
コスト計算可能な枝(とノード)を生成して、コストを積み上げて擬似的に計算している

この計算可能な枝の生成過程は分離元のグラフ構造全体をケアするクラスに持っているのだけど、
擬似的なコスト計算のときのみ枝のクラスで機能が欲しくなる・・・・
関数ポインタ(Pythonではなんと言うのでしょう?)使うしかないのかな

本来はすべての枝は直接的にコスト計算可能な問題設定だったのに
諸般の事情で複雑な問題設定になったせいで大変面倒な想いをしている

poetry lock が終わらん

いつのもように(?)依存しているモジュールの修正をしたので、pyporoject.tomlを修正。そしてお約束のコマンドを叩く

poetry lock --no-update

結果、resolving dependenciesが永遠と続き。ちょっと放置して戻ってきたら1000秒経ってから死んでた。エラーメッセージも何もないとわからんと思ったけど、とりあえずググったらverboseオプションがちゃんとあった。というわけで、

poetry lock --no-update -vvv

を叩いてみたら遠い昔に追加して既に使っていないモジュールが悪さをしていることが発覚。無事に解決したけど、verboseなしで調査していた時間が結構長かったお陰で結構な時間を溶かしてしまった