Hatena::ブログ(Diary)

永字八法 RSSフィード Twitter

 | 

2010-04-30 Friday

2010-04-29


Powered by twtr2src

2010-04-29


Powered by twtr2src

2010-04-29


Powered by twtr2src

2010-04-29


Powered by twtr2src

2010-04-29


Powered by twtr2src

2010-04-29


Powered by twtr2src

2010-04-29 Thursday

2010-04-28


Powered by twtr2src

2010-04-28


Powered by twtr2src

2010-04-28


Powered by twtr2src

2010-04-28

2010-04-28 Wednesday

2010-04-27


Powered by twtr2src

2010-04-27


Powered by twtr2src

2010-04-27


Powered by twtr2src

2010-04-27 Tuesday

2010-04-26


Powered by twtr2src

2010-04-26


Powered by twtr2src

2010-04-26


Powered by twtr2src

2010-04-26 Monday

2010-04-25


Powered by twtr2src

2010-04-25


Powered by twtr2src

2010-04-25


Powered by twtr2src

2010-04-25 Sunday

SGEで文字を出力する。

SGEで文字を画面に表示するのは、いくつかの難関があります。そのはまりやすい点について書きます
基本的に、SGEの画面表示は、draw.beginscene()で始まりdraw.endscene()で終わります。この二つの命令に各種draw命令記述ますが、drawできる(画面に表示できる)のは、textureだけです。
そして文字はbitmapにしか書き込めません。ですから、一旦bitmapに文字を書いて、それをtextureに変換してから表示することになります

define({name="MS ゴシック", width=22, height=22}) -- フォントをMSゴシックにする。大きさは縦横22ドット。ちなみに半角文字でもこの大きさになる。
bitmap.create(1, 100, 100) -- とりあえず、100×100のサイズで作る。
bitmap.create(2, 100, 100)
-- やり方その1
font.tobitmap(1, 0, 0, string:byte("a"), 0xFFFFFFFF)
-- 一文字だけ、"a"と書き込む
-- やり方その2
font.draw(2, 0, 0, "日本語", 0xFFFFFFFF)
-- 2byte文字混じり文の場合。

その1:font.tobitmapは半角一文字だけを対象とします。いわゆる2byte文字文字化けしてしまいます。正直、使い道があるのかどうかは疑問です。tobitmapでできることはdrawでできますし、記述のしやすさもdrawの方が上だからです。
その2:二つに共通する第5引数カラーコードですが、16進表記で6桁ではなく8桁の数値を使います。最も上位(左側)の二桁は、アルファー値を意味ます。ですので、NScripterと同じ調子で6桁のカラーコードを使うと、アルファー値が0、完全透過になってしまい、文字が書き込まれているのに見えなくなってしまいます
カラーコードについては、下記のような関数を使って対処するのがいいかも知れません。

-- 与えられた赤緑青アルファー値(0〜255)を一つのカラーコードにして返す。
function color_code(r, g, b, alpha)
	r = r or 255
	g = g or 255
	b = b or 255
	alpha = alpha or 255
	
	return alpha * 16777216 + r * 65536 + g * 256 + b
end
-- 各引数をnilや省略した場合、デフォルトとして255が採用される。

こうやって作ったbitmapを、texture.frombitmap()やtexture.copyrect()でtextureに変換し、それを表示することで文字が表示されます
NScripterと違ってテキストウィンドウ等がありませんので、表示部分は完全に自作になります。頑張ってください。
余談ですが、0xFFFFFFFFは16進数表記された数値ですので、ダブルクォート等は一切必要ありません。ですので、0xFFFFFFFFと表記しても4294967295と表記しても同じことです。さらに言うと、「0xで始まる文字列は16進数の数値である」と言うルールは各種別言語にも採用されていますので、覚えておいて損はありません。

フォントサイズについて

define({name="MS ゴシック", width=22, height=22})

このように記述した場合、半角文字であっても横幅が22ドットになってしまうので、半角英数字を表記する場合は、幅を半分にしたfontを作成して自由に切り替えられるようにするべきでしょう。

はてブのリンク切れチェック

