2008年12月31日水曜日

多重起動4

どうやらPHP上でexecで呼び出すとプロセスを別に生成するらしい。
だから今まで書いたようなプロセス増えすぎ現象はそれで理解できる。

別の方法で呼び出す方法もあるが、プロセス数は一定に増えるので多重起動時のプロセス数を増えるプロセスのn倍にすれば解決する。
できれば1プロセスにしたいところだが、バイナリが変わってもシステム自体を大きく変えない限り大きな問題にはならないからそれで行くことにする。

2008年12月26日金曜日

多重起動3

停電中で落としていたサーバーも無事復旧したので多重起動を実装してみることに。
サンプルを作ってとりあえず動作確認もすませ、実装してみる。

思うように動きません・・。

とりあえずサンプルの時点で

$check = exec("ps -ef | grep -c binary_name");

をしてやると$checkが2になるのはわかっていた。1つはgrep自信でもう1つは謎だったが、とりあえず-2してやることに。

普通に動かしてみて、

$check = exec("ps -ef | grep -c binary_name") - 2;

の値を確認すると

$check=5

増えすぎです。

同時にもう一つ動かしてみると・・。

$check=5

変わりません。せめて増えてくれ。

2008年12月23日火曜日

多重起動2

結局多重起動は簡単な対策で取れることが判明。

ps -ef |grep -c binary_name

で実行数が分かるのでそれで個数制限すればいいだけでした。
最初からなぜこれに気づかなかったのだろうか。

2008年12月21日日曜日

多重起動

多重起動防止にファイルを使おうという話が出ていた。

1,実行数を書くファイルを用意する
2,実行したときにそのファイルを読み込み、一定数以下なら実行して実行数をインクリメント
3,実行後デクリメントして再びファイルに書き込む


一見これで動くように思うが、落ち着いて家に帰って考えてみると実行中にブラウザを閉じると値が増えたままになってしまいそのうち動かなくなる。
やはり、落ち着いてジョブマネージャ等を使うのがいいのだろう。

2008年12月20日土曜日

HTMLのdisabled

disabled属性が微妙。
ShortestPathの方でも当初は使う方向で進めていたがブラウザによって挙動が違うので避けていた。

SDPAオンラインソルバーの方でCPU数を指定するときに使っていて、その初期値がおかしくなっていたので修正。そのついでにちょっとソースを色々と細かく見てみるとこれって動いたっけ?
と思い色々なブラウザで挙動をチェック。

Firefox:正常動作
IE8:動かない
Chrome:動かない
Safari:動かない
Opera:正常動作

となった。こうしてみてもFirefoxの安定性は高い。一番規格に準拠しているのもFirefoxらしい。
ちなみにIEは規格を無視して独自規格で同じような機能をつけている。

disabled属性という単純なモノでもここまで差が出るので恐ろしい。
disabled属性よりは、hidden属性の方が安定している気がするのでそちらですむならそちらを使用した方が良い気がする。
また、disabled属性が動作しないというわけではなくdisabled属性のJavascriptによる変更ができないといった方が状況としては正しい。

2008年12月19日金曜日

オンラインソルバーの将来性

オンラインソルバーも基本機能はそろってきていると思う。対応できる問題が少ないというのが根本的な問題ではあるが。

ここまでくると、ユーザー側の使いやすさをもっと考える時期でもあると思う。
Ajaxを利用するなどと言うとさすがに無責任か。
AdobeのFlexなどを用いるのもありだと思う。見た目だけでなく色々な機能を比較的手軽に利用できる。
とはいえ、きちんと覚えるには1ヶ月くらいはかかってしまいそうなのでリスクも大きい。

学生証を添付すればAdobe Flex Builder 3が無償で手にはいるとのこと。
統合開発環境はなかなか手に入らないので、こういうのをやってみる人がいても良いとは思う。
興味がある人がいればの話ではあるが。
(https://freeriatools.adobe.com/flex/)

2008年12月18日木曜日

保守4

新関数を作るという話が出ている。
グラフなりグラフIDなりを引数として、そのグラフに対応する四隅の座標を返すというもの。
今まであまりこういう関数は使ってないが使う用途は色々出てきてもおかしくないし作っておいても損はないかと思う。基本的な機能であるし。

2008年12月17日水曜日

保守3

基本的に保守作業のほとんどは終えている。
これで、新バイナリにも対応できるので少し速くなることも期待できる。
とはいえ、計算速度よりも描画速度等の方がネックなので体感は変わらないかもしれない。

今まで正規化されていた座標を元の緯度経度に近い形(緯度経度を1e+6倍したもの)にした。
Dimacsで使われているデータ通りにしたというとわかる人にはわかりやすいかもしれない。

2008年12月14日日曜日

Google Maps Hacks

オライリーの本です。

今まで、この本に限らずGoogleMapsに関する本はあまり読んだことがなかった。
ShortestPathに使えるかは別として違う視点から見られるのは面白い。

マーカーを減らすのにも非常に面白い手法を用いている。
知らない機能はほとんどなかったが、使い方一つでこういうことも可能なのかと思わされることもある。
Ajax自体がそもそもそういうモノだったりもするのだが・・・。

2008年12月13日土曜日

保守2

今回の保守作業の目的はただのバックアップだけではなく誰でも管理しやすいようにするというものも含まれている。
そのため、ディレクトリの変更等を行っている。
ディレクトリの分け方は入力と出力で決まることになる。
そのほかは大きな変更はない。

2008年12月12日金曜日

保守

現サーバーが落ちてもすぐに復旧できるようにしている。
バックアップのサーバーでShortest Path Online Solverを動かすのが目的。

先日書いたとおり少々移行に時間がかかっているものの大半は終わっている。
またこの移行作業をきっかけに、バイナリを最新のバージョンに変える予定のようだ。

今までIE8で動かなかったものも原因はわからないが、なぜか動くようになっている点も注目できる。
結局は変数の受け渡しがうまくいってなかっただけなのかもしれない。変更している点はそこだけなので。

2008年12月3日水曜日

トラブル

動かない理由としては変数の受け渡しがうまくいかず、$POSTで渡していたものをすべて$GETにすることにした。
あまり良い対策とはいえないが、文字列チェックは内部でしているので大きな問題になることはないと思われる。
とりあえず初期バージョン辺りはなんとか動かすことができている。

全体として変数関連が問題なので面倒だが全ファイルそういう作業にすることになる。

2008年12月2日火曜日

バックアップ

現在Shortest Path Online Solverのメインのマシンと、バックアップのサーバーとしてもう1つ用意しようとしている。

OSも同じだし、コピーすればすぐ動くだろうと楽観視していたらそういうわけにも行かなかった。
色々と問題が発生しているので少し時間がかかるかもしれない。

ついでの作業

別のサーバーでも動かすために、マシン名、ドメイン名などを変数化している。
こうすれば、マシンが別の環境に移動しても新しいサーバーで動かすにしても変数1つ変えるだけで良いので移行作業が楽になるだろう。