Vue.jsのウェブアプリをDockerコンテナにし、コンテナイメージからGoogle Compute Engineのインスタンスを作成して、Vue.jsのウェブアプリを動かしてみます。 Vue.jsのプロジェクト作成 コンテナイメージ作成 Google Container Registryにpush Google Comput…
Google Container Registryを初めて触ってみます。 Dockerコンテナイメージ作成 Google Container Registryにpush Google Container Registryからpull 追記 2021/04/22 Dockerコンテナイメージ作成 以下のような適当なDockerfileを作成します。 FROM ubuntu:…
Google Compute Engineのstartup scripts(起動スクリプト)の機能を試してみました。 (最近GCPの「やってみた」系の記事が続いています) Google Cloud TranslationのAPIをローカルのNode.jsから試してみる FirebaseのCloud FunctionsからGoogle Cloud Trans…
RubyでTCP/IPのソケットを試してみました。サーバ側はマルチスレッドです。 サーバ側サンプルコード server.rb require 'socket' maxlen = 10 server = TCPServer.open(3000) loop do Thread.start(server.accept) do |socket| begin loop do buf = socket.r…
RubyからAWSのSQSにメッセージを送受信してみます。前回はPythonで試しましたが、今回はそのRuby版です。 CloudFormationでSQSを作成するところは前回と同じなので省略します。 RubyのAWS SDKをインストール。 $ gem install -N aws-sdk Rubyのサンプルコー…
先日も似た記事を書きました。 Python/Perlからdiffコマンドを起動して2つの文字列の差分を表示 このときは、外部プロセスとの通信に名前付きパイプを使いました。 今回は、子プロセスの標準入力に親プロセスからデータを送ります。名前のないパイプを作成し…
Google Cloudのgcloud, gsutilなどのコマンドをインストールしてみます。 Compute Engineですと、初めからインストールされていて、認証も通っているようです。今回はGoogle Cloudと関係ないAWS EC2インスタンスにインストールしてみました。 参考 Using the…
AWSのStep FunctionsのRetryとCatchをServerless Frameworkから使ってみます。 Step Functionsは、CloudFormationだとState machine定義の記述が面倒です。JSONを文字列にしたものをCloudFormationのテンプレートに書くか、別ファイルにしないといけないよう…
WSLから clip.exe というコマンドでテキストをクリップボードにコピーできることを知りました。 なので、こんなことができます。WindowsからTera Termなどでどこか遠くのサーバに接続し、Windowsにあるファイルをテキスト貼り付けで遠くのサーバに送信です。…
CloudFormationでSQSのQueueを作成して、Pythonコードでメッセージの送受信をするところまで試してみます。 CloudFormation Pythonコード CloudFormation template.yaml AWSTemplateFormatVersion: '2010-09-09' Resources: SampleSQS: Type: AWS::SQS::Queu…
すぐに忘れてしまうのでテンプレートを残しておきます。 Vue.js / Nuxt.js Vuex Vue.js Nuxt.js Vue.js / Nuxt.js import Element from "~/components/element.vue"; export default { components: { "element": Element, }, data() { return { field1: valu…
PythonまたはPerlからfork, execしてdiffコマンドを起動し、2つの文字列の差分を表示させるサンプルコードです。 diffコマンドへの文字列受け渡しは名前付きパイプを使っています。diffしたいだけなのに3つも子プロセスを起動しちゃってます。 Python import…
Vue.jsやNuxt.jsの開発用サーバのポート番号を変更するには package.json に記述すればよいようです。 Vue.js package.json 変更前(デフォルト) "scripts": { "serve": "vue-cli-service serve", // ... }, ↓ 変更後 "scripts": { "serve": "vue-cli-service…
Pythonソースコード以外にテキストや画像など任意のファイルをパッケージに含めて、Pythonコードから参照する方法のメモです。 手順の概要 ソースコード requirements.txt sample/data.txt sample/__init__.py sample/main.py setup.py MANIFEST.in 動かして…
S3バケットにあるオブジェクトの数をawscliで確認する方法です。 2つ方法を書きます。1つ目は単純にlsコマンドで数えています。2つ目はCloudWatchのMetricsで、バージョニングが有効化されているバケットの場合は過去バージョンのオブジェクトも含まれます。…
S3にPUTするときの最大サイズは5GBだそうです。これを超えるサイズをアップロードする場合にはMultipart Uploadが必要です。 aws s3 cpコマンドでは大きいファイルをアップロードする際には自動でMultipart Uploadになりますが、Multipart Uploadの処理の中…
画像を処理できるPillowをAWS Lambda + Python + Serverless Frameworkの環境で動かしてみました。 AWS Lambda + Python + Serverless FrameworkにPythonのパッケージをインストールする方法は前回の記事に書きました。 AWS Lambda + Python + Serverless Fr…
AWS LambdaのLayerにPythonのライブラリをインストールする方法です。Serverless Frameworkを使用している場合です。 少し前にも似た記事を書いたのですが、そのときはLayerに乗せられずLambda本体にライブラリのイメージが含まれてしまっていました。 前回…
PythonのOpenCVから画像を扱うPillowというライブラリに渡してみます。 OpenCVからPillowにはNumpy配列を介して渡せるのですが、3色の順番がOpenCVはBGRで、PillowがRGBという違いがあるようで、変換が必要でした。 import cv2 import PIL.Image def buildVi…
Javaで処理して作成した大量の浮動小数点数のデータをバイナリでファイル出力して、それをPythonで読み込む方法を確認しました。 Javaからは DataOutputStream で書き出し、Pythonでは struct.unpack メソッドで読み込みます。 Javaの DataOutputStream はハ…
Rubyで処理して作成した大量の浮動小数点数のデータをバイナリでファイル出力して、それをJavaで読み込む方法を確認しました。 Rubyからはpackメソッドで書き出し、Javaでは DataInputStream で読み込みます。 Javaの DataInputStream はハードウェアのバイ…
HTMLのvideo要素で動画を埋め込むサンプルです。 動画の再生停止ボタンやシークバーなどはvideo要素だけでも標準のデザインのものが使えますが、プラスアルファの機能を提供しているVideo.jsもここでは利用しています。 <html> <head> <title>sample movie</title> <link href="https://vjs.zencdn.net/7.10.2/video-js.css" rel="stylesheet" /> </link></head></html>
Linuxのパイプの流れる速度を制限してゆっくりデータを流すには、 pv コマンドが使えます。 例 $ COMMAND1 | pv -L 10 | COMMAND2 これで秒間10バイトしか流れなくなります。COMMAND1の標準出力がゆっくりしかできない状況や、COMMAND2の標準入力がゆっくり…
HTMLにvideo要素で動画を埋め込んでみたところ、開始・停止の制御はできるものの、シークバーを動かしてもシークできずに悩んでました。 調べたところ、Chromeではサーバがrange requestsに対応していない場合に、シークできないようでした。 動画ファイルを…
AWSのIAM Policyをawscliで取得、作成や更新をすることはできますが、以下の理由でとても手間です。 Policyにバージョンの概念があるため、バージョン番号を確認するワンクッションが必要 Policyの名前を指定する箇所とARNを指定する箇所があり分かりづらい…
前回の太陽の位置を地心直交座標系の計算の続きです。 太陽と月の地心直交座標系での位置を計算 黄道座標系に変換して太陽と月の黄経を計算 黄経差を計算 黄経差が0°や180°になるタイミングを計算 まずJPLからデータをダウンロード。 $ wget -r 'ftp://ssd.j…
Serverless Frameworkでデプロイすると、デプロイ用のS3バケットが勝手に作成されます。勝手な作成を抑制する設定のメモです。 Serverless FrameworkはCloudFormationのテンプレートやLambdaに使うソースコードをS3バケットに保存してデプロイ処理します。バ…
前回、RubyでServerless Frameworkを触ってみました。今回は同じことをPythonとNode.jsでします。 作成するAWS Lambdaは、前回と同じですが、CloudWatchからスケジュール起動します。Lambdaでの処理内容はS3にアクセスしてログに残すのみです。 カレントディ…
太陽の位置を計算するプログラムを書きました。 JPL(NASA Jet Propulsion Laboratory、NASAジェット推進研究所)が太陽や月、惑星の位置を計算するためのデータを公開しています。そのデータを読み込んで計算するRuby Gemがありますので、それを呼び出すだけ…
地球時と太陽系力学時は、天文学で使われる時刻系で、普段みんなが使っている協定世界時とは少しだけ時刻がずれています。 協定世界時は生活に使えるように地球の回転と同期するよう、ときどきうるう秒が入りますが、地球時と太陽系力学時は時間の進み方を一…