コンピュータやソフトウェアのあれこれ@道民(&元道民)
Ruby
Ruby Sapporo Night vol.14 に行ってきました
2月 25th
2月23日(木)に開催されたRuby Sapporo Night vol. 14 『Ruby札幌 × Sapporo.js』に行ってきました。
このイベントはRuby札幌がApple Store Sapporoで行っているイベントです。
Ruby札幌の方達の今やっている、気になっている技術のお話を聞けたり、他コミュニティとのコラボ企画で色々な分野のお話を聞く事ができます。
不定期開催、事前登録不要のイベントです。
開催はRuby札幌のサイトやAppleStoreのイベントカレンダーで知る事ができます。
リッチクライアントを中心とするセッションのリンク
前半は、Ruby札幌の島田さんによるセッション
「リッチクライアント時代のWebアプリケーションアーキテクチャパターンについて考える」
”MVC” をキーワードに、従来のMVCとは、そして現代のリッチクライアントに必要なMVCモデルの形についてとお話が発展していきました。
後半はSapporo.jsの佐藤竜之介さんのお話
「Testable JavaScript」
”テストしやすいJavascript” にするためにどのように設計をし、コードを書いていくのが良いか。
Testableにしていくために、MVCモデル(KATA)を考えていく事が大事になると言う話でした。
参加していてとても面白いなあと思った事は、全く違うアプローチから入っていっている両者のお話が、絶妙にリンクしていってたんですよね。
核となる部分に同じ思想があって、それにそれぞれの形で向かっている。
うまく言えないのだけど、すごく気持ちのよいイベントの流れがありました。
あと、お二人のスライドはどちらもお二人の話以外のたくさんの情報が詰まっている。
とってもためになる資料です。公開されている事に感謝です。
リッチクライアントのためのMVC
ちょうど数ヶ月前に「Javascriptのテスト、すごく難しい」と思う事があり、どういう形でテストしていくのがいいのかなーと考えていたので、りゅうのすけ氏のアプローチはとても興味深かったです。
テストツールやテスト用のライブラリの紹介も最後にあったのですが、それよりも「KATA」。
手を加える度に、進歩して行ける開発を!
デスクトップアプリケーションを作った時に学んだ考えも生かしつつ、「良い設計」について考える機会・・・もとい
「良い設計」を意識する気持ちを持つ事ができました。
Javascriptだから、時間ないから無理、と諦めないこと大事。
良い時間を過ごす事ができました。ありがとうございました!
MacBook(Lion)にRabbitが入った
2月 23rd
昨年の11月頃、Rabbitをインストールしようとしていたのですが、エラーがたくさん出て
うまくインストール出来ませんでした。 前半の格闘はこちら。
このあと大きく躓いて、心が挫けてしまったのでした。
そのまま諦めかかっていたのですが、最近試しにやってみたところ、
すんなりインストールすることが出来ました(・∀・)!
OSがアップデートされたからかな。
トライ途中まで書いた状態のものが下書きフォルダに残っていたので
ログの記録として残しておくことにする。
———-
- cairoのインストールでエラーが出る
$ brew install pango ==> Installing pango dependency: pixman /usr/local/Cellar/pixman/0.22.2: 9 files, 1.0M, built in 56 seconds ==> Installing pango dependency: cairo ==> Exit Status: 2 http://github.com/mxcl/homebrew/blob/master/Library/Formula/cairo.rb#L20 Error: Failed executing: make install These existing issues may help you: https://github.com/mxcl/homebrew/issues/7658 https://github.com/mxcl/homebrew/issues/8144 https://github.com/mxcl/homebrew/issues/8491
OSのバージョンが同じだったissueshttps://github.com/mxcl/homebrew/issues/8144 のオプションをつけてみる
$ brew install cairo --use-clang /usr/local/Cellar/cairo/1.10.2: 95 files, 6.6M, built in 110 seconds
キタワー
$ brew install pango /usr/local/Cellar/pango/1.28.4: 129 files, 3.9M, built in 2.3 minutes
すんなり!
- n度めの正直なるか?
$ gem install rabbit checking for gdk-pixbuf-2.0... no
世の中そう甘くはない
$ brew install gdk-pixbuf ==> Installing gtk+ dependency: jpeg /usr/local/Cellar/jpeg/8c: 17 files, 1.4M, built in 37 seconds ==> Installing gtk+ dependency: libtiff /usr/local/Cellar/libtiff/3.9.5: 235 files, 3.5M, built in 44 seconds ==> Installing gtk+ dependency: jasper /usr/local/Cellar/jasper/1.900.1: 33 files, 1.0M, built in 49 seconds ==> Installing gtk+ dependency: ping ==> Exit Status: 1 http://github.com/mxcl/homebrew/blob/master/Library/Formula/gdk-pixbuf.rb#L21 These existing issues may help you: https://github.com/mxcl/homebrew/issues/4970 https://github.com/mxcl/homebrew/issues/7400 https://github.com/mxcl/homebrew/issues/7654
エラーメッセージをよく読むと、
configure: WARNING: *** TIFF loader will not be built (TIFF library not found) *** configure: error: *** Checks for TIFF loader failed. You can build without it by passing *** --without-libtiff to configure but some programs using GTK+ may *** not work properly
ライブラリが認識されていない。dependencyでインストールされたライブラリのlinkがうまく貼られていなかったみたい。
その後、以下のlinkをsudo権限で設定してから実行したら無事にインストールできた。$ sudo brew link libtiff $ sudo brew link jpeg $ sudo brew link jaspar
インストール後に忘れずに
$ sudo brew link gdk-pixbuf
そもそも、brew install時のユーザー権限がよくない?
sudo brew install ができないのをここを見て解決。 - ひたすらライブラリを入れ続けるしかない
$ gem install rabbit checking for gtk+-2.0... no
$ brew install gtk+
成功。
$ gem install rabbit checking for librsvg-2.0... no
はい、次。
$ sudo brew install librsvg ==> Installing librsvg dependency: intltool /usr/local/Cellar/intltool/0.41.1: 15 files, 200K, built in 7 seconds ==> Installing librsvg dependency: libcroco /usr/local/Cellar/libcroco/0.6.2: 37 files, 972K, built in 44 seconds ==> Installing librsvg /usr/local/Cellar/librsvg/2.34.1: 50 files, 1.6M, built in 47 seconds
inittoolをいれる際に以下のWarinigが出ていた。
Warning: m4 macros were installed to "share/aclocal". Homebrew does not append "/usr/local/share/aclocal" to "/usr/share/aclocal/dirlist". If an autoconf script you use requires these m4 macros, you'll need to add this path manually.
よし、次。
$ gem install rabbit checking for poppler-glib... no
$ sudo brew install poppler --with-glib /usr/local/Cellar/poppler/0.18.1: 447 files, 21M, built in 2.9 minutes
残っているログはここまで。
このあとまた躓いています。
————
ということで、Rabbitを触ってみようと思います。
1回社内の発表で、うさぎとカメを使ってみたいなー。
Ruby勉強会@札幌-22に参加しました
2月 13th
2月11日に開催されたRuby勉強会@札幌-22に参加しました。
今回はオーストラリアよりアンドリュー グリムさんを迎えての勉強会でした!
初めてのRuby読み合わせ
今回は6.3.5 for式からでした。
覚えたこと
6.3.5 for式
for と each のスコープの違いについて。eachはブロック内で定義した変数のスコープはブロック内だけだけど、forの場合はブロックの外側でも変数を参照できる。
for i in [1,2,3] do a = "hello" end puts a // できる
[1,2,3].each do |i| b = "hi!!" end puts b // NameError: undefined local variable or method `b' for main:Object
このため、ループ内でlumbdaを定義した時の実行結果も変わる
a = []
for i in [1,2,3] do
a << lambda{puts i}
end
a.map{|e| e.call}
--
3
3
3
b = []
[1,2,3].each do |i|
b << lambda{puts i}
end
b.map{|e| e.call}
--
1
2
3
こうして比べてみるとiが定義されている場所が違うんだな。なるほど。
みんなforはほとんど使わないみたいだった。
6.3.6 イテレータ
rubyにはいろいろな繰り返し処理の方法がある
- loop: 無限ループを提供
- n.times: n回繰り返す
- n.upto(m): nからmまでカウントアップ
- n.downto(m): nからmまでカウントダウン
- n.step(m, x): nからmまでxずつ増やす/減らす
カウントアップとカウントダウンは n < m (upto), n > m (downto) となっていないと実行されない。
6.3.7 脱出
break, next, redo.
Javaのbreak + ラベルを使う話がでました。実際ラベルを使った事がほとんどなかったのですっかり忘れていました。
ループを一気に抜けるため、にあるのかな?つかわないけど。
pythonの loop else は何のためにある?という話題もでました。
次回は6.4例外処理からです。
アンドリューさんのお話
[1,2,3].map(&1.method(:+))
という書き方ができるよ、と言う話。
関数の部分適用というらしい。
["9","1","2"].map(&method(:Integer)) => [9, 1, 2]
class MyClass
def to_proc
puts "to_proc called"
Proc.new{puts "doing something"}
end
end
m = MyClass.new
1.times(&m)
--
to_proc called
doing something
こんな順番で説明をしてくれました。
1というオブジェクトの+メソッドを[1,2,3]に適用させている。
・・・・ようなのだけど、話を聞いている時はなるほどと思っていたのだが、難しくて説明できません。
誰か教えてください(;_;)
source_loactionの使い方とto_iとmethod(:Integer)の違いは理解した。
"a".to_i => 0
Integer("b")
// ArgumentError: invalid value for Integer(): "b"
懇親会
また次回もよろしくおねがいします!
第25回北海道開発オフに参加しました
2月 7th
2月4日(土)に行われた第25回北海道開発オフに参加しました。
人数が多すぎなかったこともあり、やりたいと思っていたことを集中してやることが出来ました。
当日やったことは次の3つ(実質2つ)です。
はじめる!Rails3を読みながら体系的にRailsを学ぶ
Railsのソースを見たり、機能を追加したり、修正したことはあったのだけど、ゼロから環境を作ってじっくり理解しながら学習したことがなかったので、本を読みながらプロジェクトを作っています。
開発オフでもその続きをやっていました。
自分の環境はRails3.1で開発しているのだけど、本書はRails3.0。そんなに大きな違いはないだろうなと思っていたら、結構違った。
しかし、 『はじめる!Rails3 (1)』をRails 3.1で読み進めるときのポイント というピンポイントで自分が困っていたことをアウトプットしてくれている記事があり、大きく躓かずに進むことが出来ました。
プロジェクトはgitで管理していて、練習問題はGitHubにもおいておくことにしました。
(途中で投げ出さないようにするため)
コミットの頻度や意味のあるまとまりでコミットすることを意識して進めました。その結果
git commit --amend git reset
などのコマンドを覚えることができました ![]()
さらに、git関連のエイリアス設定も充実してきた。
データ投入までできたので、次はデータ表示だー。
マシン起動時にMoinMoinDesktopを起動させるスクリプトを作る
ローカル環境のメモとしてMoinMoinDesktopを使っているのですが、MacBookのPythonのバージョンが上がってしまい、起動エラーが出ていました。
なので、
- Pythonのバージョン指定をしてWikiサーバーを立ち上げる
- ターミナルのログコンソールが立ちっぱなしにならないようにする
スクリプトを作りました。
#!/bin/sh nohup /usr/bin/Python2.6 /Users/xxxx/Develop/moin-1.9.3/wikiserver.py &
この前覚えたnohup。これでログは外部ファイルに記録されるはず。
この.shファイルを右クリックしデフォルトの起動アプリケーションをターミナルにしたうえで
このアプリケーションで開く → ターミナル
システム環境設定 → ユーザーとグループ → ログイン項目
に追加すればOK。
まだ1回しか再起動していないのだけど、うまく行っている模様。
3ヶ月以上放置していた気になることが1個すっきりしました。
もろもろ
ソースコードをEmacsで書きながら覚えていないショートカットを調べて使うなど。
(プラグインには手を出せていない。)
gitにマシン名(本名漢字)でコミットしてしまったソースをGitHubに上げてしまい、本名でググるとソースが出てくる件の修正は
途中まで調べたのだけど完了せず。
あとはみなさんとのおしゃべりて
- よい技術書の選び方
- XSSについて
とか話せたのは良かったなー。
お昼ごはんはsuage+のスープカレー、ハニーマスタードチキンとアボカドの辛口。
ということで、今回も楽しかったです!次回も楽しみです。
CentOSにRubyOnRailsを導入したときにハマったところまとめ
2月 1st
達人出版会から出ている「はじめる!Rails3」を読みはじめました。
基本的に開発はMacで行うのだけど、自鯖があるので環境構築だけでもやってみようと挑戦したところいろいろハマりました。(よって今日は眠い)
環境
CentOS release 5.7 (Final)
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux](rvm使用)
ここに「はじめる!Rails3」通りにサンプルが実行できるよう環境を整えていきました。
sqlite
サンプルアプリ用のDBインストールでいきなり躓く。
$ sudo yum install sqlite3-devel Loaded plugins: priorities, security 144 packages excluded due to repository priority protections Setting up Install Process No package sqlite3-devel available. Nothing to do
・・・ない。
sqliteはあるけど、sqlite3はいない。
SQLite/Rubyライブラリにはsqlite3.6.16以上が必要なのだが、yumではsqlite3.3.6以上はインストールできない事が判明。
ということでSQLiteのサイトからソースコードでインストール。
CentOSの場合は「sqlite-autoconf-3071000.tar.gz」を使いました。
# wget http://www.sqlite.org/sqlite-autoconf-3071000.tar.gz # tar xzvf sqlite-autoconf-3071000.tar.gz # cd sqlite-autoconf-3071000 # ./configure # make # make install
一発で成功したー。(珍しい・・・)
ブログ「俺の作業録」を参考にさせて頂きました。ありがとうございました。
http://d.hatena.ne.jp/pirosikick/20101103/1288796756
Bundlerが使えない
gem install rails でrailsはすんなりと入った。
その後、いざ、railsアプリを作ろうと
$ rails new hinagiku
と打ったところ、何やら末尾に大量のエラーが…。
とりあえず、動くかどうかやってみようと動かしてみたところ、やっぱり動かなかった。
エラー出てたもんね。
$ rails server Could not find jquery-rails-2.0.0 in any of the sources Run `bundle install` to install missing gems.
必要なライブラリがないからbundle installをしなければいけない。
(bundlerはこの前のえにしテックカフェで知ったよ ・∀・)
$ bundle install Fetching source index for https://rubygems.org/ (略・・・)LoadError: no such file to load -- openssl (ずらずらずらとライブラリのインストールエラー)
これ、rails newした時に出ていたのと同じエラーである。
なるほど、rails new したときにbundle installしようとしてコケていたのか。
ライブラリがインストールできていないのだけど、元をたどれば「opensslがない」と。
調べてみたら、rvmでrubyをインストールする場合、opensslのオプションを付けてあげる必要があることがわかった。rvmのサイトを見ながらrubyをreinstallして解決。
$ rvm pkg install openssl $ rvm reinstall 1.9.3 --with-openssl-dir=$rvm_path/usr
このあとbundle installしたら問題なくライブラリのインストール、紐付けが行われた。
期せずしてはじめてのbundle installコマンド。
ちなみに、上記はrvmで管理しているRubyのどれかのバージョンで1回やれば大丈夫みたい。
1.9.3でrails環境を作ったあとに、rvmにインストールした1.9.2(opensslの指定なし)でrails環境作ったときにはエラーにならなかった。
JavaScriptエンジンがない?
これでサーバーは立ち上がる・・・はず・・・!
rails server は rails s でも実行できるのね、ふmふm。
$ rails s (略)/lib/ruby/gems/1.9.3/gems/execjs-1.2.4/lib/execjs/runtimes.rb: \ 45:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
JavaScript runtimeがない、のか。
調べてみたところ、Rails 3.1 から内部で CaffeeScript を使うようになったことで、実行時にJavaScriptランタイムが必須になったようです。
railsアプリケーションフォルダ直下にあるGemfileに
gem 'therubyracer'
を書いてbundle install。
これでRubyで使えるv8インタプリタのtherubyracerが入りましたー。
node.jsでもよかったみたい。
Macにはnode.jsが入っていたから特にエラーにならなかったのかな。
参考にさせてもらったサイト
http://d.hatena.ne.jp/kano4/20110708/javascript_runtime_error
http://d.hatena.ne.jp/kano4/20111201/javascript_runtime_error_part2
http://blog.glidenote.com/blog/2012/01/07/rails3.1-could-not-find-a-javascript-runtime./
http://www.ruby-forum.com/topic/1899392
上記を乗り越えて、自鯖でrails構築ができるようになりました!
rails sを実行してから、自鯖で開発していたらrails sしても外から簡単にアクセスすることができないじゃないと気がついたりはしたのだけど、環境構築は繰り返して勘を掴んでいくのが慣れる近道なのかも。
ちなみにMacで同じ環境を作ったのだけど、1つも躓くことなくサクっと環境が出来上がりました。
開発や学習はMacメインでやっていく予定です。
Ruby勉強会@札幌-21に参加しました
1月 23rd
1/21(土)に行われたRuby勉強会@札幌-21に参加しました。
読み合わせとコードレビュー大会。勉強会でコードレビューするのはとっても面白い試みだなあと思いました。
初めてのRuby読み合わせ
6.3制御式〜。6.3.4 while式までやりました。
case文の書き方が独特だなあ。特に条件を横に並べて書く事ができる点。
例えば、targetという変数の値が1の場合はxx、2,4,5の場合はyy、7の場合はzz、その他の場合はhogeという処理を書くとすると
<Java>
switch(target){
case 1:
xx();
break;
case 2:
case 4:
case 5:
yy();
break;
case 7:
zz();
break;
default:
hoge();
}
}
<Ruby>
case target when 1 then xx when 2,4,5 then yy when 7 then zz else hoge end
Groovyを併用する事で、Javaでもswitch文でパターンマッチングを簡単に使用する事ができたり、
セミコロンを省いたり、とかなり気持ちよく書けるようになっているのだけど、breakを書かなくていいというのはすごく気持ちがよいなあ。
caseと処理が1:1なので、あるcaseにマッチしたときにどの処理を行うべきなのか見やすい。
読書会の中では、rubyの色々な記述方法について、「どれを使っているか、そしてそれはなぜか」という話がたくさんされていました。
色々な書き方があると「意味を考えてコードを書く」という気持ちが強くなるんだなぁと感じました。
どっちを使うか考える時に、このコードで表現したい事は何かを今一度考えるというような。
表現方法がたくさんあるrubyならではの強みだなぁ。
次回は P118 6.3.5から。
初めてのRuby読み合わせ
volpe28vさんがリリースした「コタれん」のソースコードをみんなでレビュー。
Railsのソースをそんなにたくさん見た事がないので興味津々でした。
そして、プロダクトの構成を説明してもらう事、そのソースコードを見る事、ソースコードの指摘を聞く事、全部がとても面白かった。
書いた人も、見ている人も、どっちにも有益な時間でした。あっという間!
業務で行われるソースコードレビューも同じようにたくさんの学びや刺激を受ける事ができますが、勉強会では業務という枠を飛び越え、本当にいろいろな考えを聞く事ができるのが面白い。(人数も多いし)
またやってみたいなあ。
Sapporo Cafeさん
今回の会場はSapporoCafe(北8条西5丁目)でした。
1階はWifi完備のカフェ、2階は談話室として解放されています。
今回の勉強会は2階で開催されました。
普段は2階も自由に使えるスペースとなっていますが、2階の半分のスペースを1時間800円で貸していただけるそうです。1階のカフェメニューを2階でいただく事もできるし(スイートポテト美味しかった!)、プロジェクタも電源もあります。半日で電源、インターネット環境、プロジェクタがついて4000円は安い。小さめの勉強会を開催する時にとても嬉しい場所です。開発オフなど出入り自由な勉強会にもとても向いているんじゃないかな。
ただ、冬場の2階はちょっと寒いので、膝掛けなどの防寒具を持参した方が良さそうです。
1階は居心地のよいカフェでした。机が広々。コーヒーも美味しかったし(350円)、立地条件もとても良い(駅から近い、自分の場合は自宅からも会社からも近い)。
1人でちょっと勉強するのに最適のスペースだなと感じました。
仕事帰りに勉強したり本を読んだりするのに、これからたくさん利用させていただこうと思います!
数年前はこういう施設(インターネットが使えて、4,5人でPCを使いながら開発や話し合いをするスペース)が札幌の街中には全然なかったんだよなあ、時代が嬉しい方向に変わっていっているのを感じました。
これからもよろしくお願いします。
今回の勉強会に参加して、いい刺激を受けて「Rubyのコード書きたいー!」という気持ちになりました。
「どうしてその書き方をするのか」という話をしていたのが一番大きかった。
どの書き方を選ぶかでソースコードから伝わるニュアンスや伝えたい意味が変わるなんて考えた事がなかったので、そういう変化を楽しみながら書いていきたいです。まずは写経から。
MacBook(Lion)にRabbitを入れたい
11月 8th
インストールメモ。
- rvm に ruby1.9.3 をinstall
$ rvm install 1.9.3 ERROR: rvm requires autoconf to install the selected ruby interpreter however autoconf was not found in the PATH.
こんなエラー見たことない。ぬぬぬ。
- rvm のupdate
$ rvm version rvm 1.6.5 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]
古すぎます。ごめんなさい。
$ rvm update ERROR: rvm update has been removed. See 'rvm get' and rvm 'rubygems' CLI API instead
updateはもう使われていないので新しいコマンドを使いましょう。
$ rvm get latest
再読み込み
$ rvm reload RVM reloaded!
確認。
$ rvm version rvm 1.9.2 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]
OK。
- rvm に ruby1.9.3 をinstall(再)
$ rvm install 1.9.3 $ rvm use 1.9.3
さくっと入りました。バージョン確認は怠らないこと。
- rabbitをinstall
$ gem install rabbit uilding native extensions. This could take a while... ERROR: Error installing rabbit: ERROR: Failed to build gem native extension. /Users/sally/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb checking for GCC... yes checking for rb_define_alloc_func() in ruby.h... yes checking for rb_block_proc() in ruby.h... yes checking for new allocation framework... yes checking for attribute assignment... no checking for Win32 OS... no checking for gobject-2.0... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.なんか出た。gobject-2.0がないらしい。調べてみると、gobject-2.0はglibに入っているようである。
- glibをinstall
$ brew install glib ==> Installing glib dependency: gettext /usr/local/Cellar/gettext/0.18.1.1: 365 files, 13M, built in 6.3 minutes ==> Installing glib dependency: libiconv /usr/local/Cellar/libiconv/1.14: 24 files, 1.4M, built in 75 seconds ==> Installing glib ==> Downloading ftp://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2 curl: (28) FTP response timeout
ftpのダウンロード先が遅くて、もうちょっとのところでタイムアウトになってしまう。
- glibを落としてくる
こちらの記事と同様、https://github.com/mxcl/homebrew/issues/3476の現象がおきていたので、curlにオプションをつけてglib-2.28.8.tar.bz2を落としてきた。$ curl -O --disable-epsv ftp://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2
時間はかかったけどなんとかファイルを手に入れた(6000Kで10分)。
~/Library/Caches/Homebrew/に置く。$ brew install glib Error: The linking step did not complete successfully The formula built, but is not symlinked into /usr/local You can try again using `brew link glib'
再びエラーが出た。symlinkedに失敗しているということでメッセージに従いコマンドをたたく。
$ brew link glib Error: Could not create symlink /usr/local/include/glib-2.0. Check that you have permissions on /usr/local/include
把握。
$ sudo brew link glib
OK。
- atkも足りない
$ gem install rabbit … checking for atk... no
次はatkか。。
$ brew install atk => Installing atk dependency: pkg-config /usr/local/Cellar/pkg-config/0.25: 8 files, 232K, built in 50 seconds ==> Installing atk /usr/local/Cellar/atk/2.2.0: 181 files, 2.5M, built in 63 seconds
linkは同じようにあとからつけた。
- もう、こわくない。はず。
$ gem install rabbit … checking for pango... no
足りない物をいれていけばいい。
$ brew install pango ==> Installing pango dependency: pixman /usr/local/Cellar/pixman/0.22.2: 9 files, 1.0M, built in 56 seconds ==> Installing pango dependency: cairo ==> Exit Status: 2 http://github.com/mxcl/homebrew/blob/master/Library/Formula/cairo.rb#L20 Error: Failed executing: make install These existing issues may help you: https://github.com/mxcl/homebrew/issues/7658 https://github.com/mxcl/homebrew/issues/8144 https://github.com/mxcl/homebrew/issues/8491
時間いっぱい。続きは明日。(所要時間3時間)
上記のgithubを読んでみよう。
[#tqrk04][Ruby][tokyurubykaigi04]TokyuRuby会議04に行って来ました
10月 30th
以前から、「酒」「肉」「飯」とかプレミアムモルツ祭りという単語でしか聞いたことがなくて、
若干恐れていたTokyuRuby会議04に行って見ました。
昼からビールを飲むのに夢中で、写真を撮るのをすっかり忘れていたんですが、
今思うと凄惨な光景も一部あったので撮らなくてよかったかな、なんて思っています!
しかし、スタッフの方もゆるりとしていたところがあって
こんなRuby会議もあるんだなぁ、とか、会場の後ろに矢沢永吉が飲んでる垂れ幕があって
異様な光景だなぁと思ったことがとても印象に残っています。
じゅーんお兄さんや、いがいがさんや、さくたつさんとお話できたことがとても今回はよかったと感じていて、
「自分が今いるSIerの会社と、Ruby界隈で楽しく働いている方々という両極を見ているんじゃないかな」
というよう内容をじゅーんお兄さんからコメントいただいて、
どちらも体験してみるということがよいのではないかという意見をいただきました。
最近の思うところのコアな部分はまさにここらへんであって、
キャリアパスについての視点を広げられたことや、
どんなエンジニアが求められているのかという点を少しでも垣間見れたのがよかったと感じています。
毎回Ruby会議にはいろんな出会いや、パワーをもらっています。
ありがとうございます。
Ruby勉強会@札幌-20に参加しました
10月 28th
10月22日(土)に開催されたRuby勉強会@札幌-20に参加しました。
今回は一般発表が2本。すごく刺激を受けました。
ナイーブベイズによる医学診断プログラムの試作
医学部の学生である千葉さんによる発表。
医学診断プログラムについての話なのですが、プログラムを試作するに至った動機やモチベーションの話にすごく刺激を受けました。
- 作りたいという物があった
- 作ろうと思った
- 作った
単純に見えるけど、その動機と行動力、そして3ヶ月で形にしてしまうパワー、すごいと思いました。
これを作りたい、という気持ちがあるというのは本当に強い。
興奮覚めやらない自分の投稿です。
RubyConf
mrknによるRubyConfを動画と写真で振り返りながらのレポート。
実際にmrknさんが会場で発表したセッションも聞けました。
言語を愛している人達が集う熱気あふれる場所の空気に触れました。
写真のみなさんの表情が生き生きしていました。
小柴さんのLTを皆で見たのですが、とてもよかった!
懇親会
初めて「はちきょう」で「つっこめし」を食べた記念。美味しかった。贅沢!

懇親会でも千葉さんをはじめ、いろんな人とお話ができました。
(jsで困っていることを相談できてよかった。)
刺激的でとても楽しい時間でした!
第24回北海道開発オフに参加しました
10月 17th
10月15日(土)、第24回北海道開発オフに参加してきました。
最近忙しかったのもあり、こまごまとしたやりたいことがたまっていたのでコツコツ、まったりと消化しました。
午前
午前中は、次回読書会の予習も兼ねて、アジャイルサムライを黙々と読んでました。
開発オフは静かで集中できる環境なので、実は読書にもってこいなのです。
(はじめて参加された方は、会話のなさに驚いたのではないだろうか・・・)
しかし、自宅でもそうなのだけど、この本は大事なことの合間にクスッと笑える表現が挟まっているので、ときどき笑い声を出しそうになってしまいました
ランチ
『Bem Bera network company』のスープカレー。
初めて食べた。あっさりしていて「スパイスたっぷりのカレースープ」という感じ。
しかし薄いとかいうわけでもなく、しっかりとスープカレーであり、大変美味。
フォーが入っているのが独特ですね。
午後
午後からは気合いを入れてプログラミングです。(満腹で若干眠気がアレでしたけど)
今回は、
- お道具箱スペースをつくる
- RSSを解析するプログラムを作る
- TwitterBotのメンテナンス
が目標です。
お道具箱スペースをつくる
bitbucketでgitを使えるようになったので、その環境を作ってみたいというのが動機。
あとは恥ずかしいけど書いた物を見えるところにおいておこうかな、と。
環境は、特に困ることもなくすんなりできました。
ssh環境も設定したのだけど、単純に自分用(ローカルで作った物をpushするだけ)ならssh環境がなくても大丈夫でした。
お道具箱はここ。過疎化しないようにしたいな・・・
RSSを解析するプログラムを作る
これは仕事でFaecbook APIを使用しているのですが、ときどきSDKの不具合が発生するので、プラットフォームの状態を表示しているページのRSSを取得して、わかりやすい場所に通知する仕組みが欲しいなあと思ったのが動機。
ただ、調べていくうちにメール通知してもらえる仕組みが既にあることがわかってしまった・・・。
そこで気持ちを切り替えて、rubyのrssを使って、RSSオブジェクトを扱う方法について勉強しました。
こんな短いコードでRSSがオブジェクトとして取得できるのに感動。
require 'rss'
require 'open-uri'
rss = open('http://www.facebook.com/feeds/api_messages.php'){|file|
RSS::Parser.parse(file.read)
}
xmlタグを外した中身をどうやって取得すれば良いのかに若干手間取りましたが、irb上でなんどかトライしたらさくっとできてしまいました。
rss.items.each{|item|
p 'title: ' + item.title.content
p 'link ' + item.link.href
p 'published ' + item.published.content.strftime("%Y-%m-%d %H:%M:%S")
}
こういうのをちょっとずつ覚えていって、必要となった時にささっと作れるようになりたいな。
TwitterBotのメンテナンス
PHPでつくったTwitterBot達。
短縮URLの扱いがまちまちだったので、整理することにしました。
といっても、URLは短縮しなくてもtwitter側でよしなに扱ってくれるようなので、いったん短縮URLの実装をはずしました。
bit.lyのAPIを使って解析できるようにしようかな、というのが次の課題です。
(中途半端にbit.ly使っていたのもいったん外しています。)
最終的にアウトプットしたソースコードは10行だったのですが、自習癖がなくなっていた自分にはとてもよい刺激となりました。
ありがとうございました。



