かみぽわーる

kamipo's blog

Linuxと挙動がちがってて使いにくいOS Xのコマンド(top/ps/netstat)の代替

GNU/Linuxに慣れてると、よく打つtop/ps/netstatOS X使ってるときにLinuxのそれと全然ちがう挙動で使いにくい。同じ挙動にするのman見ても無理そうなんで、なんとか同じように使えるのないか調べてみた。

top

htopならLinuxOS Xで同じように使えるのでhtopを使うとよさそう。

brew install htop-osx

ps

psのいい代替は見つからなかったけど、ps auxfのようにツリー表示したいときの代替はpstreeを使うとよさそう。

brew install pstree

netstat

netstatnetstat -tnpaとかnetstat -tnplをよく使うけど、前者はlsof -nP -iTCP、後者はlsof -nP -iTCP -sTCP:LISTENで代替できそう。

$ sudo lsof -nP -i4TCP -sTCP:LISTEN
COMMAND    PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
launchd      1   root   28u  IPv4 0x848d6f3ed164cf3b      0t0  TCP 127.0.0.1:631 (LISTEN)
klnagent    74   root    7u  IPv4 0x848d6f3ed164c803      0t0  TCP 127.0.0.1:30523 (LISTEN)
klnagent    74   root    8u  IPv4 0x848d6f3ed164c0cb      0t0  TCP 127.0.0.1:49152 (LISTEN)
Dropbox    350 kamipo   19u  IPv4 0x848d6f3ed3807993      0t0  TCP *:17500 (LISTEN)
Dropbox    350 kamipo   25u  IPv4 0x848d6f3ed3804e43      0t0  TCP 127.0.0.1:26165 (LISTEN)
Growl     9088 kamipo    4u  IPv4 0x848d6f3ed864ef3b      0t0  TCP 127.0.0.1:23053 (LISTEN)
mysqld   81912 kamipo   27u  IPv4 0x848d6f3ed924ae43      0t0  TCP *:3306 (LISTEN)
Skype    91096 kamipo   39u  IPv4 0x848d6f3ed9844b23      0t0  TCP *:22493 (LISTEN)

おまけ

あとOS Xのtarはイケてないという噂をよく聞くのでGNU tarも入れておくとよいかもしれないですね。

brew install gnu-tar

YAPC::Asia 2012 に行ってきた

今年も行ってきました!

1日目はtokuhiromのToramotemenさんのWightのトークがおもしろかった。

2日目のPerl 今昔物語の対談で個人的に印象に残ったのが、nekokakさんの自分はサラリーマンプログラマだったけどいまこうやって登壇するようになったのはtokuhiromがきっかけだったみたいな話があって、僕もPerl Mongersの中で一番影響受けたのをだれかひとりを選べといわれたらtokuhiromのハックする姿勢をいつもかっこいいなーと思っていたからすごく共感した。

あとそんなtokuhiromも最初のYAPC::AsiaのLTではまわりがみんなおもしろくて緊張したという話をしていて感慨深かった。

僕がはじめてYAPC::AsiaでLTしたときも、直前のyusukebeさんのmiyagawanize LTがすごいおもしろくてあまりの緊張ですこしマイクがうわずったりもしたけど、そのあとの懇親会でtypesterさんに「ファンになりました」ってひろってもらえてすごくうれしかったのを思い出した。

そういう体験もあって、僕がトークを聞いておもしろかったと思ったら「おもしろかったよ!」って伝えるようにしていて、今年もそういう体験をした人がいたのかなーと思うとまた感慨深い。

これからも、そういう体験をできる場が続いていくといいなーと思いました。

MySQL Casual Talks Vol.3 でスベってきました

MySQL Casual Talks Vol.3 : ATND おつかれさまでした!

去る4月19日はこじはることAKB48小嶋陽菜の誕生日でした!

先日の握手会でそのことに気づいてしまったので
なにかこじはるネタでLTをしたいなということで
Haruna storage engineというネタをやりました。

AKBとmysql-buildの話

InnoDB Deep Talk #1 : ATNDd:id:moriyoshiさんがLTしていた
InnokoDBをパクったForkしただけのネタなんですけど

