Cubson has gone to sourceforge.jp
私は、sourceforge.jp
の XOOPS-Shade
プロジェクトページへ cubson
の全資源を動かし始めました。しかし私は、sourceforge.jp
においてプロジェクトページを作ってしまったことを後悔しています。
Sourceforge.net
は、 sf.jp
より良いリポジトリです。それは、私達にとって最良のソリューションです。なぜなら、
sf.net
は、多くの優れたフィーチャーと UTF-8
を持っているからです。英語は、 sf.jp
においても利用可能です。しかし、このリポジトリを世界の仲間に薦めたいと考える人はいないでしょう。
しかしながら、私は、名前に XOOPS Cube
を含んでいながら活発度 0%
のプロジェクトページを持つことを望んでいません。従って、私は、 cubson
が良い国際的ツールであろう状態になるまで、 sf.jp
に XOOPS-Shade
プロジェクトを保持し続けるでしょう。それから、我々は、これらのページを sf.net
に動かすでしょう。
もちろん、私は、英語で書かれたあなたのメッセージを歓迎します。そして、私は、英語でドキュメントの準備をするでしょう。cubson
に関する URLs
は、下記です。
リリースニュースは、このページにあります。Sf.net
は、 RSS
を公表し得ます。しかし、 sf.jp
は、それをすることができません。うーん、これらのニュースは、現在日本語オンリーです。私は、十分なメンバーを集めるために日本人のための容易なニュースを必要とします……
うーん
あなたは、
Google adsence
の位置に驚くかもしれません。このサイトは、アフィリエイトサイトのように見えます。しかし、これは、私達のディスカッションフォーラムです。記述は、あなたのアカウントを必要とします。あなたが
sf.jp
にあなたのアカウントを持っていないならば、登録しましょう。
これは、
cubson
のためのバグ追跡者システムです。あなたは、そこで報告するのにあなたのアカウントを必要とします。
これは、英語では難しいもののうちの
1
つです。なぜなら、この Wiki
は、日本語のためのものだからです。しかし、私は、お粗末な英語で多くのドキュメントを書いてきました。私は、
sf.net
における将来のプロジェクトページに備えてそれらを準備します。この wiki
は、フリーであり、そして、あなたは、あなたのアカウントを必要としません。
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の実装を生成させるようにならなければなりません。
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
あなたは、モジュール・ディレクトリで以下のファイル・ツリーを見るでしょう。

これらのファイルから以下のファイルを削除してください。
- .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.html
とmyannounce_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 である数値です。
次に、Cubson
はdatatime
としてunixtime
を扱います。
もちろん、そのようなスタイルには、いくつかの問題があります。
しかし、2006
年に、私たちは、作業時間を記録するのにそれを使用することができます。
次に、 subject はvarchar
で、メッセージはテキストになります。
'{XOOPS_DB_PREFIX}_myannounce_message'
テーブルを以下同様に作成してください。もしあなたの XOOPS_DB_PREFIX
が xoops
であるなら、 xoops_myannounce_message
を作成してください:
- 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
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
ユーザはデータベースを作ることから開発を始めます。
あなたが最初のチュートリアルでテーブルを作成する必要がなかった理由はチュートリアル作成コマンドがサンプルテーブルのためのSQLファイルを作成したからです。チュートリアルでは、あなたは2ステップでアナウンス・モジュールを開発しました。あなたがチュートリアル作成コマンドなしで同様のモジュールをどのように開発するかは、cubson
の手順を理解する良い手段です。
それでは、開発を始めましょう。この場合、あなたはmysql
で直接テーブルを作成しなければなりません。phpMyAdmin
は、テーブルを作成するために役に立ちます。
あなたがXSAS
かXAMPP
を使用するなら、phpMyAdmin
は既にあなたの環境にインストールされています。もしそれを持っていないなら、次回までにダウンロードしてインストールしださい。
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
の特徴を最大限に利用します。それは、安全であり、そして、カスタマイズに向いています。開発を楽しんでください
!
cubson 対 extools
私は、今まさに英語で使用可能な cubson
を作り終えました。私は、いくらかの特徴をチェックし、それをダウンロードページに置き、そして、ドキュメントを書き始めるでしょう。cubson
は、モジュール開発者を支える良いツールのうちの 1 つになると思います。cubson は、 XC 2.1
の Legacy モジュールグループを開発するために使われました。あなたが XC 2.1
で見ることができるフレームワーク・プログラング・ライクなコードは cubson
によって生成されたものです。
cubson は、 exFrame & extools
と呼ばれる尊い犠牲の上に築かれています。exFrame は、 XOOPS2 のための mojavi2
ライクなシンプルなフレームワークと、易しいコンポーネントを持っていました。さらに、Ryujiさん意外は誰も
exFrame に興味を抱かなかったので、コード・ジェネレーター extools
を開発しました。それは、いくらかの開発物にとって有益でした。
しかし、それは、ベストではありません。
私は、 exFrame および extools に関する反省と共に cubson
を開発しました。まず初めに、cubson は、昨日説明された ActionFrame
のサブクラスであるシンプルなフレームワークを作ります。そして、データベースから、シンプル・フレームワークが受け入れ得る様々なクラスを作ります。
差異を見てください:
コンセプト
*
cubson はコンポーネントのサブクラスの代わりにインラインコードを生成します。
* extools は exComponent と呼ばれるコンポーネントのサブクラスを生成します。
基底クラス群
*
cubson
の場合、シンプルフレームワークの基底クラスはそれぞれのモジュールの中に作られます。従って、多くのコード・クローンが発生します。それはモジュール単位のカスタマイズに向いています。
* extools の場合、基底クラスは exFrame
に収録されています。それは差異と単位のカスタマイズに向いています。
ライブラリ
*
cubson の場合、開発者は exFrame のような多くのライブラリを使用できません。しかし、彼らは
XOOPS Cube プロジェクトで作られたいくつかのスマートなクラスを使うことができます。
* extools の場合、開発者は exFrame の多くの太ったライブラリを使うことができます。
XoopObject
*
cubson が生成したコードは XoopsSimpleObject と
XoopsObjectGenericHandler を使います。ご承知の通り、これらのクラスは
XoopsObject より良く、型安全です。
* extools が生成したコードは、 exXoopsObject と
exXoopsObjectHandler を使います。これらのクラスは XoopsObject
と比較してただのデブです。
ActionForm
*
cubson が生成したコードは XCube_ActionForm と XCube_Validator
を使います。これらのクラスはよく整理されています。
* extools が生成したコードは exActionForm を使います。 exActionForm
は XCube_ActionForm のための尊い犠牲でした……
テンプレート
*
Cubson は XoopsForm
とコンポーネントなしでテンプレートを構築します。デザイナーは容易にそれらを変更し得ます。
* extools
はコンポーネント・スタビライザとしてのテンプレートを生成します。それを変更することは困難です。
ツール同期
*
cubson
は1回の呼び出しで自動的に複数のコマンドを呼び出します。たとえば、ひとつのコマンドがメッセージカタログを要請すると、別のコマンドがそれを受け取ります。
* extools は1回で複数のコマンドを呼び出すことはできません。
開発言語
*
cubson は extoolsD.dll
の一部です。それはGUI版のためにC#で書かれています。cubson は extoolsD
プロジェクトにおける CUI フロントエンドです。C# はもちろん PHP ではありませんが、 PHP
プログラマが C# を使うことは容易なことです。
* extools は PHP プログラムです。PHP プログラマは容易にそれをカスタマイズし得ます。
環境
*
cubson は XOOPS Cube 2.1 専用です。
* extools はいくつかの XOOPS で動作します。