オープンソースCMS「DotNetNuke」のセットアップ
前回はMicrosoft Web Platform Installerを利用して、DotNetNukeとWebMatrixをインストールする方法を紹介した。今回は、DotNetNukeのインストール方法を紹介する。
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Jonathan Allen , 翻訳者 笹井 崇司 投稿日 2012年1月29日
WPF 4.5ではマルチスレッド・データバインディングのサポートが改善されたが、このテクニックには依然としてリスクがある。この記事では、それがどのように動いているか、安全に使うには何が必要かについて説明する。
WPFデータバインディングはこれまでマルチスレッドを場当たり的にサポートしてきた。オブジェクトがプロパティ変更イベントを非UIスレッドで発行すると、データバインディング・インフラストラクチャが動き出す。通常これはうまくいくのだが、潜在的な競合状態のため、これは実際のところ安全ではない。コンピュータサイエンスの観点から、スレッドをまたがるアクセスを単純に許さない方が適切だろう。これは実のところコレクション変更イベントのケースだ。
残念なことに、開発者は常に正確さを気にしているわけではない。ただやりたいことをやるだけだ。その結果、「スレッドセーフ」もしくは「ディスパッチャーセーフ」なオブザーバブル・コレクションについて、さまざまな試みがなされてきた。これらの試みの基本設計はすべて、呼び出し前にコレクション変更イベントを適切なスレッドにマーシャルするというものだ。この場合、適切なスレッドとは、ディスパッチャーが実行しているいずれかのスレッドになる。残念ながら、これでは競合状態の可能性はなくならない。
MicrosoftはWPF 4.5でもっと安全な代替手段を開発者に提供している。BindingOperations.EnableCollectionSynchronizationを呼び出すことにより、WPFデータバインディングエンジンはロックを利用する。デフォルトでは、さきほどの呼び出しに指定されたオブジェクトでロックを獲得するが、もっと複雑なロックスキームを使うオプションもある。残念ながら、これは間違いやすいテクニックだ。バックグラウンドスレッドにおいて、コレクションのロックを獲得するのは忘れてしまいやすい。また、コレクションが不要になったときに、コレクション同期を無効にするのを忘れる可能性 もある。これはメモリーリークを引き起こすだろう。
このテクニックのもうひとつの問題は、個々のオブジェクトをプロテクトしないことだ。したがって、コレクションがロック下で読み出されているあいだ、コレクションに含まれるアイテムのプロパティは必ずしも安全に読み出されるわけではない。これはアトミックにできないゲッターやプロパティ(たとえば大きな値の型)の場合に問題になるだろう。
コレクションをアップデートするのにバックグラウンドスレッドを使っている人には、そのコレクションでイミュータブルオブジェクトだけを使うことを強く推奨する。あるいは、もしオブジェクトをイミュータブルにできないのなら、少なくともプロパティのゲッターをスレッドセーフにするよう、細心の注意を払うべきだ。そして、いざとなれば、この機能の存在を忘れて、コレクションのアップデートをUIスレッドにマーシャルするだけにした方がよいだろう。
前回は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
スレッド表示 返信