問題タブ [mochiweb]

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.

0 投票する
1 に答える
5060 参照

json - Erlang:タプルリストをJSONに

httpヘッダーであるタプルのリストがあります。リストをJSONオブジェクトに変換したい。私はmochijson2を試しましたが、役に立ちませんでした。

だから私は次のものを持っています:

そしてこれが欲しい(バイナリJSON文字列):

そして、これを試してみます。ここで、Aはタプルの元のリストです。

mochijson2がよりよく解釈できる形式にする必要があるのではないかと思います。そして、バイナリに変換します。または、すべての文字を(整数のリストとしてではなく)文字列として表す方法を考えてください。

サンプルコードを使って正しい方向に向けていただければ幸いです。

0 投票する
3 に答える
4160 参照

erlang - Erlang/OTP で application:get_env() を使用するには?

mochiweb インスタンスを作成しました

myserver_web.erlアプリケーション構成にアクセスできます

ただし、room.erlでは、アプリケーション構成 (特にenvリスト) にアクセスできません。

スーパーバイザーは部屋を開始しませんし、私もそれを望んでいません。

私は OTP に不慣れで、おそらく何かばかげたことをしていることに気づきましたが、誰かの助けに本当に感謝しています。

乾杯!

0 投票する
1 に答える
655 参照

http - 受信した HTTP リクエストの本文を Erlang で読み取る

Mochiweb を調べてみたのですが、ソケット経由でリクエストを受信して​​いるときにボディを読み取る方法が見つかりません。

私は Mochiweb に限定されているわけではありません。他の HTTP ライブラリが適していると思います。

I also tried gen_tcp:listen(Port, [{packet, http}]), this way I can read the body/headers while I'm receiving the HTTP request, but I must handle manually the responses and keeping the socket open for more requests, so I prefer not to use this solution.

My intention is to receive request with large bodies and not to wait to receive the full body in order to start reading/processing them.

0 投票する
3 に答える
870 参照

http - mochiweb アプリケーションをテストするには?

Python で WebTest を使用し、Django でテスト クライアントを使用し、Ruby on Rails で機能または統合テストを使用して実行できるように、mochiweb アプリの高レベルのテストを実行したいと考えています。私はそれを行う方法についてあまりうるさいわけではありません。基本的には、HTTP リクエストを送信またはシミュレートし、結果に対してアサーションを行いたいだけです。

Req:respond()requests ハンドラーが自分自身を呼び出さずに tuple を返すように、コードをリファクタリングしました{Code, Headers, Body}。これにより、 でダミーのリクエストを作成し mochiweb_request:new()、それらをリクエスト ディスパッチャに渡し、EUnit を使用して結果に対してアサーションを行うことができます。

今私の問題は、POST リクエストをテストする方法です。私はそれを可能にするものをmochiwebで見つけませんでした. mochiweb コードを読むReq:parse_post()と、 が呼び出されると、ソケットの読み取りがトリガーされるようです。src/mochiweb.erlで興味深いテスト コードを見つけました。どうやらこれには、HTTP メッセージの作成、ソケットへの書き込み、および応答の読み取りが含まれます。私は自分のテスト コードでこれを実行しようとしましたが、数時間後にはどこにも到達できませんでした。私は正しい方向に進んでいるかどうか疑問に思い始めています。たぶん、HTTP 配管から機能をさらに切り離す必要があるかもしれません。呼ばないReq:parse_post()私のリクエストハンドラーの中から。私が考えている別の解決策は、サードパーティの Web テスト ライブラリを使用することです。Erlang で書かれている必要はありません。Ruby や Python、あるいは Selenium の何かかもしれません。

では、mochiweb アプリの機能テストまたは統合テストを行うには、どのソリューションをお勧めしますか?

0 投票する
4 に答える
6382 参照

mochiweb - mochiweb と Webmachine を始めてみませんか?

Mochiweb と webmachine は非常に有望なアプリケーションであり、それらを使いこなしていることに気付いた人々がどのように使用しているかを見るとわかります。mochiweb で初心者向けのチュートリアルを見つけることができる場所に誘導する必要があります。フレームワーク専用の Web サイトはないようです。私が必要としているのは、pdf、ブログ サイト、または mochiweb のチュートリアルであり、使用方法に関するいくつかの例を提供していると思います。私はすでに Erlang プログラマーで、Nitrogen、Yaws、Mnesia、OTP などを使用しています。方法を教えてください...

0 投票する
2 に答える
1993 参照

erlang - Erlang:Mochiwebとの1024を超える接続を許可するにはどうすればよいですか?

GNU/Linuxでファイル記述子の最大制限を増やしようとしました。

サーバーを。で起動しています-env ERL_MAX_PORTS 4096

test utilを使用しているときはいつでも、1012-1024が接続を開いた後、「Closed:socket_closed_remotely」および「Closed:emfile」というメッセージが表示されます。

0 投票する
1 に答える
1541 参照

