トップ 追記

2012-01-28 [長年日記]

_ Ruby Gold Programmer になりました

ただしもう一回受けて合格する自信がありません(笑

実は12月に無理矢理時間を作って受けに行って落ちてます。準備は1週間程度。Ruby技術者認定試験 公式ガイド (ITpro BOOKs)(伊藤忠テクノソリューションズ)*1メタプログラミングRuby(Paolo Perrotta)の第1章と @IT の模擬試験。結果、72点で不合格。

このときの感想としては

  • へー、プロメトリックの試験てこんなんなんだ(初めて受けた)
    • 15分前集合を守らないと受験できないのでとにかく行きの時間には余裕を持って!
    • 「あとで見直す」機能使いこなせなかった
    • 時計、筆記用具、携帯、すべて持ち込み不可。ハンカチ、ティッシュは可。パソコンの画面上で残り時間は確認できるし、メモ用のペンと薄いボードがあるので特に問題はない。
    • 確認画面を持参しろとプロメトリックのサイトには書いてあるんだけど、2回とも不要と言われた。
  • Silver の公式ガイドはよくできてる。これとリファレンスマニュアルだけで Silver は合格できるんじゃないかな。
  • メタプログラミングRubyはスバラシイ
  • @IT の模擬試験はやや簡単なものばかり出ている気がする(試したら90%以上は正解できていたので変に自信を持ってしまった。)
  • そんなに頻繁に起きないはらいたが直撃して超つらかった

プロメトリック試験は高いから避けていたのですが、あの方式の試験には慣れておいた方がいいと思いました。ちょっとビビる。それともイマドキの若い人はああいう試験慣れてるのかな。すべてパソコンで、隣の人は違う試験受けてて、ヘッドホンで遮音して、みたいな。1回目に受けたところはヘッドホンとは別に耳栓も用意してあったけど、2回目のところにはなかったので、試験会場としてはヘッドホンが必須要件なのかな? 頭がでかいのでああいうところのヘッドホンは苦手です><

勉強に使ったものでは、他の合格した方々も推しているメタプログラミングRubyが素晴らしいです。これでだいぶ上乗せできたし、今までなんとなく書いてた部分がすごく明確になりました。本当は「メタプログラミング」っていう言葉がなんとなくイヤで避けていたのですが、これは完全に損してましたね。今では特にテストのときにこの本の知識が役に立ってます。

ただ、1回目のまとめをすぐやらなかったのは完全に失敗でした。合格するつもりで受けるのは当然なのですが、終わった後にまとめる時間を用意できるようにしておくといいです。平日半休で受けるとまとめる時間がなくなって忘れちゃいます。

2回目の今回もけっきょく準備期間は1週間程度になってしまいました。リファレンスマニュアル中心に改めて基礎をまとめ直してたんですけど、結果はほとんど変わらなかったのでこれはあまりいい方法ではなかったみたい。むしろ Silver 向きの勉強方法だったかも。でもここでまたいくつも発見があったし、結果だけみれば合格だから、まぁいいかなぁ。本当はもっとライブラリ周り見た方がいいんだよなと思いながら基礎の Array や Hash をまとめ直していたら、案の定使っていないライブラリが出題されてしまいました。いやでも Array や Hash をどう使うとどういう例外が発生するとかも忘れてたし、やり直したことには意味はあります。きっと。

ちなみにピッケル本を読んでないので、それが敗因かもしれないし、そもそもコンパイラ作った経験とかあればそこから広げて類推できた部分もたくさんあったのかもしれません。*2

正直、受かったはいいけど達成感が全然ないです。まだ全然 Ruby 分かってなさすぎる。まだまだだな!

認定試験を受けようと思った人へ

自分が今回の経験を通じて気づいたことをまとめておきます。何かの参考になれば。

  • Rubyインタプリタを自分の頭の中に作り上げられれば合格する
  • 使ってる時間と言語の習得レベルはまったく関係ない
  • なんとなく書けちゃう人、アプリや API などに強い関心を持っている人よりも真面目に Ruby を勉強する人の方がたぶんこの試験に向いてる
  • 常にググったり ri を引いていると基本的な文法やライブラリのメソッドをあまり覚えていない
  • 常に irb などでコードを動かして確認するクセがついていると細かい記述を覚えられない
  • なんとなくエラーの出る書き方を避けていると「ここではこういうエラーが起きる」ことを知る機会を失う
  • 使っていないライブラリのことなんかさっぱり知らない
  • ちゃんと勉強する時間を確保しよう。眠い頭で無理にやっても入らない。でもこれがいちばん難しいかも。
  • 準備の時間だけでなく振り返る時間も用意しておこう。もし落ちたらこの振り返りこそが次へのステップになる。

うーん、全然参考にならないな。

少なくとも自分は言語そのものにはあまり関心がないなーという自覚があったのですが、見事にそれがこの試験を受けるうえでは阻害要因になりました。すでに使えている人こそ一度気持ちをリセットして勉強し直すのがいいんじゃないかと思います。ただ、いろいろ合格した人のブログを見て回っていたのですが、Ruby を書いたことないけど合格してる人もいるんですよね…。どういう頭の構造をしているんだろう。不思議。

プロメトリックの試験会場はこの辺だと富山がよい

Ruby に限らずプロメトリックの試験は全部同じ会場で受けられます。ただし、当然ですが地域によって試験会場の揃い方にバラツキはあります。

金沢には2012-01時点で受験可能なところは一つしかなく、しかも交通の便は悪いです。*3金沢市内に住んでいて車で移動できるならいいけど、能登から電車で来ますとかいう場合はなかなか大変。

その点、富山は駅から徒歩圏内に試験会場がありますし、何より土曜受験ができます。そうなんです。金沢の試験会場は土曜受験できないんです。これものすごく困ります。みんながみんな業務で受験できるわけじゃないんだぞ。

というわけで富山に近い方は富山での受験も考えてみていいと思います。

ただし、冬の試験はトイレが近くなってつらいです。

Tags: Ruby

*1 だいぶ前に買うだけ買ってあった

*2 本当はそういうことを勉強できる道に進んでたはずだったなぁ、そういえば(遠い目)

*3 そもそも金沢で交通の便のよい施設ってほぼ皆無ですけど


2012-01-21 [長年日記]

_ 今度からrvmでruby入れるときはdocument忘れないであげたい

ri 使ってないよ chm で決まりでしょという人には無関係な、ものすごく今さらな話。

RVM: Ruby Version Manager - 'rvm docs' - Working with rdoc / yard.

手で作業するときは rvm*1 で入れた 1.9.2 を常用してる*2んだけど、実は「1.8 のときに超お世話になってた ri で全然ドキュメント見れなくてすげー不便」と思っていた。いろいろ調べて

yri + yard-doc-core gem

にしてたんだけど、実は

rvm docs generate するだけでよかった

ことが発覚。

なんてこった。これで ri の補完も活かせて嬉しい。

以下はこれを調べるきっかけになった Twitter timeline の抜粋。

19:27:23 <shinji_kono> ruby って、perldoc みたいな offline document な
いの?
19:27:47 <_ko1> @shinji_kono rdoc ってやつが(使ったことないですが)
19:30:46 <_ko1> @shinji_kono 私は windows 使ってるので chm ファイルで
見てます
19:39:17 <shinji_kono> 5分で学ぶRubyは書きました。が、Perl の方には
perldoc 使えって書けるんだけど、Ruby は rdoc ってわけにはいかないらし
い。
19:43:17 <nalsh> @shinji_kono 英語でよろしければ rdoc で、これはCソー
スないドキュメントが由来。「るりま」という日本語マニュアルプロジェクト
はそれとは別ってのが日本人にはちょっと複雑ですかね
19:56:08 <shinji_kono> どうも、Core なライブラリのドキュメントは ri で
引っ掛からないみたいだね。
20:01:18 <nalsh> @shinji_kono Ruby をインストールした時に rdoc を入れ
ていないのではないでしょうか
20:16:32 <shinji_kono> 僕の希望としては、ri File.open でなんか出て欲し
いです。
21:15:00 <wtnabe> @shinji_kono 自分もよく分からないんですが ri は 1.9
からあんまり役に立たなくて yri と yard-doc-core gem を使うとよさげな気
がします。この辺、コアな人たちの話題にあまりのぼらない印象。
21:24:11 <noplans> @wtnabe riで困ってないんですが、なんか問題ありまし
たか?
21:25:00 <wtnabe> @noplans うーんrvmで入れた1.9だとriで特にコアのドキュ
メント全然出ないんですよね。だから以前よりだいぶ不便を感じています。
21:27:09 <noplans> @wtnabe ri --list-doc-dirsにないとか、インストール
時にドキュメント入ってないとかですかねい
21:36:01 <wtnabe> rvmでの入れ方を間違ってるのかな
21:38:16 <wtnabe> 正しい方法が分かっていないということか
21:39:12 <wtnabe> http://beginrescueend.com/rubies/docs/ お。
21:40:20 <wtnabe> take a *long* time って言われた。bingo っぽい。
21:40:45 <wtnabe> まぁすでに yard-doc-core gem 使ってるんだけど。
22:14:29 <noplans> @wtnabe rvm でのインストール時に
--enable-install-doc つけるとドキュメント込みでインストールされないで
すかねい
22:23:47 <wtnabe> できてた。なるほど。

rvm install --enable-install-doc でもいいみたいだ。なるほど、いろいろ参考になりました。

※ ふと思ったけどここに出てるの、自分以外みんな大学の人?

Windows の場合

installer - ruby 1.9 ri problem - Stack Overflow

ちなみに Windows には ri 付かないっぽいけど、まぁ Windows なら chm でいいんじゃないすかね。自分は Mac だけど ichm - iChm is a CHM reader for Mac OS X - Google Project Hosting で便利に使ってます。これは複数タブ開けるので、以前ほど chm きらいじゃなくなりました。

myrurema という別解

yhara/myrurema - GitHub

るりまプロジェクトですね。コード内のコメントからの生成ではないのでラグがある代わりに日本語で読めます。

Tags: Ruby

*1 まだ rvm なの? ぷぎゃーとか言わないの。

*2 待つのが面倒でまだ 1.9.3 にしてない。


2012-01-14 [長年日記]

_ Twitterのfollowerのgithubアカウント引っこ抜いてみた

今さらだけど今年は

  • Twitter 以外の follow を増やす
  • 具体的にまずは github と slideshare で増やす

ということをなんかどこかで思ったような気がしていて、その流れでなんとなく Twitter の API を眺めていたのが 1/4 の話。

18:13:38 followeeが持ってる他のサービスのアカウントを効率的に集める方法
         ないかな
18:29:51 Streaming API と User Streams ってベツモノなのか。そんなことす
         ら知らない。
21:14:54 昔と違ってfollowerを200ずつしか取得できないとかないんだな
21:16:08 でもidしか取れないし、これ全部screen_nameと照合させようとする
         とひどいことになるな
21:36:53 対応表作るには認証は要らないのか。鍵垢でもアカウント情報だけな
         ら取得できる。あとはこれを保存しつつ適当なタイミングで動かすと
         diffも出せるな。そこまでやるかどうか分かんないけど。

この時点で followee で考えていたものを認証が面倒くさいので follower に変更したらしい。

で、実際に書いたのが昨日。よく考えると金曜の夜のタリーズで何してるんだろう、おれ。

wtnabe/twitter2github - GitHub

github の方の API の確認はたぶん前日に小一時間やって、ざっと調査で1〜2時間くらい。で、コード書くのに2時間半くらい、なんだかんだ整えて github に上げるのに 2時間くらい、かなぁ。README 書くのって時間掛かる。もっとなんでも速く書けるようになりたい。

これ使って手動で github で follow しまくったので、github の dashboard がオレだらけになったみなさんごめんなさい。follow 返しお待ちしております。(引くくらい反響ないっす。ははは。)

特徴

  • Twitter も github も認証を要求しない
  • github のアカウントを一つ一つ確認するので結構時間掛かる

使い方

$ git clone git://github.com/wtnabe/twitter2github.git
$ cd twitter2github
$ bundle install
$ bundle exec ./bin/twitter2github -u TWITTER_USER > TWITTER_USER.csv

考えてないこと

  • follower が多すぎていっぺんに取得できなかった場合
    • 自分のアカウントでテストして ok だったけど 1000 くらいに壁がありそうな気がする
  • follower が多すぎて github の 5000 reqs/hour の制限を超えてしまった場合
Tags: Ruby

2012-01-12 [長年日記]

_ 今さら RHEL(クローン) 5.x + PHP 5.1.6 環境作ったら PEAR でハマった

RHEL 5 系の PEAR の問題

$ yum list php-pear
php-pear.noarch                     1:1.4.9-8.el5

で、あまりに古い。

pear 自身がアップデートを重ねており、1.4.9 では入れられない package がいくつかある。そうなると

yum install php-pear はオワコン

なんだけど、

go-pear の最新版は PHP 5.1.6 がオワコンすぎて入れられない

ということで八方ふさがり。

go-pear

以前は

http://pear.php.net/go-pear

を使ってインストールできた。このインストーラは PHP 4.3.0 以降で使えるものだったはずだが、現在は

  • PHP 4.3.x だと「古すぎるよ!」
  • PHP 5.1.6 以降だと「新しすぎるよ!」

と言って死ぬ。

go-pear.phar

現在は

http://pear.php.net/go-pear.phar

を使ってインストールすることになっている。.phar となっているが中身は圧縮も何もされていないただの PHP ファイル。なのだが、

php go-pear.phar

してもうんともすんとも言わない。

もしかしたら Web ベースで動かしたら使えたかもしれないけど、意味がよく分からないので諦めた。

http://stackoverflow.com/questions/5428778/installing-pear

によれば PHP 5.3 以降でないと使えないっぽいので、そういうことなのかな。

upgrade --force

Twitterで教えてもらった。

http://d.hatena.ne.jp/solitary_shell/20090716/1247726269

2012-01-12 時点では

  • Archive_Tar
  • Console_Getopts

を upgrade --force したら

pear upgrade pear

が通った。

もうこれでいい。

例え

$ yum list php-pear
php-pear.noarch                     1:1.4.9-8.el5                      installed

でもどうでもいい。だってこれただの実験環境だもん。

まー 5.3 でテストして 5.3 に移行しろってことですね、分かります。

Tags: Linux PHP