問題タブ [iterate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Play フレームワークで Twitter ストリーミング接続を閉じる
以下のコード例では、Play 2.2 WS API を使用して Twitter ストリーミング API に接続しています。ストリームが確立されたら、ストリームから切断する方法を見つけようとして立ち往生しています。アプリケーションを停止するのではなく、それを行う適切な方法はありますか? どんな助けでも大歓迎です。
scala - ファイル書き込み iteratee が WS.get の EOF を受け取らない
このリンクで説明されているように、WS を使用してファイルをダウンロードするための単純な iteratee を作成しました。
次のスニペットを検討してください。
iteratee が Input.EOF を受け取っていないように見えるため、WS.get の後に .map(_.run) を呼び出しても、ここでは効果がないようです。チャンネルを閉じることができなくなります。これは私が得る出力です:
私は何を間違っていますか?
Play Framework 2.2.2 を使用しています。
前もって感謝します。
java - マージ ルールに基づいて、2 つの列挙子を 1 つにマージする方法
Playframework に小さな Scala プロジェクトがあります。私はすべてを反応的にやろうとしていますが、問題に遭遇しました。
日付順に並べられた DB の値を表す 2 つの Enumerator[A] インスタンスがあります。日付の順序を維持する単一の Enumerator[A] としてそれらを返す必要があります。Enumerator[A] でその解決策を見つけられなかったので、A を単一のコレクションに蓄積し、後で並べ替えています。
これに対処するための反応的な方法は何ですか?
scala - play iteratees を使用して無限列挙子を作成するにはどうすればよいですか
一連の要素を無限に繰り返す Enumerator を作成できることを望んでいましたが、方法がわかりません。再帰的な列挙子を作成すると、参照しようとするとスタックがオーバーフローするようです。たとえば、A、B、C、D、A、B、C、D、A、B、C、D、A を繰り返す列挙子を作成するには、次のようなものを使用したいと考えていました。
しかし、これを何らかの方法で使用しようとすると、スタックオーバーフローが発生します:
scala - Concurrent.unicast の引数を理解する
Play Framework 2.2 を使用しています
WebSocket 接続を実装するために、Concurrent.unicast
自分のニーズに合った を使用します。
ただし、 のソース コードはConcurrent.unicast
、いくつかの引数の必要性を示しています。
anがonComplete
のときに が実行されることを理解しています。ただし、コールバックとのメソッドの
違いは何ですか:Iteratee
Done
onComplete
map
Iteratee
その上、ソースコードEnumerator#onDoneEnumerating
で提示されたの必要性は何ですか。
実際、以下を扱う WebSocket の実装に出くわしました。
と混同していonComplete
ます。
誰でも違いを説明できますか?
そして特に、なぜそうであるように議論を提示しないのですか。onDoneEnumerating
Iteratee#map
Concurrent#broadcast
onComplete
unicast
Iteratee
世界に関する優れたドキュメントを見つけるのは難しい。
scala - エレガントな反復 -> Play の列挙子「転送」
Play でアプリを書きたかったのです。フレームワーク 2.2.x を非同期アプローチとplay.api.libs.iterattee
パッケージの演習として使用します。私がやりたかったのは、本文に大きなファイルのアップロードを含む POST 要求を取得し、それをチャンクごとに別の要求へのダウンロードとして送信することでした。
「Play for Scala」の本とこの例では、リクエスト内のファイルをチャンクで受け取り、Iteratee
custom で定義したものに蓄積または反復できますBodyParser
。チャンクされた応答の提供に関しては、応答に提供する必要がありますEnumerator
-同様Ok.chunked(enumerator)
に、列挙子が新しいチャンクを提供するときにクライアントに提供されます。
すべてをまとめたいと思ったので、アップロードするクライアントからダウンロードするクライアントに新しいデータ チャンクを非同期的に伝達するためのエレガントでリアクティブな方法を見つけることができないようです。Iteratee
によって受信されたデータ(この場合はBodyParser
) を新しいEnumerator
もの (この場合は応答に出力を提供するもの)に「転送」する良い方法はないようです。
私はそれを行うための2つの方法を思いつきましたが、どちらも私には十分ではないようです:
を使用してと
play.api.libs.iteratee.Concurrent.boradcast
を生成し、BodyParser 内で受信した各チャンクを にプッシュします。が持っているプロパティを持っていません - 列挙子は、適用されたものが古い値を消費するまで新しい値を生成しません。このようにすると、アップローダーがダウンローダーよりも高速なインターネット接続を持っていた場合、一度に 1 つのチャンクを処理するのではなく、ますます多くのメモリを使用する「膨張」が発生します。Channel
Enumerator
Channel
Channels
Enumerator
Iteratee
Channel
プロキシ akka
Actor
を作成し、アップロードされたファイルをチャンクごとに送信し、最後のファイルがダウンローダによって消費された後にのみ次のファイルを送信します。ただし、この場合、各チャンクがダウンローダに送信されることの確認はActor
、アップローダIteratee
が別のチャンクをプロキシに送信するように、プロキシを経由する必要があります。これは私にとって不要なオーバーヘッドのようです。
私の質問は2つあると思います:
Enumerator
によって受信された値を生成する「転送」を構築する簡単な方法はありIteratee
ますか?- 私のユースケースでは、Play と Scala の非同期ツールキットを使用して、考えているシナリオを実装する正しい方法は何ですか?
scala - 単純な Iteratee を作成すると、型エラーが発生しますか?
thisに基づいて REPL で Play2 を使用して単純な Iteratee を作成しようとしています。しかし、missing parameters
エラーが発生します。しかし、型パラメーターを指定するele
と機能します。誰かがこれを説明できますか?