https - httpおよびhttpsを使用するWebマシン?

httpsをwebmachineで動作させるための推奨される方法は何ですか?

mochiwebをhttpsおよびhttpで動作させる例があることがわかります。私はそれをウェブマシンに翻訳しているように見えます。特に、1つのアプリでhttpリクエストとhttpsリクエストの両方をどのように処理しますか。

0 投票する
1 に答える
1055 参照

erlang - Mochiweb から結果をストリーミングする

Erlang と Mochiweb を使用して Web サービスを作成しました。Web サービスは多くの結果を返し、計算が完了するまでに時間がかかります。プログラムが結果をすべて見つけたときに返すのではなく、プログラムが見つけたらすぐに結果を返したいと思います。

編集:

チャンクされたリクエストを使用して結果をストリーミングできることがわかりましたが、接続を閉じる方法が見つからないようです。mochiwebリクエストを閉じる方法について何か考えはありますか?

0 投票する
3 に答える
1315 参照

erlang - mochijson2によって返される一致構造をパターン化する方法は?

Erlang をいじり始めたばかりで、Twitter のタイムラインを表示するためだけの非常に単純なテスト Web アプリケーションを作成しています。

アプリの作成には webmachine を使用し、テンプレートのレンダリングには erlyDTL を使用しています。

私の質問は、mochiweb のmochijson2:decode/1関数によって返される構造に関連しています。

次の例のように、タイムラインを正常に取得してデコードできます。

このmochijson2:decode/1関数は、次の形式のタプルのリストを返します。

ただし、タイムラインを erlyDTL に渡すには、structatom タグを取り除き、単純に proplist のリストを webmachine リソース (erlyDTL によってレンダリング) に渡す必要があります。パターン マッチングにまったく慣れていないので、次のリスト内包表記でこれを実現できると考えました。

<<"user">>実際、これは、値自体{struct, proplist()}タプルである, を除いて、各 Tweet proplist 内のすべてのアイテムに対して完全に機能します。私は一生、この入れ子になったタプルからアトムを削除する方法を理解できず、外部ツイートと各ツイートに含まれるユーザーのstruct両方にパターン マッチする Erlang コードの例を誰かが提供できるかどうか疑問に思っていました。{struct, Tweet}{struct, User}

最終的な目標は、次の例のように、Django テンプレート言語で各ツイートにアクセスできるようにすることです。

どんな助けでも大歓迎です!

0 投票する
1 に答える
996 参照

erlang - Mnesiaレコードの時間関連の制約を効率的に処理するにはどうすればよいですか?

私は記録をmnesiaに書き込んでいますが、それは許可された時間(24時間)だけそこに保持する必要があります。24時間後、ユーザーがそれらの一部を変更する前に、システムはそれらを自動的に削除する必要があります。たとえば、ユーザーには、特定の時間に使用する必要のある無料の通話時間(音声通話用)が与えられます。使用しない場合は、24時間後に、システムはこれらのリソース予約をユーザーレコードから削除する必要があります。

さて、これはタイマーをもたらしました。レコード構造の例は次のとおりです。

レコード内のタイマーオブジェクトは重要です。ユーザーがタイムアウトする前に予約されたリソースを最終的に使用した場合(またはタイムアウトした場合)、システムはtimer:cancel/1このオブジェクトからタイマーサーバーを解放するために呼び出すことができます。問題は、これらのレコードのタイマーを処理する2つの方法があります。

オプション1:トランザクション内で処理されるタイマー

上記のオプションについて。

Mnesiaのドキュメントによると、トランザクションは(何らかの理由で)成功するまでtmマネージャーによって繰り返されるio:format/2可能性があるため、書き込みや読み取りとは関係のないコードを配置すると、トランザクションが数回実行される可能性があります。このステートメントにより、この時点で一時停止し、トランザクション自体からタイマーを処理する方法を考えたので、コードを次のように変更しました。

オプション2:トランザクション外で処理されるタイマー

予約のタイムアウトを処理するためのコード:

オプション2では、理由によりmnesia_tmがトランザクションを再実行した場合でも、タイマー処理コードを除外する方が安全だと思いました。このコードは2回実行されません(同じものに対して複数のタイマーオブジェクトを使用しないようにします)。記録)。

質問1:これら2つの実装のどちらが正しいですか?および/または間違っていますか?(また)両方が間違っているかどうか教えてください

質問2:モジュールタイマー、本番環境で多数のタイマージョブを処理するのに適していますか?

質問3: mnesia上で実行されるSean Hindeのtimer_mn-1.1と比較して、タイマーモジュール(おそらくEtsテーブル上で実行される)は本番環境で(実際には)機能が劣っていますか?(それ自体がmnesiaを使用しているシステムでSean Hindeのtimer_mnを使用することは、スキーマの変更、ノードの問題などの点で問題があるように見えるため、これを求めています)

誰かがmnesiaのタイマー関連の問題を処理する別の方法を持っているなら、私に更新してくださいありがとうみんな...