Luan - reactionary software by fschmidt

goodjava ライブラリ


目次


イントロダクション

目次

goodjava ライブラリは Luan とは独立しています。Luan は goodjava を呼び出しますが、goodjava は Luan のコードを呼び出すことはありません。したがって、goodjava は Java ライブラリとして使用できます。goodjava は Luan の jar ファイルに含まれています。

西洋のプログラミングが堕落するにつれて、良いライブラリを見つけることがますます難しくなりました。したがって、現代の堕落したライブラリを使用する代わりに、自分で書きました。最も重要なライブラリについて説明します。

goodjava.logger

目次

これは goodjava.logger を含んでおり、log4j を置き換え、goodjava.loggingslf4j を置き換えます。私のロガーの使用方法のいくつかの例を見ることができます。設定は Java で行われるべきです。

slf4j は典型的な現代の混乱です。slf4j のロガーを見て、私のロガーのインターフェースと比較してください。log4j はひどくはありませんが、重大な問題があります。このプロジェクトは、著者が彼の堕落した文化に合わせてひどい堕落したロガーである Logback を作成するために放棄されました。log4j の最大の問題は、ログの分離を適切に処理しないことです。その RepositorySelector はハックです。goodjava.logger の ThreadLocalAppender は問題を適切に解決します。

私は slf4j との完全なブリッジングを実装しました。slf4j から goodjava.logging へのブリッジングと、goodjava.logging から slf4j へのブリッジングの両方です。これにより、私のコードは堕落した現代のコードと完全に互換性があります。

goodjava.parser

目次

コンピュータサイエンスでは、パースは大きな問題です。もちろん、彼らはそれを複雑にします。しかし、そうであるべきではありません。私はパースに対する新しいアプローチを開発し、ここに実装しました。それは、実質的に再帰的下降パースである位置の整数の単純なスタックに基づいています。このアイデアを使用して Luan をコンパイルするだけでなく、JSONLucene クエリHTTP リクエストBBCodeCSSCSVHTML、その他のものをパースします。

JSON パーサーを書いたとき、それは最初の実行で動作しました。それは他のどの JSON パーサーよりもはるかに簡単です。このように簡単な JSON パーサーを探してみてください。他のすべてのパーサーも同様です。私のパースに対するアプローチは、私の反現代的な価値観を反映しています。理論的なナンセンスが嫌いで、不要な複雑さが嫌いです。問題(パースのような)について深く考え、その本質を見つけるまで考えます。そして、問題を解決するためにクリーンでシンプルなコードを書きます。

goodjava.json

目次

ここにあり、JSON を簡単にパースまたは作成できます。

goodjava.xml

目次

既存のすべてのライブラリがひどい場合のもう一つの例として、自分で書きました

goodjava.rpc

目次

最近のほとんどの RPC(リモートプロシージャコール)は REST を使用していますが、これは本当に不合理です。HTTP はこれを目的としていなかったので、非効率的です。そこで、JSON を使用するシンプルなソケットベースの RPC をここで作成しました。これを使用して、私の luan ホスティングサービスを管理しています。

goodjava.lucene.queryparser

目次

これは、Lucene の QueryParser のより良い実装であり、テキストフィールドのみをクエリできるなどの重大な欠陥があります。私の実装はすべての欠陥を修正します。

goodjava.webserver

目次

これは私が書いたライブラリの最初の部分です。利用可能なすべての Java ウェブサーバーを研究した後、それらに恐怖を感じて書きました。現代のソフトウェアと現代の文化に対する私の嫌悪感はこの時点で完全に発展していたので、このコードを書いて現代のソフトウェアのすべてのルールを破ることを意図しました。そして、その結果に非常に満足しています。コードは非常にクリーンでシンプルです。ここにソースがあります。

コアインターフェースは Handler です。シンプルさに注目してください。これは Request を受け取り、Response(またはリクエストが処理されなかった場合は null)を返します。これらのクラスが「get」や「set」メソッドを持たないシンプルな構造体であることに注目してください。それらは HTTP プロトコルの真の基礎データを直接表現する構造体です。サーブレットのような愚かな隠蔽レイヤーはありません。生のままシンプルに保ちます。

サーバーを書くには、自分の Handler を書くか、既存のハンドラーをチェーンします。このを参照してください。

私は開発のためにこのウェブサーバーを単独で使用し、本番環境では nginx の背後で使用しています。必要に応じて必要なものだけを実装しました。このスタンドアロンのウェブサーバーを本番環境に対応させることは試みていません。それははるかに多くの作業です。

goodjava.mail

目次

私が置き換えた最後のひどい現代のライブラリは java.mail です。私のコードはメールを送信するために 200 行強です。それは SMTP と MIME の上にある薄いレイヤーです。