use utf8;
use strict;
use warnings;

use WWW::Mechanize;
my $ua = WWW::Mechanize->new();
my $url = 'http://b.hatena.ne.jp/youraccount/?with_favorites=1&of='; # ここを書き換えてね!
my $count = 80;
open ( OUT, '>link.txt' );
while ( 1 ) {
	my $sub_url = $url.$count;
	$ua->get($sub_url);
	my @all_link = $ua->find_all_links();
	my @out_link = grep { !($_->url =~ /hatena.ne.jp/) } grep { $_->url() =~ /^http/ } @all_link;
	@out_link or last;
	print $ua->uri();
	print "\n";
	foreach my $link ( @out_link ) {
		my $res = $ua->get($link);
		my $code = $res->code();
		$ua->back();
		if ( $code != 200 ) {
			print OUT $ua->uri();
			print OUT "\n";
			print OUT $res->code();
			print OUT "\n";
			print OUT $link->url();
			print OUT "\n";
			print OUT "\n";
		}
	}
	$count += 20;
}
close ( OUT );

ブクマをひとつずつ調べて、リンク切れしてないかどうかをチェックする。
200以外のステータスを返してきたURLリストアップして、link.txtを作ってそこに書き込むと言う動作をします
ちなみに、238/4600が無効リンクでした。

2010-04-24


Powered by twtr2src

SGEで文字を出力する。

SGEで文字を画面に表示するのは、いくつかの難関があります。そのはまりやすい点について書きます
基本的に、SGEの画面表示は、draw.beginscene()で始まりdraw.endscene()で終わります。この二つの命令に各種draw命令記述ますが、drawできる(画面に表示できる)のは、textureだけです。
そして文字はbitmapにしか書き込めません。ですから、一旦bitmapに文字を書いて、それをtextureに変換してから表示することになります

define({name="MS ゴシック", width=22, height=22}) -- フォントをMSゴシックにする。大きさは縦横22ドット。ちなみに半角文字でもこの大きさになる。
bitmap.create(1, 100, 100) -- とりあえず、100×100のサイズで作る。
bitmap.create(2, 100, 100)
-- やり方その1
font.tobitmap(1, 0, 0, string:byte("a"), 0xFFFFFFFF)
-- 一文字だけ、"a"と書き込む
-- やり方その2
font.draw(2, 0, 0, "日本語", 0xFFFFFFFF)
-- 2byte文字混じり文の場合。

その1:font.tobitmapは半角一文字だけを対象とします。いわゆる2byte文字文字化けしてしまいます。正直、使い道があるのかどうかは疑問です。tobitmapでできることはdrawでできますし、記述のしやすさもdrawの方が上だからです。
その2:二つに共通する第5引数カラーコードですが、16進表記で6桁ではなく8桁の数値を使います。最も上位(左側)の二桁は、アルファー値を意味ます。ですので、NScripterと同じ調子で6桁のカラーコードを使うと、アルファー値が0、完全透過になってしまい、文字が書き込まれているのに見えなくなってしまいます
カラーコードについては、下記のような関数を使って対処するのがいいかも知れません。

-- 与えられた赤緑青アルファー値(0〜255)を一つのカラーコードにして返す。
function color_code(r, g, b, alpha)
	r = r or 255
	g = g or 255
	b = b or 255
	alpha = alpha or 255
	
	return alpha * 16777216 + r * 65536 + g * 256 + b
end
-- 各引数をnilや省略した場合、デフォルトとして255が採用される。

こうやって作ったbitmapを、texture.frombitmap()やtexture.copyrect()でtextureに変換し、それを表示することで文字が表示されます
NScripterと違ってテキストウィンドウ等がありませんので、表示部分は完全に自作になります。頑張ってください。
余談ですが、0xFFFFFFFFは16進数表記された数値ですので、ダブルクォート等は一切必要ありません。ですので、0xFFFFFFFFと表記しても4294967295と表記しても同じことです。さらに言うと、「0xで始まる文字列は16進数の数値である」と言うルールは各種別言語にも採用されていますので、覚えておいて損はありません。

フォントサイズについて

