2005年8月29日月曜日

PHPのフレームワーク



某掲示板を眺めていたらPradoというPHP用のフレームワークが紹介されていた。ぶっちゃけ初めて知ったわけですが・・・。

まー、簡単に言うとmojaviがStruts系ならこちらはJSF系とか。(JSF系はあまりいじっていないので正直よくわからない^^;)

しかし、最近PHPがJavaの真似をして進化(?)しているのを見てると素直にJava使えば良いんじゃないの?って気がしなくも無い今日この頃。もちろん動作させる環境っていう点ではPHPの方が圧倒的に敷居が低いという背景もあるわけで一概にJavaが良いとは言い切れないけど、目指すところが一緒であるとベースがしっかりしたJavaの方が運用するシステムにとっても良いんじゃないかと思う。また、実体験からくる話ではないけどPHPは規模が大きくなると設計云々ではなくエンジンの問題で非常に重くなると聞いているので尚更かな。

ぶっちゃけ以前にStrutsを使ったものを作って以来Javaが嫌いだったけど、その理由の一つにデザインとロジックを分けてる割にはデザインがしにくかった事がある。これはテンプレートエンジンに何を使うかによって細かく左右される問題だけど、テンプレートエンジンというものを使ってビューとロジックを分ける時点でカスタムタグを使ったり独自の構文をもったファイルをビューとして使うので既存のHTMLエディタではビジュアルな感じでエディット出来いわけで、そうなると後からデザイナがちょこちょことデザインを手直しするわけにはいかなくなる。これじゃ本末転倒だしその為に発生する面倒なクラス作成作業とかを考えるともっと手軽にいきたいと思ってしまって「嫌い」になったわけ。

ただ、最近状況が変わってきてDreamweaverとかがカスタムタグに"一応"対応してきたとか、他の環境でも結局Javaをお手本にしてるので大差無いとかそんな理由でどーでもよくなってきたのも事実。それならつぶしが利くJavaで良いんじゃないかなってのが最近の感想。

なんかこのWebアプリの世界っていろいろ試行錯誤して徐々に前に進んでる感があるんだけど、車輪の再発明的な感触がどうしてもぬぐえない。まぁGUIのアプリを作るって時も色々問題があったわけで完全に綺麗な方向にはどうしてもいけないってのが結論なんだろうか。それなら泥臭い作業はスクリプトで自動化してさっさと作って次の仕事に取り掛かる。言ってみればやっつけみたいな状態にいくわけだけど、これだと張り合いが無いしねぇ。(まぁ実際そういうスタンスのフレームワークもあり、作業効率は結構良いらしいです)

何気にPradoに関しては何も触れてないけど、、、まー気にしないようにw

そういや書いていて思い出したんだけどXSLTってどこ行っちゃったんだろう。

あの辺が現状を打破するのに最適と信じてASP上で簡単なエンジンを作った記憶があるけど、、、懐かしいなぁ




2005年8月23日火曜日

Amazonの1clickって・・・



ギフト券使えないのね・・・orz

ブックカバープレゼントとかやってるんでカート入れてうっかり1clickをポチっとやってしまったら・・・ギフトナンバー入れる前に確定してしまい 糸冬

きっちりカバー代を支払うことに・・・orz




2005年8月18日木曜日

FCS(flashcom)上での共有オブジェクトの扱い



サーバサイド(FCS)で共有メモリを作り、そこにプロパティをセットする。そしてそれをクライアントから見るという形の使い方をしたかったけど、どうしても値が保存されず意図した動きにならない。

Client.prototype.Hoge = function()
{
var test_so = SharedObject.get("test");
trace("version : " + test_so.version);

test_so.lock();

test_so.setProperty("test", "hogehoge");
trace("version : " + test_so.version);

trace("test : " + test_so.getProperty("test"));

test_so.unlock();
trace("version : " + test_so.version);

test_so.close();

var test2_so = SharedObject.get("test");
trace("version : " + test2_so.version);
trace("test : " + test2_so.getProperty("test"));
test2_so.close();
}

このコードをクライアントFlashからつついて実行すると


version : 0

version : 0

test : hogehoge

version : 1

version : 0

test : null


こんな感じになります。test2_soのtestプロパティには「hogehoge」が保存されてくれなくて困っていたのですが、バージョンをとってみて気付いたのは値を変更した場合に1になってるバージョンが再度取得してみると0に戻っている。つまり保存がされていないわけです。

で、結論から行くと


test_so.close();


がガンだったりします。これを消すと


version : 0

version : 0

test : hogehoge

version : 1

version : 1

test : hogehoge


ばっちり(゜∀゜)

新規に作成される場合の共有オブジェクトはクローズすると共有メモリそのものがパージされてしまうらしい。本来このメソッドの挙動は共有オブジェクトへのコネクションをはるものという事を考えるとバグだと思うのですが・・・。ちなみに後の


test2_so.close();


では消えません。こっちは期待通りの挙動です。

一応解決したものの何か複雑なものがありますな・・・。




2005年8月15日月曜日

Flash Remoting系のもの簡単にまとめ








2005年7月31日日曜日

LAMP環境まとめ1



今更ながらLAMPな環境のプログラムを書くことになりそうなのでL(inux)とA(pache)は置いておいて、M(ySQL)とP(HP)の環境についてまとめてみることにする。

PHP


まず、PHPから。とりあえず現状では3つの選択肢がある模様。

