小编sva*_*lek的帖子

为什么Yesod中没有ToJSON/FromJSON的持久类型实例?

这并不是难写的生成类型的toJSON/FromJSON情况,但仍然,当你生成代码,你可以扔在?或者有一种简单的方法可以让这种情况成为Yesod用户吗?(我没有深入研究TH是如何工作的......)

更新: 好的,我喜欢这个建议但是,说我的持久类型是用户.如果我使用

$(deriveJSON id ''User)
Run Code Online (Sandbox Code Playgroud)

它产生了

  Exception when trying to run compile-time code:
  Data.Aeson.TH.withType: Unsupported type: TySynD Model.User [] (AppT (ConT Model.UserGeneric) (ConT Database.Persist.GenericSql.Raw.SqlPersist))
  Code: deriveJSON (id) 'User
Run Code Online (Sandbox Code Playgroud)

显然是因为它是别名.但

$(deriveJSON id ''UserGeneric)
Run Code Online (Sandbox Code Playgroud)

产量

Kind mis-match
The first argument of `UserGeneric' should have kind `(* -> *)
                                                      -> *
                                                      -> *',
but `backend[i5XB]' has kind `*'
Run Code Online (Sandbox Code Playgroud)

我可能仍然有错误的类型,但我找不到Persistent生成什么来获得正确的咒语.

haskell yesod aeson

6
推荐指数
2
解决办法
1658
查看次数

使用crypto.generateValues()生成0到1的随机数

看起来Math.random()生成范围为[0,1)的64位浮点数,而新的crypto.getRandomValues()API仅返回整数.使用此API在[0,1)中生成数字的理想方法是什么?

这似乎有效,但似乎不是最理想的:

ints = new Uint32Array(2)
window.crypto.getRandomValues(ints)
return ints[0] / 0xffffffff * ints[1] / 0xffffffff
Run Code Online (Sandbox Code Playgroud)

编辑:澄清一下,我试图产生比Math.random()更好的结果.根据我对浮点的理解,应该可以获得52位随机性的完全随机分数.(?)

编辑2:为了给出更多背景知识,我不是要尝试以密码方式安全做任何事情,但有很多关于Math.random()实施不当的轶事故事(例如http://devoluk.com/google-chrome -math-random-issue.html)所以如果有更好的选择,我想使用它.

javascript random

6
推荐指数
1
解决办法
1249
查看次数

可以在Yesod的消息文件中添加注释或HTML标签吗?

Yesod的内置i18n消息文件非常好,但我注意到两个问题:

  1. 它似乎不允许评论.这些对于为翻译提供翻译(或提醒自己)的上下文非常有帮助.我错过了评论语法吗?
  2. <和>字符是HTML转义的.这可以防止将诸如<em>之类的HTML的简单位添加到消息中.除了在.hs文件中编写消息之外,还有一种解决方法吗?

谢谢你的任何建议!

haskell internationalization yesod

4
推荐指数
1
解决办法
190
查看次数