Pythonのdataclassesでhashableなインスタンスを作るクラスを定義する

Pythonでコレクションを扱っていると、ハッシュ可能なオブジェクトの使用を求められることがままある。 例えば、辞書のキーはハッシュ可能なオブジェクトでないといけないし、集合の要素もハッシュ可能でなければならない。 これはコレクション内部のアルゴ…

Pythonの集合同士の差分を取るときに陥った落とし穴を記録しておく

WEBから取ってきたデータと既にDBに入っているデータの差分を取りたいと思うことがある。 辞書 最初は、辞書でデータを扱っていたとしよう。 companies_in_web = [{"cid": 0, "name": "Toyota"}, {"cid": 1, "name": "Nissan"}, {"cid": 2, "name": "Honda"}…

Shadow Tacticsという死にゲー

一体、何回死んだだろうか。 バレないと思って脇を横切ろうとしたところを発見され、なぶり殺しにされる。 見られてないと高をくくってやった殺しを目撃され、逆襲を受ける。 気づきもしなかった町人にチクられて、思わぬリンチを食らう。 数えきれないほど…

Rの自作パッケージ内で依存パッケージを読み込む方法(Rで顔文字演算子)

R

今回はRで顔文字演算子を作ることができる話...ではなく、Rの自作パッケージ内でどうやってパッケージを読み込むかについての話である。 Rでパッケージを自作していると、自作パッケージ内で依存パッケージをどのように読み込むかという問題に当たる。 例え…

カリー化した関数に型ヒントを与える

Pythonの型ヒントに慣れるために、カリー化した関数に型ヒントを与えるというタスクをやってみる。 ちなみに、カリー化とは、複数の引数をとる関数を、一つの引数だけをとる関数のチェーンに変換する操作のことである。 以下、簡単なカリー化の例(Python)…

Pythonでの雑でガバっとした例外処理

定期的に動かすので、ある程度きちんとプログラムを書かないといけないけど、そんなに丁寧に例外処理を書いている余裕はないぞというケースがある。 そういう時、実行スクリプトでは、このように雑に例外処理を行うことが多い。 こうしておけば、とりあえず…

Pythonのloggingで独自ハンドラを作りたいとき

Pythonのloggingを利用していると、独自のハンドラを作りたくなるときがある。 そういう時には、すでにloggingに定義されているハンドラのコードを参考にすることができる。 例えば、logging.handlers.SMTPHandlerは下記のように定義されている。 https://gi…

超能力アクションゲーム・Control雑感

空中浮遊したさに気にはなっていたが、去年の暮れに日本語字幕版が発売されたということで、このタイミングでDLしてプレイしてみた。 controlgame.marv.jp このゲームはストーリーを楽しむものなのだろうと勝手に思い込んでいたのだが、やってみると戦闘でな…