只今Ruby勉強中

プログラミングRuby―達人プログラマーガイド

うさぎさんと一緒にRubyの勉強をしているオレの記録。

間違ってる所とかいっぱいあると思いますけど、誰でもコメント出来るので気軽に教えて下さい。

普段は 鷹の島 って所で書いてます。

現在のハマリポイント - yield, succ?, Proc & 後で

2007-07-10 (Tue)

net/netrc 17:19  net/netrc - 只今Ruby勉強中 を含むブックマーク

「.netrc対応は必須だよねー」ということでこんな感じに:

Twitterのアカウントを取った(2) - ただのにっき

なるほど、設定値はこれを使えば良かったのか。後で試す。

トラックバック - http://rubyist.g.hatena.ne.jp/gaba/20070710

2007-04-24 (Tue)

Rails を Apache + fcgi で動かす 19:25  Rails を Apache + fcgi で動かす - 只今Ruby勉強中 を含むブックマーク

まず Apache の設定。 モジュール導入と有効化。 Debian/etch です。

$ sudo aptitude install libapache2-mod-fastcgi
$ sudo a2enmod fastcgi
$ sudo /etc/init.d/apache2 force-reload

これらのファイルの ruby のパスとか環境設定とかを行なう。

./public/.htaccess
./public/dispatch.fcgi

.htaccess は結構面倒くさいかも。 RewriteBase をうまく書かないと、ブラウザでアクセスしても Not Found になる。

例えば、http://localhost/~takayama/hogefuga/rails/project/ に RAILS_ROOT があるとすると、RewriteBase は /~takayama/hogefuga/rails/project/public/ になる。

あと、fcgi プロセスがウェブサーバの権限で動くようなので、ファイルのパーミッションにも注意。 具体的には、log tmp ディレクトリに書き込み権限が必要。 sqlite を使っている場合は、さらに db ディレクトリにも書き込み権限が必要。 この辺は、まだあんまわかってないんだけど。

とりあえず、これだけで Apache+fcgi で動かせるようになった。

ユーザ権限で動かす事は出来ないんだろうか。 後で調べる。

トラックバック - http://rubyist.g.hatena.ne.jp/gaba/20070424

2006-10-14 (Sat)

コマンドラインから Google 電卓 21:15  コマンドラインから Google 電卓 - 只今Ruby勉強中 を含むブックマーク

linux で使う電卓は irb と vim で必要十分なんだけど、他にも色々遊べそうなので Ruby で実装してみました。ほとんど同じような処理してまして全然 Ruby ぽくない。

問題点多いけど、今ココ。

#! /usr/bin/env ruby

$KCODE = 'u'

def googleCalc(arg)
   require 'nkf'
   require 'cgi'
   require 'open-uri'

   arg = NKF::nkf('-w', arg)
   url = 'http://www.google.co.jp/search?num=1&hl=ja&q=' + CGI.escape(arg)
   open(url).read.match(/calc_img\.gif>.+?<b>(.+?)<\/b>/)
   result = $1

   return if result == nil

   replacemap = [
      [/<.+?> <\/.+?>/, ''],
      [/&#215;/, '*'],
      [/<sup>(.+?)<\/sup>/, '^\1']
   ]

   replacemap.each do |v|
      result.gsub!(v[0], v[1])
   end

   result
end

if ARGV.size > 0
   puts googleCalc(ARGV.join(' '))
else
   puts "gc 1 + 1"
   puts "gc sqr 2"
   puts "gc 16.5億ドルは何円?"
   puts "gc electron mass"
end

ターミナルの文字コードを基にして適切に処理する方法がわかんないので、Ruby 側の出力は UTF に固定する。そんでもって、これを呼び出すシェルスクリプトを書いた。

#! /bin/bash

~/ruby/gc.rb $@ | nkf -e

実行

$ gc 10 + 1
10 + 1 = 11
$ gc 10 - 2
10 - 2 = 8
$ gc 10 x 3
10 * 3 = 30
$ gc 10 / 5
10 / 5 = 2
$ gc sqr 2
sqr(2) = 1.41421356
$ gc 'sin(pi/2)'
sin(π / 2) = 1
$ gc 2\^32 - 1 in hex
(2^32) - 1 = 0xFFFFFFFF
$ gc electron mass
電子の質量 = 9.10938188 * 10^-31 キログラム
$ gc 真空の誘電率
真空の誘電率 = 8.85418782 * 10^-12 m^-3 kg^-1 s^4 A^2
$ gc 88 mph in km/h
88 mi/h = 141.622272 km/h
$ gc 100 usd in euro
100米ドル = 79.7638989 euro
$ gc 16.5億ドルは何円
16.5億米ドル = 1972.575 億円

素晴しい。

後でリファクタる

  • 出力をちゃんとターミナルの文字コードにあわせる
  • replacemap の処理を PHP みたく簡単に書きたい
  • match して $1 取得じゃなくて、scan みたく一発で取得する
トラックバック - http://rubyist.g.hatena.ne.jp/gaba/20061014

2006-09-08 (Fri)

後で試す 09:40  後で試す - 只今Ruby勉強中 を含むブックマーク

http://cheat.errtheblog.com/

トラックバック - http://rubyist.g.hatena.ne.jp/gaba/20060908