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

それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

node.js の node コマンドが CTRL+R効かない

macOS X brew

node で ctrl+R が効かない。

ctrl+r 無いと不便だよね。irb は数年前に解決した、sqlite3 は先日解決させた。 今度はnode もなんとかしたいなと調べた。

sqlite のときのように readline ライブラリで解決するかと思ったら解決しない。

node REPL をどうするか問題

node の REPL を使うことで、アレコレできるようになっていて、今まで見たものと根本的に設計思想が違うようですね。

const repl = require('repl');

rlwrap を使うと楽になるようで。

rlwrap / readline wrapper を使って nodeで reverse-increment-search 何とかすると動くようです。

alias node="env NODE_NO_READLINE=1 rlwrap node"

無理やり動いた

rlwrap で無理やり動いた

takuya@~$ node
> const takuya={}
undefined
> takuya
{}
(reverse-i-search)`':

rlwrap は何をしているのか。

rlwrap はヒストリファイルを別途作って rlwrap が node にptsをパイプしてる感じ。

もし、readline非対応でもコレを使ったら強引に使えるようになるので便利そう。

参考資料

https://nodejs.org/api/repl.html

https://github.com/hanslub42/rlwrap

https://linux.die.net/man/1/rlwrap

brewで入れたsqlite3でCTRL+Rが効かない!

macOS X brew

brew で入れた sqlite で reverse-i-search が使えない

reverse-i-search ってすごく便利で CTR+Rでヒストリをインクリメンタル検索出来る機能なんだけど。動かなかった。

色々調べたら、GNU Readline ではなく、Mac 標準添付のeditline(?) を使ってるとか。mac がGNU readline を外したのでこういうことになってるようだ。

readlineを有効にしてコンパイルし直す

brew install readline

このREADLINEを参照先にして、 SQLiteをインストールし直す。

CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" brew reinstall  sqlite3
takuya@~$ sqlite3
-- Loading resources from /Users/takuya/.sqliterc
SQLite version 3.17.0 2017-02-13 16:02:40
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
(reverse-i-search)`':

動いた!安心。

RMagick が入らない: gem install rmagick error

ruby macOS X brew

RMagick を久しぶりに使おうとしたら・・・

インストール

gem install rmagick 

はい、エラー。extconf.rb ってほんと良く詰まるわ 色々調べたら、Rmagick が imagemagick 7 に非対応だった。

brew unlink imagemagick
brew install imagemagick@6
brew link --force imagemagick@6

コレをやったあとに

インストール

gem install rmagick 

動いた

takuya@~$ irb
>>
>> require 'rmagick'
=> true
>>

原因はこの辺

include のフォルダ構造が ImagMagick7 から変わってるのに対応できてない。

checking for wand/MagickWand.h... no
"/usr/bin/gcc -E -I/Users/takuya/.rbenv/versions/2.3.3/include/ruby-2.3.0/x86_64-darwin15 -I/Users/takuya/.rbenv/versions/2.3.3/include/ruby-2.3.0/ruby/backward -I/Users/takuya/.rbenv/versions/2.3.3/include/ruby-2.3.0 -I.  -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 -I/usr/local/Cellar/imagemagick/7.0.5-0/include/ImageMagick-7  -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 -I/usr/local/Cellar/imagemagick/7.0.5-0/include/ImageMagick-7  conftest.c -o conftest.i"

強引に ln -s しても駄目だった フォルダ構造併せたら行けるかなと思ったけど、関数の参照でエラーになったのでもうめんどくさい。

cd /usr/local/Cellar/imagemagick/7.0.5-0/include/ImageMagick-7
ln -s MagickWand wand
ln -s MagickCore magick
# リンクしても、参照型が合わなくてコンパイルエラーになってた。

なので、ImageMagick6をbrew でインストールして強制link するしかなかった。

まぁRMagickの対応待ちになるんだろうかね。怖い怖い