Category Archives: プログラム

JQueryのUIを作るのがめんどくさい

いつもアドレスを忘れてしまうのでメモ。
http://jqueryui.com/home

二つのテーブル間の同期をとる(MySQL)

何かのCSVファイルをDBに取り込んでマスターとする時、テンポラリに一時的に格納した後に処理をして、その後でマスターに更新するような処理をすることがありますが、その時にはこのようなSQLを使えばよいだろう。
mainテーブルにはunique_idというプライマリーキーが設定されているものとする。

INSERT INTO main (unique_id,information, information2)
    (select unique_id,information, information2 from temp)
    ON DUPLICATE KEY
        UPDATE
        main.information = temp.information,
        main.information2 = temp.information2;

これで、unique_idが無い場合にはinsert, キーがダブる場合にはUPDATEのinformationとinformation2フィールドのUPDATEが行われる。
コードが古くなって、廃止されたものはデータベースから削除する、という場合は、次のようなDeleteのSQLを実行して、「メインにあってテンポラリにない」テーブルを削除する。

delete from main where unique_id not in (select unique_id from temp);

tempデータベースのunique_idには、インデックスを貼っておくこと。処理スピードが違います。

携帯向け周辺情報検索サイト”.Moyori”を作りました

携帯電話のGPSを使って位置情報を取得し、YahooのWebサービスを使って周辺のお店の情報を取得し、そこまでの距離をなんとなく計算するサイト「.Moyori」を作成しました。
今のところ、AUの携帯とiPadでは動作確認できております。また、ChromeやGoogleツールバーが入っているIEのような、PCブラウザで位置情報が取得できるものであれば動作します。
(他は持ってないのでしらん)
http://moyori.roadsterlabs.com/

iPadやChromeで端末位置情報を取得するにはJavaScript

iPadやChromeで端末位置情報を取るためには、Javascriptを使います。bodyタグのOnloadイベントでfirstcallを呼び出します。
IE7のようなブラウザーでは位置情報を取るための機能がないので、Navigator.geolocationオブジェクトの存在有無の判定をしてから、getCurrentPositionを呼び出すことになります。getCurrentPositionで取得ができると、secondcallファンクションが呼び出されます。

<script type="text/javascript">
function secondcall(position){
	alert(position.coords.latitude + ',' + position.coords.longitude);
}
function firstcall(){
	if (!!navigator.geolocation) {
		navigator.geolocation.getCurrentPosition(secondcall);
	}
}
</script>

GoogleNewsのRSS(XML)をPHPで取得して表示する

Google Newsは、日本語版だとRSSへのリンクがなく、US版には画面の下のほうにあるのですが、フォーラムにもRSSの利用については載っているのでそれを参照しつつ使ってみることにしました。それにしてもフォーラムの和訳はヘン。
http://www.google.com/support/news/bin/topic.py?topic=8848

次のようなコードを書きました。実例はこちら
別に難しいことをしているわけではありませんが、単純にsimplexml_load_fileで読み込みして処理をします。
Google NewsのRSSのdescriptionは中にテーブル記述がごってりで汚いので、そのへんはstr_replaceでもかければいいと思います。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<form action="googlenews.php" method="post">
<input type="text" name="search" value="ロードスター"><input type="submit" value="検索">
</form>

<?php 

if (isset($_POST["search"])) {
	$str = $_POST["search"];
} else {
	$str = "ロードスター";
}

$querytag = "http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&num=10&output=rss&q="
	. urlencode($str);

echo $querytag . "<br>";

$gxml = simplexml_load_file($querytag);

foreach ($gxml->channel->item as $item) {
	echo $item->title;
	echo "<br>";
	echo $item->description;
}

?>
</body>
</html>