2008年6月30日月曜日

IEへの対応

IEが他のブラウザと違う挙動をしやすいのでIEのみ別のページに飛ばすようにした。

<?php
$HTTP_USER_AGENT = getenv( "HTTP_USER_AGENT" );
if( ereg( "MSIE", $HTTP_USER_AGENT ) ) {
header("location:ie_senyou.php");
}
?>
逆にIEのページからはeregの部分を否定にして元のページに飛ばすようにしたのは言うまでもない。

参考:http://blog.caraldo.net/2007/07/php.php

2008年6月29日日曜日

問題

公開から大きなトラブルもなく微妙にバージョンをあげてきたと思われていたShortest Path Graphicだが、ここにきて、大きな問題が見つかってしまった。

IEでの座標の取得に支障が出ていたのに全く気づかなかった。
小さい地図では問題ないんだが大きな地図や画面を小さくしたときに影響が出る。
なんとかしなければならないが対策が思いつかない・・・。

2008年6月28日土曜日

ナローバンド

日本ではブロードバンドが普及しナローバンドはあまり見なくなった。
しかし、海外ではまだまだそういった環境も多いためShortest Path Graphicでは海外ユーザーのためにそのような環境も作成する予定。

現バージョンとの違いは以下のようにしようと考えている。

・1600の解像度の画像を800に変更。
・結果ページにおいて、現在はpngファイルの合成をしてから表示しているが、少し前に書いた透過の技術を用いて実装。

解像度を落とすのは根本的対策で、結果ページの方法はキャッシュから画像を読み込んでもらうことにより、表示を早くしようという考え。

また、時間がかかってもいい人用に解像度3200といったものを用意してもいいかもしれない。

2008年6月27日金曜日

VMware-toolbox

VMware-toolboxがインストールされていると、ホストOSとのコピペができたりマウスの透過ができたり非常に処理がしやすくなる。

インストール方法は1年前くらいに書いているので省略するが、自動実行するには
Vine4.xにおいてはtoolboxを起動したいユーザーで
デスクトップ→設定→高度な設定→セッション
で自動起動するプログラムのところに
/usr/bin/vmware-toolbox

とすればよい。自分の場合別のワークスペースに移してしまうのでこのままだが、最小化したければ

/usr/bin/vmware-toolbox --minimize

としておけばよい。

2008年6月26日木曜日

画像の読み直し

今までは画像の大きさ変更をページごと読み直しPHPで実装していたがJavaScriptを用いて実装した。

ちょっとした事情があり結果画面のみにしか採用していない。
将来的には入力画面でも採用することになると思うが、地図自体の変更には採用しない予定。

余談だが今回もIEだけがなかなかうまく動いてくれなかった。
やはり、ブラウザごとにコードを書くようにしたほうがいいのかもしれない。

2008年6月25日水曜日

ブラウザ

先日ブラウザによって挙動が違うという話をした。
そのときはSafariが厳密に読んでくれたのがいいのか悪いのかはわからないがSafariのみ対応していないという状況であった。

今回はIEが読んでくれない現象が生じてIEだけ対応できないという状況になってしまった。
これに関してはnameを指定していなかったからなのだが、残り2つのブラウザはこれらを考慮して読んでくれていた。一つしかないのならこれを読んでほしいものだが、まぁ仕方がない。

Ajaxが流行ってきているが一番の問題はこういったブラウザ間で挙動が違うクロスブラウザ問題を考慮しなければならない。
とはいえ、ブラウザを何個もインストールしているのはちょっと悲しくなる。

2008年6月24日火曜日

Windows Update

自分のブログによくWindows Updateができないというトラブルで流れてくる人がいる。

エラーのログが「%windir%/WindowsUpdate.log」(ファイル名を指定して実行で打ち込めばよい)というところにあるので、そのエラーナンバーを確認する。後はそれを適当に検索をかければよいでしょう

0x80004002に関しては昔自分も書いている。

%Windir%\system32\net.exe stop bits
%Windir%\system32\net.exe stop wuauserv
%Windir%\system32\regsvr32.exe atl.dll
%Windir%\system32\regsvr32.exe jscript.dll
%Windir%\system32\regsvr32.exe msxml3.dll
%Windir%\system32\regsvr32.exe softpub.dll
%Windir%\system32\regsvr32.exe wuapi.dll
%Windir%\system32\regsvr32.exe wuaueng.dll
%Windir%\system32\regsvr32.exe wuaueng1.dll
%Windir%\system32\regsvr32.exe wucltui.dll
%Windir%\system32\regsvr32.exe wups.dll
%Windir%\system32\regsvr32.exe wups2.dll
%Windir%\system32\regsvr32.exe wuweb.dll
%Windir%\system32\net.exe start bits
%Windir%\system32\net.exe start wuauserv

これをコピーして
ファイル名を指定して実行→cmd→でDosの窓が出てきたら貼り付ければ全部順番に実行してくれる。

昔書いたブログが役に立ってしまったというのはここだけの話だ・・。
そしてこのOSは自分のアップデートもうまくできないのですね。

