ほげほげ

プログラミング、英会話、ヨガ、料理などの備忘録など。

git-flow VS GitHub flow

VSってほどでもないのですが、新しいプロジェクトでGitの運用フローをどうしようか少し迷いました。

git-flowの解説は以下

keijinsonyaban.blogspot.jp

GitHub flowの解説は以下

GitHub Flow (Japanese translation) · GitHub

どちらも有用ですが、GitHub flowの末尾のまとめに書いてあるような毎日デプロイ&リリースをこまめにしていく運用が今の理想なのでGitHub flowを今回は採用することにしました。 またGitHubを使用しているので、git-flowやhubflowなどの追加インストールが結局必要ないという点も良いと思った点です。

私はスマホアプリやWebアプリを作っていますが、パッケージ製品などの場合にはgit-flowが良さそうに感じました。

ライター始めました

私はずっと文章を書くことに対して苦手意識がありました。 このブログもアウトプットの練習として始めたものです。

そんな私が去年の9月くらいから、あるオウンドメディアでIT系の記事を書かせて頂いています。

これまでの約3ヶ月で10本の記事を執筆しました。 初めの1本は丸一日かかりました。 しかし最近では記事の内容にもよりますが、1000文字当たり1時間くらいで執筆することが出来るようになりました。 早く書くこと自体が目的ではありませんが、少しずつWeb記事の書き方が身についてきたように感じます。

あと半年〜1年くらい、週1本ペースで記事を書いていけば、Webライティングのスキルもある程度身につくかなと思います。 普段自分が調べないことも執筆依頼によって調べるきっかけになります。 記事を書くための調査で新しい知識を得られるのもメリットですね。

単価は安いですが修行期間と思ってしばらく続ける予定です。

Docker containerを全て削除する

たまにDockerの環境をクリーンにしたいことがあり、既存のコンテナを削除したいことがあります。 そんなときは次のコマンドで全コンテナの停止&削除を実施することができます。

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

AWSで無限課金しそうになった話

先日とあるプロジェクトでS3にプロフィール画像を登録したイベントでLambda関数を実行して、サムネイルを作成する仕組みを作りました。

仕事後に用事があったので、動作確認をしないまま帰宅したのですが翌朝S3を見ると。。。

hoge.png
hoge_thumb.png
hoge_thumb_thumb.png
hoge_thumb_thumb_thumb.png
...

(゚ロ゚;)エェッ!? プログラマなので見た瞬間に何が起きたかは理解しました。

なんとサムネイル画像の保存のイベントから更にサムネイル画像のLambda関数がキックされて、サムネイルの無限生成が発生していました。

幸いS3のキー長の制限かなにかに引っかかったのか1ファイル毎に200ファイル前後のサムネイルが生成されるという現象で済みました。

_thumb というサフィックスを拡張子の前に付与していたので助かりましたが、これがちょっとした検証のつもりで同じ名前でPUTしていたら無限ループになっていた思います。

久しぶりにヒヤリ・ハットを経験しました。

学び

  • イベントを検知するフォルダーとアウトプットの出力フォルダーは分ける

AWS[DynamoDB-Lambda-APIGateway with Cognito]

Cognito認証したユーザーがAPIGatewayを経由して、Lambdaを経由して、DynamoDBにデータ登録する検証をしたのでやったことメモ。

  • DynamoDBでテーブル作る
  • Lambdaで関数作って、DynamoDBにインサートする。(NodeJS) データはevent.name, event.messageで参照
  • Cognito でユーザーIDプール作る
  • Cognito認証のサンプルコードをもとにiOSにCognito認証組み込み(今回は匿名認証)
  • APIGatewayでリソースとメソッド作る。Lambdaで作った関数にひも付け
  • APIGatewayのメソッド設定で認証を有効にして、パラメタをLambdaに紐付ける設定をする
  • APIGatewayをデプロイする
  • APIGatewayから作成したAPI用のSDKをダウンロードしてiOSに組み込み
  • iOSからAPIを実行
  • DynamoDBにデータが登録される事を確認する

docker-compose で go get するパッケージを使う

未解決です。

docker-compose で go get しておくようなパッケージ (e.g. github.com/lib/pq)をインポートしているとそのパッケージがダウンロード出来てなくてエラーになる。 アタッチして、go get github.com/lib/pq した後に、go run app.go すれば問題ないが、docker-compose up で一気に起動できる方法を探している。

info.plist の値をBuild Configurationによって出し分ける

いろいろなライブラリでinfo.plistに値を設定して利用しています。 でもdebugとreleaseで値を出し分けたい事がよくあります。

この場合、Build Settings の User Defined に独自の値を設定するとBuild Configuration毎に異なる値を設定できるので便利です。 info.plistから参照するには ${HOGE} のように記述します。

参考

XcodeでFacebookAppIDとかをDebugとReleaseで分ける方法 - あぷすた