問題タブ [happstack]
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.
web-applications - Happstack Web 開発キットを使用した認証に推奨されるソフトウェアは何ですか?
先週、私たち 3 人はHappstackを使用して単純な Web アプリケーションを構築するために 2 日間を費やしました。Happstack.Auth
私たちの懸念の 1 つは認証であり、非常によく見えるパッケージがかつてあったようです。残念ながら、元のプロジェクトは放棄されたようで、フォークはありましたが、フォークをビルドすることができませんでした。
Happstack で認証を行うために推奨される代替手段は何ですか? happstack-auth
実行可能ですか?
ruby-on-rails - Web ルーティングが必ずしも自動化されていないのはなぜですか?
手動 Web ルーティングの目的は何ですか? URL とモジュール/メソッド/関数名を自動的にマッピングしないのはなぜですか?
既存の URL を壊すことなく、URL を変更する方法でリファクタリングしたい場合は、完全に自動化されたマッピングから始めて、Apache mod_rewrite や mod_redirect などを使用できます。
haskell - Hackstack Server App を終了するには?
Happstack サーバー アプリケーションを作成していますが、アプリケーションの終了方法がわかりません。
私が持っている場合:
問題なく実行でき、アプリケーション (Linux) を CTRL+C で強制終了できますが、最後の印刷は実行されません。Happstack を正常に終了するにはどうすればよいですか? アプリケーションを正しく終了しないとイベントログが生成されないことに気付き、気になります。
アップデート:
アプリケーションはトップメインでDyreを使用しています。
haskell - HappStackイベントファイル
私はゲームを開発していて、永続性の部分にHappstackを選択しました。私はそれを非常に使いやすいと思います、私はそれを理解するために私自身のために簡単な例を作りました:
そして、私がそれを「テスト」するたびに、それはevent.fileを作成します。次に、「チェックポイント」を実行して新しいチェックポイントファイルを作成します。問題は、古いイベントファイルが増え続けることです。すべてのファイルを手動で削除します(最後のチェックポイントと現在のチェックポイントを除く)。'古いものを削除する'を行うためにhappstackから欠落しているコードがありますか?
haskell - Happstackで例外をキャッチする
例外(空のリストでPrelude.headを使用)が発生し、その後すべてのhttp-requestが502/505例外を返しました(そしてhappstackアプリは「HTTPリクエストが失敗しました:リソースの送信が消えました(パイプが壊れています)」と出力しますstdout)。
私の質問はこれです:Happstackで例外を制御するためのベストプラクティスは何ですか?simpleHTTP以外のものを使用する必要がありますか、それともコントローラー関数でControl.Exception.catchを使用する必要がありますか?
現在、クラッシュコースの例と似ています。
haskell - Happstack でデータベース モナド スタックを作成するには?
データベースへのアクセスが多い Happstack アプリケーションを作成したいと考えています。一番下にIOがあり、一番上にデータベース書き込みのようなモナド(真ん中にログライターがある)を持つモナドスタックは、各アクセスで明確な機能を持つように機能すると思います。例:
と:
しかし、私は Monad と Monad Transformers についてほとんど知識がなく (この質問はそれについて学ぶための演習だと思います)、Database Monad の作成を開始する方法、IO を happstack から Database Stack に持ち上げる方法もわかりません。 ...等。
haskell - Heist テンプレートでアプリケーション モナド以外の値を使用する
Happstack、Heist、および Web ルートを使用してアプリケーション サーバーを作成しようとしていますが、スプライスがアプリケーションのモナド スタックに由来しない値にアクセスできるようにする方法がわかりません。
これが発生する状況は 2 つあります。
- Web ルート経由で URL パスから抽出されたパラメーター。これらは、リクエストを適切なハンドラーにルーティングする際に、タイプ セーフな URL でパターン マッチングを行うことによって生成されます。
- セッション情報。リクエストが新しいセッションに対するものである場合、リクエスト内の Cookie からセッション ID を読み取ることができず (そのような Cookie はまだ存在しないため)、必要に応じてスプライスを使用して新しいセッションを作成することはできません。それ以来、複数のスプライスがそれを行おうとすると、1 つの要求に対して複数の新しいセッションを作成することになります。しかし、web-routes に入る前にセッションを作成すると、セッションはアプリケーションモナドの外に存在します。
次の URL を提供しようとする次のサンプル プログラムについて考えてみます。
- /factorial/ nはnの階乗を出力します
- /reverse/ str はstrを後方に出力します
パラメータはクエリ文字列ではなく URL パスに表示されるため、ServerPartT モナドからではなく、Web ルートを介して抽出されます。ただし、そこから、スプライスがアプリケーションモナドにしかアクセスできないため、パラメーターをどこかに置く明確な方法はありません。
モナド スタックのどこかに ReaderT を貼り付けるという明白な解決策には、2 つの問題があります。
- ReaderT は ServerMonad や FilterMonad などを実装していないため、ServerPartT の上に ReaderT を配置すると、モナド スタックの Happstack 部分が隠されます。
- 私が提供しているすべてのページが同じタイプのパラメーターを取ることを前提としていますが、この例では、/factorial は Int を必要としていますが、/reverse は String を必要としています。ただし、両方のページ ハンドラーが同じ TemplateDirectory を使用するには、ReaderT が同じ型の値を保持している必要があります。
Snap のドキュメントを覗いてみると、Snap は URL パスのパラメーターを効果的にクエリ文字列にコピーすることで処理しているように見えます。これにより、問題が回避されます。しかし、これは Happstack と Web ルートのオプションではありません。さらに、URL に同じ値を指定する 2 つの異なる方法があることは、セキュリティ的に悪い考えだと思います。
では、アプリケーションモナド以外のリクエストデータをスプライスに公開する「適切な」方法はありますか?それとも、Heist を放棄して、これが問題にならない代わりに Blaze-HTML のようなものを使用する必要がありますか? 明らかな何かが欠けているように感じますが、それが何であるかわかりません。
コード例:
factorial.tpl:
逆.tpl:
happstack - 動作するHappstack/Heistの例を見つける
Haskellを使ってWebサイトを構築し始めたいと思います。そして、Happstack、Heist、およびWebルートが適切な組み合わせになると思います。
残念ながら、動作するコードが見つかりません。クラッシュコースの例はコンパイルされません。
TemplateHeist.hsファイルをダウンロードしましたが、コンパイルするとこれらのエラーが発生します。
私はHappstackをBlazeとWebルートで動作させるようになりました。私は「明白な」何かを見逃しているに違いありませんが、どこからそれを探し始めるのかわかりません。
haskell - Windows Haskell/happstack で Ctrl+C が機能しない
Ctrl+C (または +Z など) を押しても、Windows コマンド ライン (またはパワー シェル) でhaskell アプリケーション (またはhappstackアプリ) が終了しません。
現在、ウィンドウを閉じてから、新しいコマンドライン/パワーシェルウィンドウを開き、アプリの場所に移動して、runhaskellで再度起動する必要があります。コードが変更されるたびにアプリを「自動リロード」する簡単な方法はありますか?
それとも私は何か間違ったことをしていますか?