2008年7月31日木曜日

オープンキャンパス2

オープンキャンパスの時に学食のメニューが少なかった。
こういうときこそメニューをしっかりとそろえたり人件費を使ってもいいと思うのだが。

前にいた大学では学食の無料券を配っていた気がする。
もちろん無料券を配るだけでは意味がないし質も上げていかなければならないと思う。

2008年7月30日水曜日

オープンキャンパス

先日オープンキャンパスがあって、今回のうちの研究室のメインはShortest Path Graphicであった。

そもそもコンピュータに興味のある学生はうちの学科にはこないのか、詳しい人はほとんどいなかった。
まだ高校生だし、学科の中身までわかる人は少ないのだろう。
学生には大学名や学科名だけじゃなく中まで考えて選んで欲しいと思う。
とはいえ日本の風潮が学歴社会だから微妙なのだが・・。

2008年7月29日火曜日

高解像度版2

昨日の続きになるが、高解像度版では画像のeps->pngの変換に時間がかかっている。
そのため、基本仕様はナローバンド版と同じでPNG画像の重ね合わせで実装している。
画像のダウンロードもできるようにはなっているが、上で描いたように画像の変換に時間がかかるため、ダウンロードボタンを押してもなかなか画像が表示されない。

こちらももう少しいい工夫があれば変更していきたいところだ。
今は、画像変換にはconvertコマンド(ImageMagicを使用)で実現している。

2008年7月28日月曜日

高解像度版

オープンキャンパスでのデモのために高解像度版ができている。
USAのグラフも真っ黒ということはなくある程度道がわかるようになってイカサマではないことがわかる。

どうせなら・・・と超高解像度版も作ってみたところだいぶはっきりしていた。
いろいろなところでデモするためにはこのくらいの解像度が欲しいところだ。

余裕があるなら公開したいとのことだが、いかんせん画像の容量が莫大すぎて公開には踏み切れない。

2008年7月27日日曜日

ネーミング

何の名前でもセンスが問われる。
子供に変な名前をつける親がいたりと問題になったりしているが名前をつけられた方の身になって考えてもらいたいものだ。

今はShortest Path Graphicとして公開しているが、正式な名前は決まっていない。
Graphical Shortest Path や、Shortest Path Online Solver など色々名前の候補はあるが、略称もうまくなるようにしたいなど色々と難しい。

2008年7月26日土曜日

座標の調整

Shortest Path Graphic を利用するブラウザによっては、左上端の座標が(0,0)にならないものもある。

IEやSafari、Firefox2では(0,0)になるのだが、Firefox3、Operaでは少し大きめになってしまう。
それによってクリックしたつもりの場所と結果が違うとおもっていたユーザーが多いかもしれない。

実際に調べて、ブラウザによって判別するようにした。Firefox3、Operaではx,y座標共に取得した値より8を引いた値を入力の値としている。

試してみると微妙なところをクリックしても思った点を指定できている気がする。

2008年7月25日金曜日

event.offset

座標を取得する際にJQueryを利用しているのは前にも書いた。

また、ブラウザにはCtrl + '+' or '-' などで拡大縮小することができるのだが普通のブラウザはそれによって座標が変わることはない。

IEはスクロールやそういった事象を考慮に入れている。
その割に画像のサイズ等の変更はしないため、取得する方法がわからなかったが、

x = event.offsetX;
y = event.offsetY;

で取得できることがわかった。ブラウザによって仕様が違いすぎて困る・・。
できればIEは使いたくないがシェアが大きすぎる以上仕方がない・・。

2008年7月24日木曜日

ナローバンド版

経由点を複数指定できるようになったShortest Path Graphic だが、どうやらナローバンド版も出たようだ。
前にも書いたが、日本だけなら必要のないバージョンだが世界的にはまだまだブロードバンドが普及していない国も多いため必要なものである。

通常の2点指定のバージョンと同じで、出力時はグラフファイルをキャッシュから読み込むことを期待して、透過処理を用いて実現している。
ブロードバンド版では合成した画像を表示しているため、その時点でキャッシュに入ることはないが、そもそもブロードバンドなので画像の重さはそれほど気にしなくても良い。
また、2点指定と同様に、それらを組み合わせた画像のダウンロードもできるようになっている。

