header image

Ryuzeeの他サイト

mixi Twitter Twitter

Categories

携帯対応

QRコード

RING

人気ブログランキング



新着記事

2008/11/05 20:38:24 PHP none Comments
add Hatena Bookmark Tags: ,

前回のエントリでは、海外でmojavi2をPHP5で動作させるプロジェクトをやっていた人にメールして、残念な結果に終わったところだったのだが、最終的になんとか動作するようにもっていけたので、そのメモ。

手順は以下の通りだ。

  • yumaプロジェクトの最新アーカイブである、yuma-snapshot-2005.4.26を入手する。
  • 現在はwebarchiveでしか入手できないので、こちらに転載した。
  • アーカイブを解凍して出てくるmojavi-all-classes.phpを以下の通り修正する。場所は1249行目からのsetAttribute関数とsetAttributeByRef関数で以下のようになる。
function setAttribute ($name, $value, $namespace = 'org.mojavi')
{
    $org_namespace = $namespace;
    $namespace        =& $this->getAttributes($namespace, TRUE);
    $namespace[$name]$value;
    if (USE_SESSIONS) {
        $_SESSION["attributes"][$org_namespace][$name] = $value;
    }
}
function setAttributeByRef ($name, &$value, $namespace = 'org.mojavi')
{
    $org_namespace = $namespace;
    $namespace        =& $this->getAttributes($namespace, TRUE);
    $namespace[$name] =& $value;
    if (USE_SESSIONS) {
        $_SESSION["attributes"][$org_namespace][$name] =& $value;
    }
}

本質的な問題としては、セッションを保持する部分がうまくいっていないので、小手先で無理やりセッションに値をセットするようにしたってこと。
もっと良い手がないかは考える。

2008/10/31 06:38:06 PHP 1 Comments
add Hatena Bookmark Tags: ,

前回のエントリで書いたとおり、mojavi2をPHP5で動作させるプロジェクトが海外にあったみたい(今はもうない)で、入手できたアーカイブが最新でないかもしれないので、作者の人に以下のように問い合わせしてみた。

Hello.

I am Ryuzee, programmer in Japan.

I have been developed an application with PHP4 and mojavi2.
And now I have to migrate this application to new environment with PHP5.

I think the best solution is to rewrite the application with mojavi3 or mojavi4,
but the application is too big to migrate.

I've looked for the way how to work with mojavi2 on PHP5, and I've found your website (at web.archive.org).
I can download yuma-snapshot-2005.4.26, but I think this version is not a latest release.
($user->setAttribute and others are not working correctly)

So, can you send me a latest-version of Yuma ?

Thank you for your reading my email.

Best regards.

なんて出鱈目英語で送ったら、即効レスポンスが来たよ。回答は、

  • 良い返事ができれば良かったんだけど・・・
  • もう2年以上前の話で、プロジェクトをやめてしまって、もうソースコードもlostしてしまったんだよね。
  • mojavi3からforkしてできたSymphonyが良いと思うから試してみるといいよ。

ちゅうことだった。残念っ。がんばるしかないか。

2008/10/28 20:53:48 PHP 2 Comments
add Hatena Bookmark Tags: ,

いつもいつも嵌っているのだが、今回もまた難題。

PHP4+mojavi2で動いているアプリなんだけど、さすがにPHP4の保守も切れたので、PHP5に変えないといけない。
んで、mojavi2なんだけど、古いフレームワークということもあって、PHP4までしか対応しておらず、選択肢としては、

  • mojavi3以降(今の最新はmojavi4)に移行する
  • 無理やりmojavi2をPHP5対応にする

という二つの選択肢から選ぶことになる。
どっちが良いのか一瞬悩んだのだが、mojavi3以降にすると、アプリ本体に手を入れる箇所が多くて面倒そう(context対応)なので、無理やりmojavi2をPHP5対応させる方式を選択した。

いやー、イバラの道っぽいよ・・・。

とりあえず、PHP4とPHP5の違いとして、参照渡しがあるので、関数に&がついているやつを片っ端から外せばなんとかなるような、ということで色々やっているが、Smartyとの連携あたりがイマイチうまくいかない。

