hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

Ruby

cached-open.rb

外部のウェブサイトなどをスクレイピングするようなプログラムを書いているとき,大量にリクエストを送るのに気を使って,sleepを入れたり,キャッシュしたり,ということが,よくあると思います. これまでに何度も外部のリソースをキャッシュする仕組みを…

Rubyのプログラムのソースコード中のトークンの出現回数を調べてみる

Ruby1.9にはRipperというライブラリが添付されていて,これを使うとRubyのソースコードを構文解析できる. library ripper Ripperを使ってソースコード中のトークンの出現回数を数えてみた. このようなスクリプトを書いた. hitode909's gist: 206185 — Gis…

自分のクラスにメソッドを追加するメソッド

呼ぶとメソッドを追加できるメソッドを作りたかったので作ってみた。 hitode909's gist: 58751 — Gist 期待通りに動いた(気がする)けど、どうなんだろう。副作用がないことを確かめられていない。 追記 副作用が出る例をid:ujihisaさんが教えてくださった(コ…

第32回 Ruby勉強会@関西に行った

久しぶりにRuby勉強会に行ってきました。 コンビニで並んでたら前の人が店員に「このへんに王将はありますか」とか聞きだして、バスに乗り遅れそうになったり、id:hakobe932さんが「前に来たことあるからさくさく行ける」とおっしゃってたので、ついて行った…

termtterが便利

termtterはターミナルで動くTwitterクライアント よいところ Rubyで書かれていて、プラグインを書けば簡単に機能を拡張できる フィボナッチ数列を投稿できるTwitterクライアントはtermtterだけ nowa サービス終了のお知らせ ログをスクロールして読めるし、C…

僕のロゴのジェネレーターを作りました

僕のロゴのジェネレーターを以前Flashで作った*1のですが、画像に書き出せず不便だったので、今日はRubyで作りました。 hitode000.pngからhitode999.pngまで揃いました。 これでもう、ロゴに困ることはありません。 ソースコードは以下です。 画像処理に、Ru…

TeXじゃなくても使える\inputを実装しました

TeXで長文を書くとき、\inputを使うと,ファイルを適切に分割できて便利なのだけど,TeXじゃなくても\inputしたかったので,ワンライナーを書いた. ruby -e 'puts ARGF.read.gsub(/^\\input\{\s*(\S*)\s*\}$/){ File.open($1).read }' 使い方はTeXと同じで…

マルコフ連鎖してみた

だいぶ前にはじめてのAIプログラミングという本を読んで、N-Gramを作ってみた。 N-gramしてみた - hitode909のダイアリー 今日少し時間があったからマルコフ連鎖もやってみた。 はじめてのAIプログラミング―C言語で作る人工知能と人工無能作者: 小高知宏出版…

N-gramしてみた

昨日、はじめてのAIプログラミングという本を読んだ。 それで紹介されていた、N-gramという手法がおもしろそうだったのでやってみた。 はじめてのAIプログラミング―C言語で作る人工知能と人工無能作者: 小高知宏出版社/メーカー: オーム社発売日: 2006/10メ…

EmacsでRubyのコードを書くときのメモ

ruby-mode.elとかのファイルがロードされてる前提で run-ruby Emacs上でirbを動かせる これで試して、動いたら本番のソースにコピペする、みたいなことが簡単にできる rubydb Emacs上でデバッガを起動 ふつうにデバッガ起動するよりこっちのほうが楽しい 参…

RubyでModuleを使ってみてすごくはまった

モジュールのメソッド名にモジュール名をつけるかつけないかで挙動が変わって、とても困ってた。 以下のコードを実行すると、 module A def A.a 'A.a' end def a 'a' end end class ClassA include A def print_a puts a end def print_A_a puts A.a end end…

指定した範囲のホストのどれかにログインするスクリプト

実験室の端末のどれかにログインしたかったのだけど、どれが電源入ってるか分からなくて、困ったので、指定した範囲のホストに順にログインを試みるスクリプトを作った。 % ruby ssh.rb yamada 192.168.0. 1 40" すると、ssh yamada@192.168.0.1からssh yama…

指定したディレクトリのファイルを見ながら仕分けするスクリプト

めんどうな作業があったのでスクリプトで効率化を試みた。 解決したい課題 大量の写真やら動画やら(1000枚くらい)が1つのディレクトリにあって、それを公開用と非公開用に仕分けする マウスを使わず、かつ内容を確認してから仕分けたい Macで作業する iPhot…

指定した時間までsleepするスクリプトを作った

例えば「9時までsleepして音楽を流す」ような処理をしたいとき、「今8時30分だからsleep 1800 && mplayer hoge.mp3」とかやっていたのですが、手作業で計算しても無駄なので、時間を指定してsleepするスクリプトを作ってみました。 実行例 $ sleeptill --v…

RubyとYAMLで時間を扱うとき

time: 10:20 として、Rubyでパースすると、10*60+20 = 620 になってしまう。これを10:20として扱う方法のメモ Stringとして書く time: "10:20" と書くと、"10:20"というStringになるので,Time.parse()を使ってTimeオブジェクトにパースできる。 が、いちい…

Rubyでnkfを使って改行する際のメモ

nkfを使うと、文字列を適当な長さで改行を入れ、整形することができる。 str = NKF.nkf("-f", str ) 何も指定しないと60文字、-f40だと40文字で改行される。 f/F Folding: -f60 or -f or -f60-10 (fold margin 10) F preserve nl library nkf が、-fだけだと…

Rubyでソケットを使うときのメモ

少し前に書いたっきりで忘れそうなのでメモっておく 1行ごとに取ってくる場合 ip = "localhost" port = 3100 s = TCPSocket.open(ip,port) str = s.gets getsで1行取得可能 文字数を指定して取ってくる場合 s.recv(8) で8バイトだけ受信できる。 例えば、…

ターミナルから指定した画像をまとめて見るスクリプト

僕はターミナルからopen *.jpgなどして大量の画像を見る人なのですが、openするとPreview.appが開いてしまい、大量の画像を見るには適しておらず、困っていました。 で、画像を順に表示するだけのhtmlをその場で作って、ブラウザで開けば、便利に見られるの…

S式をArrayに格納するメソッドを書いた

サークルで作ってるプログラムで,サーバーとの通信をS式でやっているので,それで使う用。 ありがちなので探せば絶対ありそうだけど練習も兼ねて。 (a b)というStringをちまちま置換して ["a", "b"]というStringにして、evalを使ってArrayに変換した。 最初…