kawabatas技術ブログ

試してみたことを書いていきます

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

Ruby で Google Cloud Vision API を使って OCR を試してみる

概要 先日、次のバスの出発時刻を聞ける Alexa スキルを作りました。 その際、バスの時刻表を csv にして、プログラムから使ったのですが、 今だったら Cloud Vision API でバス時刻表の画像から時刻を読み取れるのでは、と思ったので試してみました。(Alex…

赤ちゃんのミルク等の時間を Google Spreadseet に記録する Alexa カスタムスキルを作る

概要 タイトルの通り、赤ちゃんのうんち、おしっこ、ミルクの時間を Google Spreadseet に記録する Alexa カスタムスキルを作ったという話です。 ほぼほぼこちらをマネさせていただきました。mm miyataro.hatenablog.com こちらも参考にさせていただきました…

【GCP認定資格】Professional Cloud Architectの勉強

gcp

概要 近々、Professional Cloud Architectの試験を受ける。 試験前に勉強したことについて要点をまとめておく。 落ちた場合も、受かった場合も(有効期限あるので)役に立つはず。 ※2019/08時点のこと。内容が変わっている可能性は大いにあり。 やったこと(…

Google Cloud Next '19 in Tokyo 参加レポート

gcp

概要 昨年に続き、今年も参加できたので、レポートです。 Google Cloud Nextとは、 Next は Google Cloud に関する技術や事例などを共有するためのイベントです。 kawabatas.hatenablog.com 受講セッション セッション動画は youtube に徐々に上げられていま…

【無料】Ruby で Cloud Run を使って API を作ってみた

概要 コンテナをサーバレス like に使える Cloud Run。 今までのサーバレスの課題(制約) 言語、ライブラリに制約 特定のベンダーロックイン GPU/TPU 特定のハードウェアへアクセスできない → Cloud Run on GKE なら GPU など使える を解決できる。 ポケモ…

空のUPDATEによるDEADLOCK

概要 負荷検証中に deadlock のログを見つけて、その対処をしたのでメモです。 クエリ特定 SHOW ENGINE INNODB STATUS; コマンドを実行すると、 LATEST DETECTED DEADLOCK でどのクエリで deadlock が発生したのかわかります。 今回は INSERT INTO tokens (i…

Golang で iOS/Android アプリ内課金の実装

go

概要 アプリ内課金の実装に関わったので、メモ。 ※アプリ内課金はプラットフォーム側の影響を受ける。記載内容が古くなっている可能性があるので注意。 テーブル設計 products テーブル App Store, Google Play に登録するアプリ内課金アイテムの情報。produ…

Github Actions で Firebase ファンクションをデプロイする際の注意点

概要 PR をマージしたときに、 Github Actions で Firebase ファンクションをデプロイするようにしたとき、 Github Actions が2回走り、その内1回のデプロイでエラーになりました。 それを解決した時のメモです。 エラー ログの一部抜粋です。 ※Firebase フ…

Docker コマンドメモ

概要 Dockerコマンド、毎回ググってる気がするので、自分用のメモ。 コマンド ビルド docker build -t [イメージ名] . ARG を使う場合、DockerfileにARGを定義して docker build --build-arg TOKEN=$TOKEN -t [イメージ名] . タグ docker tag [イメージID] […

Github Actions で Go のテストを実行する。その2

go

概要 kawabatas.hatenablog.com こちらに加え、go get でプライベートリポジトリのライブラリを使いたくなった。 手順 Github の Personal access token を作成する。こちら Github Actions のリポジトリに Secretsを追加する。こちら 下記のコードで実行す…

DeleGateのコンテナイメージを公開した

SOCKS プロキシサーバーの DeleGate をコンテナで立てたかったのだが、 docker hub で上位にあったイメージがエラーで使えなかった。 hub.docker.com $ docker-compose up Creating delegated_delegated_1 ... done Attaching to delegated_delegated_1 dele…

AWSのコンテナ関連サービスを調べる

概要 AWSのコンテナ関連サービスを調べた。 AWSのコンテナ関連サービス AWSのコンテナ関連サービスの選定例の紹介 ECS/EKS/Fargate/EC2 コントロールプレーン コンテナの管理:クラスターで Docker コンテナを簡単に実行、停止、管理できる ECS Cluster > Se…

Elastic Beanstalk Multi-container Docker 試してみる

概要 Elastic Beanstalk Multi-container Docker を試してみた。 VPC、Subnet、ECRリポジトリは事前に作成済みとする。 ネットワークロードバランサーで、1080番ポートを使う。 Elastic Beanstalk Multi-container Docker 複数コンテナの Docker 環境 Elasti…

ECRにコンテナイメージをあげる

概要 ECRにコンテナイメージをアップロードする手順メモ。 ECRドキュメント 手順 ローカルでビルドしておく docker build -t kawabatas/delegated . 認証 aws ecr get-login --region <リージョン> --no-include-email 出力された docker login コマンドを実…

ECS Fargate + NLB を CloudFormation で構築する

概要 ECS Fargate + NLB を CloudFormation でテンプレート化した。 VPC、Subnet、ECRリポジトリは事前に作成済みとし、 ECSクラスター/サービス/タスク定義、NLB、ターゲットグループ、セキュリティグループを CloudFormation で作成する。 参考 AWS CloudF…

ECS service discovery によって作られた Route53 zone を削除する

概要 ECS の機能の確認中に、ECS service discovery によって Route53 hosted zone が作られた。これを削除するメモ。 問題 Route53 の zone を AWS マネジメントコンソールから削除しようとすると、 The resource hostedzone/<ホストゾーンID> can only be …

Docker for mac で Kubernetes 環境構築

概要 Kubernetes のローカル環境が欲しくなった。 そういえば Docker for mac から使えるようになったという記事を見た記憶が... 使えるようにしたのでメモ。 バージョン stable版でも Kubernetes を使えるようになっていた。 手順 Preference を開いて Kube…

Lambda でシェルスクリプトを実行してみた

aws

Lambda でシェルスクリプトを実行するまでの動画を作ってみました。 公式ドキュメント www.youtube.com

Lambda Go のチュートリアルをやってみた

Lambda Go を動かすまでをやってみた動画を作ってみました。 AWS公式ドキュメント www.youtube.com

Golang でモックサーバーを作った

go

概要 Go で REST API 用のモックサーバーを作りました。 kawabatas/gomock バイナリの実行で、モックサーバーが起動する handler をパッケージにすることで、テストでも使える ということを意識しました。 gostub/gostub(紹介記事)を参考にさせていただき、r…

Golang+EchoのAPIにIPアドレスによるアクセス制限を設ける

go

概要 Golang + Echo の API に IPアドレスによるアクセス制限を設けたのでメモ。 実装 ほぼほぼこちらを参考にさせていただいた。 package main import ( "net" "os" "strings" "github.com/labstack/echo" ) // InternalIpFilter returns an middleware whi…

docker-compose で postgres -> mysql に変えたら起動できなくなった

概要 docker-compose で postgres -> mysql に変えたら起動できなくなりました。 無事解決できたのでメモです。 起動時のエラー $ docker-compose up -d $ docker-compose ps Name Command State Ports ---------------------------------------------------…

Golang Lambda を AWS X-Ray で表示する

概要 Golang Lambda で DynamoDB のトレース、外部HTTPリクエストのトレースをした際のメモです。 Lambda のトレースの有効化 Lambda での AWS X-Ray のセットアップにあるように、 「アクティブトレースを有効にします」にチェックを入れれば、Lambda の起…

Lambda から EC2 へ TCP 疎通を確認する

概要 セキュリティグループのインバウンドルールで TCP を許可している EC2 に対して、 VPC 内にアクセス可能にした Lambda、そうでない Lambda からの疎通確認をしてみました。 Lambda のランタイムは Go です。 Lambda のコード package main import ( "lo…

GitHub Actions で Go のテストを実行する

go

概要 GitHub Actions で Go の超シンプルなテストを実行してみたのでメモ。 GitHub Actions 現在 limited public beta で、使いたい人はこちらからエントリーが必要。 コード サンプルリポジトリはこちら。 .github/main.workflow を作成しただけ。 $ tree -…

【Go言語のtest】HTTPリクエストのテスト

go

概要 HTTP モックサーバがほしいなら、標準の httptest パッケージを使えばよいとわかったのでメモ。 コード GET リクエストを投げる ping 関数 func ping(url string) int { client := &http.Client{ Timeout: 5 * time.Second, } res, err := client.Get(u…

【Go言語のtest】interface を利用して mock を使う

go

概要 外部 API や DB が関わるコードのテストでモックを使いたい場面は多々あると思う。 interface を使って、テストでモックに切り替えることができるのでメモ。 インターフェイスを定義 type DB interface { Add(name string) error Delete(name string) e…

はじめての Go のテスト

go

概要 go を触り始めたばかりで、go のテストのことが少しわかったので、メモ。 書き方 テストのファイルは *_test.go main.go だったら main_test.go testing ライブラリを import して、func TestXXX(t *testing.T) という関数を作成する package main func…

go fmt をディレクトリ階層まとめて行う

go

go fmt をサブディレクトリ配下のすべてのファイルにまとめて行える $ go fmt ./...

Mac で Go の環境構築

go

概要 go の開発環境を設定し、go のプロジェクト作成までやったのでメモ。 goenv のインストール goenv は、go 言語のバージョンを管理するもの。 go 言語版の rbenv や nodebrew のようなもの。 リポジトリはこちら $ brew install goenv $ echo 'export GO…