Ruby

Problem 13

たまには違う言語もいいよね。Problem 13 - PukiWiki 以下の50桁の数字100個の総和の上位10桁を求めよ。37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 7432498619952474105947423330951305812372…

非同期通信ことはじめ

Pythonで書かれたVim用shellフロントエンドvimshというソースを読んでます。かなり便利なんですが、古いしバグがあるので、修正を加えたり加筆を加えながら使ってます。どうやら補完も出来そうです。vimshの凄いのは、シェルを起動していても、他の作業が出…

Cで2進数値を記述

C/C++で2進数値を記述 - きまぎらすほしゅの不定記 404 Blog Not Found:tips - 二進数表記まとめ を読んだら、「Rubyでプリプロセス」という手があるのかと。そんなわけでerbでプリプロセスしてみた。 binary.erb.c #include <stdio.h> #include <stdlib.h> int main(void) { pr</stdlib.h></stdio.h>…

畳み込み関数のメモ

Rubyはinject,Schemeはreduceまたはapply。1から10まで足してみる。 Ruby injectしてみる。 (1..10).inject {|sum, i| sum + i} # => 55 う〜ん。わかりにくいな。 Scheme(Gauche) reduceで (use srfi-1) ; iota用 (reduce + 0 (iota 10 1)) ; 55 srfi-1のfo…

Vim上でRubyを動かしたい。

Vim上でirbみたいな事が出来たら素敵かなぁと思って、こんなスクリプト作ってみた。 概要 Vim上でのRuby開発を加速させます(たぶん) 組込みRubyを使ってVim上でirbみたいな事ができます。 ノーマルモードで「ctrl + enter」すると、カーソル下の行実行 ビジ…

Rubyで自己書換えプログラムを作る。

なんとなく。 % ruby -e 'ex = lambda{|e| puts e}; b = binding; STDIN.each{|l| ex.call(eval(l, b))}' 1 + 2 3 ex = lambda{|e| print "=> "; puts e} # ex update #<Proc:0xb7f40a58@-e:1> 1 + 2 => 3 ex = lambda{|e| print "=> "; puts e; print ": "} => #<Proc:0xb7f40760@-e:1> => nil : 1 + 2 =</proc:0xb7f40760@-e:1></proc:0xb7f40a58@-e:1>…

Rubyで電卓作ってみた。

前回のエントリでコマンドライン電卓dcを試したけど、Rubyワンライナの方が断然便利だった。 % ruby -e 'STDIN.each{|l| puts eval(l)}' 1 + 2 3残念ながらこのワンライナでは、 フォーマット指定が面倒 変数が使えない と、イマイチな所もあるので、書き直…

if式で気づいたこと

