みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

µとμが見分けられない

µとμの見分けられないので,コピペ用に記事にしました. µ : MICRO SIGN(U+00B5) μ : GREEK SMALL LETTER MU(U+03BC)

Raspberry Pi4 でBluetoothとWiFiの有効・無効にする

Raspberry Pi 4 Model B にはBluetoothとWiFiが搭載されていますが,サーバー用途で使用する場合など,これらの機能が不要となることもあるので,有効・無効を切り替える方法をメモしておきます. Bluetoothの有効・無効 /boot/config.txt 無効にする: dtov…

YAMLは読みやすいが書きにくい

YAMLのグチを書きますが,みーはYAMLが読みやすくて好きです.ValidなYAMLを書くのが時々難しいという話です. 以下のようなYAMLを作成しました. --- 5E212220: type: normal 5E212221: type: hard 5E212222: type: easy これをparseしたところ,以下のよう…

(mypy)Relative import climbs too many namespaces

mypyが”Relative import climbs too many namespaces"とエラーして,気づくのに時間がかかったのでメモしておきます. プロジェクトは以下のような構成です. src └──b.py a.py b.pyの中身は以下の通りです. from ..a import foo foo() 原因は単純で,src/…

reCAPTCHAを使用するフォームを自動でテストする

Google reCAPTCHAを使用することで,ボットがフォームに機械的なデータを送信するのを防ぐことができますが,フォームが正しく動作するかを確認するためにテストをすると,機械的なデータを送信することになり,フォームを通過できません.このどうしようも…

Singleton

Singletonとは,そのClassのインスタンスが1つだけ生成されることを保証するデザインパターンのことです.先日,Singletonという同名のウイスキーを見かけたので,購入しました. Dufftown蒸溜所で作られた製品だそうです. 味はスムーズで,フルーティーか…

Pythonのリスト内包表記内で同じ名前の変数を使う

