Mac OS X El Capitan にアップグレードしたら hub コマンドが動かなくなったけど brew upgrade hub したら解決した

Mac OS X El Capitan がリリースされてそれなりに時を経たので、会社で使ってる Mac も El Capitan へアップグレードしました。

タイトルで終わってますが El Capitan にアップグレードしたら hub コマンドが動かなくなったのですが brew upgrade hub したら解決したので、似たようなエラーに悩まされた方は brew upgrade するといいですよ。

hub コマンドのエラー事例

いつも通り hub コマンドで github の pull-request を作成しようと思ったら、見たことのないエラーが発生しました。

$ hub pull-request -h myGitHubRepo:`git symbolic-ref --short HEAD`
/usr/local/bin/hub:75:in `initialize': wrong number of arguments (9 for 1) (ArgumentError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1030:in `new'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1030:in `proxy_uri'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1017:in `proxy?'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:868:in `connect'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:851:in `start'
	from /usr/local/bin/hub:473:in `perform_request'
	from /usr/local/bin/hub:588:in `perform_request'
	from /usr/local/bin/hub:437:in `post'
	from /usr/local/bin/hub:371:in `create_pullrequest'
	from /usr/local/bin/hub:1760:in `pull_request'
	from /usr/local/bin/hub:1586:in `run'
	from /usr/local/bin/hub:2514:in `initialize'
	from /usr/local/bin/hub:2518:in `new'
	from /usr/local/bin/hub:2518:in `execute'
	from /usr/local/bin/hub:2569:in `<main>'

ネットで調べてみたところ 「hub のバージョンが古いと動かないので brew upgrade hub するといいよ」という内容を書いている isuue を見つけたのでそれ通り対応してみたら解決しました。

$ brew list | grep hub
hub
 
$ hub --version
git version 2.1.3
hub version 1.12.2
 
$ brew upgrade hub
==> Upgrading 1 outdated package, with result:
hub 2.2.3
==> Upgrading hub
==> Downloading https://homebrew.bintray.com/bottles/hub-2.2.3.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring hub-2.2.3.el_capitan.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
 
zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
🍺  /usr/local/Cellar/hub/2.2.3: 9 files, 10.3M

OS アップグレードは何かしらハマりますね。

MongoDB query でタブ文字区切りの文字列を出力させた結果をコピペするとタブ文字が消えることがあるのでファイル出力するのがベスト

本記事でお伝えしたいことはタイトルで完結していますが、先日 MongoDB の Query を書ける営業社員から「Mongo Query の出力結果を Google スプレッドシートに貼り付けると左に列がずれるのでコードレビューしてほしい」と相談されました。

結論としては query 自体には何も問題なく、タブ文字 \t 区切りで文字列を出力すると Mac の Terminal アプリからコピー&ペーストするときに折り返し位置によって \t が消えてしまうことがあるようでした。

ファイル出力すればタブ文字が消えてしまう問題は発生しないので、

mongo --quiet mydb script.js > example.csv

のような感じでファイルに出力して、これを Google スプレッドシートにインポートすると列がずれることがなくなりました。

もし、似たような問題が発生した方は Terminal アプリからのコピペの部分の挙動を疑ってみると解決するかもしれませんよ。

「渋谷ECミートアップvol.2」参加レポート #pbtech

「渋谷ECミートアップ」というタイトルに釣られて参加してきました。

渋谷ECミートアップ

ペパボが主催で「渋谷ECミートアップ」という名前を付けるのはどないやねんという話は置いておいて。

ノベルティのレポート

ペパボ ノベルティ

もらったノベルティたちです。

ペパボ ノート

ノベルティでノートをもらったので仕事で使いたいです。

イベント参加レポート

LT

LT の内容は「どんな感じで業務をやってるか」ということがふわっと分かる感じだった。特に EC は関係ない印象でした。

