Cloud Computing
Amzon Web Service(AWS)から、ニュースレターが届いた。その中に「シンガポールにアジアのデータセンターを置く」というアナウンスが載っていた(これ)。日本からAWSを使って見ると、SSHで操作する際などで結構な遅延(latency)が発生する。特に、ラインエデ…
ログの更新が滞ってしまった。 GAE/Jについては、URL Fetchで少しゲンナリしてしまい、中断しているうちに、SDKが1.2.6に上がった。GAE/Jは無料でJavaEEが使えるサービスで画期的なのだが、最近、どうも「プロプライエタリなサービス」という感覚が強くなっ…
YUI(先月v3がリリースされましたねぇ。v2も2.8.0rになってます)にはクロスドメインなJavascriptライブラリー「Getツール」があるのだが、GAE/JのURL FetchをつかってProxyとなるプログラムを作成してみた。 Fetchしたのは、YAHOO Web Search API。たとえば…
前々回までのサンプルコードを使って、GAE/Jの認証をカスタマイズする(最終回)。GAE/Jは(今のところ?)認証時に設定できるロール(役割)が 一般ユーザー Admin(管理)ユーザー のいずれかとなっている。コンシューマー向けのサイトを少人数で開発・運…
先のログで、「GAE/Jでセッション・タイムアウトを定義(web.xml)しただけでは、再認証をさせることができない」と書いた。ここのところはちょっと混乱があって、再認証機構はセッション・タイムアウトとは基本的に関係ない。フォーム認証のケース(GAE/Jの…
カスタムログインを作ろうの第3回。目標は、 GAE/Jの認証を使って、ログインする。 ログインしたユーザー(Email)が、アプリケーションで許可した者(アプリケーションでリストを用意)でなければ、認証失敗。 である。 前回は、カスタムログインに使うユ…
テレビ局のサイトを見ると、オン・デマンドに(on Demand;要求に応じて)番組を視聴できる仕組みがある(「NHKオンデマンド」、「TBSオンデマンド」「フジテレビ on Demand」、「テレ朝動画」、日本テレビはGyao!に委託みたいだ。)。ビデオ・オン・デマン…
前回のログでは、Google App Engine/Java(GAE/J)に配備したCSVファイルから、 Emailアドレス 日本語名 住所 役割(ロール) の情報を取得して、YUI2.7.0のDataTableで表示してみた。今回は、GAE/Jのデータソース(Data Source)のエンティティーとしてこれら…
Google App Engine/Java(GAE/J)の認証が一息ついたところで、以下の仕様で、カスタムログインを作り始めてみようかと思う。 userデータ Email,日本語名(任意),住所(任意),role をData Storeに持たせる。 GAE/Jでの認証後に、Data Storeに存在チェック…
先のログ「GAE/JでGoogleアカウントを使った認証を実装する」に登場した、UserServiceオブジェクト(APIドキュメント)を使うと、User(APIドキュメント、英文のAPIの方が少しだけ詳しい)というオブジェクトが取得できる。サンプルを少しだけ修正して、画面…
前回のログでは、Google App Engine/Java(GAE/J)でGoogleアカウントを使った簡単な認証サンプルを作成した。Googleアカウントによる認証には、この他に配備記述子(deployment descripter。web.xmlのこと)による認証が用意されている(GAE/Jへのマニュア…
GAE/Jでは、Googleアカウントを使って簡単に認証処理を実装できるそうだ。ということで、試してみた。論より証拠。GAEのマニュアルにサンプルコードが載っているが、これをコピペしてもつまらないので、以下のように改造する。 日本語でメッセージをだす。 …
ノートPCを使っている身なので、Galileo(Eclipse3.5)が出るときは相当に期待して、出た早々にインストールしてみた。というのも、Ganymede(Eclipse3.4)がひどく重たいから。OSはWindows XP(SP3)で頑なにVistaを避けてきたのだが、いっそのことUbuntuに…
本当は、これを最初にやらないといけませんでした。古くからOSSのWebアプリケーションサーバーを使っている人なら、一度は、サーブレット・コンテキスト(javax.servlet.ServletContext)や、ランタイム(Runtime)からシステム属性を取得したことがあると思…
2009/9/20: 追記 TextForwardActionが動かないと思って、見直したら、String.getByteでエンコーディングの指定を忘れていました。ので、それを修正しました。========================================================前回のログでは、YUI2.7のImageLoader…
前回のログでは、imgタグのsrc属性に「画像を吐き出すAction」を貼って、画像を表示した。 今回は、久しぶりにYUIを使って、画像表示をしてみる。GAE/JにはGWTが用意されているのだが、それを使わないのは勉強不足のため。 やりたいことは、 前回のログのや…
なんというか、ブログに乗せるのもみっともないのだが、小1時間ほど悩んでしまったので、メモとして残しておく。先のログで、Struts1.3をつかって「GAE/Jのデータストアにあるバイナリーをダウンロード」してみた。 これでは「つまらない」し、「用途が限ら…
先のログでは、Google App Engine/Java(GAE/J)へファイルをアップロードし、データストアにBlob形式で保存をした。今回は、そこで保存したデータを取り出して、ダウンロード&復元してみる。以下のような画面を用意し、「ダウンロード」ボタンでファイルを…
先週の東洋経済誌(2009/8/29号)はAmazonと出版業界の特集記事だった。 自分は、Amazonが日本進出する前からの超ヘビーユーザーなのであるが、最近は、殆どがCD購入(iPod Classicには20,000曲以上入っている&入りきらない)。洋楽やJazzは、とにかく安く…
以前のログ「GAE/JにStruts1.3のサンプルを乗せてみた」でファイルのUploadがうまくいかない、と書いた。 これは、GAE/Jのランタイム環境でFileOutputStreamがサポートされていないのが原因。GAE/Jがファイルシステムとして利用できないことはよく知られたこ…
先日、定期購読している「ITアーキテクト」誌が休刊になってしまう、という連絡がきた。 元々購読していた別の雑誌が再編されて「ITアーキテクト」誌になったのだと思うが、トレンドを見るのに重宝していたので残念だ。そのVol.24に「クラウド時代のITインフ…
先のログでは、Velocity-Tools1.4に付属しているサンプルが、Google App Engine/Java(GAE/J)上で動くことを見た。 そこで、先に「Struts1.3をGAE/Jに乗せてデータ・ストアを使ってみた」で作成したサンプルを改造して、Velocityを使ってみることにする。Stru…
個人的に、テンプレートエンジンが好きだ。 先日、SourceForgeでリリースしたMyznalaはPHPベースの開発基盤だが、これにはDwooを使わせてもらっている(Smartyの方が有名だが、ライセンスがLGPLなので利用しなかった)。Apache Volocityは、JavaEEのテンプレ…
前回のログでは、Apache Struts(1.3.10)に付属するサンプルをGoogle App Engine/Java(GAE/J)に乗せてみた。せっかく(制限事項つきだが)乗ることが分かったので、struts-blank.warをもとに、データストアを使う簡単なサンプルを作ってみることにした。サ…
前回のログでは、Google App Engine/Java(GAE/J)上で、DWR2からデータストアを利用してみた。この際、最後の「Delete ALLファンクション(1トランザクションで全てのPersonエンティティーを削除する)」で失敗してしまった。 これは、全てのPersonエンテ…
前回のログでは、Google App Engine(GAE)にSpringframeworkのDI(Dependency Injection)を乗せて、無事に動くことを見た。今回は、Springframeworkの柱のもう一つである、AOP(Aspect Oriented Programing)を乗せてみる。AOPでWeavingするので、前回のサ…
数回のログにわたって、GAE/Jのデータストアを触ってみた。 雑誌の記事や、いくつかのHPを参考にさせていただいたが、まだ情報量が少ないのだなぁ、と思う。自分より先に利用をしてみた友人らと話していると、「GAE/Jはデータストアが特殊だからな。。。」と…
前回のログに引き継き、今度はGAE/Jで1:Nの所有関係を作ってみた。 1:Nの所有関係も、基本的には1:1の時と同じ。GAEのマニュアルを読む限り、所有側のエンティティーにコレクション型のプロパティーを作成すればよい(サポートされるコレクションは、これ)…
先のログでは、先走ってGoogle App Engine/Java(GAE/J)のデータストアにおけるカスケード・デリート(Cascade Delete。もしくは、リカーシブ・デリート。Recursive Delete)の問題を書いてしまったのだが、とりあえず、話を整理するために、順をおって、GA…
先のログで「Google App Engine(GAE)上に配置したDWR2では、scope=sessionの設定がうまくいかない」と書いた。GAEが準じているとするServetAPI2.5の参照実装であるTomcat6.0では、dwr.xmlにscope=sessionで定義したJavaBean(POJO)はセッションのスコープ…