Screaming Loud

日々是精進

社内勉強会でDeepLearningの話をしました。

もともと自分が知りたかったということもあり、DeepLearningの話を社内勉強会で発表しました。

そもそも機械学習自体を知らない人もいるので、入門的な機械学習とはなにか?から始めたのですが、
結局、中途半端に数式をいれたり削ったりしたために、結局わかりづらいスライドになってしまった感が否めません。

何か間違いなどあれば指摘していただければ幸いです。

www.slideshare.net

MacのYosemiteからEI Capitanにアップデートした際のbrewの対応

特に問題なくアップデートできました。

EI Captianから/usr/localを自分で作れなくなったので、EI Capitanからbrewのデフォルトである/usr/local/Cellarが使えません。
ただ、Yosemiteからの移行の場合は、すでに/usr/local/Cellarが作られているはずで、問題なくアップデートできました。

その際、いくつかやるべき手順があったので、メモしておきます。

EI Capitanからのアップデート

そもそもbrew cask updateをかけても以下のエラーが出ており、困っていたので実行しました。

$ brew cask update
==> error: Ref refs/remotes/origin/master is at 3eaf298cbbe8fc31d5f022e742c8b5dc
==> error: Cannot lock ref 'refs/remotes/origin/master':
==> Error: Failure while executing: git pull --ff --no-rebase --quiet origin ref
error: Ref refs/remotes/origin/master is at 3eaf298cbbe8fc31d5f022e742c8b5dcd0ef06aa but expected cd5cc7e2d6be6d657a749570551f71564da06437
error: Cannot lock ref 'refs/remotes/origin/master':
Error: Failure while executing: git pull --ff --no-rebase --quiet origin refs/heads/master:refs/remotes/origin/master
brew cask update  2.98s user 2.25s system 42% cpu 12.327 total

そもそも、その前にEI CapitanからRootlessという概念が加わり、操作できないディレクトリが増えました。
OS X 10.11 El Capitanにアップデートするさいの注意点まとめ。

なので、その対応がbrewに関しても必要となっています。

1. brewが使う/usr/localの権限を変更する。
homebrew/El_Capitan_and_Homebrew.md at master · Homebrew/homebrew · GitHubに書いてあるとおり、実行します。
そこそこ時間がかかります。

sudo chown -R $(whoami):admin /usr/local

2. brewレポジトリを最新にする。
/usr/localの権限を変えただけだと、まだ$ brew cask updateのfetchエラーが出ていたので、以下を実行しました。

$ cd `brew --prefix`
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = false
        autocrlf = false
