トップ 追記

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

2012-01-06 [長年日記]

_ gyunyuというRTMアプリを作りました

これは何か

wtnabe/gyunyu - GitHub

  • Ruby で書かれた
  • コマンドライン向け RTM アプリ

です。

出ました、またコマンドラインツールです。

gyunyu という名前は、

なんか日本語名の方がRubyっぽい

というのと、RTMなんとか、RTなんとか、でどう考えてもかっこいいのが浮かばなかったからです。

使い方

$ gem install gyunyu
$ gyunyu
(ヘルプ)
$ gyunyu -c today_yet -l 仕事 -d name,estimate
(今日まだ終わっていない仕事を見積もり時間とともに出力)

こんな感じです。

できること

  • 登録済みのタスクを検索して出力します
  • 出力フォーマットは CSV, YAML, JSON です(デフォルトは CSV)
  • 「期日」だけですが、日本時間でも正確に今日とか昨日とかを検索できるフィルタを用意しました。面倒な検索条件を自分で書く必要がありません。

今のところ ( 0.2.0 現在 )

  • CRuby 1.9.2 でしかテストしてません
  • いろいろ考えたんですが、まだ export コマンドしか作ってません

なんでこんなもの作ったか

個人的に以前から作業時間の記録などをもとに作業効率の自己評価とかやってるわけです。えぇまぁ積極的にやりたいわけじゃないですけど。で、そのためにすでに入力済みの RTM の情報が記録としても使えるじゃーんと思って完了済みタスクを開いてみてたんですが、

結局手作業で転記するしかない

というおよそプログラムの書ける人間としてはやってはいけない単純作業をくり返していたんです。半年くらい。でもまぁそれまではおおよそ分かればいいしと思っていたのと、転記の際に RTM には書き漏れていた情報を追記したりして回していたのです。

が、いよいよ時間の記録の方を重視することになったので、あーこれはやっとれんということで RTM API Key を取得してちょっとずつ動かしてみていたのでした。

苦労したところ

  • モダンな認証方法がよく分かってなかった
  • RTMの「見積もり時間」が「入力したまま」の状態で入っていて、数字としての意味を解釈するのに一手間必要だった。
  • API で返ってくるタスクは task を包む taskseries という謎の構造を持っていた
  • RTM API では日時の表記に UTC の ISO8601 フォーマットを要求するんだけど、どうも指定した期間の情報がちゃんと取れないと思ったら フォーマットとしては UTC の ISO8601 を要求するけど、実際の時間について timezone の変換は不要 という変な仕様になっているようだった。
    • たぶんアカウント情報の timezone の設定をいい具合に使ってくれてる。
    • ただし返ってくるデータは正しく UTC の timezone になってくるので変換が必要

Special Thanks to

@mootoh and mootoh/rtmilk - GitHub !

今後は

rails console みたいな gyunyu console が作れたら task の作成や更新も楽にできそうだなと思うんだけど、今のところそんなもんできそうな気がしないです。

余談

これを作った時点での RTM の時間関係の filter の動作をメモしておきます。

  • due:today は JST だと today か yesterday のタスクが取れる
    • 単に9時間ずれたタスクのリストが取れるのではない
    • search 発行時点での UTC の today の日付を localtime に当てはめて 00:00:00 から 23:59:59 までのタスクが取れる
    • たまたま夜に実行すると今日の分が取得できる
  • dueAfter に正確な時刻を入れる場合は1秒前を基準にする。 >= ではなく > 相当。たぶん due 以外でも一緒。
Tags: RTM GTD Ruby