みんなでSwift復習会 GO! in 京都初参加

最近仕事でもプライベートでもSwiftを書いていないので大丈夫かなーと思いながら1/13に「みんなでSwift復習会 GO!」に初参加した。

脱線や談笑を歓迎している勉強会だけに、前で話す人は1人だけど聞き手も普通に話すし、Macbookの画面もAirPlay経由で共有することができて聞いている人がコードを見せて説明するシーンもあった。

今日は教科書「The Swift Programming Lanuage」の最初の方の制御文(for in)をやるはずだったのに、Sequenceプロトコルに準拠するとプロトコルに用意されている様々な機能を使える、という話になっていった。

いい雰囲気の勉強会だったのでまた参加したい。

atomでキーボードマクロ

atomテキストエディタとして使いたい。

テキストエディタで繰り返しの単純作業をすることがあるのでキーボードマクロを使いたいなーと思ってパッケージを探してみた。

最初に見つかったのが次のパッケージ。

 

atom.io

 

インストールしようとすると

npm WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
gyp ERR! configure error
gyp ERR! stack Error: Python executable "/Applications/Atom.app/Contents/Resources/app/apm/bin/python-interceptor.sh" is v3.6.3, which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & < 3.0.0.
gyp ERR! stack at failPythonVersion (/Applications/Atom.app/Contents/Resources/app/apm/node_modules/node-gyp/lib/configure.js:454:14)
gyp ERR! stack at /Applications/Atom.app/Contents/Resources/app/apm/node_modules/node-gyp/lib/configure.js:443:9
gyp ERR! stack at ChildProcess.exithandler (child_process.js:197:7)
gyp ERR! stack at emitTwo (events.js:106:13)
gyp ERR! stack at ChildProcess.emit (events.js:191:7)
gyp ERR! stack at maybeClose (internal/child_process.js:877:16)
gyp ERR! stack at Socket.<anonymous> (internal/child_process.js:334:11)
gyp ERR! stack at emitOne (events.js:96:13)
gyp ERR! stack at Socket.emit (events.js:188:7)
gyp ERR! stack at Pipe._handle.close [as _onclose] (net.js:498:12)
gyp ERR! System Darwin 17.3.0
gyp ERR! command "/Applications/Atom.app/Contents/Resources/app/apm/bin/node" "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/.bin/node-gyp" "rebuild"
gyp ERR! cwd /private/var/folders/26/7wgn78s12bx0wgk4mqn27r640000gn/T/apm-install-dir-118012-31694-184pxze.ab5qj8aor/node_modules/atom-keyboard-macros/node_modules/keyboard-layout
gyp ERR! node -v v6.9.5
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm WARN enoent ENOENT: no such file or directory, open '/private/var/folders/26/7wgn78s12bx0wgk4mqn27r640000gn/T/apm-install-dir-118012-31694-184pxze.ab5qj8aor/package.json'
npm WARN apm-install-dir-118012-31694-184pxze.ab5qj8aor No description
npm WARN apm-install-dir-118012-31694-184pxze.ab5qj8aor No repository field.
npm WARN apm-install-dir-118012-31694-184pxze.ab5qj8aor No README data
npm WARN apm-install-dir-118012-31694-184pxze.ab5qj8aor No license field.
npm ERR! Darwin 17.3.0
npm ERR! argv "/Applications/Atom.app/Contents/Resources/app/apm/bin/node" "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/npm/bin/npm-cli.js" "--globalconfig" "/Users/arimotojungo/.atom/.apm/.apmrc" "--userconfig" "/Users/arimotojungo/.atom/.apmrc" "install" "/private/var/folders/26/7wgn78s12bx0wgk4mqn27r640000gn/T/d-118012-31694-1yhbqtf.4t9cgi7ldi/package.tgz" "--runtime=electron" "--target=1.6.15" "--arch=x64" "--global-style"
npm ERR! node v6.9.5
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE

npm ERR! keyboard-layout@2.0.13 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the keyboard-layout@2.0.13 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the keyboard-layout package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs keyboard-layout
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls keyboard-layout
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /private/var/folders/26/7wgn78s12bx0wgk4mqn27r640000gn/T/apm-install-dir-118012-31694-184pxze.ab5qj8aor/npm-debug.log
npm ERR! code 1

となり、node.jpとnpmが必要みたいなので

買いたてのMacにNode.jsとnpmをインストール - Qiitaのサイトをみながらインストールするとatom-keyboard-macrosもインストールできた。

 

このマクロ、

ctrl-x ( start recording

ctrl-x ) stop recording

ctrl-x e execute macro

ctrl-x ctrl-e execute macro N times

ctrl-x b execute macro to the end of file

ctrl-x ctrl-b execute macro from the beginning to the end of file

 

のようにマクロを実行する回数が決められたりファイルの終わりまでマクロを実行するとかできて便利そう。

 

2017年ベスト映画

2017年に観た映画で一番よかったのは「チアダン」です。タイトルからは男子のチアリーダー映画かと思いましたが広瀬すずさんが好演する青春映画でした。天海祐希さんの演技もすごかった。

ライフイズストレンジ

