ruby

VC++6からRubyを実行

SVNとかに登録することも考えて、必要なファイルをプロジェクトファイル内にコピーして使う。 C:\Ruby\lib\msvcrt-ruby18-static.lib C:\Ruby\lib\ruby\1.8\i386-mswin32\win32フォルダ C:\Ruby\lib\ruby\1.8\i386-mswin32\*.h プロジェクトの設定>リンクで…

文字の検索

文字列中に含まれている任意文字列の位置を求める無かったらnilが返る s = "Apple Banana Apple Orange" p s.index("Apple") #=> 0 p s.index("Banana") #=> 6 p s.index("Apple", 6) #=> 13 p s.rindex("Apple") #=> 13 p s.rindex("Apple", 6) #>= 0ネタ元…

Zipの解凍

ziprubyというライブラリがいるのでインストール gem install ziprubyコードはこんな感じ require 'rubygems' require 'zipruby' Zip::Archive.open('test.zip') do |ar| ar.fopen(ar.get_name(0)) do | file | fileName = file.name content = file.read en…

ファイル出力

foo = File.open("foo.txt",'w') foo.puts 'bar' foo.closeネタ元 http://www.namaraii.com/rubytips/?%A5%D5%A5%A1%A5%A4%A5%EB%A5%A2%A5%AF%A5%BB%A5%B9#l9

CSVファイルを読み込む

一行ずつ読み込むサンプル require 'csv' ・・・ CSV.open('test.csv', 'r') do |row| p row[0] # 0番目の要素表示 endネタ元 http://d.hatena.ne.jp/gom68/20090213/1234523232

ファイル選択ダイアログ

require 'win32ole' require 'vr/vruby' ・・・ file=SWin::CommonDialog::openFilename(nil,[["CSV(*.csv)","*.csv"],["all(*.*)","*.*"]],0x1000) wsh = WIN32OLE.new('WScript.Shell') if file wsh.Popup(file,0, "選択されたファイルは") else wsh.Popup…

ハッシュ Hash

解説 http://www.rubylife.jp/ini/hash/index3.html 数値以外でもキーにできる配列なイメージ test_hash = Hash.new test_hash[0] = 1234 test_hash['abc'] = 5678

mechanize-0.9.3 Documentation

リファレンスhttp://mechanize.rubyforge.org/mechanize/こっちも読んでおいた方がいい Mechanize GUIDE.txt 日本語訳

日本語オプションの指定は$KCODEよりも-Kオプションで

スクリプトの一番上に #!/usr/local/bin/ruby -Ksと入れるとよいネタ元 http://d.hatena.ne.jp/rubyco/20060318/charcount

デバッガの使い方

こちら http://www.ruby-lang.org/ja/man/html/debug.html

HTML解析のライブラリHpricot

こんな感じで使える require 'hpricot' require 'open-uri' url = 'http://yahoo.co.jp/' # HTML解析 doc = Hpricot( open(url.chomp).read ) # ページタイトル抽出 title = (doc/:html/:head/:title).text.tosjis puts title #imgタグの中で.jpgの者だけ抽…

コマンドラインでの入力は gets

こんな感じ。 puts 'URLを入力して下さい。' url = gets

漢字を含んだスクリプトが文字化けを出力したり、正しく実行できない場合があります

ruby 1.6以降、デフォルトで漢字コードを特別に解釈しなくなったそうです。Win環境では ruby -Ks <スクリプトファイル>とすればよろしいそうです。元ネタ http://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html

mechanizeでweb上のファイルをローカル保存

右クリックで保存みたいな。 require 'rubygems' require 'mechanize' require 'kconv' agent = WWW::Mechanize.new file = agent.get('http://www.yahoo.co.jp/') file.save # file.save_as("yahoo.html") とかもありネタ元 http://clip.nifty.com/entry/c6…

ftpでアップロード

require 'net/ftp' #ftpでアップロード ftp = Net::FTP.new ftp.debug_mode = true #デバッグモード。アクセスの詳細が分かるよ ftp.connect( 'ftpサーバアドレス' ) ftp.login( 'ユーザー', 'パスワード' ) ftp.passive = true #passive(PASV)モードが必要…

プロシージャ エントリ ポイント rb_thread_status が ダイナミック リンク ライブラリ xxxx.exe から見つかりませんでした。

