トップページphp
1001コメント502KB

WebObjects 3インタンス目

■ このスレッドは過去ログ倉庫に格納されています
0001りお02/06/14 23:58ID:9v1vZuBx
NeXTからAppleComputerに引き継がれたオブジェクト指向
Webアプリ開発環境「WebObjects」について語るスレです。

http://www.apple.co.jp/webobjects/
http://www.apple.com/webobjects/

1スレ目:http://pc.2ch.net/test/read.cgi/php/989562708
2スレ目:http://pc.2ch.net/test/read.cgi/php/1013695600

■ 掟 ■
・遠慮は自身の成長を阻害する。過去ログ読んでも判らないことがあればどんどん質問すべし。そして判らないヤツがいたら親切じゃなくてもいいから教えてやるべし。
・WebObjectsを使っている個人・法人の無意味な批判は歓迎されない、しない。マカーマカーと騒がないこと。
・ヨソの開発ツールを使ってもないのにWebObjectsマンセーすることは歓迎されない、しない。
・運用についての質問はハードウェア、OS、パッチ、RDBMSのバージョン、JDBCアダプタのバージョン、Web鯖のバージョン、例外の内容などを細かく明記すべし。
・さやかタン (´Д`;)ハァハァ

0781nobodyさん02/09/16 10:30ID:???
            __,,,,_
            /´      ̄`ヽ,
            / 〃  _,ァ---‐一ヘヽ
         i  /´       リ}
          |   〉.   -‐   '''ー {!
          |   |   ‐ー  くー |
           ヤヽリ ´゚  ,r "_,,>、 ゚'}
         ヽ_」     ト‐=‐ァ' !  
          ゝ i、   ` `二´' 丿
              r|、` '' ー--‐f´
         _/ | \    /|\_
       / ̄/  | /`又´\|  |  ̄\


    殿下はWebObjectsに興味を持たれたようです。

0782nobodyさん02/09/16 11:10ID:???
>>780
プ社のT氏はWebObjectsに関しては相当なウデを持ってるとのこと。
某所で聞いた話なので間違いはないかと。

0783nobodyさん02/09/16 11:19ID:???
>>780 >>782
P社は実際にはWebObjectsの開発実績がほとんどなく、趣味レベルで触っている
T氏を前面に出すイメージ営業しかやってないとのこと。
某所で聞いた話なので間違いはないかと。
0784nobodyさん02/09/16 11:26ID:???
>>782 >>783
どっちが本当の話なんだ(w
0785nobodyさん02/09/16 11:39ID:???
プ社の話はもうあきたんですが(しかもかなり)、何か?
0786nobodyさん02/09/16 11:46ID:???
社員数人の零細企業で相当なウデを持つ人間がいたらあんなに
暇そうに実作業以外のことはできないでしょ。
プ社に仕事がないのは2ちゃんのカキコを見るまでもなく、
同社のホームページを見ればわかる。
イメージ営業というわりにはあのホムペはちょっと・・・。
なんでも理系大学院卒レベル(爆)の社員が話を聞くそうだ。
実際には院まで逝って年喰ったら普通の会社に就職できなくなって
しかたなくプ社みたいな超零細企業に就職したってクチなんだろうけど。
0787nobodyさん02/09/16 13:36ID:???
>>786
そのはなしも某所できいたから、ききあきた。もっと他にないの?
0788工作員02/09/16 13:45ID:???
>>786
今のプ社の前のデザインのホムペに社員の経歴書いてあったけど、
全員、大学(院)→プ社というわけではなくて、どこか別の企業に逝ってから
プ社、のようですけど。
0789nobodyさん02/09/16 18:40ID:KUBOn0tF
(探したけどまとまった情報なし)
OSX10.2をクリーンインストールしたあとで、WO5.1を入れ直す
のはできますか?手順とかあります。(DevToolを先にいれる
とか?)
0790りお ◆/OjWxByc 02/09/16 19:06ID:mni+mqct
>>789
ちょうど、今日、漏れはその作業をしていた(w
手順は、HDDを初期化→10.2をインスコ→10.2についていたDevToolsをインスコ→WebObjects5.1をインスコ→WebObjects5.1.4ウプデータンをあてる
でやった。一応問題なさそう。

つうか、WebObjectsBuilderおかしくねぇ?WOImageにちゃんとバインドしてるのに
XとYが赤くなったりとか。オレ様はちゃんとバインドしてるっっつーに!と
安物ディスプレイに向かってほえてました(;´Д`)
(WebObjects5.1.4のバグなのねん)
0791nobodyさん02/09/16 19:19ID:???
わおわお、りお大書記長??と同じ作業してたんだ。
参考にします。

実は、……
OSX10.1.5前後のとき、WO5.0→WO5.1よOSX10.0.3→OSX10.1.2-4の
ややこしいアップデートと、セキュリティアップデートと、DevTool
とのインストール順序と、OpenBaseのアップデートと様々なものが
こんがらがった経験あるから、心配してたのデスデス。
0792りお ◆/OjWxByc 02/09/16 19:28ID:mni+mqct
>>791
おれっちはマッキントッシュをメインマシンにしてないからな(w
好き勝手にOSの入れ替えとかやってるのだ。
MacOS X 10.2は前よりだいぶマシになったけど、ウィンドウのリサイズとか
は救いようがないぐらいダメだなぁ┐(´〜`)┌。
クォーツエクストリームとか逝ってくれて少しは期待したんだが。
G4本体を赤く塗ってシャァ専用にしてみるか。3倍速くなるかモナー(w
(学生の頃は塗装工のバイトをしたのだ、スプレー塗装には自信あるぞ←強烈激烈無関係
0793bloom02/09/16 19:34ID:oOYm4lAy

http://www.leverage.jp/bloom/start/
0794nobodyさん02/09/16 19:45ID:???
> 実際には院まで逝って年喰ったら普通の会社に就職できなくなって

ぎくぎくぎくっ(汗)
0795nobodyさん02/09/16 19:48ID:???
>>783
趣味レベルというには少し気合い入ってるよね。
JavaWorldに紹介記事書いたり、講演いろいろやったり。
もし本当にひとりであれだけやってるとしたら
大したもんだと思います。
0796nobodyさん02/09/16 20:22ID:???
>>795
激しく同意。けど、あの長髪は切った方がイイと思うのは漏れだけですか?
0797findQuestionOrAnswer()02/09/16 21:20ID:???
WOPopUpButtonについて質問です。
EOModelerからEntity 'Sample'をJavaしてSample.javaをProjectにadd fileします。
WOBuilderでWOPopUpButtonにbindしたいのれすが、なんかうまく行きません。
ちなみに今
displayString Sample.attrib0
item Sample
list SampleArray(このComponentでSampleの中身をNSArrayにキャスト。ここが問題?)
selection SampleToString(適当なString型variable)
です。
表示は問題ないのですが、次のCompoに渡すときに、AttributionがStringにハマりません。
ちょっと何をどうbindすればよいのか分からなくなってしまいました。
何方かレクチュアしていただけませんか?

0798りお ◆/OjWxByc 02/09/16 21:48ID:mni+mqct
>>797
public Sample itemSample;
public Sample selectionSample;
public NSArray samplesArray;

とする。

list → samplesArray
item → itemSample
displayString → itemSample.attrib
selection → selectionSample

でどうだろうか?(listにはすでにFetchしたsampleのArrayがあるとして)
selectionには、現在選択されている、配列の中のEOが格納される
(厳密には配列内のポインタが入るのか?)。よって、Itemと同じ型の
変数を指定すれば貴様も幸せになれるだろう。

ハズしていたらすまぬ。判らぬことがあったらもっと書け。
0799りお ◆/OjWxByc 02/09/16 21:51ID:mni+mqct
>>796
おれっちは実物を2回ほど見たことあるが、
あの長髪はサキ・ヴァシュタールを思い浮かべるな(←年齢バレるって(;´Д`)
結構、サラサラヘアーでうらやましかったりもするが(をぃ
0800りお ◆/OjWxByc 02/09/16 21:52ID:mni+mqct
ついでに800ゲット(⌒ι⌒)
0801りお ◆/OjWxByc 02/09/16 21:54ID:mni+mqct
>>798
書き忘れたが、itemとselectionにバインドする変数はインスタンス化する必要はない。

連続カキコ、スマーヌ.
0802findQuestionOrAnswer()02/09/16 22:18ID:???
う、Thanks GOD 'りお'。出来ました。うーん流石、男のスレは違う。
私もT氏にお会いしたことありますが、P社の方は長髪サラサラロングヘア
の方が多いような気が。
0803りお ◆/OjWxByc 02/09/16 22:27ID:mni+mqct
>>803
どうでもいいが、801もおれっちが取ったか。ゃぉぃ(爆
>>802
そうか、ウマくいったか。よかったな。これで安心して眠れるぜ。夜用2枚重でちゃんと対策しておけよ(←意味不明(;´Д`)
0804nobodyさん02/09/17 00:49ID:???
>>786
誰もURLキボンしないとこ見るとみんな自分で捜したのね。
プ社って有名企業だな〜。
漏れの会社はこんなとこで有名になって欲しくはないけど・・・。

>>788
>今のプ社の前のデザインのホムペに社員の経歴書いてあったけど、
今現在なくなってるとしたら、なんか問題があったのかね。
各方面から叩かれて個人名載せるのが恥ずかしくなったとか。

>全員、大学(院)→プ社というわけではなくて、どこか別の企業に逝ってから
なおさら悪いって。院まで出て数年で辞めて零細企業勤務じゃ
もう転職不可能!!

漏れは年収1000万くれっるって言われてもさすがにプ社には逝けんな。
0805工作員02/09/17 07:01ID:???
>>804
わかった、もうわかったよ。よーくわかったから……もぅ…(ノ´Д`)ノ
0806nobodyさん02/09/17 14:49ID:???
addObjectToBothSideRelationshipWithKey...だったかな?
リレーションシップオブジェクトにオブジェクトを追加する云々をおこなう
このメソッドの意味とか使い方がよくわからんのですけど、ボクだけですか?
誰か詳しい使い方教えてください。オーム社の本だとちょっと難しくて・・・
0807nobodyさん02/09/17 15:01ID:???
>メソッドの意味とか使い方がよくわからんのですけど、
なら、使わなければいいだけじゃん。
0808nobodyさん02/09/17 15:04ID:???
×・・・メソッドを使いたいがためにコードを書く
○・・・目的の実装を実現するために適切なメソッドを使う
0809nobodyさん02/09/17 15:55ID:???
とある案件にWebObjectsを提案したところ元請けさんが
「WebObjectsではデータベースにExcel・Word・PowerPointを格納して検索できるのか?」
と聞かれました。
とりあえず私の知る限り無理なきがするのですが...そういう機能をもった
アプリケーションサーバーやデータベースがあるのでしょうか?
ついでに画像や動画や音声ファイルもデータベースに"格納"したいとのことでしたので
こちらは検索はそれ用のソリューションを購入しないと無理。
オススメ的にはそういうもんはDBに入れないと答えましたが、
他のAP鯖ではバイナリもすべてDBに突っ込むのが正解なのでしょうか?私にはどうしてもそのメリットがわかりません。
配列扱いにして「似たような配列の画像を探せー」ならわからない気もしないのですが



ワタクシ、激間違っていますでしょうか?なんだか自分が井の中の蛙に思えてきました。
0810ドドドド素人<-黙ってろよヴォケ!02/09/18 02:49ID:???
>>809
>Excel・Word・PowerPointを格納して検索できるのか?
 これはAP鯖の機能というよりDBの機能になるのでは?あるいはJustのConceptBase
のような全文検索エンジンをDBとは別に入れるとか。

>他のAP鯖ではバイナリもすべてDBに突っ込むのが正解なのでしょうか?
>私にはどうしてもそのメリットがわかりません。 
 Oracle Intermediaだったら画像サイズを自動的に生成してくれてPCサイト用も
携帯サイト用も1ソースで済んでハッピ〜だった気が・・・・これだけじゃないで
すけどね、Intermedia。確か。ウル覚え。

激しくいいかげんな情報なのでsage
0811nobodyさん02/09/18 02:54ID:???
>>今のプ社の前のデザインのホムペに社員の経歴書いてあったけど、
>今現在なくなってるとしたら、なんか問題があったのかね。
これどっかに残ってないかな?
ちょっと手を加えれば3日は笑えるページができそうなんだが。

なにしろ***理系大学院卒レベル***の社員だもんね〜。
そざかし仕事できるんだろーな。
0812?E?t?@?C?80902/09/18 12:15ID:???
>>810
画像エンコーダー付きですか、ちょっと便利ですね。
「JustのConceptBase」はこれからgoogleしてきます。
0813nobodyさん02/09/18 12:27ID:eCAyCH1c
 Oracle9iのInterMediaならExcelとかWordもいける。
 SQL Serverもいけるはず。
 たあし全文検索かけたいだけなら、Namazuとか使ったほうが手っ取り早い。
 しかし、こういう不定形のデータが入ってくるシステムって、客がいろいろ勘違いしている可能性が高い。
0814nobodyさん02/09/18 20:58ID:???
>>813

InterMediaの味を知った客先はとんでもない大容量の映像とかなんだの
入れたいっていいはじまるからな…Oracle9iのInterMediaだけど、
ハードPowerそれなりのモノを用意しないと遅いぞ。
最初、Pentium1Ghzの鯖1台用意してテストした時はまぁまぁのパフォだったけど
いざ運用となったら社内の人間が100人ちかくこりゃ便利だって使い始めて。
メモリ1G搭載してても遅くて、結局ハード増設。気をつけれ。

全文検索だったらNamazuでイイとおもう。
いらなくなったちょっと遅めのマシンにRedHatとかSolaris入れて
使うなんてぇのもいいし(もちろん、ユーザの利用状況にあわせて)

>>しかし、こういう不定形のデータが入ってくるシステムって、客がいろいろ勘違いしている可能性が高い。

ハゲ道。お互いに何を実現したいかを酒でも飲みながら話し合った方がいいかもな。
0815nobodyさん02/09/18 21:02ID:???
>>806
つうか、使いたいから使うんじゃなくって、本とかに載っているから
テストしてんだろうか?
addObjectToBothSideRelationshipWithKeyはEOModelorの
リレーションシップオブジェクトのインスペクタ開いて、OwnsDestination(だったかな?)
とセットで使うとEOを保存するとPkyもDestination側のEOに伝達されて
外部Keyに該当するAttributeに値が入るつー仕組みじゃなかったっけ。
そのへんを調べてみたらどうだろう?
オーム社の本は洋書をそのまま和訳したから時々何を書いているのか
わからんところあるから原書読んだ方がはやかったりするぞ。きっと(w
0816nobodyさん02/09/19 19:49ID:???
最近WO始めたものですが、なにか?(違)
最近WOを始めて、PostgreSQL入れて「さぁ、やるぞ!」って思ったら
トラブル勃発で泣いてます。
EOModelerからSQLがジェネレートできなかったりなどなど…
そこで少し先輩方にお聞きしたいのですが、PostgreSQLを使ってる方は、
postgresのアカウントでWO開発しているのでしょうか?
0817りお ◆/OjWxByc 02/09/19 21:30ID:???
>>816
MacOS X からはわからんが、Windows2kでもEOModelorからはSQLGenerateは
あまりアテにならないので、おれっちはDB構築はSQLを直接PSQLで叩いていますが、なにか?(違)
081881602/09/19 22:37ID:???
レスありがとうございます。あと環境書き忘れすいません。OS X 10.2です。
私も明日ターミナルからやってみようと思います。
OS Xで開発するときはpostgresアカウントでログインしてProject Builderとか、
WebObjects Builder使ってますか?
0819nobodyさん02/09/20 03:49ID:???
>なにしろ***理系大学院卒レベル***の社員だもんね〜。
院卒=頭良い=仕事デキル
んだと本気で思ってるとしたらプ社はやはりドキュソかと・・・。
0820nobodyさん02/09/20 14:30ID:/MLJ70M7
ぽすぐれと開発環境が同じマシンにはいってんの?>818

だったら、べつにぽすぐれのアカウントのひつようは無いんじゃない?
EOモデラーの接続情報にぽすぐれで使うアカウントとパスになってれば
いいんじゃないの??

Terminalからいじるときはsuコマンドでユーザ切り替えればいいんだし。
はずしてたらすいません。
0821b02/09/20 14:58ID:+oiCjvk9
http://muvc.net/jsweb/profiles.html
0822nobodyさん02/09/20 19:54ID:???
EOModelorで定義しているEntityの各Attribute名をすべて取得する良い方法は
ありませんか?
WebObjectsというよりはEOFのプログラミングなのかもしれませんけど。
ソートに関するロジックを書いていて、Entityの構造が将来にわたって変更になっても
いちいちプログラムに手を加えることなくラクチンにできる方法がないかと。
082382202/09/20 19:58ID:???
それと、これもEOFの質問ですけど、insertObjectしたEOを無効(キャンセル?)したい時は
ec.revert()で内容が無効になりますが、ecが保持してるEO全てが無効になって
しまいますよね。できれば、指定のEOをねらい打ちするかのように無効に
したいのですが、できないでしょうか。
NSMutableArrayクラスのメソッドを使って処理をして、最後の最後で
insertObject()するというのもやってみたんですが、ロジックがやたら
長くなってまったので、なにか良い方法はないかと。
082482202/09/20 20:02ID:???
もうひとつ。すいません、教えて君で…
NSMutableArrayにEOをaddObjectしているんですが、これをソートしたり
することはできませんか?
さらにもう一つ。DBからフェッチしてきたEOのNSArrayですけど、さらに
絞り込み、みたいなことをやりたいときはみなさんどうしていますか。
VBですと比較的簡単に実装できるんですが、、再びqualifierを
作って結果的にSQLをDBに投げることになるのでしょうか?
0825りお ◆/OjWxByc 02/09/20 21:02ID:???
>>822
ちゃんと調べてから書け、このヴォケェ!




と、いってみるテスト...ちょっとまて、サンプルも必要だろ。
つうか、書いてる意味から考えるから。
0826りお ◆/OjWxByc 02/09/20 22:12ID:???
>>822
Movie sampleMovie = (Movie)movieDisplayGroup.selectedObject();

EOClassDescription movieDescription = sampleMovie.classDescription();
NSArray attributeArray = movieDescription.attributeKeys();
Enumeration enum = attributeArray.objectEnumerator();
while (enum.hasMoreElements()){
String attribute = (String)enum.nextElement();
System.out.println("attribute name = / " + attribute ) ;
}

とりあえず、サンプル。カスタムEOで定義されているメソッド(key)の
一覧を取得できる。key一覧をStringのArrayで持ってくるから少しは便利かモナー。
もし、リレーションシップ名も欲しければ、EOClassDescriptionにそれっぽいメソッドが
あるから探してクレ。

ただ、希望してるのはEOModelorのAttribute一覧ってかいてあるんだよな。
その場合はEOCustomObjectからEOClassDescriptionを取得してそこから
EOEntityからEOModelGroupを取得してと、徐々に奥に入っていくようなカンジで
親になるオブジェクトを取得するメソッドがそれぞれ用意されているから
たどっていって一覧をゲッチューすればよろし。

参考にならなければもうちょっと希望なんかを書いてクレ。
0827りお ◆/OjWxByc 02/09/20 22:18ID:???
>>826
ちょぃウソあり(ノ´Д`)ノ
EOCustomObjectからEOClassDescriptionを取得してそこから
EOEntity→WOModelGroupなんて取得できへん(ワハハハ

ちょっとまて、むかぁしのプロジェクトから何かあるか探ってみるか。
0828りお ◆/OjWxByc 02/09/20 22:37ID:8AL7Hvbt
>>826
昔のプロジェクトにゃなかったんで作ってみた。いちおう動くから試してミロ。
つうか、オムニのMLにゃこの手の内容はゴロゴロしてるかモナー

EOModel eoModelObj = EOModelGroup.defaultGroup().modelNamed("WOMovies");
NSArray entityArray = eoModelObj.entities();
Enumeration entityEnum = entityArray.objectEnumerator();
while (entityEnum.hasMoreElements()){
EOEntity entity = (EOEntity)entityEnum.nextElement();
System.out.println("Entity name = / " + entity.name() ) ;
Enumeration attributeEnum = entity.attributes().objectEnumerator();
while (attributeEnum.hasMoreElements()){
EOAttribute attribute = (EOAttribute)attributeEnum.nextElement();
System.out.println("Attribute name = / " + attribute.name() ) ;
}
}

選択したEOをさかのぼっていくようにしてEOModelorの情報をゲットするやりかたじゃないけど、
まぁ、ガマンしてくれ。あれ、でもどうやってEOModelorの内容を知るかまでは
書いてないからな、どうだっていいや(w

0829りお ◆/OjWxByc 02/09/20 22:46ID:8AL7Hvbt
>>823
これでどうだ??
EOEditingContext ec = this.session().defaultEditingContext();
Movie invalidateMovie = (Movie)movieDisplayGroup.selectedObject();// "無効にしたいEO"
EOGlobalID gid = ec.globalIDForObject(invalidateMovie);
ec.invalidateObjectsWithGlobalIDs( new NSArray(gid) );

特定のEOをキメうちで無効にしたい、というので使えると思う。
ただ、動作確認はちゃんとやるように(リレーションシップがどうなるか保証もてないので)
0830りお ◆/OjWxByc 02/09/20 22:55ID:8AL7Hvbt
>>824
今日は大盤振る舞いだ(笑)

NSArray内のEO群をソートする方法か?漏れはもうセクゥスして寝たいから(w、
サンプルは自分で考えてくれ。ヒントだけ。

EOSortOederingクラスに、sortedArrayUsingKeyOrderArrayというメソッドがある。
そいつがArrayに対してEOSortOrderingオブジェクトを与えてソートを実行するメソッド。ぐぴゃ(⌒ι⌒)←意味不明

で、再度絞り込みをしたい件だけど、一例としてWODisplayGroupにはsetQualifier()メソッドがある。
こいつにEOQualifierオブジェクトをブチこんでupdateedDisplayedObjects()を実行すれば
DBにSQLを投げずにWOdisplaygroup内で持つEOのArrayでQualifyがかかる。と、おもった。ためしてねぇけど(笑)

NSArrayの場合だと、 EOQualifierクラスにfilteredArrayWithQualifier()メソッドがある。
そいつにEOQualifierオブジェクトともとになるNSArrayをブチこんでやると
SQL投げずにフィルタされる。あとは実装次第ってぇところだな。

がむばってくれ。わからんことがあったら、もっとかけ。
中レベルまでの教えて君大歓迎だ(w
083182202/09/21 08:27ID:???
りおタン キタ---------(°ω°)-------------!!!

どうもありがとう〜♪

これからサンプル試してみます。うう、うれぴぃ。
0832理系大学院卒02/09/21 18:03ID:???
このスレで低レベルな技術論を展開してるバカどもに僕の考えた画期的な
技術を一つ教えてやろう。WOでPDFを加工する技術だ。
Acrobatって知ってるか?あのソフトはVBから操作ができるんだ。
院も出てないお前らは知らなかっただろうけどな。
え?VBとWOが何の関係があるんだって?
まあ、お前らみたいな素人にはわからないだろうが、WOはEXEプログラムを
実行することができるんだ。
つまりWOからVBプログラムを起動してAcrobatを操作すればPDF加工が
できるってわけだ。どうだ?目から鱗が落ちる思いだろう?
理系大学院卒の僕だからこそ考え付いた画期的な方法だよ。
WOとVBのプログラムは時給1000円の学生アルバイトにやらせればいい。
派遣会社に時給2000円という破格の単金を提示して依頼しようと
したこともあったけどナメた態度をとられたから、
全部こっちから切ってやったんだ。
やっぱりビジネスは冷淡じゃないと駄目だね。

それとこの仕組みはビジネス特許申請中だから真似しようとしても無駄だよ。
僕の会社にはこういう申請中の特許が多数ある。
嘘だと思うなら会社のホムペを見てみろ。
残念ながら実用化したものは一つもないが、近い将来には僕の会社は
特許料収入だけでやっていけるようになる予定だ。
まあ、こういうのをビジネスっていうんだよ。
お前らもこういう視点で仕事ができるようにならないといけないね。
0833りお ◆/OjWxByc 02/09/21 19:26ID:???

>>831

お、
0834りお ◆/OjWxByc 02/09/21 19:34ID:n+jiSbS4
しまった間違えた(;´Д`)>>833

>>831

試した結果はどうだ?結果を教えてクレ-.ちょぃ気になったんで。

828でEOEntityオブジェクトを取得してからEOAttributeのArrayが取得
できているんだけど、何となく、別の方法でもゲッチュできるかもしれん。
827で書いた、現在のEOからさかのぼるようにしてdefaultModelGroupを
取得する方法をちょっと模索してるんだが、普段使わないようなこと
やるから時間かかってるし(w

つうわけだ。なんかワカランことがあったら書いてくれ。もうすぐ次スレだしな。
次はインタンスは辞めて、別の名前にしようZeee (w

0835りお ◆/OjWxByc 02/09/21 20:46ID:n+jiSbS4
>>http://pc.2ch.net/test/read.cgi/php/990953955/401-402

専用のHTML編集ツール(WebObjectsBuilderという)を使って
HTMLタグに対しWebObjectsが使うエレメント(ダイナミックエレメントという)を
設定する。
たとえば、表(TABLE)のTRを繰り返し表示させたい時。
HTMLにするとこんなカンジ。(一部タグを省略。TRの部分だけペースト)

<WEBOBJECT NAME=Repetition1>
<TR>
<TD><WEBOBJECT NAME=Hyperlink1><WEBOBJECT NAME=String1></WEBOBJECT></WEBOBJECT></TD>
<TD><WEBOBJECT NAME=String2></WEBOBJECT></TD>
<TD><WEBOBJECT NAME=String3></WEBOBJECT></TD>
<TD><WEBOBJECT NAME=String4></WEBOBJECT></TD>
<TD><WEBOBJECT NAME=String5></WEBOBJECT></TD>
</TR></WEBOBJECT>

ここで、<WEBOBJECT >〜</WEBOBJECT>タグがWebObjectsが使う独自タグ。
もちろん、実行時にはこのタグはブラウザには見えない。
<WEBOBJECT NAME=Repetition1>と定義してあるのが、</WEBOBJECT>までを
繰り返し表示するWebObjectsのダイナミックエレメント。
(WORepetitionという)
0836りお ◆/OjWxByc 02/09/21 20:46ID:n+jiSbS4
つづき

で、このHTMLとは違う別定義ファイルには、

Repetition1: WORepetition {
item = itemForMovie;
list = movieDisplayGroup.displayedObjects;
}

てなカンジに定義されていて、listには配列オブジェクトが、
itemには配列オブジェクト内の各オブジェクトの受け皿になる型を
セテーイしておく。この別定義ファイルは、HTMLを編集する専用ツール
(WebObjectsBuilder)上でGUIで設定した内容が自動生成されるので
開発者が基本的にいぢくる必要はない。

実行時は、WebObjectsのフレームワークが勝手にlistにセテーイされた
配列のナカミを繰り返し読み込んで、上記の場合は<TR>を作り上げていく。

WebObjectsフレームワークの場合は<TR>タグをはじめとするHTMLを生成するためのロジックを
書く必要はない。ツールでセテーイした内容に基づき、Javaで書いたロジックの実行結果や
フレームワークが実行した結果をHTMLに展開してくれる。

だいたい、こんなもんれす。MSのVisualInterDEVとかも同じかな?でもちょっと違うんだよな。

なんかワカランことがあったらどんどん書いてクレ-.
0837りお ◆/OjWxByc 02/09/21 20:53ID:n+jiSbS4
ちなみに、WebObjectsBuilderというツールでつくった
HTMLテンプレート(としておく)は、WOコンポーネントと
呼ばれて、構築するプロジェクト内に保存されて、、
<WEBOBJECT>タグを含んだhtmlファイルと、
<WEBOBJECT>タグ(=ダイナミックエレメント)がどのような
データを持って振る舞いをするか、を定義した*.wodファイルや
WebObjectsが使う独自クラスの挙動を定義した*.wooがあって
一つのパッケージになっている。(*.wo)

0838りお ◆/OjWxByc 02/09/21 21:00ID:n+jiSbS4
htmlファイルや他のテンプレートのファイル名とJavaクラス名は
全て同じ名前になっていて、(Sample.java ,Sample.wo(Sample.html , Sample.wod , Sample.woo ))
実行時にクラスがインスタンス化される。この辺の最初のファイル
生成もツールがやってくれる。

実行時はhtmlファイルをレンダリングする途中で<WEBOBJECT>タグが
あればWebObjectsフレームワークが*.wodに定義されている内容に
従って同名のインスタンス化されたJavaクラスのフィールドを取得
したりメソッドを実行して結果をhtmlへ展開(レンダリング)する。

こんなカンジです。
0839nobodyさん02/09/21 21:04ID:???
>>832
プ社のこと?
0840りお ◆/OjWxByc 02/09/21 21:07ID:n+jiSbS4
WebObjectsが政教分離じゃなかった、デザインとロジックが完全に分離した云々と
言われるのは、htmlに<WEBOBJECT>タグを書いておいて、定義ファイル(*.wod)を
フレームワークが読み込んで同名のインスタンス化されたJavaクラスと
データのやりとりをする部分にあると思われる。htmlファイルには
直接Javaクラスのメソッドなんかを書いても実行できない仕様に
なっているから理屈でも現実でも完全に分離していることになる。


0841りお ◆/OjWxByc 02/09/21 21:09ID:n+jiSbS4
故にWebデザイナはこのタグについての説明を簡単に説明して
いじらないでね、とか約束をつけておけばあとは気にすることはない(一応は(ワラ )

0842りお ◆/OjWxByc 02/09/21 21:14ID:n+jiSbS4
>>説明を簡単に説明して

日本語になってない(;´Д`)スマソ
PerlやPHPをやったことがある方なら、WebObjectsの便利さが
きっとわかってくれると、おもったりするんだが。たう゛ん。
0843コンテンツの40102/09/21 21:21ID:???
>>836
Thx!!
そうすっと、String1とかString2とかってのはどこで定義するの?
0844コンテンツの40102/09/21 21:23ID:???
あと、ちょっとマニアックな状況だけど、例えば表の中にフォームを書いて、
各行の中身をそれぞれ対応する各オブジェクトに入力したい(複数行一括入力)
なんて場合にはどうすればいいの?
0845りお ◆/OjWxByc 02/09/21 21:26ID:n+jiSbS4
>>843
ええと、先ほどから出ている、htmlとは別の定義ファイル(*.wod)に
定義する。厳密には、どのような文字出力をするのかといった振る舞いを
同じ定義ファイル内に書いているんだな。アチョー.
0846りお ◆/OjWxByc 02/09/21 21:30ID:n+jiSbS4
>>844
ズリセンしてクソして風呂はいるから、その後で書くのでまっててクレー.

0847コンテンツの40102/09/21 21:37ID:???
>>846
ういっす。すまんすsage
あと、例えば微妙に動的な文言
「『新規入力』画面」と「『登録変更』画面」ってのは
よくあるテンプレート系エンジンだったらifdefとかを直接ページに書いちゃうと
思うんだけど、WOの場合はどうしてるの?
いろいろ知りたいsage
0848りお ◆/OjWxByc 02/09/21 22:04ID:n+jiSbS4
>>844
クチで説明するのがかったるいので、サンプルの実行結果(HTMLソース)をば。
<form method="post" action="/cgi-bin/WebObjects/SampleWOMovies1.woa/wo/jHvAdoUO0bZbdb6FgYmAXM/1.1">
<P ALIGN=CENTER><FONT SIZE=5>EditMovies</FONT></P>

<TABLE ALIGN=CENTER>
<TR><TD><a href="/cgi-bin/WebObjects/SampleWOMovies1.woa/wo/jHvAdoUO0bZbdb6FgYmAXM/1.1.1.0.1"> EOF Next Generation</a>
</TD><TD></TD><TD>Apple Computer, Inc.</TD><TD>Surreal</TD><TD><input type=text value="1996/01/25" name="1.1.0.9"></TD></TR>
<TR><TD><a href="/cgi-bin/WebObjects/SampleWOMovies1.woa/wo/jHvAdoUO0bZbdb6FgYmAXM/1.1.1.1.1"> Star WOB</a>
</TD><TD></TD><TD>Apple Computer, Inc.</TD><TD>Drama</TD><TD><input type=text value="1999/08/22" name="1.1.1.9"></TD></TR><TR>
<TD><a href="/cgi-bin/WebObjects/SampleWOMovies1.woa/wo/jHvAdoUO0bZbdb6FgYmAXM/1.1.1.2.1"> WOF The Next Big Thing</a>
</TD><TD></TD><TD>Apple Computer, Inc.</TD><TD>Action</TD><TD><input type=text value="1999/08/22" name="1.1.2.9"></TD></TR><TR>
<TD><a href="/cgi-bin/WebObjects/SampleWOMovies1.woa/wo/jHvAdoUO0bZbdb6FgYmAXM/1.1.1.3.1">37.2 le Matin [Betty Blues]</a>
</TD><TD></TD><TD>Cargo Films</TD><TD>Drama</TD><TD><input type=text value="1986/01/03" name="1.1.3.9"></TD></TR><TR>

<P><input type=submit value="insert" name="1.7">
<input type=submit value="delete" name="1.8">
<input type=submit value="update" name="1.9">
</P><
/form>
0849りお ◆/OjWxByc 02/09/21 22:10ID:n+jiSbS4

余計なタグはとっぱらって、TABLE内にテキスト入力フィールドを
各TDに配置したやつを入れた実行結果と思ってくれ。

で、inputタグのnameエレメントにそれぞれ1.1.0.9といったユニークなキーが
割り振られている。FORMの内容がサーバーに送られてからサーバー側の
任意のセッションオブジェクト(ここでは、最初のFORMタグにある
actionエレメントに、長いURL内にあるjHvAdoUO0bZbdb6FgYmAXMてのが
セッションID)で、サーバー側でこれをキーにしたオブジェクトが
生成されていて、その中にname=1.1.0.9がどれとつながっているのか、
なんてぇのが管理されている。というイメージだとわかりやすいだろうか。

Submitの場合もツール上では、Javaクラスに定義された任意のメソッドを
セテーイして、実行時に実行されると指定はするが、htmlソースだと、
nameで管理された番号でメソッド実行なんかを行っている(もちろん、
この番号はWebObjectsが動的に割り振ったもの)。

0850りお ◆/OjWxByc 02/09/21 22:16ID:n+jiSbS4
>>847
WebObjectsの場合は実装方法がいくつか用意されている。
一つは新規登録用、更新用と別々の画面を作成する。もちろん、これは
似たような画面になるので効率が悪い。

もう一つは新規登録用と更新画面の入力項目で共通になる部分を
パーツ化しておいて(といっても、htmlと定義ファイルがWebObjectsのルールに従ってパーツ化したものだけど)、
それが他のコンポーネントでも使い回しができる「部品」として
保存できる。(ようは、JavaBeansを作っているようなモンだ。かなり強引だが)

まぁ、他にもダイナミックエレメントを使って条件(ロジックで決める)
によって任意のHTML表示を実行時(HTMLレンダリング時)に切り替える方法も
ある。まちがってもHTML内にロジックを書くことはない(除JavaScript)
0851コンテンツの40102/09/21 22:38ID:???
>>849
なるほどなるほど。いい感じだねえ〜
name要素がコンフリクトしない仕組みにするとやっぱりそうなるよねえ。
>>850
ループはともかくifdefぐらいならデザイナに触らせてもいいかな?
って気もするけどね・・・ともかくThx!

あともう1コだけ、WebObjectのページ遷移(というかアプリケーションのフローの定義)ってどうなってるの?
0852コンテンツの40102/09/21 22:45ID:???
スマン、質問が漠然としすぎだった。。
例えば、あるビジネスオブジェクトの
「入力」→「確認表示」→「登録完了」
なんていうフローはどうやって定義するの?
0853nobodyさん02/09/22 01:59ID:???
>>832
お前、バカ?
0854nobodyさん02/09/22 15:17ID:???
>>853
ネタニマジレスカコワルイ
釣り師の思うツボだぞ(w
0855nobodyさん02/09/22 15:25ID:???
>>853
ネタにマジレスすんな。
>>832はP社への皮肉だ。
0856nobodyさん02/09/22 16:15ID:???
内容はネタじゃなく事実みたいですけど。
0857nobodyさん02/09/22 17:37ID:???
>>856
どっちでもいいからさ、隔離スレがあっただろ。
http://pc.2ch.net/test/read.cgi/php/1025561456/
こっちでヤレ。
ここはWOFの話しをするところであって、P社の話しをするスレじゃねんだよ。迷惑だ。

ここでそういう話題を粘着気質にやってる香具師は、P社と同レベルって感じだな(w
0858nobodyさん02/09/22 18:48ID:???
まあWebObjectsから".EXE"起動してってのは確かに画期的だ罠。
さすがは理系大学院卒というべきか。
おいらの会社もこういう発想ができるようになるとP社みたいな
有名企業(笑)になれるんか。

これだけだと隔離スレでヤレって言われそうだが、
EXE起動した場合のセキュリティってどうなるのかね?
EXEの中から好きなことやりたい放題?
0859nobodyさん02/09/22 19:04ID:???
>>858
ン?
> まあWebObjectsから".EXE"起動してってのは
これって、サーバーサイドの話なのではないのですか?
0860nobodyさん02/09/22 20:35ID:???
サーバサイドでexeが実行可能なサーバサイドアプリなら、
すべてに当てはまる話しか。
Javaでruntime.exec()が使える環境だったら、どれも同じだろ。

実装者がそう実装していればの話しだけど。
0861nobodyさん02/09/22 21:48ID:6gZmFq4J
・・・PDFの生成をする画面だけ、Perl + PDFLIB などを使えば?
0862香具師02/09/22 22:46ID:???
釣り師の思うツボだちゅぅに りおタンはちゃんと質問にレスしてますね、エラィ.
そんな漏れも釣り師の思うツボ(w
0863nobodyさん02/09/22 23:46ID:???
>>862
香具師の意味分かって使ってんのか?
あと無意味なレスやめろや。
0864nobodyさん02/09/23 02:31ID:???
プ裸ネットよ、WO使いを名乗りたいならAcrobatもJavaで操作しろ!!
なんでexeなんか使うんだ?
0865nobodyさん02/09/23 08:44ID:???
香具師 かぐし、やし。
>>864みたいなことを言う。
0866しらべた02/09/23 09:14ID:???
ちょっと調べてみた。

情報提供:三省堂

■[香具師]の大辞林第二版からの検索結果 
こうぐ-し かう― 【香具師】

(1)香具を作る人。また、それを売る人。香具屋。
(2)やし(香具師)。てきや。香具屋。「―のいひぐさをよく覚えたぜ/滑稽本・浮世床 2」
(3)>>864のことを指す。

■[香具師]の大辞林第二版からの検索結果 

0867nobodyさん02/09/23 14:26ID:???
>>864
WOも昔はJNIバリバリだったという罠。
0868nobodyさん02/09/23 15:03ID:???
別スレで

香具師の使い方間違ってるヤシがいた

香具師の意味を間違ってるぞ

じゃぁどんな意味か言ってみろ

>>866

ここでも見るとは(;´Д`)
しかもほぼ同じ時間。
0869nobodyさん02/09/23 15:25ID:???
>>851, 852
香具師話のせいで質問が埋もれちゃったじゃないか。

ページ制御だが、ハイパーリンクやフォームのボタンのようにアクションを
起こすことが出来る場所に、遷移したいページのidentifierを書くことが
出来る。直接名前を書いてもいいし、ページを返すメソッドを書いてもいい。
単純に移動するだけじゃなくてなにか処理を行ってから遷移したいときは
このメソッドの中にいろいろと処理を書いて、最後に次のページのオブジェクトを
返せばいいのだ。シンプル。
0870nobodyさん02/09/23 17:10ID:???
>>1-869(862,866以外)
>>862>>866みたいなのとプラ房は放置ということで。
0871ぷぷぷっ02/09/23 17:12ID:???
WOPopUpButtonについて教えてたもう。
あるテーブルAのa列からデータを取得しpopupに表示させて、
選択したものを他のテーブルBのb列に保存したいんだが、
やり方がわからん。
とりあえずアプリケーション開発ガイド(オーム社)の217頁のように
listにはAのDisplayGroup.allObjects
itemにはA型のaKey
displayStringにはA型のaKey.aをバインディングさせて
popupに表示させることまではできたんだ。どうだすごいだろう。
ってそれは誰でもできるんだなっ。
世話をかけてすまんな。
0872りお ◆/OjWxByc 02/09/23 18:53ID:???
>>851,852
>>869が親切に教えてくれたので、そっち参考にプリーズ.

>>871
Entity A と、Entity B は何かしらのリレーションシップの関係にあるか?
理論的にも実際のEOModelor上での設定でも。

たとえば、
Entity A toOne > Entity B
Entity B toMany >> Entity A
という関係のリレーションシップがあった場合、
WOPopupButtonのselectionにEntityA.toEntityB という具合に
EntityBへのリレーションシップをバインドしておくと幸せ炸裂だベイビィ.
カスタムEOクラス的に言うとフォームが鯖に送られるときに
カスタムEOのリレーションシップのsetアクセサメソッドが呼ばれるわけだ。
ハズしているかもしれん。
もっと違うことなんだYo-という場合はもちっと詳しくかいてクレー.
0873ぷぷぷっ02/09/23 20:24ID:???
>>872
>Entity A と、Entity B は何かしらのリレーションシップの関係にあるか?
ないと思う。って優香リレーションシップはまだ勉強してない。。。
>もっと違うことなんだYo-という場合はもちっと詳しくかいてクレー.
おう、もうちと詳しく書かせていただく。

Entity Aはpopupに表示させたい項目をつらつらと書いてるだけだ。
もちろんpopupはいくつかある。こんな感じだ。
id value
popup1 神と人間の境界線
popup1 人に会社名を言って恥ずかしくないライン
popup1 業界内でのみ会社名を言えるライン
popup1 マカーが趣味でやってる零細企業
popup2 神
popup2 人
popup2 糞

Entity Bはこんな感じだ。
Company Line
ア○プル 神と人間の境界線
キ○ノン 人に会社名を言って恥ずかしくないライン

でだ、Entity Bの登録画面で(プロフィールみたいなものと思ってくれぃ)
Entity Aのvalueをpopupに表示させておいて(条件にid = popup1があるぞ)
popupで選択したものをsaveChanges()でEntity BのLineにズドーンと入れたいのだ。
長くなったな。すまそ。
0874ぷぷぷっ02/09/23 20:27ID:???
↑おかしいなぁ、適度に空白をいれたつもりだったんだが、見にくいな。
ちと追加説明。
Entity Aはidとvalueがあって、Entity BはCompanyとLineがあるんだ。
あとカスタムeoは使用していないんだ。
0875nobodyさん02/09/23 21:42ID:???
JavaでPDF生成やりたいなら、FOP使えばいいんじゃねーの?
Apache Projectの製品だし。

http://xml.apache.org/fop
0876nobodyさん02/09/23 23:29ID:???
>>868
http://www.geocities.co.jp/AnimeComic-Brush/4373/Icon/004_502.swf

0877nobodyさん02/09/24 03:30ID:???
>>874
まずそういうののためにDBの正規化というのをそのへんの本でも立ち読みして
勉強してくれ。そうするとリレーションの意味もはっきりする。その上で、
カスタムEOを使ってなかったとしても、リレーションをたぐって
takeValueForKeyPath()が呼ばれるのは基本的に同じなので
872のりおたんの説明をじっくり読むべし。
0878nobodyさん02/09/24 04:36ID:???
Direct to Webを試そうと思ってさ、EOModelerでモデルを新規で作成して
データを新規登録しようとしたら
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Error: java.lang.IllegalStateException
Reason: Adaptor com.webobjects.jdbcadaptor.JDBCAdaptor@5caa7a
failed to provide new primary keys for entity 'Message'
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
こんなエラーがでてくるのですよ。
この原因はなんでしょか?
環境はMacOSX10.1.2、WebObjects5.1.4、Openbase7.0.7
自分で作ったモデルが悪いんだろうなと思っていろいろこねくりまわしてみたんだけど
プライマリキーを作成できないっていわれてもわかんないのです、どこをどういじればいいのか…
EntityA<--->B<--->>Cみたいなモデル作ったつもり
ひんとプリーズ


0879りお ◆/OjWxByc 02/09/24 09:11ID:2NTGZykG
>>878
何のDBをD2Wでいじりたいのだ?情報ぷりーず。

エラーは、Message Entityに新しいレコードを作成しようとした時に
プライマリキーが作れなかったことを逝っているんだが。
モデルファイルにプライマリキーがちゃんと設定されているか、
DB側の設定に問題はないか
などを確認してはどうか。
088087802/09/24 10:03ID:???
すばやいおへんじ さんくゆー りおタン
ごめんなさい、原因はModelファイルのプライマリーキーの
Value ClassがStringだったことでございました。Numberにしてことなきを得ました。
DBは自分で設計して1からはじめようとしていたものです。
↑これが一番の原因、未熟者だもんで。
■ このスレッドは過去ログ倉庫に格納されています