自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

  • UbuntuでNvidiaのドライバーをインストールする

    ubuntuにNvidiaグラフィックボードを搭載した時、ドライバーのインストールで詰まったので、まとめておく 【基本】推奨のドライバーをインストールする。 ubuntu-drivers devices NvidiaグラフィックボードをPCに挿し込んだ状態で、上記コマンドを実行する。 以下のように出力がされると思うので、recommendの表示があるドライバーをインストールする。 この場合 driver : nvidia-driver-570 - third-party non-free recommended ここから、nvidia-driver-570 ...
  • Djangoでサーバーのウェブカメラを使ってライブ配信、クライアント側からON・OFF操作

    【Django】任意のタイミングでサーバーのカメラでライブ配信する【imutils.video.VideoStreamer】 ここで、クライアント側からサーバーのウェブカメラの電源をON/OFFできるようにしたが、コードがやや煩雑でわかりにくい。 不要な処理も含まれていたため、まずはサーバー側にあるウェブカメラの映像をブラウザに表示・非表示できるようにした。 ビューのソースコード 要になるビューのソースコ ...
  • デバウンスしてキー入力の度にイベントを発火し続けないようにする【再レンダリング地獄対策】

    ReactはStateの変化で再レンダリングをする仕様である。 Stateの高頻度な変更は、再レンダリングを頻繁に発生させ、表示が遅くなると言った問題が起こる。 この問題を防ぐためにも、キー入力の度にStateを書き換えるのではなく、最後のキー入力が終わって1秒経ってからStateを書き換えるという仕様に仕立てる。 このしくみをデバウンスという。 このデバウンスのしくみはsetTimeoutの操作で簡単に ...
  • Pythonで画像認識AI(深層学習)の速習をするためのメモ【pytorchで画像認識学習・推論のサンプルあり】

    急遽AI開発(特に画像認識)が必要になったため、それに必要な用語や概念的なものをまとめる。 ほとんどがChatGPTの受け売りである。自分用にまとめたのでかなり雑であることをお許しいただきたい。 そもそも機械学習と深層学習の違いは? なんとなくだったため、この際はっきりさせる。 機械学習 簡単な表データを学習して推論したい場合、機械学習が有効。 データ量は数千〜数万件単位でOK。特徴量の設定は手動で行う必要が ...
  • 【Django】DBの保存(投稿と編集)、削除に対して任意の動作をする【signals】

    モデルの保存時、削除時に任意の動作をしたい時、モデルのsaveメソッドをオーバーライドするなどで対応できる。 DjangoでDBへデータ格納時(save)、削除時(delete)に処理を追加する【models.py、forms.py、serializer.pyのメソッドオーバーライド】 ただ、別のモデルに対しても同じ処理を実行したい時、モデルの外部で処理をしたい場合などでは、singalsを使う。 実装 ...
  • Pythonで処理速度のボトルネックを特定する

    Pythonの高速化には、ボトルネックの特定と改善が必要。 本記事ではボトルネックの特定をする。 関数の処理速度を調べるデコレータを用意する 以下のコードの関数をデコレータとして使うことで関数の処理時間を調べることができる。 from functools import wraps import time def timefn(fn): @wraps(fn) def meassure_time(*args, **kwargs): start = time.time() result = fn(*args, **kwargs) print(f"@timefn デコレータより {fn.__name__} : {time.time() - start} 秒") return result return meassure_time try_count = 10000000 @timefn def create_numbers_for(): numbers = [] for i in range(try_count): numbers.append(i) create_numbers_for() このtimefnはデコレータとして機能する。 def timefn(fn): @wraps(fn) def meassure_time(*args, **kwargs): start = time.time() result ...
  • Python非同期プログラミングのルール

    非同期プログラミングには守るべきルールがある。 同期プログラミングと同じように作るとエラーが出るため、ルール・作法をここにまとめる。 非同期処理のルール一覧 I/Oバウンドな同期処理は非同期処理にする 非同期関数を定義するには、async def 非同期関数を実行するには、await 同期関数から非同期関数を実行するには、 asyncio.run() 非同期関数をまとめて実行するには、 asyncio.gather() 同期関数を非同期化させるには、@sync_to_asyn ...
  • FastAPIでDjangoのORMを使う

    Djangoの処理の一部をFastAPIで分離、FastAPI内でDjangoのORMを使ってDBの読み込みをする。 実装方法と手順 FastAPIでDjangoの設定を読み込み Djangoのモデルをimportする sync_to_asyncデコレータでラップされた関数内でモデルを使う モデルオブジェクトをそのままreturn してはいけない。 FastAPIでDjangoの設定を読み込み まず、FastAP ...
  • AI実装検定A級のメモ

    AI概論 AIのコンペ(ILSVRC)とAIの歴史 ILSVRC という画像認識の精度を競い合うコンペがあり、2012年の大会でディープラーニングが有用であると認識されるようになった。 2011年付近まではサポートベクターマシン(SVM)という手法が上位であったが、2012年にはAlexNetという手法が登場。これが従来のニューラルネットワークを元にして作られた、深層ニューラルネットワーク、ディープラーニングである ...
  • 非同期リクエスト vs マルチスレッドリクエスト vs 直列リクエスト

    先の記事でI/Oバウンドの処理は、非同期処理が最適であるとわかった。 本記事では、それがはっきりとわかるコードを用意した。 非同期で大量のリクエストを送信し、レスポンスを受け取る。その処理時間を計測する。 比較のため、マルチスレッド、直列動作のコードも用意した。 使用ライブラリ pip install aiohttp requests fastapi uvicorn aiohappyeyeballs==2.4.4 aiohttp==3.11.11 aiosignal==1.3.2 annotated-types==0.7.0 anyio==4.8.0 async-timeout==5.0.1 attrs==25.1.0 certifi==2024.12.14 charset-normalizer==3.4.1 click==8.1.8 exceptiongroup==1.2.2 fastapi==0.115.7 frozenlist==1.5.0 h11==0.14.0 idna==3.10 multidict==6.1.0 propcache==0.2.1 pydantic==2.10.6 pydantic_core==2.27.2 requests==2.32.3 sniffio==1.3.1 starlette==0.45.3 typing_extensions==4.12.2 urllib3==2.3.0 uvicorn==0.34.0 yarl==1.18.3 非同期リクエストには、aiohttp を使う。通常の requests では非同期リク ...