Ruby

配列内で重複している要素を見つける

自分用メモ。Rubyで配列から重複したモノ(要素)を抜き出す(Uniqの逆) - それマグで! 上のリンクは一番素直な方法だと思うけど二重ループ。 ソートして隣り合っている要素を比べるという方法を試してみた。 a=[8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8…

ファイルから3行ずつ取ってくる

lines = "" File.open(file_name) do |f| i = 0 while l = f.gets lines += l.strip lines += "\n" if i%3==2 i += 1 end end もっとRubyっぽい書き方はできないものだろうか..

$DEBUGのときはファイルに変更を加えず標準出力するだけになるようにFileクラスをいじる

if $DEBUG class File alias_method :original_initialize, :initialize alias_method :original_close, :close alias_method :original_puts, :puts def initialize(file,mode="r") if mode.downcase=="r" original_initialize(file) else @filename = file…

Cygwin上のRubyでの$LOAD_PATH

自分用メモ 環境はこんな感じ。Windows 7です。 $ uname -a CYGWIN_NT-6.1 (mypcname) 1.7.9(0.237/5/3) 2011-03-29 10:10 i686 Cygwin $ ruby -v ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32] $ ruby -e 'puts $LOAD_PATH' C:/Ruby187/lib/ruby/…

RubyでHTML入力支援

発端 HTMLを作成する必要が生じて昔の知識を思い出しながらやっているのだけれど、どうも思考と入力がちぐはぐになってしまう。なにが思考を妨げているかというと、1.大量のカッコとクオートを使うので、シフトキーを多用する、2.閉じのタグが画面をごちゃご…

TokyoCabinet::TDBの検索について その2

昨日TokyoCabinet::TDB(テーブルデータベース)の検索クエリまとめと参照したページまとめ - 深く、広く、高くの続き。 検索結果を受けてデータベースを更新する 参考:mixi engineer blog 検索条件を設定したTDBQRYオブジェクトでprocを使う。procの返り値…

TokyoCabinet::TDB(テーブルデータベース)の検索クエリまとめと参照したページまとめ

作者のmikioさんも推している所ではあるけれど、TDBではkey-value-storeとしてはかなり豊富な検索が行える。まとめたというほどでもないけど、整理してみた。 QCSTR*系(string) EQ:コラムの文字列と等しい INC:コラムの文字列に〜が含まれる BW:コラムが〜…

整数の配列を大きな1つの大きな整数にしてしまうアルゴリズム(なんちゃって暗号)

サマーウォーズからヒントを得て。 おおまかに言うと 暗号化:整数列(元の数列)→(変換)→大きな整数(暗号数) 復号化:「暗号数」を整数列(鍵数列)でどんどん割っていくと、その余りとして「元の数列」が現れる。 例 379192800 #暗号数 [1,1,2,3,5,8,1…

cgi-Rubyのメソッドの戻り値の型を整理(1.8)

いつもごちゃごちゃになるので。 cgi = CGI.new #CGIオブジェクト。 hash = cgi.params #ハッシュ values = hash['name'] #配列。存在しない場合は[](空配列) field_values = cgi['field_name'] #文字列。存在しない場合は""(空文字列) ただ、paramsはRuby1.…

Ruby + Mosaic = Rusaic ブラウザを作ってみた(gzip対応)

結構前に作りはじめて、そこそこ安定してきたのでこっそり公開。対話的に使えるわけではなく、プログラム中から気軽にhttp/httpsアクセスしたいというのが目的。今から見るとちょっとRubyの機能を使いこなしていない書き方や、意図の不明なコメントもちらほ…

RubyでROT13 ROT47

強度は無くてもいいので、目隠し程度の 簡単な暗号化・復号化のアルゴリズムがないかな〜と思って探していたら、 ROT13、ROT47という簡単な換字式暗号があるのを発見。 ROT13 - Wikipedia Rubyでは、 rot13 = "Hello World #123".tr!("A-Za-z", "N-ZA-Mn-za-…

RubyでCGIクラスを使わずに愚直にCookieを発行する

自分のためのメモ key = "hoge" value = "fuga" t = DateTime.now.new_offset(0) + Rational(1, 24) #cookieの有効期限は1時間 print "Content-type: text/html\n" print "Set-Cookie: #{key}=#{value};expires=#{t.strftime("%a, %d-%b-%Y %H:%M:%S GMT")}…

さくらインターネットのレンタルサーバーにtokyocabinetとRuby APIをインストール

したときのメモtokyocabinetのインストールは さくらインターネットにTokyoTyrantをいれてみる - コードで気楽な日々を を参考にすんなりと。 ただし「1978th.net」を「fallabs.com」に読み替える必要あり。Ruby APIのインストールは RubyからTokyoCabinetを…

UbuntuにTokyoCabinetのRubyバインディングをインストール

ruby-devを入れてあれば $ruby extconf.rb $make $sudo make install でOK. @10.04 LTSload error のときは以下を参考に http://d.hatena.ne.jp/shokai/20100421/1271829071

クロージャについて

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Closure では 基本的にクロージャとは、ブロック化されたコードのことを指します。 と書いてある。 異論ある人もおろうがここから出発するのが分かりやすいと自分は感じた。 ブロック化されていて、 独自のスコー…

400 Bad Request

Rubyのnet/httpを使って簡易のブラウザを作成中に 400 Bad Requestやタイムアウトが頻発したのでいろいろ調べてみたら Request Headerの中に意味なくContent-Lengthが入ってたのが原因だった。 GETなのにデータを送信しようとしてたり、サーバーが「Content-…

net/ftpを使う

425 unable to build data connection とかいうエラーが出るなら、 Net::FTP#passiveの値を切り替えてみるといいかも。

Rubyを使いはじめて

しばらく経つけど、 Cに戻ったらどうなるだろう?

CGIのクッキー

RubyのCGIでのクッキーの扱いについてまとめてみると。 input = CGI.new で得られるinputがHashでないのは以前にも書いた。 そこからクッキーを得るには cookie = input.cookies となり、このcookieはHash。 なんとなく試しに puts cookie.to_s としてみると…

RubyのCGIで

CGI.newで得られるオブジェクトは Hashではないので、 例えば input = CGI.new input.each{|k,v| 処理 } とすることはできない。 input = CGI.new.params input.each{|k,v| 処理 } とするべし。