問題タブ [haskell-snap-framework]
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 - 可変数のサブフォームを持つ Digestive Functor (Snap/Heist)
PHP から Snap w/Heist へのサイトの移植に取り組んでいます。Digestive Functor をうまく使用するためにいくつかの単純なフォームを移植しましたが、今度はサブフォームの使用を必要とするトリッキーなフォームを実行する必要があります。
このアプリケーションは、小売店向けのチラシの作成を管理するため、実行する必要があるタスクの 1 つは、広告サイズを追加し、印刷されるチラシの物理的な寸法を定義することです。サイズは、ページの種類 (チラシの所有者が設定可能) とその方向 (管理者のみが制御可能) によって異なります。
このフォームは最低でも 3 つのセルを持つことが保証されており、おそらく 9 つのセル (上記の PHP バージョンの図のように) を持つことになりますが、理論的には無制限の数を持つことができます。
これまでのところ、寸法サブフォームについて得たものは次のとおりです。
フォームの定義が正しくないように感じます (もしかしたら、ここで完全に間違った考えを持っているのでしょうか?)。 新しい広告サイズの size_id/layout_id のすべての可能な組み合わせのリストを取得するクエリを実行するときにデータベースから戻ってくると null になるため、 であるAdDimensions.dimensions
必要がありますが、同様のクエリからは null にはなりません。Maybe String
編集フォームの作成時に実行されます。フィールド自体は必須です (データベースでad_dimensions.dimensions
は に設定さnot null
れています)。
ここから先、親フォームにサブフォームのリストがあることを伝える場所や、Heist を使用してそれらをレンダリングする方法がわかりません。
haskell - データベースから Digestive Functor の選択肢のリストを取得する (Snap/Heist)
追加と編集の両方を処理する住所フォームがあります (追加する場合は何も、編集する場合は住所のみ)。これまで、私は州と国の選択を一握りの項目でハードコーディングしてきました。
ここで、データベースから州と国のリストを取得したいと思います。住所のリストで既に行っているように、州/国のリストをフォームに渡すこともできますが、このフォームは 3 つまたは 4 つの他のフォーム (新しい広告主フォーム、新しいクライアント フォームなど) のサブフォームでもあります。住所のリストのように、フォームの外にある州/国のリストは必要ありません。
国情報の取得を追加した新しいフォームは次のとおりです。
これを呼び出しているハンドラーは次のとおりです。
私が得るエラーはこれです:
haskell - Snap Framework: ハンドラー内で IO を実行するにはどうすればよいですか
これはおそらく簡単な質問であり、SO で同様の質問を見たことがありますが、まだ行き詰まっています。
別のブログのコンテンツを取得して自分のページに表示する HTTP 呼び出しを実行しようとしています。これは何よりも学習演習です。
これが私のハンドラーです
Requester.getUrl には署名 getUrl :: String -> IO T.Text があります
そして、私が返すエラーは
src/Main.hs:50:15:
予想されるタイプHandler App1 App1 t0' with actual type
IO T.Textと一致しませんでし
た 'getUrl' の呼び出しの戻り値のタイプ
'do' ブロックのステートメント:
コンテンツ <- getUrl "http:/ /someblog.com/"
式:
do { content <- getUrl "http://someblog.com/";
heistLocal (bindString "contents" コンテンツ) . $「ブログ」をレンダリングする}
私が収集したものから、私は IO モナドの内部で立ち往生しており、タイプ Handler App1 App1 t0 が必要です。私はいくつかの場所にliftIOを貼り付けて実験しましたが、これについてはかなり混乱しています。
誰かが私を正しい方向に向けることができますか?
ありがとう!
mongodb - Haskellスナップ:mongodbフィールドタイプエラー
解決できないエラーが発生します。スナップアプリケーションは問題なくコンパイルされ、すべて問題ないようです。しかし、ブラウザで関連するページをレンダリングすると、次のエラーが発生します。
Webハンドラーが例外をスローしました。詳細:[_ id:50b56f19208c2e9a09dccc2b、id:1.0、code: "hdg435"、name: "froggy"]の期待される( "code" :: Integer)
コード値は、私がテスト用に選んだ単なるランダムな文字列です。なぜ整数が期待されるのかわかりませんか?
これらは、スナップアプリケーションの例の関連部分です。
table.tplの関連するHeistテンプレート部分は次のとおりです。
コードの他の部分を投稿する必要があることを教えてください。
haskell - 大規模なアプリには Snaplets を使用することをお勧めしますか? それとも、スナップコアの上に直接構築できますか?
Snap を使用して Web アプリケーションを作成する予定です。
しかし、スナップコアに固執することは、スナップレットとレンズを使用するよりもはるかに簡単です.
snap init barebones
Lens に頼らずに、開発を開始し、Heist テンプレート、HDBC データベースの永続性などを手動で追加することは、長期的には保守可能ですか? Snap コア チームは、実際にスナップ コアに加えて Snaplets の使用をどの程度強く推奨していますか?
haskell - スナップ静的 JavaScript ファイルの場所
Heist テンプレート内で静的コンテンツをリンクするときの静的コンテンツの検索ルールは何ですか? JavaScript ファイルが見つからないことに関連する問題がいくつか発生します。
したがって、「myjavascript.js」と「jquery.js」を「静的」ディレクトリのルートに貼り付けると、指定された URL がたとえば /index の場合に機能するようです。URL が /something/index の場合、「静的」ディレクトリのルートにある JavaScript ファイルを見つけることができません。したがって、それらを「静的/何か」に配置すると修正されます。とにかく、JavaScript ファイルのコピーをあちこちにまき散らして、別の URL 文字列で見つけられるようにしました。したがって、間違った場所を使用しているか、テンプレート内のリンクが正しくありません。
リンク<script type="text/javascript" src="/js/jquery.js"> </script>
を指定すると、ファイルはどこで検索されますか? どう src="jquery.js"
ですか?
ファイルを「static/js」の下に置くと、javascript コンソールから次のようなエラーが発生します。
ありがとう。
haskell - HasHdbc のような Snaplet を Snap コンテキスト外で動作させるにはどうすればよいですか?
HDBC スナップレットを使用するためのチュートリアルでは、「HDBC スナップレットを設計する際の目標の 1 つは、関数を Handler モナドまたはスナップ関連のモナドから分離することでした。これにより、同じクエリを外部でも実行できるようになりました。コマンドライン ツールなどのスナップ コンテキスト。」
私はこれだけを達成しようとしています。
型クラス HasHdbc には定義があります
Snap アプリのこの型クラスのインスタンスを次のように定義します。
HasHdbc 型クラスを使用して、Snap コンテキストの外でこのコマンド ライン ツールを作成する方法をスケッチできますか? 私は基本的なレベルで型クラスを理解していますが、型シグネチャgetHdbcState :: m (HdbcSnaplet c s)
は、たとえば IO モナドのインスタンスを定義するのが少し難しいです。
haskell - MonadCatchIOの問題は、将来、Snapフレームワークでビルドされるアプリにどのように影響しますか?
最近、MonadCatchIOクラスに関する警告がここに表示されました。
スナップモナドはその一例です。
MonadCatchIOの問題の解決策が、現在のバージョンのSnapでビルドされるWebアプリにどのように影響するのか疑問に思っています。これは、Snap Webappsのフレームワークのアップグレードに大幅な変更が必要になることを意味しますか?
haskell - スナップ: 強盗の内側/外側ループ
タイトルの質問を正しく表現したかどうかはわかりませんが、状況は次のとおりです。テーブル フィールド (スキーマ) が実行時にしか利用できない場合、heist を使用して動的テーブルを作成する必要があります。したがって、通常、コンパイル時にスキーマがわかっている場合は、次のようにします。
それは、コンパイル時にフィールドの数とその名前を知っているときです。「runChildrenWith」、「mapSplices」などを使用してハンドラーですべてを処理する方法を理解しています...
現在、フィールドとスキーマの数が実行時にしか利用できない状況にあります。したがって、強盗のテンプレートは、私が理解しているように、次のようになります。
ハンドラー内でそれを実装する方法に本当にこだわっています。「mapSplices」を 2 回実行する必要があると思います。経験的に言えば、それは内側と外側のループ/マップになりますよね?
ハンドラー内でこれを行うにはどうすればよいですか??
ありがとう。
アップデート:
スキーマは実行時に DB から取得でき、次のように利用できることを忘れていました。
ただし、データはスキーマのない mongodb から取得され、Map に変換されるため、実際には必要ありません。
アップデート2:
提案された例を試してみましたが、すべてのデータを 1 つの列にまとめただけです。必要なのは、フィールドと行を動的に生成するための単純な内側と外側のループだけです。これよりも簡単にすることはできません:
Update3:
長い週末の休息の後、ついにそれを解読しました...これが例です。それはmongodb固有のものであり、文字通りコピーして貼り付けただけです。しかし、誰かが内側/外側のループに行き詰まった場合、それは役立つと思います.