yuu_nkjm blog
2014-06-12(Thu) [長年日記] 編集
[Research][SUMO] 交通シミュレータSUMO(Simulation of Urban MObility)にOSMのネットワークデータを読み込ませる
SUMOのインストール
SUMOをWindows上で実行する方法がInstalling/Binary - SUMO - Simulation of Urban Mobilityに書かれている.
Downloads - SUMO - Simulation of Urban Mobilityより,Download the archive named sumo-winbin-
E:\sumo\ |-bin\ |-data\ |-docs\ |-tools\
bin/以下にsumo-gui.exeがあるので,それを実行するとSUMOのGUIを起動することができる.
環境変数の設定
正しく環境変数の設定が出来ているかは,コマンドプロンプトから確認できる.
$ echo %PATH% C:\Program Files (x86)\foo\;(snip);E:\Desktop\sumo-0.21.0\bin\ $ netconvert.exe SUMO netconvert Version 0.21.0 Copyright (C) 2001-2014 DLR and contributors; http://sumo-sim.org License GPLv3+: GNU GPL Version 3 or later Use --help to get the list of options.
OSM(OpenStreetMap)形式からSUMO形式にネットワークデータを変換
OSMからのデータ取得方法は,OpenStreetMap(OSM オープンストリートマップ)のデータを道路ネットワークに変換する - yuu_nkjm blog(2011-02-10)を参考のこと.
OSMでエクスポートしたデータをmap.osmに保存した場合,以下のコマンドにより,OSM形式のネットワークデータがSUMOのネットワーク形式に変換される.
$ netconvert --osm-files map.osm -o map.from.osm.xml Error: invalid multi-byte sequence In file 'map.osm' At line/column 7966/32. Quitting (on error).
…と思ったのに,エラー.マルチバイト文字列め…と思いながら,エラーが出た行の日本語を削除すると,ネットワークデータの変換に成功した.
$ netconvert --osm-files map.osm -o map.from.osm.xml Success.
SUMO-GUI上での確認
sumo-gui.exeを起動して,メニューからFile→Open Networkより,先ほどのmap.from.osm.xmlを指定すると,以下のように表示された.
備考
Linuxで動かす場合を日本語で書いた物としては,以下のものがある.
2014-05-14(Wed) [長年日記] 編集
[XAMPP][PhpStorm][PHP][xdebug] XAMPP+PHPStormでリモートデバッグ
Windows 8 (64bit), xampp-win32-1.8.2-5-VC9,PhpStorm 7.1.3で動作した.
0. PHPの設定
PHPStromでPHPが使えるようにしておく.
1. デバッグするコードを動かすサーバの設定
1.1 php.iniの設定
ここで設定したxdbug.idekeyの値をPhpStormに設定する必要がある.Xdebugの設定はXdebug: Documentationを参照のこと.
[XDebug] zend_extension = "C:\xampp\php\ext\php_xdebug.dll" xdebug.profiler_append = 0 xdebug.profiler_enable = 1 xdebug.profiler_enable_trigger = 0 xdebug.profiler_output_dir = "C:\xampp\tmp" xdebug.profiler_output_name = "cachegrind.out.%t-%s" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" ;; リモートでバッグを実行するホスト.この指定を*にしたい場合は,xdebug.remote_connect_back=1とする. xdebug.remote_host = "127.0.0.1" xdebug.trace_output_dir = "C:\xampp\tmp" ;; 個人専用の開発用のサーバーなら設定した方が良さそう.末尾の補足を参照. xdebug.remote_autostart = 1 xdebug.idekey = "*********"
1.2 サーバ側のXdebug起動/終了のブックマークレット作成
Xdebug & Zend Debugger bookmarklets generator for PhpStormで,サーバ側のdebuggerを起動したり停止したりするブックマークレットを作成できるので,作成する.
2. PHPStormの設定
2.1 Serversの設定
- Serversの設定をする.XAMPPで動かしているということはローカル環境で動かしているのだろうから,通常はUse Path Mappingは要らないはず.User path mappingsは,必要がない場合は選ばない.
- リモートサーバの場合は,ここでローカルのパス(c:\xxxxなど)とサーバのパス(/srv/wwwなど)をマッピングする必要がある.
多分だけど,ローカルサーバでも,シンボリックリンクを使った場合はこの設定が必要になるようだ.プロジェクトがE:\\workspace\worldにあって,C:\\xampp\htdocs\worldにシンボリックリンクを貼った様な場合,Absolute Path on the serverにC:\\xampp\htdocs\worldを設定する必要があるのではないか.むしろ設定しない方が良さそう.
以下は説明のために,"Use Path Mapping"にチェックを入れているが,チェックを入れないで動いている.
2.2 PhpStorm上でのデバッガ起動の設定
メニューのRunからDebug...を選択し,PhpStorm上でのデバッガ起動設定を作る.
デバッグの実行プロセス
xdebug.remote_autostart = 0の場合
- PhpStorm上でブレークポイントを設定する.
- PhpStorm上でのデバッガを起動し,Webサーバ上のXdebugからの接続を待ち受ける.
- デバッグしたいページを通常のWebブラウザで表示し,Webサーバ上のdebuggerを起動するブックマークレットをクリックする.
- デバッグしたいページを通常のWebブラウザでリロードするとデバッグが開始される.
- デバッグを終えたら,Webサーバ上のdebuggerを終了するブックマークレットをクリックする.終了しないとPHPの実行が遅いままのようだ.
xdebug.remote_autostart = 0の場合
ブックマークレットの操作が必要ない.
補足
外部サーバからのコールバック
外部のサーバからのコールバックが発生するようなプログラムの場合,デバッグセッションと認識されていないセッションからのアクセスとなり,そのアクセスに対してデバッグがonにならないのか?.一人で使う開発環境ならxdebug.remote_autostart = 1としたほうが無難か.
リフレクションを使ったメソッド割り当ての場合?
関数のシグネチャの行をブレークポイントとすると止まれず,関数の内部の行をブレークポイントとすると止まることがあった.
何でもかんでもプログラムの実行を止めたい
以下が重要.
関連ページ
2014-04-13(Sun) [長年日記] 編集
[Apache][mod_rewrite] mod_rewriteによるURLの書きかえ
正規表現(A)は、リライトを実行するかどうかの条件(真偽値)であって、置換 url =~ s/(A)/(D)/ ということではない.
mod_proxyを場当たり的に使ってるので,よく躓く.上のページを見て,少し理解が進んだ.また分からなくなると思うが,自分のケースをメモ.
RewriteEngine on RewriteBase /event/ RewriteRule ^foo2014$ http://foo.nkjm.info/ [QSA,P,L] RewriteRule ^foo2014/(.*)$ http://foo.nkjm.info/$1 [QSA,P,L]
- ^foo2014$にマッチしたらリライトが実行される.QSA(query string append)はクエリ文字列を足す.PはプロキシになりURLが書き換わらない(それに対してRだとリダイレクトになる.mod_rewriteの設定をデバッグするときはRの方が分かりやすい.).Lはこのルールで評価を終了.
- ^foo2014/(.*)$にマッチしたらリライトが実行される.$1が正規表現の(.*)に置き換わる.
トラブルシューティング
[Tue Apr 01 14:30:23 2014] [warn] proxy: No protocol handler was valid for the URL /world/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
こんなエラーが出た.Pを指定したのにapacheにproxyに関するモジュールが入っていなかったのが原因の様だった.proxy,proxy_httpをロードするようにしたら解決した.
Debian apache 設定 - OraRailsを参考にした.