问题标签 [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.

0 投票
1 回答
626 浏览

web-applications - 推荐使用 Happstack Web 开发套件进行身份验证的软件是什么?

上周,我们三个人花了两天时间尝试使用Happstack构建一个简单的 Web 应用程序。我们关注的一个问题是身份验证,似乎曾经有一个Happstack.Auth看起来非常好的包。不幸的是,原来的项目似乎已经被放弃了,虽然有一个分叉,但我们无法构建分叉。

人们建议在 Happstack 中进行身份验证的替代方法是什么?happstack-auth可行吗?

0 投票
2 回答
585 浏览

haskell - 任何 Haskell Web 服务器都可以运行 Python CGI 应用程序吗?

我需要一个使用 Haskell 开发的 Web 服务器来运行旧的 Python CGI 应用程序。

任何建议表示赞赏!

0 投票
4 回答
297 浏览

ruby-on-rails - 为什么网络路由并不总是自动化的?

手动网络路由的目的是什么?为什么不是每个人都自动在 URL 和模块/方法/函数名称之间进行映射?

我认为您可以从全自动映射开始,然后您可以使用 Apache mod_rewrite 或 mod_redirect 或其他任何东西,如果您想以一种会更改 URL 的方式进行重构,而不会破坏现有的 URL。

0 投票
2 回答
320 浏览

haskell - 如何退出 Hackstack Server App?

我正在创建一个 Happstack 服务器应用程序,但我不知道如何结束应用程序。

如果我有:

我可以运行它,我可以用 CTRL+C 杀死应用程序(linux),但最后一次打印永远不会执行。如何优雅地退出 Happstack?这让我很困扰,因为我注意到如果我没有从应用程序中正确退出,则不会生成事件日志。

更新:

该应用程序在顶部主要使用 Dyre。

0 投票
1 回答
126 浏览

haskell - HappStack 事件文件

我正在开发一款游戏,并选择 Happstack 作为持久性部分。我觉得它很容易使用,我做了一个简单的例子让自己理解它:

每次我“测试”它时,它都会创建一个 event.file。然后我“检查点”并创建一个新的检查点文件,这对我来说没问题,问题是旧的事件文件不断增长!我手动删除每个文件(最后一个检查点和当前文件除外)。happstack 中是否缺少一些代码来执行“删除旧事物”?

0 投票
1 回答
333 浏览

haskell - 在 Happstack 中捕获异常

我遇到了一个异常(在空列表上使用 Prelude.head),之后所有的 http 请求都返回了 502/505 异常(并且 happstack 应用程序打印“HTTP 请求失败:发送资源消失(断管)”标准输出)。

我的问题是:在 Happstack 中控制异常的最佳实践是什么?我应该使用 simpleHTTP 以外的其他东西还是简单地在控制器函数上使用 Control.Exception.catch?

它目前看起来类似于速成课程中的示例:

0 投票
2 回答
869 浏览

haskell - 如何在 Happstack 中创建数据库单子堆栈?

我想创建一个可以大量访问数据库的 Happstack 应用程序。我认为底部带有 IO 的 Monad 堆栈和顶部的类似数据库写入的 monad(中间带有日志写入器)将有助于在每次访问中具有清晰的功能,例如:

和:

但是我对 Monad 和 Monad Transformers 知之甚少(我将这个问题视为学习它的练习),并且我不知道如何开始创建 Database Monad,如何将 IO 从 happstack 提升到 Database Stack, ...ETC。

0 投票
1 回答
480 浏览

haskell - 使用不是来自应用程序 monad 的值和 Heist 模板

我正在尝试使用 Happstack、Heist 和 web-routes 编写应用程序服务器,但在弄清楚如何让拼接访问不是源自我的应用程序的 monad 堆栈的值时遇到了麻烦。

出现这种情况有两种情况:

  • 通过网络路由从 URL 路径中提取的参数。这些来自在将请求路由到适当的处理程序时对类型安全 URL 的模式匹配。
  • 会话信息。如果请求是针对全新会话的,我无法从请求中的 cookie 中读取会话标识符(因为尚不存在此类 cookie),并且如果需要,我无法使用拼接创建新会话,从那时起,如果不止一个拼接器尝试这样做,我最终会为一个请求创建多个新会话。但是,如果我在输入 web-routes 内容之前创建会话,则该会话存在于应用程序 monad 之外。

考虑以下尝试提供以下 URL 的示例程序:

  • /factorial/ n输出 n 的阶乘
  • /reverse/ str向后输出str

由于参数出现在 URL 路径而不是查询字符串中,因此它是通过 web-routes 提取的,而不是来自 ServerPartT monad。但是,从那里开始,没有明确的方法可以将参数放在拼接可以看到的地方,因为它们只能访问应用程序 monad。

将 ReaderT 粘贴在 monad 堆栈上的明显解决方案有两个问题:

  • 在 ServerPartT 之上有一个 ReaderT 隐藏了 monad 堆栈的 Happstack 部分,因为 ReaderT 没有实现 ServerMonad、FilterMonad 等。
  • 它假定我服务的所有页面都采用相同类型的参数,但在此示例中,/factorial 需要一个 Int 而 /reverse 需要一个 String。但是对于使用相同 TemplateDirectory 的两个页面处理程序,ReaderT 需要携带相同类型的值。

从 Snap 文档看,Snap 似乎通过有效地将 URL 路径中的参数复制到查询字符串中来处理参数,从而回避了问题。但这不是 Happstack 和 web-routes 的选项,此外,有两种不同的方式让 URL 指定相同的值让我觉得安全方面是个坏主意。

那么,是否有一种“正确”的方式将非应用程序单子请求数据公开给拼接,或者我是否需要放弃 Heist 并使用 Blaze-HTML 之类的东西来代替这不是问题?我觉得我错过了一些明显的东西,但无法弄清楚它可能是什么。

示例代码:

阶乘.tpl:

反向.tpl:

0 投票
1 回答
482 浏览

happstack - 找到一个有效的 Happstack / Heist 示例

我想开始使用 Haskell 来构建网站,并认为 Happstack、Heist 和 Web-routes 将是一个很好的组合。

不幸的是,我找不到工作代码。速成课程示例无法编译。

我下载了TemplateHeist.hs文件,编译它给了我这些错误。

我已经让 Happstack 与 Blaze 和 Web 路由一起工作。我一定错过了一些“明显”的东西,但我不确定从哪里开始寻找它。

0 投票
1 回答
316 浏览

haskell - Ctrl+C 在 Windows Haskell/happstack 中不起作用

按 Ctrl+C(或 +Z 或其他任何东西) - 不会终止 windows 命令行(或 power shell)中的 haskell 应用程序(或happstack应用程序)。

目前我必须关闭窗口,然后打开一个新的命令行/power-shell 窗口,导航到应用程序位置并使用runhaskell再次启动它。每当代码更改时,是否有更简单的方法使应用程序“自动重新加载”?

还是我做错了什么?