タグ

2010年1月25日のブックマーク (6件)

  • jQuery1.4の新機能を1.4だけに14個 - KAYAC engineers' blog

    時が経つのは早いもので、ぼーとしてたらもう1月も終わりそうですね。外村です。 先日リリースされたjQuery1.4で新しく追加されたメソッドや新しい使い方ができるようになった機能を全部ではないですがいくつか紹介します。以下に変更点が全て掲載されているのでそちらも参照するといいと思います。 Version 1.4 ? jQuery API 新規で追加されたメソッド 1. nextUntil()、prevUntil()、parentsUntil() 指定したセレクタまでの要素を返します。以下の例ではitem3とitem4の後ろにテキストが追加されます。 <ul> <li id="item1">item1</li> <li id="item2">item2</li> <li id="item3">item3</li> <li id="item4">item4</li> <li id="item5

    jQuery1.4の新機能を1.4だけに14個 - KAYAC engineers' blog
  • Song of Cloud: TaskQueueを使ってメールを送信する

    GAEにはMail送信サービスがあり、これを使ってEメールを送信することができます。 しかし、メール送信は必ず成功するとは限らないので、通常はメールを送信する際、送信の成功/失敗を確認し、失敗時には再送信するよう処理すると思います。 GAEでもそういう処理を書くことはできますが、「レスポンスを30秒以内に返さなければならない」という制約があるため、ひとつの処理の中で何度も繰り返すかもしれない処理を行うと、途中でタイムアウトとなり強制的に処理が中断されてしまう可能性があります。 そこで、より確実にメール送信を行うことができるよう、同じくGAEで使えるTaskQueueサービスを使いバックグラウンドでメール送信をする仕組みを作りました。 例えばあるフォームからPOSTされたときにメールを送信しようとした場合、 1. ServletでPOSTを受け取り、送信するメールの情報を作成 2. Task

    takkecy
    takkecy 2010/01/25
  • 【Google App Engine】 TaskQueueはスケールしない!?

    TaskQueueによって、何がどう改善されるかについて、Reflex iTextを使って具体的に調べてみたので報告したい。特に、パフォーマンスについて、先日の記事(ココ)と比較しながら説明する。 やりたいことは単純で、大量のPDFをいかに短時間で生成するかである。前回のテストでは、クライアントから大量のリクエストを投げることでこれを実現しようとしたが、リトライ処理が多発してスケールしなかった。では、TaskQueueを使うとどうなるのだろうか。今回はそこにポイントを絞って調べてみた。 TaskQueue概要 まず、TaskQueueであるが、これはWebHook型のキューシステムで、Task自体を通常のServletとして書くことができる。Googleのサンプルを見ればわかるように、QueueFactory.getDefaultQueue().add()を使って、URLとRequestP

    【Google App Engine】 TaskQueueはスケールしない!?
    takkecy
    takkecy 2010/01/25
  • Task Queue君とmemcache君、疑って正直すまんかった - スティルハウスの書庫の書庫

    ここ2日くらいデバッグではまりました。もともとこんな処理してるコードです: a. クライアントが大量データダウンロードのリクエストを投げ、ポーリングをはじめる b. リクエストに基づいてTask Queueに数個〜数10個のタスクが積まれる c. 個々のタスクの結果はmemcache上に集約される d. 集約されつつあるデータをクライアントがダウンロードする これ通常はうまく動いてたのですが、対象データの規模が非常に大きいと時折データの抜けが発生するという現象がクラウド上で起きてました。その原因を調査してましたが、やっぱり真っ先に疑われるのは、Task Queueによる非同期な並列処理の部分と、memcacheに集約する部分です。 タスクほんとに全部終わってる? このアプリでは、上記のb.とc.の部分が確実に実行されていることを確認するために、 個々のタスクにmemcacheにトークンを登

    Task Queue君とmemcache君、疑って正直すまんかった - スティルハウスの書庫の書庫
    takkecy
    takkecy 2010/01/25
  • Task QueueはMapReduceの夢を見るか - スティルハウスの書庫の書庫

    いまコーディング中の案件で、Task Queueにぴったりハマる要件があったので、飛びついてみました。 課題:Datasource上の大量のデータをクライアントにダウンロードしたい。30秒内では終わらないので複数のリクエスト/レスポンスに分割してダウンロードする実装にした。しかしデータ量によっては何10分もかかってしまう。 原因:データ量の多さもあるが、それを取得するためのDatastoreのクエリ、および関連エンティティの取得にもっとも時間がかかっている 書こうとしているソリューション:クエリと関連エンティティ取得をTask Queueのタスクに分割して並列処理(map)し、取得したデータを集約(reduce)してクライアントに渡す …んん、これってMapReduceではないですか。1つのリクエストでは重い処理は、たくさんのタスクに細切れにして、キューにどんどん入れる。App Engin

    Task QueueはMapReduceの夢を見るか - スティルハウスの書庫の書庫
    takkecy
    takkecy 2010/01/25
  • Google App Engineで長い処理をタスクキュー使って実行 - きしだのはてな

    Google App Engineだと、30秒制限があって長い処理が書きにくいのですが、タスクキューは処理中に例外が発生したり30秒制限にひっかかったりすると自動的に呼び直されるので、これを使って長い処理を実行することができます。 ということは知っていたんだけど、実際どうなのかと思って試してみた。 まずこんなサーブレット書きます。 ※GAE/JはServlet3.0に対応してないので、@WebServletアノテーションは擬似コードだと思ってください。 5秒に一回QueueTestに現在値を記録するという処理を行うループを20回繰り返します。5秒×20=100秒 >> 30秒なので、確実にタイムアウトします。 タスク開始時の値をQueueLogに記録しておきます。 @WebServlet(urlPatterns="/queue/testqueue") public class TestQu

    Google App Engineで長い処理をタスクキュー使って実行 - きしだのはてな