- 追加された行はこの色です。
- 削除された行はこの色です。
* Rubyおぼえがき [#p53ffbf8]
Rubyでしょっちゅー忘れるコトのメモ
** 正規表現 [#e80498d7]
マッチ直後の結果は
$~
に格納されてる.
$~[0]
とかで参照可能.
** 連番置換 [#i9951294]
num= 100;
file= open("sample.txt")
text= file.read();
while true
/#\{[^\}]+\}/ =~ text;
if($~ == nil)
break;
end
if($~ != nil)
pb= $~[0];
# p pb;
text= text.gsub(pb, format("%03d", num));
num+= 1;
end
end
print text;
file.close();
** ftp関連 [#hde520ed]
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)
とかも覚えておくと便利.
ftp.list
でファイル一覧.以下スペース区切り.
+ ディレクトリ?[ "-" or "d" ]
+ 数値 \d
+ user
+ group
+ size
+ mon
+ day
+ time or year
+ file or name
** コマンドライン引数 [#m117519c]
ARGV[0] : プロンプトで入力された引数一個目から
$0 : コマンド名も拾える(Cの**argvと同じ)
** 何に使うのか [#je2db468]
1.upto(33){| x |
hex= format("%02x", x);
dec= format("%02d", x);
puts "http://sample.com/" + dec + "_" + hex + ".jpg";
}
** 何に使うのか(2) [#i1085201]
require "open-uri";
require "net/http";
prefix= "";
baseURLlist= [
];
baseDomain= "www.masterbloodfer.org";
baseDomain= "www.hoge.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
}