I'm a GTD beginner (2)
Step1「収集」

これはGTD第一審で最も重要なステップです。あなたは1時間それをしなければなりません。


1時間だそうです! 私は、昨日かなり疲れていたので、自分の家で仕事に関することを何もしたくはありませんでした。 そこで、本日、私はランチタイムに、このファーストステップをこなすことにしました。

A4用紙(最低でも5枚)にタスクを書き留めてください。書くために、あなたの手帳とPDAを使っても構いません。


私は1.5時間を投じて、すべてのタスクを書きました。 私は、ランチタイム後にもGTDを続けました。そして、次のステップは:

特別なフローチャートを用いて書きとめたタスクを分類してください


それは、本日経験したなかで、もっとも困難な作業でした。それから……私は自分の脳の中からすべてのタスクを消去することが可能になりました……たぶん。本当のところは、私はGTDの成功を得ることができたのかどうか、分かりません。しかし、
1つの満足なことがありました。それは、私が2分で達成することができる多くのタスクを持っていたことです。GTDは、そのようなタスクに即座に取りかかるべきだと言っています。 私がそのようなタスクを全部終えたので、ほとんどのタスクがコンプリートしました。 言い換えれば、私には、多くの簡単なタスクがあったということです。

GTDは、楽なタスクのすべてを片付けるための手続きなのかもしれません。私の挑戦は続きます!
|
I'm a GTD beginner (1)
GTDは日本でも有名になりつつあります。 日本でも、優れた方々は、ずっと以前からGTDを注目してきました。しかし、私はそれを一度も見たことがありません。 以前より既にGTDを導入していた龍司さんや他の知人の方々は、GTDは非常に良いと教えてくださいました。彼らは先駆者です。

私はすぐに投げ出しました。 私にとって、GTDの入門ガイダンスはよく分からないものでした。日本語によるガイダンスが登場するまで、私は、GTDのことを忘れることにしました。実際には、日本語のGTDの入門書("Getting Things Done : The Art of Stress-Free Productivity"の邦訳)がありましたが、私は、野球を見ることにお金を使ってしまいました。

私がビール片手にカープを応援しまくっていた間、偉大な先駆者は、翻訳とドキュメントの執筆を続けていました。そして今、私はいくつかのサイトで日本語のGTD入門ガイダンスを手に入れることができます。特に有名な電子雑誌であるITメディアによる記事は、読みやすくて非常に役に立ちます。 私のようなGTD初心者は手始めにこれらの記事を読むのではないでしょうか。

GTDはナレッジ・ワーカーに良いと言われています。 しかし、私は、日本のプログラマがナレッジ・ワーカーなのかどうかは知りません。

龍司さんは、GTDが解放者であると言いました。ほんとに?  ITメディアの記事には、GTDが欧米のナレッジ・ワーカーの間では常識だと書かれていました。 ほんとに?

私は、それを試みて、報告するつもりです。
|
DirectPhysics
私は、マイクロソフトが DirectPhysics を DirectX に加えようとしているというニュースに驚かされました。そのニュースに関して、DirectX が AGEIA PhysX をサポートするという噂があります。これらの計画が実現するならば、 DirectX はホビープログラミングだけでなく、ビジネス・プログラミングのためにもよりエクセレントなものになるでしょう。

DirectX は、マルチメディア用の複合的なライブラリで、 OpenGL より遙かに大型です。それは、Windows Vista の描画技術として知られています。だからといって、マイクロソフトがゲーム・ライブラリとしての DirectX の開発をやめたわけではありません。多くの開発者は、 OpenGL が次世代ゲーム・グラフィックスAPIの勝者であるとみなしました。理由は、以下です:
  • OpenGL 2.0 の登場 -- OpenGL 2.0 は、最新のグラフィック・テクノロジーを取り戻しています。
  • PS3 が、グラフィックスAPIとして OpenGL/ES 2.0 を使用。
DirectX は、リッチではありますが、制限された用途です。それは、 Windows ファミリ専用です。そのため、大多数のゲーム開発者は、プラットフォーム依存であるライブラリを学びたくないと考えるでしょう。彼らは DirectX に対して冷ややかであると思われます。DirectX は、すでに DirectInput、DirectSound、DirectShowとDirectPlay(P2P) を含んでいます。しかし、これらのライブラリが、必ずしも使われてきたというわけではありませんでした。私も、ガイドブックの外で、これらのライブラリが実際に使われるところを見たことがありません。

しかし、マイクロソフトは強力なテレビゲーム・ライブラリを開発することに関して完全に真剣です。DirectPhysics は驚きです。そして、それは我々を興奮させます。

私は、大多数の開発者は、やはり次のバージョンも使わないだろうと思います。多くの開発者は、巨大なライブラリがプラットフォーム依存であることに容赦がありません。たとえライブラリが非常に役に立つとしても、距離を置きたいところでしょう。しかし、これらのライブラリは、ホビー・プログラミングには非常によいです。

その点、OpenGLはグラフィックスAPI以外を含む予定はありません。OpenGLは、グラフィック開発のためにシンプルです。そして、DirectX はゲーム開発のためにリッチなのです。
|
Develop XCube_Service (2/2)
次の問題は内側のウェブサービスと、外側のウェブサービスが異なるかもしれないという可能性です。 それは重大な問題です。 XCube_Serviceには、内側のサービスと外側のサービスの違いを吸収するフィーチャーを持っています。しかし、もし開発者がそれ必要としなかったら……? 内側のXCubeサービスは外側のサイトのコンテンツを一切含めないことを要求されるかもしれません。

サービスのクラスは書きやすいなら、それは問題ではありません。 2種類のクラスを準備するのは、良い解決策でしょう。しかし、残念なことに、サービスのクラスは開発者に厳しい定義を要求します。 したがって、それは即席には書きにくいです。 恐らく、XoopsObjectHandlerはモジュールコンテンツのコンテンツをリレーすることに関しては、サービスクラスより素晴らしいメカニズムです。 もちろん、ウェブサービスに接続させるために、ハンドラを抽象化することは可能です。XoopsObjectHandlerのデザインはこのような点において、非常に優れています。

しかし、ウェブサービスへの抽象的なレイヤーは今の時代にたいへん重要です。他のモジュールのコンテンツをリレーするだけ、ということは、重要ではありません。そのような場合でも、XOOPS Cubeは近い将来他のサイトに接続できることを要求されるでしょう。 たった1つのクラスを書くことによって、他のモジュールと他のサイトの両方にコンテンツをリレーすることが実現できれば、それは理想です。

ほとんどの開発者はXoopsObjectHandlerXCube_Serviceの両方とも使用しないでしょう。しかし、他のモジュールか1File HackingXCube_Serviceをモジュールに追加することは可能です。 私たちはクラスの目的を明確にしなければなりません。それによって、クラスのコードはシンプルになります。 お気づきのように、私たちはRoadmapに示されるベータ系列に取り組んでいます。 ある複雑な因果関係によって、私たちはコードをブラッシュアップして、XCube名前空間を再設計するという並行開発をしなければなりません。XShadeexReviewは良いテストです。
|
Develop XCube_Service (1/2)
XCube_ServiceXCube名前空間のCVSの未完成のクラスの1つです。 このクラスには、以下の目標があります:

  • 通常、このクラスは、モジュール間接続に使用されます。
  • デリゲートは、一種の関数ポインタであって、このクラスとは似て非なるものです。
  • ユーザはWebサービス・アダプターへどんなXCubeサービスも適合させることができます。
  • また、ユーザはどんなXCubeサービスクライアントもWebサービスに接続することができます。

