serverless.ymlでDynamoDBテーブル定義エラー
以下みたいなDynamoDBテーブルをserverless.ymlで定義し、deployしようとするとエラーが。
resources: Resources: HogeUsers: Type: "AWS::DynamoDB::Table" Properties: TableName: Users AttributeDefinitions: - AttributeName: Id AttributeType: S - AttributeName: UserName AttributeType: S KeySchema: - AttributeName: Id KeyType: HASH ProvisionedThroughput: ReadCapacityUnits: 1 WriteCapacityUnits: 1
エラー内容
Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes
そうでした。
DynamoDBはスキーマレスなので、キースキーマとなる属性以外最初に定義する必要はありません。
なので、キースキーマ(プライマリキー、レンジキー) やセカンダリインデックスで使用する以外の属性を記載していると、
キースキーマとセカンダリインデックスと一致しないよ、と怒られてしまいます。
RDBばかり使っていたので、たまに混乱することがあります。
特定のDockerイメージに属するコンテナを一括削除してスッキリする
気づいたらあるDocker imageのコンテナが200個ほどできておりました。
docker rm コンテナ名 コンテナ名 コンテナ名
と複数指定して削除もできますが、200個は無理ということで、特定のdocker imageに属するdocker containerを一括削除するコマンドが以下です。
特定のDockerイメージに属するコンテナを一括削除するコマンド
docker rm $(docker ps -a | grep "Dockerイメージ名" | awk '{print $1}')
docker ps -a で起動していないものも含め全てのcontainer を列挙します。
これをgrepで絞込み、1つめに出力されるdocker container のIDを、docker rm に渡しています。
これでスッキリ!!
スッキリしました。
追記: もっとスッキリ書ける方法
ブコメにてもっといい方法を皆様に教えていただけました。ありがとうございます!!
bottomzlife さんおすすめの方法
$ docker rm $( docker ps -qa --filter name=image名 )
mapk0y さんおすすめの方法
$ docker rm $(docker ps -a -q -f ancestor=image名)
Twitter Kit for iOSを使う
Twitter 関連のモバイルアプリを作るなら非常に便利なのが Twitter Kit。
Twitter公式のライブラリです。
導入がすごい簡単。
Twitter Installation — Fabric for Apple documentation
わかりにくいんだけどこちらにライブラリ公式ドキュメントがあります。
TwitterKit Reference
Xcode Embedded framework で no such module
iOSプロジェクトでDDDやってみたいと思い、名前空間切れたり、副次的なメリットも多くて色々嬉しいということで embedded frameworkに挑戦してみた。
- ui
- domain
- data
というembedded framework を作って作業をすすめた。問題もなくいい感じ。
が、最初は順調に行ってたのだけど、途中からなぜか domain層から import data 記述が no such module エラーをはくようになる。
また、初めて見るこんなファイルからもエラーが。
module.modulemap
module data.Swift {
header "data-Swift.h"
}
なぜ突然‥?!と思ってたんだけど、 framework同士の依存関係も明示的に設定してあげないといけない模様。
TARGETS の domainから Build Phases -> Target Dependency でdataフレームワークを追加してあげるとエラーが出なくなった。
それにしても、むしろなぜ今まではこの依存関係を明示していなくても動いていたのかが謎。うーむ。
まぁ問題は解決したのでよしとしよう!
参考リンク
【新しいAppleの push通知】http/2を使ったAPNs Provider API
http/2を使ったPUSH通知について (APNs Provider API) が出てたんですね。
以下にまとめたとおりいいことづくめですが、各種PaaSは未対応のところが多い模様。
しかし、自前実装でも十分その恩恵を受けられます。
以前のめんどくささに比べるとcurlでコマンド叩いてPUSH通知送れるのは正直感動すらあります。
APNs Provider API のいいところ
- APIにPOSTするだけで通知送信できる
- 通知の成功/失敗がすぐ確認できる。失敗した場合はその理由も。 => なぜか届かない!みたいな事象に苦しめられることがなくなる
- 本番/開発で証明書を分けなくて良い
懸念
- 各種PaaSが未対応のところが多そう
各言語でもラッパーライブラリデているのではないかと思います。(未確認)
Rubyはありました。
通知発行用Rubyライブラリ
サーバーサイドを自前で実装している方は、Paasを待たずに自前でやってしまったほうがよいのでは。
公式ドキュメント
cURLで通知を送る