Actions

開発者エリア/Maharaアーキテクチャインストラクション/コアサブシステム: Difference between revisions

From Mahara Wiki

< 開発者エリア/Maharaアーキテクチャインストラクション
No edit summary
No edit summary
 
(36 intermediate revisions by the same user not shown)
Line 1: Line 1:
作成中です - [[User:Mits|mits]]
コア開発者およびプラグイン開発者両者にとって開発が簡単になるよう、Maharaには特定の機能を提供する複数のサブシステムがあります。あなたはMaharaコードベースの多くの場所でこれらサブシステムに遭遇することになるでしょう。
 
コア開発者およびプラグイン作成者両者にとってMaharaの開発が簡単になるよう、Maharaには特定の機能を提供する複数のサブシステムがあります。あなたはMaharaコードベースの多くの場所でこれらサブシステムに遭遇することになるでしょう。


<div id="section_1">
<div id="section_1">
Line 7: Line 5:
===活動システム===
===活動システム===


The activity system allows Mahara to notify users about things that have happened in the system. It supports pluggable activity types, which are provided by the core and plugins, and the notification plugin type hooks in here to allow users to choose how they receive these messages.
活動システムはMaharaに対して、システム内で何が起こっているのかユーザに通知を送信できるようにします。活動システムはコアおよびプラグインから提供される脱着可能な活動タイプをサポートします。また、ここで接続される通知プラグインタイプでは、ユーザがどのようにメッセージを受信するか選択することができます。


</div><div id="section_2">
</div><div id="section_2">
Line 13: Line 11:
===データベースレイヤ: ADODB/XMLDB===
===データベースレイヤ: ADODB/XMLDB===


Mahara supports both MySQL and PostgreSQL by using ADODB for database abstraction, and XMLDB for handling the schema and upgrades. Mahara has a library on top of ADODB to make simple operations easier to perform - such as getting records, inserting/deleting rows. In many places in Mahara however, raw SQL is used to grab the data required.
Maharaはデータベース抽出に関して、ADODBを使用することでMySQLおよびPostgreSQLの両者をサポートします。また、XMLDBを使用してスキーマ処理およびアップグレードをサポートしています。Maharaではシンプルな処理を簡単に実行できるよう、ADODBのトップにライブラリを持っています - レコードの取得、行の追加および削除等です。しかし、Maharaの多くの場所で必要なデータを取得するために生のSQLが使用されています。


Mahara's database has foreign keys, and in the case of PostgreSQL, some more data integrity features.
Mahraのデータベースは外部キー (foreign key) を持ちます。また、PostgreSQLの場合、さらに整合性に関する機能があります。


</div><div id="section_3">
</div><div id="section_3">
Line 21: Line 19:
===Cron===
===Cron===


