Yahooキーフレーズ

文章からキーフレーズを抽出し、重要順にならべて返す。
下記サンプルはAjaxにてキーフレーズを取得する方法である。

サンプル

	function test1(){
	
		var text1 = "人民の、人民による、人民のための政治";
		
		var data = {
			"appid":アプリケーションID※,
			"sentence":text1,
			"output":"json",
			"max-result":10,
			};
		
		var url = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract";
	
	
		$.ajax({
			url: url,
			data: data,
			cache: false,
			dataType: "jsonp",
			success: function(str_json, type) {
				console.log(str_json);
				
			},
			error: function(xmlHttpRequest, textStatus, errorThrown){
				$('#res').html(xmlHttpRequest.responseText);
				
			}
		});
	}	
	
コンソール出力
	Object
		人民: 100
		政治: 35
	


サンプル

参考リンク

公式ドキュメント
Yahooキーフレーズ抽出APIメモ (use jQuery)


WikipediaのAPIをajaxで利用する | MediaWiki API

MediaWiki APIを使えば、Wikipedia内のページ情報を取得できる。
$.ajaxを通してWikipadiaのページ情報を取得する方法を、下記のサンプルに示す。
なお、ページ情報はWiki記法またはマークダウン記法で記載されているので、HTML形式に変換するパース処理が必要になる。
当サンプルでは、Wiki記法のパース処理を割愛する。

注意

Wikipediaサーバーに負担をかけないよう、リクエストは少なめにすること。1分に30リクエストくらいに抑える。

	function test1(){
	
		var text1 = '山原';
		
		var data = {
				"titles":text1,
				"format":"json",
			};
		
		var url="http://ja.wikipedia.org/w/api.php?action=query&export";
	
		// AJAX非同期通信
		$.ajax({
			url: url,
			data: data,
			cache: false,
			dataType: "jsonp",
			success: function(json, type) {
				
				// JSONレスポンスから、XML形式の文章情報を取得する。
				var xmlDoc = json['query']['export']['*'];
	
				// 文章情報XMLをjQueryで扱えるようにする。
				var xml = $(xmlDoc);
	
				// XMLからtextタグ内テキストをページ情報として取得する。
				var page = xml.find('text').html();
	
				// ページ情報はWiki記法なる方法で記述されている。(もしくはマークダウン記法)
				console.log(page);
				
				// ※ Wiki記法をHTML形式にパースする処理が必要であるが、このソースコードでは割愛する。
	
			},
			error: function(xmlHttpRequest, textStatus, errorThrown){
				$('#res').html(xmlHttpRequest.responseText);
				
			}
		});
	}
	


参考サイト

参考リンク

MediaWiki API ヘルプ
API:メイン ページ


変数の型を調べる | typeof

typeof演算子で変数の型を取得できる。
使い方が特殊なので注意。

var t = typeof v;

各型を検証
	// 文字列
	var v = "hello world";
	var typ = typeof v;
	console.log('文字列→' + typ);
	
	// 数値
	var v = 123;
	var typ = typeof v;
	console.log('数値→'+typ);
	
	// BOOL
	var v = true;
	var typ = typeof v;
	console.log('BOOL →'+typ);
	
	// 日付
	var v = new Date().toLocaleDateString();
	var typ = typeof v;
	console.log('日付→'+typ);
	
	// 配列
	var v = [1,2,3];
	var typ = typeof v;
	console.log('配列→' + typ);
	
	// 関数
	var v = function(){var dummy};
	var typ = typeof v;
	console.log('関数→' + typ);
	
	// 正規表現
	var v = /^d/;
	var typ = typeof v;
	console.log('正規表現→' + typ);
	
	// オブジェクト
	var v = {};
	var typ = typeof v;
	console.log('オブジェクト→' + typ);
	
	// undefined
	var v = undefined;
	var typ = typeof v;
	console.log('undefined→' + typ);
	
	// NULL
	var v = null;
	var typ = typeof v;
	console.log('NULL→' + typ);
	
	// 未定義
	var typ = typeof xxx;
	console.log('未定義→' + typ);

	// 例外エラー
	try{
		var dummy = JSON.parse("dummy");//わざとエラー
	}catch(e){
		var typ = typeof e;
		console.log('例外エラー'+typ);
	}	
	

コンソール出力
	文字列→string
	数値→number
	BOOL →boolean
	日付→string
	配列→object
	関数→function
	正規表現→object
	オブジェクト→object
	undefined→undefined
	NULL→object
	未定義→undefined
	例外エラーobject
	


