Top / Rubyおぼえがき

Rubyおぼえがき

Rubyでしょっちゅー忘れるコトのメモ

ftp関連

require "net/ftp";
ftp= Net::FTP.new;
ftp.connect("192.168.xxx.xxx");
ftp.login;
ftp.passive= true;
ftp.chdir("sataraid1/disk1/...");
ftp.nlst;  # 文字列配列が返る

あとは

URI.encode(STRING)

とかも覚えておくと便利.

コマンドライン引数

ARGV[0] : プロンプトで入力された引数一個目から
$0 : コマンド名も拾える(Cの**argvと同じ)

何に使うのか

1.upto(33){| x |
  hex= format("%02x", x);
  dec= format("%02d", x);
  puts "http://sample.com/" + dec + "_" + hex + ".jpg";
}

何に使うのか(2)

require "open-uri";
require "net/http";

prefix= "";
baseURLlist= [
];
baseDomain= "www.masterbloodfer.org";

0.upto(baseURLlist.length - 1){|i|
  url= baseURLlist[i];
  # ディレクトリの存在チェック
  # ダウンロード先ファイルパス生成
  outdir= url.split("/");
  outdir= outdir[outdir.length - 2];
  outdir= prefix + "/" + outdir;
  if(FileTest.exist?(outdir) == false)
    # ディレクトリ生成
    Dir::mkdir(outdir);
    Net::HTTP.start(baseDomain, 80) {|http|
      response= http.get( url.sub("http://" + baseDomain, "") );
      response.body.each_line{ |line|
        filenum= line.scan(/>.+\.jpg</);
        if(filenum.length > 0) # jpgファイル名を指定している行
          filenum= filenum[0];
          filenum= filenum.slice(1, filenum.length-2);
          filenum= filenum.gsub(" ", "%20");
          imgurl= url.sub(/\/index\.html$/, "/" + filenum);
          imgurl= imgurl.sub("http://" + baseDomain, "");
          puts imgurl;
          # ダウンロード処理
          File.open(outdir + "/" + filenum,"wb") do |f|
            f.print http.get(imgurl).body
          end
       end
      }
    }
 else # 既にディレクトリがあるとき
   puts outdir + " already exist";
 end
}
Site admin: kam1610, PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.2.17.