公開がブロードバンド版よりも数日遅れたのはそちらの対応が思ったよりうまくいかなかったからのようである。

2008年7月23日水曜日

Line Width

Shortest Path Graphic では経路が表示される線の太さを2としてデフォルトにしている。
開発者やユーザーの間では細いし3か4にした方がいいのではないか?との意見も出ている。

ただ、Resolutionを1600にするとちょうどよく表示され、画像として保存した場合に2の方が綺麗になるという理由もある。
また、USAでは2でも太いくらいでマップに依存することかラも2が適切と判断している。

ログを見てみてもユーザーはデフォルトで実行することが多いので難しいところだ。
グラフやResolutionによって自動判断するというのも手かもしれない。

2008年7月22日火曜日

経由点バージョン

Shortest Path Graphicの経由点バージョンが数日前正式に公開されたようだ。

公開直後はバグがあったようだが、今はすでに修正されてるようで大きなバグは見つかっていない。
USAのグラフで中継点を多く指定するとやはり実行時間が増えてしまう。
それでも初期バージョンのように2点で1分かかっていた頃よりは高速化されているので10点以内なら1分かかることはないであろう。

どうやらこのバージョンでは同じグラフファイルで2人が同時に使用すると2人目は実行できなくなっているようだ。

2008年7月21日月曜日

Resolution変更

Resolutionを変更すると座標の方も変わるのが普通のShortest Path Graphicの仕様だ。
しかし、Viaバージョンでは複数の座標を渡しているため、その計算が非常に大変になっている。

ページを読み込んだときにすべての座標をJavaScriptの変数に格納してしまい、Resolutionが変更されたらすべての座標を計算する方法で実装した。

2点指定のバージョンでもそうだが、その時点の座標との相対値を使用しているため1回1回計算しているので最初の座標と少しずれてしまっていたりするのが難点・・。
元の座標から計算するようにそのうち変更する予定。

2008年7月20日日曜日

実行時間

いつの間にかShortest Path Graphicの結果画面で実行時間が表示されるようになっている。

実際の計算時間、画像の変更時間など内部処理に用いた時間をすべて計測しているようだ。
画像の読み込み時間などの測定はクライアント側のネットワーク等に大幅に依存してしまうため計測していない。
実際にはReal Timeに気持ちプラスした程度の時間がマシン側の時間であろう。

2008年7月19日土曜日

timeコマンド

Linuxのtimeコマンドは標準エラー出力されるため、ただのリダイレクションではファイルに保存されない。

(command obj > /dev/null) >& out

といったようにする必要がある。

2008年7月18日金曜日

中継点

中継点を複数指定できるShortest Path Graphicの準備はほとんど終わっている。
現在、バグ探しや、最終調整を行っているらしいので近いうちに公開されるだろう。

負整数の入力で無限ループに陥るなどのバグ報告があった。
入力をはじいてた部分を通らないように変更してしまったためであったがもう少し厳しくチェックをいれる必要がある。

また、結果表示ページに入力したルートを表示するかどうかは途中の仕様が変わっているので未だ不確定な状況だが、機能を落としたくないということでなるべく削らないで行く方向のようではある。

2008年7月17日木曜日

ソース改変による仕様変更

Shortest Path Graphic のクエリ変更に従い、今まで機能していた仕様を削除しているものもある。

Resolutionが変更されると座標も同時に変更する仕様になっていたが、1個以上座標が指定されているときは変更できなくなった。

元から同じサイズで扱えと言いたいところもあるので、大きな影響はないであろうがちょっと寂しい。

2008年7月16日水曜日

ソース改編3

引き続きShortest Path Graphicのソースの改編を行っている。

先日のClearボタンの話であるが、Setされた時点では入力されたデータは変数としては格納されていない。実際に扱うのは変更不可のテキストに入力されたデータから扱っている。

座標の指定が
(x1,y1) -> (x2,y2) -> (x3,y3)・・・
となっているため、->を基準にClearボタンなどを動作させている。