文字列から先頭の1文字を取得する

var s1 = str.charAt(0);



先頭の一文字を削除する


	var str = "大トカゲ";
	var s1 = str.substr(1);
	console.log(s1);// → トカゲ
	

文字列から末尾の1文字を取得する

var s1 = str.slice(-1);



末尾の一文字を削除する

ソースコード

	var str = "カモメ群";
	var str = str.substr(0,str.length-1);
	console.log(str); // → カモメ
	

連想配列内のデータをまとめてXSSサニタイズ

xssSanitaizeAll関数は、配列またはオブジェクト型のデータを、まとめてXSSサニタイズする。
	/**
	* データをXSSサニタイズする
	* 
	* Objectや配列型にも対応している。
	* @param multi サニタイズ前のデータ
	* @return サイニタイズ後のデータ
	* 
	*/
	function xssSanitaizeAll(data){
		
		if(typeof data == 'object'){
			for(k in data){
				data[k] = xssSanitaizeAll(data[k]);
			}
		}
		else if (typeof data == 'string'){
			if(data.indexOf('<') != -1){
				data = data.replace(/</g, '&lt;'). replace(/>/g,'&gt;');
				
			}
		}
		
		return data;
		
	}
	

使い方
	var data={'kani':"<input value='xxx' />",'neko':'ねこ','musi':{'bata':'バッタ','kanabun':"x<input type='button'>x"}};
	
	data = xssSanitaizeAll(data);
	console.log(data);
	

出力

サニタイズ前
	kani:
	neko:ねこ
		bata:バッタ
		kanabun:xx
	

サニタイズ後
	kani:<input value='xxx' />
	neko:ねこ
		bata:バッタ
		kanabun:x<input type='button'>x
	

サンプル


オブジェクト型データのダンプを取得

オブジェクト型データのダンプを取得する関数
	/*
	* オブジェクト型データのダンプを取得する
	*
	* @param obj ダンプ対象オブジェクト(配列やプリミティブ型もOK)
	* @param key 内部的に使用しているので省略する
	* @param deep 上に同じ
	* @return string ダンプ文字列
	*/
	function getObjDump(obj,key,deep){
		
		var str ="";
		if(deep == undefined){
			deep = 0;
		}

		if(typeof obj == 'object'){
			deep++;
			for(k in obj){
				
				str+= getObjDump(obj[k],k,deep);
			}
			
		}else{
			
			// 段落用のタブスペースを作成
			var sp ="";
			for(var i=0 ; i < deep ; i++){
				sp += "¥t";
			}
			
			// ダンプするデータを食い立
			if(key==undefined){
				str = sp + obj + '¥n';
			}else{
				str = sp + key + ':' + obj + '¥n';
			}
			
		}
		
		return str;
	}
	

使用例

	var data={'kani':"かに",'neko':'ねこ','musi':{'bata':'バッタ','kanabun':"カナブン"}};
	var dump_str = getObjDump(data);
	console.log(dump_str);
	

出力
	kani:かに
	neko:ねこ
		bata:バッタ
		kanabun:カナブン
	


指定個数のタブスペースを作成する関数

	// n個だけタブを連結し、結果をタブ連結文字として返す。
	function tabSpace(n){
		var str ="";
		for(var i=0 ; i < n ; i++){
			str += "\t";
		}
		return str;
	}
	


プロトコルおよびホスト名を取得 | location

JavaScript

	var href = location.href; // 完全なURL
	var hash = location.hash; // ハッシュ、またはフラグメント。
	var host = location.host; // ホスト名。ポート番号付き。
	var hostname = location.hostname; // ホスト名
	var pathname = location.pathname; // 相対パス
	var port = location.port; // ポート番号
	var protocol = location.protocol; // プロトコル
	var search = location.search; // クエリ
	

解説

下記URLでアクセスしているとき、location でサーバーに関する様々なパラメータが取得できる。
http://localhost/sample/js/location/location.html?a=1&b=2#xxx
プロパティ説明
href完全なURLhttp://localhost/sample/js/location/location.html?a=1&b=2#xxx
hashハッシュ、またはフラグメント。#xxx
hostホスト名。ポート番号付き。localhost
hostnameホスト名localhost
pathname相対パス/sample/js/location/location.html
portポート番号
protocolプロトコルhttp:
searchクエリ

サンプル



まとめて変数宣言

コンマでつなげ、まとめて変数宣言をすることができる。

一つずつ宣言
	var a=1;
	var b=2;
	var c=3;
	

まとめて宣言
	var a=1,b=2,c=3;