月別アーカイブ: 2013年6月

Rの参考書

http://www.oreilly.co.jp/books/9784873115795/

http://www.amazon.co.jp/gp/product/4873114705?ie=UTF8&tag=afimluseimi-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4873114705

http://www.amazon.co.jp/%E9%9B%86%E5%90%88%E7%9F%A5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Toby-Segaran/dp/product-description/4873113644/ref=dp_proddesc_0?ie=UTF8&n=465392&s=books

http://www.is.titech.ac.jp/is-wiki/?maselab%2FR#e5b82479

http://www.oreilly.co.jp/books/9784873114705/

オライリーの書籍「入門機械学習」について

・S言語とはR言語の元になった言語

・線形回帰とは

http://www.teradata-j.com/library/ma/ins_1309.html

・R言語のインストール方法

http://www.okada.jp.org/RWiki/?R%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB#pbac840c

http://essrc.hyogo-u.ac.jp/cran/

・本書でpackage_installer.Rについて触れているが、このソースコードが記載されているのサイトURLが記載されていなかったので、調べた結果以下のURLから取得出来る

https://github.com/johnmyleswhite/ML_for_Hackers

・IDEは以下の物を使用する

http://www.rstudio.com/ide/

・参考になったサイト

http://sssslide.com/www.slideshare.net/KazufumiOhkawa/12-20049278

http://atnd.org/events/38337

・ドット文字「.」について

ドット文字は単語間の区切り文字で、変数名に入れることが出来る。ただし、変数名の先頭には入れる事は出来ない。javaでは変数をredAppleと書いて区切り文字に大文字を使っていたが、R言語ではred.appleと書く事が出来る。

・ドルマークについて

データフレームの中のカラム変数を指定するためには、データフレームを明示的に指定した後にドルマーク”$”で区切る必要があります。by http://www.atmarkit.co.jp/ait/articles/1008/20/news092.html

・コロンについて

http://d.hatena.ne.jp/myopomme/20110417/1303006942

・忘れやすい行列の積の計算の覚え方

http://d.hatena.ne.jp/tackngybe/20101109/1289241733

http://naop.jp/text/c/gyouretu3.html

・R言語の入門サイト

http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html

・ベクトルと行列の積

ベクトルは行数または列数が1の行列として扱うことができますから、ベクトルと行列の積も行列同士の積と同じように定義することができます。by http://www.snap-tck.com/room04/c01/matrix/matrix02.html

・関数の戻り値、return()関数について

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/31.html

・分散の求め方について

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1354421658

・paste関数について

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/17.html

・sapply,lapplyについて

http://d.hatena.ne.jp/myopomme/20111202/1322839101

http://d.hatena.ne.jp/myopomme/20111201/1322751032

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/24.html

・prod関数について

http://help.scilab.org/docs/5.3.2/ja_JP/prod.html

・中央値について

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1074509460

・行列の作成

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/19.html

・length()について

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/12.html

・name属性について

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/26.html

 

Google Safe Browsing APIについて

http://takahitokikuchi.poitan.net/2011/08/19/google-safe-browsing-api%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/

https://developers.google.com/safe-browsing/lookup_guide

・GoogleアカウントからAPIキーを取得しなければならない

・APIキー、一つにつき一日に10,000リクエストまで出来る

・GETは一つのURLしかリクエスト出来ないが、POSTの場合は一度に500までリクエスト出来る。

・なので実質一日に10,000*500 のURLを解析する事が出来る。

・レスポンスコードが200の場合はURLの中に一つはマルウェアかフィッシングサイトURLが含まれている。204の場合は一つも含まれていないので、BODY部分は何も返されない。その他のエラーコードはGoogle側のシステムエラーかリクエストパラメーターエラー。

<?php
class GoogleSafeBrowsing {
	
	private $apikey = "";//APIキーを設定
	
	/**
	 * URLをチェックしマルウェアサイトとフィッシングサイトのURLのみを返す。
	 * @param unknown_type $checkUrls 調べたい複数のURLを配列で渡す。
	 * @return NULL|multitype: nullの場合は何らかのエラーが発生。配列の中身が空の場合は不正なURLは一つも検出されなかったという事。
	 */
	function checkUrls($checkUrls){

		$postField = count($checkUrls) . "\n" . implode("\n", $checkUrls);
		$url = "https://sb-ssl.google.com/safebrowsing/api/lookup?client=api&apikey=" . $this->apikey . "&appver=1.5.2&pver=3.0";
		$ch = curl_init ();
		curl_setopt ($ch, CURLOPT_URL, $url);
		curl_setopt ($ch, CURLOPT_HEADER, 1);//HEADERも取得する
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//TRUE を設定すると、 curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
		curl_setopt ($ch,CURLOPT_POST,1);//POSTをするためのフラグを立てる
		curl_setopt ($ch,CURLOPT_POSTFIELDS,$postField);
		$data = curl_exec ($ch);
		$info = curl_getinfo ($ch);
		curl_close ($ch);

		$httpCode = $info['http_code'];//HTTPステータスコードを取得
		$body = substr ($data, $info["header_size"]);// BODY部分を取得
		$results = explode("\n", $body);

		if($httpCode === 200){
			foreach ($checkUrls as $i => $non){
				if($results[$i] == "ok"){
					unset($checkUrls[$i]);
				}
			}
		}else if($httpCode === 204){
			$checkUrls = array();
		}else{
			return null;
		}

		return $checkUrls;
	}
}
$GSB = new GoogleSafeBrowsing();
$checkUrls = array("http://bibouroku.viratube.com/");
print_r($GSB->checkUrls($checkUrls));
?>

Simple Html Dom Paserのメモリリークについて

生成したオブジェクトは必ず以下のようにして破棄しないとPHPのバージョンによってはメモリリークする。実際開発側とサーバー側のPHPのバージョンの違いでメモリリークした。by http://simplehtmldom.sourceforge.net/manual_faq.htm#memory_leak

$html = file_get_html(...);
// do something...
$html->clear();
unset($html);