タグ

gaeに関するTMTLのブックマーク (53)

  • たまには$を書かない日を -No Dollar Sign Day-

    PHPを日々書いている人へ。 たまにはPHPから離れて他の言語でプログラムを書いてみましょうという話です。 Webシステムのプログラムを書く手段としてPHPは実用的なのですが、他にも様々な言語が存在しているのは周知のとおりです。PHPにはPHPの、他の言語には他の言語の良いところ悪いところがあり、それらは普段使っている言語を離れて他の言語を知ることによって、初めて気付かされます。 また他の言語での実装方法を知ることにより、PHPで実装する際に別の角度からプログラムを見ることができ、さらに深い理解を得ることができます。 PHPを極めていくことはとても良いことなのですが、ある程度頭で描いた仕様が実装できるようになったのなら、是非他の言語を触ってみることをおすすめします。 では実際どの言語を触ってみるのが良いかという話になるのですが、普段PHPでWebシステムを開発しているなら、おすすめはPyt

  • Google App Engine入門:実行効率を犠牲にせずに開発効率だけを上げるテクニック

    一つ前の富豪プログラミングのエントリーともつながる話だが、Google App Engineは「ちゃんとスケーラビリティを考慮してアプリケーションを作るには何に気をつけなければならないか」を勉強するには絶好の環境だ。そこで今回は、その「ケチな大富豪的なプログラミング」の実践編。 Google App Engine上のアプリをいくつか書いているうちに、必要に迫られて自然発生的にできてきたのが、gdispatchという数十行のコードからなる小さなモジュール(ソースコードはgithubに置いてある)。これをGoogle App Engineに標準で付いて来るwebappと組み合わせてフレームワークとして使っている。 gdispatchを設計する上で重視したのは、 (1)Google App Engine上でのアプリの開発を効率化する上で「明らかにこれがあると開発効率が格段に向上する」というもの以

  • Google App Engine for Javaで参考になるサイトのまとめ - ありの日記

    先日、友達の会社の勉強会で「初めてのGAE/J開発」というタイトルの発表をさせていただきました。準備不足や時間配分のミスがあったため、後半飛ばしぎみになって申し訳ありませんでした。 GAEの制限ばかりを強調しすぎて逆に使えないような印象をもってしまったかもしれませんが、決してそんなことは無いと思います。(だから、私もいまGAEに注目しているわけですし。)特にBigtableは今までとは違った考え方が必要なので、これまでのRDBのように考えるとうまく行かないのは間違いありせん。(私も何度も悩まされました。いや、今もですが。) しかし、だからといってそれはやり方の問題であって、そのままGAEが使えないという理由にはならないはずです。BigtableにはBigtableのやり方が必ずあるはずです。また、WikipediaTechCrounchによると、GoogleのたくさんのサービスがBigt

    Google App Engine for Javaで参考になるサイトのまとめ - ありの日記
  • App Engineでバージョンによる楽観的排他制御 - ひがやすを技術ブログ

    Song of Cloudで送金のトランザクション処理パターンが紹介されていました。 http://songofcloud.gluegent.com/2009/11/blog-post_18.html 同様のpython版がこちら Distributed Transactions on App Engine - Nick's Blog 上記のやり方で基的には問題はないのですが、バージョン管理による楽観的排他制御を行っていないので、送金だけを考えるなら、残高を差分で更新しているので大丈夫ですが、これを一般的なパターンに拡張しようとすると、楽観的排他制御は必要になります。 楽観的排他制御とは、エンティティにバージョン番号を持たせておいて、メモリ読み込んだときのバージョン番号と書き込むときのバージョン番号が等しいことを確認する方法で、RDBMSの場合は、次のようなSQLを実行することで実現しま

    App Engineでバージョンによる楽観的排他制御 - ひがやすを技術ブログ
    TMTL
    TMTL 2009/11/22
  • Google App Engine入門:フレームワークの選択

    Google App Engine向けのアプリを作る際に最初に悩んだのはフレームワークの選択。Google App Engineにはwebappという最低限の機能を持ったフレームワークが付いて来るが、Python使いの人たちの間では、DJangoというフレームワークが広く使われているらしいし。かといって、あまり大きなフレームワークを使うと、パフォーマンスのチューニングとかもしにくくなるし、フレームワークそのもののバグや制限に悩ませられる可能性もある。 そんな中で増井君が見つけてくれてまず試したのが、Junoというフレームワーク。DJangoと比べると遥かに小さく、WebappよりもURLのルーティングのメカニズムとかが充実している。 そこで一旦はアプリをJunoの上で作り始めたのだが、Junoのソースコードを見ているうちにいろいろと気に入らないところが出て来た。不必要にオプションが多いし、

  • Slim3 Preview release - ひがやすを技術ブログ

    Slim3の正式リリースは、来年の一月くらいになりそうですが、ドキュメントも最低限のものはそろったので、今の段階のものをPreview版として紹介しておきます。 サイトへは、http://slim3.org でアクセスしてください。 Getting Startedをやり、Slim3 Datastoreのドキュメントを読み、Online demoをみれば、Slim3のことは把握できるようになっています。 Oneline demoからソースも見れるようになっているので、動かしながらソースを確認することができます。Online demoは、IE6で見るとレイアウトが崩れていますが、これはIE6を使うなというメッセージということで。(IE7,8では未確認) Slim3は、Google App Engineに対して最適化されています。 例えば、最近、App Engineで問題になっているのは、spi

    Slim3 Preview release - ひがやすを技術ブログ
    TMTL
    TMTL 2009/11/15
  • App Engineのユニーク制限を正しく理解しよう - ひがやすを技術ブログ

    Google App EngineではRDBMSのようなUnique Indexをサポートしていません。ユニーク制限を実現する場合は、トランザクション中でKeyを使ったgetとputを組み合わせる必要があります。 ここでは、email addressがユニークだったらそれを確定してtrueを返し、そうでない場合にはfalseを返すコードを考えます。 最初にトランザクションを使わないコードを見てみましょう。KeyFactory.createKeyの最初に引数は、kindといってテーブル名みたいなものです。 public boolean putUniqueEmailAddress(String value) { DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); Key key = KeyFactory.cr

    App Engineのユニーク制限を正しく理解しよう - ひがやすを技術ブログ
  • App EngineのEntityGroupを理解しよう - ひがやすを技術ブログ

    App EngineのEntitiGroupは、Keyの親子関係を利用して組み立てられたEntityの集まりです。 Entityとは、Bigtable上の1つの行で、ユニークに識別するためのKeyを持っています。 Keyは、種類をあらわすkindとAppEngineから自動的に採番されるidもしくはアプリケーション側で自由に決めることのできるnameで構成されます。 通常は、AppEngineの自動採番に任せますが、Emailのアドレスをキーに使いたい場合などは、nameを使います。kindはテーブル名のようなものだと思ってください。 Keyの親子関係は次のようにして作ります。 Key grandparentKey = KeyFactory.createKey("Grandparent", "しげお"); Key parentKey = KeyFactory.createKey(grand

    App EngineのEntityGroupを理解しよう - ひがやすを技術ブログ
  • Google App Engine入門:Datastore上で「ユニーク制限」を実現する方法

    Google App Engine のDatastoreには、通常のリレーショナルデータベースと比べた時にいくつかの制限があるが、その一つが「このプロパティの値は常にユニークでなければならない」という指定(ユニーク制限)ができないことである。 Invoice IDのように自動生成するものであれば、アプリケーション側でなんとかすることも簡単だが、メールアドレスやハンドル名など、ユーザーが入力するものになると、ユニークであることをきちんと判定した上でEntityを作ることが必要になる。 もちろん、単純に「有無をチェックして、なければ作る」というプログラムではスレッド間の競合に対応できないので、そこはトランザクションを使ってアトミックに処理をする必要がある。 App Engine上でトランザクションを実現するには、エンティティグループという仕組みを使って行うが、気をつけなければいけないのは、エン

  • Google App Engine入門:Entity Groupとトランザクション処理

    今週に入ってから、ようやく少し気でGoogle App Engineでプログラムを書き始めている私だが、ようやく Entity Group の使い方が分かって来たので簡単に解説してみる。 Entity Groupとは、一口で言えば「トランザクションを使ったアトミックな読み書きの対象となるEntity(=データベース上のオブジェクト)の集まり」である。 イメージとしては、まず「一つのハノイの塔を三人で同時に遊んでいる姿」を思い浮かべると分かりやすいかも知れない。全くのルールなしで皆で同時に遊ぼうとすると、腕が交錯してぐちゃぐちゃになってしまう。 そこで、「ある時点でハノイの塔ボード(三つの棒を支えている水平に置かれた板)に触ることが出来る人は常に一人。一度ボードに触った人はすべての円盤をいずれかの棒の位置に置いた状態にしてからしか手を離してはいけない。もし自分がハノイの塔に触りたい時に、す

  • GAE/J + githubでどこでもプログラミング! - そうだ?Blogを書こう?

    2009-09-29追記 ssh-keyの追加に関する記述が誤っていたのを修正 2009-10-01追記 多環境間のリポジトリのマージについて追記 最近趣味開発で、Eclipce上からgithubとGAE/Jを使って開発する環境を作りました。 こいつが実に素敵滅法なので簡単にまとめたいと思います。 いろいろスッ飛ばしていますがご了承下さい・・・ GAE/Jって何さ EclipseでJava版App Engineを始めるための基礎知識 (1/4):Google App Engineで手軽に試すJavaクラウド(1) - @IT Google App Engineという、Googleが提供するレンタルサーバーみたいなものです。 (レンタルサーバーほど自由度はありませんが簡単で、レンタルサーブレットコンテナといった感じです) インターネット上でJavaアプリケーションをデプロイして、簡単にWeb

    GAE/J + githubでどこでもプログラミング! - そうだ?Blogを書こう?
    TMTL
    TMTL 2009/09/26
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    TMTL
    TMTL 2009/09/11
  • Githubでリモートリポジトリの練習 - [結] 2009年9月 - 結城浩の日記

    目次 2009年9月30日 - 「書くこと」について書きましょう / 2009年9月28日 - 『数学ガール/ゲーデルの不完全性定理』表紙が到着しました! / 2009年9月27日 - 日曜日 / 2009年9月25日 - 『数学ガール/ゲーデルの不完全性定理』無料プレゼント抽選実施しました / 2009年9月24日 - 木曜日 / 2009年9月23日 - 水曜日 / 2009年9月22日 - 火曜日 / 2009年9月21日 - 月曜日 / 2009年9月20日 - 日曜日 / 2009年9月18日 - #onwriting: 書くことについて話しましょう / 金曜日 / 2009年9月17日 - 木曜日 / 2009年9月16日 - 水曜日 / 2009年9月15日 - 出産 / 2009年9月14日 - 応募メール / 2009年9月13日 - 日曜日 / 2009年9月11日 -