海外で同じことをやった人がいるみたいなのだが、もうサイト自体もなくなっており、いまはこちらから参照可能。ここから入手したやつをxamppで試したところとりあえず動作した。

ちゅうことでまだまだ続く予感。

2007/05/25 06:46:24 PHP none Comments
add Hatena Bookmark Tags: ,

いまさらmojaviなわけですが(^^;

mojavijはデフォルトでは、Session情報をファイル保存するのだが、設定によって、PostgreSQLSessionStorageやMySQLSessionStorageといったクラスを使うことでデータベースにsessionを保存することが出来る。

しかし、PostgreSQLとMySQLには対応しているのだが、Microsoft SQLServerに対応したSessionStorageクラスが存在しない・・・。
仕方ないので以下のように対応した。

  1. MySQLDatabase.class.phpというファイルはSQLDatabaseというクラスを継承した、MySQLに接続するためのクラスであるが、こいつをコピーして、MSSQLDatabase.class.phpを作成。mysql_connect、mysql_pconnect、mysql_close、mysql_select_dbといった関数を全てmssql_*に置き換える。
  2. MySQLSessionStorageクラスをコピーしてMSSQLSessionStorageクラスを作る。中でsqlを発行しまくっているので、mysql_*をmssql_*に直す。さらにmysql_escape_stringはstr_replace関数に置き換える。またセッションデータを単純にSQLServerのカラムには入れられなさそうなので、前にやったようにbase64_encodeしてテキストデータとしてsessionデータを保存する。当然ながら復号の箇所も対応する。

結果、以下のような設定状態になる。

webapp/config/factories.ini

[storage]
        class = "MSSQLSessionStorage"
        param.db_table = "session"
        param.db_id_col = "id"
        param.db_data_col = "data"
        param.db_time_col = "time"
        param.session_name = "SID"

webapp/config/databases.ini

[databases]
        default = "Default"
    [Default]
        class = "MSSQLDatabase"
        param.user     = "sa"
        param.password = "****"
        param.database = "testdb"
        param.host     = "localhost"
        param.port     = "1433"

webapp/config/settings.ini

[.settings]
        USE_DATABASE = "On"

2005/10/18 23:37:14 PHP, 日記 none Comments
add Hatena Bookmark Tags: , ,

昨日締め切りだったコラムをなんとか入稿。
結局書く時間がなくて横浜センターから東京に向かう電車の中でてきとーーに書いたけど、とりあえず上司からはOK貰う。あんま読んでないな。間違いない。
しかし、ちょっとしたCGIを一日で作れって言われたら喜んで作るが、一日で原稿をかけと言われたら、遠慮しとくわ。

それから会社では「暇」だったのでmojaviで遊ぶ。
くだらないが、mojaviでのアクセスURLをどれだけ短くできるかどうかを試して遊ぶ。ちなみに答えは

http://ホスト名/s/m/o/a/i

ちなみに
sの実体はindex.phpなので、httpd.confにAliasの設定をする。このとき、apache2.0系を使っている場合は、デフォルトでは動作しないので、PATH_INFOを受け付けるようapacheの設定を変更する必要があるので念のため。
mはmodule、aはactionの短縮名称をconfig.phpに設定。oはmodule名でiはaction名である。
上記の覚え方だが、

渋谷でモアイ

と覚えていただきたい。
なお覚えても何も得しないが、俺のしったことではない。

2005/07/29 00:12:04 PHP, 日記 none Comments
add Hatena Bookmark Tags: , , ,

26日の続きで今度はDBの検索部分を中心に新機能と既存機能の修正を行う。
他人(協力会社)が作ったソースなので厳しいかと思ったが、mojaviとDB_DataObjectを使っているので汚く作りようもなくまずまずまとも。xoopsのソースとか参考にして作ったのかな?

ただソースのコメントには以下のように書いてある。

// 条件足してみる
(略)
// みつけてみる
(略)
// フェッチしてみる
(略)
// いらなさそうなのでコメント
(略)
// なんだかふざけた仕様変更によりコメント
(略)
//小手先対応
(略)

すいません。こんなの納品されても困るんですがorz

 

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0