yiskw note

機械学習やプログラミングについて気まぐれで書きます

【Python】特定の行だけBlackによるコード整形を行わないようにする

概要 PythonのPEP8準拠のコードフォーマッターとして、Blackが有名です。 Blackは、他のフォーマッターよりもカスタマイズ性が低く、制限が多いです。 その代わり、コードの書き方が統一されるので、細かい書き方で議論したり、悩んだりする必要がなくなり、…

【Python】定数管理のための、値の追加・変更を不可にするクラスを実装する

概要 機械学習の実験を回していると、しばしば複数の定数を管理したくなることがあります。(例えば、実験を回すマシンごとのデータセットのパスなど) Pythonでは、他のプログラミング言語のconstのような定数がサポートされていません。 PEP8の慣例に従って…

【numpy】特定の範囲だけにseedを設定する

概要 最近、numpyの配列をとある方法でシャッフルする関数を実装していたのですが、 与えたseedの値によってシャッフルの仕方が固定されるようにしたいと考えていました。 np.random.seedをシャッフルの処理の前に挟んでやれば、必ず同じシャッフルの仕方に…

【Linux】ハイフンから始まるファイルを指定する

上記のようにterminal上で、ハイフンから始まるファイルを指定して、何かしらの操作をしようとすると、上記のようなエラーが出てしまいます。 これは、ハイフンから始まるファイルが、オプションとして認識されてしまっているためです。 解決方法はシンプル…

【Python】boxに公開されているデータを一括ダウンロードする

概要 行動認識などの動画データセットは、youtubeから動画をダウンロードするのが一般的ですが、 稀にboxなどで提供されていることがあります。 軽量なファイルであればweb上で一括ダウンロードが可能なのですが、動画などのサイズが大きいファイルがあると…

【Python】Factory / Factory Method / Abstract Factory の違い

概要 今回は、オブジェクトの生成方法に関するデザインパターンである、 Factory パターン、Factory Method パターン、Abstract Factory パターンの違いについてまとめました。 これらは混同やすく、自分も違いをしっかりできていなかったのですが、 最近や…

Rustコードの基礎を勉強するための演習ができる rustlings

概要 最近Rustの勉強をしていて色々と調べていたところ、rustlingsというものを見つけました。 rustlingsは、Rustコードの読み書きに慣れるための小演習を行うことができるツールです。 実際に使ってみて非常に良かったので、簡単にですが使い方などについて…

Weekly Digest #1

最近忙しく、ブログなどを更新する余裕がなく、アウトプットの量がめっきり減ってしまいました。 このままでは良くないと思い、週一回のペースを目標に細々とアウトプットできればと思っております。 そこで簡単ではあるのですが、その週に自分が読んだ記事…

【Python】MonkeyTypeを活用して型アノテーションを自動で追加する

MonkeyTypeとは 今回は、Pythonの型アノテーションを自動で付与するMonkeyTypeを使用してみました。 MonkeyTypeは、実行時の引数や返り値の情報から、自動でスタブファイルを生成したり、型アノテーションを追加してくれるライブラリです。 ※ スタブファイル…

MacデフォルトのTerminalからAlacrittyに乗り換える

概要 これまでMac純正のターミナルを使用していましたが、異なるMac間での設定の統一が面倒だと感じ、Alacrittyを導入してみました。 AlacrittyはRust製のターミナルエミュレータで、設定をyamlファイルに書くことができ、設定の共通化が用意です。 他にも動…

tmuxのステータスラインをいい感じにする

概要 今回はtmuxのステータスラインをいい感じにしてみたので、その手順についてメモを残しておきます。 具体的には以下の情報が表示されるようにステータスバーを変更しました。 現在のセッション / ペイン / ウィンドウのインデックス prefixが押された時…

【Python】1行で複数の変数に同時に値を代入するのは遅い

概要 ネットでPythonの記事を読んでいると、以下のような1行で複数の変数に同時に値を代入する方法が速いという記事を見かけました。 a, b, c = 1, 2, 3 こちらについてちょっと怪しいなと思い、速度の比較、及び速度差の原因について調査してみました。 結…

【Python】プログラムの終了時に実行する関数を登録できるatexit

概要 今回はPythonの標準ライブラリであるatexitについて調べてみました。 非常に便利なライブラリですが、あまり日本語の情報がなかったので、こちらにメモを残しておきます。

【Python】list / array / numpy.array を比較してみた

概要 最近、Pythonの標準ライブラリにarrayというデータ型があるのを知りました。 今回は、このarrayの勉強も兼ねて、Pythonのlist、arrayとnumpy.arrayの3つを速度、メモリの観点から比較し、それぞれの使用用途について検討してみました。 その結果を備忘…

fzfでCTRL+Rなどのショートカットが機能しない

概要 yiskw713.hatenablog.com 私はこちらの記事で紹介したコマンドライン曖昧検索ツールであるfzfを愛用しているのですが, ふとある日を境にCTRL+RやCTRL+Tのようなショートカットが使えなくなってしまいました. 原因 こちらについて調査していたところ,…

