みーのぺーじ

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

2022-01-01から1年間の記事一覧

Terraform: Up and Running を読了した

Terraform: Up and Running (English Edition)作者:Brikman, YevgeniyO'Reilly MediaAmazon 読んで重要だと感じた内容を列挙します. サンプルなどソースコードは,以下のレポジトリに MIT license で公開されています. GitHub - brikis98/terraform-up-and…

Raspberry Pi に電源ボタンをつける

Raspberry Pi には,gpio-shutdown という機能があり,GPIO を用いて簡単に電源ボタンを追加できるようです. After shutdown, the system can be powered up again by driving GPIO3 low. *1 つまり,Pin 5, 6 を短絡させれば,電源ボタンになるようです.…

Raspberry Pi の GPIO をネットワークから操作する

pigpio というライブラリは,Raspberry Pi の GPIO に対応しています. pigpio library このライブラリは,デーモンとインターフェイスから構成されていて,ネットワークを通じてデーモンを操作することができます.つまり,開発用の高性能なパソコンにイン…

Cloud Pub/Sub の再試行

Cloud Pub/Sub の再試行の動作確認をしました.Terraform で以下のように topic と subscription を作成しました.なお,subscription は一瞬で status code 500 を返す web サーバーに push するよう設定しました. resource "google_pubsub_topic" "test" …

トナーは振ると少しだけ復活する

レーザープリンターのトナーカートリッジをCTスキャンして中身について解説する記事があります. Is this toner cartridge half empty or half full? We grabbed a low toner cartridge from our office printer and popped it into our Neptune scanner. We…

Cloud SQL への接続とポイントインタイム リカバリの検証

