問題タブ [erlang-otp]
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.
erlang - Erlang でノードを動的に追加し、global_groups を追加する
global_groupモジュールを使用してノードをグループに分割する Erlang のサポート。さらに、Erlang はノードネットワークへのオンザフライでのノードの追加をサポートしています。これら 2 つの機能は相互に使用できますか?
私の知る限り、グローバル グループを使用するには、起動時にすべてのノードに名前を付ける必要があります。
rest - REST 経由で Erlang ビジネス層にアクセスする
大学のプロジェクトでは、Erlang でビジネス層を実装し、REST を使用して複数のフロントエンド経由でアクセスすることを考えています。分散アプリケーションなどの OTP 機能を利用したいと考えています。
私の質問は、gen_server 呼び出し/キャストを他のアプリケーションに公開するにはどうすればよいですか? もちろん、OTP.net や JInterface などの言語固有の「ブリッジ」を介して RPC 呼び出しを行うこともできますが、REST のように一貫した方法でアクセスする必要があります。
security - Erlang:許可されていないノード/たぶんCookieの質問
2つのerlangノードを相互に通信させようとしています。1つはUbuntuマシン上にあり、もう1つはWindowsXP上にあります。
「許可されていないノードからの接続試行」メッセージが表示され、一方のノードがもう一方のノードからメッセージを受信できなくなります。
どちらもErlangOTPの5.XXXバージョンを使用しています。
両方のノードに同じCookie(.erlang.cookie)があります
レシーバーノードを次のように開始します:
'fred @ ipaddress'を使用して関数を呼び出します(一重引用符で囲みます)
ファイアウォールをオフにしました。
では、他に何が接続を妨げているのでしょうか?
更新:erlang:get_cookie()を使用して両方のノードのCookieをチェックしていますが、値が異なります。これが問題です。両方のマシンでerlangを実行するディレクトリに同じ.erlang.cookieファイルを配置することでCookieを設定していると思います。しかし、多分これは間違った場所ですか?
アップデート2:皆さんの回答に感謝します。それが私たちにとってうまくいったので、私たちは答えとしてRanokを選びました。クッキーを設定する別の方法のいくつかもうまくいくと確信しています。
erlang - timer_serverという名前のgen_serverにより、タイマーモジュール関数が返されませんでした
gen_server
と呼ばれるIを生成するスーパーバイザーを作成しましたtimer_server
。このtimer_serve
rのタスクの1つは、登録を管理timer:send_interval
し、特定の間隔でpidにメッセージを送信するために呼び出すことです。
gen_server
しかし、私が呼んでいるの初期段階では、timer:send_interval
私はロックアップを取得していました。ドキュメントによると、タイマー:関数はすぐに戻るので、これは非常に厄介でした。
名前を変更gen_server
すると、record_timer_server
この問題は解決しました。私の質問は2つあります:
- アプリケーションの起動時に呼び出された
timer_server
ときにすでにプロセスが存在するのに、なぜ登録済みプロセスを作成できるのですか?timer:start()
timer_server
一度開始すると、関数を使用して呼び出している場合、この関数が名前の検出に不一致を引き起こさないのはなぜsend_interval
ですか?
コードは必要ないと思いますが、必要に応じて更新して追加することができます。
erlang - Erlang でのプロセス バランシング
erlang標準ライブラリに一種の「ロードバランサ」があるかどうか知っている人はいますか? つまり、非常に大きなデータセットに対して非常に単純な操作を行う場合、すべてのアイテムのプロセスを構築するオーバーヘッドは、操作を順番に実行するよりも大きくなります。しかし、「適切な数」のプロセスで作業のバランスをとることができれば、パフォーマンスが向上するので、基本的にこのタスクを達成する簡単な方法があるかどうかを尋ねています.
ところで、OTP アプリケーションがある種の負荷分散を行っているかどうか知っている人はいますか? つまり、OTP アプリケーションには「ワーカー プロセス」(Java っぽいスレッド ワーカーのような) という概念がありますか?
erlang - Erlang のスーパーバイザー ツリーを説明するには?
監視ツリーについて説明してみました。
私の最善の試みは次のとおりです。
わかりました、工場からチョコレートの箱が届きます。「すべてのビットがおいしい」という保証が付いています。そして、その味がおかしいと感じたら。箱ごと捨てることができます。工場から新品を手に入れるからです。これは、Erlang の監視ツリーのようなものです。1 つのスレッドが誤動作した場合。すべてのスレッドの状態が悪い可能性があります。その場合、スーパーバイザーはすべてのスレッドを破棄して最初からやり直します。チョコレートの箱のように、箱を投げるときはあなたが監督者です。
erlang - フェイルオーバーの成功後にErlang Takeoverが失敗する
2 つのノードに分散されたアプリケーションがあります。最初のノードを Halt() すると、フェイルオーバーは完全に機能しますが (時々 ?) 最初のノードを再起動すると、start_link が既に開始されているため、テイクオーバーが失敗し、アプリケーションがクラッシュします。
マイアプリ
私の上司:
両方のノードが同じ sys.config ファイルを使用しています。
上記が機能しないというこのプロセスについて、私が理解していないことは何ですか?
erlang - erlang/OTP で appmon を起動して既存のノードを監視するにはどうすればよいですか?
このコマンドラインで起動された実行中の erlang アプリケーションがあります
新しいノードを開始して appmon:start() を実行すると、同じ Cookie を使用していても「peasy」ノードが表示されません。同じことが webtool:start() でも起こります
誰?
erlang - Erlang/OTP アプリケーションで gen_server を使用する場合
Joe Armstrong の本を読み、Kevin Smith のスクリーンキャストを見た後、OTP アプリケーションとしてバンドルされた単一の gen_server と単一のスーパーバイザで構成される単純な OTP アプリケーションを作成しました。
今、mochiweb を見て、new_mochiweb.erl スクリプトを使用してサンプル プロジェクト [helloworld] を作成しました。ソース コードを参照すると、サンプル OTP アプリ [OTP アプリケーションが存在し、スーパーバイザーが存在する] と似ていないことがわかりますが、重要な違いが 1 つあります。生成された helloworld.erl および helloworld_web.erl ファイルは gen_server の動作を実装していません。標準の Erlang モジュールです。
OTP アプリケーション コンポーネントを構築する場合、gen_server の使用が推奨される方法であるという印象を受けました。mochiweb が OTP アプリケーションとスーパーバイザーの動作を使用し、 gen_server を避けるのはなぜですか?