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

Serverless FrameworkとAWS Lambda with RubyでS3アクセス

AWS

Serverless Frameworkを触ってみました。 AWS LambdaをCloudWatchからスケジュール起動します。Lambdaでの処理内容はS3にアクセスしてログに残すのみです。処理はRubyで書きます。 追記:PythonやJavaScriptでの例は後日書きました。→ Serverless Framework…

天文計算に関わる各種時刻系

TDBという時刻系がなんなのかを調べ始め、整理したメモです。TDBまで遠かった・・・。前日の記事に引き続き、時刻に関する記事です。 視太陽時、apparent solar time 日時計 太陽が真南(南半球ならば真北)を通過する瞬間を正午とする時刻 経度によって違う…

日時/タイムスタンプとタイムゾーンに関わるデータ型

タイムゾーン情報の有無に関わる、日時またはタイムスタンプを扱うデータ型について、4つに分類して整理しました。 A: 「0時」 B: @0時 C: @0時 +09:00 D: @0時 日本時間 Aは、ロンドンの0時も東京の0時も同じ「0時」として表現します。ロンドンの0時と東京…

JPG画像ファイルのサムネイルをPythonで生成

JPG画像のサムネイルを作成する処理をPythonで書きました。 Pillowというライブラリで画像ファイルを扱えます。もともとはPILというライブラリがあったのですが、PILはPython 2までしかサポートしておらず、PILからフォークしたPillowがいまのデファクトとい…

DynamoDBを初めて触ってハマったこと

AWS

AWSのDynamoDBを初めて触ったときの感想というか、つまづいた点を記録しておきます。 その1 その2 その3 CloudFormationのテンプレートのサンプル DynamoDBにPythonからアクセスするサンプルコード その1 CloudFormationでDynamoDBのテーブルを作成しようと…

API GatewayをVPC内のプライベートアクセスのみに限定

AWS

AWSのAPI Gatewayを通信がインターネットに出ていかずにVPCの中だけに限定するには、以下の設定が必要です。 API Gateway用のVPCエンドポイント作成 API GatewayのリソースポリシーでVPCエンドポイントからのアクセスのみに制限 API GatewayのEndpoint Type…

CloudFormationでAPI Gatewayを変更しても反映されない

AWS

CloudFormationでAWSのAPI Gatewayを使った開発をするときの話。 初めてCloudFormationをデプロイするときには、API Gatewayのデプロイも実行されるので、すぐにAPIが使えるようになります。しかしその後テンプレートファイルを更新してCloudFormationでデプ…

AWS::ApiGateway::Stage と AWS::ApiGateway::Deployment の違い

AWS

CloudFormationでAPI Gatewayを作成する際の AWS::ApiGateway::Stage と AWS::ApiGateway::Deployment の役割分担というか違いがよくわからないまま、適当なサンプルを使いまわして雰囲気で使っていたのですが、やっとわかってきたので、メモです。 AWS::Api…

CloudFormationのパラメータを配列型にする

AWS

前半は復習としてパラメータが文字列の書き方、後半が本記事の本題で配列型にする方法です。 パラメータが文字列の場合 パラメータが配列の場合 パラメータが文字列の場合 テンプレートファイルに以下のように書くと aws cloudformation deploy 実行時にパラ…

AWS Redshift Federated QueryでRedshiftにアクセスしてみる

AWS

AWS RedshiftのFederated QueryはRedshiftからRDSやAuroraのPostgreSQLテーブルにアクセスできる機能です。 PostgreSQLにアクセスできるのであれば、似たインターフェースであるRedshiftにもアクセスできるんじゃないかと期待して試しました。Redshift同士の…

AtCoder参戦日記 ABC183 2020/11/15 #9

AtCoderの9回目の参加となった2020/11/15のABC183の記録です。 パフォーマンスは、まだ勝手のわかっていなかった初参加を除くと最悪値になってしまいました。時間がかかってしまったのが敗因です。 2問目は書いたコードが違うディレクトリに保存されているこ…

htmlWebpackPlugin.options.title を設定する方法

vue cliでプロジェクトを作成すると public/index.html にはページタイトルとして以下のように記述されます。 <title><%= htmlWebpackPlugin.options.title %></title> HTMLページのタイトルを付けるためにこの htmlWebpackPlugin.options.title の値を設定するには、プロジ…

AtCoder参戦日記 ABC182 2020/11/08 #8

AtCoderの8回目の参加となった2020/11/08のABC182の記録です。 25分ほどで4完でした。5問目は少し考えて計算量を抑える方法を思いつかずあきらめました。6問目は解法がわからないままタイムアップでした。 そろそろ後半の難しい問題も解けるようにならないと…

Dockerのエラー: certificate signed by unknown authority.

Dockerを動かしたら、以下のエラーが出てしまいました。 docker: Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate signed by unknown authority. プロキシが必要な環境にも関わらずDockerにプロキシ設定がなかったた…

AtCoder参戦日記 ABC171 2020/11/07

緊張感と集中力を付けるために過去問もバーチャル参加しました。2020/11/07にバーチャル参加したABC171の記録です。 30分ほどで5完でした。5問目までは解法をほとんど考えることなく、コードを書いていただけでした。6問目が解法がわからず、すぐにあきらめ…

S3にダミーファイルを大量に保存

AWS

