0

Mountain Lionでnative extensionなrubygemsがビルド出来ない

/usr/bin/makeが消滅していたので、XCode4.4入れた。でもまだmakeが無い。
Command Line Tools for OSXをインストールしたらmakeが使えるようになった。

それでも

gem install ffi
等がビルドできない。/usr/bin/gcc-4.2が無かった。

sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
sudo ln -s /usr/bin/llvm-g++-4.2 /usr/bin/g++-4.2
これでnative extensionなrubygemインストールできるようになった。
thin, ffi, phidgets-ffi, zmq, mongo, eventmachine, nfc, sys-filesystem等のgemをビルドして動作確認した。

参考:ruby on rails – Not able to install some gems after mountain lion upgrade – Stack Overflow

0

24時間以内に使ったコマンドと回数をワンライナーで

zshのhistoryコマンド使うよりも~/.zsh-history読んだほうが簡単だった

tail -5000 ~/.zsh-history | nkf -u | ruby -lane 'time, cmd = $_.scan(/^: (\d+):\d;(.+)$/)[0]; puts cmd.split(/\s/)[0] if time.to_i > Time.now.to_i-60*60*24' | sort | uniq -c | sort -nr


結果
 156 ruby
66 git
42 tail
40 node
38 ls
18 curl
15 npm
12 cat
11 heroku
10 history
9 cd
8 ssh
8 less
7 echo
6 mount_ramdisk
6 history-all
6 emacs
5 scp
5 mv
5 gem
5 bundle
4 screen
4 rm
3 mkdir
3 irb
3 cp
2 wc
2 tweet
2 touch
2 sh
2 markdown
2 df
1 which
1 wget
1 tw
1 rake
1 p
1 open
1 hostname
1 head
1 gi
1 chmod
1 ../tmp
1 ..

0

Rubyでディスクの空き容量を取得

sys-filesystemというgemを使うと簡単だった。
MacとUbuntuでしか試してないけどWindowsやBSDでも同じコードでディスク状態を取得できるらしい。

参考:rubyでディスクの空き容量を取得してみる (やまかわのログ)

gem install sys-filesystem


ギガバイト単位で取得
require 'sys/filesystem'

stat = Sys::Filesystem.stat('/')

total = (stat.blocks * stat.block_size).to_f / 1024 / 1024 / 1024
available = (stat.blocks_available * stat.block_size).to_f / 1024 / 1024 / 1024
puts "#{total}GB中、#{available}GB使用可能"

total = total.to_s.scan(/^(\d+\.\d{0,3})/)[0][0].to_f
available = available.to_s.scan(/^(\d+\.\d{0,3})/)[0][0].to_f
puts "約#{total}GB中、#{available}GB使用可能"


112.19928741455078GB中、5.0075531005859375GB使用可能
約112.199GB中、5.007GB使用可能


Sys::Filesystem.stat(‘/’) はマウントポイントで、”/Volumes/Machintosh HD 2″とかを引数に渡せば別のディスクも読める。

0

EventEmitter

参考



普通に使う

var events = require('events');

var foo = new events.EventEmitter();

foo.on('bar', function(data){
console.log(data.message + ' - ' + data.date);
});

foo.emit('bar', {message : 'hello', date : new Date()});
foo.emit('bar', {message : 'helloooooo', date : new Date()});

hello - Tue Jul 24 2012 18:01:48 GMT+0900 (JST)
helloooooo - Tue Jul 24 2012 18:01:48 GMT+0900 (JST)


クラスに組み込む

クラスにevents.EventEmitter.callとutil.inheritsすると、インスタンスにon/emitが追加される

var events = require('events');
var util = require('util');

var User = function(name){
events.EventEmitter.call(this);
this.name = name;
}
util.inherits(User, events.EventEmitter);

var shokai = new User('shokai');
var ahokai = new User('ahokai');

var callback = function(data){
console.log(this.name+' => '+data);
};

shokai.on('hungry', callback);
ahokai.on('hungry', callback);

shokai.emit('hungry', 'kazusuke');
ahokai.emit('hungry', 'zanmai');

shokai => kazusuke
ahokai => zanmai

0

研究室紹介した

研究室紹介で書いてたSFCの研究室が集まって説明会するやつに参加してきた。

今日のスライド

3回やって合計70人ぐらいに説明した。
増井研に入りたそうな人けっこういたと思う。わりとウケてた気がする。

1人異様に食いついてきた奴がいて、一緒に関内で天下一品食って帰った。おもしろかった。