スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ゲーム発売情報の自動化!

ようやく完成しました。

3日間も開発に費やしてしまった。
そもそも、開発というほど高機能なものでもなく、3日間もかけるほど規模もでかくない。
知識不足なのが良く実感できた3日間でした。

忘却用に最後にソースを載せますが、大変汚いので、改善すべきところがたくさんあります。
とにかくデザインには全く手を付けていませんw

今回作成に当たり、色々調べた中でキーワードと思われる点だけ書いていきます。

・テキストデータのHTMLをDOMツリー化する
・正規表現で文字検索
・querySelectorAllによるセレクタ操作
上記の関数を使用しているため「IE8, Chrome1, Firefox3.5, Opera10, Safari3.2」以降のブラウザでないと動作しません。私自身のブラウザでは動いているので問題はないですwwww
・なんか他あったっけ?

最後になりますが、変数の設定とか適当杉・・・
この変数設定見たら、友人発狂しそうだwww
今気づいたけど、エラー処理が仕事してない(´・ェ・`)
めんどいし、また今度だね

今回はこんな感じで失礼します。



下記ソース




DependSpace様のゲーム発売情報を変換整形










当ページの説明

DependSpace[発売予定表]様で公開されているゲーム情報を整形して出力します。

下記のURLに公開されているゲームリスト(過去含む)のソースであれば解析が可能です。
http://www.nona.dti.ne.jp/d-space/release/index.html

整形後の出力データは可変ではありませんので汎用性は全くありません。

デザインが全くなっていないので、時間があれば手を加えていきたいと思います。


テキストエリアにソースを張り付けて下さい↓

整形後のデータが出力されます↓

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
スポンサーサイト

テーマ : ひとりごとのようなもの
ジャンル : 日記

JavaScriptでサムネイル画像のサイズを変更させる

前回紹介したように、サムネイル画像のサイズ変更を行うスクリプトを紹介します。

使用例としては、ブログのテンプレートを変えた時に、サムネイル画像が大きすぎて枠から出てしまう場合などに使用します。

変更箇所は、「var limitwd=350; // 画像の最大幅 この値を変更する」という部分の数値を変更します。


このスクリプトが行っている動作について簡単に説明します。
imgタグをすべて取得して、画像の横幅を取得しています。
自分で指定した横幅より大きい画像は、指定した横幅に変更され縦幅は比率を維持した状態で変更されます。


※注意
ブログを月別表示にしたりすると、1ページ当たりの記事の量が増えてしまいます。
画像などをたくさん掲載していると、処理に時間がかかる場合があります。
画像の掲載においては、やはり適切なサイズでサムネイルを作ることが推奨されます。


function ChangeimgSize() {
	var i;
	var img;
	var limitwd=350;	// 画像の最大幅 この値を変更する
	var tags = document.getElementsByTagName("img");

	if(!tags)return;
	
	for(i=0;ilimitwd) {
			tags[i].height=(img.height)/(img.width/limitwd);	// 縦横比をあわせる。
			tags[i].width=limitwd;	// 最大幅に変更
		}
	}
}

今回のスクリプトは、「http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1039614910」から転載させていただきました。

テーマ : コンピュータ
ジャンル : コンピュータ

範囲乱数公式の説明が無かったので自分用に書いておこうww

範囲乱数公式とは何か?
結論から言いますと、ある範囲の乱数を得ると言う事です。

今回は、具体的にサイコロの目である1~6までを返すプログラムで考えて行きます。

[ 範囲乱数公式 ]
最小値 + (int)( rand() * (最大値 - 最小値 + 1.0) / (1.0 + RAND_MAX) )
上記の公式で、ある範囲の乱数を求められます。
最小値は、乱数の最小値であり、最大値は、乱数の最大値を指定することになります。

これから上記の説明をしていきますが、式を少しずつ分解した状態で見て行きたいと思います。

次の式を見て下さい
rand() / RAND_MAX ・・・①

上記の式では、「0~1」までの値が返ってきます。
当然と言われれば当然でしょう。
rand()の値が0の時は当然0です。
また、rand()が取りうる値の最大値を返した場合、「RAND_MAX」自体がrand()の取りうる値の最大値を格納してういるので、割った値は1です。
rand()が、0~取りうる値の最大値までの値を返せば、割った答えは「0~1」と言う値が出ます。
よって、①式の値の範囲は「0~1」です。

①式では、サイコロの目の表現には程遠いです。
そこで次に考えるのが、サイコロの目である1~6までの範囲です。
次の式で幅を設定します。
rand() * (最大値 - 最小値 + 1.0) / RAND_MAX ・・・②

おいおい、「(最大値 - 最小値 + 1.0) ・・・②’」この式なんだよ! って思われた方いますと思いますが、落ち着いてください。
ここでは、サイコロの目である1~6までを乱数で得ようとしているので、最大値-最小値は分かるかと思います。 じゃあ、何故1足すの???

②式を分かりやすいように計算の順番を入れ替えてみると次のようになります。
※式を入れ替えることによって生じる誤差については無視できるものとします。
rand() / RAND_MAX * (最大値 - 最小値 + 1.0) ・・・②’’

これならわかるかと思います。
②’の値は、最大値6,最小値1なので6になります。

①式に②’を掛けています。
よって、①式が取りうる範囲である「0~1」が②’式を掛けることによって「0~6」までの値を取れることになります。

あれ、ここまで来れば、後は1足せば行けそうなのにそうすると範囲が「1~7」になってしまうよ~
そこでようやく、「(1.0 + RAND_MAX) ・・・③’」の出番です。
②式に③’を入れると
rand() * (最大値 - 最小値 + 1.0) / (1.0 + RAND_MAX) ・・・③

になります。
ああ、折角分かりかけてたのに・・・
全然分からなくなってしまったじゃないか!!!
と思った方落ち着いてください。
③の式が難しく感じるならこれはどうでしょうか?
rand() / (1.0 + RAND_MAX) ・・・③’’

①式と何が違うかと言いますと、「RAND_MAX」に1を足すことによって、③’’式の値が取りうる範囲は次のように変化します。
「0~0.9999・・・」実際は1に限りなく近くはなりますが、1の値は取りません。
何故なら、rand()が最大値をとっても「1.0 + RAND_MAX」の方が大きくなるためです。

ここまで来れば終盤ですので頑張ってください。
では、何故③’’で範囲を「0~0.9999・・・」にしたのかと言いますと、②式の説明の後に赤字で書いてある分があると思いますが、②式の範囲だと「0~6」まで取ってしまいます。
今回説明してきましたが、「(1.0 + RAND_MAX)」をすることによって、③式の値では「0~5.999・・・」の値の範囲までしか取りません。
要するに6の値は取らないということになります。

そして、もう大詰めですが、次に以下のようにします。
(int)( rand() * (最大値 - 最小値 + 1.0) / (1.0 + RAND_MAX) ) ・・・④

③式に(int)をつけてキャストしますと④式になります。
④式にする意味ですが、③式では値の範囲が「0~5.99999・・・」を取りますが、④式では「0~5」までしか取りません。
これは、(int)でキャストすることによって、小数点以下が切り捨てられるためです。

やっと最後になります
最小値 + (int)( rand() * (最大値 - 最小値 + 1.0) / (1.0 + RAND_MAX) ) ・・・公式

④式に最小値を足すことになっていますが、これでようやく範囲としては「1~6」までの値を取ります。
以上で説明を終わりますが、説明の順番を変えた方がいいかなと書き終わってから思ったりしました。

※コラム より精度を高くするには?「(1.0 + RAND_MAX)」
ここまで説明していて気付いたかもしれませんが、「RAND_MAX + 1」をするのは、③’’式の値が取りうる範囲を0以上であり限りなく1に近づけるが1を取らないようにするためにしています。
なら、rand()の最大値より微妙に大きい数字でもいいのではないか?
という疑問が起こった方がいらっしゃると思います。
それは正解です。
実際問題の精度で言うなら、1よりも0.1を足した方が当然1に近づきます。
精度を気にする方なら、③’’式を次のようにする方もいるかもしれません
rand() / (0.1 + RAND_MAX) ・・・③’’’

以下に、1~6までの乱数を1つ表示するサンプルを書いてみました。
srand()関数やプリプロセッサーの説明など、下記のソースに関しては説明を省略しますが、間違などありましたらコメントなりでお知らせいただければ助かります。


 
#include   <stdio.h>
#include   <stdlib.h>
#include   <time.h>

#define MIN 1
#define MAX 6

int main()
{
	srand((unsigned int)time(NULL));

	printf("%d\n", MIN + (int)(rand()*(MAX-MIN+1.0)/(1.0+RAND_MAX)));

	return 0;
}


範囲乱数公式 につきましては、以下のサイトにて使い方などが載っております。
下記のサイトでは使い方のみで説明が載っていなかったので、忘却防止も兼ねてメモ的な形で書きました。

http://homepage3.nifty.com/mmgames/c_guide/21-02.html#S3

テーマ : プログラミング
ジャンル : コンピュータ

暇だったので、汎用的比率計算 の解説

右側の汎用的比率計算のソースを公開します。
正直どうでもいいと思われますが、何だかんだ言って今まで1回もソースの説明したことないと思うのでwww
ランダムバナー表示のソースも説明してないしwww

下記のソースですが、すべてJavaScriptで書いています。
フォームのなどもJavaScript内で作成しています。
このような仕様にしたのは、外部参照するだけで利用できるの出来るので便利です。
この時点で言っている意味が分からない方もいると思います。
ようするに、フォームは
//フォームやボタン成型
より下に記述してる文で表現しています。
document.write()は主に表示などで使われる一般構文です。
分からない場合はググってください _(_^_)_
document.write()内に記述してるものは、単純にHTMLでフォームを作成しています。
HTMLフォームなどでググると出てくると思います。
ここまで、読んで分かったと思いますが、詳しい解説は一切していませんwww
早くもめんどくなったので簡単に流れだけ記述w

フォームが入力完了して、チェックボタンを押すと
ソース内の「onclick="check()"」に飛びます
//入力チェック正規表現しよう
function check(){・・・}
を実行します。
・・・はめんどいので省略
やってることは、0~9以外の文字入力を弾き、尚且つ0入力の場合はエラーメッセージを返しています。
上記の条件を正しく満たした場合、一番最後の「Calc();」により
//計算
function Calc(){・・・}
を実行しています。
ここでは、単純に計算&表示を行っています。
ちなみに、エラー時の処理は
//入力エラー時の処理
function clear(){・・・}
を実行しています。

説明もなんか適当で申し訳ないです。
困ったらググるかコメントか何かで聞いてもらえれば答えます。
最後に、このソースは私がすべて書いてますが、書き方がまずい場合とかはご指摘よろしくお願いします。

転載などはご自由にどうぞ!
以下よりソース

//グローバル領域をあまり使いたくないのだがこの場合は仕方ないよね?
var w;
var h;

//入力エラー時の処理
function clear(){
    document.all.nk.innerHTML = "";
    document.all.ah.innerHTML = "";
    document.form.w.value = "";
    document.form.h.value = "";
    alert("空白と0以外の半角数字を入力してください");
}

//計算
function Calc(){
    //変数宣言
    var x,y,mw,mh;

    //数値コピー
    x=w;
    y=h;

    //最大公約数計算 ユークリッドの互除法を使用
    while( 1 ){
            r = x%y;
            if(r == 0) break;
            x = y;
            y = r;
    }

    //アスペクト比の表示
    mw = w / y;
    mh = h / y;

//表示
document.all.nk.innerHTML = ">"+w+"*"+h+"\n";
document.all.ah.innerHTML = ">"+mw +":"+ mh;
}

//入力チェック正規表現しよう
function check(){
    //テキストボックスから値を数値で代入
    w = document.form.w.value;
    h = document.form.h.value;

    if( w.match( /[^0-9]+/ ) || h.match( /[^0-9]+/ ) )
        clear();
    else if( w==0 || h==0 )
            clear();
        else
            Calc();
}

//フォームやボタン成型
document.write('<form name="form">');
document.write('幅  <input type="text" size="20" name="w">');
document.write('<br>');
document.write('高さ <input type="text" size="20" name="h">');
document.write('<br>');
document.write('<input type="button" value="チェック" onclick="check()">');
document.write('</form>');
document.write('<br>');

document.write('入力解像度');
document.write('<br>');
document.write('<span id="nk"></span>');
document.write('<br>');
document.write('アスペクト比(横:縦)');
document.write('<br>');
document.write('<span id="ah"></span>');

テーマ : とりあえず書いとこ ~ф(゜゜)
ジャンル : 日記

ここで宣言してしまえwww

3月3日までにブログの上部にあるバナーを張る領域に、バナーに代わるものを置くことにします。
今まで構想は練ってたのだが、ホームページも残るところ現地取材とデバックだけなのでそっちはゆっくりやっていこうと思う。

現状の想定では、バナーに代わる代物を置いても閲覧時の負荷に変わりがないように調整しようと思っています。

何を作るか言ってなかったですが、形になった時点で具体的なことは報告したいと思います。
実現に向けての大きな課題は、サーバーがないんですよwww
サーバー負荷が高いので、条件に合うのがwww
まあ、がんばってみます。
完成してもすぐに飽きてしまうのがおちでしょうけれど・・・。

テーマ : 頑張れ自分。
ジャンル : 日記

がんばれPC

やっと半分までキタ━━(゚∀゚)━━ヨ
47日まで後23日とちょっと・・・
何がしたいのかということは47日起動出来た時に書きます。
まあかなりしょうもないことです
稼働時間を表示するプログラムを2つ起動していて、Verが違う物が2つあるということはまあ何となく結論が出そうですが・・・
現状ではver3.0をVectorに置いて貰っていますwww
使えないソフトですが、使ってやろうという方々はDLよろしくです はう~
http://www.vector.co.jp/soft/win95/personal/se464643.html


テーマ : 耐久日記 (,,゚Д゚) ガンガレ!
ジャンル : 日記

久しぶりにC言語をやって見た

大分前にWindowsの起動時間を調べるソフトっぽいのを作りました。
でも、47日しか測れませんwww
関数はtimeGetSystemTimeを使用しています。
精度云々はまた別の話です!
そんなんじゃ使い物にならないのにソフトとしてVectorに堂々と登録してしまったわけですwww
流石にそのままにしておくのも何なので、64ビットで処理させるように変更中です
関数はQueryPerformanceCounterとQueryPerformanceFrequencyを使用して、起動時間を出しています。
以下超簡単なサンプル
使いたい人はどぞ!
コンソール用です
細かい仕様などは説明しませんが、コメントに書いてもらえれば分かる範囲で答えます

#include <stdio.h>
#include <windows.h>

int main()
{
	LARGE_INTEGER i64,h64;
	LONGLONG work1,work2,h1,m1,s1;

	for(int i=1;i<=100;i++){
	QueryPerformanceCounter(&i64);
	QueryPerformanceFrequency(&h64);
	
	//ミリ秒
	work1 = i64.QuadPart*1000 / h64.QuadPart;
	//秒
	work2 = i64.QuadPart / h64.QuadPart;

	printf("LONGLONG=%lld\n" , work1);
	printf("LONGLONG=%lld\n" , work2);
	Sleep(100);
	}

	return 0;
}

テーマ : プログラミング
ジャンル : コンピュータ

やっぱりプログラムwww?

よし、全くが出来る気がしないがC++の勉強でも始めます。
Javaの授業があり、世の中の流れは当の昔からオブジェクト指向だった・・・
C言語は、手続き型プログラミング・命令型プログラミングと呼ばれております。
JavaやC++はオブジェクト指向型の言語で、システム開発からアプリケーション開発などもこの指向型の言語で作られています。

C++を勉強するのはいいが、Windowsのアプリケーションが作れるまで一体何年かかるのかwww
とりあえず、本買うまでネットなどで勉強することにします

テーマ : どうでもいい報告
ジャンル : 日記

プロフィール

agpm

Author:agpm
最近は、ゲーム中心にやっています。
アニメなども見てますが、そこまで詳しくはないです<(_ _)>
更新は気分しだいで、頻度にはかなり差があります

リンクフリーなのでどんどんして頂けると管理人はうれしいです
相互リンクでもOK


連絡こちら↓
メールフォームはここ

PCのスペック公開

リンク
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
最新コメント
月別アーカイブ
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。