2014年1月31日金曜日

【MySQL】GEOMETRY型の列にインデックスを張る

MySQLに接続して以下のコマンドを実行するが

mysql> ALTER TABLE location ADD INDEX (lat_lon);

以下のエラーが返ってきた。

ERROR 1170 (42000): BLOB/TEXT column 'lat_lon' used in key specification without a key length

MySQLのドキュメントを読むとGEOMETRY型(BLOB型)の列にインデックスを張るには「インデックス」でなく「スペシャルインデックス」にする必要があると分かった。また、「スペシャルインデックス」が対応しているテーブルエンジンは「MyISAM」のみなので注意する。 インデックスを張ろうとしているテーブルは「InnoDB」だったので「MyISAM」に変更した。

以下のコマンドを実行すると

ALTER TABLE location ADD SPATIAL INDEX (lat_lon);

今度は問題なくGEOMETRY型の列にインデックスを張ることができた。 「EXPLAIN SELECT」を使用して先ほど張ったインデックスが効いているか確認して問題なければいい。


ちなみに「InnoDB」で「スペシャルインデックス」を張るコマンドを実行すると以下のエラーが返ってきた。

ERROR 1464 : The used table type doesn't support SPATIAL indexes

ドキュメント通り「InnoDB」には対応していないようだ。

【nginx】CentOS6環境でyumを使用して最新版のnginxをインストールする

yumにnginxのリポジトリを登録する。このリポジトリのURLはnginx本家のサイトからチェックできる。

sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
 
このコマンドを実行すると
 
/etc/yum.repos.d/nginx.repo
 
このファイルが保存される。このファイルを開くと  

# nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
 
これでyumで最新版のnginxをインストールする準備完了。
 
sudo yum install -y nginx
 
コマンドを実行してnginxをインストールする。
 
sudo service nginx start
 
コマンドを実行してnginxを実行する。
ブラウザでアクセスして
 
Welcome to nginx!
 
が表示すればnginxのインストール作業は終わり。  

2014年1月25日土曜日

【Yii】Yiiで複数言語化対応

Yii frameworkで複数言語に対応してみる。
以下のファイルを修正する。
[ 配置したYii frameworkのディレクトリの絶対パス ]/[ 作成したプロジェクト ]/protected/config/main.php

return array(
    // ココにソースを記述
    // i18n
    'language'=>'ja_jp',
    'sourceLanguage'=>'en_us',
);

viewファイルの中に以下のコード書いて修正する。

<p><?php echo Yii::t('app','access'); ?></p>

Yii:t()メソッド内の'app', 'access'は「app」がカテゴリで「access」が複数言語化対応する文字列で翻訳する文字列。
修正したviewを表示する。


書いたコードの部分にはaccessの文字列が表示する。accessの部分を日本語化するために翻訳ファイルを作成する。
以下のディレクトリにja_jpディレクトリを作成する。

[ 配置したYii frameworkのディレクトリの絶対パス ]/[ 作成したプロジェクト ]/protected/messages/

ja_jpディレクトリ下にapp.phpファイルを作成する。このファイル名はカテゴリと揃える。次にこのファイルを開いて以下のコードを書いて保存する。

<?php
return array(
 'access'=>'あいうえお',
);
?>

再びviewを表示する。


「access」の部分が「あいうえお」に置き換わっている。
Yiiの他言語対応は凄く簡単だな(感動)。

【Yii】Yii Frameworkはじめました

Yii2.0を使おうかと思いましたがアルファ版なので1.1版を使うことにした。
まずYii1.1をYiiサイトからダウンロードする。
ダウンロード先ここ
Yiiサイトを開いたら以下の赤枠の中のボタンをクリックして、Yii Frameworkのファイルをダウンロードする。


ダウンロードしたファイルは解凍して適当な場所に配置する。
私がダウンロードしたファイルはtar.gz形式解凍方法はここを見る。

これで初期設定はおわり。解凍したディレクトリの中にdemosディレクトリがある。この中にサンプルが入っているので試しに動かしてみる。
データベースを使わなくても動いたので驚いた。

Yii frameworkでWEBシステムを作る時はプロジェクトを作成する必要がある。
作成方法は以下のコマンド。

cd [ 配置したYii frameworkのディレクトリの絶対パス ]

framework/yiic webapp test

これでサクッと作成できる。このyiicコマンドだけどファイルの権限に実行権限ないと動かないことがある。私の環境はMAC OS X Marvericks。以下のファイルの権限の変更を行なった。

  • framework/yiic
  • framework/yiic.php