ライフイズストレンジおもしろい。 iOSで出てたのでiPadでやっている。 ほとんどマーケティングのために流行ってるものをやってるんだけど。

Anaconda

機械学習の勉強のためPython3のAnacondaをMacにインストールした。 jupiter notebookはじめて使った。 Anaconda入れるといろいろインストールされるんだな。

mac に python3 + OpenCV3 の環境をつくる(できてない)

Tensorflow で機械学習を試してみてると 画像処理をするためにpythonOpenCVを使う必要が出てきます。

新しいバージョンを使いたいということでpython3, OpenCV3 で環境をつくりたかったのですが、 うまくいきませんでした。

環境

pyenvでpython 2.7と3.6を切り替えらるようにしてpython3.6にした状態で OpenCV3 をインストールしたのですが、 Mac環境変数にpython2.7が残っているようで 1日かけて頑張ってみたのですが次のように python3.6ではなく、python2.7としてOpenCV3がインストールされてしまい、 うまくいきませんでした。

/usr/local/Cellar/opencv3/3.2.0/lib/python2.7/site-packages/cv2.so

Tensorflowを試しているネットの記事もPython2系のものが多いので あきらめて2.7で使うことにしました。

環境

インストール手順

brew update
brew tap homebrew/science
brew install opencv3
brew link opencv3 --force
cd /Users/<ユーザー名>/tensorflow/lib/python2.7/site-packages
ln -s /usr/local/Cellar/opencv3/3.2.0/lib/python2.7/site-packages/cv2.so ./

時間に余裕ができたらまたチャレンジします。

EC2のt2.microインスタンスのubuntuにTensorFlowをインストールしようとしたがスペックが足りなかった

EC2の無料トライアルにインスタンスをつくったので V1.0がリリースされたTensorFlowを動かしてみようとしたけど無理でした

スペック

インスタンス:t2.micro
OS:Ubuntu Server 16.04
vCPU;1  (2.5 GHz, Intel Xeon Family)
メモリ:1GiB
ストレージ:8GiB

やったこと

TensorFlow公式に従ってpythonのvirturalenv環境を作成 (Python 2.7.12がインストールされました)

$ mkdir tensorflow
$ sudo apt-get install python-pip python-dev python-virtualenv 
$ virtualenv --system-site-packages tensorflow
$ source ~/tensorflow/bin/activate
(tensorflow)$

TensorFlowをインストール

(tensorflow)$ pip install --upgrade tensorflow
Collecting tensorflow
 Downloading tensorflow-1.0.0-cp27-cp27mu-manylinux1_x86_64.whl (44.1MB)
   99% |████████████████████████████████| 44.1MB 59.3MB/s eta 0:00:01Exception:
Traceback (most recent call last):
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/basecommand.py",
line 215, in main
   status = self.run(options, args)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/commands/install.py",
line 335, in run
   wb.build(autobuilding=True)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/wheel.py",
line 749, in build
   self.requirement_set.prepare_files(self.finder)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_set.py",
line 380, in prepare_files
   ignore_dependencies=self.ignore_dependencies))
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_set.py",
line 620, in _prepare_file
   session=self.session, hashes=hashes)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 821, in unpack_url
   hashes=hashes
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 659, in unpack_http_url
   hashes)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 882, in _download_http_url
   _download_url(resp, link, content_file, hashes)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 603, in _download_url
   hashes.check_against_chunks(downloaded_chunks)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/utils/hashes.py",
line 46, in check_against_chunks
   for chunk in chunks:
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 571, in written_chunks
   for chunk in chunks:
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/utils/ui.py",
line 139, in iter
   for x in it:
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/download.py",
line 560, in resp_read
   decode_content=False):
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py",
line 357, in stream
   data = self.read(amt=amt, decode_content=decode_content)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py",
line 314, in read
   data = self._fp.read(amt)
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py",
line 63, in read
   self._close()
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py",
line 50, in _close
   self.__callback(self.__buf.getvalue())
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py",
line 275, in cache_response
   self.serializer.dumps(request, response, body=body),
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py",
line 55, in dumps
   "body": _b64_encode_bytes(body),
 File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py",
line 12, in _b64_encode_bytes
   return base64.b64encode(b).decode("ascii")
MemoryError

モリーエラーみたい

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl

でもダメ

メモリが足りないようなので500MBのスワップ領域を作成

$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=524288
$ sudo chown root:root /swapfile
$ sudo chmod 0600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

もう一度TensorFlowインストールしてみる

(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl
:
Exception:
Traceback (most recent call last):
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/wheel.py", line 377, in move_wheel_files
    clobber(source, dest, False, fixer=fixer, filter=filter)
  File "/home/ubuntu/tensorflow/local/lib/python2.7/site-packages/pip/wheel.py", line 323, in clobber
    shutil.copyfile(srcfile, destfile)
  File "/usr/lib/python2.7/shutil.py", line 84, in copyfile
    copyfileobj(fsrc, fdst)
  File "/usr/lib/python2.7/shutil.py", line 52, in copyfileobj
    fdst.write(buf)
IOError: [Errno 28] No space left on device

ディスク容量が足りなくなった