Lispはif式という偉大なる発明をした。が、どういう訳か「if文」として世の中に広がっていってしまった。 来年に向けて、閏年でも判別してみる。僕はLisp使えないのでSchemeで書きます(えへ (define year 2007) (if (= (remainder year 4) 0) (display "閏年…

プログラミングのオキテを読み中。

まつもと直伝 プログラミングのオキテ--目次:ITproを読み中です。5回までがが〜っと読んだ。長いよ・・・。 まつもと氏の発言に「抽象」「手続き」という言葉が多用されてる。 Lispは多重継承が出来るって書いてあった。今後がスゲー楽しみ。やっぱLispこそ…

たのしいRuby 読了後の感想など。

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング作者: 高橋征義,後藤裕蔵出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/08/05メディア: 単行本購入: 11人 クリック: 350回この商品を含むブログ (259件) を見る 本の感想 やはり定番書。…

たのしいRuby 第24章 HTML抽出

さて、たのしいRubyも最終章!!今回はHTML抽出です。ライブラリ使えば・・・と、思ったのですが、やはり最終章やることが高度です! 最終章の目的とは HTMLの抽出と言うのはあくまでサンプルであって、最終章の目的は・・・。"正規表現を使った字句解析"つまり…

たのしいRuby 第23章 郵便番号検索

膨大なデータから素早く検索処理をしたい!!そうなると、データベースの力を借りるのがいい。しかし、サーバー型のデータベースを使うほどでも無い。そんな中途半端な問題を解決してくれるのが、ハッシュ型のデータベース。今回はgdbmを使った郵便番号の検索…

Rubyでmake

Rubyにmakeがあったら面白いんじゃないかと言う発想。 make("index.html", $0, "wiki.db") do # HTML生成 end 文法がそっくりにできそう。残念ながら、多重の依存関係は無い。 module Make module_function # makeが必要かどうか判断する # true 必要 def ma…

Rubyで配列のランダムソート

Rubyでランダムソートをしようと思ったら、色々な発見が出来た。試行錯誤の記録。 結論 ランダムソートならsort_by(rand)がいい。 p (1..10).sort_by{rand} #=> [10, 3, 5, 9, 8, 6, 2, 4, 7, 1] シェルスクリプトとして活躍中〜。 % random() { ruby -e 'pr…

たのしいRuby 第22章 アクセスログの解析2 Hatena-Log.rb 0.02

昨日作ったHatena-Log.rbを書き直してみました。 バグ修正 パイプを通しても大丈夫! % ruby hatena-log.rb 001-2007-04.csv | head 2859 77.4% Windows 400 10.8% Linux 255 6.9% Mac 88 2.4% mobile 27 0.7% BSD ...(略原因は・・・ファイルを閉じてなかっ…

たのしいRuby 第22章 アクセスログの解析

今日から最後の節、「ツールを作ってみよう」に入ります。今回は、アクセスログの解析です。といっても・・・僕の自宅サーバーは外部公開していないので、僕のアクセスしかありません(汗自分で自分のアクセスを解析しても相当意味が無いので、はてなカウンタ…

たのしいRuby 第21章 Mix-in

21章に入る前に、昨日の復習をしておきたいと思う。やはりyieldの理解度が足りない。 yieldの復習。 昨日、イマイチわからなかったのが、何処のブロック呼び出しなのか。プログラミングRuby言語編の4章に答えはあった。シンプルにyieldを呼び出してみる。 de…

たのしいRuby 第20章 イテレーター

会社の昼休みの読書に、プログラミングRuby言語編を読み始めました。この本メチャクチャ面白い!!詳しい言語リファレンスはもちろん、C言語にRubyインタプリタを組み込むといった高度な話題まで盛り沢山です。絶対買いの一冊です。さて、いよいよ。Rubyの目玉…

たのしいRuby 第19章後半 演算子の定義

そういえば、後半戦が残っていた。2次元ベクトルVectorを定義して演算子の定義を学習する。サンプルに、内積Oと外積Xを追加してみた。 #!/usr/bin/ruby class Vector attr_reader :x, :y def initialize(x=0.0, y=0.0) @x, @y = x, y end def inspect "(#{@x…

たのしいRuby 第19章 演算子

ちと,Vimで遊びすぎてしまった・・・反省。最近、はてなの情報量に驚きます。googleで情報が無い!!と思ったら、はてな以下のページを探るとゴリゴリ出てきます。はてなは、プログラマの巣窟っすね。移転してきて良かったぁ。さて、今日は演算子に入ります。…

たのしいRuby 第17章 時間関連クラス

Ruby漬けのGWも残り僅かで〜す。「この本の半分くらい終わればいいかなぁ」と、思っていたのですが、学習効率の高いirbのおかげで、案外順調に進んでます。第三部最後の章。時間関連クラスに入ります。ワンライナ的な所なのでirbでいきたいと思います。 謎。…

たのしいRuby 第18章 Ruby落ち穂ひろい

いよいよ第4部「Rubyを使いこなそう」に入ります。今までは定義されたクラスを使う側。ここからはクラスを作る側。同じようで全然違う。今まで@が全然出てきません出したが、ここからバリバリ@を使っていくことになると思います。一気にレベルがが上がるので…

たのしいRuby 第16章 FileクラスとIOクラス

昨日の事 昨日、本屋でRailsの本を立読みしたらびびった。 % irb -r rubygems -r active_support irb(main):001:0> p 1.minute 60 => nil irb(main):002:0> p 1.hour 3600 => nilなんじゃこらぁぁぁ!!!!!!!RailsがRubyを採用した理由がわかったような気がす…

正規表現の先読みがちょっと理解できた。

ベストタイミング!昨日全く理解できなかった、(?=foo)がやっと理解できた!! 404 Blog Not Found regexp - lookahead and lookbehind assertionsより。 RegexpにおけるAssertionは、その条件が合致するところまで検索カーソルを移動する ・・・よくわからない…

たのしいRuby 第15章 IOクラス

ここら辺からRubyの本領発揮。openだけで何でも出来てしまうLinux世界観を楽しめる最高のクラスだと思う。IOについて簡単に学びたいなら「ふつうのLinuxプログラミング」を読むべし。では15章。IOクラスを学んでいく。 とその前に・・・ またVimの設定見直し…

たのしいRuby 第14章 Regexpクラス

僕とRubyの相性は良さそうです。書いていて苦痛を感じないし、何よりVimとの相性が良い。VimScriptはPythonをモデルにしてるし、RubyもPythonがモデルだ。2言語同時に使っていてもあまり差異を感じないのが魅力。シェルスクリプトっぽい感じなのでLinuxユー…

たのしいRuby 第13章 Hashクラス

tanakaは文字列に弱いことが判明してしまった・・・気を取り直して13章のHashに取りかかる。今やHashのない生活なんてありえないので、しっかり学んでいきたい。C言語でもハッシュつかいてぇなぁ・・・(最近C言語ブーム ブロックによる初期化 この構文がイマ…

たのしいRuby 第12章 Stringクラス

この本、やさしそうに見えるが、内容はかなり充実している。練習問題もかなりキツイ&面白い。オススメです。ってことで、12章突入開始!!今日はStringクラスからのスタートです。 式展開 Rubyは変数を表示するだけでは飽き足らないらしい。 irb(main):017:0> …

たのしいRuby 第11章 Arrayクラス

Rubyのイテレーターを理解するためにはArrayクラスをマスターするのが手っ取り早い。今日はArrayクラスからのスタートです。今日もバリバリ書くぞぉ〜 っと、その前に・・・ いやなブログ - スクリプト言語用のデバッガの使い方 - Ruby, Python, Perlを見な…

たのしいRuby 第10章 Numericクラス

ここからまたirb作業に入る。 2のn乗 サンプルでは、2の1000乗まで計算していた。 p 2**1000 107150860718626732094842504906000181056140481170553360744375038837035105 112493612249319837881569585812759467291755314682518714528569231404359845 775746…