Hatena::ブログ(Diary)

satoru.netの自由帳 このページをアンテナに追加 RSSフィード

160525Wedday

memo

#!/usr/bin/perl

use re 'eval';

my $key = "192.168.[0-100].*";
my $re = make_re($key);

print "[$re]\n";

my @lines = grep {$_} split /\n/,qq{
192.168.99.112 - - [10/Jul/2013:13:53:15 +0900] "GET /top.html HTTP/1.1" 404 1426 "http://facebook.com" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
192.168.81.20 - - [10/Jul/2013:15:06:33 +0900] "GET /hogehoge.html HTTP/1.1" 404 4374 "http://paiza.jp" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
192.168.223.58 - - [10/Jul/2013:21:32:01 +0900] "GET /hoge.html HTTP/1.1" 304 6601 "http://paiza.jp" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0"
};

for(@lines){
	if(m@^$re@){
		s@\[|\]@@gim;
		my($ip,$date,$file) = (split / /)[0,3,6];
		print "$ip $date $file\n";
	}
}

sub make_re{

	my $pattern = shift;

	my @re;
	my $count = 1;

	for my $n ($pattern =~ m@([^\.]+)@g){
		if($n =~ m@\[@){ # レンジ指定
			my @n = $n =~ m@(\d+)@gim;
			push @re,sprintf '(\d+)(?(?{range($%s,%s,%s)})|(?!))',$count,$n[0],$n[1];
			$count++;
		} elsif($n eq "*") { #アスタリスク
			push @re,'\d+';
		} else { #数値
			push @re,"$n";
		}
	}
	return join('\.',@re);
}

sub range{
	my ($n,$min,$max) = @_;
	return ($n >= $min && $n <= $max)
}

100813Friday

[]Super Hackers:Shiritori

GoogleのDevフォーラム2010のQuizのお知らせが来たので早速やってみてるよ。


で、とりあえずShiritoriがおもしろそうなのでやってみてるんだけど、

要は用意された文字のリストを使って、googleのしりとりサーバと勝負して勝て!っていう課題。

なんか、HUNTERxHUNTERみたいでかっこいいなw


んで、普通にやると画面にボタンがあって、選ぶんだけど、ボタンぽちぽちボタンを押してても埒があかないので、

そうか『Super Hacker:Shiritori』とか言うくらいだし、スパハカーなら手動とかありえんよなwとか思って、

自動でしりとり応戦してくれるサーバを開発してみた。

googleしりとりサーバ vs しりとり応戦サーバの図

↓応戦中の図

たぶん、これを開発することがこの出題意図だよな。さすがググール。

サーバサーバがえいやえいや対決してるなんて、なんだかハイテク


結果、Lv1(スライム)とLv2(バラモス)は難なくクリアできたけど、

Lv3(ゾーマ)は10000回くらいトライしてるがまだ、クリアできね。ぐふ

たぶん、『ひかりのたま』的なアイテム使わないと勝てないように出来てるんだろうなー…

追記:翌日

ヤタ!応戦サーバから、『カチマシタ』と勝利報告のメールがww

f:id:satoru_net:20100814020821p:image

さて、次はパックマソやるかなー

追記

gdd2010jpも終わったので『しりとり応戦サーバ』のソース公開します。

Cookie部分はセッション情報なども入ってる為、コメントアウトしてます。

#!/usr/bin/perl

use LWP::UserAgent;
use Jcode;
use Data::Dumper;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use strict qw(vars);
use POSIX;

my $COOKIE = qq{xxxx}; ## 中身はセキュリティー的な問題で内緒
my $sub_section = 2;
my @pettern;
my $try = 0;
my $count = 0;

while(1){
	my $question = get_question();

	my $answer = (sort {rand($b)<=>rand($a)} @{$question->{answers}})[0];
	
	p("Question:[$question->{question}] / Answer:[$answer]");

	&do_answer($question->{hash}, $answer );
	my $res = get_question();

	p("[$try][$count]try");
	$count++;
	p("status:[$res->{status}]") if($res->{status});

	if($res->{status} eq "lose"){
		p("Reset");
		$try++;
		do_reset($res->{hash});
	} elsif($res->{status} eq "win"){
		p("Finish!!");
	} else {
		p("Next!");
	}

	sleep 1;
}

sub p{
	my $word = shift;
	my $date = POSIX::strftime("%H:%M:%S",localtime);
	print "$date:$word\n";
}

sub do_answer{

	my ($hash,$word) = @_;
	my $question = &get_question();

	# リクエストの生成
	my %form = (
	            'answer0' => $word,
	            'problem' => 'shiritori',
	            'sub_section' => $sub_section,
	            'hash' => $hash,
	            'submit_button' => '選択',
	           );

	my $req = POST("http://gdd-2010-quiz-japan.appspot.com/problems/submit", [%form]);
	$req->referer("http://gdd-2010-quiz-japan.appspot.com/problems?problem=shiritori&sub_section=$sub_section");
	$req->header("Cookie",$COOKIE);

	my $ua = LWP::UserAgent->new;
	my $res = $ua->request($req);
	
	
}

sub do_reset{

	my $hash = shift;
	my $question = &get_question();

	# リクエストの生成
	my %form = ('problem' => 'shiritori',
	            'sub_section' => $sub_section,
	            'hash' => $hash,
	            'reset_button' => 'ゲームをリセット',
	            'answer0' => 'reset',
	           );

	my $req = POST("http://gdd-2010-quiz-japan.appspot.com/problems/submit", [%form]);
	$req->referer("http://gdd-2010-quiz-japan.appspot.com/problems?problem=shiritori&sub_section=$sub_section");
	$req->header("Cookie",$COOKIE);

	my $ua = LWP::UserAgent->new;
	my $res = $ua->request($req);
}

sub get_question{

	my $ua = LWP::UserAgent->new;

		$ua->agent('Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ');
		my $req = HTTP::Request->new(GET => "http://gdd-2010-quiz-japan.appspot.com/problems?problem=shiritori&sub_section=$sub_section");
		   $req->referer("http://gdd-2010-quiz-japan.appspot.com/problems?problem=shiritori&sub_section=$sub_section");
		   $req->header("Accept-Encoding","gzip,deflate");
		   $req->header("Cookie",$COOKIE);

		return parse_question(($ua->request($req))->content);
	
}

sub parse_question{

		my $res = shift;
		my $status;
		
		if($res =~ /勝ち/){
			$status = "win";
		} elsif($res =~ /負け/){
			$status = "lose";
		}

		my $flag;
		my @con;
		my @ans;
		my @hist;

		my $flag1;
		my $flag2;

		for(split /\n/,$res){
			$flag=1 if(/辞書/);
			$flag=0 if(/履歴/);
			if($flag){
				push @con,$_;
			}

			$flag2=1 if(/履歴/);
			$flag2=0 if(/回答/);
			if($flag2){
				push @ans,$_;
			}
		}

		my %hist;
		@con = map {m@<li>(.*)</li>@ ; $1 } grep {m@<li>@} @con;
		@ans = map {m@<li>(.*)</li>@ ; $1 } grep {m@<li>@} @ans;

		for(@ans){
			$hist{$_}=1;
		}
		
		my ($hash) = (grep {/hash/} split /\n/,$res)[0] =~ m@value="([^"]+)"@;
		
		my $question = $ans[-1];
		my @answers = grep {(get_word($_))->{st} eq (get_word($question))->{en} } grep { !$hist{$_} } @con;

		return {status=>$status, answers => \@answers, history=>\@ans, question=> $question, list=>\@con,hash=>$hash };
}

