问题标签 [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 开发套件进行身份验证的软件是什么?
上周,我们三个人花了两天时间尝试使用Happstack构建一个简单的 Web 应用程序。我们关注的一个问题是身份验证,似乎曾经有一个Happstack.Auth
看起来非常好的包。不幸的是,原来的项目似乎已经被放弃了,虽然有一个分叉,但我们无法构建分叉。
人们建议在 Happstack 中进行身份验证的替代方法是什么?happstack-auth
可行吗?
haskell - 任何 Haskell Web 服务器都可以运行 Python CGI 应用程序吗?
我需要一个使用 Haskell 开发的 Web 服务器来运行旧的 Python CGI 应用程序。
任何建议表示赞赏!
ruby-on-rails - 为什么网络路由并不总是自动化的?
手动网络路由的目的是什么?为什么不是每个人都自动在 URL 和模块/方法/函数名称之间进行映射?
我认为您可以从全自动映射开始,然后您可以使用 Apache mod_rewrite 或 mod_redirect 或其他任何东西,如果您想以一种会更改 URL 的方式进行重构,而不会破坏现有的 URL。
haskell - 如何退出 Hackstack Server App?
我正在创建一个 Happstack 服务器应用程序,但我不知道如何结束应用程序。
如果我有:
我可以运行它,我可以用 CTRL+C 杀死应用程序(linux),但最后一次打印永远不会执行。如何优雅地退出 Happstack?这让我很困扰,因为我注意到如果我没有从应用程序中正确退出,则不会生成事件日志。
更新:
该应用程序在顶部主要使用 Dyre。
haskell - HappStack 事件文件
我正在开发一款游戏,并选择 Happstack 作为持久性部分。我觉得它很容易使用,我做了一个简单的例子让自己理解它:
每次我“测试”它时,它都会创建一个 event.file。然后我“检查点”并创建一个新的检查点文件,这对我来说没问题,问题是旧的事件文件不断增长!我手动删除每个文件(最后一个检查点和当前文件除外)。happstack 中是否缺少一些代码来执行“删除旧事物”?
haskell - 在 Happstack 中捕获异常
我遇到了一个异常(在空列表上使用 Prelude.head),之后所有的 http 请求都返回了 502/505 异常(并且 happstack 应用程序打印“HTTP 请求失败:发送资源消失(断管)”标准输出)。
我的问题是:在 Happstack 中控制异常的最佳实践是什么?我应该使用 simpleHTTP 以外的其他东西还是简单地在控制器函数上使用 Control.Exception.catch?
它目前看起来类似于速成课程中的示例:
haskell - 如何在 Happstack 中创建数据库单子堆栈?
我想创建一个可以大量访问数据库的 Happstack 应用程序。我认为底部带有 IO 的 Monad 堆栈和顶部的类似数据库写入的 monad(中间带有日志写入器)将有助于在每次访问中具有清晰的功能,例如:
和:
但是我对 Monad 和 Monad Transformers 知之甚少(我将这个问题视为学习它的练习),并且我不知道如何开始创建 Database Monad,如何将 IO 从 happstack 提升到 Database Stack, ...ETC。
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:
happstack - 找到一个有效的 Happstack / Heist 示例
我想开始使用 Haskell 来构建网站,并认为 Happstack、Heist 和 Web-routes 将是一个很好的组合。
不幸的是,我找不到工作代码。速成课程示例无法编译。
我下载了TemplateHeist.hs文件,编译它给了我这些错误。
我已经让 Happstack 与 Blaze 和 Web 路由一起工作。我一定错过了一些“明显”的东西,但我不确定从哪里开始寻找它。
haskell - Ctrl+C 在 Windows Haskell/happstack 中不起作用
按 Ctrl+C(或 +Z 或其他任何东西) - 不会终止 windows 命令行(或 power shell)中的 haskell 应用程序(或happstack应用程序)。
目前我必须关闭窗口,然后打开一个新的命令行/power-shell 窗口,导航到应用程序位置并使用runhaskell再次启动它。每当代码更改时,是否有更简单的方法使应用程序“自动重新加载”?
还是我做错了什么?