[remote "origin"]
        url = https://github.com/Homebrew/homebrew.git
        fetch = +refs/heads/*:refs/remotes/origin/*

$ git fetch origin
$ git rebase origin/master

これで、repositoryを最新にして動かすことができました。

参考:qiita.com

anyenvで入れたphpenvに対して、composerを使う

デフォルトではcomposerなどがホームディレクトリに入ってしまうので、
anyenvで入れたphpenvで切り替えた時に、対応ができません。

anyenvの入れ方はyuutookun.hatenablog.com
を参照してください。


ですので、別の入れ方をする必要があります。

phpenv 環境で composer global でパッケージをバージョン別にインストールするプラグイン - ngの日記を参考にいれてみました。

まず、以下を入れます。
ngyuki/phpenv-composer · GitHub

$ cd ~/.anyenv/envs/phpenv/plugins
$ git clone https://github.com/ngyuki/phpenv-composer.git
$ phpenv rehash

次にcomposerを実行します。

$ cd ~/.anyenv/envs/phpenv/plugins
$ phpenv-composer/libexec/composer
Download composer.phar ...
#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /Users/yuto/.anyenv/envs/phpenv/plugins/composer.phar
Use it: php ./composer.phar
Move composer.phar to /Users/yuto/.anyenv/envs/phpenv/versions/5.6.9/composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (c41079192f38f0fc446b17baa8f628dcb3b61e7d) 2015-09-28 09:38:16

出力から分かる通り、composer.pharがphpの5.6.9のフォルダ以下に移動されています。

ここで、ホームディレクトリを確認すると、ちゃんと移動していることがわかります。

$ phpenv-composer/libexec/composer config -g home
/Users/yuto/.anyenv/envs/phpenv/versions/5.6.9/composer

例えば、larabelをインストールすると、

$ phpenv-composer/libexec/composer global require "laravel/installer=~1.1"
$ ls ~/.anyenv/envs/phpenv/versions/5.6.9/composer/vendor/
autoload.php bin          composer     guzzlehttp   laravel      react        symfony

でちゃんとインストールされていることがわかります。

anyenvでphpenvとかpyenvとかenv系をまとめて管理する

実行環境

phpenvが入らない

phpのバージョンを管理するphpenvを入れようと

brew install phpenv
brew install php-build

をしたところ、phpenvが動かなかった*1ために、anyenvを入れることにしました。

anyenvはphpだけではなく、ruby, python, perl, nodeなどenv系をまとめていれることができます。

ほぼ、欲張り?anyenvでモダンな開発環境構築。PHP,NodeJS,Ruby,Perl,Python - Qiitaを参考にして、いれました。

anyenvの導入

まず、
自分のローカルに入っているenv系を削除します。

brew remove phpenv
brew remove rbenv

env系が削除できたら、

git clone https://github.com/riywo/anyenv ~/.anyenv

次に、パスを追加します。
今まで入れていたenv系はコメントアウトして、 ~/.zshenv に以下を書き加えました。

if [ -d $HOME/.anyenv ] ; then
    export PATH="$HOME/.anyenv/bin:$PATH"
    eval "$(anyenv init -)"
    # tmux対応
    for D in `\ls $HOME/.anyenv/envs`
    do
        export PATH="$HOME/.anyenv/envs/$D/shims:$PATH"
    done
fi

その後は、再読み込みです。

source ~/.zshenv

ここでanyenvを使い、インストールします。

$ anyenv install plenv
$ anyenv install pyenv
$ anyenv install rbenv
$ anyenv install phpenv

ただこのままだと、自分の環境では以下の様に、plenvとpyenvが入りませんでした。

phpenv:
* system (set by /Users/yuto/.anyenv/envs/phpenv/version)
plenv:
/Users/yuto/.anyenv/libexec/anyenv-versions: line 12: plenv: command not found

pyenv:
/Users/yuto/.anyenv/libexec/anyenv-versions: line 12: pyenv: command not found

rbenv:
* system (set by /Users/yuto/.anyenv/envs/rbenv/version)

そこで、以下のanyenvのプラグインを入れることで解決しました。

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ anyenv update
$ git clone git://github.com/aereal/anyenv-exec.git $(anyenv root)/plugins/anyenv-exe
$ git clone https://github.com/znz/anyenv-git.git $(anyenv root)/plugins/anyenv-git
$ anyenv git gc
$ anyenv versions
phpenv:
* system (set by /Users/yuto/.anyenv/envs/phpenv/version)
plenv:
* system (set by /Users/yuto/.anyenv/envs/plenv/version)
pyenv:
* system (set by /Users/yuto/.anyenv/envs/pyenv/version)
rbenv:
* system (set by /Users/yuto/.anyenv/envs/rbenv/version)

ここからは、インストールするだけです。

$phpenv install 5.6.9
phpenv versions
* system (set by /Users/yuto/.anyenv/envs/phpenv/version)
  5.6.9
$ phpenv global 5.6.9
$ phpenv versions
  system
* 5.6.9 (set by /Users/yuto/.anyenv/envs/phpenv/version)

このままだと、

$ php -v
PHP 5.5.27 (cli) (built: Jul 23 2015 00:21:59) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

なので、以下操作で反映されました。
多分、どこかでzshenvの再読み込みを忘れていたようです。

$ source .zshenv
$ php -v
PHP 5.6.9 (cli) (built: Sep 28 2015 23:38:48) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

*1:具体的には、./phpenv以下にbinファイルが作られなかった