pingサーバを作ってみた

2015.05.06 Wednesday | by こも
pingサーバを作ってみました。

正確には、Pingを受け取るコードを書いてみた。…という方が正しいかもしれません。
内容は全然濃くないです(^^;;


やりたかったこと

複数の人が複数のブログを書いています。
記事を投稿した直後に別のサーバでその記事をキュレーション(まとめ)して付加価値をつけたいという思いがありました。


考えたアプローチ

1. 各ブログのpingの送信先の設定に、自社サーバのURLを追加してもらい、ブログを更新すると通知されるようにしてもらう
2. 自社サーバでpingを受け取る
3. 受け取った内容を解析して、必要な情報を取得・DBに蓄積する


今回やったこと

「2. 自社サーバでpingを受け取る」の部分のコードを書いてみました。

pingといってもPOSTメソッドで情報を送っているだけなので、受信側のコードは極めてシンプルです。
とえりあえず、受け取った情報をinput.txtというファイルに書き出す処理にしてみました。

最後にpingを受け取ってエラーがない旨のレスポンスを返します。
(とりあえずエラーがないという前提のレスポンスです。必要に応じて要変更★)

<?php
$result = mb_convert_encoding(file_get_contents("php://input"), "UTF-8", "auto");
file_put_contents('input.txt', $result);

header("Content-Type: text/xml");
echo "<?xml version='1.0'?>";
echo "<methodResponse>";
echo "<params><param><value>";
echo "<struct>";
echo "<member><name>flerror</name><value><boolean>0</boolean></value></member>";
echo "<member><name>message</name><value><string>Thanks for the ping.</string></value></member>";
echo "</struct>";
echo "</value></param></params>";
echo "</methodResponse>";

?>

受信側はたったこれだけです。
あとはブログを更新して、ブログに元々備わっているシステムでpingを送信してもらいます。


さてさて、どんなpingの内容が送られてくるでしょうか?
wordpressと手元のJUGEMブログのpingの送信内容を比較してみました。
<?xml version="1.0"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
  <params>
    <param>
      <value>
        <string>読書の記憶</string>
      </value>
    </param>
    <param>
      <value>
        <string>http://books.classical-whodunit.com/</string>
      </value>
    </param>
  </params>
</methodCall>


<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
  <params>
    <param>
      <value><string>PHPなんか怖くないぞ(>_<)</string></value>
    </param>
    <param>
      <value><string>http://php.steppers-hi.net/</string></value>
    </param>
  </params>
</methodCall>


うーん。投稿した記事の内容をping送信してくれているのかと勝手に期待していましたが、どうやら必要最低限の情報しか含まれていないようですね。

「weblogUpdates.ping」というのは、ブログの更新である旨のメソッドの記述。
あとは、ブログタイトルとブログのルートのURLが含まれているだけでした。

少なくともWordpressとJUGEMブログで共通のフォーマットであることから、なんか規約的なものがあるんでしょうね、きっと。


まぁ、とりあえずpingが受信できるところまではできたので、あとは更新されたURLのRSS情報を読み込んで加工すれば、今回やりたいことはできそうです!!



参考にさせて戴いたサイト:infoScoop開発者ブログ

googleマップに画像を配置してリンクを張ってみた

2014.12.16 Tuesday | by こも
※ この記事は『ぼっちブログ Advent Calendar 2014』の12月16日分のエントリとして登録しています。ぼっちなので、ただ一人で興味のあることを気の向くままに書いています。
------------


京都の観光地の紹介ページみたいなのを作りたくて、Googleマップを使う方法を調べていました。

JavaScriptを使って簡単にできるみたいです。
GoogleマップにPin画像を配置して、それをクリックするとWikiの説明ページに飛ぶというコードを書いてみました。

googleマップ
(京都駅、東寺、金閣寺にPin画像を配置 ※スクショなので動きません(^^;; )



特に説明がいらないくらいのシンプルなコードです。
マップ表示時の初期位置や初期ズームサイズが設定できるところがミソですね。

メモとして残しておきます。


<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>マップテスト </title>
	<script src="http://maps.google.com/maps/api/js?v=3&sensor=false"
	        type="text/javascript" charset="UTF-8"></script>
	<!-- JSの読み込み -->
	<script src="./mapctrl.js" type="text/javascript"></script>
	
	<!-- mapの表示サイズの設定 -->
	<style type="text/css">
	<!--
	#map { 
		width: 100%;
		height: 100%;
	}
	-->
	</style>	
</head>


<body onload="mapinit()"> <!-- ピンを指す位置の設定 --> <script type="text/javascript"> addPoint(0, "東寺", 34.979848, 135.748690, "http://ja.wikipedia.org/wiki/%E6%9D%B1%E5%AF%BA"); addPoint(1, "金閣寺", 35.039594, 135.729275, "http://ja.wikipedia.org/wiki/%E9%B9%BF%E8%8B%91%E5%AF%BA"); addPoint(2, "京都駅", 34.985640, 135.758466, "http://ja.wikipedia.org/wiki/%E4%BA%AC%E9%83%BD%E9%A7%85"); </script> <!-- マップ本体 --> <div id="map"></div> </body> </html><

var map;
var data = new Array(); 

// 初期化
function mapinit() {

	// Google Mapで利用する初期設定用の変数
	var latlng = new google.maps.LatLng(35.038992, 135.74707);
	var opts = {
		zoom: 12, // 初期のズームサイズ
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		center: latlng // 初期のズーム位置
	};

	map = new google.maps.Map(document.getElementById("map"), opts);

	var markers = new Array(); 

	// マーカの作成 
	for (i = 0; i < data.length; i++) { 
		markers[i] = new google.maps.Marker({ 
			position: new google.maps.LatLng(data[i].lat, data[i].lng), 
			map: map ,
			title:data[i].name,
			icon: "./image/pin.png" // 表示したい画像
		}); 

		dispInfo(markers[i], data[i].url); 

	}
}

// クリック時の情報をセット 
function dispInfo(marker, url) { 
	// マーカクリック時の遷移 
	google.maps.event.addListener(marker, 'click', function(event) { 
		window.open(url, "_blank"); 
	}); 
} 

// 位置追加メソッド 
function addPoint(pmIndex, pmTitle, pmlatitude, pmlongitude, pmUrl) {
	data.push({no:pmIndex, lat:pmlatitude, lng:pmlongitude, 
                    name:pmTitle, url:pmUrl}); 
}



ハッカーズバーに行ってきた

2014.12.04 Thursday | by こも
※ この記事は『ぼっちブログ Advent Calendar 2014』の12月04日分のエントリとして登録しています。ぼっちなので、ただ一人で興味のあることを気の向くままに書いています。
------------



ハッカーが目の前でコーディングを行うバーがあるらしいです。

六本木にあると聞いたので、気になって行ってみました。


ハッカーズバー
ハッカーズバー



「ハッカー」と聞くと悪いことを行う人みたいイメージを持つ人が多いですよね。


でも、本来の「ハッカー」とは、常人より深い技術的知識を持ち、その知識を利用して技術的な課題をクリアしていく人たちのことを指すそうです。



ライブコーディング

お店の中のあちこちにモニターがあって、ハッカーがコーディングしている様子を見ることができます。

この日はJavaScriptでWebアプリを作っていましたよ。



先日発表されたFirefox Developer Editionを使っていました。

わからないことがあればその場で聞くと丁寧に説明してくれます。
とっても勉強になります。


ブルースクリーン

お酒を飲みながらライブコーディングを見るのって不思議な感じですね。



スパゲティ


お客さんたちもディスプレイを黙々と眺めながら飲んでいました。

エンジニア向けの静かなバーという印象でした。



ハッカーズバー Webサイト


MAMP使用時の開発環境のDBサーバの切り替え

2014.10.19 Sunday | by こも
最近DBサーバにアクセスするWebサイトの作成にトライしてみました。


mac上でMAMPを使って開発していますが、一つ面倒なことがあります。

Mac内の開発環境とWeb上の本番環境を行ったり来たりして動作確認を実施していますが、
PHPで接続するDBサーバの切り替えが面倒なのです(^^;;


具体的には、開発環境ではMAMP内のローカルDBに接続し、
本番環境では本番環境内のDBに接続します。

DBのホスト名やユーザ名、パスワードなどが異なるので、
本番環境にファイルをアップロードする度にPHPのコードを書き換える必要があります。


面倒くさくて、なんとか自動化できないものかと考えました。

結論としては、今表示しているWebページのIPを取得し、
ローカルのIPならばローカルDBサーバに接続するようにしてみました。


ここで一つハマったので備忘録です。

gethostname()の関数を使うと、「localhost」か「127.0.0.1」かどちらかが
返ってくることを期待していたのですが、
返ってきた値は「MYNAME-no-MacBook-Air.local」でした。


むむむっ。どうしましょう?(^^;;


そこで、ホスト名をIPアドレスに変換して「192.168.」を含むローカルアドレスならば、
ローカルのDBに接続する形にしました。


これでまぁ、やりたいことは実現できました。


<?php
		// ホスト名からIPアドレスを取得
		$hostName = gethostname(); 
		$ip = gethostbyname($hostName);

		if (strstr($ip, '192.168.')) {
			// ローカルのDBの情報をセット
			$this->CONNECT_DB_HOST = "localhost";
			$this->DATABASE_NAME = "localDB";
		} else {
			// 本番のDBの情報をセット
			$this->CONNECT_DB_HOST = "honbanhost";
			$this->DATABASE_NAME = "honbanDB";
		}
		echo $this->CONNECT_DB_HOST."
" ; echo $this->DATABASE_NAME."
" ; ?>

もっとスマートに書ければいいのですが……(^^;;


MACでIPアドレスを知る方法

2014.10.11 Saturday | by こも
普段はWindowsユーザなもので、macでWebサイトを作る機会が今まで少なかったです(^^;;
でも、最近コワーキングスペースなどの出先で、MBAで開発するようになってきました。

メモ代わりにブログを更新してみようと思います。


さて、Windows端末で自分のIPアドレスを知りたい時はコマンドプロンプトで
ipconfig」というコマンドを使いますよね。


macの場合、どうすればいいんだろうと思って調べてみました。

ターミナルで「ifconfig」のコマンドを使えば確認できるんですね。

忘れそうなので、自分のブログにメモしておきます(^^;;;

Sponsored Link
Recommend
PHP 逆引きレシピ (PROGRAMMER'S RECiPE)
PHP 逆引きレシピ (PROGRAMMER'S RECiPE) (JUGEMレビュー »)
鈴木 憲治,安藤 建一,山田 直明,八木 照朗,山本 義之,河合 勝彦
Recommend
Recommend
Powered
無料ブログ作成サービス JUGEM