->が1つもなければ座標は1つ以下であるから全部クリアしてしまうことと同じ。
逆に2つ以上->があるときは一番最後の->まで消してしまえばよい。

->は複数存在するため後方検索しなければならないので、JavaScriptの
str.lastIndexOf()を用いている。

2008年7月15日火曜日

ソース改編2

Shortest Path Graphicのソースの改編を行っている。

今まで通りクリックで座標を指定するが、その時点では確定せずSetボタン(仮)を押すことで確定。
次の点を指定して同様にSetボタン(仮)を押すことで確定。
これを繰り返し最後に、Submitを押す仕様。

ひとつ前の決定をクリアしたい場合にはClearボタンを、全部クリアしたい場合はAll Clearを押せばよい。

2008年7月14日月曜日

ソース改編

最近更新されてないように見えるShortest Path Graphicだが、いま大きなソース改編を行っている。

先日書いたとおり、経由点を指定できるような仕様に変更している。
1点だけ経由するバージョンを仮に動かしていたが、新仕様では複数点に対応している。

そのためのグラフィック的な仕様から内部の仕様まで大きく変える必要があるため、少々時間がかかってしまっている。

2008年7月13日日曜日

医者

先日医大のオーケストラのOBのオーケストラに参加させていただいた。
市民オケに参加したことはあるが医大関係は初めてのことだったが、医大のOBオケということで実際の医者もいるわけで、医者の知り合いが居るというのは人生長く考えて悪いことではないと思う。

2008年7月12日土曜日

高速道路

経過点にも対応するShortest Path Graphicだが、実際に使ってみると結構離れている道でも同じルートを途中まで通ることが多いのが視覚的にわかる。
今までそのように言われていたのは知っていたが、実際にやってみると改めて思い直すものだ。

2008年7月11日金曜日

使われる道路

3点を入力し、出発点、経由点、到達点での最短経路を表示するオンラインソルバーを非公式に作ってみた。
改良の余地はあり、まだ公開には至っていないが近いうちにこちらに公開されるであろう。

今のところは2回プログラムを起動させ、画像透過を2回行っているだけだがクエリファイルを作り、実行時間を早くするような方針にする。

2008年7月10日木曜日

ログ2

Shortest Path Graphicではログをつけ始めている。
使用しているブラウザも残した方がいいんじゃないかということで、そういった情報も残すようにした。
PHPでは、
http_user_agent= getenv( "HTTP_USER_AGENT" );
で環境変数を取得できるので、これをそのまま出力している。
別にブラウザだけである必要はなく、情報は細かい方がよいので何も処理せずそのまま残している。

Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9) Gecko/2008052906 Firefox/3.0
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)
Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.15) Gecko/20080703 Vine/2.0.0.15-1vl4 Firefox/2.0.0.15

こういった形で出力されている。意外にこれだけで細かいことまで調べられることがわかる。


convert時に何かあったか、プログラムの連携などといったログも残したいと思っているのでそちらも随時対応していきたい。
その場合は今のログの残し方の形式を少々複雑にしなければならないが・・。

2008年7月9日水曜日

ブラウザの「戻る」ボタン

ブラウザの「戻る」ボタンで戻るとキャッシュからデータを読み込み、こちらが意図しているような動作をしてくれないことが多々ある。

Shortest Path Graphicでも、Resolutionの値と画像のサイズで異なってしまう現象が発生してしまう。

解決策として、キャッシュを保存させないなどを考えたが、ただでさえサイズが軽くない画像を扱う以上、なるべくならキャッシュから読み込んで欲しいので新しいウィンドウで開くという方法を採用した。

悪くはないが何かしっくりこない・・。

2008年7月8日火曜日

ページ遷移

Shortest Path Graphicでは、入力ページ、計算ページ、出力ページに分かれている。

入力ページ→計算ページは Submitボタンで遷移。
計算ページ→出力ページはheader("location")を使っている。

そもそも入力エラーが合ったときにheader("location")で最初のページに戻れば良かったのだがすっかり忘れていたのでその処理をした。
ちなみにheader("location")はそのページの最後まで処理をするので途中で終わらせるときは
exit;
をつけてやらなければならない。

