コケムスシェルター

ボーリング

久々にボーリングに行ってきた。1年ぶりくらい?

スコアは80、99、123、86、79、109の6ゲームアベレージ96
まぁいつもどおり。だいたい100いかないくらい。上達しねぇなー

友達は200とかいってたがw
どんだけうまいねん!

2013年5月【読んだ本】

舟を編む
舟を編む 三浦 しをん

光文社 2011-09-17
売り上げランキング : 178

Amazonで詳しく見る by G-Tools

2012年本屋大賞 大賞受賞
玄武書房に勤める馬締光也は営業部では変人として持て余されていたが、新しい辞書『大渡海』編纂メンバーとして辞書編集部に迎えられる。個性的な面々の中で、馬締は辞書の世界に没頭する。言葉という絆を得て、彼らの人生が優しく編み上げられていく。しかし、問題が山積みの辞書編集部。果たして『大渡海』は完成するのか──。言葉への敬意、不完全な人間たちへの愛おしさを謳いあげる三浦しをんの最新長編小説。

面白い。
しかし内容はかなり地味。十数年かけて辞書を作る話。超地味。
でも時の流れがはやいのもあって飽きないし、主人公のまじめさんを始めとする各各のキャラが立ってて良い。是非映画も見てみたい。
あと、読み終わって本を閉じて「なるほどなー」とつぶやいてしまった。これは文庫化できないわ。単行本買って損はない!!

ワンパンマン 1 (ジャンプコミックス)
ワンパンマン 1 (ジャンプコミックス) 村田 雄介 ONE

集英社 2012-12-04
売り上げランキング :

Amazonで詳しく見る by G-Tools

1~3巻読んだ。
もともとウェブコミックが原作なんだとか↓
http://galaxyheavyblow.web.fc2.com/

やー面白かった。

ドS刑事 風が吹けば桶屋が儲かる殺人事件 (幻冬舎文庫)
ドS刑事 風が吹けば桶屋が儲かる殺人事件 (幻冬舎文庫) 七尾 与史

幻冬舎 2013-04-10
売り上げランキング : 120665

Amazonで詳しく見る by G-Tools

静岡県浜松市で起こった残虐な連続放火殺人事件。被害者は元ヤクザ、詐欺師、OLなど様々で何の手がかりもない。しかし「ドS」な美人刑事・黒井マヤは現場で「死体に萌える」ばかりでやる気ゼロ。振り回されっぱなしの相棒・代官山脩介は被害者の間で受け渡しされる「悪意のバトン」の存在に気づくが――。最強ユーモアミステリー、シリーズ第1作。

タイトル詐欺。「ドS」と言うよりも「猟奇的」な女刑事。
キャラが立ってて面白いし、ストーリーの展開も面白かった。
過去作のサブリミナル的な突飛ミステリかとおもいきや、筋が通ってて良い。
ギャグめなトリックも好きだけど、良い意味で裏切られた。

さよならドビュッシー (宝島社文庫)
さよならドビュッシー (宝島社文庫) 中山 七里

宝島社 2011-01-12
売り上げランキング : 39230

Amazonで詳しく見る by G-Tools

本屋で表紙買い。
音楽家を目指す女の子が~みたいな事書いてあったから、『のだめ』的な話を想像して読んでたら、まさかのミステリー。
「お、イケメン出てきた!ラブい展開か……?」と思ったらいきなり火事で人死ぬwww

でもともかくは面白い。
特にラストが好き。伏線を回収して、すごくキレイに終わる。

2013年春アニメ

『ゆゆ式』
ゆるい。

『はたらく魔王さま!』☆☆☆
ゆうしゃかわいいし、ギャグも冴えてて面白い。
今期でいちばん好き。

『断裁分離のクライムエッジ』☆☆
1話面白すぎ。ほこたて対決。
ヒロインの女の子もイマコさんみたいでかわいい。

『とある科学の超電磁砲』
二期。妹かわいい。

『やはり俺の青春ラブコメはまちがっている』☆☆
面白い。昔原作読んだ。

『惡の華』☆☆
原作好き。楽しみ。演出が楽しい。

『変態王子と笑わない猫。』
設定がなかなか良い。ED可愛い。

『波打際のむろみさん』☆☆
ショートアニメ。ギャグ。面白い。

『よんでますよ、アザゼルさん。Z』
第2期。相変わらず面白い。たまに見逃す。