検証目的でS3にダミーファイルを大量に保存するスクリプトを書きました。 スクリプトはRubyとBashの組み合わせです。 Rubyでput_object Rubyスクリプトで3万個保存 Bashスクリプトで36万個保存 動かす Rubyでput_object RubyでAWSを操作するには aws-sdk の…

S3にオブジェクトとメタデータをPythonで保存

AWS

Pythonのboto3を使って、S3にオブジェクトとユーザ定義のメタデータを保存するサンプルコードです。 import boto3 # default以外のprofileを使う場合はここで指定 profile = "default" session = boto3.session.Session(profile_name = profile) client = se…

AtCoder参戦日記 ABC181 2020/11/01 #7 ― 緑色になる

AtCoderの7回目の参加となった2020/11/01のABC181の記録です。 今回初めて、いまさらではありますが、atcoder-cliを使用しました。 30分ほどで4完でした。残り1時間あまり5問目に取り組みましたが、疲れてきてコードを書ききれませんでした。 問題 結果 言語…

PostgreSQLのデータ型とAWS Glue Crawlerのデータ型のマッピング

AWS

PostgreSQLのテーブルをAWS Glue CrawlerでクロールしData Catalogにどんなデータ型のテーブルができるかを確認しました。 Data Catalogのデータ型にどうマッピングされるかについては、過去にもやっています。S3上のParquetファイルをクロールさせた場合は…

AtCoder参戦日記 ABC180 2020/11/01

2020/11/01にバーチャル参加したABC180の記録です。日程的に参加できなかったコンテストに後日バーチャル参加しました。 55分ぐらいで4完でした。終了後5分ぐらいで5問目ができました。 問題 結果 言語 A ○ Ruby B ○ Scala C ○ C++ D ○ Java E 競技後にJava …

AtCoder参戦日記 ARC105 2020/10/11 #6

AtCoderの6回目の参加となった2020/10/11のARC105の記録です。 15分ぐらいで2完でした。 3問目と4問目を競技中考えましたが、解法を見いだせませんでした。 4問目(D)は解説を見て理解したときの衝撃が凄まじかったです。こんな簡単に解けるとは。 問題 結果 …

Parquetのデータ型とAWS Glue Crawlerのデータ型のマッピングとAthenaからのアクセス

AWS

さまざまなデータ型を含むParquetファイルを作成し、AWS Glue Crawlerでクロールさせてみて、Data Catalogにどんなデータ型のテーブルができるかを確認しました。 結果 Parquetファイルのスキーマ Glue Crawlerの結果 Athenaから参照 結果 先に結果をまとめ…

AWS CloudWatchでRDSのディスク容量の監視

AWS RDSのディスク残り容量をCloudWatchで監視し、しきい値を超えたSNSでアラームを飛ばす仕組みをCloudFormationで作成してみました。 前提 RDSインスタンスは作成済み (本記事はPostgreSQLで試しました) アラーム通知先となるSNS Topicは作成済み CloudFor…

AtCoder参戦日記 HHKB2020 2020/10/10 #5

AtCoderの5回目の参加となった2020/10/10 HHKB2020の記録です。 3完でした。 4問目(D)は解法はわかったものの、コードを書ききれずにあきらめてしまいました。 5問目(E)は後日解説を見ずに解けました。競技中Dを飛ばして先にEをやっていればよかったです。 …

ParquetファイルをJavaで生成する

Parquetファイルを生成するサンプルJavaコードを書きました。 以下の記事を参考にしました。 How To Generate Parquet Files in Java - The Tech Check ソースファイル Main.java pom.xml 実行 Parquetファイルの中身を確認 ソースファイル Javaのソース1つ…

AWS RDSのログファイルをダウンロードするPythonとRubyのスクリプト

AWS

以前、AWS RDS PostgreSQLのクエリログをawscliで取得するワンライナーという記事で、RDSのインスタンスにあるログファイルを一括で取得する方法を書きました。しかしこのワンライナーでは、1MBを超えるログですと先頭の1MBしか取得できず、途切れてしまいま…

PostgreSQLのテーブルやデータベースのデータサイズを調べるには

以前の記事(PostgreSQLの各テーブルのレコード数とデータ容量の概数を調べるには)でテーブルごとのサイズを調べる方法を書きましたが、PostgreSQLのデータベースごとのサイズを調べる方法も併せて書いておきます。 データベースのサイズ SELECT pg_database_…

Parquet Toolsをインストール

Parquet Toolsを使おうとするたびにコンパイルエラーに悩んでいる気がします。 現時点(2020/10/25)でコンパイル成功したパターンを書いておきます。 前提 ダウンロードとビルド 使ってみる catコマンド headコマンド schemaコマンド metaコマンド dumpコマン…

AtCoder参戦日記 ARC104 2020/10/03 #4 ― Scalaの限界を知る

AtCoderの4回目の参加となった2020/10/03 ARC104の記録です。 2完でした。 2問目のACまでに20分も消費してしまいました。 その後約40分をCに時間かけ、コードを書きましたが、最後まで書ききれずに、提出することなくあきらめてDに移りました。 Dでも残り時…

curlコマンドとwgetコマンドでバイナリをPOST

curlコマンドまたはwgetコマンドを使い、HTTP(S) POSTメソッドのリクエスト本体でバイナリを送る方法です。 httpbin curlコマンド wgetコマンド httpbin HTTP(S)の通信をテストするには httpbin というサイトが便利です。 httpbin.org 以下のようにhttpbinに…