以下のようなPythonスクリプトを見かけました. a = [1, 2, 3, 4, 5] a = [a*2 for a in a] print(a) 最初に宣言した変数aと同じ名前の変数aをリスト内包表記内で使用しています. 初めて見た時は意味がわからなかったのですが,問題なく動作します. [2, 4,…

Grafanaのダッシュボードをバックアップする

せっかく作成したGrafanaのダッシュボードが消失すると萎えそうだったので,ダッシュボードをバックアップすることにしました.方法をまとめます. ダッシュボードのエクスポート バックアップしたいダッシュボードを開いて,一番上にある共有ボタンをクリッ…

Raspberry Pi 4Bの初期設定のまとめ

Raspberry Pi 4B をDocker実行環境として常時起動で運用するときの設定をまとめます. microSDにイメージを書き込む Raspberry Pi Imagerを用いてmicroSDにイメージを書き込みます. raspi-config で設定 sudo raspi-config パスワードの変更 セキュリティの…

Vue.jsのv-bindにObjectを使うときはXSSに気をつける

Vue.jsを使うときはDOM-based XSSに注意しなければなりません.例えば,v-htmlがXSSの原因となる可能性があることは有名です. Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS attacks. On…

Google Cloud SQLのインスタンスをprivate IPで扱う

プライベートIPアドレスを割り当てたGoogle Cloud SQLのインスタンスに,Google Cloud Runなどのサーバーレス環境からアクセスする方法を紹介します. 方法 Terraformのgoogle_sql_database_instance,google_compute_network,google_compute_global_addres…

HTTPSのWebサイトの移行は難しい

HTTPSに対応したWebサイトのサーバーを変更するのが困難であるという話です. そもそもWebサイトとは,ドメインのDNSサーバー(=ネームサーバー)が指し示す先に存在するWebサーバーにユーザーがアクセスすることでコンテンツを利用できるようにした一連の仕組…

Raspberry Pi Zero WでDockerを使う

前回の記事で,Raspberry Pi 4BでDockerを使いましたが,思ったよりもリソースが余っているので,より省電力にできないか検討しました.Raspberry Pi Zero WにDockerをインストールして使ってみました. 仕様 Raspberry Pi Zero W 802.11 b/g/n wireless LAN…

Raspberry Pi 4BでDockerを使う

Raspberry Pi 4BのCPUは4 core 1.5 GHzであり,サーバー用途としては十分ですが,開発環境としては遅いです.当たり前ですがIntel 4 core 3.2GHz CPUと比較すると処理速度は遅いです*1. 最近はDockerがマルチプラットフォームビルドに対応しているので,x64…

Raspberry Pi 4Bをセットアップする

Raspberry Pi 4B 4GBを購入しました.自宅で24時間稼働するDockerの実行環境として使うためにセットアップした時のことを備忘録としてまとめました. なお,項目ごとに分類したことにより,時系列が前後する記述があります. 仕様 Raspberry Pi 4B 4GB Broad…

極小のWebサーバーをHerokuにデプロイした

Alpine Linuxで動作するNginxを使ってWebサーバーをHerokuにデプロイした時の話です. 要件 全てのリクエストを別のドメインにリダイレクトするだけのWebサーバーは,最も単純なWebサーバーの1つです.これをNginxで作成し,Herokuで公開します. 作り方 Doc…

Djangoの開発サーバーではデータベース接続を維持してはいけない

Djangoのrunserverコマンドを使用して開発している時に,たくさんのリクエストを行うとデータベース接続数が次第に増えていき, FATAL: sorry, too many clients already` というエラーが発生する現象に遭遇した時のまとめです. 環境 Django 3.1.6 'CONN_MA…

Pythonのloggingでデバッグ

Pythonのloggingはとても便利です. logging --- Python 用ロギング機能 — Python 3.9.1 ドキュメント logging.debug(msg, *args, **kwargs)関数には便利なキーワード引数が存在します. stack_info logging.info("test", stack_info=True) これだけで,スタ…

スポーンされた

Google翻訳が独創的な翻訳をしてくれました. なお,ちゃんとした文章を入力したところ,ちゃんとした翻訳をしてくれました. ちなみに,DeepLは,ちゃんとした文章も独創的に翻訳してくれました.

GitHub Actionsでブランチ毎のSecretsを取得する

おそらくGitHub Actions Environmentsで簡単に実現できることだと思うのですが,privateレポジトリでは使えないので,少し工夫してブランチ毎のSecretsを取得できるようにしました. 要件 testブランチのpushイベントで起動したら,VAL_TESTという名前のsecr…

GitHub Actionsのストレージ容量

GitHub ActionsでArtifactを扱っていたところ,突然以下のようなエラーが出て実行できなくなりました. Create Artifact Container failed: Artifact storage quota has been hit. Unable to upload any new artifacts. 無料プランでGitHubを利用していたの…

GitHub Actionsのworking-directory

GitHub Actionsのworking-directoryで少しハマったのでメモします. defaults.run ワークフロー中のすべてのrunステップに対するデフォルトのshell及びworking-directoryオプションを提供することができます。 GitHub Actionsのワークフロー構文 - GitHub Do…

Pythonのグローバル変数のメモ

以下の記事がとても有用だったのでメモします. Why am I getting an UnboundLocalError when the variable has a value? - Programming FAQ - Python 3 以下のスクリプトは実行されます. x = 10 def bar(): print(x) bar() 10 x=1を追加すると,UnboundLoc…

Djangoで作成したDockerイメージをVS Codeでデバッグする

VS CodeのPython拡張機能を使うことで,Pythonスクリプトを簡単にデバッグすることができます.これをDockerで実行中のDjangoプロジェクトで使用できるようにします. Python - Visual Studio Marketplace debugpyとVS Codeの設定 r.py launch.json Dockerで…

独自ドメインのメールアドレスを運用するためのDNS

独自ドメインでメールアドレスを運用する時の注意点をまとめました. DNSレコードの設定 MXレコードを設定します.これによりひとまずメールが扱えるようになります. DNSレコードの編集 | レンタルサーバーならエックスサーバー MXレコードの優先度は,慣例…

Djangoからpostgresデータベースに効率よく接続する

Djangoで作成したWebアプリケーションをCloud Runで実行して,Cloud SQL postgresに接続する負荷テストを実施していたところ,以下のエラーが発生しました. psycopg2.OperationalError: FATAL: remaining connection slots are reserved for non-replicatio…

Google Cloud Platformのプロジェクト数の割り当てを増やしてもらった

Google Cloud Platformで,プロジェクトを作成して使わなくなったら削除を繰り返していたら,プロジェクトがあと2個しか作成できなくなってしまいました. 初期設定では25個のプロジェクトが作成可能な割り当てでした.プロジェクト数は削除したらすぐに減る…

Cloud RunでDjangoの快適なlogging設定

Cloud RunでDjangoのプロジェクトを快適に実行するためのloggingについてまとめます. 実行環境 Python logging logging.Logger logging.Handler logging.Formatter logging.Filter logging.config.dictConfig DjangoのLOGGINGの設定 Cloud Logging 認証の準…

シェルスクリプト まとめ

シェルスクリプトはなんとなく書けるけど,なんとなくしか書けないので,改めて自分用にシェルスクリプトをまとめました.$ から始まる行を実行し,結果を次の行で示します.概ねThe Shell Scripting Tutorialを参考にしています. 実行環境 Hello World! 変…

Cloud FunctionsとCloud Runの処理速度を比較する

CPUが律速となる処理を行うのに適したサーバーレス環境を選定するために,ベンチマークなどを行いました.候補はGCPのCloud FunctionsとCloud Runです.AWSやAzureなど他のプラットフォームは検証しません. 注意事項 Cloud Functions 256 MB 400 MHz 1,024 …