自動化無しに生活無し

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

  • sedコマンドで指定した範囲の行だけ標準出力をする。xselと組み合わせて部分的にクリップボードにコピー

    sed -n "開始行,終了行p" ファイル名 とすることで、指定したファイルの開始行から終了行までのテキストをそのまま標準出力できる。 そのため、xselと組み合わせ、指定したファイルの指定した範囲の行を、ワンライナーでクリップボードにコピーできる。 sed -n "100,120p" ./bbs/views.py | clipcopy ...
  • 【USBブート】NVMe SSD とUSB3.2 Gen.2 の変換器でどこでもUbuntu

    家のメインPCの開発環境を、外のPCでも実現させたいことがある。 これまでは、外用のPCに開発環境をインストールさせる必要があったが、とっても手間がかかる。 その上、家のメインPCの環境が変わるたび、手動で外用のPCの設定を変えていかないといけない。 そこで、メインPCでOSが入っているNVMeSSDを取り出し、USB3.2 Gen.2 に変換する変換器を用意して、以降USBブートさせる。 今回はこちらを使った。 ロジ ...
  • ASP .NET Coreで簡易掲示板をつくる

    .NETを急いで覚える必要があるため、まずは簡易掲示板をつくる。 プロジェクトをつくる まず、.NETには、プロジェクトの構成として、MVC と Razor Pagesの2パターンがある。 PazorPagesは基本的なウェブページのみで構成されたシンプルなウェブアプリ。 一方、MVCはモデル・ビュー・コントローラがすべて揃った状態で作られる本格的なウェブアプリ。 今回は後者でつくる。 new mvc コマンドでプロジェクトをつくる。 ...
  • 【Python】サーボモーターを非同期で動かし、初期化する

    ロボット開発、始めました。 ロボット開発でまず最初にやることは、サーボモーターの初期化。 サーボモーターは工場で作られた時点で、常に角度が0度になっているとは限らない。その状態で90度や-90度の回転を指示してしまうと簡単に壊れる。 そこで、まずはロボットHATのPWMソケットに接続し、サーボモーターを0度に初期化する。 ただし、同期的にしかサーボモーターの制御できないのは問題なので、非同期でサーボモータ ...
  • UbuntuでC#の開発環境を整え、C#の基本構文をまとめる

    • 作成日時:
    • 最終更新日時:
    • Categories: インフラ
    • Tags: C# Ubuntu
    C#と.NET SDK のインストール MSの公式リポジトリを追加しておく sudo apt update sudo apt install -y wget apt-transport-https wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb .NET SDKをインストールする sudo apt update sudo apt install -y dotnet-sdk-8.0 プロジェクトの作成 .NET ではCLIアプリの開発、WEBアプリの開発、ネイティブアプリの開発がすべてdotnet new コマンドで実現できるようになっている。 CLIアプリの開発 dotnet new console -o MyApp cd MyApp dotnet run HelloWorldが表示される。 WEBアプリの開発 dotnet new webapp -o MyApp cd MyApp dotnet run 開発 ...
  • DjangoのセッションをRedisで管理する

    DjangoのセッションをRedisで管理するメリット DB(ディスク)ではなくRedis(RAM)になるので、セッション管理が高速化される 複数のアプリでセッション情報を共有できる マルチノード構成を使って、負荷分散・可用性を高めることができる TTLでセッションの削除を自動化できる。(DBの場合、能動的に削除しない限りセッション情報がそのまま残る) Django-Channelsなどの非同期セッションと ...
  • FastAPIでWebSocketを実現する

    djangoでもWebSocketは実現できるが、依然djangoの一部は同期動作(DB操作とMIDDLEWARE)。 よって、どうしてもボトルネックが発生する。 そこでWebSocketは、djangoではなく、非同期処理を前提として作られたFastAPIに委ねることで、より高速なWebSocketを実現させる。 本記事では、FastAPIを使ってのWebSocketを実現させる。 ただし、セキュリティ ...
  • Djangoでローカルメモリキャッシュを使う

    djangoで一時的にデータをメモリに記録して欲しい場合、ローカルメモリキャッシュを使う。 Redisと違って、プロセス単位で動くため python manage.py runserver を止めたり再起動させたりするとすぐに揮発してしまうが、Pythonオブジェクトの保存もできるため、使いどころを考えればとても便利。 使い方 settings.py に以下を追記。 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', } } これでキャッシュの設定は完了。 続いて、ビューなどの任意の箇所で from django.core.cache import cache topics = Topic.objects.all() cache.set('topics', topics, timeout=60) などとキャ ...
  • UbuntuへRedisをインストールし、Django上でキャッシュサーバーとして扱う

    UbuntuへRedisをインストール sudo apt install redis でインストール完了。 redis-cli でRedisのCLIを起動する。 SETコマンド、GETコマンドでキーの追加・取得ができる。 127.0.0.1:6379> SET mykey "Hello, Redis!" OK 127.0.0.1:6379> GET mykey "Hello, Redis!" 127.0.0.1:6379> 削除をしたいときは、DELコマンド 127.0.0.1:6379> GET mykey "Hello, Redis!" 127.0.0.1:6379> DEL mykey (integer) 1 127.0.0.1:6379> GET mykey (nil) 127.0.0.1:6379> 動作確認をするには、systemctl コマンド sudo systemctl status redis 動いていればこんな表示になる。 ● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2025-03-13 09:50:21 JST; 12min ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 52676 (redis-server) Status: "Ready to accept connections" ...
  • 【React】値が変わっても再レンダリングをしないuseRefとuseMemoの違い【デバウンス向けなのは?】

    入力欄に入力をするたび発火をする時、Stateに保存し続けると頻繁に再レンダリングが発動してパフォーマンスが落ちる。そこでデバウンスを採用する。 デバウンスしてキー入力の度にイベントを発火し続けないようにする【再レンダリング地獄対策】 このデバウンスをReactで実装し、setTimeoutのオブジェクトを記録するには、useRefが正解。 同じように値が変わっても再レンダリングをしないhookとしてu ...