しかし、多くの問題があります。 1の問題はLegacyモジュールが何をWebサービスライブラリとして収録するかということです。Legacyモジュール群はGPLであり、私たちがそのライセンスを変えることはできません。私は、それがGPLである以上は、LegacyパッケージがPEARライブラリを直に収録することはできないと考えています。しかし、フルスクラッチ・プログラムであるXCube名前空間はデュアルライセンスを用いてGPLから離れることが可能です。例えば、テストBaseモジュールであるXOOPS Cube Shadeは別のライセンスを持っています。 言い換えれば、XShadeGPLライブラリだけではなく、PEARライブラリを持つことができるということです。

したがって、私たちは、Baseモジュール側にウェブサービスを実装するためのライブラリを持たせなければなりません。 そして、XCube名前空間には、特定のライブラリがあるべきではないでしょう。それぞれのBaseモジュールがライブラリと、アダプターのインスタンスを作成する Factory のためのデリゲートを持つことが必要です。

今日、ウェブサービスに関するクラスデザインのテストためのexReviewsf.jpexmodulesプロジェクトにコミットされました。このモジュールはXCube名前空間の抽象レイヤーを伴わず、未だWebサービスを直接インプリメントしています。 言い換えれば、現在のXCube_Serviceでウェブサービスを実装することは、困難で、間違っているのです。
|
決戦は名古屋 XTC 2006
私は次の金曜日、土曜日、日曜日にブログを更新しません。その理由は昨日のエントリに書きました。本日のエントリは今週最後のエントリです。私は面白いイベントを告知します。

XOOPS Cube Tokai Conference 2006 (XTC2006) -- 決戦は名古屋。でたがや! XOOPS Cube」は名古屋で7月29日に開催されます。その長いタイトルは何ですかって? えーと、これは(おそらく)日本ではクールな表現なのです。

これは、東海の最初の
XOOPS イベントです (東海は日本の地域のひとつであり、この前の万国博覧会によって知られています)。東海で生活する Tom_G3X は、このイベントを企画しました。そして、彼、及び、彼の友人は、現在、開催に備えて準備しています。

多くの開発者は、東京からのこのイベントに行くでしょう。もちろん、私も、行くつもりです。我々は、東京の我々のイベントに
Tom_G3X を常に巻き込みました。今回は、我々の順番です。

私は、
cubson GUI 版の demo ムービーを上映するつもりです。Cubson GUI 版は、ナンセンスな考え(大部分のウェブ開発者が考えようとも思わない) によって開発された奇異なソフトウェアです。そのデモムービーは、ネットで公開されません。イベントの後で、私は、このサイトで、デモムービーの代わりに cubson GUI 版の要約を公表するでしょう。あなたがその詳細を見ることを望むならば、イベントへ出かけましょう!

誰でも無料でこのカンファレンスに入場可能です。もし、カンファレンス後の宴会に行きたいのであれば、
4,000円を実費として支払わなければなりません。カンファレンスと宴会は定員があります。これらの催しにここからアプライできます。

東海とは?

東海は、名古屋や豊田等々を持つ日本の地域です。二つの都市はよく知られています。特に、豊田市は自動車メーカーのトヨタ社の拠点として有名です。

余談ながら、私は以前東海に住んでいたことがあります。
|
Tab vs Spaces
私は、毎日エントリを書き続けました。しかし、私は友人の結婚式に出席するために今週の週末に3日間更新するのを止めなければなりません。このblogが静的ページであるので、私はタイマーを更新することにセットすることができません。私は、東京への帰還の前に広島に立ち寄ります。次の月曜日に、ではまた。

ところで、題名が
"Tab vs Spaces" である興味深く短い記事が、Bug Babbleに載っています。(それは、古い記事です...私はようやく私の感想を書くことができました)

タブまたはスペースが許されるどうかは、多くの会社で議論中です。その記事は、その答えなしで1つの考えを提案しました。
「あなたは空白文字が見えるようにVisual Studioをセットするべきです。」

You can change this in VS by going to Edit/Advanced/View White Space. I also change the default color for visible whitespace to silver. Silver on a white background is unobtrusive, yet noticeable when there is inconsistency.

それは、奇妙な答えではありません。大部分のIDEには、タブとスペースに対して、標準可視カラーもしくは標準マークを持っていません。これは、彼らがタブとスペースに関する議論から逃げることを意味しています。古典的ないくつかのエディタは、標準設定としてタブ・マークを持っていたと思います。しかし、最近のIDEは、タブまたはスペースへの言及を持っていません。それは、彼らがフォーマッティングのフィーチャーを備えていることが理由かもしれません……彼らは、各々の体裁情報によって、各々のユーザーのために、ソースコードのコード・フォーマットを整えることが出来ます。

結論を持たないことは、選択の自由なのかもしれません。
|
法線マッピングとツール
法線マッピングは、以前からある技術です。多くのDirectXガイダンスブックはそれを取り上げます。しかしながら、それは、現在のゲームコンソール上で実装しにくいものでした。次世代の製品ではその実装にあたっての問題はありません。

おもしろいことに、法線マッピングに求められたコンセプトは、変遷の途にあります。私は、そのように感じます。昔、法線マッピングは、
GPU のための省力技術であると紹介されました。しかし、次世代環境において、非常に複雑なポリゴンモデルを扱うことが容易になりました。私は、法線マッピングが GPU ではなく、人間のための省力技術として重視されるのではないかと考えます。

私が思うに、大部分の開発者は、背景モデルのために多くの時間を費やすことを望みません。れんが壁の表現のために、開発者は、法線マッピングを使うでしょう。そして、壁のモデルは昔同様プリミティブであり続けるでしょう。

法線マップはもはや人間の仕事ではありません。そこで、優秀なツールが必須です。多くのソフトウェアメーカーは法線マップのソリューションを市場へ投入しています。
Zbrushはこのレースにおける先頭ランナーの一人です。加えて、ZBrushはテクスチャのカテゴリにおいても同様に優れていると考えているかもしれません。それは、3Dペインティングのための興味深いフィーチャーと、モデリングのための癖のあるフィーチャーを備えています。

ZBrushによるモデリングは普遍的ではありませんが、十分に興味深いです。しかし、日本の多くのデザイナーはこの普遍的ではないツールをモデリングのために使うことを望みません。ZBrush はそのことをよく理解しています。それゆえ、彼らはZBrushと他のツールを組み合わせることを勧めるのでしょう。
|
3ds Max v8
3ds Max v8 が出てしばらくになります。しかし、私はまだそれを一度も試みたことがありません。そこで、私は、今日久しぶりにAudodesk日本サイトを訪問して、いくつかの変化を知りました。まず第一点に、私たちはそのサイトからトライアル版をダウンロードすることができます。バージョン7の頃は、トライアルCD-ROMを申し込まなければなりませんでしたが……次に、バージョン8は本当に素晴らしい新機能をもたらします。 バージョン8はサイトで20に及ぶフィーチャーをリストアップしています。それは、エクステンションのフィーチャーを含んでいます。つまり、Autodeskは、CharactorStudioと同様に、より多くの有償エクステンションの提供を止めたということです。

