XNA Express Beta start! But...
マイクロソフトはちょうどXNA Game Studio Express
Betaダウンロードをリリースしたところです。
私は、このベータをテストするために加わるつもりです。
しかし、私はXOOPS Cube Legacy2.1.0
のBeta
を最優先させなければなりません。Umm…
9
月に忙しくなり過ぎるので、私はLegacy
のほとんどのタスクを今月終えたかったです。
恐らく、私はうまくいった状態でそれらを終えました。 Legacy
には、多くの短所があります。
しかし、これらの短所は、プロジェクトチームがリリースを遅らせる原因にはならないでしょう。私たちは2.1.0
の後で「クールでない」問題を修理すればいい。
私は今月、かなり楽しかった。 XOOPS Cube
Legacy2.1.0
のテストはまだ十分ではありません。
しかし、多くのテスターがアルファーを見直そうとするので、私は心配していません。テストにジョインしてください。以下はレポート場所のリストです。
さらに、あなたはバグをあなたの国のサポートサイトに報告することができます。
あなたの国のサポートサイトの管理者はあなたのレポートをプロジェクト・チームに伝えるでしょう。
よろしくお願いします。
Cubson may need change?
XCube名前空間の仮想サービスクラスはビジネスロジックための具体的な定義です。XCube_Serviceのサブクラスは他のモジュール、他のサイト、および携帯電話のようなスマートクライアントに接続可能です。
開発者はモジュール間連携のためにXCube_Serviceを使用するでしょう。それにより、サイトオーナーはAPIを公開可能です。つまり、XCube_Serviceはモジュール間連携とサイト間連携を抽象化するレイヤーです。
ShadeはXCube名前空間としての例です。 それには、Legacyとの互換性がありません。
開発者がShadeのために彼のモジュールを移植したいなら、彼は上手にライブラリを作らなければなりません。
しかし、それには、cubsonは良くはありません。 それは問題です。
CubsonはXCube層の一般的なモジュールを可能な限り生成するべきです。
cubsonがそれをするようになるなら、cubsonユーザはShadeのためのライブラリとして彼のモジュールのいくつかの部品を移植することができます。
そして、それができないまでも、彼はLegacyでウェブサービスを走らせることができるかもしれません。
少なくとも、cubsonはLegacyでXCube_Serviceの実装を生成させるようにならなければなりません。
Valid HTML CMS possibility
XOOPS2の歴史の中で、多くのデザイナーが、テーブルタグベースのXOOPS2テンプレートに異議を唱えました。そこで、私は、Shadeを
valid
HTMLテンプレートにしてみようと思い立ちました。しかし、エンドユーザにとって扱いやすいので、テーブルタグベーステンプレートも有益です。
おそらく、最も良い解決策はXLST+XMLテンプレートです。 この解決策で、私たちは valid
HTMLテンプレートと非 valid HTMLテンプレートの両方を扱うことができます。
しかし、私は重要なことを忘れていました。だれがそのような難しいシステムを扱うことができるか?という問題です。それがXLST+XMLではなく、ただの
valid HTML テンプレートであったとしても、エンドユーザにとっては十分難しいです。
プロのデザイナーにとって、 valid HTML
テンプレートは朗報です。彼らは自由自在にHTMLとCSSを調整することができます。もちろん、彼らはXLST+XMLもよく知っています。
しかし、私のようなウェブ世界のエンドユーザは、そのような技術的なものは決して制御することができません。
この例を見てください。 多くのデザイナーが以下のような HTML を嫌っています。
<font
color="red">{$date}</font><br/> /
{$poster.name}
それは確かにun-valid
です。
しかし、エンドユーザはテンプレートマネージャで色を変えることができます。
(
彼のテーマの背景色が赤ならば、フォントカラーを変えざるをえないでしょう)
テンプレートが valid HTML であるなら?
彼はCSS
を変えなければならないでしょう。そのため、動的CSS
メカニズムとCSS
マネージャが必須スペックになります。そして、もし項目の位置を変えたいなら、CSS
の知識を使ってテンプレートとCSS
の両方を変えなければなりません。それはエンドユーザにとってまず無理な話です。
valid HTML
テンプレートのために、私たちは「エンドユーザはHTML
とCSS
を変更することができない」という前提条件に立たなければなりません(XOOPSはホビー玩具ですからね)。そして、原則として、テーマがモジュールのテンプレートとCSSの両方を持つことになるでしょう。
RapidWeave
r
は、そのようなシステムになっています。そして、プロフェッショナルなデザイナーのコントリビュートが必須になるでしょう。
XOOPS Cube Manifesto and Tool
私たちは Cube Legacy 2.1.0までに XOOPS Cube
のマニフェストのフォーマットをフィックスすることができないかもしれません。それはまだ必須の仕様ではありませんので、私はプロトタイプツールを開発することを試したいと思います。
XOOPS Cube
のマニフェストは、アップデート情報、重要なニュース、他のモジュールへの依存、および規則スタイルを示す基礎データです。
XOOPS
Cubeプロジェクト・チームはフォーマットのみを決定します。そして、他のプロジェクトはマニフェストを取り扱うことでユーザを助けるツールを開発しようとします。
そのようなツールが、Windows OS アプリケーションと Mac OS X
アプリケーションであることがベストです。それが XOOPS Cube
プロジェクト・チームが直接そのようなツールを開発しない理由です。
そのようなツールは常にC++プログラマを必要とします。XOOPS
Cubeプロジェクトにそれを絶えず要求するのはお門違いでしょう。PHPプログラマとC++プログラマは異なった得意分野を持っています。私は、XOOPS Shade
Projectでそれを開発することを計画しています。
ツールには、以下の仕様がなければなりません:
- ツールはFTP、SFTP、およびSCPで直接XOOPS
Cubeサイトに接続しなければなりません。
-
ツールはマニフェストによってファイルのアップロードとダウンロードが可能な、一種のネットワーククライアントでなければならない。
- ツールはXOOPS Cube Legacy、D3モジュール、およびXOOPS Cube
Shadeをカバーしなければなりません。それらの構造が異なっているとしても。
- もちろん、ツールはテーマを扱うことができなければなりません。
-
ユーザがモジュールをインストールしようとするとき、ツールはモジュールの依存モジュールを管理しなければなりません。
-
モジュール開発者は、彼らのモジュールを発行するために、特別なメカニズムを持つ必要はありません。
これらの仕様を持つツールはXOOPS
Cube世界への必須品です。 私たちはおもちゃとしてXOOPS
Cubeを開発しようとしています。しかし、XOOPS
Cubeはおもちゃではなく、ただPHPプログラムです。
したがって、私たちはCubeをおもちゃにするツールを開発しなければなりません。私たちが .NET
Framework や Mac OS X の WebKit
を使用することができるので、そのようなツールを開発することは困難ではありません。これらの環境はネットワーククライアントアプリケーションを開発することを容易にします。
しかし、私はリナックスデスクトップアプリケーション開発に関して詳しくありません。それは問題です……しかし、サイトオーナーは
windows か Mac OS X のどちらかは持っているでしょう。
XTC2006 Presentation PDF Files
遅くなりました。これらの PDF
ファイルは先月 XTC2006
において、私が使用したものです。これらのファイルが日本語オンリーであることを申し訳なく思います。
XOOPS Cube
はもうすぐやってきます。これらのファイルは Cube
のスピリットを理解するために役立ちます。
The concept of XOOPS Cube
.NET を知っていますか ? .NET は、マイクロソフトによって開発された開発された windows
OS
上のフレームワークです。デスクトップアプリケーション開発は、ウェブアプリケーション開発より容易です。.NET
は、デスクトップアプリケーションと同じくらい簡単に、ウェブアプリケーションを開発することのを可能にします。.NET
における開発は、マウスドラッグ、及び、少しのコーディングから成っています。マウスドラッグによって、私達は、様々な独立したコンポーネントを我々のアプリケーションに入れます。それから、デリゲートなどを用いて、各コンポーネントを接続するために、プログラムを組みます。
しかし、 .NET
のこれらの特徴は、開発者のために作られています。エンドユーザー(アプリケーションを発注する顧客)はこの開発方法とほとんど関係がありません。私は、
XOOPS
におけるユーザーはコンポーネントとしてモジュールをインストールし、各モジュールを接続するためのなんらかのメカニズムとしてデリゲートを使用するようになると思います。これは、
.NET プログラマの仕事の一部に、エンドユーザーが楽しみを見いだすであろうことを意味しています。
Legacy は XOOPS2 ベースですので、私達は、 Legasy
上でこの理想を達成することができません。しかし、モジュールはコンポーネントの一種であり、 1 File
Hacking は(.NET
プログラマがするように)デリゲートでそれらを接続するプロセスです。言い換えれば、 .NET
のコンポーネント、及び、 .NET のデリゲートは、開発者のためのものですが、 Cube
のモジュール、及び、 Cube のデリゲートは、ユーザーのためにあるということです。
私は、開発者が更に小さいコンポーネントをドロップすることで、 Cube
コンポーネントとしてのモジュールを完成させることができる RAD
ツールを開発することを望みました。しかし、私には、それをするための時間が十分ではないかもしれません。
趣味 CMS として完成されるために、 XOOPS Cube は、開発者が .NET
で使用するこれらのメカニズムを導入しました。しかし、エンドユーザーは、高みに上がることを強制されることになるでしょう。一部のユーザーは、
Cube を拒絶するかもしれません。それゆえに、フォークは、良い選択です。なぜなら、彼らは、 XOOPS
に戻ることができるからです。私達は、フォークによってほんの 1 つの新しい選択肢を得ました。
xoops.org のユーザーも Cube を見れば、私達のフォークの意味に納得するでしょう。
少なくとも日本において、ユーザーが動的なサーバアプリケーションに作ることを楽しむという趣味がありません。もちろん、ユーザーは、
XOOPS のように CMS によってそれらのホームページを作成することは楽しみます。しかし、だれも、
CMS の組み立てをレゴブロックのような楽しい趣味と見なしません。XOOPS Cube
は、それに挑戦しています。従って、現在のユーザーは、壁にぶつかることになるでしょう。 Cube
は新しいコンセプトを彼らに強要します。彼らは、新しい世界の先駆者として、その壁を粉砕しなければなりません。
XCube_ActionFilter (3)
Practice
恐らく、あなたは、
Preload
を使いこなすために XOOPS Cube Legacy
のその他のメカニズムを理解する必要があるでしょう。プリロードは、ほとんどのカスタマイズの起点となります。
しかし、今は Preload
を理解することが、重要です。そこで、 Preload
のみを使用して実例を作成しましょう。それは、 ForceSiteClose
というものです。 ForceSiteClose
は、特定の IP
を除いて全ユーザーのために全ユーザーに対してサイトクローズを行います。それは、テストに便利です、なぜならテスターは特定のIPから来ていれば、ゲストユーザーとしてサイトにアクセスが出来るからです。ForceSiteClose
によって、サイトオーナーは、テストしながら訪問者に対してサイトを閉じることができるのです。
class
ForceSiteClose
extends
XCube_ActionFilter
{
var $mSpecificIPs
=
array('127.0.0.1');
function preFilter()
{
$ip
=
$_SERVER['REMOTE_IP'];
if
(!in_array($ip,
$this->mSpecificmIPs))
{
$this->doSiteClose();
exit();
}
}
function doSiteClose()
{
//
// You must rewrite the
following for your expression.
//
print
"This site
is closed now, Because ...";
}
}
あなたは、データベース障害に際してこのフィルタを使ってもよいでしょう。なぜなら、
ForceSiteClose
は、データベースなしで動くからです。一方、 XOOPS Cube Legacy
のサイトクローズは、データベース障害の下では動きません。
Future XCube_ActionFilter
これは、
ActionFilter に詳しい開発者のための備考です。
Legacy_Controller において、 ActionFilter
機能は、サイトプリロード、及び、モジュールプリロード専用です。つまり、それは、サイト所有者とモジュール開発者がカスタマイズを行うために存在します。Legacy_Controller
は、自身を構築するために ActionFilter 機能を使いません。従って、いくつかのフレームワークの
ActionFilter と Legacy_Controller における ActionFilter
は異なっています。
onokazu 氏は Legacy_Controller がそれ自身を構築するために
ActionFilter
を使うことは、スマートなプログラムであると言いました。彼のアイデアは、まったく正しく、かつ魅力的です。
ActionFilter はシンプルなメカニズムにすぎませんから、 XCube_ActionFilter
のクラス設計は、その用途に十分です。
最終的に、私達は、実例による役割分担の明確化のために Legacy_Controller
のこの設計を保持することにしました。ベースモジュールでコントローラを作るためにあなたがそれを使うことは、自由です。そして、近い将来リリースされるであろういくらかのベースモジュールは、そのような目的のために
ActionFilter を使うかもしれません。
我々が少なくともそのような使用を検討したことを留意してください。
Sample module Loglog
あなたは Cube
をテストすることを楽しむ 'loglog'
モジュールをここからダウンロードできます。これは、「対数の対数」に関する数学モジュールではありません。
Loglog
は、 XOOPS Cube
層の Delegate
を使うサンプルプログラムです。 Loglog
は、いつユーザーがログイン、または、ログアウトをするかを記録し、そして、ユーザーがサイトにどのくらい滞在しているかを推測します。
preload/Initialize.class.php
を読んでください。英語、及び、日本語でコメントがあります。XOOPS Cube
のデリゲートは、コールバックに関する統一手続きです。それは、 C
のファンクションポインタ、 C++
の
ファンクタ
、 C#
と D
のデリゲートのようです。あなたがサンプルを読むことで、 Delegate
のエッセンスを理解できます。
Loglog
は、単なるサンプルプログラムです。しかし、あなたが更に本格的なロギングモジュールを望むならば、ぜひそれを作ってください! ユーザー全員が、あなたの行動を歓迎します。