sub get_word {
	my $word = shift;
	my ($st) = $word =~ m@^(.)@;
	my ($en) = $word =~ m@(.)$@;
	
	return {st=>$st,en=>$en};
}

090531Sunday

[]thunder://をダウンロードする方法

f:id:satoru_net:20090531132738j:image

中国のサイトとかで、たまーにみる thunder://

これを動かすには、

  • 1:Thunder DownloaderをDL&インストールする
  • 2:Thunder用のfirefoxプラグインを入れる。

上記2点を満たすと、動くようになって、ダウンロードできるようになる。

Thunder Downloader は、中国製のダウンローダーみたい。

下記とかでダウンロードできる。

http://www.crimsonrain.com/2008/07/thunder-v583545.html

んで、実行すると中国語だらけでよくわからんけど、直感でインストールする。

その後、

https://addons.mozilla.org/ja/firefox/addon/8837

firefox プラグインをいれると、thunder://がちゃんと動いてダウンロードもできるようになった。

f:id:satoru_net:20090531133459j:image

090210Tueday

[]全国のさとるさんに送る、さとる向けサービス

珍しい苗字の友達が「俺、自分の苗字で1位なんだぜ〜」とかいってたから、

<そりゃ1位になるよなー、というかそれ以前にそのキーワードで検索しないだろww>