3ds Max のために、「e解説」と呼ばれる興味深い製品があります。これは初心者のための様々なソフトウェアのビデオチュートリアルです。 私は昔、それには価値がないと思っていました。 しかし、これは時間の節約です。3ds Max のための製品は2種類です。そのうちのひとつは、初心者のためにバージョン7をカバーします。別のひとつは、バージョン8における新機能だけをカバーしています。これはおもしろいアプローチです。この製品は新機能に関する説明のために4,000円を請求します。それはまさに時間の節約のための純粋な対価です。

ところで、
3ds Max の新しいバージョンは法線マッピングに関して、より強力な機能を獲得しました。そして、日本のユーザは法線マップのためにZBrushに注目するようになりました。ZBrushは日本で十分ポピュラーとはいえませんでした。しかし、それは最近、法線マップツールとしてポピュラーになり始めています。ZBrushのための学習センターであるZBrushCentralは、3ds MaxZBrushと共に使用することを勧めています。"ZBrush normal maps and 3dsmax v8"というチュートリアルは法線マップの分野における勝利宣言かもしれません。
|
What is ActionForm? (6)

Conclusion

XCube_ActionForm::load() update() は、vritual (C++でいうところの)であり abstract ですので、様々な変数のために使用されることができます。cubsonによる生成コードはこれらのメンバー関数と切り換えGET/POSTをよく使用します。 以下のダイアログはcubsonのコードにおける編集のための手順を示します。 あなたは、cubsonが、XCube_ActionFormの特徴をうまく使用することを理解するでしょう。
ActionForm_Example
ご承知のとおり、cubsonXOOPS Cubeのお勧めの規則を守ります。編集において、Cubsonはプログラムを3個のオブジェクトに分けます。(オブジェクトは、ビジネスロジック(アクション)と、ActionFormXoopsSimpleObjectです) 恐らく、あなたが生成コードで編集したいポイントは、バリデーションと表示の準備です。 したがって、cubsonが基本的なコードを発生させた後にあなたは初めに、ActionFormをカスタム設計するべきです。 あなたは、ほとんどの場合、ActionFormのカスタムのためにコードを書く必要はありません。あなたは、XML構成ファイルを変更して、cubsonActionFormを作り直すことができます。

あなたは、ちょうどこのセクションでXCube_ActionFormに関する基本概念を学び終えたところです。 次のセクションで、あなたは、実際にcubsonによるActionFormのカスタマイズを経験するでしょう。
|
What is ActionForm? (5)
XCube_ActionFormは開発者のためのウェブにおけるデバイスです。 しかし、それはデータベースに接続しません。 XOOPS Cubeは、ビジネス論理とデータベースとActionFormを切り離すのを勧めます。
Load_example01
データベースに対してActionFormの値を使うために、あなたはXoopsSimpleObjectを連携させることができます。XCube_ActionFormには、そのためのインタフェースがあります。

load(&$object)

Load_example02
あなたは load() の中で$objectの値をActionFormへコピーするロジックを実装すべきです。 XCube_ActionFormは初期値を持たせることが困難です。そこで、あなたは、ActionFormを設定するのにXoopsSimpleObjectを使用することができます。 この方法は、再編集機能にとって重要です。 あなたがロード済オブジェクトをActionFormに送るなら、それはコンテンツの再編集です。 あなたが新しいオブジェクトをActionFormに送るなら、それはコンテンツの新規作成です。 言い換えれば、これは「新規作成と編集の差異の除去」です。
Load_example03
さらに、あなたは特別なローディングのためにこのメンバー関数を利用することができます。 例えば、ActionFormは文字列として$objectの整数値をコピーすることができます。

update(&$object)

あなたはActionFormの値を$OBJECTへコピーするロジックを実装するべきです。 このメンバ関数はバリデーションがうまくいった後に呼ばれなければなりません。 load()と同様に、あなたは特別なアップデートにこのメンバ関数を利用することができます。 例えば、ユーザの入力値から「変更された日時」フィールドをコピーするべきではありません。 この場合、あなたはいつもそのフィールドにtime()をセットすることができます。

Update_example02
例となる ActionForm をあなたの myannounce モジュールで見てください。

function update(&$obj)
{
  
$obj->set('update_unixtime', time());
  
$obj->set('subject', $form->get('subject'));
  
$obj->set('message', $form->get('message'));
}

このupload()'create_unixtime'を上書きしません。 そして、それは'update_unixtime'time()を使用します。 このようなテクニックは、ユーザから重要なフィールドを保護するために使用されます。 例えば、ユーザのActionFormは管理者だけが編集することができるフィールドを扱うべきではありません。 このコンセプトを理解しているなら、あなたはユーザタイプでActionFormを切り替えることができます:

$actionForm = $xoopsUser->isAdmin() ?
              new
EditForm4Admin() : new EditForm4User();
|
What is ActionForm? (4)
私は今日も、ActionFormのお勧めの手順について説明します。

Validate

ActionFormはそれの中で妥当性検査をします。 例えば、「メール」は特別なパターンがある文字列です。 ActionFormは文字列として入力値をとって来て、メールとしてそれを検査します。 この場合、文字列はフォームプロパティの情報です、そして、メールはフィールドプロパティの情報です。

フィールドプロパティ設定によって、その妥当性検査は働きます。
XCubeLegacyには、様々なフィールドプロパティがあります。 もちろん、開発者はフィールドプロパティとして彼らのバリデーションパターンを追加することができます。

値が妥当性検査に違反するなら、
ActionFormは検査と結びつけられるエラーメッセージを保持するようになります。そして、また、ワンタイムトークン(チケット)がこの過程でチェックされます。 XCube_ActionFormのワンタイムトークンは、トランザクショントークンの1種です。開発者はバリデーションとして、ワンタイムトークンを扱うことができます。

Error Check

hasError()は、ActionFormにエラーがあるかどうかチェックします。 開発者はgetErrorMessages()メンバー関数を通じてActionFormのエラーメッセージにアクセスすることができます。

Cubsonは、ビジネスロジックを、リクエストの種類で変更することを勧めます。 それがGETかエラーであるなら、うまくいくまで入力形式を何度でも表示してください。 POSTであり、それがエラーでなければ、次の手順に行ってください。 このループによって、ユーザはそれがエラーであっても彼の入力値を失いません。
LoopDialog
例えば、myaccountモジュールで、メッセージ値なしで「送信」ボタンをクリックしてみてください。 1つのエラーメッセージが表示されるでしょう。しかし、subject は失われません。あなたはメッセージフォームを満たすまで、次の手順に行くことができません。同様に、トークンエラーの場合も、このループは働きます。
|
What is ActionForm? (3)
XCube_ActionFrom には最大の効果を得るための推奨手順があります。それは下記の手順です:

  1. Construct
  2. Prepare
  3. (Load)
  4. Fetch
  5. Validate
  6. Error Check
  7. (Update)