One Click Ruby InstallerでRuby環境をインストールするとこれが出る場合があるみたい。 ActiveScriptRubyを使うと治るそう。http://arton.hp.infoseek.co.jp/indexj.htmlからActiveRuby.msiをダウンロード&実行。インストール先をC:\Rubyにして上書きイン…

Rubyをexe化するExerbで作ったexeがDLLがないとぼやくときの対処方法

nokogiriを使っている場合、以下のdllが存在しないということでエラーとなった。 libxml2.dll libxslt.dll libexslt.dll そこで、レシピファイルを開いて、pathセクションに上記ファイルが存在するパスを追加(環境に合わせて書き換えてね) path: - c:/ruby/l…

Windowsでスクリプト言語“Ruby”を導入するための和製インストーラー「Rumix」

日本語で安心の一発インストーラ。http://www.forest.impress.co.jp/docs/review/20100106_340742.html

Mechanizeでユーザエージェント指定&リダイレクト指定

こんな感じ。 require 'mechanize' ・・・ agent = WWW::Mechanize.new agent.user_agent_alias = 'Windows IE 7' agent.redirect_ok='true' agent.redirection_limit=3アイリアスは以下のものが用意されています。 Windows IE 6 Windows IE 7 Windows Mozil…

RubyのSBI証券Fxクライアントライブラリ

改造すればいろいろ使えそう。http://github.com/unageanu/sbiclientネタ元 http://d.hatena.ne.jp/unageanu/20090907

ウェブサイトへのアクセスの自動化 WWW::Mechanize

これは使えるなぁ。http://route477.net/rubyscraping/?MechanizeWWW::Mechanizeでできること ウェブサイトへのアクセスの自動化 リンクをたどる フォームをsubmitする リダイレクトをたどる アクセスしたページの履歴を覚える(history) cookieの設定・送信 …

中断は exit()

それだけ

入力ダイアログ

VBScriptを使うなんて手法もあるんだなぁ require 'win32ole' #入力ダイアログ sc=WIN32OLE.new("ScriptControl") sc.language="VBScript" a=sc.eval('InputBox("なにか"&vbcrlf&"入力して下さい","入力")') if a == nil then quit() end sc.eval(%Q! MsgBox…

リダイレクトに対応する

http://doc.okkez.net/static/191/library/net=2fhttp.htmlNet::HTTP.new()してget()しただけではリダイレクトには対応できてないのですね。良く考えてみればそりゃそうか。 require 'net/http' require 'uri' def fetch(uri_str, limit = 10) # You should …

Rubyをexe化するExerbでwin32oleがなんたらとエラーが出たときの対処法

レシピファイルを使ってexeを作らないといけません。こんな感じで自動で作ることが可能です。 ruby -r exerb/mkexy hello_call.rbExerbでwin32oleを使う

Rubyをexe化するExerbでadd_file_entryがなんたらとエラーが出たときの対処法

こんなエラーが出るときあります。 C:/Ruby/lib/ruby/site_ruby/1.8/exerb/recipe.rb:146:in `add_file_entry': hello.ex y: no such file -- C:/Documents and Settings/<username>/デスクトップ/hhh.rb (Runtim eError)exerbにスクリプトファイルをフルパスで指定す</username>…

Rubyスクリプトをwindowsのexeに変えるツール exerb

http://exerb.sourceforge.jp/ネタ元 http://doruby.kbmj.com/saronpasu_on_rails/20080609/Ruby_Exe_

URLを便利に扱うパーサ URI.parse

u = URI.parse("http://www.hogehoge.com/hoge.html") puts u.scheme puts u.host puts u.path puts u.portとすると http www.hogehoge.com hoge.html 80となるネタ元 http://www.ruby-lang.org/ja/man/html/URI.html ちなみに与えるURLをファイルから読み込…

フォルダ内のテキストファイルの行数を数える

#フォルダ指定 require 'win32ole' app = WIN32OLE.new('Shell.Application') basepath_obj = app.BrowseForFolder(0, '行数をチェックするファイルの入ったフォルダをを選択してください', 0, 'C:/') base_path = basepath_obj.Items.Item.path #フォルダか…

ディレクトリ(フォルダ)を扱うならDir

Dir.open('.') でフォルダ開いて dir.read を呼ぶ度にフォルダの中にあるファイル名を返してくれるという。便利だなぁ dir = Dir.open('.') while filename = dir.read print filename, "\n" end$ irb irb(main):001:0> dir = Dir.open('.') #<Dir:0x2ac52200> irb(main):002</dir:0x2ac52200>…