app engine

文字コードをutf-8にするだけのプロキシを書いた

最近iPhoneで使っているinstapaperという"あとで読む"アプリが、時々文字コードを適切に処理してくれないので、自前で全てutf-8に変換して渡してやろうとプロキシを書いた。 google mobile proxyという手段もあるんだけど、これは携帯用なので適当なサイズに…

app engine patchでアプリ書いたときのtipsとか

templates/404.html, 500.htmlを適当に書き換えておく これらはdjango.zip内のhtmlに依存していて、その先がmyappに依存しているのでmyappを外すと NoReverseMatch: Reverse for 'settings.myapp.views.list_people' with arguments '()' and keyword argume…

ソーシャル+メッセージングでセミクローズドなもの リリースしました

これは 掲示板やらtwitterやらを混ぜたようなものです。 メッセージ、メッセージに対するメッセージ、と層になっていくイメージで、その親子関係をajaxで軽く渡り歩けるようにしています。 RTってこんな感じじゃないかとtwitterはじめる前に思っていました。…

datastoreでなんとか望むデータをぐきゅるためのテクニック

まず一例 数値と生成時刻だけを持つモデルを例に取る。 def Item(db.Model): score = db.IntegerProperty(default=0) created = db.DateTimeProperty(auto_now_add=True) ぐきゅる #itemを取得する qs = Item.all() オフセット、リミットを指定して #10番目…

データストアのoffsetは1000以上では使えない

そういえばそういう制限もあった。 offset may not be above 1000 とかエラーを返してくれる。 制約に合わせて上のアプリを修正。 重要なのは statuses = Status.gql('ORDER BY id DESC').fetch(limit, (page - 1) * limit) ↑だとoffsetが1000以上になってし…

twitterのログを自動的にバックアップするGAEアプリ(cronを使ってみる)

twitterのログを長期間残しておいて、いつでもアクセス可能にしたいな―と思ったので丁度GAEがcronに対応したことだし、とアプリにしてみた。 http://rubyu-twitterlog.appspot.com/ 実際に動いてるところ。 cronで10分ごとに http://twitter.com/statuses/us…

app engineでよく使いそうなコード片をメモ(rsserのソースから)

いったんwebapp.RequestHandlerを継承したクラスを作ってバリデーション処理を共通させる 別にバリデーションに限らないが class AbstractHandler(webapp.RequestHandler): def v_url(self, url): if not url: logging.warning('url is blank.') return url …

rsserを使って、はてなアンテナからlivedoor Readerへ移行してみた

はてなアンテナの「管理」→「データの管理」からOPMLをダウンロードする OPMLをfirefoxなどで開いてデータが正常なXMLか確認する 正規表現で置換ができるテキストエディタでOPMLを開いて編集する bodyの子、outlineがそれぞれのアイテム type="link"になって…

どんなページでも更新情報をRSSで取得できるようにするプロキシっぽいものを書いた

http://rss-er.appspot.com/ アンテナを作ろうかと思ったんだが、cron的な仕事とapp engineは相性が悪いので諦めた データを拾ってきて変更無いかチェック、ってのを数百件ずーっとやらせるのは大変 プロセス10秒も生きてないしね んで、考えたのがラッパー…

app engineで独自ドメイン設定した時のメモ

外部レジストラからvalue-domainに移管ついでにapp engineの独自ドメイン設定もしてみることにした http://niiyan.s8.xrea.com/blosxom/dev/google/20080505-google-app-engine-on-my-domain.htm Google App Engine: 独自ドメインでの利用 が詳しい 要は先に…

app engine書いててよく使うコード片とか

class OwnershipError(Exception): def __init__(self): self.value = "OwnershipError" class NotFoundError(Exception): def __init__(self): self.value = "NotFoundError" とかエラーを定義して def deleteItem(key, user): obj = db.get( db.Key.from_p…