問題タブ [haskell-wai]
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.
haskell - WAI アプリケーションが 5 回も再設計された理由は何ですか?
インターフェースを興味深く見てみましたWAI
。単純に見えますが、現在のフォームに安定するまでに何回の反復が必要であったかを知って驚きました!
資源安全のための CPS スタイルが最も興味深いと思っていましたが、他にも学ぶべきことがたくさんあるようです。
一部の考古学では、やや満足のいく結果が得られません。
haskell - Wai テンプレート関数が Libz.so を見つけられない
<command line>: can't load .so/.DLL for: libz.so (libz.so: cannot open shared object file: no such file or directory)
これは、いくつかの WAI ライブラリをインストールしようとしているときに発生するエラーです。
- wai-app-static-3.1.6.2
- ワイ-websockets-3.0.1.2
これは、Template Haskell が動的リンクに問題を抱えていることに関連しているようです。zlib (または libz、z、libz1g、またはパッケージ マネージャーが標準圧縮ライブラリを呼び出すために選択したもの) にリンクする他のパッケージは正常に動作します。コンパイル時に動的にリンクしようとしているパッケージのみです。時間。
私は使用しましたnix-env -i zlib && nix-shell -p zlib
apt-get install
他の zlib の質問で示唆されているように 、私はzlib1g
, zlib1g-dev
, lib32z1
, zlib1g:i386
libc6-i386, lib32stdc++6
, lib32gcc1
, lib32ncurses5
(?!) を実行しました。
whereis libz.so
ライブラリが/usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libz.so
実際にインストールされていると思います。
すべての TH コードを削除して wai-app-static の機能を削除したバージョンを取得しましたが、パッケージ全体を壊さずに wai-websockets から抽出することはできません。
これらのライブラリを、できれば Nix を使用してインストールする方法を見つけた人はいますか? 私は 3 日間、動作するビルドを取得しようとしてきましたが、自分のコードを 1 行も書くことができずに、数週間のサイド プロジェクトの時間を吹き飛ばしてしまいました。この時点で機能するハックを使用します。
誰かが使用するコマンド ラインを尋ねました。これはcabalによって生成されたものです:
haskell - ミドルウェアから生成された値を保存し、ルートから取得する方法
2 つの値を生成する wai ミドルウェアがあります。
- リクエストごとにランダムに生成されるリクエスト ID
- リクエストから別のサービスへのユーザー。
コードは次のとおりです。
これでルートができましたGET /user
。このルート内で、リクエスト ID とユーザーにアクセスしたいと思います。例として、それらをログに出力するだけです。
問題は、リクエスト ID とユーザーがミドルウェアから生成されるため、ルートからそれらにアクセスする方法です。基本的に、上記のコードで使用される次の関数を実装する方法:
シナリオは、ミドルウェアが認証ミドルウェアであり、認証のためにリクエストを別のサービスに転送し、ルートで必要になるユーザー値を取得することです。
haskell - Wai Web アプリの Cookie ヘッダーにアクセスする方法はありますか?
サーバント Web アプリケーションがあります。デバッグのために Cookie ヘッダーにアクセスする必要があります。ブラウザーから、Cookie ヘッダーを含むヘッダーにアクセスできます。サーバーからは、Wai の RequestLogger を使用してリクエストをログに記録します。ただし、結果には Cookie ヘッダーは表示されません。
Wai アプリケーションで Cookie ヘッダーにアクセスする方法はありますか?
haskell - IO から構築されたサーバント アプリケーションを QuickCheck するにはどうすればよいですか?
Servant を使用して API サーバーを作成しています。サーバーには永続的な状態が含まれます。QuickCheck を使用してサーバーのテストを作成したいと考えています。
サーバント アプリケーションを構成するさまざまなエンドポイントの実装には、データベース値が必要です。当然のことながら、データベース値の作成はIO
モナドにあります。
Hspec、Wai、QuickCheck、および Servant のピースをすべてを満たす方法で組み合わせる方法がわかりません。
Hspec 仕様自体の作成の一部として IO を実行できることがわかりました。また、Hspec 仕様の各項目の前に IO を実行するように指定できることがわかりました。この場合、これらの機能はどちらも役に立たないようです。プロパティの QuickCheck 反復ごとに IO を実行する必要があります。これがないと、データベースは反復ごとに状態を蓄積するため、プロパティの定義が無効になります (または、少なくとも非常に複雑になります)。
以下は、このシナリオの最小限の自己完結型の例を作成する試みです。
これは型チェックを行いません:
WaiExpectation
aを aに適合させる方法があるかどうかはわかりませんPropertyM IO ()
。monadicIO
ここで役立つかどうかさえわかりません。
これらの部品をどのように組み合わせることができますか?