Node.jsで標準入力がパイプかどうか判定する
例えば入力ファイルの行数をカウントするlinecount.jsっていうのがあったとして
$ node linecount.js foo.txt
っていう使い方と
$ cat foo.txt | linecount.js
って両方に対応したいときNode.jsではprocess.stdin.isTTYを使えば判定できる。
if (process.stdin.isTTY) { // $ node linecount.js foo.txt // みたいに実行した時の処理 } else { // $ cat foo.txt | linecount.js // みたいに実行した時の処理 }
HTMLでリンクを押した時にリファラを付けないようにする
<a href="http://example.com/" rel="noreferrer">link</a>
のように rel="noreferrer" をつければリンク先のリクエストに対してリファラを付与しないらしい。Chromeでしか確認してないからブラウザ対応はよくわからん。
仕様もある。
http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#link-type-noreferrer
開発中にリファラがあるとどうしても不便な状況になって見つけた。
vimのBundleでインストールしようとしたらエラった
最近vimの設定とか全然いじってないんだけどひさびさにプラグイン追加してBundleInstall実行したらなんかエラった。
Cloning into /Users/hokamura/.vim/bundle/vim-coffee-script... error: Malformed value for push.default: simple error: Must be one of nothing, matching, tracking or current. fatal: bad config file line 21 in /Users/hokamura/.gitconfig
push.default: simpleがダメらしい。普通にgit使ってる分には動いてるからなんでだろうと思ったらvimに /usr/local/bin へのパスが通ってなくて /usr/bin/git を見てて、こいつのバージョンが古くてsimple対応してないのでエラったみたい。
vimの設定いじる元気がないのでBundleInstallのときだけpush.defaultの設定をコメントアウトした。
githubのwikiにサイドバーを出す
_Sidebarという名前でWikiの新規ページをつくるとサイドバーを表示できる。ページ一覧とか載せとくと便利。
こんな感じになる。
https://github.com/enja-oss/Sass/wiki
rbenvでruby2.0.0-p0のインストール
ruby-buildをアップデートしたら
$ brew update $ brew upgrade ruby-build
2.0.0-p0がきてたので
$ rbenv install ... 2.0.0-p0 ...
インストールしようとしたらエラった。
$ rbenv install 2.0.0-p0 Downloading openssl-1.0.1e.tar.gz... -> https://www.openssl.org/source/openssl-1.0.1e.tar.gz Installing openssl-1.0.1e... Installed openssl-1.0.1e to /Users/xxx/.rbenv/versions/2.0.0-p0 Downloading ruby-2.0.0-p0.tar.gz... -> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz Installing ruby-2.0.0-p0... BUILD FAILED Inspect or clean up the working tree at /var/folders/8c/vgm8fdh97qd4y3c61wd2003m0000gn/T/ruby-build.20130225075459.58371 Results logged to /var/folders/8c/vgm8fdh97qd4y3c61wd2003m0000gn/T/ruby-build.20130225075459.58371.log Last 10 log lines: installing default gems: /Users/xxx/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0 (build_info, cache, doc, gems, specifications) bigdecimal 1.2.0 io-console 0.4.2 json 1.7.7 minitest 4.3.2 psych 2.0.0 rake 0.9.6 rdoc 4.0.0 test-unit 2.0.0.0 The Ruby openssl extension was not compiled. Missing the OpenSSL lib?
OpenSSLをインストールして
$ brew install openssl
configureのオプションを指定したんだけどエラーメッセージが変わった。
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p0 Downloading ruby-2.0.0-p0.tar.gz... -> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz Installing ruby-2.0.0-p0... BUILD FAILED Inspect or clean up the working tree at /var/folders/8c/vgm8fdh97qd4y3c61wd2003m0000gn/T/ruby-build.20130225085320.23480 Results logged to /var/folders/8c/vgm8fdh97qd4y3c61wd2003m0000gn/T/ruby-build.20130225085320.23480.log Last 10 log lines: 0 enumerator.so [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html make: *** [.rbconfig.time] Abort trap: 6 make: *** Waiting for unfinished jobs.... make: *** [encdb.h] Abort trap: 6
そういえばOSX LionのデフォルトのGCC(llvm-gcc)だとこけるんだっけと思ってgcc-4.2を指定したらできた。
$ CC=/usr/bin/gcc-4.2 RUBY_CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p0 Downloading ruby-2.0.0-p0.tar.gz... -> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz Installing ruby-2.0.0-p0... Installed ruby-2.0.0-p0 to /Users/hokamura/.rbenv/versions/2.0.0-p0
$ rbenv local 2.0.0-p0 $ ruby -v ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin11.4.2]
ヤッター。
キーワード引数使えちゃうぜー!ひゃほう!
$ irb irb(main):001:0> def foo(a: 'b', c: 'd') irb(main):002:1> puts a irb(main):003:1> puts c irb(main):004:1> end => nil irb(main):005:0> foo(a: 'hoge') hoge d => nil
次にbundler入れて適当にインストールしてみようと思ったら
# Gemfile source 'https://rubygems.org' gem 'rails'
$ gem install bundler --pre $ bundle install --path vendor/bundle Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks! /Users/hokamura/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/net/http.rb:917:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) ...
なんかSSLでエラった。
証明書の問題っぽいのでググったら次のよう証明書を設定すればいいらしい。
$ brew install curl-ca-bundle $ cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem
これでbundle installもデキター
CharlesでProxyするときのSSL証明書
CharlesでSSLをProxyするときに証明書のエラーでサイトがみれないときは以下の「Charles CA Certificate bundle」というリンクから証明書をダウンロードしてキーチェーンに登録すると見れるようになる。
http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/