Heroku Redis の初期設定はメモリMAX時にエラーとなる

以下の様なエラーが発生した。

Redis::CommandError
OOM command not allowed when used memory > 'maxmemory'.

次の資料によると、Heroku Redis の初期設定はメモリMAX時にエラーとなるようだ。
Heroku Redis は初期設定で利用してはならない - ボクココ
Timeoutの初期設定は加わったようだ。今見ると300となっている。

$ heroku redis:info
=== redis-acute (REDIS_URL)
Plan Hobby Dev
Status available
Created 2016-01-18 05:52 UTC
Version 3.0.5
Timeout 300
Maxmemory noeviction

$ Maxmemory policy for redis-acute (REDIS_URL) set to allkeys-lru.
allkeys-lru evict keys trying to remove the less recently used keys first.

$ heroku redis:maxmemory --policy allkeys-lru
=== redis-acute (REDIS_URL)
Plan Hobby Dev
Status available
Created 2016-01-18 05:52 UTC
Version 3.0.5
Timeout 300
Maxmemory allkeys-lru

iOSの画面に対してURLを割り振って、自由に画面を表示する

使用場面

Rails風なRoutesをiOSに実装したい。そのRoutesを使用して newsapp://articles/1234 のようなURLSchemeを上手く処理したい。

そして、UINavigationControllerに対して[HomeViewController, ArticleViewController]のような構造な上に起動したタイミングでArticleViewControllerを表示したい。

また、新規登録時に利用規約画面を出しつつも、その下にはちゃんと目的のArticleViewControllerが表示されるようにしたい。

必要な構成

  • ViewControllerの表示構造を制御できる層
  • URLSchemeを解釈する機能
  • 解釈したパラメータをViewControllerに渡す機能
  • 解釈したパスから構造を決定する機能

必要な機能

  • Routerを作成
  • ViewControllerの生成
  • ViewControllerのキャッシュ
  • パスに対する画面構造の生成

結論

やってみたけど、実装は出来ました。一般化・ライブラリ化は、システムに深く根付きすぎていて分離できず、現段階では難しそうでした。

Container View Controllerを学ぶ

資料で学ぶ

ライブラリで学ぶ

URLSchemeの処理効率化の為にiOSの画面とURLの対応を考える

はじめに

WEBは画面に対してURLがあります。それに対して、iOSには画面に対してURLはありません。この無関係な2つの特性が結びつく時があります。それはURLSchemeを使う場合です。

例えば newsapp という Custom URLScheme を設定すると newsapp:// とするとアプリが起動しますね。簡単です。

newsapp://articles/12345 とURLSchemeがあった場合に話は少し難しくなります。このURLとiOSの画面はどう対応ずけるのでしょうか?例えば、逆にiOSの全てに画面にURLが設定されていれば、対応付けは簡単になるんじゃないでしょうか。

そこで、iOSの画面にRoutingを導入できるライブラリを調査しました。

続きを読む

$ dg deployしてAn error occurred while triggering pipeline: Environment variables {GO_HOST, GO_USER, GO_PWD} must be set で苦しんでいる君に告げる

iOSエンジニアの君がインストールしたのはgem install dgだ。

君がほしいのはgem install deploygateだ。

$ dg deploy

An error occurred while triggering pipeline: Environment variables {GO_HOST, GO_USER, GO_PWD} must be set