へぼいいいわけ このページをアンテナに追加 RSSフィード

2008年08月02日

javascriptでAmazonアソシエイト!

なんか発掘したので張ってみる。

(function(){

// 配列コピー
Array.prototype.clone = function(){
	return Array.apply(null,this);
}

var oNkii = window.oNkii = function(url){
	this.url = "アソシエイトのアレ。XMLを返してくれるURLをぶっ込む";
	this.xml = {};
	this.Regs = {
		tag	: /(<(\w+)(\s+[^>]*)?>)(.*?)(<\/\2>)/
	,	option	: /(\w+)="(.+?)"/
	}
	this.ajaxContent();
};
oNkii.prototype = {
	xmlParse: function(http){
		var lineData = http.responseText;
		var self = this;
		var regs = this.Regs;
		var opt = function(obj, p1, p2){
			var i = 0;
			obj[p1] = {};
			while(1){
				if(p2.match(regs.option)){
					obj[p1][RegExp.$1] = RegExp.$2;
					p2 = p2.replace(regs.option, '');
					i++;
				} else {
					if(i == 0){
						obj[p1] = p2;
					}
					break;
				}
			}
			return obj;
		}
		var con = function(p1, p2, p3){
			var obj = {};
			var i = 0;
			while(1){
				if(p3.match(regs.tag)){
					p3 = p3.replace(regs.tag, '');
					obj = extend(obj, con(RegExp.$2, RegExp.$3, RegExp.$4));
				} else {
					if(i == 0){
						if(p3){
							obj[p1] = p3;
						} else {
							obj = opt(obj, p1, p2);
						}
					}
					break;
				}
				i++;
			}
			return obj;
		};
		var extend = function(pri, obj){
			var hash;
			var length;
			var tmp = {};
			for(hash in obj){
				if(pri[hash] instanceof Array){
					length = pri[hash].length;
					if(obj[hash] instanceof Array){
						pri[hash] = pri[hash].concat(obj[hash]);
					} else if(typeof obj[hash] == "object"){
						pri[hash][length] = {};
						pri[hash][length] = extend(pri[hash][length], obj[hash]);
					} else {
						pri[hash][length] = obj[hash];
					}
				} else if(typeof pri[hash] == "object"){
					tmp = {};
					tmp = extend(tmp, pri[hash]);
					pri[hash] = [];
					pri[hash][0] = {};
					pri[hash][0] = extend(pri[hash][0], tmp);
					if(obj[hash] instanceof Array){
						pri[hash] = pri[hash].concat(obj[hash]);
					} else if(typeof obj[hash] == "object"){
						pri[hash][1] = {};
						pri[hash][1] = extend(pri[hash][1], obj[hash]);
					} else {
						pri[hash][1] = obj[hash];
					}
				} else if(typeof pri[hash] == "undefined"){
					if(obj[hash] instanceof Array){
						pri[hash] = obj[hash].clone();
					} else if(typeof obj[hash] == "object"){
						pri[hash] = {};
						pri[hash] = extend(pri[hash], obj[hash]);
					} else {
						pri[hash] = obj[hash];
					}
				} else {
					tmp = pri[hash];
					pri[hash] = [];
					pri[hash][0] = tmp;
					if(obj[hash] instanceof Array){
						pri[hash] = pri[hash].concat(obj[hash]);
					} else if(typeof obj[hash] == "object"){
						pri[hash][1] = {};
						pri[hash][1] = extend(pri[hash][1], obj[hash]);
					} else {
						pri[hash][1] = obj[hash];
					}
				}
			}
			return pri;
		};
		var mobj = {};
		while(lineData.match(regs.tag)){
			if(typeof mobj[RegExp.$2] == "undefined"){
				mobj[RegExp.$2] = {};
			}
			mobj[RegExp.$2] = extend(mobj[RegExp.$2], con(RegExp.$2, RegExp.$3, RegExp.$4));
			lineData = lineData.replace(regs.tag, '');
		}
		this.xml = extend(this.xml, mobj);
	},
	
	ajaxContent: function(path){
		var xml = null;
		var self = this;
		
		try {
			xml = new XMLHttpRequest();
		} catch(e) {
			try {
				xml = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					xml = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {
					xml = null;
				}
			}
		}
		if(xml){
			xml.onreadystatechange = function(){
				if(xml.readyState == 4 && xml.status == 200){
					self.xmlParse(xml);
				}
			};
			xml.open("GET", this.url, true);
			xml.send('');
		}
	}
}

})();

たぶんこれを書いたやつは頭おかしい


正規表現がおかしいので正常に動作しません。

2008年07月21日

サイト一部移転できました

100GB程のデータをwww.heiwaboke.netからunkar.jpにこの3日間の間に移動することができたので、2ちゃんねるを表示するスクリプトの部分だけはunkar.jpに飛ばすようにしました。

unkar.jpにはトップページがまだないので、そのうち作成するつもり。


とりあえずリンク

ヽ(・∀・)ノ●うんかー02

うんかーJS

何日か前のエントリーでかなり時間がかかりそうとか言っていたけど

100GBのデータも本気を出せば2日くらいで移動できました。

まずgzip圧縮して100GBを30GBくらいにしたら

あとはひたすらwgetダウンロード解凍を繰り返す


要はやる気の問題ですね。

2008年07月16日

firefox3でフレームがうまく表示できないんですが

画面を三分割するフレームを二つまでしか認識してくれない。

targetでフレームを指定する場合、3つ目のフレームは認識されずにタブ*1で開いてしまう。

比較的どうでもいいっすね。

追記

Tab Mix Plusとかいうアドオンが原因だったようです

*1:タブにもならずに普通に上書き?

2008年07月01日

移転準備中

www.heiwaboke.netから2chのdatを移している最中なんですが、元が100GB以上のデータなのでかなり時間がかかっています。どうなることやら。