API側でCognito認証してアプリ側でCognito認可してamplify

AWS Amplify はすごく便利だけど、レールから外れると難しい。 普通にやると、Cognitoで認証・認可して Pinpoint でPUSH通知が簡単にできる。 ただ、Cognitoの認証部分だけAPI Gateway経由で呼び出すようなシステム構成だと簡単ではない。 Cognitoの認証と認…

DynamoDBと喧嘩しないスキーマ設計

DynamoDBはフルマネージドな「Key-Value Store」だ。 まず、KVSであることを前提に考える必要がある。 サマリー 1つのテーブルで全てのデータを持つ スキーマレスだけど、スキーマ設計はRDBよりも考える必要ある 注文履歴などの一覧をクエリする難易度が高い…

辛くならないmarginの付け方を考える

CSS

WIP: 図は時間あるときに付けます。 なんでそんなマージンの付け方してるんだー。ってならないことがない。 CSSは簡単なのだけど、継続的に開発するのが非常に難しい。 maginの設計もアプリケーションで統一してないと、Viewが動的に変化する箇所で、 意図せ…

1KBを超える文字列をAsyncStorageに保存してはいけない。

1KBを超える文字列は、読み出しに時間が掛かりすぎるので避けたほうが良い。 AsyncStorageにダウンロードした画像をbase64で保存して、次回からキャッシュから取り出すみたいな事をやってる人も多いんじゃないかな。 ただ、iOSの場合は、1KB以下の文字列はオ…

バリデーションを再考する

僕は以前、 「DDDで考えるマイクロサービスのバリデーション」という大それた記事を書いた。 qiita.com マイクロサービスっていうのが、ちょっと良くわかんない。 整理されてなくて、何が言いたいのかも良く分からないので、 再考した結果を、リライトしてみ…

非常駐フリープログラマーになるためにしたこと

こんにちは、hikoukiです。 ex-crowdworks Advent Calendar 2018の18日目の記事になります。 このアドベントカレンダーは、元クラウドワークスのエンジニア達によるものです。 僕も、今年の8月末で退職して、個人事業主にジョブチェンジしました。 2017年12…

コードレビューって効率良いって話

こんにちは、hikoukiです。 この記事は ex-crowdworks Advent Calendar 2018 6日目の記事です。 元クラウドワークスの人達によるアドベントカレンダーなので、僕もクラウドワークスを退職済みです。 フリーになるために、辞めさせて頂きましたが、良い会社な…

Firebase Cloud Messaging(FCM)のPUSH通知をトリガーに、スリープ状態から復帰する

Androidの場合、スリープ状態でPUSH通知を受けると、音だけ再生されて画面は真っ暗。 それだと気づけないので、LINEとかのPUSH通知とかは、PowerManagerで電源をONにした後にPUSH通知を作って表示したりしてます。 FCMで普通にやるとPUSH通知の受信から制御…

React: Componentをreconstructする。

React, ReactNativeで、Componentを再構築(reconstruct)する

「やさしいLispの作り方」を読んで言語の作り方を学ぶ

「やさしいLispの作り方」はC言語で簡単なLispの処理系を実装して、REPLで動かすまでが書いてあります。 低レイヤーの知識がまったくない僕にとっては学びが多かった。 やさしいLispの作り方: C言語で作るミニミニLisp処理系作者: 笹川 賢一出版社/メーカー:…

grpc-gatewayでCookieをmetadataに設定しない

grpc-gatewayはデフォルトで、一般的なHeaderの値を、Metadataに入れてリクエストを中継します。 ただ、Cookieの値は使わない場合もあるし、 ユーザーに見えるkeyよりも、もっと意味持たせたkeyをMetadataに入れたいとかある。 そんな時は、mux作るときに、S…

grpc-gatewayにAPIを実装する

これはかなりおすすめしないですが、とりあえず検証ということでやってみました。 helthcheckぐらいならいいかも? まずは、登録するハンドラーを用意。 package echo import ( "io" "net/http" "github.com/grpc-ecosystem/grpc-gateway/runtime" "google.g…

1つのgrpc-gatewayに複数のAPI(gRPC)サーバーを繋ぐ

1つのgrpc-gatewayに複数サービス繋いで、認証は共通化するみたいなの作りたかったので調べてみました。 実装方法は簡単で、RegisterXXXXHandlerFromEndpoint に渡すendpointを変えればいいだけでした。 package main import ( "flag" "net/http" "github.co…

grpc-gatewayでネストされたリクエストパラメタを指定する

gRPCで、ValueObject的にサービスのリクエストメッセージを定義することはよくあるのかなーと思います。 ただ、grpc-gatewayを使う際に、型がネストするので、パラメタの指定がわかりにくかった。。 まとめられてるページもなさそうだったので、ここでまとめ…

Macの容量がなくなったらやること。

brew を綺麗にする linkしてないものを削除する。 $ brew prune 古いバージョンのものを削除する。 $ brew cleanup Docker を綺麗にする Dockerが使ってる容量を確認する。 $ docker system df 停止しているコンテナや使っているイメージ、Volumeを削除しま…