2008年7月7日月曜日

ログ

ご指摘をいただいたようにこそこそとShortest Path Graphicのログをつけ始めている。

とはいえ、まだまだ簡易版でプログラム側との連携をしていくよう改良していく予定。
今ログからできることは同じ状況の再現のみで実行状況を逐次チェックまではしていない。

色々ファイル状況などと複雑に絡むのでいったんここまでを動かしておいてそこから変更していく方針。
当たり前だが、ユーザー側からは何も変わってないように見えるはずである。

2008年7月6日日曜日

Shortest Path Graphic

気がつけば3000行を超えていて意外に早いものだと思わされた。
実際はIE用を別に作ったり、ブロードバンド版、ナローバンド版で分けていたりするのでそこまで書いているわけではないが。

ソースも汚くなり始めているので落ち着いたら少しずつ整理していきたい。

2008年7月5日土曜日

今後の方針

Shortest Path Graphicの基本的にやりたかった部分の実装は終わっている。
今後は他の人の意見を取り入れての変更が中心になるだろう。

緯度経度に対応して、GoogleMapsとの連携などそういったこともしていきたい。
こちらは共同研究者の方との連携が必須となる。

2008年7月4日金曜日

謎のバグ

宣伝が多いんじゃないかとつっこまれたくなるようなShortest Path Graphic

点を2つ入力して結果を返すんだが、どのような条件かわからないが、最短パスが表示されないことがある。同じ点でもやり直すと結果が出るため原因がわからない・・。

パスが出ないと言うことは、arcファイルとpathファイルを合成するときにpathファイルがないということしかはっきりしていない。
今動いてるのが偶然なのかどうか引き続き検証中・・。そのような現象が起こってしまうときの状況を随時募集中・・。

2008年7月3日木曜日

フルブラウザ

最近の携帯電話にはフルブラウザ機能がついているものも多い。

Shortest Path Graphicのナローバンド版が出たということで今までのバージョンでは画像ファイルの容量の関係で辛かった携帯電話(DoCoMo SH906i)のフルブラウザで動作させてみた。

一番サイズが大きいと言われているNYでも表示させることができるが、PNGファイルの透過に対応していないらしく、パスが現れなかった。
しかたがないので、Downloadボタンとやらを押してみて合成させたPNGファイルを表示させたところ無事パスも表示され、携帯電話でもとりあえず無事動作した。

残念なのはクリックに対応していないため、座標が手入力な所だ。

2008年7月2日水曜日

ナローバンド版

こっそりとShortest Path Graphicのナローバンド版を公開している。
これによって海外でまだまだブロードバンドが普及していないところでも使いやすくなったはず。
幸か不幸か自分でその環境を試しにくいというのがあるが・・・。

今までとの違いは以下のような形となっている。

・地図データの画像ファイルのサイズの基本を1600から800に変更し、それに伴い実行画面のResolutionのMax値を800に。

・結果画面では元の画像ファイルをキャッシュから読み込んでくれることを期待してパスを作ったファイルとの透過にし、読み込む容量が減ることを期待。

・上のままでは画像の保存ができないので別にDownloadボタンを使うことによりそこで2つのPNGファイルを結合して表示させている。

2008年7月1日火曜日

IEにおける座標の取得

Shortest Path Graphicにおいて、jQueryにおいてIEのみ座標指定がおかしくなる話は先日書いたとおり。

調べてみたところIEではスクロールの部分を余計に足してしまったりするらしいのでそれを引いてやらなければならない

if(window.createPopup){
var x = e.pageX - $('#image').position().left - document.body.scrollLeft;
var y = e.pageY - $('#image').position().top - document.body.scrollTop;
}else{
var x = e.pageX - $('#image').position().left;
var y = e.pageY - $('#image').position().top;
}

document.body.scrollLeft(Top)の部分があるのとないのでIEへの対応をしている。
実際にはif文が乱立してしまうのでIEのみ別のページに飛ばして対応している。


参考:http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter05/013/index.html