読者です 読者をやめる 読者になる 読者になる

Shoken Startup Blog

KitchHikeを作っています。ひとつずつアウトプットします。

brewでのNeoVimインストールでエラー /usr/local/Library/ENV/4.3/sed: No such file or directory

Vim Mac

f:id:sfujisak:20160717201904p:plain

HomebrewでのNeoVimのインストールでハマったのでメモ。

結論

libtool を再インストールすると、エラーが出なくなりインストールできるようになった。

brew update
brew reinstall -s libtool
brew install neovim/neovim/neovim

環境

  • Mac OS X El Capitan 10.11.5
  • NeoVim 0.1.4
  • Homebrew 0.9.9 (git revision 2633f; last commit 2016-07-17)

brew install neovim/neovim/neovim でエラー

homebrew-neovim/README.md at master · neovim/homebrew-neovim を参考にHomebrewからNeoVimをインストールしようとすると、 /usr/local/Library/ENV/4.3/sed: No such file or directory が出てコンパイルに失敗する。

sfmba13:~ fujisaki$ brew install neovim/neovim/neovim
==> Installing neovim from neovim/neovim
==> Downloading https://github.com/neovim/neovim/archive/v0.1.4.tar.gz
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim-0.1.4.tar.gz
==> Downloading https://github.com/libuv/libuv/archive/v1.8.0.tar.gz
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--libuv-1.8.0.tar.gz
==> Downloading https://github.com/msgpack/msgpack-c/archive/cpp-1.0.0.tar.gz
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--msgpack-1.0.0.tar.gz
==> Downloading https://raw.githubusercontent.com/neovim/deps/master/opt/LuaJIT-2.0.4.tar.gz
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--luajit-2.0.4.tar.gz
==> Downloading https://github.com/keplerproject/luarocks/archive/5d8a16526573b36d5b22aa7486612
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--luarocks-998466697.tar.gz
==> Downloading https://github.com/mauke/unibilium/archive/v1.2.0.tar.gz
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--unibilium-1.2.0.tar.gz
==> Downloading http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.18.tar.gz
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--libtermkey-0.18.tar.gz
==> Downloading https://github.com/neovim/libvterm/archive/1b745d29d45623aa8d22a7b9288c7b0e331c
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--libvterm-7088.tar.gz
==> Downloading https://github.com/jemalloc/jemalloc/releases/download/4.0.2/jemalloc-4.0.2.tar
Already downloaded: /Users/fujisaki/Library/Caches/Homebrew/neovim--jemalloc-4.0.2.tar.bz2
==> Building third-party dependencies.
==> cmake ../third-party -DUSE_BUNDLED_BUSTED=OFF -DUSE_BUNDLED_LUV=OFF -DUSE_EXISTING_SRC_DIR=
==> make VERBOSE=1
Last 15 lines from /Users/fujisaki/Library/Logs/Homebrew/neovim/02.make:
/usr/local/Cellar/cmake/3.5.2/bin/cmake -E touch /tmp/neovim-20160717-18509-l1153s/neovim-0.1.4/deps-build/build/src/unibilium-stamp/unibilium-update
[ 19%] No configure step for 'unibilium'
cd /tmp/neovim-20160717-18509-l1153s/neovim-0.1.4/deps-build/build/src/unibilium && /usr/local/Cellar/cmake/3.5.2/bin/cmake -E echo_append
cd /tmp/neovim-20160717-18509-l1153s/neovim-0.1.4/deps-build/build/src/unibilium && /usr/local/Cellar/cmake/3.5.2/bin/cmake -E touch /tmp/neovim-20160717-18509-l1153s/neovim-0.1.4/deps-build/build/src/unibilium-stamp/unibilium-configure
[ 21%] Performing build step for 'unibilium'
cd /tmp/neovim-20160717-18509-l1153s/neovim-0.1.4/deps-build/build/src/unibilium && /Applications/Xcode.app/Contents/Developer/usr/bin/make CC=/usr/local/Library/Homebrew/shims/super/clang PREFIX=/tmp/neovim-20160717-18509-l1153s/neovim-0.1.4/deps-build/usr CFLAGS=-fPIC
glibtool --mode=compile --tag=CC /usr/local/Library/Homebrew/shims/super/clang -I. -Wall -std=c99 -fPIC  -o unibilium.lo -c unibilium.c
/usr/local/opt/libtool/bin/glibtool: line 923: /usr/local/Library/ENV/4.3/sed: No such file or directory
/usr/local/opt/libtool/bin/glibtool: line 1378: /usr/local/Library/ENV/4.3/sed: No such file or directory
/usr/local/opt/libtool/bin/glibtool: line 1274: /usr/local/Library/ENV/4.3/sed: No such file or directory
:   error: Failed to create '.libs'
make[3]: *** [unibilium.lo] Error 1
make[2]: *** [build/src/unibilium-stamp/unibilium-build] Error 2
make[1]: *** [CMakeFiles/unibilium.dir/all] Error 2
make: *** [all] Error 2

