位置情報をSQLでごにょごにょ検索する
位置情報を扱うサービスで求められる要件に以下のようなのが良くあります。
- 現在地から半径○○mに登録されている店舗情報を取得
- 上で取得した結果を近い順に表示する
これをまともに自力でやろうとするとめんどくさいので、
PostgreSQL拡張のPostGisを使ってあげます。
下記のリポジトリを事前に追加してください。
http://d.hatena.ne.jp/kopug/20080824/1219541381
1. PostGisをインストールする
$ sudo yum install postgis
====================================================================================================== Package Arch Version Repository Size ====================================================================================================== Installing: postgis x86_64 1.3.6-1.rhel5 pgdg84 1.0 M Installing for dependencies: geos x86_64 3.1.0-1.el5.rf rpmforge 265 k geos-devel x86_64 3.1.0-1.el5.rf rpmforge 4.8 M proj x86_64 4.6.1-1.rhel5 pgdg84 172 k Transaction Summary ====================================================================================================== Installed: postgis.x86_64 0:1.3.6-1.rhel5 Dependency Installed: geos.x86_64 0:3.1.0-1.el5.rf geos-devel.x86_64 0:3.1.0-1.el5.rf proj.x86_64 0:4.6.1-1.rhel5 Complete!
2. PostgreSQLの再起動
$ sudo /sbin/service postgresql restart
3. テンプレートDBの作成と関数の作成
$ createdb -U postgres template_postgis $ createlang -U postgres plpgsql template_postgis $ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis-64.sql $ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis_upgrade-64.sql $ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/postgis_comments.sql $ psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/spatial_ref_sys.sql
4. PostGisの関数を利用したい場合DBを作成する場合はテンプレート指定で
$ createdb -U postgres -T template_postgis <DB NAME>
こうすることでDB毎にfunctionの読み込みをしなくてすみます。
正常にできたかどうかを確認するってことで、以下のSQLを流して見ましょう。
$ psql -U postgres -c "SELECT postgis_version();" <DB NAME> postgis_version --------------------------------------- 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 (1 row)
インストールと設定はこんな感じです。
実際の利用方法については、以下のサイトで丁寧に書かれていました。
http://bubble.atnifty.com/modules/bwiki/PostGIS.html
お名前.com の VPSを借りてみた
最近巷を少し賑わしているお名前.comのVPSを借りてみた。
月額2,940円で、メモリ最大1G(通常512M)、HDD50Gとスペックだけ見ているとすごくお得な感じがした。
専用サーバを借りるほどでもなく、けどその辺のVPSのスペックだと不満・・といった状況だったので、
魅力に感じたわけで。
クレジットカードで申し込みをしたので大体1時間くらいで開通。
SSHでログインしてみて驚く。
なんだこれは・・・。
とちょっと大げさかもしれないけど、普通の仮想化とは違う感じ。
なんか殆どホストOSにラッピングされている感じ。
まずyumがありません。
なのでyumを自分でインストールして、パッケージをアップデート。
このアップデートが結構怖いところで、独自のパッケージを何も知らずにアップデートすると動かなくなる可能性がありそう。
僕はpostfixをアップデートして、メールの送信ができなくなりました。
で、このメールの送信なんだけど、このサーバからは25番ポートを使って相手に通信ができないようです。
なので、リレーの設定をmain.cfでしてあげないと、メールの送信ができないんだよね。
これ以外にも色々不思議なところはあるけども、ある程度弄れるので、使える人には良いのではないかなーと思った。
symfony 1.0 or 1.2 でモバイルサイトを作る
今まで1.2にしか対応していなかったのですが、この度諸事情により1.0対応しました。
http://www.symfony-project.org/plugins/sfMobileJPlugin
さぁもうちょい本腰入れていくか。
httpd-2.2.*で最低限必要なmodule
centos5.3でapacheをRPMインストールした際のデフォルト設定で必要なモジュール一覧です。
- mod_mime (AddHandlerで必要)
- mod_dir (DirectoryIndexで必要)
- mod_authz_host (Orderで必要)
- mod_log_config (LogFormatで必要)
- mod_alias (Aliasで必要)
- mod_autoindex (IndexOptionsで必要)
- mod_negotiation (LanguagePriorityで必要)
- mod_setenvif (BrowserMatchで必要)
上記以外のモジュールをコメントするとメモリ量がこれだけ変化しました。
4,316kbyte -> 3,648kbyte
[svn] リポジトリの詳細情報をXMLで取得する
$ svn list --xml --depth infinity <REPOS URL> --username <USERNAME> --password <PASSWORD>
CentOS 5.3 に redMineをインストールしてみる
参考:http://redmine.jp/tech_note/install/
[1] rubyのインストール
# yum -y install ruby rdoc ruby-devel
[2] SQLite3のインストール
# yum -y install sqlite sqlite-devel
※ sqlite-develを入れておかないと、あとでsqlite3-rubyがインストールできない
[3] RubyGemsのインストール
# cd /usr/local/src # wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz # tar zxf rubygems-1.3.2.tgz # ruby setup.rb # cd -
[4] Ruby on Rails(+sqlite3-ruby)のインストール
# gem install rails # gem install sqlite3-ruby
[5] redMineのインストール
# cd /usr/local/src # wget http://rubyforge.org/frs/download.php/54503/redmine-0.8.3.tar.gz # tar zxf redmine-0.8.3.tar.gz # mv redmine-0.8.3 ../ # cd ../ # ln -s redmine-0.8.3 redmine
あとは参考ページを見ながら設定をしていく感じで。
今更しった。Pentium-Mではxenが利用できない事に・・。
うちの自宅サーバはPentiumMなんだけど、CentOSを最新の5.3+仮想化にしようと思いクリーンインストールまでしたのに、、。
PentiumMではxenが利用できなかった・・。