XCube_ActionFormはこの手順に関してフレームワークを作りませんが、Legacyモジュールは理想的な手順としてそれを使用します。 以下で典型的なコードを見てください:

$form =& new Myannounce_MessageEditForm();
$form->prepare();

$form->fetch();
$form->validate();

if (
$form->hasError()) {
  
// display error
}

事実上、コードジェネレータが様々な典型的なコードを生成するので、あなたはこれらのコードをタイプする必要はありません。 しかし、手順を理解するためにこれらのコードを読みましょう。

Initialization

new 演算子の後に prepare() が呼び出されます。 prepare() は、複雑で長い生成コードから成ります。 したがって、開発者はコンストラクタに初期化コードを書きます。初期化においては、これらの関数両方が呼ばれなければなりません。

Fetch

ActionFormは$_REQUESTからの入力値を得て、入力値をプロパティに保ちます。 フェッチの後で、get()メンバー関数はこれらの値にアクセスすることができます。

ActionFormは指定された値だけをとって来て、型設定でキャスティング変換をします。 したがって、開発者はget()を使う限り、キャスティング変換について考える必要はありません。ヌルバイトか悪い制御コードが文字列プロパティかテキスト・プロパティに送られる場合、XCube_ActionFromはプログラムを中止します。

あなたがビデオゲームプログラマーであるなら、ジョイパッドの値を得ることを想像してください。 恐らく、ジョイパッドのための特別なクラスは、ジョイパッドに関する特別な条件下で働いて、そして、値だけを保つでしょう。ほとんどの開発者は、BIOSかデバイスドライバとファイトするためにプログラムを作る必要はありません。 同様に、ActionFormを持つ開発者はいくつかのウェブの特別条件のためにプログラムを作る必要はありません。

キャスティング変換のためのフォームプロパティの型設定は、BOOL、INTFLOATSTRINGTEXTです。 TEXTCRLFを受け入れますが、STRINGはそれらを受け入れません。

さらに、開発者はそれぞれのフォームプロパティの fetch() をオーバーライドすることができます。あなたがこの特別な用法を知りたいのであれば、ソースコードにおけるコメントを読むか、またはドキュメント・システムでソースコードからドキュメントを作成してください。
|
What is ActionForm? (2)
XCube_ActionForm は、抽象クラスです。そのため、あなたは、 ActionForm メカニズムを使うために、 XCube_ActionForm のサブクラスを定義しなければなりません。例となるソースコードを読むために /modules/myannounce/admin/forms/MessageEditForm.class.php を開いてください。そこには非常に大きなクラスがあります。

これは、 XCube_ActionForm のサブクラスです。このクラスは、 prepare() におけるフォームプロパティ、及び、フィールドプロパティをセットし、load() と update() メンバ関数を実装します。あなたは、そのような複合的クラスを定義することが難しいと思うでしょう。しかし、開発者は、そのようなクラスを直接定義する必要がありません。ツールによって XML 構成ファイルからサブクラスを生成できます。/modules/myannounce/admin/.xml/message_edit.xml を見てください。これは、サブクラスを定義するための構成ファイルです。

サブクラスを定義することについて重要なことが2つあります:

  1. あなたは、 cubson または別のツールによって XML 構成ファイルから XCube_ActionForm のサブクラスを生成し得ます。
  2. 同様に、あなたは、cubson によって、データベース構造、もしくは、 XML データオブジェクト構成ファイルから XML 構成ファイルを生成し得ます。

コアチームは、 XCube_ActionForm の設計では手で ActionForm を定義することはが可能ではないと考えます。従って、我々は、 XOOPS Cube Legacy 2.1 リリース時に、公式コンバータをリリースするでしょう。そのコンバータは、 cubson のような他の機能を持っていません。しかし、 PHP プログラムですから、だれでも、それを動かすことができます。

ところで、もしあなたが struts を知っていれば、これらの XML のフォーマットが struts ライクであることに気づくでしょう。しかし、 XOOPS Cube は、これらの XML を決して直接扱いませんから、このフォーマットは、重要事項ではありません。フォーマットを必要とするものは、コンバータであり、そして、各々のフォーマットは、各々のツールにおいて異なります。様々なフォーマットを扱う様々なツールがリリースされれば、あなたの好みのフォーマットを選択することができるようになります。
|
What is ActionForm? (1)
私は、 cubsonマニュアルを編集し始めました。それは、このブログのリミックスです。古いエントリは、決して修正されませんが、そのマニュアルは、最新の情報をカバーするために、アップデートされます。例えば、gigamaster氏は、英語の OS における正しいガイダンスを私に教えて暮れました。私は、そのようなレポートによってマニュアルをアップデートします。ですから、ユーザーは、ブログのアーカイブではなく、マニュアルを読むべきです。

さて、私は、今週末まであなたに
XCube における ActionForm を説明します。あなたが myannounce モジュールを持っていないならば、マニュアルに行って、そして、それを作成してください。

あなたのコントロールパネルの
myannounce モジュールにおいて "create new" をクリックしてください。myannounce モジュールのメッセージ入力フォームは、主題、及び、メッセージを必要とします。あなたが何もフォームにインプットしなかったならば、エラーメッセージが現れ、そして、再入力を要求します。XOOPS Cube 2.1 における入力フォームの大部分は、同じ行動をします。入力フォームは、エラーリクエストが次のページに通過することを決して可能にしません。

これらのコントロールは、
ActionForm によってもたらされます。ActionForm は、妥当性検査を担当しています。ActionForm は、ウェブプログラミングにおいて非常にポピュラーです。コアチームは、開発者のためのサンプルとしてそれらの ActionForm クラスを作成しました。ライブラリを持たない開発者は、コアにおいて定義されるライブラリを使うべきです。これは、義務ではなく、単にライブラリです。従って、開発者が有益なライブラリを持っているならば、彼は、自身のライブラリを選択できます。

XCube_ActionFormは次のような目的を持っています:

  • 入力値を $_REQUEST から得て、magic_quotes_gpc がオンなら stripslashes() を行います。
  • 型安全。フォームプロパティ設定に従って値をキャストします。
  • フィールドプロパティ設定に従って妥当性検査を行います。
  • ワンタイムトークンをバリデーションに統合します。
  • 新規作成と編集の差異を取り除きます。
  • データオブジェクトと値を交換するためのインターフェイスを実装します。

つまり、XCube_ActionFormはデータオブジェクトの外側で入力値の管理とチェックを行います。
|
OGRE AppWizard
私は、OGRE AppWizard を試してみました。これはいいです! 私は、その安定性と素晴らしさに感嘆せざるを得ませんでした。

インストールは、Javascript ファイルを走らせるだけで済みます。それだけで、 OGRE のアプリケーションウィザードが手に入ります。豊富なオプションからいくつかの選択肢をプロジェクトのために選ぶことが出来ます。さらに驚くべき事は、生成されまったく修正されていない状態のプロジェクトをビルドできることです。

