ruby

IOのまとめ

たぶんruby2.0から IO.read、IO.foreach、IO.readlines、IO.write などが思ったように使えるようになった IO.readはエンコーディングを指定しなければ、「Encoding.default_external」がセットされる なので、ファイルの中身のエンコーディングと一致してな…

文字コード

今更だけどなんかちょっと曖昧に理解してたのでまとめ。 私はWindows使いなので、SJISとUTF8といったりきたりすることが頻繁にあるので、それだけに絞ってまとめてみた。 utf8.txt と cp932.txt というファイルを作成しておく(中身はそれぞれファイル名と同…

1つ前のタグに○○という文字が入っているタグ

例えば以下のようなHTMLの場合に、 <div> <div>...</div> <div>...</div> <div>...</div> <div id="div1">ほげほげ○○ふがふが</div> <div id="div2">このdivタグを取得したい</div> <div>...</div> <div>...</div> <div>...</div> </div> div2のdivタグを取得したい場合のxpath式はこんな風になる(もちろん id が振られていない前提です) //div[preceding-sibling::div[1][contains(tex…

Tips集

■超簡単なサンプル require "mechanize" agent = Mechanize.new agent.get("http://d.hatena.ne.jp/shima111/") ■アクセスしたページを取得する page = agent.page page.uri #<URI::HTTP:0x157f698 URL:http://d.hatena.ne.jp/shima111/> ■リンクをクリックする # 表示されてる文字列にマッチするリンクタグをクリック </uri::http:0x157f698>…

日付に関するメモ

ざっとまとめてみる デフォルトで用意されているのはTimeクラス Time.nowで現在時刻を取得できる Time.local(y,m,d,hour,min,sec,usec) で指定した時刻を取得できる(mは1〜12) 整数との加減算は秒数を加減算してTimeを返す Timeとの加減算は秒数をFloatで返…

色々な例

シートの全選択 sheet.Cells.Select シートの全削除 sheet.Cells.ClearContents セルが空かどうかチェック cell = sheet.Cells.Item(y,x) unless cell.Value.nil? # セルに何かデータがある puts cell.Value end Rangeを使用してセルの値を取得する # 単一セ…

Excelを終了させる方法

rubyからOLE経由でExcelを操作するのはこちらを参考に http://magazine.rubyist.net/?0004-Win32OLE問題はQuitしてもExcelのプロセスが残ってしまうこと。irbで実行すればわかるけど require 'win32ole' xl = WIN32OLE.new('Excel.Application') book = xl.W…

pとかppの出力結果を読める日本語で表示する

普通にpすると以下のようにユニコードのコードポイントが出力される # -*- encoding: utf-8 -*- s = "あ" p s #=> "\u3042" これだとすぐにわかんないので、ちゃんと「あ」と表示できるようにするには以下のような面倒くさいことをしないといけない・・の?…

便利な配列のイテレーション

2つの配列を同時にeach ary1 = [1,2,3] ary2 = [1,2,3] ary1.zip(ary2).each{|a1,a2| p a1, a2}ちなみに配列数が違う場合は以下のような挙動 [1,2,3].zip([1,2]) => [ [1,1], [2,2], [3,nil] ] [1,2].zip([1,2,3]) => [ [1,1], [2,2] ] 次の要素を参照しなが…

Rubyでhttps接続(昨日の続き)

https接続の際に証明書の検証に失敗する件だが、どうもベリサインの証明書に問題があるみたい。ベリサインの新しい証明書は中間認証局が承認した証明書になっていて、予めPC(というかブラウザ)にインストールされている証明書はその中間認証局で、ルート認証…

httpsでMechanizeを使う

※環境はWindows、ruby1.9.3、mechanize-2.3です。Mechanizeはrubyでスクレイピングするとしたら、もう定番と言ってもいいライブラリでしょう。普通に使う分には色々記事が既にあるのでここではhttpsではまった部分をちょっとだけ書いてみます。デフォルトで…

起動オプション "-s"

マニュアル(http://www.ruby-lang.org/ja/man/html/Ruby_A4CEB5AFC6B0.html)には、 -s スクリプト名に続く, `-'で始まる引数を解釈して, 同名のグローバル変数に値を設定します。 `--'なる引数以降は解 釈を行ないません。該当する引数は ARGV から取り除か…

Windowsで拡張ライブラリを作る際の注意点

ランタイムライブラリが無いとか文句垂れよるので、拡張ライブラリをビルドするためのMakefileで × CFLAGS = -MD ... ○ CFLAGS = /MT ...と修正しないといけない。 ちなみに、大元のファイルは\1.8\lib\ruby\1.8\i386-mswin32\rbconfig.rb

Ruby1.9のソースをVCでコンパイルする

用意するもの Visual Stuido VC++:MSのサイトからDL subversion:TortoiseSVNと本家?もDL。http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 の「svn-***-setup.exe」というやつをDL。 sed:http://sourceforge.net/project/showfi…

Ruby1.8のソースをVCでコンパイルする

用意するもの Visual Stuido VC++:MSのサイトからDL subversion:TortoiseSVNでOK byacc:http://sourceforge.net/project/showfiles.php?group_id=23617からDLするとよい。PATHを通すこと。 sed:http://sourceforge.net/project/showfiles.php?group_id=2…

rails...

巷で噂のrails。ruby好きな私としては、一度遊びたかったのだが、今まで時間が取れないでいた。最近ようやく時間を取れるようになったので、いっちょ遊ぶかーとrailsをインストールしようとしたのだが・・・。何このめんどくささ。インストールするだけでえ…

YouTube からデータをぶっこ抜く方法

たいていの動画アプロダサイトって、HTMLソースを表示すれば、http://****.wav ってURLが記述されてるんだけど、YouTubeはちょっと一工夫が必要なので、それを自動化するrubyスクリプトを書いてみました。自己責任で使ってくださいな。DLしたファイルは、VLC…