参考:http://d.hatena.ne.jp/Gazebo/20070802/p1

2008年6月23日月曜日

意見

様々なユーザーから意見をいただいているShortest Path Graphic

海外ではナローバンドの回線も少なくないので、そういったバージョンも作った方が良さそうだ。
また、逆に高解像度版を用意してUSAでの楽しさも体感してもらうのもおもしろいかもしれない。

ただ、自分が負けず嫌いなのもあるが「ナローバンドの方はこちら」と書かれていても動作に影響がなく遅いだけならブロードバンド版の方を選んでしまう気もする。

2008年6月22日日曜日

高速化

今までUSAのグラフになると1分前後かかっていたShortest Path Graphicだが、10秒以内に解けるようになっている。
元々計算時間より、グラフデータの読み込みの時間が多かったため、それを削減した形。

現在はファイルを使い回しているため、表示のページを更新すると後から使用したユーザーの結果が表示されてしまうことがある。
今後の方針としては、クエリ番号をつけてユーザー数に応じて出力ファイルを残しておく予定。

2008年6月21日土曜日

ユーザー視点

知り合いの大学1年生(理系)にShortest Parth Graphicを使わせてみた。

使い方以外の前情報を与えずにやらせてみたところ、USAを最初に実験していた。
やはり一般的に大きい地図の方が興味があるのだろう。

「山道などの速度は考えているんですか?」
と質問されたが、これは最短路なので距離が最小のものを出している。
とはいえ、グラフファイルには高速道路等を加味したものもあるとのことなのでいずれそちらにも対応するだろう。

余談だが、ブックマークしてくれたそうだ。

2008年6月20日金曜日

Shortest Path Graphicのバグ

公開時点でSafariで表示できないことをすっかり忘れていた。

携帯電話のフルブラウザでもやってみたが、できなくなっていたのに気づき(当初はできた)ソースを見直してみるとHTMLのタグのミスであることが発覚。
修正したところSafariでも携帯でも表示できることを確認。

間違ったタグを無視してなかったことにして読み込むブラウザがいいのかそれを厳密に解釈するブラウザがいいのかは別としてHTMLはエラーメッセージとかがでないので開発は非常にやりにくい。

2008年6月19日木曜日

Shortest Path Graphic

準備を進めていた最短路問題におけるオンラインソルバーが公開できる程度になった。
http://opt.indsys.chuo-u.ac.jp/portal/
で試すことができる。

まだまだ試作段階のため改良点は多い。同一の地図で複数ユーザーがアクセスすると2人目以降のアクセスはブロックしてしまうので実行に時間がかかるUSAの実行ではビジーになりやすいので注意していただきたい。

また、FireFox3ではWebページの座標で10程度のずれが生じてしまう。(v2では問題なし)

Shortest Path Graphic使用方法
画像の好きな点2つをクリックし、座標が2つ入力されていることを確認する。
Submitをクリックして計算するのを待てば最短路が書かれた画像が表示される。
この画像は右クリックの画像を保存などでローカルに保存することもできる。

2008年6月18日水曜日

Firefox3

が正式リリースされました。
サクサク動いていい感じです。
24時間ダウンロード数のギネス記録を狙ってるらしいので興味のある方は日本時間19日午前2時までにダウンロードしてみてはいかがでしょうか。

2008年6月16日月曜日

ShortestPath Online

をこっそりと昨日から仮サーバーで動かしている。
サーバーも実際に稼働予定のマシンにうつしてみて実行・・!

と思ったがどうも変数の受け渡しがうまくいかない。
結局php.iniの設定の問題であったがマシンが違うとそういうところも気を付けなければならない。

2008年6月14日土曜日

副都心線

たまたま用事があったのでさっそく副都心線に乗ってみた。

和光市→小竹向原→池袋→新宿三丁目→渋谷

というターミナル駅?しか停車しない急行は悪くないと思う。
途中駅を通過するときは当たり前だが、減速するようだ。

和光市民あたりはあまり変わらない印象だが、和光市から埼玉方面の東武東上線沿線は意外に便利になるのかもしれない。

2008年6月13日金曜日

gfarm v2

v1のときに問題のなかった
config-agent
がエラーで止まってしまう。
/usr/local/bin/config-agent: line 232: mkcnf_agent_sysdep: command not found
/usr/local/etc/gfarm.conf: updated
created /etc/init.d/gfarm_agent
added gfarm_agent service
Starting gfarm_agent:/usr/local/bin/gfarm_agent: symbol lookup error: /usr/local/bin/gfarm_agent: undefined symbol: GFARM_ERR_NO_SUCH_OBJECT [failed]
config-agent: cannot start gfarm_agent
config-agent failure

ちょっと調べてみるとfuseかglibc-not-hiddenを入れなければならないらしいが・・。
逆にv1のときはなぜ動いていたか疑問になる。

