标签: yesod

GHC cabal安装小区失败,出现了一个模糊的错误

我试图在webfaction共享服务器上安装一个Hamlet,这样我就可以在那里编译和运行我的Web应用程序.我正在使用Yesod来开发应用程序.

我设法从源代码和bootstrapped cabal安装编译GHC 7.接下来我做了cabal install hamlet并期望它能够工作.没运气!

我从cabal/GHC收到以下奇怪的错误消息.任何人都可以帮我吗?

$ cabal install hamlet                       Resolving dependencies...
Configuring hamlet-0.8.2...
Preprocessing library hamlet-0.8.2...
Building hamlet-0.8.2...
[ 1 of 14] Compiling Text.MkSizeType  ( Text/MkSizeType.hs, dist/build/Text/MkSizeType.o )
[ 2 of 14] Compiling Text.Shakespeare ( Text/Shakespeare.hs, dist/build/Text/Shakespeare.o )
[ 3 of 14] Compiling Text.Hamlet.Parse ( Text/Hamlet/Parse.hs, dist/build/Text/Hamlet/Parse.o )

Text/Hamlet/Parse.hs:113:13:
    Warning: A do-notation statement discarded a result of type String.
         Suppress this warning by saying "_ <- ($) try string "!--"",
         or by using the flag -fno-warn-unused-do-bind …
Run Code Online (Sandbox Code Playgroud)

haskell cabal yesod hamlet

7
推荐指数
1
解决办法
500
查看次数

验证跨越多个字段

我正在尝试使用应用程序表单,我一直在想如何实现一个验证依赖于其他字段的字段的表单.例如,注册表单有passwordconfirm_password字段,我想验证password == confirm_password.

我可以在表单运行后在处理程序中完成,但这意味着丢失错误消息.

编辑:忘了提,我主要使用Yesods的应用形式,但它们似乎非常接近消化函数

haskell yesod digestive-functors

7
推荐指数
1
解决办法
302
查看次数

链接到Yesod中没有Haskell标识符的静态文件

给定一个默认的Yesod脚手架,通过将上传的文件移动到static目录中实现文件上传,如何链接到静态目录中的文件?对于普通的静态文件,staticFiles拼接会生成一个我可以引用的标识符,但对于用户上传的文件显然我不能对这些标识符进行硬编码.我可以通过手动使用#{}拼接来做到这一点,但我希望可能有更多类型安全的东西,即使唯一可检查的组件是我static/正确使用了前缀.

haskell yesod

7
推荐指数
1
解决办法
455
查看次数

yesod-bin缺少(未知)依赖?

如何安装yesod可执行文件?

> cabal install yesod-bin
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: yesod-bin-1.2.0
Run Code Online (Sandbox Code Playgroud)

所以它并没有告诉我缺少的实际依赖.

以前的一切都很好.我将我的linux操作系统更新为Suse12.3,然后yesod抱怨了几十个破坏的依赖项.所以我卸载了ghc,删除.ghc.cabal在我的主目录中,重新安装了haskell-platform,做了cabal update然后cabal install yesod-platform,这一切都很顺利.注意到缺少yesod二进制文件,我发现了关于Yesod 1.2发布的博客文章,并尝试安装yesod-bin,现在失败但没有有用的错误消息.即使增加详细程度也不会向我提供任何有用的信息:

> ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.4.2

> cabal --verbose=3 install yesod-bin 
searching for ghc in path.
found ghc at /usr/bin/ghc
("/usr/bin/ghc",["--numeric-version"])
/usr/bin/ghc is version 7.4.2
looking for tool "ghc-pkg" near compiler in /usr/bin
found ghc-pkg in /usr/bin/ghc-pkg
("/usr/bin/ghc-pkg",["--version"])
/usr/bin/ghc-pkg is version …
Run Code Online (Sandbox Code Playgroud)

haskell cabal yesod

7
推荐指数
1
解决办法
642
查看次数

在Yesod长期投票

我可以在Yesod或任何其他具有可比数据库功能的Haskell Web框架中进行长时间轮询吗?

确切地说,我想延迟HTTP响应,直到发生一些有趣的事情.还应该有一个超时,在此之后客户端将被提供响应,说"没有发生",然后客户端将发出相同的请求.

为了让生活更加复杂,我想到的应用程序是通过HTTP/HTML5和MIDP客户端的一个非常紧凑的UDP协议提供所有的东西.来自任一协议的事件都可以在任一协议中释放响应