もし、 Standard application を選択すれば、いくつかのリソースファイルがプロジェクト内にセットアップされます。また、 Sample Framework を選択すれば、そのフレームワークですぐにアプリケーションの開発にとりかかることができます。

私は、インストーラーが非常に丁寧なアプローチであることに驚かされています。多くの熟練したユーザーがOGREのまわりにいるにも関わらず、それはあまりに使いやすく作られています。熟練したユーザーのためのツールであれば、それが親切でないとしても、普通それは問題にはなりません。しかし、このツールは、そうではないのです。私は、このツールの品質へのこだわりを尊敬します。

また、サンプル枠組みは重要です。
それはOGRE SDKが含んでいるExample Applicationヘッダーファイルを使用します。 私たちは、ゲームのような多くの複合的場面を造るのにそれを使用することができません。 しかし、だれでもフレームワークによるサンプルシーンで学ぶことができます。(フレームワークはすぐに1つの場面を造ります) 技能プログラマーの中には彼らがサポートなしでかなりのアプリケーションを組立てることができるので、フレームワークが嫌いである人もいます。 しかし、サンプルフレームワークで手早くプログラミング効果を学び始めることは、重要です。あなたが一度も経験したことがない他のカテゴリにおけるアプリケーションを開発しなければならないなら、あなたは先達の開発者が準備したサンプルフレームワークを当てにするかもしれません。
|
Interactive Deformable Modeling Framework
DefColStudio2005年にSIGGRAPHで発表されました。 これはインタラクティブな変形可能モデルのフレームワークです。 デモアプリケーションで、私たちはモデルをつまみ、振り回して、別のモデルにぶつけることができます。それは非常におもしろいです。
shot_00003_1
このデモアプリケーションは、 Bruno Heidelberger の研究を説明するために、彼によって開発されました。 それは、インタフェースにCEGUI、レンダリングにOpenGLおよびOGREを使用します。 そう、このデモはOGREによって作られてている成果物の1つです。 私たちが注目すべきことは、十分なプログラミング技能を持っている研究者がCG技術を説明するためにOGREを選択したということです。 言い換えれば、OGREには、プロトタイプのための十分なライブラリと十分なツールキットが既にあるということです。

Bruno は、スイス連邦のチューリッヒ工科大学の研究助手であり、AGEIAで働いています。 AGEIAは最近、PhysXでポピュラーになりました。 彼のプロフィールは、彼がAGEIAの次世代ゲーム物理学に取り組むと説明します。 AGEIAによって作られたPhysXは次世代ゲーム物理学を実現する特殊ボードです。 恐らく、彼はPhysX開発チームのメンバーでしょう。
|
OGRE
OGRE は、レンダリングエンジンであり、私が常に見ているオープンソースプロジェクトのひとつです。それは、多くのユーザーの支持、良いツールキット、及び、詳細ドキュメントを持っています。私が OGRE を見始めたとき、それは、まだ正式バージョンをリリースしていませんでした。そのため、ユーザーは、 OGRE プロジェクトの進捗を見るために、毎回ソースコードをチェックアウトし、それをコンパイルしなければなりませんでした。

OGRE は、長い間 0.9.x にあり、そして、公式のチーム、及び、サードパーティは、その間に様々なツールキットを開発しました。私は、 OGRE の計画があまりにも壮大だったので、それは完成しないのではないか、と思いました。しかし、 OGRE は、多くのツールキット、及び、オフィシャルドキュメントを伴う正式バージョンとしてリリースされました。

OGRE は、多くの好影響を他のプロジェクトに与え、そして、 OGRE に関するいくらかのプロジェクトもまた、始まりました。CEGUI は、それらのなかでも最も良いプロジェクトです。OGRE CEGUI 、及び、いくらかのツールキットは、容易な3Dプログラミングを趣味、もしくは他の分野へもたらします。たとえば、我々は、 SIGGRAPH OGRE アプリケーションを見ることができます。これらのライブラリは、我々の考えをテストするために便利です。同様に、とあるドイツのゲーム学校は、 3 次元プログラミングを学ぶために OGRE を使います。

しかし、 OGRE は、アジアでポピュラーではありません。その理由は、それが UTF-8 をサポートしないので、アジアのユーザーが OGRE で母言語を用いることができないためです。いくらかのソリューションは、提案されており、そして、 3rd party 製のパッチもあります。しかし、公式のソリューションはまだありません。このことは、今しばらくの間、 OGRE におけるホットトピックであり続けるでしょう。
|
VisualStudioにおけるC++とC#の差異

C# で書かれたソースコードはどんなものでも、美しいように見えます。一方、 C++ で書かれたソースコードは、悪く見えます。私は、さすがに C# はよい見通しを持つ、C++より次世代の言語であると思っていました。

今朝、私は、この話題を仕事仲間と話していました。私の友人は、 GC 機能を持つ 3 次元ゲームエンジンにおいてそのプログラムが作られるならば、異なるものは僅かであろうことを指摘しました。例えば :

[C++]
SceneNode *node = mSceneManager->getRootNode()->createChildeNode(...);