Mahara implements cron internally. The main reason for this is to prevent the need for people to set up and edit cron jobs constantly. As cron is implemented internally, new plugins can simply register what cron jobs they want to run with Mahara, which will ensure they are run at the appropriate times (note: you still need one cron job set up to trigger Mahara's internal cron, but you set it up when setting up Mahara and then forget about it).
Maharaはcronを内部に実装しています。このことに関する主な理由は、絶えずcronジョブのセットアップおよび編集をする必要性をなくすことにあります。内部的にcronが実装されているため、新しいプラグインでは、Maharaで実行したい適切な時間に動作するcronジョブを登録することができます (注意: それでも、あなたはMaharaの内部cronを動作させるためにサーバのcronジョブを設定する必要があります。もちろん、Mahara用にcronジョブを設定した後は、このことは忘れてください)


</div><div id="section_4">
</div><div id="section_4">
Line 27: Line 25:
===エラー処理およびロギング===
===エラー処理およびロギング===


Being a PHP5 application, Mahara provides and uses exceptions for much of the error handling. Mahara also provides excellent logging facilities (to apache error logs) that give detailed error messages and backtraces when a problem occurs. Mahara also catches uncaught exceptions and displays generic "an error occured" pages, that don't give away any information to potential hackers about what went wrong.
PHP5アプリケーションとして、Maharaは多くのエラー処理の例外を提供および利用します。Maharaは問題発生時に詳細エラーメッセージを提示して原因を分析するための素晴らしいロギング機能を提供します。また、Maharaは未確認の例外を捉えて、一般的な「an error occured」エラーページを表示します。このページは潜在的なハッカーが問題箇所を推測できるような情報を一切渡すことはありません。


</div><div id="section_5">
</div><div id="section_5">


===フォーラムビルディング: Pieforms===
===フォームビルディング: Pieforms===


Mahara bundles the Pieforms form building library. It provides a very simple way to generate and process forms. It takes away the hard work of writing HTML and even much of the tedious validation work. It also handles session key checking for you, so you'll never generate a form vulnerable to XSS unless your try really hard to work around it. And if necessary, it provides the capability to lay out a form with widgets anywhere you choose - though most of the time you'll be happy enough with the forms generated by default.
MaharaにはPieformsフォーム構築ライブラリが同梱されています。これは非常に簡単にフォームを生成および処理する手段を提供します。これにより、HTMLを記述する大変な作業、そして退屈な妥当性確認作業さえも回避することができます。セッションキーのチェックも処理できるため、あなたはフォーム作成に一生懸命に取り組む努力をしない限り、XSSに対して脆弱性のあるフォームを作成することはありません。そして、必要であれば、あなたが選択した場所にウィジェットのフォームを配置する機能を提供することができます - しかし、多くの場合、あなたはデフォルトで生成されるフォームで十分だと思います。


</div><div id="section_6">
</div><div id="section_6">
Line 39: Line 37:
===HTMLフィルタリング: HTMLPurifier===
===HTMLフィルタリング: HTMLPurifier===


In plenty of places in Mahara, user content is displayed. We bundle HTMLPurifier and provide wrapper functions for it, so you never have to worry about users inserting malicious tags. This filter is so good, we've previously had people complain that they can't embed anything at all! Mahara now ships with filters for allowing embedded code from select websites that most people trust, such as Youtube and Slideshare, and the filters are naturally pluggable.
Mahara内の多くの場所でユーザコンテンツが表示されます。私たちはHTMLPurifierを同梱して、そのためのラッパー関数を提供します。 ですから、あなたはユーザが悪意のあるタグを埋め込むことに心配する必要はありません。以前、何も埋め込むことができないとの苦情をお受けしたため、このフィルタは大変素晴らしいものになりました! MaharaはYoutubeおよびSlideshareのような最も信用されるウェブサイトを埋め込むためのフィルタを同梱しています。当然のことながら、フィルタは着脱可能です。


</div><div id="section_7">
</div><div id="section_7">
Line 45: Line 43:
===テンプレーティング: Dwoo===
===テンプレーティング: Dwoo===


Mahara uses Dwoo for its templating needs since Mahara 1.2, and previous to 1.2 used Smarty. PHP developers familiar with Smarty's abilities will find Dwoo quite similar, and we use it extensively throughout Mahara.
Maharaはテンプレーティングの必要性からMahara1.2以降にDwooを使用しています。 また、1.2以前のバージョンではSmartyを使用しています。Smartyの機能に詳しいPHP開発者はDwooが極めて類似していることに気付くことでしょう。そして、私たちはMaharaの広範囲にDwooを使用しています。


{| style="width: 1265px; height: 26px" cellspacing="1" cellpadding="1"
{| style="width: 1265px; height: 26px" cellspacing="1" cellpadding="1"

Latest revision as of 03:20, 11 March 2013

コア開発者およびプラグイン開発者両者にとって開発が簡単になるよう、Maharaには特定の機能を提供する複数のサブシステムがあります。あなたはMaharaコードベースの多くの場所でこれらサブシステムに遭遇することになるでしょう。

活動システム

活動システムはMaharaに対して、システム内で何が起こっているのかユーザに通知を送信できるようにします。活動システムはコアおよびプラグインから提供される脱着可能な活動タイプをサポートします。また、ここで接続される通知プラグインタイプでは、ユーザがどのようにメッセージを受信するか選択することができます。

データベースレイヤ: ADODB/XMLDB

Maharaはデータベース抽出に関して、ADODBを使用することでMySQLおよびPostgreSQLの両者をサポートします。また、XMLDBを使用してスキーマ処理およびアップグレードをサポートしています。Maharaではシンプルな処理を簡単に実行できるよう、ADODBのトップにライブラリを持っています - レコードの取得、行の追加および削除等です。しかし、Maharaの多くの場所で必要なデータを取得するために生のSQLが使用されています。

Mahraのデータベースは外部キー (foreign key) を持ちます。また、PostgreSQLの場合、さらに整合性に関する機能があります。

Cron

Maharaはcronを内部に実装しています。このことに関する主な理由は、絶えずcronジョブのセットアップおよび編集をする必要性をなくすことにあります。内部的にcronが実装されているため、新しいプラグインでは、Maharaで実行したい適切な時間に動作するcronジョブを登録することができます (注意: それでも、あなたはMaharaの内部cronを動作させるためにサーバのcronジョブを設定する必要があります。もちろん、Mahara用にcronジョブを設定した後は、このことは忘れてください)。

エラー処理およびロギング

PHP5アプリケーションとして、Maharaは多くのエラー処理の例外を提供および利用します。Maharaは問題発生時に詳細エラーメッセージを提示して原因を分析するための素晴らしいロギング機能を提供します。また、Maharaは未確認の例外を捉えて、一般的な「an error occured」エラーページを表示します。このページは潜在的なハッカーが問題箇所を推測できるような情報を一切渡すことはありません。

フォームビルディング: Pieforms

MaharaにはPieformsフォーム構築ライブラリが同梱されています。これは非常に簡単にフォームを生成および処理する手段を提供します。これにより、HTMLを記述する大変な作業、そして退屈な妥当性確認作業さえも回避することができます。セッションキーのチェックも処理できるため、あなたはフォーム作成に一生懸命に取り組む努力をしない限り、XSSに対して脆弱性のあるフォームを作成することはありません。そして、必要であれば、あなたが選択した場所にウィジェットのフォームを配置する機能を提供することができます - しかし、多くの場合、あなたはデフォルトで生成されるフォームで十分だと思います。

HTMLフィルタリング: HTMLPurifier

Mahara内の多くの場所でユーザコンテンツが表示されます。私たちはHTMLPurifierを同梱して、そのためのラッパー関数を提供します。 ですから、あなたはユーザが悪意のあるタグを埋め込むことに心配する必要はありません。以前、何も埋め込むことができないとの苦情をお受けしたため、このフィルタは大変素晴らしいものになりました! MaharaはYoutubeおよびSlideshareのような最も信用されるウェブサイトを埋め込むためのフィルタを同梱しています。当然のことながら、フィルタは着脱可能です。

テンプレーティング: Dwoo

Maharaはテンプレーティングの必要性からMahara1.2以降にDwooを使用しています。 また、1.2以前のバージョンではSmartyを使用しています。Smartyの機能に詳しいPHP開発者はDwooが極めて類似していることに気付くことでしょう。そして、私たちはMaharaの広範囲にDwooを使用しています。

前へ: コアコンポーネント