小さな買い物でもカードを使うようになった

ちょっと前まではコンビニでも小さな買い物でいちいちカード使うの面倒に思ってたのだけど、最近はすべての買い物でカードを使うようにしてる。

大した理由はないのだけど、シンプルに手間が減るのがよい

額が小さいほうがよりカード向き

コンビニで適当な買い物をすると大体1000円以下でおつりが数百円出てくると思う。 そうなると必然的に財布の残金を確認して、おつりの端数をまとめられないか計算するフローが発生する

カードで払えば提示してたまに署名を書くだけ。

そうすれば小銭を受け取らずに済んで財布が太るストレスや財布の中身を確認するストレスから開放されるので結構有意義だと思ってる。 (同じことは電子マネーにも言える)

デメリットが”ほぼ”ない

現金お金を払うタイミングが異なるだけでデメリットらしいものはあまり多くない。 手数料は考えられるが多くのチェーン店では手数料が取られない。反対に個人経営のお店では手数料取られる事がまだあるかもしれないのでそういう時はおとなしく現金を払おう…

また、大手家電量販店などポイント還元率が減るケースもあるのでそういう時もおとなしく現金がよさそう…(家電量販店と提携したカード作れば倍率が変わないこともあるけど)

まとめ

現金払う事って習慣になってるので大したコストと認識してないかもしれないけど、実は結構手間がかかる行為だと思っててそこを補完してくれる便利な道具があるなら積極的に使っていこう。

※自動チャージされる電子マネーに対しても同じことが言えるかも

AWS OpwsworksのnodeLayerでDeployする度にnpmのversionが初期状態に戻ってしまう

Opsworksの標準で選べるnpmのversionが古いので Configure 時に以下のRecipeを実行するようにしてた。

execute "upgrade npm" do
  command "npm install -g npm"
  action :run
end
execute "upgrade node" do
  command "sudo npm install -g n;sudo n stable"
  action :run
end

ただ、Opsworksの仕様なのかDeployする度にVersionが初期状態に戻ってしまう現象が発生して、2回目行こうのDeploy時にnpm install で問題が起こる現象に悩まされていた。

いまのところ、対処療法的に ↑のrecipeを Deploy, UnDeploy時に実行したところnpm install がコケル問題は解決

もっと良い解決方法がないかAWSのサポートに聞いてみよう...

追記

サポートに問い合わせたところ、yumに入ってるopsworks-nodejsの問題のようで近日中には修正されるそうです。

それまではデプロイ後にnpmを更新するスクリプトを入れる対応をして欲しいとのこと。

まぁ、修正されるようでよかった

追記2

デプロイ前後に上記のスクリプトを入れたところ他の問題が発生した。 Opsworksがnpm install する段階ではnodeのバージョンが下がっていて古いバージョンで npm install したあとで新しいNodeに更新されて、node server.js ような実行手順になる。

そうなるとinstallした段階とstartするときでNodeのバージョンが異なりC実装のネイティブを叩いているものなど一部のモジュールが正常に動かなくなる。

今回は諦めて古いバージョンのNodeでも動くようにソースを全部書き換えた

追記3

このバグは治ったそうです

マイクロサービスアーキテクチャ 買った

www.oreilly.co.jp

買った

3章まで呼んだざっと感想

とにかく内容が広い、概念からはじまりアーキテクトとして検討すべき項目はなにか、どのように分割するべきなのかなど。

自分は今日購入して3章までしか読んでないけどいままでがWEB記事をなんとなく読んできただけだったのでとても勉強になった。

誤解してた部分が多かったこと、考えもしてなかった検討事項があったことがこんなに多かったとは。。。

決して銀の弾丸ではなく、あくまでベストプラクティスのパターンの一種なんですね。

マイクロサービスを実際に導入したが分割に失敗して、結局モノシリスアーキテクチャに戻して1年後にマイクロサービスに分割しなおした話やわけかたに失敗してデプロイフローが複雑になりすぎた話など自分が経験したくないけど知らなければ意図せず再現してしまいそうな問題が多数紹介されてるので少しでも興味がある人は読むべき。

明日から4章を読むのが楽しみだ。

それにしても、DDD本やIDDD本が前提に語られるとかハイコンテクストすぎません?

Javaマルチスレッド入門: 並行処理の最新API対応 読んだ

Amazon CAPTCHA

2ヶ月くらい前に読んだ。

値段の割に内容がしっかりしててよかった。

内容的には基礎的なものが多くて、正直Java並行プログラミングに書いてあったようなことしか書いてないのだけど、あの書籍は絶版になってしまったので今から人にすすめるならこっちかな。

自分は知識の整理に役立ったのでよかったです。

【Android】UniWebViewでWebViewを開いた状態でアプリをバックグランドにしてフォアグラウンドにするとUrlSchemeが効かなくなる問題

AndroidManifestでUniwebView.AndroidPluginがLaunchActivityになってないと発生するそうです。

他のライブラリでLaunchActivityにする必要があるものがある場合はそれを含めてjarをリコンパイルする必要がありました。

下記のサイトに従うとできると思います http://uniwebview.onevcat.com/manual#manual-recompile

原因はAndroidに詳しくないのでなんとも言えないのだけど、LaunchActivityでないとバックグランドからフォアグランドに戻ったタイミングでアプリがメインスレッドを取得できずにUrlSchemeをハンドリングした時の処理に到達しないため。

Unity5.3.3でファイルのタイムスタンプを更新しようとしたら一部のAndroidでハマった

                                                                       
File.SetLastWriteTime(outPath, lastModified.Value);

↑の関数でUnityでファイルのタイムスタンプを更新しようとしたらInvalidParameterって例外が出る端末があった。

再現性を調べたわけではないけど再現した端末はすべてAndroid4.2~4だった。

調べていくうちにXamarinでも似たようなエラー報告があることがわかって、おそらくXamarinのバグだろうって思ったのでAndroidのみAndroidJavaClassを使用して解決した。

  #if !UNITY_EDITOR && UNITY_ANDROID
                                        using(var file = new AndroidJavaObject("java.io.File", outPath)){
                                            var lm = lastModified.Value;
                                            var result = file.Call<bool>("setLastModified", lm.ToFileTimeUtc());
                                            Debug.LogFormat("{0}", result);
                                        }
                                        #else
                                        File.SetLastWriteTime(outPath, lastModified.Value);
                                        #endif

いまのところこれで問題は起きてない。

iOSでUniWebViewのインスタンスの生成・破棄を繰り返すとクラッシュする

面倒くさいバグを踏んだ。

※UniWebViewとはUnityで簡単にWebViewを扱えるライブラリ。難しいことがなくてやりたいことに集中できるので重宝してる。 http://uniwebview.onevcat.com/

iOS版の実装に何か問題があったんだろうね。

メモリリークしてるんだろうけど、WebViewのインスタンスを破棄する直前に about:blank を読み込んだら解決した。

まぁ、iOSのWebViewがすごくメモリを食うのでインスタンス破棄時に動くGCが原因なんじゃないかと思う。