オープンソースCMS「DotNetNuke」のセットアップ
前回はMicrosoft Web Platform Installerを利用して、DotNetNukeとWebMatrixをインストールする方法を紹介した。今回は、DotNetNukeのインストール方法を紹介する。
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。

作者 Dilip Krishnan , 翻訳者 編集部 投稿日 2009年3月10日
Microsoftは、ロサンゼルスで開催されたPDCイベントで「OSLO」ビジョンの構成要素を発表しました。Osloには、次の3つの主要コンポーネントがあります。
テキスト言語開発は3つのコア言語で構成され、その2つは技術的にどんな開発者でも作成できます。
すべての内部DSL(リンク)の「hello world」であるDate DSLは、Mgを使用して日付のDSLを記述し、生成されたMGraphのパーサーを記述して任意の自然言語入力の限定サブセットを有効な日付に変換可能にする良い練習になるかもしれないと、私は気付きました。この記事は、MGrammar言語(リンク)について基本的に精通していることを前提としています。
目標は、日付を自然言語で表す小さいDSLを記述することです。日付を解析する最良の自然言語DSLを記述することではなく、MGrammar言語の能力を探ることです。少なくともこの具体化でサポートしたいものは、次のとおりです。
日付表現を含むセンテンスを、MGraphに変換できる品詞に分解する必要があります。これは後で、推定日付をもたらす関数/演算セットとして解釈できます。分類の目標は、主語目的語述語形式のセンテンスを、黙示的な日付の算出に使用可能な演算子とオペランドの数学的表記に置き換えることです。
それを念頭に置いて、日付表現を次のいずれかに分類します。
単項表現と二項表現についてさらに詳しく見てみましょう。
|
単項日付項表現 |
二項日付表現 |
|
接尾形式の演算子 “5 days later”, |
“5 days from today”, |
|
接頭形式の演算子 “next Monday”, |
上の表は、日付フィールドに値を入力しようとするときに使用すると考えられる特定のセンテンスの例を挙げています。センテンスが各カテゴリに分類されている理由と、また、センテンスが、これらのセンテンスで着目するデータを強調する目的で色分けされている理由がこれで明らかになればと思います。黄色いハイライトは、私が演算子と見なすものです(青)。それらはオペランドに適用します(赤)。オペランドは、演算子が特定の単位数を適用する際の基準となる日付を示します(黒)。単項表現にもオペランドはあり、それは単に黙示されるだけです。オペランドが存在しない場合、演算子は今日が基準になると仮定されます。単項演算子は、センテンスが接尾演算子のように見える演算と、接頭表現がより自然に見える演算の、2種類があります。
これらの考えを形式化する目的で、いくつかの中心概念を定義します。
これを形式化する取り組みの大半は、自然言語からの変換が、MGraphに変換される際にも(DSLを認識するアプリケーションにとって)読みやすいようにするためです。どのようにパーサー出力を消費し、そこから言語を作成したいかの例をいくつか挙げます。下記の例証は、実際は(Intellipad(リンク)ツールを使用した)解析に対する所定の入力の変換結果のMGraphであるという事実は別として、私達が目指して取り組んでいる最終状態を表しています。
Main[ DatePrimitive[ "today" ] ]これは、入力が“today”であるときに見たいものです。today(今日)は基準値として機能する時点を示しているため、この値をプリミティブとして扱います。“today”には特別の意味があるため、これをプリミティブとして扱います。 |
||
Main[ AbsoluteDate[ Month[ "11" ], "/", Day[ "01" ], "/", Year[ "2008" ] ] ] 日付が常にmm/dd/yyyyであると仮定して、絶対日付を示すために、Day、Month、Yearプロパティを持つ絶対日付を示すグラフを作成します。上のグラフは入力が11/01/2008である場合の出力を示しています。 |
Main[ CalculatedDate[ NumberOf[ DaysToOrFrom[ "Monday" ] ], Operator[ "-" ], DatePrimitive[ "today" ] ] ] 入力が“last Monday” のとき、“today” より前の月曜日を得る分だけ今日から日数を引いた算出日付としてグラフを表します。 |
Main[ CalculatedDate[ NumberOf[ Days[ 1 ] ], Operator[ "+" ], DatePrimitive[ "today" ] ] ] その他すべてが、“today” を基準とした、Number Of Days、Weeks、Months、Yearsを持つ算出日付として示されます。上のグラフは、入力が“tomorrow”の場合の出力を示しています。 |
MGrammar言語仕様(リンク)について詳しく説明せずに、基本トークンをミニ言語での定義と仮定すると、言語のトップレベルの文法は下記に抜粋されます。
module MyDSL
{
@{CaseSensitive[false]}
language Dates
{
syntax Main = d:DateExpression;
syntax DateExpression = a:AbsoluteOrPrimitiveDateExpression => a|
u:UnaryDateExpression => u|
b:BinaryDateExpression => b;
syntax BinaryDateExpression = q:UnitOrUnits o:Operator a:AbsoluteOrPrimitiveDateExpression
=> CalculatedDate[NumberOf[valuesof(q)],
Operator[o],
valuesof(a)];
syntax UnaryDateExpression =
o:PrefixUnaryOperator p:Unit
=> CalculatedDate[NumberOf[p],
o,
DatePrimitive["today"]] |
q:UnitOrUnits o:PostfixUnaryOperator
=> CalculatedDate[NumberOf[valuesof(q)],
o,
DatePrimitive["today"]];
syntax AbsoluteOrPrimitiveDateExpression = a:AbsoluteDate => a |
d:DatePrimitive => d;
syntax DatePrimitive = Yesterday => CalculatedDate[NumberOf[ Days[1]],
Operator["-"],
DatePrimitive["today"]] |
Today => DatePrimitive["today"] |
Tomorrow => CalculatedDate[NumberOf[ Days[1]],
Operator["+"],
DatePrimitive["today"]];
syntax AbsoluteDate = MM "/" DD "/" YY;
syntax PrefixUnaryOperator = "Next" => Operator["+"] |
("Previous" | "Last") => Operator["-"];
syntax PostfixUnaryOperator = ("Later" | "After") => Operator["+"] |
("Before"|"Ago"|"Back") => Operator["-"];
syntax Operator = a:AfterToken => "+" |
b:BeforeToken => "-";
syntax UnitOrUnits = Unit | Units;
syntax Unit = OneToken? Day => Days[1] |
OneToken? Year => Year[1] |
OneToken? Month => Month[1] |
OneToken? Week => Week[1] |
d:DayOfTheWeek => DaysToOrFrom[d] |
d:MonthsOfTheYear => MonthsToOrFrom[d];
syntax Units = n:NumberOf Days => Days[n] |
n:NumberOf Months => Months[n] |
n:NumberOf Years => Years[n] |
n:NumberOf Weeks => Weeks[n];
...
//Excluded for brevity
...
interleave Whitespace = " " | "\r" | "\n";
}
}
文法を定義したので、生成されたグラフを消費することはごく些細なことです。Mgツールを使用して、文法を「コンパイル」する(ことに似ている)Mgxファイルを生成します。これにより、パーサーが生成されます。生成されたパーサーを、入力の解析に使用できるアプリケーションにロードします。解析された入力は、私達が着目するデータのオブジェクトグラフを生成します。OSLO SDKツールチェーンを使用する開発者ワークフローは、次のとおりです。
ワークフローのステップ1では、Mg.exe文法コンパイラを使用して作成したMGrammar定義のイメージファイルを作成します。イメージファイルは、Xaml形式にシリアル化されOpen Packaging Convention OPC(リンク)フォーマットでパッケージ化されたパーサーにすぎません。 これにより、Xamlサービスを使用して動的なパーサーをランタイム時にロードすることが可能になります。
ワークフローのステップ2では、MGrammarコンパイラは、イメージファイル(1)をロードして、ランタイム時にパーサー(2)を作成します。このパーサーは、テキスト入力(3)を取り、それをMGraph(4)に変換します。
生成されたMGraphのトラバースを行うには、IGraphBuilderの具体的な実装を使用します。かなり平凡なタスクですが、一般化することはそれほど容易ではないと思います。しかしながら、巧みなXAMLトリック(リンク)により、それはどちらも困難ではなくなるはずです。
Mgは驚くほどシンプルなメタ言語です。Mgにはいくつかの制限があり、主に広範囲にわたる文書の欠如が原因です。私が気付いたものをいくつか次に示します。
OSLOは未成熟なプラットフォーム(依然としてCTP)であり、リリースされるまでにMicrosoftは問題点を解決するだろうと私は確信しています。OSLOは確かに、さまざまなドメイン表現を標準の構造化されたデータフォームに変換可能にすることで、とても簡単にドメイン駆動設計(リンク)の可能性を切り開きます。これは、ビジュアルダイアレクトなど、DSLの独自のダイアレクト(方言)で互いの異なるモデル認識/支援システムのドメイン相互作用を可能にします。この例において、中国語で書かれた日付表現の文法があることを恐らく誰もが想像でき、日付表現の同じ構造化表現が作成され、ダウンストリームでモデル駆動アプリケーションによって使用可能なものになります。
Oslo Developer Center (リンク)
Introducing "Oslo" - Service Station, by Aaron Skonnard (リンク)
OSLO: Building Textual DSLs (リンク)
Martin Fowler on OSLO (リンク)
First in-depth look at Microsoft’s Oslo and the “M” modeling language (リンク)
原文はこちらです:http://www.infoq.com/articles/smalltalk-comeback-schwartz
(このArticleは2008年12月8日に原文が掲載されました)
前回はMicrosoft Web Platform Installerを利用して、DotNetNukeとWebMatrixをインストールする方法を紹介した。今回は、DotNetNukeのインストール方法を紹介する。
DotNetNukeは、Windows Serverで動作するCMS(Contents Management System)である。この記事ではWeb Platform Installer を利用して人気CMS「DotNetNuke」と無償Web開発環境「WebMatrix」のインストールする方法を紹介する。
クラウドコンピューティングを前提とした大規模データ技術が利用可能となってきています。Big Dataが一過性のブームで終わるかどうかにかかわらず、スケーラブルな分散アーキテクチャーの基盤はデータベース技術に主導されつつあります。RDBとORM主体のエンタープライズシステムは、HadoopやNoSQLとの組み合わせにより複合的なデータモデルに発展しました。
2011年12月8日~2011年12月9日に、ロンドンのSkills Matter eXchangeにて開催された「Groovy & Grails eXchange 2011」の参加報告を、日本Grails/Groovyユーザーグループのメンバーが3回に渡って紹介します。
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続���開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
No comments
スレッド表示 返信