「時間抽象化」ってパッと見なんのことかわかりませんでしたが、DateTime.nowとか時関係の実装のテストで困るやつの対応なのですね。おおっ、それはうれしい。
まだ公式ドキュメントには使用例とかがほとんど無くてちょっとわからないのですが、どうやら使うには結局新しい"TimeProvider"クラスを使うように既存の実装を書き換えねばならないみたい。時間係の実装のUnitTest対策としては正攻法でしょうが、MSがやるなら一歩突っ込んだ実装も期待したかったです。
「時間抽象化」ってパッと見なんのことかわかりませんでしたが、DateTime.nowとか時関係の実装のテストで困るやつの対応なのですね。おおっ、それはうれしい。
まだ公式ドキュメントには使用例とかがほとんど無くてちょっとわからないのですが、どうやら使うには結局新しい"TimeProvider"クラスを使うように既存の実装を書き換えねばならないみたい。時間係の実装のUnitTest対策としては正攻法でしょうが、MSがやるなら一歩突っ込んだ実装も期待したかったです。
最近、自分のMacBook Pro(16inch 2019)が動作がモッサリしてきた気がしていた。アクティビティモニターで見るとkernel_taskがCPUを食っているようだ。ググったら、どうもCPU高温ぽい。季節的に暑くなってきたせいもあるのかな。下の記事「MacBook Pro 2019 16インチ 裏蓋の外し方 ファン掃除の方法」を参考にさせていただいて、MacBook Proの蓋を開けてファン掃除した。
今使っているMacBook Proは買ってから蓋を開けたことなかったのですが、開けてみたら、やはりファンがホコリまみれでした...。
上の記事を参考にして開けられましたが、見てなかったら開けられなかったかも。ちょっとコツがいります。
[edit 2023/12/06]
MSのBing Chat改めCopilotに聞いたら、最初エラーになるコードだったのですが、エラーメッセージを教えたらちゃんと直してくれて、こんなコード書いてくれました。
import polars as pl # データフレームを作成 df = pl.DataFrame({ "col1": [1, 2, None], "col2": [None, None, None], "col3": [None, 4, 5] }) # 全ての値がnullの列を削除 df = df.drop([col for col in df.columns if df[col].is_null().all()]) print(df)
[edit 2023/07/11]
この記事、元は違うやり方で書いたのですが、本家のDataFrame.drop_nulls()リファレンス
polars.DataFrame.drop_nulls — Polars documentation
に、全てnullの列を削除するコード例があって、それを真似たやり方だとこんな感じです。こっちの方が意図がわかりやすい。
# 全てnullの列を削除 def drop_null_columns(df): return df.select( [col.name for col in df if not (col.null_count() == df.height)] ) df = ... df.pipe(drop_null_columns)
[当初書いたやつ]
Pandasだとこんな感じのことをしたい。
df.dropna(how='all', axis='columns')
Polarsではズバリのメソッドは無いみたい。なのでこんな感じかな。
# 全てnullの列を削除 # 参考サイト # https://stackoverflow.com/questions/75446886/selecting-columns-based-on-a-condition-in-polars # https://stackoverflow.com/questions/74295124/polars-selecting-all-columns-without-nans def drop_null_columns(df): return df.select( [col.name for col in df.select(~pl.all().is_null().all()) if col.all()] ) df = ... df.pipe(drop_null_columns)
Pandas 2.0来た! 自作コードでPandas使っているところを2.0を使うようにしよう!
What’s new in 2.0.0 (April 3, 2023) — pandas 2.1.0.dev0+1270.gaf76d785cc documentation
と思って調べていたところ、Pandasと同じようにDataFrameを扱う「Polars」が良さそうに思えてきたので使ってみた。
この辺りなど参考にさせていただきつつ使ってみた。
使ってみたところ良かったので、自作コードでこれまでPandasを使っていたところはPolarsに移行することにした。自分が使っている範囲ではPolarsで置き換えられそう。スピードも速いぞ。Pandasよりコードが短くシンプルになる場合もあるけど逆の場合もある。でも、私がPandasに感じていた「The Zen of Python」の特に "There should be one-- and preferably only one --obvious way to do it." の真逆を行っている感。それがPolarsではだいぶ緩和される。Pandasは同じことをやるのに異なる方法がありすぎると思う。あとPandasのIndexはPolarsには無くて最初"え〜無いのぉ〜"と思ったけど、結局私が使っている範囲ではIndex無くても別に平気だった。
Polarsでちょっと残念だったところは、read_csv()は複数csvファイルをワイルドカードで読み込めるのにjson用のread_ndjson()には同様の機能が無かったところ。 scan_ndjson()のほうはファイル名にワイルドカード指定で複数 jsonファイルが読めました。
Polars使ってみたら良い感じ。今後はPolarsを使っていこう。
ラズパイのOSを今時のbullseyeにしたい。64bit化もしたい。参考になるサイトを探しまくって、いざ実行だ。
今回は別のSDメディアを用意してクリーンインストールする。 こちらなどを参考にやった。 Raspberry Pi OS Lite(64-bit) ヘッドレスインストール(bullseye編) - Qiita
早速sshでつなごうとして、こちらと同じ現象になるので参考にして解決できた。 https://www.niandc.co.jp/sol/tech/date20150729_507.php
SSHは鍵認証にしたい。またまた参考になりそうなところを探してやったらできた。公開鍵のコピーはssh-copy-idを使うのが便利だが、それ知らないで普通にググると公開鍵ファイルをscpでコピーする方法でやっちゃうね。ssh-copy-idを使うのが普及すると良いのですが。あと/etc/ssh/sshd_configでパスワード認証を止めておきます。 [ssh] 公開鍵認証を使って RaspberryPi4 に ssh 接続する - Qiita
ラズパイ上でPythonでpandasを使っているのですが、pandasはpipじゃなくaptで入れた方が良さそう。 ラズパイにpandasをインストールする方法 – 半力投球
他力本願でコンプリート!
Win32 Disk Imager RenewalのREADME、長いぞ。ちょっと面白い。あなたは最後まで読み切れるか。