とか内心思いながら、ふと自分の名前を検索してみたところ


さとる」の検索結果がGoogleで1位だった。w


こ、・・・これは・・・・ 全国のサトルオピニオンリーダーとして立ち上がらなくてはじゃないか・・・・・


そこで全国の「さとる」向けサービスをはじめたいと思います。

ラインナップはこんなかんじ!!!!

サービス一覧

「さとる」SNS

 さとるさん限定SNS。さとる同士でつながればいいよ

「さとる」メール

 @satoru.net のメアドをレンタル

「さとる」ペディア

 さとる界の著名人、物事辞典。

「さとる」ニュース

 さとる界のトピック、ニュースなど。もちろん日刊更新!MLマガジン。

「さとる」あるある大辞典

 「さとる」が名前な人のあるあるねーよ集。小学生の時の悪口とか、あだ名とかの共有知。

「さとる」ゲーム

 さとるが主人公なゲーム紹介、ゲームなど

「さとる」ブックス

 さとるが主人公な小説、作家の紹介など

「さとる」ブックマーク

 さとるに関するSBS

「さとる」グルメ

 名前が「さとる」な店長がやってるお店限定グルナビ。名前が「さとる」だと割引特典!とか

「さとる」出会い

 さとるさん同士が出会える系。うほ、出会わないか。

「さとる」MAP

 さとるさんの生息全国分布マップ

「さとる」API

 クエリを投げると、さとるを返す謎のWEBサービスAPI。用途不明。さとるクリエイター立ち上がるんだ!


ひゃー、「さとる」づくし!名前がさとるな人にとってはめちゃくちゃ気になるけど、

別名の人には、かなりどーーーでもいいサイトだろーねww


って感じで、自分の名前とかでこれらを量産される 名前ポータルとかを

はじめることがきまりました!!!!!

--------

とかっていう壮大な妄想が浮かんだとさ〜、ちゃんちゃん。w

080601Sunday

ファミコン遊べまくりのfireFoxプラグインのromの在り処

404 Not Found | このページは存在しないか、すでに削除されています

で話題になってるネタ。


fireNesってネタみたいなプラグインなんだけど、

ROMがなくても、インストールさえすればいきなりブラウザ上で遊べるらしい。


んなあほな!とおもって、インストールしてみた。l

Σ( ゚Д゚) スッ、スゲー!! まじで遊べるー。


んで、どうなってるんだろうと思って調べた。

なーんだ。サイトにアクセスしにいってるだけじゃん。

【いっき】がメイン画面で動く図

f:id:satoru_net:20080601164955p:image

んでね、これ、

ttp://firenes.zaldo.com.ar/emulador.php

ってCGIを呼び出してROM&プレイヤーをゲットしとるんだけど、

firenes.zaldo.com.arの、ar直接アクセスすると

Si ve esta pagina probablemente sea por un error. Por favor, informelo en www.firenes.com.ar

っていう不思議な言葉。どこに国だろう?と思って調べてみたら、

アルゼンチンだった。これはスペイン語かぬ。( ^ω^ )

どうやらfirenes.com.arがメインサイトらしいわね。


あーあ、これから遠い海の向こうのアルゼンチンに、任天堂の弁護士から内容証明が通達されるんだろうなあ。( ゚д゚)ポカーン

©satoru.net
Mail Twitter