Hatena::ブログ(Diary)

へたっぴ日記 このページをアンテナに追加 RSSフィード Twitter

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

吉沢明歩かわいい

吉沢明歩動画リンク集があったので、スクリプト書いて大量に動画を頂きました。それだけ。

404 Error - FC2ブログ

#!/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));

https://sites.google.com/site/hetappipm/hatena/20101230/akiho.png

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>

https://sites.google.com/site/hetappipm/hatena/20101206/imgxls.png