define({name="MS ゴシック", width=22, height=22})

このように記述した場合、半角文字であっても横幅が22ドットになってしまうので、半角英数字を表記する場合は、幅を半分にしたfontを作成して自由に切り替えられるようにするべきでしょう。

はてブのリンク切れチェック

use utf8;
use strict;
use warnings;

use WWW::Mechanize;
my $ua = WWW::Mechanize->new();
my $url = 'http://b.hatena.ne.jp/youraccount/?with_favorites=1&of='; # ここを書き換えてね!
my $count = 80;
open ( OUT, '>link.txt' );
while ( 1 ) {
	my $sub_url = $url.$count;
	$ua->get($sub_url);
	my @all_link = $ua->find_all_links();
	my @out_link = grep { !($_->url =~ /hatena.ne.jp/) } grep { $_->url() =~ /^http/ } @all_link;
	@out_link or last;
	print $ua->uri();
	print "\n";
	foreach my $link ( @out_link ) {
		my $res = $ua->get($link);
		my $code = $res->code();
		$ua->back();
		if ( $code != 200 ) {
			print OUT $ua->uri();
			print OUT "\n";
			print OUT $res->code();
			print OUT "\n";
			print OUT $link->url();
			print OUT "\n";
			print OUT "\n";
		}
	}
	$count += 20;
}
close ( OUT );

ブクマをひとつずつ調べて、リンク切れしてないかどうかをチェックする。
200以外のステータスを返してきたURLリストアップして、link.txtを作ってそこに書き込むと言う動作をします
ちなみに、238/4600が無効リンクでした。

2010-04-24


Powered by twtr2src

SGEで文字を出力する。

SGEで文字を画面に表示するのは、いくつかの難関があります。そのはまりやすい点について書きます
基本的に、SGEの画面表示は、draw.beginscene()で始まりdraw.endscene()で終わります。この二つの命令に各種draw命令記述ますが、drawできる(画面に表示できる)のは、textureだけです。
そして文字はbitmapにしか書き込めません。ですから、一旦bitmapに文字を書いて、それをtextureに変換してから表示することになります

define({name="MS ゴシック", width=22, height=22}) -- フォントをMSゴシックにする。大きさは縦横22ドット。ちなみに半角文字でもこの大きさになる。
bitmap.create(1, 100, 100) -- とりあえず、100×100のサイズで作る。
bitmap.create(2, 100, 100)
-- やり方その1
font.tobitmap(1, 0, 0, string:byte("a"), 0xFFFFFFFF)
-- 一文字だけ、"a"と書き込む
-- やり方その2
font.draw(2, 0, 0, "日本語", 0xFFFFFFFF)
-- 2byte文字混じり文の場合。

その1:font.tobitmapは半角一文字だけを対象とします。いわゆる2byte文字文字化けしてしまいます。正直、使い道があるのかどうかは疑問です。tobitmapでできることはdrawでできますし、記述のしやすさもdrawの方が上だからです。
その2:二つに共通する第5引数カラーコードですが、16進表記で6桁ではなく8桁の数値を使います。最も上位(左側)の二桁は、アルファー値を意味ます。ですので、NScripterと同じ調子で6桁のカラーコードを使うと、アルファー値が0、完全透過になってしまい、文字が書き込まれているのに見えなくなってしまいます
カラーコードについては、下記のような関数を使って対処するのがいいかも知れません。

-- 与えられた赤緑青アルファー値(0〜255)を一つのカラーコードにして返す。
function color_code(r, g, b, alpha)
	r = r or 255
	g = g or 255
	b = b or 255
	alpha = alpha or 255
	
	return alpha * 16777216 + r * 65536 + g * 256 + b
end
-- 各引数をnilや省略した場合、デフォルトとして255が採用される。

こうやって作ったbitmapを、texture.frombitmap()やtexture.copyrect()でtextureに変換し、それを表示することで文字が表示されます
NScripterと違ってテキストウィンドウ等がありませんので、表示部分は完全に自作になります。頑張ってください。
余談ですが、0xFFFFFFFFは16進数表記された数値ですので、ダブルクォート等は一切必要ありません。ですので、0xFFFFFFFFと表記しても4294967295と表記しても同じことです。さらに言うと、「0xで始まる文字列は16進数の数値である」と言うルールは各種別言語にも採用されていますので、覚えておいて損はありません。