新卒1〜3年目でペパボに転職を考えてるエンジニア、デザイナーにとっては「ペパボで働くのはどんな雰囲気なのか?」ということがなんとなく分かって良いのかもしれません。

演劇「雨あがりの5月30日、月曜日の夕会」

シュールなネタでした。

懇親会

ペパボ ピザ

入社1週間目のエンジニアさんとひたすらお話しました。

「ほとんどの人が定時退社する」「残業してると上司から怒られる」というホワイト企業な話を聞いて、「すごいなー。でも、限られた時間の中でアウトプットを出さないといけないのでシビアな職場だなー」という好印象を受けました。

まとめ

もっと EC の話をしたかったです。

[Ansible] パスワードなしで SSH 接続できるサーバには ansible-playbook コマンドの -k, –ask-pass オプションを付けるとエラーになる

Ansible を使い始めて最初にハマったことは、パスワードなしで SSH 接続できるサーバには ansible-playbook コマンドの -k, –ask-pass オプションを付けるとエラーになるということでした。

ansible

ansible-playbook コマンドの help によると -k, –ask-pass は接続時にパスワードを求めるオプションみたいです。

$ ansible-playbook -h
Usage: ansible-playbook playbook.yml
 
Options:
  -k, --ask-pass        ask for connection password

以下、エラー時の実行結果です。

$ ansible-playbook -k -c paramiko -i hosts init.yml -vvv --extra-vars "user_password=$user_password"
No config file found; using defaults
SSH password: 
 
PLAYBOOK: init.yml ******************************************************
1 plays in init.yml
 
PLAY [setting SakuraServer VPS by root] ****************************************
 
TASK [setup] *******************************************************************
<128.199.213.164> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 128.199.213.164
 
paramiko: The authenticity of host '128.199.213.164' can't be established.
The ssh-rsa key fingerprint is 99a7fb117513602f560568e9d6daaa72.
Are you sure you want to continue connecting (yes/no)?
yes
fatal: [128.199.213.164]: UNREACHABLE! => {"changed": false, "msg": "Authentication failed.", "unreachable": true}
	to retry, use: --limit @init.retry
 
PLAY RECAP *********************************************************************
128.199.213.164             : ok=0    changed=0    unreachable=1    failed=0

公開鍵認証による SSH 接続設定をしていて、ログインパスワードが不要な場合は -k, –ask-pass オプションを付けると下記のように The authenticity of host ‘128.199.213.164’ can’t be established. というエラーが発生してしまいます。

$ ansible-playbook -h
Usage: ansible-playbook playbook.yml
 
Options:
  -k, --ask-pass        ask for connection password

-k オプションを付けずに ansible-playbook コマンドを実行すると正常に実行できました。

$ ansible-playbook -c paramiko -i hosts init.yml -vvv

以上です。

「自己割り当てIPアドレスのためネット接続ができません」エラーが発生したらルータの DHCP 割当数を確認すべきという教訓

タイトルで完結してますが、実際に今日ネットワークのトラブルシューティングしたお話です。

先日、ルーター機器を切り替えたのが原因で、物流倉庫内で使っている PC やモバイル機器から Wi-Fi に接続しようとすると、「自己割り当てIPアドレスのためネット接続ができません」というエラーが頻発するようになりました。

結論としては、切り替えたルータ Aterm WG1800HP2 の DHCP 割当数の上限は32台までと、Wi-Fi 利用機器に対してかなり少なかったという点でした。

AtermWG1800HP2 PA-WG1800HP2

Aterm WG1800HP2 が DHCP で割り当てるIPアドレスの範囲は以下の記事に詳しく書かれてます。

このルータから自動的にIPアドレスなどを割り振れる(DHCP)のは32台まで。
それ以上は、個々の機器に固定IPアドレスを割り振れば 32 + 221 = 最大253台まで接続できるようです。

元々、NTT からレンタルしていたルータ PR-500KI はより高性能だったので DHCP 割当数の上限という問題が発生しなかったんですけどね。

参考情報