Cloud SQLは, 豊富な拡張機能コレクション、構成フラグ、デベロッパー エコシステムを備えた、MySQL、PostgreSQL、SQL Server 向けのフルマネージド リレーショナル データベース サービスです。(https://cloud.google.com/sql?hl=ja) Cloud SQL で Postgre…

SQL で NULL との比較が unknown になる

SQL では,NULLに比較述語を適用すると,常にunknownになります.これは分かりにくい印象がありますが,3値論理に準拠すれば明らかです. この性質により,例えば Django で以下のように apple_id に unique と null が共存できます.ここで,apple_id は必…

Workload Identity で Github Actions を快適に認証する

Google Cloud の Workload Identity を使用して,Github Actions から認証できるように設定します. Workload Identity とは Workload Identity を設定する サービスアカウントとして認証する .github/workflows/oidc.yml 監査ログを使用する 許可する範囲を…

GA4 と UA のユーザー数が異なる問題

みーが運営しているブログに Google Analytics 4 (GA4) と Universal Analytics (UA) の両方を導入してアクセス解析をしています.2022年10月頃までは両者のユーザー数はほぼ同じ (誤差1%程度) で推移していたのですが,11月頃から, GA4 のユーザー数のみが…

快適なインターネット回線

通信速度が最大 1 Gbps のインターネット回線を使用して,windows 11 のISOファイルをダウンロードしたところ,400 Mbps 程度の速度でダウンロードできました.約 5 GB の巨大なファイルでしたが,2分もかからなかったです*1.画面を眺めているだけで完了し…

ルーターのLED省電力設定による消費電力

Elecomの無線LANギガビットルーター WRC-2533GHBK2-Tに,LED省電力設定という機能があったので,有効/無効を切り替えて,実際の消費電力を測定してみました. www.elecom.co.jp 消費電力: 約12.0W 有線LANを1個接続し,無線LANを2.4GHz/5GHzで有効にした状態…

機械学習のライブラリの検討 2022年

機械学習のライブラリは,以下が有名です. TensorFlow Keras PyTorch なお,KerasはTensorFlow 2に同包されているので,実質TensorFlow と PyTorch の対決です. Google Trends TensorFlowのほうが先に公開されており,2020年までは人気でしたが,2021年頃…

iPhone SE のバッテリーを修理した

みーのiPhone SE (第1世代) のバッテリーが膨らんできて,バッテリーの最大容量が78%にまで低下しました. バッテリーさえ交換すればまだ使えそうな印象だったので,自分で修理することにしました.ひとまず,iFixitの修理方法に従い,膨らんだバッテリーを…

StripeのWebhookとWrite Skew

SQL

Stripe Webhookを使用する時の注意点をまとめます. Webhookの仕様 https://stripe.com/docs/webhooks/best-practices イベントは1回以上配信される. 2xx HTTPステータスコードで応答しなければリトライされる. イベントの順番は保証されない. 顧客の作成…

ライズのディスプレイオーディオでmoviLinkのナビを使う

この記事の情報は,ディーラーのスタッフにたくさんの質問をして得られたお答えと,下記の参考資料をもとに,独自にまとめたものです.この記事の内容には誤りが含まれる可能性がありますし,うまく動作しないかもしれませんが,一切の責任は負いませんので…

Cloudflareでリダイレクト

Cloudflareにはリダイレクトをする機能がいくつか存在しますが,Page Rulesを使えば,CloudflareでDNSを管理しているドメインについて簡単にリダイレクトを設定できます. ここでは,laflabo.netというドメインを用いて説明します.以下の設定画面に掲載され…

全てのGitレポジトリのバンドルファイルを作成する

とあるディレクトリに保存されている全てのGitレポジトリのバンドルファイルを作成するシェルスクリプトを作成しました. #! /bin/zsh mkdir -p bundles for dir in * do if [ -e $dir/.git ]; then cd $dir git bundle create ../bundles/$dir.bundle HEAD …

MacOSのshはzshではなくbash

macOSのシェルスクリプトの挙動を見ていて気づいたのですが,macOSのshはzshではなくbashです. 環境 macOS Monterey % sw_vers ProductName: macOS ProductVersion: 12.5.1 BuildVersion: 21G83 検証結果 macOSのターミナルにて,以下の通り実行されました…

Djangoでsync_to_asyncの性能を測定する

Djangoで非同期処理を実装するときに,非同期ではない関数を使用するためのアダプター関数 asgiref.sync.sync_to_async() が用意されています*1. sync_to_async()関数は,SyncToAsyncクラスを使って,スレッドプールで実行可能な非同期関数を作成する仕組み…

Django async viewを使用してCloud Runで並行処理をする

一般的にWebサーバーの開発は非同期処理と相性がよいです.Webサーバーは不特定多数の人から任意の時刻にリクエストを受信して処理し,レスポンスを返します.Webサーバーの処理の多くは,データベースなど外部のリソースにアクセスすることなので,I/O boun…

OSI参照モデルの覚え方

OSI参照モデルとは,通信プロトコルを7つの階層に分けて定義したものです.国際標準化機構(ISO)によって策定されました. Layer Number Layer Name Description 7 Application アプリケーション層 Home of the protocols and services that comprise an appl…

Cloud Runでアクセス元のIPアドレスを取得する

結論 Cloud Run で,アクセス元のIPアドレスを取得するには,x-forwarded-forヘッダーを使用します. 検証 リクエストヘッダーを返すWebサーバーを作成して,Cloud Runにデプロイし,動作を確認しました. main.ts import express from 'express'; const app…

監視カメラの弱点

監視カメラは,事件が発生したときの映像を残すために設置するものですが,犯人が監視カメラそのものを破壊したり取り外したりする可能性もあります. もし,監視カメラの映像が本体に記録されていると,映像データも一緒に破壊されたり盗られたりするかもし…

terraform importで簡単にtfファイルを作成する

Terraformには,importコマンドが用意されており,既存のインフラストラクチャをTerraformに読み込めます. Command: import | Terraform by HashiCorp Terraformのドキュメントを眺めながら.tfファイルを手入力で作成するのもよいのですが,サービス提供元…

ログベースの指標は作成後に集計される

Google Cloud Platformでユーザー定義のログベースの指標を作成し,ダッシュボードにグラフで表示しようと思ったのですが,作成直後にデータが表示されずに困りました. 原因 ログベースの指標は作成後に集計されるため,しばらく時間を置かないとデータが表…

機械学習に必要なデータ数の検討

前回の記事でRNNのモデルを用いて加算と減算を学習しましたが,最低限必要なデータ数はどれぐらいなのか検討してみました. 教師データは24896個ありましたので,全部使用(1),1/2を使用(2),1/5を使用(5),1/10を使用(10),1/20を使用(20),1/50を使用(50)…

RNNで加算と減算を機械学習する

前回の記事では,データは固定長という制限がありました.可変長データを扱えるように,Embedding Layerを用いたRecurrent neural network (RNN)で学習してみます. 可変長データの扱い RNNなので,可変長の入力を扱えますが,学習するためには1個のTensorに…

加算と減算をEmbeddingで機械学習する

word2vecが流行っており,可視化されたデータも公開されています. http://projector.tensorflow.org/ 例えば"town"の近傍を検索すると,以下のような結果となりました. word distance village 0.355 city 0.366 towns 0.411 province 0.486 county 0.488 n…

train_test_split()はデフォルトでシャッフルされる

教師データを,訓練データと検証データに分ける関数sklearn.model_selection.train_test_split()が便利そうだったので使ってみました. sklearn.model_selection.train_test_split — scikit-learn 1.1.1 documentation この関数の引数にshuffleがありますが…

DeleteキーとBackspaceキー

キーボードには,DeleteキーとBackspaceキーが存在します. キートップの印字と機能の違い 日本語キーボードは以下のような配置になっています.これをWindows 10に接続して使用すると,Backspaceキーを押すとカーソルの前の文字が消され,Deleteキーを押す…