[読書メモ] ゼロから作るDeep Learning: 第1章

O'Reilly Japan - ゼロから作るDeep Learning

  • 使うのはPython 3系
  • Anacondaというディストリビューションを使ってインストールするのが楽
  • :忘れない!
  • NumPyのarray
    • element-wise(要素数が同じ)な計算
    • ブロードキャストによるスカラ値や形状の異なる配列との演算
    • 1次元はベクトル、2次元は行列、一般化したものがテンソル(この本では3次元以上をテンソルと呼ぶ)
    • X[X > 15]という書き方おもしろい
  • Matplotlib便利

[読書メモ] ゼロから作るDeep Learning: まえがき

新しいアプリを作ろうと思ってたんだけど、なかなか決まらないので積読状態だった O'Reilly Japan - ゼロから作るDeep Learning 読み始めることにした。

今まえがきを読んだところ。良いこと言ってる。

  • 聞いたことは忘れ、見たことは覚え、行ったことは理解できる
  • 頭を抱えて立ち止まり、時間をかけることは理解のためには大切

次のアプリは承認欲求的にそれなりにダウンロードされたいな、と思っていたんだけど、自分が苦手な分野であるこれ系をちゃんとやりとげることも自己承認的にとても良さそうなので頑張ってみることにする。

しかし、翻訳とばかり思ってたこの本、国産だったか…!

Failed to load resource: Cannot make any requests from null

iOS 9のWebViewでCORSなリクエストを飛ばそうとするとこのエラーが出る?
ちゃんと調べてないけどiOS 10なら出ないのでおそらくそういうことらしい。

SwiftのKeychainAccessで保存した値をReactNativeで取得する

Swift製のアプリをRN化するにあたり、Swiftで

let keychain = Keychain(service: BUNDLE_IDENTIFIER)
keychain["token"] = token

したものをReactNativeで取りたかった。

最初に試したのは、oblador/react-native-keychain: Keychain Access for React Native

import * as Keychain from 'react-native-keychain'
Keychain
  .getGenericPassword()
  .then(credentials => {
    console.log(credentials)
  })
=> { service: BUNDLE_IDENTIFIER, username: {}, password: '2' }

passwordのところに取りたい文字列の最初の1文字だけが入ってくるというよくわからない状態になった。
Obj-cの中身を直す元気はなかったので別ライブラリを検討することに。

お次はclassapp/react-native-sensitive-info: Android Shared Preferences and iOS Keychain for React Native

import SInfo from 'react-native-sensitive-info';
SInfo.getItem('token', {
  sharedPreferencesName: BUNDLE_IDENTIFIER,
  keychainService: BUNDLE_IDENTIFIER
}).then(token => {
    console.log(token)
})

であっさり取れた。
もっと長々とハマるかと思っていたので助かった。

NginxとUnicornでRailsをサブパスで動かす

サブパス?サブURL?サブディレクトリ?何ていうのが適切かわからないけど。

https://github.com/gitlabhq/gitlabhq/blob/05692e0bfab58ddc4082394c711b50b27d89f4b6/config/unicorn.rb.example#L18

GitLabのソースではnon-rootと呼ばれていた。

https://github.com/gitlabhq/gitlabhq/blob/123b3ec432227f14f6baec292f1610e839b9f705/config.ru#L20

config.ruも拝借。

さらに、

config.assets.prefix = '/path/assets'

も追加。

Nginxはupstreamとlocation関連をコピペで追加して書き換えた。


Capistranoを使ってる場合、

set :assets_prefix, 'path/assets'

も必要だった。先頭のスラッシュいらない。(prefixなしでdeployしたことがあるとそっちで生成されたmanifestがあるからエラーにならず気づかなかった)