READ THIS: https://git.io/brew-troubleshooting
If reporting this issue please do so at (not Homebrew/brew):
  https://github.com/neovim/homebrew-neovim/issues

These open issues may also help:
Neovim Fails to Install on Standalone Linuxbrew: libmsgpack.so Error https://github.com/neovim/homebrew-neovim/issues/156
 Neovim failing to build with homebrew on OS X 10.9.5  https://github.com/neovim/homebrew-neovim/issues/153
Can't install via homebrew-neovim if luarocks path is set explicitly https://github.com/neovim/homebrew-neovim/issues/149
Error when trying to install neovim in my Ubuntu 14.04 virtual machine. https://github.com/neovim/homebrew-neovim/issues/134

libtoolを再インストールする

GitHubのneovim/homebrew-neovimリポジトリに、類似のissueがあった。

neovim 0.1.4 fails on OSX 10.11.5 due to glibtool (SOLVED) · Issue #166 · neovim/homebrew-neovim

読むと、次のissueと似ているから試せと書いてある。

Fails to install on RHEL7 via Linuxbrew (SOLVED: brew reinstall -s libtool) · Issue #164 · neovim/homebrew-neovim

issueコメント通りに libtool をHomebrewで再インストールすることで、NeoVimのインストールが成功するようになった!

Google検索よりもGitHubリポジトリでissue検索

エラーをGoogleで検索すると、

fontforge fails to install, because glibtoolize doesn't respect Homebrew's Library location · Issue #43874 · Homebrew/legacy-homebrew

などが引っかかる。同じ libtool のエラーなのだけど、修正方法はneovim/homebrew-neovimリポジトリのissueに登録してあったものが一番スマートだった。

エラーが出た場合はGoogleで検索するよりも、リポジトリのissue検索が有効。

Arduinoでコーヒーを焙煎するときに豆を混ぜるやつの製作に挑戦した

f:id:sfujisak:20160605151151j:plain

Arduinoで電子工作、2日目。今回は、サーボモーターを使ってコーヒーを焙煎するときに豆を混ぜるやつに挑戦しました。

まずは、競合製品のチェックも兼ねて、生豆から焙煎します。

f:id:sfujisak:20160605154955j:plain

コーヒーの生豆、初めて触りました。匂いを嗅ぐと青臭い。

これをフライパンで焙煎します。焙煎といっても作業的には火にかけながら混ぜるのみ。だけど、ムラなく行うのが難しい。競合製品で工程を確認します。

f:id:sfujisak:20160605153316j:plain

15分ほどでコーヒーの良い香りがしてきました。この後、挽いて美味しくいただき、コーヒータイムが1時間ほど続きました。

サーボモーターを動かす部分は、コードも配線も簡単なので、すぐに完了。

f:id:sfujisak:20160605215836p:plain

実際に豆を混ぜる部分の素材や仕組みが大変でした。割り箸を使ってなんとかプロトタイプ的なものを作って、本日は終了。

f:id:sfujisak:20160605220503p:plain

耐熱素材、稼働部分、汎用性など、既製品の完成度の高さを実感した1日でした。この製品がそこそこの価格で買えるなんて、技術の発展はすごいなと思いました。

電子工作は素材が重要だと学びました。

メモ

黒がGND 赤がプラス 白が信号線

Arduino入門した 土の乾きを測定するセンサーを自作する

f:id:sfujisak:20160522164336j:plain

Arduinoで自動水撒き機を作る勉強会に参加してきた。

今日のメインテーマは、土の乾きを測定するセンサーの自作。土に水分が多いと抵抗が少なく電流が多く流れるし、乾くと水分が少なくなって抵抗が大きく電流が流れない、という現象を利用する。

と、文字で書くと簡単なんだけど、実際はいろんな問題に直面した。

センサーとボードをつなぐコードは、適当なものがなかったので3.5φモノラルプラグを分解。

センサーは木の切れ端にネジを固定していたが、濡れると木の部分で通電することがわかったのでやり直し。

直列だとまだわかるが、並列になると電圧の計算が難しくて大変だった。マイコンへのinputが1Vまでなので抵抗分圧しないといけないらしい。そもそも、なんで抵抗とセンサーを直列でつないで、センサーを挟む形で電圧を図ることで数値化できるのかが理解できず。。。最初の抵抗っているの?学生時代、物理が苦手だったことを思い出した。

f:id:sfujisak:20160522164841j:plain

ただ、自作のセンサー(木に固定したネジ)を乾いた土に刺した時と、湿った土や水に刺した時でArduinoで取得できる数値が変わるのは面白かった!

コードはほとんど書いていない。

f:id:sfujisak:20160522225200p:plain

物理の中でも、電磁気学は一番苦手だったな〜。 電圧、電流、抵抗、直列、並列、、、オームの法則とかあったな。 普段使わない頭の回路をたくさん使った日でした。

参考にしたページ

Arduinoでパーツやセンサを使ってみよう~SDカード編(その2) | Device Plus - デバプラ

Ginza.rb 第35回 Trailblazer入門に参加してきた #ginzarb