『進撃の巨人』☆☆
宣伝が大げさでどうなのかと思ってたけど、面白い。
映画みたいなクオリティ。

『俺の妹がこんなに可愛いわけがない。』☆☆
二期。あやせもっとあやせもっと。

アンテナサイト入門【PHP】

アンテナサイトを作ってみる。
→完成サンプル

『simplexml_load_file』でアンテナサイトを作る

まず、アンテナサイトの基本、RSSを読み込んで配信してみる。
外部RSSをPHPで取得するには、関数「simplexml_load_file」を使う。
※「simplexml_load_file」はサーバーのphp.ini設定で「allow_url_fopen」を有効にしないと使えないので注意

タイトル:よくわかるPHPの教科書

著者:たにぐち まこと

出版社:毎日コミュニケーションズ

発行日:2010-09-14

入門書『よくわかるPHPの教科書』のサンプルを参考に書く↓

<?php
$xml = simplexml_load_file('http://rss.fnn-news.com/fnn_news.xml');
echo "<ul>";   
foreach($xml->channel->item as $entry){
	$entrydate = date ( "Y.m.d",strtotime ( $entry->pubDate ) );
	echo "<li>$entrydate<a href='$entry->link'>$entry->title</a></li>";
}
echo "</ul>";
?>

これで日付と、リンク付きの記事タイトルがリスト表示される。
→テスト1

画像取得

文字だけではさみしいので、画像も表示してみる。
画像は、「preg_match」で取得↓

<?php
$xml = simplexml_load_file('http://rss.fnn-news.com/fnn_news.xml');

foreach($xml->channel->item as $entry){
echo "<article>"; 

//サイトリンク
$site_title = $xml->channel->title;
$site_link = $xml->channel->link;
$site_titlelink = "<a href='$site_link'>$site_title</a>";
echo $site_titlelink;

//日付
$date = date ( "Y.m.d",strtotime ( $entry->pubDate ) );
echo $date;

//記事リンク
$titlelink = "<a href='$entry->link'>$entry->title</a>";
echo $titlelink;

//画像
preg_match('/<img.*>/i', $entry->description, $entryimg);
echo $entryimg[0];

echo "</article>";

}
?>

→テスト3

『MagpieRSS』でアンテナサイトを作る

アンテナサイトを作るなら、複数のRSSを読み込み、日付順に並び替える必要がある。また表示速度を上げるためにキャッシュ機能も欲しい。
「simplexml_load_file」で複数読み込み、並び替えて、「cron」で定期更新して~云々。という方法もある。
が、今回はライブラリ(MagpieRSS)の力を借りる。

最終コード(15.06.21修正)↓

<?php

//RSS
$rssUrl=array(
'http://blog.livedoor.jp/news4vip2/index.rdf',//ニュー速クオリティ
'http://himasoku.com/index.rdf',//ひま速
'http://kanasoku.info/index.rdf',//カナ速
'http://workingnews.blog117.fc2.com/?xml',//働くモノニュース
'http://blog.livedoor.jp/dqnplus/index.rdf',//痛いニュース
'http://majikichi.com/index.rdf',//マジキチ速報
''
);

//MagpieRSS
require_once('../magpierss-0.72/rss_fetch.inc');//MagpieRSSロード※パス指定注意
define('MAGPIE_OUTPUT_ENCODING','UTF-8');//Encode
define('MAGPIE_CACHE_ON', false);//Cacheを残す時間

