GeoHash備忘録

GeoHashを利用したいと思い、いくつかのサイトをチェック。その個人的備忘録。

Geohash Wikipedia
Wikipedia
Geohash Wikipedia(日本語)
Wikipedia
Geohashの概略(サンプルプログラム有り)
@masuidrive blog
Geohashエンコード、デコード関数(近隣メッシュ取得関数有り)
とりあえずPHP
Geohashエンコード、デコード関数
LordElph’s Ramblings
Geohashのアルゴリズムについて
ゆろよろ日記
Geohashの分解能について
Relevant, Timely, and Accurate

Dreamweaverで文字コードが勝手にSJISに変更される

DW4でphpファイルやjsファイルを開くと、文字コードをもともとUTF-8で作っていたつもりのファイルでも勝手にShift-JISに変更してくれる。それが発生する場合としない場合があるので、まあいいかと思っていたが最近どうも気になるので少し調べてみたところ、発生する条件はほぼ下記の通りになった。

変更されない(UTF-8で保存/日本語有り)

/*日本語コメント*/
<?php
echo "こんにちは世界!";
?>

変更される(UTF-8で保存/日本語なし)

/*japanese comment*/
<?php
echo "hello world!";
?>

つまり、ファイルの保存時に日本語(2バイト文字?)がどのような形であれ含まれていないと、次回開いたときに文字コードがShift-JISになってしまうらしい。

原因が分かったところで、解決方法を探してみると次のサイトが見つかった。

1.ファイルの先頭に文字コードを書き込む

DreamWeaverでPHPファイルのエンコードを勝手に変えちゃうの何とかした

それによると各ファイルの先頭に文字コードの設定を書き込み、DWに強制的に文字コードを認識させるというもの。jsを除き、確かに動作はするけれど、なんだかまどろっこしい。cssはまだ良くてもphpはちょっと。。

phpの場合

<?php /* <meta content="charset=UTF-8"?> */ ?>

jsの場合(どうもうまくいかない)

/* @charset "UTF-8"; */

cssの場合

@charset "UTF-8";

2.UTFで保存するときにBOMを書き込む

Adobe Forums

UTF-8保存時にBOMを書き込むことでUTF-8として認識させることはできるけれども、肝心のphpファイルを実行したときにheader()関連でエラーが出てしまうので実用的ではない。そして日本語windowsの場合、OSデフォルトの文字コードがShift-JISのため、DWは編集対象のファイルの文字コードが明示的に示されていない場合にはShift-JISに変えるみたい。以下原文。

~省略~
> When I save the document with BOM
> signature, forcing it to be UTF8 -no mater what-, the problem has solved.
Be careful using the BOM with PHP files. PHP interprets the BOM as
output, causing problems with the header() function and sessions.
> Probably DW is thinking "Hey! this guy's system is Japanese, so I should
> ignore the DW settings and set this to SJIS".
Bingo! If you're using a Japanese operating system that defaults to
Shift_JIS, that's what Dreamweaver will use in files that don't have a
way of indicating their encoding. The UTF-8 setting applies only to
files that have a meta tag or other method of declaring their encoding.

関係ないけど、このくだりには笑った。いじめられてる。。

> Probably DW is thinking "Hey! this guy's system is Japanese, so I should
> ignore the DW settings and set this to SJIS".

3.Dreamweaverの初期設定を変更する

Dreamweaver8の文字コード

「編集」->「環境設定」->「新規ドキュメント」の中にある「エンコーディングが指定されていない既存ファイルを開くときに仕様」のチェックをはずす、という記述もあったけれど、CS4では効かないみたい。やりかたが悪いのかな。

結局のところ1の方法か、各ファイルに日本語でコメントを入れておくのが実用的なのかな。それにしても、余計な機能はいらないからこういった細かい部分をしっかり作り込んで欲しい。

CakePHPでdefault画面の内容を変更する

CakePHPのデフォルト画面を編集するには次のファイルを作成する。

default.ctpは「/views/layouts/default.ctp」を、home.ctpは「/views/pages/home.ctp」を作成して配置する。

と、思ったら、何のことはない、デフォルトページに明記してあった。

Editing this Page
To change the content of this page, create: APP/views/pages/home.ctp.
To change its layout, create: APP/views/layouts/default.ctp.
You can also add some CSS styles for your pages at: APP/webroot/css.

なおCakePHPのバージョンは1.3.3。

CakePHPのpaginateでLIKEを使った検索

CakePHPのpaginateでLIKE検索をしたかったときに、だいぶ迷ったのでメモ。出来てしまえば何とはないのだけれど。

「teble」というテーブル名だと仮定して、そのコントローラーである「/controllers/tables_controller.php」に次のように記述する

function index() {
$this->paginate = array(
"conditions" => array("or" => array("Table.name LIKE" => "%山田%"),
"limit" => 5,
"order" => array("Table.id" => "asc")
);
$this->Dentist->recursive = 0;
$this->set('dentists', $this->paginate());
}

なおCakePHPのバージョンは1.3.3。

CakePHPでcake.phpを直接呼び出す

どうも忘れがちなのでメモ。

bashスクリプトが入っているがどうも正常に動かないようで、その中身を見ると同ディレクトリのcake.phpを直接呼び出している様子。コマンドから次のようにしてみると無事に動作した。

> php ./cake.php -app /path/to/app bake
Welcome to CakePHP v1.3.3 Console
---------------------------------------------------------------
App : app
Path: /path/to/app
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)