web-dev-qa-db-ja.com

Luaを使用して構成ファイルを書き込む必要がありますか?

Luaは構成ファイルに最適であると聞きました 安全な限り 。 Luaは、awesomeや(最近)conkyなどのプログラムによって設定ファイルとして使用されています。

ただし、プログラミングを使用してプログラムを構成することはアンチパターンであるとも聞いています。

Luaはプログラムの一部としてコンパイルされないので、これは例外として証明されますか?

Luaが構成ファイルとしてどのように見えるかのヒントを次に示します。

return {
  rootdir = "/abc/123",
  debug = true,
  things = {
    "foo",
    "bar",
    "baz",
    "qux"
  }
}
4
Lawful Lazy

プログラミング言語であるかどうかに関係なく、構成ファイルに使用する言語のニーズは同じです。

  1. それを使用する人々は合理的に効果的にそうすることができます。実際の人間がそれらを作成していない場合は、プログラムで読み取り可能である必要があります。そしておそらくプログラマによってデバッグされます。

    Luaのテーブル構文は、実際には古い構成ファイル形式から派生しているため、この目的ではJavaScriptと同等の効果があります(JSONは何だと思いますか?)。コメントなどで、自己文書化と同じくらいです。

  2. 不適切な構成ファイルによってプログラムが壊れることはありません。またはさらに悪いことに、Hijackです。 Lua状態に何かをさせるには、実際の作業を行わなければならないという点で、Lua状態をサンドボックス化するのは非常に簡単です。

    ただし、心配する必要がある最大のことは、カプセル化を解除する事前にコンパイルされたLuaスクリプトです。つまり、事前にコンパイルされたLuaスクリプトが構成ファイルとして読み込まれないようにするメカニズムが必要です。 Lua 5.2以降ではこれを提供しています。 Lua 5.1の場合、特別な注意を払わなければ、プログラムに大きなセキュリティホールを作ることができます。

  3. ファイルの読み取り/書き込みは、コードに対してかなり簡単である必要があります。 Luaのテーブルインターフェースは少々複雑になる可能性がありますが、いくつかのラッパー関数があれば、問題なく処理できます。

  4. ファイルにエラーが表示された場合は、適切なエラーメッセージを表示できるはずです。 Luaのパーサーは最高のものではありませんが、エラーメッセージを表示するのはそれほど難しくありません。

そうは言っても、XMLとJSONのパーサーの数が多ければ、「LON」を構成言語として使用する気になりませんそれ以外の場合私のプログラムはすでに他の方法でLuaを組み込んでいます。

6
Nicol Bolas

次の場合に当てはまる場合は、構成ファイルにプログラミング言語を使用するのが妥当です。

  1. ソフトウェアはオープンソースです(そのため、ユーザーが内部を取得するために内省を行う心配はありません)。
  2. 多くの場合、構成のニーズは非常に複雑になり、環境の一部とアプリケーションの状態によって異なります。
  3. ユーザーは技術的であることが期待できます。
  4. ユーザーが何かを台無しにしても、大きな費用はかかりません。

XmonadとEmacs(私が毎日気に入って使用している2ビットのソフトウェア)はどちらもプログラミング言語を使用して構成しているため、非常に拡張可能です。彼らはまた、上記のすべてのポイントをヒットしました。

だから、私はあなたの設定にプログラミング言語を使うべきかどうかはまれなケースでは適切だと思います。ピックアップのしやすさと統合のしやすさに基づいて言語を選択します。 Luaは通常これらの2つでうまくいくでしょう。

3
walpen