「あなくつ」のおもちゃばこ

Blog

大人げない診断メーカーの使い方

Twitterで良くネタになっている診断メーカーというウェブサービスがあります。これは適当な名前で占いをするようなものです。

使っていて気がついたのですが、結果が日替わりであるとともに、名前の大文字小文字を区別するようですね。ということは大文字小文字を変えてみて結果がどう変わるか気になるところです。というか、大文字小文字を切り替えて無理やり良い(と思われる)結果を引き出したくなります。

そこで作ってみました。適当な名前を入力すると、その名前の大文字小文字のすべてのパターンを切り替えて診断メーカーにポストするJavaScriptです。

つかいかた

  1. 「URL」テキストボックスに使いたい診断メーカーのURLを入力します(デフォルトで「冬のボーナスが出ったー」のURLが入ってます)
  2. 「NAME」テキストボックスに診断したい名前を入力します
  3. 「Execute」ボタンをクリックします
  4. 結果が別ウィンドウで表示されます
  5. 途中で停止・再開したい場合は「Pause」ボタンをクリックします

フォーム

URL
NAME
  • いちおう他のサイトに対してポストしないようにURLのチェックはしてます
  • DoSにならないように1回のポストは5秒おきです
  • [2]の[ユーザー名の文字数]乗回のポストが発生するため、不要な結果(ウィンドウ)は次々閉じないと、多分ブラウザがクラッシュします。

ソースコードを見たい方という奇特な方は続きからどうぞ。

ソースコード

<script type="text/javascript">
var strSeed = '';
var numCount = 0;
var flagPause = false;

function onSubmitShindanmaker() {
	var strUrl = document.getElementById('formUrl').value;
	var strName = document.getElementById('formName').value;
	var flagError = false;
	var objWindow = null;
	
	if (!strUrl) {
		alert('URLを入力してください');
		flagError = true;
	} else if (0 != strUrl.indexOf('http://shindanmaker.com/')) {
		alert('URLは診断メーカーのURLを入力してください');
		flagError = true;
	} else if (!strName) {
		alert('NAMEを入力してください');
		flagError = true;
	} else if (31 < strName.length) {
		alert('NAMEは31文字までしか扱えません');
		flagError = true;
	} else if (strName.match(/[^a-z]/gi)) {
		alert('NAMEはアルファベットしか扱えません');
		flagError = true;
	}
	
	if (!flagError) {
		document.getElementById('formPause').disabled = false;
		document.getElementById('formShindanmaker').action = strUrl;
		strSeed = strName.toUpperCase();
		numCount = 0;
		flagPause = false;
		setTimeout('onTimer()', 500);
	}
}
function onTimer() {
	var strU = '';
	
	if (!flagPause) {
		for (var numIndex = 0; numIndex < strSeed.length; numIndex++) {
			strU += String.fromCharCode(strSeed.charCodeAt(numIndex) + ((numCount >> numIndex) & 1) * 32);
		}
		document.getElementById('formU').value = strU;
		document.getElementById('formShindanmaker').submit();
		numCount++;
		if (numCount < Math.pow(2, strSeed.length)) {
			setTimeout('onTimer()', 5000);
		}
	}
}
function onPause() {
	if (flagPause) {
		setTimeout('onTimer()', 500);
		document.getElementById('formPause').value = 'Pause';
	} else {
		document.getElementById('formPause').value = 'Resume';
	}
	flagPause = !flagPause;
}

</script>
<form action="#" method="post" onsubmit="onSubmitShindanmaker(); return false;">
	<dl>
		<dt>URL</dt>
		<dd><input type="text" name="url" id="formUrl" value="http://shindanmaker.com/67905" class="inputRow2" /></dd>
		<dt>NAME</dt>
		<dd><input type="text" name="name" id="formName" value="" class="inputRow2" /></dd>
	</dl>
	<div class="alignCenter"><input type="submit" value="Execute" class="inputRow4" /> <input type="button" value="Pause" id="formPause" class="inputRow4" disabled="disabled" onclick="onPause()" /></div>
</form>
<form action="#" method="post" target="_blank" id="formShindanmaker">
	<input type="hidden" name="u" id="formU" value="" />
</form>

タグ : JavaScript,Twitter,診断メーカー

2010/12/11 00:47:50 | Trackbacks (0) | Comments (0) | Pastime

Trackback

URL : https://www.ana-kutsu.com/mt/mt-tb.cgi/571

Comment

(Private)
Authentication
refresh captcha

画像の中に見える文字を入力してください。

« IT+ACで日本の将来が変わる | Top | FreePascal での httpd の優先順位 »

  • Top
  • Software
  • Blog
  • Laboratory
  • Profile
Search
Feeds of Blog
Archives

Copyright © 2004-2023 Ana-Kutsu All Rights Reserved.