フォントサイズについて

define({name="MS ゴシック", width=22, height=22})

このように記述した場合、半角文字であっても横幅が22ドットになってしまうので、半角英数字を表記する場合は、幅を半分にしたfontを作成して自由に切り替えられるようにするべきでしょう。

はてブのリンク切れチェック

use utf8;
use strict;
use warnings;

use WWW::Mechanize;
my $ua = WWW::Mechanize->new();
my $url = 'http://b.hatena.ne.jp/youraccount/?with_favorites=1&of='; # ここを書き換えてね!
my $count = 80;
open ( OUT, '>link.txt' );
while ( 1 ) {
	my $sub_url = $url.$count;
	$ua->get($sub_url);
	my @all_link = $ua->find_all_links();
	my @out_link = grep { !($_->url =~ /hatena.ne.jp/) } grep { $_->url() =~ /^http/ } @all_link;
	@out_link or last;
	print $ua->uri();
	print "\n";
	foreach my $link ( @out_link ) {
		my $res = $ua->get($link);
		my $code = $res->code();
		$ua->back();
		if ( $code != 200 ) {
			print OUT $ua->uri();
			print OUT "\n";
			print OUT $res->code();
			print OUT "\n";
			print OUT $link->url();
			print OUT "\n";
			print OUT "\n";
		}
	}
	$count += 20;
}
close ( OUT );

ブクマをひとつずつ調べて、リンク切れしてないかどうかをチェックする。
200以外のステータスを返してきたURLリストアップして、link.txtを作ってそこに書き込むと言う動作をします
ちなみに、238/4600が無効リンクでした。

2010-04-24


Powered by twtr2src

2010-04-24 Saturday

2010-04-23


Powered by twtr2src

2010-04-23


Powered by twtr2src

2010-04-23


Powered by twtr2src

2010-04-23 Friday

2010-04-22


Powered by twtr2src

2010-04-22


Powered by twtr2src

2010-04-22


Powered by twtr2src

2010-04-22 Thursday

2010-04-21


Powered by twtr2src


2010-04-21


Powered by twtr2src


2010-04-21


Powered by twtr2src


2010-04-21 Wednesday

2010-04-20


Powered by twtr2src

2010-04-20


Powered by twtr2src

2010-04-20


Powered by twtr2src

2010-04-20 Tuesday

ブクログ入力支援CGI再起動

ブクログ入力支援CGI(EANコードをASINコードに変換する) - 永字八法の続き。
とりあえず作って置いていたのですが、Amazon API仕様大変更に対応していなくてずっと動かなかったのを放置しておりました。
今回、コメントをいただきまして、目も覚めるような気分で対応させていただきました。
コメントをもらったのが20:41で、最終的なプログラムファイルタイムスタンプ23:04。途中で風呂に入っても2時間半でできました。
これくらいでできるのであれば最初からやっとけよ、と自分のモノグサ加減に涙が出そうです。
Ajaxとかの技術は使わない化石のようなCGIですが、EAN to ASIN、使っていただけると幸いです。

2010-04-19


Powered by twtr2src

ブクログ入力支援CGI再起動

ブクログ入力支援CGI(EANコードをASINコードに変換する) - 永字八法の続き。
とりあえず作って置いていたのですが、Amazon API仕様大変更に対応していなくてずっと動かなかったのを放置しておりました。
今回、コメントをいただきまして、目も覚めるような気分で対応させていただきました。
コメントをもらったのが20:41で、最終的なプログラムファイルタイムスタンプ23:04。途中で風呂に入っても2時間半でできました。
これくらいでできるのであれば最初からやっとけよ、と自分のモノグサ加減に涙が出そうです。
Ajaxとかの技術は使わない化石のようなCGIですが、EAN to ASIN、使っていただけると幸いです。

2010-04-19


Powered by twtr2src