ruby
少し迷ったけど、結局のところは以下を参考にしてターミナルから refe を叩けるようになった。 http://d.hatena.ne.jp/ruedap/20110426/vim_ref_plugin_ruby_reference_search_tool_refe2 ディレクトリ構成などもあまり悩まず上記と同じにしておいた。 Windo…
extract_colorcodes_from_aco.rb binary_file = 'test.aco' color_num = 0 colorcodes = [] open(binary_file, 'rb') {|f| f.getc; f.getc # 0001 を読み飛ばす color_num = 256 * f.getc + f.getc # 色数 p color_num until f.eof? colorcode = "" f.getc; …
display_binary_file.rb binary_file = 'test.aco' decimal_mode = false #decimal_mode = true item_num = 0 open(binary_file, 'rb') {|f| until f.eof? if decimal_mode print "%5d" % (f.getc * 256 + f.getc) else print "%02x%02x" % [f.getc, f.getc]…
Rubyで画像収集ソフト的な物を作ってみた - チラシ裏日記上等!!を見て 面白そうだなぁと思い僕なりに少し書き換えてみた。 以下のスクリプトはまだ書きかけというか挙動があやしいのだけど とりあえず貼り付けておく。 最後の画像保存するところ (save_ima…
その中でも直近の大規模なオープンソースプロダクトである Plagger はまさに Perl Hacker の教科書とも言えるべき存在だ。 http://d.hatena.ne.jp/tokuhirom/20080719/1216423454 ということで、Perl では「Plagger」が お手本となるソースとしてお勧めされ…
「初めてのRuby」の「8章 オブジェクトとクラス」の p.153 に 「トップレベル」という項目がある。 ここにちょっとややこしい定数の参照方法がのっていた。 今、以下のような Duration クラスがあったとして class Duration DAYS_OF_WEEK = 7 end このクラス…
ゆの in Ruby - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtechは パッと見て全然よく分からなかったのであきらめて投げていたのだけど 他のバージョンとかも色々出てきて読めていないのが段々くやしくなってきた。 そこで、気合を入…
Array.new(size, val) で配列を生成すると a = Array.new(3, 'hoge') a.each {|v| p v.object_id } # >> 21625090 # >> 21625090 # >> 21625090 要素は全て同じオブジェクトになる。 これだと、どれかの要素を破壊的に変更したときに全ての要素に影響が出て…
JavaScript 書くときは使いまくりんぐな flymake だったけど Ruby では使っていなかったので使えるようにした。 flymake でリアルタイム文法チェック - とりあえず暇だったし何となく始めたブログを参考に 以下を .emacs に追加した。 ;; flymake for ruby (…
YYYY年mm月dd日HH時MM分SS.xxx秒なら、「YYYYmmddHHMMSS.xxx」のようにミリ秒まで含んだ文字列を返すプログラムを書いてください。 エロと風俗情報満載 どう抜く? というお題に対して以下のスクリプトが投稿されていた。 ただし、自分好みになるように少し…
プログラムコード中の文字の頻度は言語によって相当にばらつきがあると思います。ある言語はピリオドが頻出するとか、別の言語はカッコの頻出頻度が高い、とか。そこで、 * 文字の頻度解析をするプログラムを作成し、 * 適当なプログラムに対して実行し、結…
Array#replace は a = [1, 2, 3] a.replace [4, 5, 6] とかって使うらしいんだけど これって a = [1, 2, 3] a = [4, 5, 6] ってやっても結果は同じだと思うんだよね。 ベンチマーク取ってみても require 'benchmark' num = 100000 Benchmark.bmbm(10) do |x|…
Benchmark を使うときに require 'benchmark' puts Benchmark::CAPTION puts Benchmark.measure { a = [1, 2, 3] a.replace [4, 5, 6] } このように { } を使うのは OK なのに { } を do end に変えると require 'benchmark' puts Benchmark::CAPTION puts B…
require 'net/http' require 'uri' def save_file(url) filename = File.basename(url) open(filename, 'wb') do |file| file.puts Net::HTTP.get_response(URI.parse(url)).body end end url = 'http://d.hatena.ne.jp/images/diary/g/gan2/gan2_p.gif' sav…
とりあえず CodeRepos にコミットした。 ブラウザからアクセスする場合はここからどうぞ。 Subversion がある場合は以下のコマンドでソースを持ってこれます。 svn co http://svn.coderepos.org/share/lang/ruby/StarLife 簡単な説明として README の内容を…
xmpfilter が便利らしいのでぐぐってみたら、rcodetools に含まれていることが分かった。 rcodetools。見覚えはあるけど何なのかはよく分かってない。 とりあえず gem で入るみたいなので入れてみる。 gem install rcodetoolsrcodetools には Emacs 用のイン…
Ruby 1.8.7のinjectはSymbolを引数に取ることができる。つまり、合計は「inject{|s,x| s+x}」から「inject(:+)」でよくなった。 1+2+3+4 # => 10 (1..4).inject(:+) # => 10 1*2*3*4 # => 24 (1..4).inject(:*) # => 24 今はinjectよりもtapだよね〜 - http:…
任意の偶数Nのチームの総当たり戦を最短日数(N-1日)で 行う場合の日程表を1つ作成してください。 解はひとつではない場合もあります。 もし、余力があれば、全ての可能性も求めてください。 これは、スポーツスケジューリングと言う分野の問題で、 数学的…
次のような書式で与えられた「あみだくじ」があります。 (あみだくじはコード中に埋め込んでも、標準入力や 外部ファイルから読み込んでも、書きやすい方法でかまいません) A B C D E | | |-| | |-| | |-| | |-| |-| |-| |-| | |-| | | | このあみだくじをた…
日付のRangeを週に切り出すスクリプト - はこべにっき#を僕なりに書いてみた。 こんな感じでいいのかな? gen-weeks.rb 2008/04/01 から 2008/04/21 までの Range を週ごとに分ける require 'date' def gen_weeks(range) weeks = [] week = [] range.each do…
Twitterのアーカイブを取得するツール作りました。No Use API版 - Seasons.NETのスクリプトを OptionParser や scrapi の勉強がてらにリファクタしてみた。 リファクタといっても僕なりに読みやすいように書き換えただけなので そんなの全然リファクタリング…
Ruby の場合なら以下のように puts などを再定義しておくことで とりあえずは解決されるように思える。 alias :_puts :puts def puts(*args) _puts *args $stdout.flush end 追記 バッファリングの問題のようだから、再定義しなくても「$stdout.sync = true…
spec.opts はいつも以下のような内容のを使っているので これをデフォルトの設定にしちゃいたい。 -c --drb -fs毎回 spec/spec.opts をコピーして作るのはちょっとめんどくさい。
あんまりまとまってないけど書く。 むしろまとめるために書く。 重要なのはアウトプットすることで 「分かったところまででいいからとにかく書いた方がいいよ」 ってえらい人が言ってた。 できていること 「./hoge.rb」と「./spec/hoge-spec.rb」がある状態…
Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術にのってたのを適当にメモ。 require はファイル名の終わりに .rb を付ける必要がない。load は付ける必要がある。 require はロードしたファイルを記憶し、一度しかロードを行わない。load …
何が起こるのでしょう。 この超簡単なスクリプトで比較してみる。 a = [0, 1, 2] p a p *a 実行結果はこう。 ん?なんだこれ?何が起きたんだ? [0, 1, 2] 0 1 2
[ [1, 11, 111], [2, 22, 222], [3, 33, 333], ].each{|a, b, c| puts "#{a} #{b} #{c}"} これを実行すると 1 11 111 2 22 222 3 33 333こうなる。 基本ですか? そうかもしれません…(´・ω・`) ちなみに今までの僕だったらこうしていたと思う。 [ [1, 11, 1…
「M-x align」や「M-x align-current」は知ってたけど、「regexp」は今日はじめて知った。 「M-x align-regexp」を実行するとミニバッファに Align regexp: というプロンプトが出るので、そこで「=」や「#」を入力すると、それを基準にして align してくれる…
WWW::Mechanize を使ったスクリプト書いてみた。 でも管理ページへのログインでこける(´・ω・`) 何がいけないんだろうなぁ…。 get-todays-traffic.rb #!/usr/local/bin/ruby -Ks # はてダから忍者ツールの今日のアクセス数を見に行くツール require 'rubyge…
ProxyForest - プロキシの杜から Rank が A で 2ch の書き込みに使えそうなプロクシを取ってくるスクリプトを書いてみた。 get-proxy.rb require 'open-uri' require 'hpricot' def get_proxy ips = [] ranks = [] codes = [] (0..10).each do |n| open("htt…