Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...Adrian Sanabria
ここのところ、iPhone/iPad アプリの開発から Google App Engine 上のサービス(neu.Notes ユーザー向けのプレミアムサービス)の構築に少しづつ比重を移している私だが、本格的な商用サービスを立ち上げる前に、もう少し app engine 上のサービスの構築・運営に慣れておく必要があると感じて作ったのがこれ。 正式名称もないしドメインも取得していないのだが、 仮の名前は「おまかせニュース・リーダー」。世の中の動きを効率良くつかむためには、主要なニュースの少なくともヘッドラインに目を通す事は大切。はてなブックマークの人気エントリーはノイズが多すぎるし、かといって、わざわざ自分でRSSフィードを登録したりメンテナンスしたりするのは面倒。 そこで、特になにもしなくても、自然に使っているうちにしだいに賢くなって自分向けのニュースを選んでくれるサービスというのがあれば良
Google App Engine(GAE)はWebアプリのインフラなので、本来はPythonやJavaなどを駆使した動的なページでサイトを構築します。 しかし、通常のCSSファイルやJavaScriptなどの静的ファイルを使用する仕組みをもっているため、最初に簡単な設定さえ行えば、通常のホスティングと同様のHTMLによる静的なサイト構築も行うことができます。 同じようなGoogleのサービスでGoogleサイトがあり、これも無料で利用することができます。このGoogleサイトはWebブラウザのみでお手軽にコンテンツを書いたり管理したりすることができる反面、カスタマイズ性は低く、HTMLを自分でコーディングしたい場合には不向きです。 このページでは、テキストエディタやDreamweaverなどの一般的なWebデザインソフトウェアを使ってWebページを作り、FTPでサーバにアップロードする
はじめに こんにちは、Python界のタオパイパイです。いろいろなコミュニティで行われているアドベントカレンダーですが、今年初めて参加してみました。 Python Web フレームワーク アドベントカレンダー2010 : ATND 今年はPython系では「Python Web フレームワーク アドベントカレンダー2010」と銘打ってWebフレームワーク系の話をするようなのですが、自分はそもそもWebフレームワークをそんなに知らない。困った!というわけでWebアプリケーションフレームワークには必ずあるテンプレートエンジンについて調べました。 どんなテンプレートエンジンがあるのか そういえば俺もよく知らんなと思ってとりあえずいろんなエントリから調べてみましたよ。全部挙げたらきりがないので、とりあえずGoogleのヒットが多いものを挙げてみました。普通にフレームワーク名になってしまっているもの
ListPropertyは複数の値が格納できる、便利なプロパティです。 複合インデックスでのインデックス爆発という問題はありますが、ListPropertyはGoogle App Engineには欠かせません。 複数選択が可能な(formでチェックボックスになるもの)は、ListPropertyを使うと実装しやすいです。 例えば、好きな動物というデータがあったとして: class User(db.Model): fav = db.StringListProperty() user = User()user.fav = ['cat', 'dog', 'penguin'] としておけば、 users = User.all().filter('fav =', 'penguin') のように、ペンギンが好きなユーザをクエリできます。 ここで問題なのは「どの動物も好きではない」ユーザをクエリで検索
Hackathonやカンファレンス参加時の利用を想定したノートアプリケーションです。Gearsを使ってローカルにプライベートノートの保存も可能です。
メモ。Pythonのモジュールのロードはsys.pathの順番で探しに行くから、アプリケーション側でsys.path[0]なんかに意味のないパスを追加すると、毎回モジュールロード時に追加したパスも参照されているのか、ロード時間が増えた(小さなアプリで300msぐらい)。 ディレクトリ構成を気にするならsys.pathいじるとかはありかもしれないけど、増えすぎるとモジュール見つけるのに時間かかってしまうということなのかなー? ちゃんと検証してないからなんともいえないけど、いらんことしないほうがよさそうだ。
メールアドレスがこのグループでは匿名化されているか、メンバーのメールアドレスを表示する権限がないため、元のメッセージを表示できません はじめまして、Google App Engine 新参者の中山と申します。 現在、チケット配布サーバーのようなものを作っているのですが、Entity Groupの作り方で質問させてください。 モデルクラスを継承した以下のクラスがあるとします。 from google.appengine.ext import db # Counter: 現在の発行数を管理 class MyCounter(db.Model): counter = db.IntegerProperty(required=True, default=0) # Ticket: 発行予定チケットマスター:bulkloader でCSVからデータをアップロード class Ticket(db.Model
Google App Engine(以下 GAE) で画像とかファイルをアップロードするのどう実装しようか迷っていたら、「Blobstore 使えばいいよ〜」というアドバイスをもらいました。そういえば、Blobstore が提供されたことは知っていたけど、試したこと無かったな。 さっそく試してみました。初めて Blobstore を使うので、webapp フレームワークでシンプルに実装。 # -*- coding: utf-8 -*- import os import urllib from google.appengine.ext import blobstore from google.appengine.ext import webapp from google.appengine.ext.webapp import blobstore_handlers from google.ap
Google Appengine 1.4.0 がリリースされました!! このリリースはかなりでかい!! チャンネルAPI, “Always On” (リザーブインスタンス)、タスクキューの正式リリース、スタートアップリクエスト、バックグラウンド処理の改善などなど、 チャンネルAPI まずは、一番重要なチャンネルAPI。チャンネルAPIでクライアントブラウザーにプッシュすることができるようになります。内部的には、Google Talk の XMPP インフラを使っているらしくて、それでスケールアウトしてくれます。チャンネルAPI は2つの部分がに分けています。 サーバー再度のチャンネルAPI と チャンネルAPI の Javascript ライブラリ。 チャンネルAPIはサーバー側から、クライアントの通信に使います。クライアントからサーバーへの通信は今までどおりのPOSTがGET HTTPリ
.app 1 .dev 1 #11WeeksOfAndroid 13 #11WeeksOfAndroid Android TV 1 #Android11 3 #DevFest16 1 #DevFest17 1 #DevFest18 1 #DevFest19 1 #DevFest20 1 #DevFest21 1 #DevFest22 1 #DevFest23 1 #hack4jp 3 11 weeks of Android 2 A MESSAGE FROM OUR CEO 1 A/B Testing 1 A4A 4 Accelerator 6 Accessibility 1 accuracy 1 Actions on Google 16 Activation Atlas 1 address validation API 1 Addy Osmani 1 ADK 2 AdMob 32 Ads
App Engineでは実行時間に制限があるため、長時間にわたる処理を行う場合は複数のタスクに分割する必要があります。この手法は一般にタスクチェーンと呼ばれています(たぶん)。 タスクチェーンを抽象化してフレームワークにできるか考えてみました。 タスクチェーンを実現するには、タスク間のデータの受け渡し、タスクの一意性保証を実装する必要があります。 Driver タスクチェーンを開始するためのサーブレットです。Driverを経由せず、Webブラウザやcronからタスクチェーンを開始することも可能です。 Task タスクチェーンにおけるタスクを抽象化したものです。 Taskは入力として Map を受け取り、出力として次のTaskに Map を渡します。 public interface Task { /** * Process of the task. * @param input data
Google App Engine SDK for Python には、単体テスト用に各サービスのスタブが提供されています。このスタブと unittest を使えば、ローカル環境で GAE 用アプリの単体テストが可能です。 GAE/Python で unittest を使って、単体テストを行うサンプルは次の通り。 #!/usr/bin/env python #encoding: utf-8 import os import sys # 環境設定 # これをしないと GAE のモジュールをインポートできない。 # テスト対象のクラスも同様。 # ここを自分の環境に合わせて書き変えます GAE_HOME = 'Google App Engine SDK ディレクトリのパス' PROJECT_HOME = 'アプリケーションのルートディレクトリのパス' # テストで使う GAE のモジュールのパ
Google App Engine (以下 GAE)アプリケーションの、Web API 部分のテストを自動化するために、webtest というツールを導入してみた。 webtest は WSGI アプリケーションをテストするための便利ツール。WSGI アプリケーションにダミーのリクエストを簡単に送る事ができる。webtest は easy_install を使ってインストール。 GAE アプリケーションは、中で Datastore API や Memcached API を使っている場合がほとんど。そのため、テストではスタブを登録する必要がある。以前紹介した GAETestBase を継承してテストクラスを作るといい。 webtest を使ったテストコードのサンプルがこちら。パスの設定と GAETestBase クラスの定義は、別ファイルに書いて import した方が、後々使い回せていい
Google App Engineの開発ではPythonを使います。GAEを使ったWebアプリの開発でテスト駆動開発を行う際にも,Python的なユニットテストの文脈を活用できます。 ただし,GAEでユニットテストを行うためにはいくつかのツールやトリックが必要です。ここでは,そのテクニックを簡単に紹介します。 その1 : NoseGAEを使う Pythonのテスト用ツールにNoseがあります。このツールは,複数のディレクトリを渡り歩いて,複数のテストコードを一気に実行してくれる便利なツールです。 NoseのプラグインNoseGAEをインストールすることで,GAEアプリのテストを楽に行うことができます。「nose --with-gae」というようにオプション指定をすることでNoseGAEを利用できます。NoseGAEでは,テストコード上でGAEのモジュールやパッケージをインポートするために必
いまPython on GAEのテスト環境の貧弱さをなんとかするべく、あれこれやってる。とにかくテスト環境がショボいんだよね。 App Engine/Pythonはローカルのデータストアのstubの出来が良くないので、ローカルとプロダクションで動きが違うことが結構あり、ローカルでテストできることが限られてしまいます。Javaの方は、Statisticsの機能を除いては、ローカルとプロダクションの動きはほとんど同じです。stubレベルでは、ローカルでプロダクションと違う部分もあったりしますが、Slim3でおなじになるように実装してたりするので、ほとんど違いがないのです。 プロが仕事で使う場合にApp Engineでどの言語を選べばいいのか - ひがやすを blog ぐうの音も出ない! 事実だ! じゃ、プロならJavaを使った方がいいかというとそんなこともありません。好きで慣れている方を使った
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く