カッコ内は現在の最新版



  • 5.1.x


    • まだ開発中なので実用になるかは不明

    • 高速化されたらしい?

    • その他は調査中

  • 5.0.x(5.0.4)


    • オブジェクトオリエンテッドな拡張がされているらしい

    • Javaを真似した様なものらしくあまり評判は良くない?

    • 速度が遅くなったカモ

    • まだ4系の方が人気でライブラリ、フレームワークなどの対応が甘い

    • Unicodeの対応など文字コード関連の修正が入っている

    • MySQLがデフォルトではなくSQLiteがデフォルトのDBに(でもMySQLの方が使われている気がする)

  • 4.4.x(4.4.0)


    • 5系が出た後に出たみたい

    • あるフレームワークは4.3.xや5.0.xで動くコードなのだけども動かなかった

    • とりあえず後で調べてみる

  • 4.3.x(4.3.11)


    • これが一番使われている気がする

    • 対応したライブラリも多い

とりあえず適当に書くとこんな感じかな。個人的にSQLiteは気になっているので5系を使ってみたいけど、速度的な問題及び枯れ具合を考えると現状4.3.11がベストな気がする。4.4は調べてみるけど、どうも仕様が変わってるくさいので手を出すのは危険かもしれない。

MySQL


これまた色々選択肢がある。PHP以上に厄介な気がする。



  • 5.0.x(5.0.9)


    • 開発中の物なので実運用では怖い

    • VIEWが実装された

    • ストアドが実装された

  • 4.1.x(4.1.13)


    • 速度が大分遅くなったらしい

    • 文字コード関連の修正が入ったらしい(これのせいで遅いのかも) ただし、配布されてるバイナリはラテンでビルドされてるらしく日本語を通すには自分でビルドしないとダメかも

    • サブクエリが実装された

  • 4.0.x(4.0.25)


    • 速度はマァマァ速いらしい

    • UNIONが実装された

    • InnoDBがメインのバイナリに内蔵されるようになった。これはトランザクションに使うものだったはず。今までは別に存在して別途セットアップが必要だったはず

  • 3.23.x(3.23.58)


    • トランザクションが実装された(InnoDB/BDBの2択?)

    • トランザクションをONにすると遅くなると聞いた気がする。

  • 3.22.x(3.22.32/Winバイナリは3.22.30まで)


    • 速度的には最強らしい。未だにこれで作られてる所もあるとか。

MySQLの場合どんどん機能的にはまともなDBに近づいていく反面速度が犠牲になっているという印象が。トランザクションやらサブクエリやらViewやらは無いと困る人も多いと思うし。逆にとりあえずデータだけ詰めておいてがんがん検索だけかけるような形だと3.22.xが最強なんでしょう。案件にあわせて選択する必要がありそう。問題は5.0は現状選択肢として考えないとして4.1と3.22でどれだけの速度差があるのかという事。こればかりは試してみないとねぇ・・・。

そういやフォームにSQL書かれて意図しないSQLが実行されるというセキュリティホール(SQLインジェクションって奴ですな)があるけど、サブクエリが無ければこういうのも起き難いのかも。そういう点では新人教育とかの場合は4.0系あたりから入らせるのも手かもしれない。(本当はちゃんとバリデーションとかを行うとかっと教育するのが正しいと思いますが・w・)




2005年7月25日月曜日

Zガンダム




機動戦士Zガンダム -星を継ぐ者- [DVD]







DVDはいつ出るのだろうと思っていたら割とすぐ出るようですね。劇場でも観ましたが一番思い入れのある作品でもあるので是非コレクションに加えたいところ。

公開当初の祭っぷりは予想以上でびっくりしました。初代の人気があるのは確かですがZも凄いですね。ZZとか劇場版になったらどうなるだろw 実際見てみると個人的には全カット作り直して欲しかったなってのが感想。でも古い映像混ざっていても全然違和感なく見れてしまったのも確か。まぁ全部作ると時間も金も足りないとは思いますが・・・。

あと、Gacktのプロモのお馬鹿っぷりが良い感じです・w・




2005年7月12日火曜日

Windows Messenger 4.7を消す方法



「アプリケーションの追加と削除」の中の「Windowsコンポーネントの追加と削除」からWindows Messengerを抜いたはずなのにどうも起動時に立ち上がってきているっぽいという事で詳細を確認する為にMSN Messengerをアンインストールして起動してみる。

フレンド登録している人のマシンから見てもらうと・・・

いるじゃねーかヽ(`Д´)ノ

メッセージ送ってもらうと無事4.7で受信成功orz

どうもクライアントとしてのアプリは抜かれてるのでユーザーリストとかは出ないものの、メッセンジャーのサービスとしては裏で生き残ってるとかそんな感じでひっそり生きているらしい。道理で起動時にたまに「他の場所でログインされました~」とか出るわけだ・・・。

で、気持ち悪いので抜きたいのだけど上記のコンパネからはNGという事で困っていたところ

http://mbsupport.dip.jp/mb/mb007.htm

こんなページを見つけました。





RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove





というコマンドをうてばOKくさいので試しにGo!

するすると実行した後促されるままに再起動してみると、再起動終了後に

「Windows Messenger 4.7は削除されました」

というメッセージが(゜∀゜≡(゜∀゜≡゜∀゜)≡゜∀゜)

前の時こんなの出なかったぞ・・・。とりあえずこれで様子見てみますよ・w・