テーブル名で動作が変わるストレージエンジンネタもやってみたかったので
テーブル名に"mariko"が含まれてると麻里子様のツイートも取ってくるようにしてみました( *`ω´)八(бвб)

きもい、滑ってる、これはひどい、などの率直な感想を頂いておりますが
これに懲りずにまた呼んでください!よろしくおねがいします!!

MacBook Airのセットアップ

買ってきたらとりあえずやる(やった)こと一覧。

システム環境設定まわり

  • スクリーンをロック
    • キーチェーンアクセス.appの環境設定で「メニューバーにキーチェーンの状況を表示」をチェック
  • セキュリティとプライバシー
    • 「スリープの後、またはスクリーンセーバが開始した後、すぐにパスワードを要求する」をチェック
  • キーボード
    • 「F1、F2 などのすべてのキーを標準のファンクションキーとして使用」をチェック
    • 「修飾キー 」でCaps LockキーをControlに変更
    • 「英字入力中にスペルを自動変換」のチェックを外す
    • 「スマート引用符とスマートダッシュを使用」のチェックを外す
    • フルキーボードアクセスで「すべてのコントロール」をチェック
  • ディスプレイ
    • 「メニューバーにディスプレイを表示」をチェック
  • Dock
    • 「Dockを自動的に隠す/表示」をチェック
  • 日付と時刻
    • 「現在の位置情報に基づいて、時間帯を自動的に設定」をチェック
    • 時計の「曜日を表示」をチェック
    • 時計の「日付を表示」をチェック
  • 共有
    • コンピュータ名をいい感じに変更
  • ことえり
    • 環境設定の「Windows風のキー操作」をチェック
  • Finderで隠しファイルを表示する
defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

App Storeから入れるソフトウェア

開発環境

Homebrew
xcode-select --install
sudo xcodebuild -license

sudo mkdir /usr/local
sudo chown -R `whoami` /usr/local
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew doctor

git clone https://github.com/kamipo/dotfiles.git
cd dotfiles

./brewfile.sh
./dotsetup.sh
./xxenv_setup.sh

sudo vi /etc/shells
chpass -s /usr/local/bin/zsh
rbenv
git clone git@github.com:sstephenson/rbenv.git ~/.rbenv
ln -nfs ~/dotfiles/default-gems ~/.rbenv/default-gems
mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git@github.com:sstephenson/ruby-build.git
git clone git@github.com:sstephenson/rbenv-default-gems.git
git clone git@github.com:rkh/rbenv-update.git

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

# ruby required libssl-dev libreadline6-dev libncurses5-dev libsqlite3-dev
# nokogiri required libxml2-dev libxslt1-dev
rbenv install 2.2.1
rbenv global  2.2.1
rbenv rehash
plenv
git clone git@github.com:tokuhirom/plenv.git ~/.plenv
mkdir -p ~/.plenv/plugins
cd ~/.plenv/plugins
git clone git@github.com:tokuhirom/Perl-Build.git perl-build

export PATH="$HOME/.plenv/bin:$PATH"
eval "$(plenv init -)"

plenv install 5.21.9 -DDEBUGGING=-g --build-dir=~/.plenv/build
plenv global  5.21.9
plenv install-cpanm
plenv rehash
mysql-build
go get github.com/motemen/ghq
ghq get kamipo/mysql-build

ln -nfs ~/src/github.com/kamipo/mysql-build/bin/mysql-build ~/bin/mysql-build

mkdir -p ~/opt/mysql
mysql-build -v 5.6.23 ~/opt/mysql/5.6.23

cd ~/opt/mysql/5.6.23
./scripts/mysql_install_db
./bin/mysqld_safe &

./bin/mysql -e 'show variables like "version"'

【知らないでは済まされない】Webエンジニアのためのデータベース技術[実践]入門

Webアプリケーションを運用しているエンジニアであれば、サービスの成長とともにデータベースの性能問題に頭を悩ませた経験が少なからずあるのではないでしょうか。

データベースは、大量のデータを確実に保存してすばやく取り出せる魔法の箱ですが、種も仕掛けもある魔法の箱です。魔法の箱をうまく使ってみせるには種と仕掛けをちゃんと理解していることがとても重要だと思います。

この本では、データベースがどういうデータ構造でデータを保持して、どういう性質を持っていて、どういうことが得意で、どういうことをすると性能上の問題があって、どうやって解決するかの指針を得ることができると思います。

この、どういう問題があって、どうやって解決するかの指針は、日々データベースの性能問題に取り組むWebアプリケーションを運用しているエンジニアにとって、とてつもなく実践的な内容だと思います。

また、まだ本格的なWebアプリケーションの運用をしたことがない人にも、将来Webエンジニアを目指すなら是非この本を手に取ってほしいと思います。

データベースの性能問題は、それが問題になりだしてからの対策は非常に難しくなるので、データベースで起こる問題をあらかじめ知っておくことは将来のあなたをきっと助けてくれるはずです。

ということで、下のリンクから買っても僕にちゃりんちゃりんいかないけど是非読んでみるといいと思います!


Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Nokogiriのインストール

Nokogiriをビルドするのにlibxml/parser.hとかlibxslt/xslt.hが必要なのでいつもの方法でどのパッケージに含まれてるのか調べる。

$ apt-file search libxml/parser.h
libxml2-dev: /usr/include/libxml2/libxml/parser.h
lsb-build-desktop3: /usr/include/lsb3/libxml2/libxml/parser.h
$ apt-file search libxslt/xslt.h
libxslt1-dev: /usr/include/libxslt/xslt.h
$ sudo aptitude install libxml2-dev libxslt1-dev

Nokogiriがビルドできるようになる。

$ gem install nokogiri