[C#]
SceneNode node = mSceneManager.RootNode.createChildeNode(...);

C# は、 C++ よりスマートなように見えますが、違いはほんの僅かです。そのとき、我々は、 VisualStudio における C++ C# のカラースキャナに大きな違いがあることに気づきました。 C++ は、大部分のコードが黒色で表示されるので、簡素でフラットに見えます。しかし、 C# コードは、様々な色によって表示されます。

IDE にとって C++ コードをパースすることは難しいかもしれません。なぜなら、 C++ は、厄介な #define typedef を持っているからです。とにかく、我々は、 VisualStudio における C++ のディスプレイが C# より簡素であるということを知るようになりました。これは、 C++ が悪いように見える理由であるかもしれません。

我々は、なぜ今までそれに気づかなかったのでしょうか……
|
Cubson First Step Guide (4)
myannounce モジュールをテストする際、あなたは、いくらかの問題に気づくでしょう。生成されたテンプレートは、あまりにもラフです。それらは、編集されるべきです。

それでは、コントロールパネルから編集を始めましょう。XOOPS Cube Legacy 2.1 において、コントロールパネルは、テンプレートシステムを使います。コントロールパネルのテンプレートシステムは、コントロールパネルのテンプレートシステムは、ファイルベース ( あなたが DB テンプレートによって使うことができない ) です。あなたがテンプレートファイルを変更したとき、表示は、同時にアップデートされます。

コントロールパネルを見てください。

「メッセージ」カラムは、我々にとって不必要です。なぜなら、我々は、ビューアイコンをクリックしてメッセージを見るからです。メッセージは、リストに直接現れる必要がありません。

/admin/templates/message_list.html を開いて、そして、それを編集してください。初めに、「メッセージ」カラムを削除してください。次に、 messsages を表示するコードを削除してください :

<td><{$obj->getVar('message')}></td>

このページを再ロードして、そして、メッセージの除去を確認してください。

続けて、公開側のテンプレートを編集してください。リストの編集リンク、削除リンクをクリックすると、エラーが発生します。これらのリンクを削除してください。そのため、コントロールカラムは、不必要となります。メッセージカラム、及び、コントロールカラムを削除してください。そして、このテンプレートを再ロードするために、このモジュールをアップデートしてください。

我々は、テンプレートワークをちょうど終えました。それでもなお、いくらかの悪いものがあります。いくらかのメッセージをポストした後で、メッセージリストを見てください。最新のメッセージは、リストの最後に加えられます。あなたは、最新のメッセージが先頭にあることを望むでしょう。それには、アクションフィルタフォームを編集するとよいでしょう。

私は、アクションフィルタフォームに関する説明を次のステップガイドに先送りします。
/forms/MessageFilterForm.class.php を開いて、そして、下記と同様にそれを編集してください :

// define('MESSAGE_SORT_KEY_DEFAULT', MESSAGE_SORT_KEY_ID);
define('MESSAGE_SORT_KEY_DEFAULT', -MESSAGE_SORT_CREATE_UNIXTIME);

同じく /admin/forms/MessageFilterForm.class.php を開いて、そして、それを編集してください。この作業によって、あなたは、オーダについての振る舞いを変えました。

結論

我々は、シンプルなテーブルによってシンプルなモジュールを開発しました。Cubson は、本物のデータベースにおいてテーブル構造によるコードを生成し得ます。しかしながら、生成されたテンプレートがあまりにもラフであるので、あなたは、それらを編集するべきです。

ノート

それが SQL ファイルを含まないので、我々が開発したこのモジュールは、配布できません。そのため、モジュールをダウンロードしたユーザーがそれをインストールするとき、必要なテーブルは、データベースに作成されません。あなたがこのモジュールを公開するときは、 sql/mysql.sql を書かなければなりません。
|
Cubson First Step Guide (3)
私は、cubsonのいくらかのバグを解消して、それを更新しました。あなたは、このサイトのダウンロード・ページからバージョン0.43を得ることができます。

さて、
myannounceモジュールを開発することを再開しましょう。私達は、これまでにmyannounceモジュールの管理画面機能を開発しました。今日のエントリでは、公開の機能を完了させます。それに先立ち、私達は、このモジュールの公開側の機能を確認するべきです。myannounceモジュールは、どんな特徴を持っていますか?

  • 第一に、管理者のみがコントロールパネルでメッセージを登録することができる。
  • 第二に、ユーザーはメッセージのリストとメッセージの内容にアクセスすることができる。

したがって、編集機能と削除機能が、公開側で不必要です。ウィザード・コマンドは4種類の動作によって使われる多くのファイルを生成しますので、あなたは編集機能と削除機能に関するファイルを削除するべきです。cubsonコンソール上で以下のとおりタイプしてください:

cubson> wizard message

あなたは、モジュール・ディレクトリで以下のファイル・ツリーを見るでしょう。

myannounce_tree_2

これらのファイルから以下のファイルを削除してください。

  • .xml/message_delete.xml
  • .xml/message_edit.xml
  • actions/MessageDeleteAction.class.php
  • actions/MessageEditAction.class.php
  • forms/MessageDeleteForm.class.php
  • forms/MessageEditForm.class.php
  • templates/myannounce_message_delete.html
  • templates/myannounce_message_edit.html

次に、あなたが取り除いたテンプレート・ファイルの名前をリストアップするxoops_vesrion.phpを開き、それらのファイルを取り除いて、添え字番号を編集してください。myannounce_message_edit.htmlmyannounce_message_delete.htmlは不必要です。あなたがそれを編集しなければ、このモジュールの情報は削除されたファイルの名前を保ち続けて、いつかトラブルを起こします。以下が、正しいコードです:

//
// Templates. You must never change [cubson] chunk to get the help of cubson.
//
//$modversion['templates'][]['file'] = 'myannounce'_xxxxx.html';
//$modversion['templates'][]['description'] = 'myannounce'_xxxxx.html';
##[cubson:templates]
$modversion['templates'][0]['file'] = 'myannounce_message_list.html';
$modversion['templates'][1]['file'] = 'myannounce_message_view.html';
##[/cubson:templates]

テンプレートをロードするために、管理画面でモジュールをアップデートしてください。最後に、あなたはあなたが昨日の登録において修正した管理画面の
index.phpと同様にindex.phpを書き直さなければなりません。index.phpを開き、「Default」を「MessageList」で置き換えてください。

オーケー、公開側の機能は、今まさに完成しました。アクセスして、テストしなさい。しかし、これは終わりではありません。私達は、チューニングのために作業を続ける必要があります。
|
Cubson First Step Guide (2)

Make-project

まず初めに、XOOPS Cube にプロジェクトを作りましょう。cubsonコンソール上で次のようにタイプしてください。

cubson> make-project myannounce

MyannounceディレクトリはあなたのXOOPS Cubeのモジュールディレクトリに作られました。make-projectは、SQLファイルやアイコンといった付加的なファイルを追加しません。それでは、すぐに、このモジュールをインストールしてください。

Create tables

発表モジュールは管理者が掲示するメッセージを示します。 したがって、それには、以下のデータモデルがあるものとします:

  • ID
  • Created datetime
  • Modified datetime
  • Subject
  • Messsage

IDは、プライマリーキーかつ autoincrement である数値です。 次に、Cubsondatatimeとしてunixtimeを扱います。 もちろん、そのようなスタイルには、いくつかの問題があります。 しかし、2006年に、私たちは、作業時間を記録するのにそれを使用することができます。 次に、 subject はvarcharで、メッセージはテキストになります。

'{XOOPS_DB_PREFIX}_myannounce_message' テーブルを以下同様に作成してください。もしあなたの XOOPS_DB_PREFIX xoops であるなら、 xoops_myannounce_message を作成してください:

iviewcapture_date_05_06_2006_time_16_45_08

  • id int(10) not null default 0 autoincrement, primary key
  • create_unixtime int(10)
  • update_unixtime int(10)
  • subject varchar(255) not null
  • message varchar(255) not null

iviewcapture_date_05_06_2006_time_16_44_28

Cubsonには、テーブルのための命名規則があります。 あなたはXOOPS_DB_PREFIXとモジュール名を実体名に加えなければなりません。 次に、コントロールパネル側で基本制御コードを生成してください。

cubson> wizard -a message

List View Edit Delete が myannounce モジュールの admin ディレクトリに、発生されます。しかし、アドミンのフロントコントローラがまだ変更されていないので、あなたはサイドメニューからそれにアクセスすることができません。

/modules/myannounce/admin/index.php を見てください。 これはモジュール毎フロントコントローラです。 それはAction Frameの特徴を通してあなたの簡単なフレームワークを扱います。 このコントローラは$actionリクエストによってロジックファイル(action)を呼びます。 $actionを送らないなら、それはデフォルト値を使用します。デフォルト値は「デフォルト」リテラルです。 あなたはそれを"MessageList"に取り替えなければなりません。オーケー、"/modules/admin/index.php"は"/modules/admin/index.php?action=MessageList"と等しくなりました。

再び管理機能にアクセスしてください。動きましたか?
|
Cubson First Step Guide (1)
私たちはcubsonのチュートリアルでアナウンス・モジュールを開発しました。 cubsonの働きを学ぶために、チュートリアル生成を使用せずに、同様のモジュールを開発しましょう。

cubsonはデータ・ドリブン型のモジュールを生成することができます。したがって、cubsonを走らせる前に、あなたはデータモデルのための実体の定義を準備する必要があります。にそうしました。 XMLファイルは、実体を定義するために役に立ちます。しかし、それは書くために多くの時間を必要とします。 私は、データベースのテーブルからそれを生成させる方法を勧めます。cubsonには、XMLと実際のデータベースのための抽象化レイヤーがあります。したがって、あなたは、データベースをXMLに変換するか、もしくは、コード生成にデータベースを直接使用することができます。

cubson_database
言い換えれば、通常、cubsonユーザはデータベースを作ることから開発を始めます。 あなたが最初のチュートリアルでテーブルを作成する必要がなかった理由はチュートリアル作成コマンドがサンプルテーブルのためのSQLファイルを作成したからです。チュートリアルでは、あなたは2ステップでアナウンス・モジュールを開発しました。あなたがチュートリアル作成コマンドなしで同様のモジュールをどのように開発するかは、cubsonの手順を理解する良い手段です。

それでは、開発を始めましょう。この場合、あなたは
mysqlで直接テーブルを作成しなければなりません。phpMyAdminは、テーブルを作成するために役に立ちます。 あなたがXSASXAMPPを使用するなら、phpMyAdminは既にあなたの環境にインストールされています。もしそれを持っていないなら、次回までにダウンロードしてインストールしださい。
|
Rapid Weaver 3.5 public beta 1
このホームページは RapidWeaver によって作られています。 RapidWevermacアプリケーションのCMS(もしくはContents Management Application?)です。ユーザーは、ストレスなしでコンテンツを書いて、1クリックだけで発行できます。 それはLAMPではありませんが、私はRapidWeaverの概念からショックを受けました。

それは、デスクトップアプリケーションであるので、コラボレーション作業には向いていません。複数のユーザで
RapidWeaver 1つのコンテンツを作成することはできません。 しかし、ユーザが自宅で個人のコンテンツを作成するなら、それは非常に使いやすいです。 私は、RapidWeaverに出会ったとき、XOOPS Cube用のWindowsアプリケーションを開発しようと計画しました。それまで、私は、XOOPS CubePHPプロジェクトである以上、 PHP アプリケーションしか作ってはならないと考えていました。しかし、デスクトップアプリケーションは PHP より短期間で開発することが可能ですし、ウェブアプリケーションより使いやすいといえます。

ウェブアプリケーションには、 AJAX があります。しかし、私は、 AJAX はまだデスクトップアプリケーションには及ばないと考えています。

ウェブ制御用アプリケーションは必ずしも
XMLRPC を実装する必要はありません。 RapidWeaverは直接FTPSFTPを扱います。私はRapidWeaverに会うまでそのような実装アプローチを考えたことが一度もありませんでした。 あなたは、RapidWeaverのコンセプトがiWebのコンセプトに似ていると思うかもしれません。しかし、RapidWeaveriWebより早く生まれたソフトです。

さて、
RapidWeaver3.5のパブリック・ベータ1は利用可能です。この新しいバージョンには、良い特徴があります。 しかし、このバージョンは古いバージョンのいくつかのテーマを扱うことができません。 したがって、私は新機能を使用しません。 例えば、私はこのブロッグで新しいバージョンで「永久的なリンク」を使用することができます。 しかし、このテーマはそれをうまく表示することができません。 そのうえ、永久的なリンクページはサイドバーを示しません。つまり、RapidWeaver3.5に関する新機能を使用しますと、私はXOOPS Developers Ringリンクを表示することができなくなってしまうのです。

しかしながら、他の特徴は十分役に立ちます。
私は既に3.23.5に取り替えました。 私は、しばらくこれを使用して、問題に遭遇するなら、バグを報告するつもりです。
|
XCのモジュール不足を恐れないで
Legacy モジュールは、多くの X2JP モジュールを機能させるために、古いバッドコードを保持します。現在のユーザーのサイトを保護することは、ニーズです。しかし、私が思うに、完璧な互換性は、マストではありません。その理由は、大部分のモジュールがセキュリティホールを持っているかもしれないことであり、そして、容易にそれらをリメイクできるということです。

私が先日
cubson extools について書いたので、 cubson のメイン・フィーチャーのことはご存じかと思います。 cubson は、 XCube_ActionStrategy のサブクラスとしてのシンプル・フレームワークと、その枠組みから呼ばれる様々なクラスを生成します。

cubson は未完成品です。しかしながら、バージョン 0.42 以降、それは、あなたに XOOPS の新しい開発スタイルを経験させることができる状態になりました。cubson における経験のために 20 分間のあなたの自由時間をください。まず初めに、.NET Framework ODBC をインストールするために、 15 分を使ってください。それから、シンプルなモジュールを作成するために最後の 5 分を使いましょう。

初めに、
cubson を動かすために、あなたのローカル・コンピュータをセットアップしましょう。先日のエントリでインストレーション・ガイドを読みましょう。

次に、あなたのデスクトップ上で
cubson アイコンをダブルクリックしてください。 cubson ユーザーは、最初はデータベーステーブルを設計しなければなりません。しかし、 cubson は、チュートリアルのためにいくらかのサンプル SQL ファイルを収録しています。従って、あなたは、今回テーブルを作成する必要がありません。では、 cubson コンソールの上で次のようにタイプしてください。

cubson> make-tutorial announce

このコマンドは、基本的なモジュールのディレクトリを作り、そして、チュートリアルの概念に従って、 SQL ファイルとアイコンを追加します。

次に、生成されたモジュールをインストールしてください。もちろん、あなたは、このモジュールにおいて何もまだすることができません。しかしながら、サンプルのテーブルが、モジュール・インストールを通じて作成されました。テーブルさえあれば、
cubson は、よく機能し得ます。cubson コンソール上で下記のとおりタイプしてください。

cubson> wizard -a message

いくらかのクラス、及び、テンプレートが、あなたのために生成されました。このモジュールのコントロールパネルにアクセスしてください。あなたは、リストを見て、新しいデータを作成し、そして、それを削除することができます。はい、このツールの管理ツールは完成しました。次に、公開サイドにおいてそのような機能を作成しましょう。

cubson> wizard message

同様に、いくらかのクラス、及び、テンプレートは、生成されます。あなたは、これらの新しいテンプレートを XOOPS Cube へロードするために、モジュールをアップデートする必要があります。それから、公開側で「 announce 」モジュールにアクセスを試みてください。

あなたは、それを仕上げるために、このモジュールのクラスとテンプレートを調整する必要があります。しかし、基本的な機能は、ほんの
2 ステップで構築されました。生成されたコードは、新しい XOOPS Cube の特徴を最大限に利用します。それは、安全であり、そして、カスタマイズに向いています。開発を楽しんでください !
|
インボイスドーム三連戦
広島東洋カープは、西武ライオンズと三連戦にのぞみました。球場は、所沢のインボイスドームです。

30 May

私は4時に起き、 XOOPS Cube の開発をして、会社へ向かいました。私は普段は夜か昼休みに XOOPS Cube の開発をしています。しかし、私はその日、朝に開発をしなければなりませんでした。なぜならば、私は(日本で一番クールな球団の)広島を応援するために西武インボイス球場へ行かなければならなかったためです。

私が会社に到着したとき、同僚はまだ起きてもいませんでした。私はその日の仕事を終わらせるために必死で働きました。そして、午後6時に会社を離れました。上司は、私が会社に早く出勤することを条件に、それを許していました。

私は地下鉄へ急ぎ、道を間違え、パニックになり、正しい道に復帰し、再び走りました! しかし、所沢は遠かった! 私は移動に1時間40分を必要としました。私がスタジアムについたときには、6回を迎えており、カープは劣勢でした。最終的に、カープは負けてしまいました。

31 May

PICT0008_1
私は XOOPS Cube 2.1 アルファ3のリリースを準備しなければなりせんでした。そして、夜にはまた所沢に行かなければなりませんでした。そこで、私はアルファ3のアーカイブを準備するために午前3時に起床し、会社へ出発しました。カープと XOOPS Cube は貴重な趣味です。それらへの愛は睡眠時間を削りました。私は再びその日の仕事を片付けるために必死に働きました。

私がスタジアムについたとき、イニングは5回を迎えていました。カープの選手はヒットをよく打ちましたが、得られた得点は4点でした。延長10回、カープは逆転負けしました。

1 June

PICT0002_1
私は眠りませんでした。 私は「安定リリースまで私の空き時間のほとんどをXOOPS Cubeの開発に投げかけます」と発言したので、私は、余分な空き時間を得るために睡眠時間を削るしかありませんでした。気にしないでください!  私は XOOPS Cube とカープについて強情かつ幸福です。私は6イニングのときスタジアムに到着しました。 当日、3人の友人がゲームを一緒に見るために来ていました。私たちはカープ最高のスタープレイヤー前田様のためにプラカードを準備していました。そのプラカードは4枚のプレートから成っています。プラカードのメッセージは「神・前田様」です。

7回、前田様は打順を迎えました。私たちはプラカードを掲げて声援を送りました。他の観客がそれを見て、「なんて書いてあるんですか?」「それいいね!」などと話しかけてきました。私たちは一緒に盛り上がりました。まさにその瞬間、アナウンスが流れたのでした。

「レフト前田にかわりまして、浅井。レフト前田にかわりまして、浅井」
|
cubson のインストール
cubson は Windows 専用 CUIツールです。それは、.NET Framework2.0ODBC Driverをインストールする必要があります。あなたが VisualStudio.NET を使って開発しているなら、あなたはすでにこれらの環境をインストールしているかもしれません。そのうえで、あなたは開発のためにローカルのAMPサーバを使用するべきです。 例えば、それは、XSASOXTSまたはXAMPPなどです。

私は cubson のセットアップ手順について説明を始めます。以下のスクリーンショットは、私のコンピュータでキャプチャーしたヒントです。自分の環境と読み替えながら、それらをご覧ください。

  1. XSAS/OXTS/XAMPP のインストール
  2. XOOPS Cube Legacy 2.1 のインストール
  3. .NET Framework 2.0 のインストール
  4. ODBC のインストール
  5. MySQL ODBC Driver のインストール&設定
  6. 環境変数 XOOPS_ROOT_PATH を設定
  7. cubson のインストール

Windows 2000 以降のOSを使用してください。Windows XP を使用するなら、問題は全くありません。

XSAS のインストール

cubson は開発用クライアントアプリケーションですので、あなたはローカルの AMP サーバをインストールしなければなりません。 XSAS XOOPS で最も有名な AMP サーバです。 OXTS XSAS より良いのですが、あなたは、作者に尋ねるために日本語を勉強しなければならないかもしれません。 XAMPP は世界一メジャーな AMP サーバです。 もちろん、あなたはそれを使用することができます。 そして、OCEAN-NETによって造られる xaio があります。

XOOPS Cube Legacy 2.1 のインストール

2.1 ブランチを CVS からチェックアウトするか、もしくは、アルファ3をインストールしてください。

.NET 2.0 Framework のインストール

cubson が C# 2.0 フィーチャーを含むので、あなたは .NET Framework2.0 をインストールしなければなりません。あなたが .NET Framework1.0 をインストールしたなら、それは cubson を実行することができません。あなたが英語以外の言語を使用していて、その言語パッケージが提供されているなら、それをダウンロードしてください。したがって、あなたはあなたの母国語で書かれているマイクロソフトのサイトでランタイムを捜すべきです。 あなたの母国語のパッケージが存在しているなら、それへのリンクはダウンロードページに書かれるかもしれません。

しかし、言語パッケージは主に例外エラーの表示に使用されるので、あなたは言語パッケージを全く必要としないかもしれません。 通常、それを見ることはありません。

.NET ODBC Data Provider のインストール

cubson はデータベースからエンティティに関する情報を得ます。したがって、 ODBC は、データベースに接続するために必須です。私は、 GPL についての議論の引き金とならないように mysql ライブラリを使用しません(cubson はライセンスとして BSD か X11 を持つようになる予定です)。 ODBC はデータベースの種類をある程度抽象化します。そのため、将来、あなたは cubson に postgreSQL を使用することができるようになります。

ここからODBC Data Providerと最新のMDACをダウンロードしてください。 あなたはそのページでMDACへのリンクを見るでしょう。 次に、それらをインストールしてください。

MySQL ODBC ドライバのインストール

mysql_odbc_installer01
ODBC はどんなデータベースにも依存しません。したがって、あなたは、ODBCが受け入れることができるあなたのデータベースのODBC Driverをインストールする必要があります。 ここからMySQL ODBC Driver(Windows版)を手に入れてください。 MSIパッケージは容易にインストールできます。インストールウィザードで「typical」を選択してください。

mysql_odbc_installer02
ローカルマシンのMySQL(XSASか何か)を走らせて、ODBCの設定を開始しましょう。コントロールパネルの「管理ツール」をダブルクリックしてください。

(このスクリーンショットはWindows2000と日本語に関する例です。もしあなたが、英語でスクリーンショットを得ることができるなら、それを私に提供していただけませんか?)

mysql_odbc_installer03
データソース(ODBC)をダブルクリック。

mysql_odbc_installer04
ユーザーDSNもしくはシステムDSNのタブを押して、「追加」ボタンを押してください。

mysql_odbc_installer05
データソースから先ほどインストールした MySQL ODBC Driver を選択してください。

mysql_odbc_installer06
データソース名「xcube」によってあなたのターゲット・データベースにアクセスするためにセットアップしてください。

環境変数XOOPS_ROOT_PATHを設定

cubson_install_env.serendipityThumb
環境変数「XOOPS_ROOT_PATH」に XOOPS Cube のルートパスを設定してください。 コントロールパネルは、ユーザの環境変数を設定するために便利です。 環境変数を有効化するために、再ログインもしくは再起動が必要かもしれません。

cubson のインストール

このサイトのダウンロードページから最新のcubsonをダウンロードしてください。 そして、それをインストールしてください。 旧式のバージョンをインストールしたなら、あなたが新しいバージョンをインストールし始める前にそれをアンインストールしてください。 cubsonをアップデートするとき、あなたはいつもそれをするべきです。
|