2011-12-09
正しいISBN10に対してISBN_Tools.is_valid_isbn10?がfalseになる。
あとで調べる。1.9のせいかな。
C:\Temp>ruby -v ruby 1.9.2p290 (2011-07-09) [i386-mingw32] C:\Temp>irb irb(main):001:0> require 'isbn/tools' => true irb(main):002:0> isbn13 = '9784062748698' # ノルウェイの森 下 (講談社文庫) => "9784062748698" irb(main):003:0> ISBN_Tools.is_valid_isbn13? '9784062748698' => true irb(main):004:0> isbn10 = ISBN_Tools.isbn13_to_isbn10 isbn13 => "406274869X" irb(main):005:0> ISBN_Tools.is_valid_isbn10? isbn10 => false irb(main):006:0>
2011/12/13 追記
やはり、1.9のせいでした。とりあえず以下で、isbn[ndx]!= 'X'とかにすれば動く。
def ISBN_Tools.is_valid_isbn10?(isbn_) isbn = cleanup(isbn_) return false if isbn.nil? or isbn.match(/^[0-9]{9}[0-9X]$/).nil? sum = 0; 0.upto(9) { |ndx| sum += (isbn[ndx]!= 88 ? isbn[ndx].chr.to_i : 10) * (10-ndx) } # 88 is ascii of X sum % 11 == 0 end
2010-12-30
吉沢明歩かわいい
吉沢明歩動画リンク集があったので、スクリプト書いて大量に動画を頂きました。それだけ。
#!/usr/bin/perl use strict; use warnings; use File::Basename; use LWP::UserAgent; use Perl6::Say; use URI; use Web::Scraper; my $ua_pornhost = LWP::UserAgent->new( keepalive => 1 ); my $ua_sony = LWP::UserAgent->new( keepalive => 1 ); my $scraper_list = scraper { process '//a[contains(@href,"http://www.pornhost.com")]', 'urls[]' => sub { my $uri_pornhost_html = $_->{href}; say $uri_pornhost_html; my $uri_sony = 'http://www.sonyyoutube.com/?v=' . $uri_pornhost_html; say '-> ' . $uri_sony; my $scraper_sony = scraper { process 'id("m")/a', url => '@href'; }; $scraper_sony->user_agent($ua_sony); my $result = $scraper_sony->scrape(URI->new($uri_sony)); my $uri_pornhost_wmv = $result->{url}; say '-> ' . $uri_pornhost_wmv; my $file = basename($uri_pornhost_wmv); $ua_pornhost->get($uri_pornhost_wmv, ':content_file' => $file); $file; }; }; my $uri_list = 'http://fc23.blog63.fc2.com/blog-entry-813.html'; $scraper_list->scrape(URI->new($uri_list));
2010-12-06
Excelに画像ファイルを貼り付ける
仕事でWebアプリをテストする時、スクリーンショットを撮っておき最後にExcelで資料をまとめたりするんだけど、巨大なアプリだと画像をExcelに貼り付けるだけでめっちゃ時間がかかったりして、なんで僕がこんな仕事をしているんだ、とキレてるやつがいたんだけど、それはお前がへなちょこなせいなんだよ。
// // makeimgxls.js // (function() { if (WScript.Arguments.length < 3) { WScript.Echo('usage: cscript //nologo makeimgxls.js c:\\imgs c:\\img.xls 15'); return; } var imgdir = WScript.Arguments(0); var xlsfile = WScript.Arguments(1); var interval = WScript.Arguments(2); var files = (function (dir) { var files = [ ]; var fso = new ActiveXObject('Scripting.FileSystemObject'); var dir = fso.GetFolder(dir); for (var e = new Enumerator(dir.Files); !e.atEnd(); e.moveNext()) { var item = e.item(); if (!/(png|jpeg|jpg|gif|bmp)$/.test(item.Name)) { continue; } files.push(item.Path); } return files; })(imgdir); var xl = new ActiveXObject('Excel.Application'); try { var book = xl.Workbooks.Add(); var sheet = book.Worksheets(1); for (var ii = 0, max = files.length; ii < max; ++ii) { var img = sheet.Pictures.Insert(files[ii]); img.Cut(); sheet.Cells(ii * interval + 1, 1).Value = files[ii]; sheet.Paste(sheet.Cells(ii * interval + 2, 1), img); } book.SaveAs(xlsfile); } finally { if (xl != null) { xl.Quit(); } } })();
c:\Temp\js>dir /b imgs 1.png 2.png 3.png c:\Temp\js>cscript //nologo makeimgxls.js c:\temp\js\imgs c:\temp\js\img.xls 8 c:\Temp\js>c:\temp\js\img.xls c:\Temp\js>




