DokuWikiでAdSenseを使う方法

ウィキシステムの一つにDokuWikiがあります。
データベース不要なので気軽に導入できます。
実際に使ってみました。
多摩境タウン情報Wiki
ここにGoogle AdSenseを導入しようと思ったのですがちょっと苦労しましたのでメモしておきます。 (さらに…)

ApacheでURLを読み替える方法

PHPを使う場合、パラメータがあるURLは一般に次のようになります。
http://stabucky.com/test/index.php?word=food
Apacheを使ったサーバで、一部を省略して次のようにしても同じページが開くようにします。
http://stabucky.com/test/word/food (さらに…)

PHPでBlowfishによるハッシュ値を生成する

「パスワードは平文で保存してはいけない」ということで、PHPにおけるパスワードのハッシュ化について調べてみました。
PHPではBlowfishを推奨しています。
crypt関数を使うとBlowfishによるハッシュ化ができます。
第一引数に平文のパスワードを指定し、第二引数にソルトを指定します。 (さらに…)

PHPで角丸長方形を描く

PHPを使って角が丸い長方形、いわゆる角丸長方形を描きたいのですが、どうすればよいでしょうか。
PHPには長方形を描くためのImageRectangleという関数がありますが、角丸長方形を描く関数が見当たりません。
そこで作ってみました。

function ImageRoundedRectangle($image, $x1, $y1, $x2, $y2, $r, $color){
  ImageLine($image, $x1 + $r, $y1, $x2 - $r, $y1, $color);
  ImageLine($image, $x1 + $r, $y2, $x2 - $r, $y2, $color);
  ImageLine($image, $x1, $y1 + $r, $x1, $y2 - $r, $color);
  ImageLine($image, $x2, $y1 + $r, $x2, $y2 - $r, $color);
  ImageArc($image, $x1 + $r, $y1 + $r, $r * 2, $r * 2, 180, 270, $color);
  ImageArc($image, $x2 - $r, $y1 + $r, $r * 2, $r * 2, 270, 360, $color);
  ImageArc($image, $x1 + $r, $y2 - $r, $r * 2, $r * 2, 90, 180, $color);
  ImageArc($image, $x2 - $r, $y2 - $r, $r * 2, $r * 2, 0, 90, $color);
}

使い方はImageRectangleと同じです。
$x1と$y1は長方形の左上の座標です。$x2と$y2は右上の座標です。
角丸長方形は角を円弧で描くのでその半径を$rとします。

imageroundedrectangle

「2点間距離API」を使う

Yahoo!デベロッパーネットワークで「2点間距離API」というものを見つけました。
地図上の2点の緯度経度を与えるとその間の距離を算出するAPIです。
今まではサイン、コサインを使って複雑な計算をしていましたが、これを使えば簡単にできそうです。

YOLP(地図):2点間距離API - Yahoo!デベロッパーネットワーク

サンプルは次の通りです。PHPです。
東京駅から大阪駅までの距離を求めます。
使うときは、登録して自分のアプリケーションIDを取得する必要があります。

$points[0] = array(139.766084, 35.681382);//東京駅
$points[1] = array(135.494977, 34.701909);//大阪駅

$appid = "{アプリケーションID}";
$output = "json";
$coordinates = implode(",", $points[0]) . "%20" . implode(",", $points[1]);

$url = "http://distance.search.olp.yahooapis.jp/OpenLocalPlatform/V1/distance";
$url .= "?coordinates=" . $coordinates;
$url .= "&appid=" . $appid;
$url .= "&output=" . $output;

$json = file_get_contents($url);
$arrs = json_decode($json, TRUE);

print $arrs["Feature"][0]["Geometry"]["Distance"];

ちょっと引っかかったのは、座標の指定方法です。
「東経カンマ北緯スペース東経カンマ北緯」とするのですが、サンプルを真似すると次の通りになります。
「coordinates=139.766084,35.681382 135.494977,34.701909」
しかしこれだとエラーになります。スペースは「%20」とする必要があるので次の通りになります。
「coordinates=139.766084,35.681382%20135.494977,34.701909」

実行すると距離がキロメートル単位で表示されます。

こうなると座標も自動的に取得したいところですが、Yahoo!には飲食店などの位置を取得するAPIはありますが、駅など公共機関を取得するAPIがありません(あるのかもしれませんが見つかりませんでした)。
Googleは「東京駅」から座標を取得することができますので、GoogleとYahoo!を組み合わせる、ということになりそうです。

PHPのタイムスタンプとMySQLの日時を相互に変換

PHPは日時をタイムスタンプで管理しています。これは1970年1月1日からの通算秒数です。
MySQLで日時(datetime型)を扱う場合は「2014-01-02 03:04:05」のようにします。
これらについては相互に変換することが多いので次の通りまとめておきます。

function datetime2timestamp($datetime){
  //PHPのタイムスタンプをMySQLのdatetime型に変換。
  $re = "/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/";
  if(preg_match($re, $datetime, $m)){
    return mktime($m[4], $m[5], $m[6], $m[2], $m[3], $m[1]);
  }
}
function timestamp2datetime($timestamp){
  //MySQLのdatetime型をPHPのタイムスタンプに変換。
  return date("Y-m-d H:i:s", $timestamp);
}

MySQLでテーブルを作成

MySQLを使ったブログシステムをPHPで作っています。
テーブルを作成するときは、phpMyAdminを使って手作りをしているのですが、面倒です。
PHPで一気に作る方法をまとめました。

データベースに関する情報は次の通りです。

  • ホスト:localhost
  • データベース名:mydb
  • ユーザー名:username
  • パスワード:mypassword

テーブルに関する情報は次の通りです。

  • テーブル名:mytable
  • カラム
    • id:整数、自動に増加、キー
    • title:文字列、UTF-8
    • body:テキスト、UTF-8
    • tag:文字列、UTF-8
    • datetime:日時
try{
  $pdo = "mysql:host=localhost,dbname=mydb";
  $user = "username";
  $password = "mypassword";
  $pdo = new PDO($dsn,$user,$password);
  $query="CREATE TABLE mytable(
    id INT(11) NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),
    title VARCHAR(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
    body text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
    tag VARCHAR(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
    datetime DATETIME
  );"
;
  $pdo -> query($query);
}catch(PDOException $e){
  var_dump($e -> getMessage());
}

mixiから引越し

以前、mixiで書いた日記をこのブログにインポートしたのですが、内容があまりに貧弱なので、外すことにしました。
とは言え、全て捨ててしまうのももったいないので、エクスポートして、ブログ風に表示することにしました。 (さらに…)

PHPでXMLを使うときの2つの注意

WordPressで記事をエクスポートするとXMLで出力されます。
これをブログ風に整形して出力しようと思ったのですが少し戸惑いました。 (さらに…)

JavaScriptとPHPの配列の個数

JavaScriptでは配列の添字を「100」として値を代入すると要素が101個になります。 (さらに…)

新しい記事 | 古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報