Postman v10 が発表された

Postman v10 のリリースが発表されました。 https://blog.postman.com/announcing-postman-v10/ 面白そうなアップデートが結構あったので、内容を簡単にまとめてみます。 Postman CLI Postman と同じランタイムで実行される。 Newman の基盤の上に乗っている…

Goで文字幅操作

golang.org/x/text/widthパッケージはテキストの文字列の操作ができる。 全角に変換 s := "ハンカクカラゼンカク" w := width.Widen.String(s) fmt.Println(s) fmt.Println(w) // output: // ハンカクカラゼンカク // ハンカクカラゼンカク s := "モトモトゼンカク" w := wid…

base64のまとめ

base64とはすべてのデータをアルファベット(a-z,A-Z)と数字(0~9)、一部の記号(+,/)で表す変換方式である。 データの長さを揃えるのに、空白に詰める無意味なデータ(パディング)として=を使用する。 URLや正規表現の中では+,-は特別な意味を持つことがあるの…

GoでPythonのlambdaっぽいプログラムを書いた

Pythonのlambdaって分かりやすい - Qiita を読んでGoならどうやって書けるかなーと気になったので書いてみた。 package main func double(n int) int { return n * 2 } func main() { lambda := func(n int) int { return n * 2 } print(double(2) == lambda…

GraphQLのN+1問題に向き合う ~問題提起編~

はじめに GraphQLを扱うデメリットとしてN+1問題が挙げられる。 なぜGraphQLだとN+1問題が起こってしまうのか考える。 そもそもN+1問題とは そもそもN+1問題とはなにか。 N件のデータと、取得したそれぞれのデータに紐付くデータを取得する際に、DBへN+1回の…

【AWS】最新の AMI を取得するコマンド

AWS の EC2インスタンスを利用する際に、最新の AMI を知りたい時があると思います。 そんな時には、CLIで以下のコマンドを叩きます。 aws ssm get-parameter \ --name /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 \ --region ap-northe…

ページングのソートで気をつけること

バックエンドの実装で、ページングしたデータを返す際の話。 基本ライブラリに頼っているのであまり実装のことを考えたことがなかったので、結構苦戦した。 以下のような数字を降順で並べたリストのデータを、ページングでフロントエンドに返すとする。 7,6,…

マイクロサービスとSOA

似ているよう異なる二つの概念をまとめる。 SOA(サービス指向アーキテクチャ) いくつかのサービスのコレクションによってシステムを実現する構造 ソフトウェアを繋ぐミドルウェアであるESB(エンタープライズサービスバス)によって、サービス間の結合を実現…

Elasticsearch のCRUD

いつでもElasticsearchでCRUDが実行できるように自分用のメモです。 ElasticsearchはREST APIを提供しているので、馴染みのある感覚でデータの操作を実行できます。 かといってもCurlで実行するのは辛いのでKibanaのコンソールを使います。 使用バージョン E…

Elasticsearch の基本用語

Elasticsearch に入門したということで基本の用語についてまとめました。 Document Elasticsearch に格納するデータの一つの単位を指します。 RDS でいうレコードに相当します。 JSON形式のオブジェクトです。 Documentは一つ以上のFieldを持ちます。 IDは指…

開発途中でプロジェクト名を変更した時は一括置換すること

僕の場合 Go を使用することが多いのですが、ディレクトリ名変更語にプロジェクト直下でgo buildをした時に古いプロジェクト名でバイナリファイルが作られ続け割と長い時間ハマりました。 これはgo.modのモジュール名を変え忘れたままだったことが原因でした…

CDK で DynamoDB Stream を Lambdaのトリガーにする時の注意点

タイトルを実現するために、半日近く溶かしたので備忘録として残しておきます。 CDKの細かい説明は省きます。 正常に動作するコードがこちら import { DynamoEventSource } from '@aws-cdk/aws-lambda-event-sources'; import * as dynamodb from '@aws-cdk/…

VPC内にElasticsearchを置く時の注意点

VPC内のプライベートサブネットにElasticsearchを置いたはいいけど、LambdaからAPI叩けないしKibanaもアクセスできなくて困ったときのメモです。 解決策 BastionServerとして同VPC内にEC2(パブリックサブネット)を置く - EC2にSSH接続してダイナミックフォワ…

VPC内にLambdaを置く時の注意点

LambdaをVPC内に置こうとしてエラーが発生した時のメモです。 マネコンからVPC、サブネット、セキュリティグループを指定して保存しようとすると以下のエラーが出ました。 The provided execution role does not have permissions to call CreateNetworkInte…