私は監視アプリケーションで作業しており、起動時にいくつかのIPアドレスのリストからなるいくつかの初期設定を渡す必要があります。このデータをアプリケーションに渡すOTPの方法は、.appファイルを介してですか?または他の一般的に受け入れられている方法がありますか?Erlang初期アプリケーション設定を保存します
答えて
私はのリストを持っている名前gen_serverプロセスを作成しますIPアドレスは状態です。サーバの初期化では、定義済みリストはfile:consultを使用してファイルから読み込まれ、サーバの初期状態として使用されます。この名前のgen_serverからIPアドレスのリストを取得するには、handle_call(get_ip、_From、State)を実装する必要があります。
このようにして、Erlangの大きなカルマを提供する共有グローバル状態を防ぎ、ランタイムIPアドレスの変更などの追加機能を開始することができます。
設定ファイルがシステム内 アプリケーションの構成パラメータの値が含まれています。 erlコマンドライン引数-config Nameは、システムコンフィギュレーションファイル Name.configのデータを使用するようにシステムに指示します。
コンフィギュレーションファイルのコンフィギュレーションパラメータ値は、アプリケーションリソースファイルの値を (app(4)を参照)よりも優先します。コンフィギュレーションファイル内の値 は、コマンドラインフラグによってオーバーライドできます( erl(1)を参照)。
application:get_env/1,2を呼び出すと、設定パラメータの値が取得されます。
実行時にそれらを上書きする必要がある場合は、application:set_env/3
を使用できますが、注意してください。
「介護」とは何がありますか?ちょっと凝ってくれますか? – pedromanoel
"注意して" - >実行時に設定された環境変数は、ノードの再起動時に初期値にリセットされます。また、バージョン管理された設定ファイルに反映されていない場合、実行時に行われた変更を追跡することも難しいです。 –
あなたのデータがエルラン語であるファイルを使用してください。ただし、ファイルを保護する必要があります。起動時にファイルから読み込み:file:consult/1
。ファイルの読み取り専用を作るために
-include_lib("kernel/include/file.hrl"). protect_file(File)-> {_,File_info} = file:read_file_info(File), file:write_file_info(File,File_info#file_info{access = read,mode = 33060}). unprotect_file(File)-> {_,File_info} = file:read_file_info(File), file:write_file_info(File,File_info#file_info{access = read_write,mode = 33206}).
利用機能:ファイルの変更は、ユーザーまたはシステム管理者によって行われます場合は、保護したり、ファイルへのアクセスを拒否するために、以下の機能を使用します。ファイルを書き込み可能にする必要がある場合は、unprotect_file/1
を使用して変更します。解析する必要がないため、erlangの用語を持つファイルは簡単です。JSON
オブジェクトまたはXML
データをファイルに書き込むこともできます。要約すると、あなたが設定したすべてのファイルを使用することは、アプリケーションとそのアプリケーションと対話している人によってよく管理されます。
例として、ejabberd.cfgファイル、ejabberdサーバーの設定ファイルがあります。 erlangという用語を持つファイルが最も簡単です。ここでは、システム管理者が特定の設定に関する他の利用可能なオプションを見るためにコメントすることができます。
ejabberdのソースコードを確認した後、私はこのメソッドを使うことも考えました。なぜこれが落とされたのですか? – naiquevin
私はあまりにも、私はこのメソッドを長い間使用しているのだろうか。 'Ejabberd'もこれを使っています。' Riak' e.t.cでも人々に何が悪いですか? –
-1です。ファイルを保護してもOPの質問に実際には対処できないためです。 –
- 1. アプリケーション設定の保存
- 2. アプリケーション設定の保存|レジストリ
- 3. app.configに保存しないアプリケーション設定
- 4. データベースにアプリケーション設定を保存する
- 5. アプリケーション設定を保存する場所
- 6. 設定をasp.netアプリケーションに保存する
- 7. iOSで(プライベート)アプリケーション設定を保存しますか?
- 8. Windowsアプリケーションのドロップダウン設定を保存していますか?
- 9. C#WPFアプリケーションUserControlの設定を保存します。
- 10. データベースにアプリケーション設定変数を保存します
- 11. 設定ファイルにアプリケーション設定を保存する方法は?
- 12. Grailsアプリケーションのデータベースにアプリケーション設定を保存して使用しますか?
- 13. ASP MVC 5 EF - アプリケーション設定の保存 -
- 14. Moquiでのアプリケーション設定の保存
- 15. jScrollPane初期設定?
- 16. アプリケーション設定(C#)に既定値を保存する
- 17. notepad ++はスタイル設定ツールの設定を保存しますか?
- 18. eclipse.orgの環境設定の保存を設定します
- 19. Webアプリケーションに初期データを設定する方法
- 20. AngularJS初期アクティブクラスを設定
- 21. カスタムオブジェクトをアプリケーション設定に保存できません。
- 22. は、.net 3.5のアプリケーション設定を保存できません。
- 23. Azure Appサービス:アプリケーション設定を保存できません
- 24. 初期データを保存した後、UltraGridチェックボックスの値をTrueに設定できません
- 25. IntelliJ:設定の編集設定を保存しません
- 26. CoreData:初期保存後に文書が保存されない
- 27. cで保存せずにアプリケーション設定を設定する方法
- 28. MKMapView初期ズームレベルの設定
- 29. メンバー初期設定はC#
- 30. セレンページオブジェクトの初期設定、ベストプラクティス
私はこの質問にまだ答えていないと思います。「開始するErlangノードにパラメータを渡すOTP方法はありますか?」です。 私はこの問題を解決するために、私が望むenv変数を使ってプログラムで起動できるノードを用意したいからです。 3つのアプローチが考えられます:1)ノードを起動する前に ".config"または "* .app"ファイルを修正してください。 2)ノードの作成中に、これらのパラメータを「アプリケーションキー値」フラグとして渡します。 3)アプリケーションを空白の状態のままにして、機能を開始するために構成メッセージを待つ。 私はまだ何を使用するかわかりません... – pedromanoel