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の上にある薄いレイヤーです。