config-agentが実行できないため
gfrun,gfgrep等のコマンドも
gfrun: symbol lookup error: gfrun: undefined symbol: gfarm_spool_server_port
gfgrep: symbol lookup error: gfgrep: undefined symbol: gfs_pio_get_node_rank

等が使用できない。どうしたものか・・。
fuseもCentOS5版があればいいのだが。

2008年6月12日木曜日

GFarm2のインストール

GFarm2のインストールに戸惑っていたがとりあえず解決した。

v1に比べて若干変更があったようで、
http://filesystem.g.hatena.ne.jp/n314/
を参考にさせていただいた。

gfarm2.1.0というフォルダがあるとする。
cd gfarm2.1.0
./configure
make
sudo make install
ここまではv1と変更がない。

config-gfarm -t(root)
で問題なければ
config-gfarm(root)
を実行。
この時PostgreSQL等が起動していたらエラーが出るので
ps -ef | grep postgre
などでプロセスを確認してkillすればよい。

v1はこのままconfig-gfsdを実行していたが、
v2の場合、
gfhost -c -a x86_64-centos5-linux -n 4 -p 600 ore00.optsys.xxx.ac.jp ore00(user)
を先に実行する。
useradd -c "Gfarm gfsd" -m _gfarmfs
した上で、
config-gfsd -t
間違いなければ
config-gfsd
で完了。
gfhostについても-pでポートを指定しなければならなくなったようだ。
また、そのままで全てのユーザーで使えるわけではなく、
gfuser -c hoge hoge /hoge ""
のようにユーザーを登録しなければならなくなった。
また、config-gfarmを実行したユーザーのみはこの作業は不要である。

2008年6月11日水曜日

htmlで画像を重ねて表示

ご存じの人も多いかと思うが、PNGやGIFといったファイルは「透過色」なるものが用意されており、後ろが透過して見えるような色(?)を使うことができる。

故に画像を重ねれば見た目合成したようにすることができるのだが、単純にhtml上にImgで並べるだけでは合成されない。

<img border=0 src="gazou.png" width=400 height=400 style="position: absolute; top:0; left:0;">
<img border=0 src="sitagasukeru.png" width=400 height=400 style="position: absolute; top:0; left:0;">

<>をhtmlタグとして認識されてしまうらしく、全角で表示しているのでコピペする方は注意していただきたい。

のように強制的に位置を決めてやってしまえば良い。
上の例だと上から0,左から0の位置に400x400で表示するという設定。

スタイルシートに書いたけどうまくいかなかったので直接貼り付けたのはここだけの話。

2008年6月9日月曜日

座標を渡す その2

前回別ページを用意して解決する方法を書いた。
落ち着いて考えるとそもそもPHPを使えばjavascriptに変数を渡すことは可能なのでそこをif文にすることにより1つのファイルにすることにした。
1つのファイルになっただけで、実質的には自分のページ自身を再度呼び出しているに過ぎない。

その他の部分も修正し、見た目が前の2つ用意していたときと全く変わらなくなった。

実行ページではまたいろいろと別の処理をしなければならなそうなので別ファイルにしたままにした。

2008年6月6日金曜日

座標を渡す

先日の座標を取得するプログラムの件だが、一応の解決はした。
元々最短路問題において出発点と到着点を取得するのが目的であったのだが、1点のみの座標取得は容易にできるのに対し、その情報を保持しつつ2つめの点の取得にはいろいろと条件がかかってしまっていた。
JavaScriptでは静的な情報しか保存できないのが厄介。


その問題は以下のようにして解決した。


ほとんど見た目が変わらないページ1とページ2とページ3を用意する。

ページ1において座標を取得。
決定ボタンをおき、出発点の座標をページ2にわたす。

ページ2において到達点の座標を取得する。
出発点の座標はこの時点で変数に格納されているため失われることはない。
決定ボタンとクリアボタンを置き、決定ボタンを押すと二つの点の座標をページ3に渡す。
クリアボタンを押した場合はページ1に戻る。

ページ3ではそれらの座標を使って処理すればよい。


これにより問題なくプログラム側に座標を渡すことは可能になった。

グラフィック的に点をクリックするとそこが塗りつぶされるとかそういう効能があるとベストなので改良の余地は多々ある。
見た目的にもわるすぎるのでそのあたりも考慮しなければならない。

2008年6月4日水曜日

PHPとJavaScript

研究の関係でブラウザ上で画像のクリックした部分の座標を取得するプログラムを作らなければならない。

JavaScriptでの座標取得は比較的容易にできる。
しかし、その後にPHPで作業をするためにPHP側の変数として扱うためには$_GETや$_POSTを用いてページをリロードするしかない。

当たり前の話だが、PHPの変数をJavaScriptに与えるのは容易である。

2008年6月3日火曜日

GFarm2.1.0

がリリースされたそうなのでインストールしてみるが、

config-gfarm

を実行するとPostgreSQLの開始時にエラーが出る。

ps -ef grep postgre

をしてみてもプロセスは消えているんだが・・。

1.4でも大きな問題は発生していないのでしばらくはこっちを使っていよう・・。