ruby

mirahを使ってみる

mirah=javaのspeed+rubyの文法 のような言語です。 rubyっぽい記述を翻訳して.classに落とし込むようなトランスレータのようなものみたいです。 C#っぽい見た目のファイルをC+glibの形に翻訳するvalaに近い感じですね。 install BuildingMirahがとても参考に…

A*作ったよ(迷路の最短ルーと)

とても汚い感じだ。 S=<

Rakefileを再帰的に探してrake testするelisp(TB)

http://d.hatena.ne.jp/modka/20090820/1250759260 書いてみました。*1 (require 'cl) ;; (defvar raketest-old-color (frame-parameter (selected-frame) 'background-color)) (defvar raketest-output-buffer "*rake test output*") (defvar raketest-succ…

method一覧

以下の方法が一番楽かもしれない。 準備 qriを使えるようにする。*1 sudo gem install fastri fastri-server -b .emacs (require 'ansi-color) (require 'anything) (unless (fboundp 'rlet1) (defmacro let1 (var val &rest action) `(let ((,var ,val)) ,@…

MeCabとrubyで遊んだ

mecabのinstall sudo aptitude install mecab mecab-ipadic mecab-utils libmecab-dev euc-jp->utf-8 sudo /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8 -p mecab-rubyのinstall mecab…

13日の金曜日

たまたま、以下の日記を見つけて読んでみて、自分ならどうやって13日の金曜の数を数えるかなーと思った。 http://d.hatena.ne.jp/yarb/20090105/p1 問題は「それぞれの年の13日の金曜日の日数を計算して列挙する」。 初めはこう書いた(ruby1.8) require 'dat…

starrubyを入れてみる

install wget http://starruby.googlecode.com/files/starruby-0.3.1-src.tar.gz tar zxvf starruby-0.3.1-src.tar.gz cd starruby-0.3.1-src #less README ruby extconf.rb && make && make install #失敗 #SDLが入ってない。 sudo aptitude install libsdl…

久しぶりにrubyで遊ぶ

ruby1.9便利 require 'enumerator'がいらなくて済むし、to_enumとかもいらない。 # 行番号付きprint def print_with_number io io.each_line.with_index{ |x,i| puts("#{i}:#{x}")} end print_with_number("test\nfoo\nbar") # 0:test # 1:foo # 2:bar # dee…

手軽なtagファイルの作成

何かもれがあるかもしれないけどとりあえずmemo. 1.8 ruby -e 'require "rubygems"; [Gem::dir,*$:].join(" ").display' | xargs ctags --languages=ruby -R -e -f ruby1.8 1.9 ruby1.9 -e '$:.join(" ").display' | xargs ctags --languages=ruby -R -e -f …

ruby1.9でmerbを使う

merb-genでエラーが色々出てしまう。 一応、merb-genが実行できるところまでは修正できた。 1.9に対応していないところ String#to_aがない require 'sha1'にしている。 1.9だとrequire 'digest/sha1' SHA1.newに引数を渡している。 1.9だとDigest::SHA1.new…

zshの補完関数が書きたい

$fpath以下にあるファイルに補完の設定が書いてあるらしい。 補完設定用のファイルに楽に移動したい 移動用にanythingを使った関数を作成する.(rubyも使ってる) (defmacro tiny-anything-function-maker (fname name shell-command actions) "fname: generat…

別のPCにrubyの環境を作った。

friが動けばいい。 install sudo gem install fastri -y emacsの設定 "fri -l"でmethodの一覧がとれるのでcandidates-in-bufferを使うと楽に候補が設定できる。 fastri-serverはemacsの中で立ち上げることにした。 出力結果をansi-color-apply-on-regionで強…

anythingでfileをrequireする作業をサポート

rubyでライブラリを読み込むときに、「require""」の内容を覚えるのが大変でした><C-c C-uでrequireするファイルを選択したいです。>< その前に anythingの候補を作るrubyのコードを書きました tocandidate.rb ~/.emacs.d/tocandidate.rbという感じで保…

速度の比較用のコードを書いた

以前書いたコードを書き直したときに、hpricotを使った方が早いかどうかしらべました。そのためにこんな感じのコードを書きました。 if RUBY_VERSION < "1.9" #1.8だとMethod#nameが存在しない class Method def name self.to_s end end end class Bench def…

昔書いたコードを書き直す。(Simpson係数を求める)

昔書いたコードを直したくなったので直してみました。>< 以前書いたコード http://d.hatena.ne.jp/trotr/20071008#1191852704 そういえばこの頃は"if __FILE__ == $0"の意味を理解していなかった><。 問題点 何回もpubmedに読みに行っている。 変に複雑 …

カレンダー的なものの作成

最近あまりコードを書いていなかったので、とりあえず簡単なものでも。 require 'date' t = Date.today t.wday # => 0 def days_of_month m, y=Date.today.year Date.new(y,m+1,1) - Date.new(y,m,1) end def days_list m,y=Date.today.year days = days_of_…

zenityを使うと入力した文字列を隠しながらの入力とかも簡単にできる

ruby -e 'str = `zenity --entry --hide-text`; puts str'

zenityで進捗状況の可視化が手軽にできる。

zenityというコマンドを知りました>< zenity? ダイアログウィンドウを表示するコマンド gnomeのパッケージのひとつ (kdeにもzenityに似たkdialogというコマンドがある) http://www.google.co.jp/search?q=zenity これとrubyを組み合わせると計算の進捗状…

ruby1.9用のrcodetoolsの導入

rcodetoolsが1.9に対応したらしいです。*1 1.8と1.9を使い分けたいですね><。 そんなわけで、このような設定を加えました。 ;(require 'rcodetools)の後あたりにでも (defun make-cycle (l) ;循環リストを作成 (let ((tmp l)) (while (not (null (cdr tmp)…

九九スクリプト書いてみたよ

http://d.hatena.ne.jp/hrkt0115311/20080805/1217928310 クラスにしないものとクラスにしたものの2つを書いてみました。 独学なので他の人がどこで詰まるとか良く分かりません><。なのでうまく説明できないです><分からないところがあったらコメントし…

refeとかriをanythingで

(defvar ri-program "fri") ;;friを使わないなら ;;(setq ri-program "ri") (defvar refe-program "~/bin/refe.sh") (defvar ruby-all-methods nil) (defvar my-ruby-reference-last-word "") (defun read-ruby-document (document com) "Open each ruby's r…

1.9でfastriを使う

fastri fastriは、riより速いri. "gem install fastri"でinstallできる。 1.9で実行しようとすると 以下のようなエラーが出てしまう。 /usr/local/lib/ruby/gems/1.9.0/gems/fastri-0.3.1.1/lib/fastri/util.rb:38:in `require': no such file to load -- rd…

wassrにpostするscript

引数に渡した文字列をwassrにpostします。 これくらいの短さならclassに分けない方が見やすいかもしません。 code #!/usr/bin/env ruby # -*- encoding: utf-8 -*- require 'rubygems' require 'mechanize' USER = "username" # PASSWORD = "password" # cla…

shebangとかを手抜きする(ruby1.9用)

自分用のメモ (global-set-key "\C-c\C-u" (lambda () (interactive) (let ((mes (concat "chmod +x " (buffer-file-name)))) (shell-command mes) (message mes) (insert "#!/usr/bin/env ruby1.9\n") (insert "# -*- encoding: utf-8 -*-"))))

コード中の文字の頻度分析

http://ja.doukaku.org/181/lang/ruby/をワンライナーで。見にくい><。 File.read(ARGV.first).to_enum(:each_char).inject(Hash.new(0)){ |h,k| h[k] += 1; h}.sort_by{ |_,v| -v}.each{ |e| puts e.join(" : ")} to_enumは1.8だと"require 'enumerator'"…

単純なメモ化ならhashを使ってもいいのかもしれない

以下のようなハッシュを作ることで、pascalの3角形の値が計算できる。 pascal = Hash.new do |h,n| if n <= 1 h[n] = [1] else h[n] = [0,*h[n-1]].zip([h[n-1],0].flatten).map{ |x,y| x + y} end end #require 'benchmark' #Benchmark.bmbm do |x| # n = 1…

rubyとschemeでmemo(fib)

sicpでやったfibonachi数の計算のmemo化をrubyでもしてみる rubyのコード class Memoize def initialize @a = [] end def memo_fib n @a[n] = @a[n] || fib(n) end def fib n case n when 0 0 when 1 1 else fib(n-2) + fib(n-1) end end end #benchmark用 m…

ruby1.9のirbをつかう。(メモ)

libreadline-devが必要 sudo aptitude install libreadline-dev sudo ./configure --program-suffix=1.9 && sudo make && sudo make install

久しぶりにrubyで遊ぶ

rubyを始めた時に、くくを出力するプログラムを作ったりしました。 くくはこんな感じで書けると思います。 (9*9じゃないからnnかもしれません><) def kuku n (1..n).map{ |x| (1..n).map{ |y| x * y}} end kuku(2) # => [[1, 2], [2, 4]] これはn*nの要素…

windowsを使った

ちょっとした事情により,windowsを使う必要があったのでメモ。 meadowは結構emacsの代わりとして使える shell-command-outputとか普通に動く meadowインストール時にelscreenも同時にインストールできた auto-save-buffer.elも選択するだけで一緒にインスト…