//配列編集
foreach ($rssUrl as $no => $rss_url) {
	$rss = @fetch_rss($rss_url);
	if ($rss != NULL) {
		for ($i=0; $i<count($rss->items); $i++) {
		$rss->items[$i]["site_title"] = $rss->channel["title"];
		$rss->items[$i]["site_link"] = $rss->channel["link"];
		}
	$rssItemsArray[] = $rss->items;
	}
}//--▲foreach--
$concatArray = array();
for($i=0;$i<count($rssItemsArray);$i++){
$concatArray = array_merge($concatArray,$rssItemsArray[$i]);}
foreach ($concatArray as $no => $values) {
 
//RSSの種類によって日付を取得
if($values['published']){$date = $values['published'];}//Atom1.0
elseif($values['dc']['date']){$date = $values['dc']['date'];}//RSS1.0
elseif($values['pubdate']){$date = $values['pubdate'];}//RSS2.0
$date=date("Y-m-d H:i:s",strtotime($date));//形式を揃える
 
//Filter
$nowtime = date("Y-m-d H:i:s",strtotime( "now" ));//現在時刻の取得
if($date > $nowtime){//未来記事の排除
}elseif(preg_match("/AD/", $values["title"])){//広告記事の排除
}elseif(preg_match("/PR/", $values["title"])){
}else{
 
//値の定義
$title=$values["title"];
$link=$values["link"];
$site_title=$values["site_title"];
$site_link=$values["site_link"];
 
//画像取得
$content=$values["content"]["encoded"];
preg_match('/<img.*>/i', $content, $img_all);
if(empty($img_all[0])) {
$content = $values['description'];
preg_match('/<img.*>/i', $content, $img_all);
}
preg_match('/http.*?(\.gif|\.png|\.jpg|\.jpeg$|\.bmp)/i', $img_all[0], $gazo);
if(empty($gazo[0])) {$gazo = "http://azaz.clouver.jp/antenna/noimage.png";}
else{$gazo = $gazo[0];}
 
//配列
$rssArray[]=array($date, $title, $link, $site_title, $site_link,$gazo);
}//--▲if--Filter--
}//--▲foreach--

//配列設定
$num = 50;//最大件数
if(count($rssArray)>$num){$count=$num;}else{$count=count($rssArray);}//取得件数優先
rsort($rssArray);//並び替え

//HTML整形
for ($i=0; $i<$count; $i++) {
$date=date("m/d H:i",strtotime($rssArray[$i][0]));
$title=$rssArray[$i][1];
$link=$rssArray[$i][2];
$site_title=$rssArray[$i][3];
$site_link=$rssArray[$i][4];
$gazo=$rssArray[$i][5];
	$datelink = "<div class='date'>$date</div>";
	$gazolink = "<a target='_blank' href='$link'><div class='trim'><img src='$gazo' /></div></a>";
	$titlelink = "<div class='title'><a href='$link'>$title</a></div>";
	$site_titlelink = "<div class='site_title'><a href='$site_link'>$date - [$site_title]</a></div>";
	echo "<article>$gazolink$titlelink$site_titlelink</article>";
}//--▲for--
?>

→完成サンプル

プログラムコード補足

基本は「5分で作れるアンテナサイト!RSSを取得して更新順に表示させてみた。(http://wcb.jp)」を参考に。
追加機能は、画像の取得、未来記事の削除。

未来記事の削除

未来記事は、日付でフィルター↓

//Filter
$nowtime = date("Y-m-d H:i:s",strtotime( "now" ));//現在時刻の取得
if($date > $nowtime){}

画像取得

「if」と「preg_match」多用で処理しているが、…軽量化の余地ありそう。
1.<content>内からを探す→画像取得OK
↓見つからない時
2.<description>内から<img>を探す→画像取得OK
↓見つからない時
3.「noimage.png」を表示

//画像取得
$content=$values["content"]["encoded"];
preg_match('/<img.*>/i', $content, $img_all);
if(empty($img_all[0])) {
$content = $values['description'];
preg_match('/<img.*>/i', $content, $img_all);
}
preg_match('/http.*?(\.gif|\.png|\.jpg|\.jpeg$|\.bmp)/i', $img_all[0], $gazo);
if(empty($gazo[0])) {$gazo = "http://azaz.clouver.jp/antenna/noimage.png";}
else{$gazo = $gazo[0];}

キャッシュ設定

MagpieRSSの初期設定では3600秒(=60分=1時間)。キャッシュは、好きな数字に変更可↓

define('MAGPIE_CACHE_AGE','1800');//cacheを1800秒記録
define('MAGPIE_CACHE_ON', false);//cacheを残さない

その他

補足・注意点

・当記事で紹介しているプログラムは、phpが動作する環境が必要です。
・『MagpieRSS』も公式サイト(http://sourceforge.net/projects/magpierss/files/)から入手してください。最新バージョンは『magpierss-0.72』です。(2013年現在)
・アメーバブログなど、アクセスを制限しているサイトの画像表示はできません。
・Atomの画像取得には未対応。

参考・関連リンク

アンテナサイト作成[BABEL]
MagpieRSSを利用すると、RSSの作成が簡単に行える[はじめてのWordPressまとめ]
MagpieRSSとMixItUpを使ってレスポンシブなアンテナサイトをつくってみた。その1[うぇぶ屋がとんだ]