勉強会 Ruby Rails

Ginza.rb 第35回 先駆者の知見拝見!Trailblazer - Ginza.rb | Doorkeeper に参加してきました。

Ginza.rbは本当に良いコミュニティ。参加すると、いつも現状で考えられる一番正しい解と最新の情報をもらっています。

Trailblazerについては、去年2015年の9月に勉強会に参加して以来。

Trailblazer勉強会に参加してきた #trbtky - Shoken Startup Blog

2回目ということで、理解はより深まったつもり。わかりやすい発表スライドのおかげです。

発表者: @y_yagi
スライド: http://y-yagi.github.io/introduction_to_trailblazer/

感想

発表後のディスカッションで@netwillnetさんが言っていた。「Trailblazerは学習コストが高い。その学習コストをPayするのは、規模の大きなプロジェクト。だが、大きなプロジェクトではいきなりTrailblazerを入れるのはリスクというジレンマがある。」

別の参加者が、Trailblazerとは別のFW、Hanamiについてだが「エンジニア8人のプロジェクトだが、入れたい。Payできると思う」と言っていた。8人クラスになると足並みをそろえるのが大変のようだ。

TrailblazerやHanamiなど、RailsMVCとは違う思想のFWの前提にあるのは、Rails辛い問題(詳細は@y_yagiさんのスライド)。fat controllerやfat modelへの回答の一つで、背景にはDDDがある。KitchHikeはエンジニア2人で作っている小規模なプロジェクトで、FWで縛らなくてもある程度の足並みはそろっている。だからといってDDDの知識やTrailblazerの思想が役に立たないかというと、そうではない。ベストプラクティスからの学びは多いし、何よりDDDという共通知識を前提に会話できるのが良い。DDDやTrailblazerは大規模プロジェクト用かもしれないが、小規模プロジェクトの良い指針となっているなと思いました。

明日からもコード書くぞー!

スライドの抜粋メモ

Trailblazerとは

  • 通常のMVCとは異なる層を提供する
    • Operation(サービスオブジェクト)、View Model(cells)、Form等
  • 各処理を適切な層に記載する事で、view / controller / modelがfatになるのを防ぐ
  • また、各層を疎結合にする事で各層毎でのテストをしやすくする

RAILS辛い問題

  • 気付くとfat controller
    • fat controllerを避けようとした結果、今度はmodelがfatになる
  • viewにビジネスロジックが記載されている
    • viewから直接DB参照してたり
  • ビジネスロジックをどこに書けば良いのかわからない

CONTROLLER

個人的にここが一番大事だと思う。controllerを見るうちの9割はリクエストを追う時なので、ビジネスロジックは視界に入らないで欲しい。fat controllerだと、こんなのを見たいわけじゃない!という箇所が多くてリクエストを追うのが辛い。

  • HTTPのエンドポイントとしての処理のみを書く
    • リダイレクトやviewのrenderなど
  • 当然ビジネスロジックは書かない

OPERATION (Railsに無い層)

  • ビジネスロジックを定義する(service object)
  • modelを保存する処理を定義するのはOperationだけ
  • validation / callback / authorizationもOperationに含まれる

VIEWS

  • パーツ毎にcell(view model)を使い、viewはシンプルな状態のままにしておくことが推奨されている

REPRESENTER

  • RubyオブジェクトをJSONXMLに変換する為の処理を定義する箇所

その他GEM

  • roar: Parse and render REST API documents using representers. 内部で representerを使っている
  • formular: f.selectなどを自分でカスタマイズできる。simple_formの類似。

FILE LAYOUT

Sample Project

https://github.com/apotonick/gemgem-trbrb

勉強会で仕入れた新しい情報メモ

過去のGinza.rbで@y_yagiさんが発表したHanamiのスライド

#java_ja_oss に行けなかったので資料まとめた

勉強会 OSS

10/5にjava-ja.OSSがあった。終わってから知った。行きたかった。

connpass.com

行きたかったぜ。

発表者が豪華

  • tagomoris: 真・OSSプロダクトとコミュニティの話 ビールを添えて
  • t_wada: OSSとしてこの先生きのこるには
  • mizzy: Serverspec の作り方と育て方(或いは Chef 社と戦争した話)
  • a_matsuda: Rails 開発者周りの話
  • mineroaoki: 初期の Ruby 開発者周りの話
  • xuwei_k: OSSコミュニティがある日突然壊れたときにどうすればいいか

豪華!

ニコ生のタイムシフトで見れるっぽい

発表資料

tagomorisさん

tagomoris.hatenablog.com

t_wadaさん

mizzyさん

a_matsudaさん

mineroaokiさん

見つからず。

xuwei_kさん

OSSコミュニティがある日突然壊れたときにどうすればいいか

togetter

togetter.com

関連エントリ

pocketberserker.hatenablog.com

OSSコミュニティについて興味深いエントリを読んだので追記

本の虫: Sarah Sharp、Linuxカーネルコミュニティの暴力性に嫌気がさして貢献をやめる