2008/11/08

貧乏環境でもデータベースが使いたい

自分でサーバを持てる金持ちには無縁な話(?)だが、PHPは魅力的だ。
こいつを動かしてくれる無料サーバがゴロゴロある。
ただ、レンタルサーバはあくまで他人様のもの。
好き勝手にはいじらせてもらえない。
そこで、どこまでだったらできるのか調べてみた。

まず無料サーバで、OracleやMySQLといったDBMSが提供されているということは期待できない。
念のためざらっと調べてみたが、やはりない。
それでもお金は払いたくない。

ここで諦めてはいけない。
PHPにはfwrite関数があるじゃないか!
ファイル出力さえできればデータの管理はどうにかなるはず。
XMLやCSVを利用すれば、それっぽくはなるはず。
幸いPHPには以下の便利な関数もある。
simplexml_load_file関数(XMLファイルをパースし、オブジェクトに代入する )
file(ファイル全体を読み込んで(一行ずつ)配列に格納する)

ただ、ここで注意しなくてはいけないのはファイルのパーミッションだ。
PHPから(データを管理する)外部ファイルを読み込む以上、そのファイルのパーミッションを他人からの参照不可にはできない。
誰でもファイルの中身を参照できてしまう。
この問題を解決するのに、以下の方法がある。

tablexml.php

<?php 
$xmlstr = <<<XML
<websites>
<website>
<title>Great Websites</title>
<characters>
<character>
<name>Google</name>
<url>http://www.google.co.jp/</url>
</character>
<character>
<name>Yahoo!</name>
<url>http://www.yahoo.co.jp/</url>
</character>
<character>
<name>はてな</name>
<url>http://www.hatena.ne.jp/</url>
</character>
</characters>
<plot>
There are Great Website.
</plot>
<success type="bestseller">4</success>
<success type="websiteclubs">9</success>
</website>
</websites>
XML;
?>

tablexml.php中のXMLからplot要素を取り出す。
<?php
include 'tablexml.php';

$xml = new SimpleXMLElement($xmlstr);
echo $xml->website[0]->plot; // " There are Great Website."
?>

XMLを文字列としてすべて$xmlstr代入し、そのオブジェクトを利用して処理。
(多くの言語がそうだろうが)PHPはブラウザから実行してもソースはダウンロードさせないため、容易にXMLの内容は参照できない。
これなら、うまくいきそうだ。

今度、SELECT文などのSQLのような、データベース操作言語(のような関数)を作ってみよう。 続き

2008/07/29

300 LINES TETRIS


内容
7行テトリスに真っ向から勝負!
そして、完敗。
やり方
・←→…移動
・スペースキー…回転

http://sites.google.com/site/ochiyuki/ogs_300linestetris.html
※上のURLにアクセスしてください。
続き

2008/03/30

HATENA HAIKU WIDGET MAKER


内容
はてなハイクのブログパーツ、完成版。
そもそもこれ自体はブログパーツではなく、ブログパーツを生成するものであること。
また、ブログパーツが和製英語であること。
以上から、名前変更。
やり方
・はてなのアカウント
(https://www.hatena.ne.jp/register)
・Googleが発行するkey
(http://code.google.com/apis/ajaxfeeds/signup.html)
を取得。
以下のフォームに入力。

はてなアカウント

Google key


WIDGET

続き

はてなハイクのブログパーツ(4)

とりあえず完成版でいいかな?と思っていた、はてなハイクのブログパーツ。
ただ、本家Twitterに比べ、決定的に劣っているものがありました。
このまま完成版にするわけにはいきません。

Twitterのブログパーツ


はてなハイクのブログパーツ0.1


まず、本家Twitterに比べ、決定的に劣っている点について。
それはこの“** days ago”と、エントリーが更新された時間を明らかにするもの。
通常のblogと違い、yyyy/mm/dd等の表記方法で行わないのがポイントらしい。

JavaScript による日付・時刻・時間の計算・演算のまとめ
http://www.hoge256.net/blog/2007/08/javascript_1.html
そこで、このサイトに掲載されていたscriptを借りて、
はてなハイクのブログパーツを作り直してみた。

はてなハイクのブログパーツ0.3
http://sites.google.com/site/ochiyuki/tst_hatenahaikublogparts03.html

var dd = new Date(entry.publishedDate);
date=compareDate(now.getYear(), now.getMonth()+1, now.getDate(), dd.getYear(), dd.getMonth()+1, dd.getDate())+" 日前";
document.getElementById("feed").innerHTML+="<div>"+entry.content+"</div><div style=text-align:right;font-size:small;>"+date+"</div>";

フィードからエントリーの日付を取得し、変数ddへ格納。
そこから引数を揃え、借りてきた関数compareDateに渡す。
結果を変数dateに格納し、いままでのものと一緒に出力する。

関数compareDateを作ってくださった方のおかげで簡単にいけました。
ありがとうございます。

また、各々のブログパーツを生成するためには以下のものを利用する。
http://sites.google.com/site/ochiyuki/tst_hatenahaikublogparts04.html
使い方ははてなハイクのブログパーツ0.2と同じ。

最近気づいたのだが、“表示テスト”は多くのブラウザで利用できない様子。
オマケ機能だから、構わないか…?
完成版では、削除することにする。 続き

2008/03/20

はてなハイクのブログパーツ(3)

必要なのは、はてなのアカウント、Googleが発行するkey。
これが前回の結論です。
その2つをははてなハイクのブログパーツ0.1に渡すにはどうすればいいのか、考えてみました。

これらは、私が用意することが出来るものではない。
入力してもらうしかない。
ということで、以下のテスト版、はてなハイクのブログパーツ0.2を制作した。
http://sites.google.com/site/ochiyuki/tst_hatenahaikublogparts02.html

利用するためには、はてなのアカウント、Googleが発行するkeyを用意する。
はてなのアカウント
https://www.hatena.ne.jp/register
Googleが発行するkey
http://code.google.com/apis/ajaxfeeds/signup.html

それらをフォームに入力し、“ブログパーツ制作”を押す。
すると、“ブログパーツ”のフォームに、ソースが出力される。
これをブログに貼れば、その人のブログにはてなハイクを貼ることができる。

ちなみに、“表示テスト”ははてなのアカウントのみの入力でも可能。
続き