TIA,阿德里安.

haskell long-polling happstack yesod haskell-snap-framework

7
推荐指数
1
解决办法
671
查看次数

哪个Websockets库与Yesod一起使用?

我想知道是否有人可以解释Haskell websocket库之间的差异以及它们如何与Yesod一起工作.

我要介绍的两个主要示例是Network.Websocketswai websockets包的教程.

我无法为wai包找到一个好的例子或教程.既然yesod使用wai,它对简单的网络有什么优势呢?它是否意味着用于代替Network.Websockets或与Network.Websockets结合使用?

我见过一些例子,但我无法理解他们如何真正融入yesod环境.如果有人可以解释websockets如何与处理程序和IO相关联,那么在Yesod中,这将是很好的.

注意:我已经看到了这个问题这个问题,但我无法理解如何应用它们,因为它们实际上没有解释websockets适合Yesod的位置.

haskell websocket yesod haskell-wai

7
推荐指数
1
解决办法
1113
查看次数

Yesod无会话身份验证

我使用Yesod为基于Angular的应用程序构建一个纯REST后端.此应用程序将与CDN分开托管,并且需要连接到Yesod api以及其他一些应用程序.有没有办法让Yesod接受Bearer令牌而不是使用cookie会话进行身份验证?

authentication haskell basic-authentication yesod bearer-token

7
推荐指数
1
解决办法
807
查看次数

如何在Persistent中存储Enum ADT

如何在Persistent中存储枚举?

假设您有数据State = Ready | 尚未准备好 错误

如何将其存储在Persistent数据库中?

haskell persistent yesod

7
推荐指数
2
解决办法
665
查看次数

如何处理不完整的JSON/Record类型(IE缺少必填字段,我稍后会填写)?

编辑:对于有类似疾病的人,我发现这与"可扩展记录问题"有关,我将亲自研究这些问题.


编辑2:我已经开始通过非常明确地了解数据类型以及每个语义数据单元具有多种数据类型来解决这个问题(几周后).例如,如果数据库包含一个X,我的代码有一个XAction用于表示我想用a做的事情X,以及XResponse用于将Xs 中继到http客户端的代码.然后我需要构建支持代码来在实例之间穿梭.不理想,但是,我喜欢它是明确的,并且希望当我的模型结晶时,它不应该真的需要太多保持,并且应该非常可靠.


我不确定解决这个问题的正确抽象级别是什么(即记录?还是Yesod?)所以我将只列出一个简单的案例.

简单案例/ TL; DR

我想将请求主体解码为一个类型

data Comment = Comment {userid :: ..., comment :: ...}

但实际上我不希望请求体包含userid,服务器将根据其Auth Headers(或者我想要将数据默认填充字段的任何地方)提供.

所以他们实际上传给我的是:

data SimpleComment = SimpleComment {comment :: ...} deriving (Generic, FromJSON)

我把它变成了一个Comment.但同时保持两种几乎相同的类型是麻烦,而不是干.

我该如何解决这个问题?


问题详情

我有一个记录类型:

data Comment = Comment {userid :: ..., comment :: ...}

我有一个POST路线:

postCommentR :: Handler Value
postCommentR = do
  c <- requireJsonBody :: (Handler Comment)
  insertedComment <- runDB ...
  returnJson insertedComment
Run Code Online (Sandbox Code Playgroud)

请注意,Route要求用户提供 …

haskell yesod aeson

7
推荐指数
1
解决办法
171
查看次数

Yesod.Auth - 如何要求第二因素身份验证?

我目前正在Yesod 1.4.5中构建一个个人网站,目前我正在实施身份验证.使用用户名和密码进行身份验证非常简单 - 我使用Yesod.Auth.HashDB - 但由于我非常注重安全性,所以我还想要第二个因素.

Yesod.Auth是否支持多因素身份验证?它肯定支持多个auth插件,但据我所知,这些插件似乎被视为替代身份验证方法而不是其他强制身份验证因素.可以通过某种方式组合auth插件,在HashDB周围"包装"MFA插件吗?在消息来源中似乎没有这方面的功能.

如果这确实不受支持,我如何才能从外部扩展Yesod.Auth以添加MFA?扩展有状态的Haskell包很难,我可以使用一些提示.

理想情况下,我想支持U2F安全密钥和TOTP代码,但只支持后者仍然会非常好.

authentication haskell one-time-password yesod two-factor-authentication

7
推荐指数
0
解决办法
162
查看次数