EdhitaのSwift 4対応

https://github.com/tnantoka/edhita/commit/53a97e55dcf79defe98afd800abd2ee5eac7c491

Swift4 [SE-160 Limiting @objc inference] 概要 - Qiita

基本これの対応のみという感じだった。
migrationだけだとFXFormが動かなくなったので@objcを追加した。

Swift 3 @objc inferenceDefaultにしてクラッシュしなければOK。

1024pxのアイコンをアプリに含めないといけなくなったんだけど、事前警告無しでアップロード時に怒られるのは罠だった。

failed to find Build Tools revision

ReactNativeの案件を触ることがあり、react-native run-androidをおもむろに叩いたところ、

A problem occurred configuring project ':app'.
> A problem occurred configuring project ':react-native-splash-screen'.
   > failed to find Build Tools revision 23.0.3

でこけた。

Androidの仕組みがよくわかっていないが、26が入っていてもダメらしい。メジャーバージョンが違うからだろう。
23.0.1も入っていたが、これは当然古いのでだめというのはわかる。

特定のリビジョンのSDK Build-toolsをコマンドでインストールする - Qiita
androidコマンドで入れれるらしいが、PATHが通ってなくてどこにあるかわからず。

MacにAndroid Studioを入れて、adbを使える状態にする - Qiita
これだ。

$ ~/Library/Android/sdk/tools/android list sdk -a
  13- Android SDK Build-tools, revision 23.0.3

$ ~/Library/Android/sdk/tools/android update sdk -a -u -t 13

でいけた。

Edge/IEで確認環境にログインできなかった

普段保守しているRailsのプロジェクトは、GitHubでプルリクエストを送るたびに自動で確認環境にデプロイする、ということをやっています。

で、この確認環境にIE/Edgeだとログイン出来ないという問題が発生。(正確にはずっとこの問題はあったんだけど、Windowsは各自ローカルで見てね、みたいになっていた)

  • オレオレSSL証明書のせい? → HTTPにしてみても駄目なので違う
  • サブサブドメインが悪い? → そういうわけでもなさそう
  • ログインは https://github.com/flyerhzm/switch_user というGemでやっているけど、関係なさそう

小一時間悩んだ結果…

ホスト名にアンダースコアが含まれているとIEでCookieが保存されない | CreativeStyle

これでした。
あぁ、知ってた…忘れてた……。


http://blog.tokumaru.org/2011/10/cookiedomain.html

IE9 サブドメインにも送信される

というのが今のEdgeでも変わらずこの仕様らしく、追加でハマった。
(セッションIDが重複して送られていた)

resize2fs /dev/xvda1: Nothing to do!

EBSがオンラインで拡張、タイプ変更、IOPSの変更ができるようになりました。 – サーバーワークスエンジニアブログ
のニュースを見てから、ディスク拡張の機会に恵まれなかったのですがついに今日その日がやってきました。
(AWSは高いので個人では使ってない)

日本語化されてない「Modify Volume」メニューからさっくりと実行。
あとはOSでコマンド叩くだけでしょ…

$ sudo resize2fs /dev/xvda1 
resize2fs 1.42.12 (29-Aug-2014)
The filesystem is already 7863803 (4k) blocks long.  Nothing to do!

…!?

$ lsblk
xvda    202:0    0  50G  0 disk 
└─xvda1 202:1    0  30G  0 part /

Linux パーティションを拡張する - Amazon Elastic Compute Cloudをやる必要がある!?それなら結局今まで通りの手順の方が楽なのでは…とか思っていたら、

Modify VolumeでAmazon Linuxのルートボリュームサイズを変更しても変わらないときの対処方法 | Developers.IOの通りgrowpartすれば解決でした。

めでたしめでたし。

PyCall-MNISTのリファクタリング(レイヤークラスを使用)

勉強用に作っている https://pycall-mnist.herokuapp.com をリファクタリングした。

O'Reilly Japan - ゼロから作るDeep Learning の第4章をベースにした素朴な実装だったが、第5章を参考にレイヤークラスで処理するようにした。

predictに(勝手に)用意していたskip_activate_outputフラグは不要になった。
必要な時にlastLayerを呼び出す形に。
※ 推論の時は生データ(スコア)でいいのでlastLayerは不要。

まずはSigmoidのまま実装して、rspecが通ることを確認。
その後、ReLUに切り替えた。

Sigmoid

train acc, test acc | 0.9468333333333333%, 0.9452%

ReLU

train acc, test acc | 0.9791166666666666%, 0.9713%

ReLUにしただけで認識精度が3%も上がった…!

PyCallのバージョンも上がっていたので合わせてアップデート。特に問題なし。

ソース

Layers by tnantoka · Pull Request #1 · tnantoka/pycall-mnist

参考

Python DeepLearningに再挑戦 15 誤差逆伝播法 Affine/Softmaxレイヤの実装 - Djangoroidの奮闘記