みーのぺーじ

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

シェルスクリプト まとめ

シェルスクリプトはなんとなく書けるけど,なんとなくしか書けないので,改めて自分用にシェルスクリプトをまとめました.$ から始まる行を実行し,結果を次の行で示します.概ね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 気軽にスケーラブル…

Cloud Functionsのloggingを設定する

Cloud Functionsで快適にログを出力する方法をまとめました. google-cloud-logging を使う pythonの標準ライブラリにloggingがあります.これを置き換える形でGCPでログを出力可能な, GitHub - googleapis/python-logging を使うのが便利です. Python Cli…

Cloud Functionsのファイルシステムについて

Cloud Functionsのファイルシステムについては,ここに詳しく書いてありますが,自分なりにまとめます. 基本的にread-only Cloud Functionsで実行するPythonスクリプトが,ファイルシステムに何らのデータを書き込もうとするとエラーになります. [Errno 30…

快適なCloud Functionsの開発環境を整える

Google Cloud PlatformのFaaSであるCloud Functionsを利用したサービスを開発する時のために,できるだけ快適に開発できるようにするために工夫したことをまとめます. 環境 Python3.8 macOS 10.15.7 ローカルで実行するためにFunctions Framework for Pytho…

Cloud SQLを使わないための費用

最近,Cloud SQLを使い始めました.時々しか使わないCloud SQLのインスタンスがあるので,使う時に起動して,使い終わったら停止するようにしていました. しばらくしてGoogleからの請求書を確認すると,以下の項目が請求されていました. Cloud SQL Cloud S…

PythonのBottleでbackground taskを処理する

何らかの時間がかかる処理を,非同期で実行するWebサービスを作成することを考えます. しばしば用いられる方法の1つに,Workerプロセスに分離する方法があります.ユーザーのリクエストに対してレスポンスを即座に返すWebプロセスと,内部で実際の処理を実…

Sentry Loaderが簡単すぎた

Webアプリケーションのエラーを扱うためにSentryを利用しています. webpackを使ってSentry SDKを使うと,bundle.jsが正常にロードされれば問題なくSentryにエラーが送信されますが,もしもbundle.jsでSentryが読み込まれる前にエラーが発生すると,エラーが…

DeepL翻訳で動物の種類を増やす

DeepL翻訳を使って,動物の種類を増やす実験をしてみます.これはみーの友達からいただいたアイディアを検証した記事です. DeepLに日本語を入力して,英語に翻訳します. うさぎとうなぎが400匹 うさぎが1匹。 One rabbit. うさぎにうなぎを追加します. う…

DjangoのcollectstaticでAmazon S3に直接アップロードするとParamValidationError

タイトルの通りですが,Djangoに django-storagesとboto3をインストールして,collectstaticを実行してAmazon S3に直接アップロードを試みましたが,ParamValidationErrorが発生しました. settings.py STATICFILES_STORAGE = 'storages.backends.s3boto3.S3…

DockerのCMDは文字列でよいのか

WebサーバーをDockerで作成するために,DockerfileのCMDに以下のように書くことを考えます. CMD gunicorn --bind 0.0.0.0:8000 web.wsgi これにより,DockerでWebサーバーを起動すると,問題なくGunicorn - Python WSGI HTTP Server for UNIXが実行されます…

RustのPyO3がstableで動くようになっていた

pyo3 0.12.3 - Docs.rs 今まではRustのnightlyでなければ動きませんでしたが,2020年6月のリリースでstableでも動くようになったようです. Release PyO3 0.11.0 · PyO3/pyo3 · GitHub PythonとRustがより使いやすくなって嬉しいです. しかしながら,少しだ…

DaVinci Resolve でプロジェクトの設定のデフォルトを変更する.

DaVinci Resolve 16 で動画を作成する時は,最初にプロジェクトを新規作成します. 動画の解像度やフレームレートを決めます.プロジェクトの設定を開きます. この作業を毎回行うのは面倒なので,デフォルトを変更して自動的に好みの設定となるようにします…

MPEG DASHで動画を配信する時のCloudFrontのCORS設定

MPEG DASHを使ってアダプティブストリーミングで動画を配信しようと挑戦したところ,CORSで躓いたのでまとめます. 目標 shaka-playerを使ってDASHでアダプティブストリーミングする. 動画を配信するためにAmazon S3を使い,CloudFrontでキャッシュする. …

Pythonパッケージの更新をRSSで追跡する

世の中Twitterなど様々なサービスがありますが,みーはRSSを使っています. Webサービスを運営する上で,使用しているパッケージの更新がないかを定期的に調べるのが面倒なので,よい方法はないかと試行錯誤した結果,PyPIのRSSを使うことにしました. 積極…

TestCafeのAssersionが面白い

TestCafeはブラウザーでE2Eテストを実行するためのライブラリーです. webdriverが不要,任意のブラウザーで実行可能な素晴らしいライブラリですが,非同期処理を駆使してJavaScriptでテストコードを実装する必要があるので少し扱いにくいという欠点もありま…

abs()の解説記事の違和感

Python入門|絶対値を求めるabs関数の使い方 という記事に,Pythonで絶対値を得る方法が解説されていました. 一般的な絶対値の求め方は対象となる数値を二乗した後に平方根を求めることで±記号を取り除きます。 そんな面倒なことをしなくても,負の数ならば…

wsl2を使ってみた

OSはwindows 10 home 64bitで,バージョン2004以上にアップデートする*1.以下の2つの機能を有効にして再起動し,wslを有効にする. デフォルトのバージョンを2にする. wsl --set-default-version 2 もし, エラー: 0x1bc となれば, Updating the WSL 2 Li…

Heroku のデータベースのプランを変更する

Heroku postgresのデータベースのプランを変更する方法は以下のドキュメントにとても詳しく記載されているのですが,少し困ったことがあったので整理してみます. Upgrading the Version of a Heroku Postgres Database | Heroku Dev Center 上記の記事を補…

Internet Explorerのサポートを考える

Webサイトを作成するにあたりInternet Explorer 11をサポートするかどうかは悩ましいです.ES6で流れるように作ったWebサイトを,Internet Explorerで開くと,うまく動かなくてがっかりします. Internet Explorerを打ち捨てようとしても,日本のデスクトッ…

開発環境のTestCafeでSSLを利用する

TestCafeは,JavaScriptでe2e testを作成すれば,たくさんの種類のブラウザーで実行できる便利なライブラリです. Apple Payなど通信がhttpsでなければ実行できない機能があるため,開発環境のTestCafeでもhttpsを使うことにしました.そのためにTestCafeの-…

Google Cloud Runは魅力的だがまだ実用的でない

DockerベースのWebアプリケーションの運営に,Google Cloud Runがよさそうだと思ったので,使ってみました.Google Cloud Runは2019年12月に正式リリースされたばかりで,まだ半年しか経過していません*1.とはいうものの,Dockerイメージを指定して,CPUと…

Pythonで一括代入する時の注意

Pythonでは複数の変数に一括して値を代入することができます. a = b = 1 print(f"{a}, {b}. id={id(a)}, id={id(b)}") b = 2 print(f"{a}, {b}. id={id(a)}, id={id(b)}") これをPython3.8で実行すると, 1, 1. id=4347452064, id=4347452064 1, 2. id=4347…