【Python】wemake-python-styleguideでコードを厳しくチェックする

概要 Pythonのlinterであるflake8を用いることで,コードの品質を担保するために静的解析を実施することができますが, 今回はそのflake8のプラグインであるwemake-python-styleguideというものを使ってみました. 公式ドキュメントによると, Welcome to th…

【Python】__main__.pyを理解する

__main__.pyとは Pythonでは__main__.pyというファイルを定義することで, python -m <MODULE_NAME>を実行した際の挙動を定義できるようです. ※ -mオプションはモジュールをスクリプトとして実行するオプション 例えば以下の例を見てみます. ディレクトリ構造 . ├── mod</module_name>…

【Python】リストから大きい/小さい順にn個の要素を取り出す

Pythonの標準ライブラリであるheapq.nlargest / heapq.nsmallestを使用することで, リストから簡単に大きい/小さい順にn個の要素を取り出すことができます. import heapq import random a = [random.randint(0,1000) for _ in range(10)] print(a) # [326,…

【Python】変数の型以外のメタ情報をアノテーションするtyping.Annotated

はじめに 今回はtyping.Annotatedを用いて,変数に型以外のメタ情報もアノテーションする方法について調べたので,こちらにメモを残しておきます. こちらを使うことで,より可読性の高いコードが書けるようになります typing.Annotatedとは typing.Annotate…

プロセスの表示をカラフルにわかりやすくするprocs

はじめに 今回はpsコマンドの改良版で,プロセスの表示をカラフルにわかりやすくするprocsを使用してみました. procsは表示をわかりやすくするだけでなく,プロセスの検索なども容易に行うことができ,非常に便利です. procsの使い方や設定方法について,…

【Rust】bit全探索を実装する

はじめに RustでABC125 B - Resaleを解いていて,bit全探索を実装する方法がわからなかったので,こちらにメモを残しておきます. bit全探索を実装する bit全探索については,以下の記事が非常にわかりやすいので,こちらをご参照ください. たのしい探索ア…

Nerd Fontを使用するとアップルマーク が表示されない

ターミナルにNerd Fontを導入した際に,アップルマーク が表示されなくなってしまいました. github.com こちらのIssueでも特に解決策が書かれていなかったので,色々調べていたところ, Nerd Font内にもアップルマークが用意されているようでした. www.n…

lsコマンドの改良版であるexaでファイル一覧をカラフルに表示する

はじめに lsコマンドの改良版であるexaを使用してみました. exaはRust製のツールで,カラフルにファイルの一覧を表示することができます. またNerd Fontとともに使用することで,アイコンの表示も可能です. 今回はexaの設定方法と,使い方に関してこちら…

treeコマンドの改良版であるtreを試してみた

はじめに treeコマンドの改良版であるtreを使用してみました. treはRust製のツールで,treeをより使いやすくしたものです. ツリー構造をカラー表示してくれるだけでなく,ファイルやディレクトリの横に表示されている番号を指定することで, 自身が使用し…

ターミナルでコマンドを間違ったときに修正してくれるThe Fuck

はじめに プログラマーなら誰しもターミナルで作業しているときに,コマンドを打ち間違ってしまい, 「くそ!」っと思った経験があるかと思います. そんなときに役立つツールとして,The Fuckというものを見つけたので,ご紹介します. (あまり良くないタイ…

【Rust】ベクタ型の要素を右/左にシフトさせる rotate_right / rotate_left

はじめに RustでB - String Shiftingを解くにあたり, ベクタ型の要素を右 / 左にシフトさせる方法について調べたので,こちらにメモを残しておきます.

【ONNX / PyTorch】機械学習モデルをグラフィカルに可視化するnetronを使ってみた

はじめに 機械学習モデルの可視化できるライブラリであるnetronを使用してみました. netronでは,ONNX,Keras, TensorFlow Liteなどのモデルの可視化を行うことができます. また実験的な段階ですが,PyTorchやTensorFlow,scikit-learnなどのサポートもし…

cdコマンドの改良版であるzoxideを使ってみた

概要 linuxコマンドのcdの改良版であるzoxideを使ってみたので,こちらにメモを残しておきます. zoxideを使うことで,頻繁に使用するディレクトリに高速に移動ができるようになります. 過去にその他のツールについてもまとめておりますので,良ければご参…

はてなブログのカスタムURLを使用したら記事のインデックス率が下がった

題名の通り,はてなブログの記事のURLを,カスタムURLにしたところ,記事がインデックスされる確率が下がりました. 結論としては,デフォルトの日付を使用したURLに戻すことで,元通り記事のインデックスがうまくいくようになりました. とある記事で,「カ…

【OpenCV】画像からマウスでバウンディングボックスを選択して保存する

概要 最近機械学習モデルの学習用に画像データを収集しているのですが, その際,画像に写っている物体のみを切り取って保存したい状況がありました. 今回はこちらをOpenCVを使用して実装してみたので,メモを残しておきます. 今回実装したコードはこちら…