みーのぺーじ

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

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 …

ブラウザのスクリーンショットを利用したWebサービスをpuppeteerで作る

URLが含まれるリクエストを受け付けて,そのURLにブラウザでアクセスし,描写された内容をスクリーンショットしてPNG画像を生成し,その画像をレスポンスするWebサービスを作成した時の話です. なお,このWebサービスはみーが個人的に利用するために作成し…

不良セクタが報告されたのでSynologyのHDDを交換した

我が家ではSynologyのDiskStation DS218playがNASとして稼働していて,ファイルの共有に使用しています.RAID1で2台のHDDを使用しています. 数ヶ月前から 不良セクタが報告されるようになり,まぁいいやと放置していましたが,やっぱり気になるので新しいHD…

Cloud Deployment Manager まとめ

自分の勉強のために,Cloud Deployment Managerについてまとめました. Terraformとの比較 Cloud Deployment Manager の最小構成 create update delete jinjaテンプレートを使用する template_pubsub.jinja main.yaml 環境変数 template_pubsub.jinja main.y…

Pythonのmultiprocessingで色々な並列処理をする

Pythonのmultiprocessingを使って,並列処理を色々とやってみて,動作を確認してみました. 環境 CPU 3.2 GHz Quad-Core Intel Core i5 macOS 10.15.7 Python 3.8.6 4個のプロセスで関数を4回並列実行する import multiprocessing import time import os def…

Pythonでディレクトリを作成する

基本的なことですが,Pythonでディレクトリを作成する時に遭遇したエラーについてまとめます. FileExistsErrorに悩む ScrapyというPython framework にて,FileExistsErrorが100回に1回ぐらい発生する現象に遭遇しました. scrapy/extensions/feedexport.py…

HHKB Professional HYBRID 英字配列で英語のMacOSに日本語を入力する

以下の条件に全てあてはまる方向けのマニアックな記事です. HHKB Professional HYBRID 英字配列を使っている MacOSのシステム言語は英語にしている 日本語を入力したい つまりパソコン関係の設定は全て英語なのだけれども,理由があって日本語も扱わなけれ…

コンテナはスケーラブルにできるが、お財布はスケールしない

最近Google Cloud Platformを使っています.例えば,Cloud Runは以下のような宣伝がされています. フルマネージドのサーバーレス プラットフォーム上で、スケーラブルなコンテナ化されたアプリケーションを開発し、デプロイできます。*1 気軽にスケーラブル…