标签: yesod

Yesod的图表解决方案

目前我正在使用hs-gchart构建图表来嵌入我的Web应用程序中的图表.我已经看到,tkyprof使用d3.js.还有什么其他图表解决方案与yesod一起使用?这些解决方案的优缺点是什么?

charts haskell yesod

8
推荐指数
1
解决办法
905
查看次数

在Yesod项目中包含静态javascript的位置?

我有一个本地静态Javascript文件,我想包括在整个网站范围内.我希望将所有静态Javascript文件合并到一个文件中,但我想分别管理这些文件.静态Javascript文件应该包含在Yesod项目中的哪个位置?

javascript yesod

8
推荐指数
1
解决办法
1222
查看次数

Haskell/Persistent-Sqlite:"没有(Control.Monad.Trans.Resource.MonadResource IO)的实例"

我一直试图想出一种简单直观的方法来使用Haskell数据库.我从Yesod书中获取了这些代码并试图将其清理干净,以便更容易理解和使用.

{-# LANGUAGE QuasiQuotes, TemplateHaskell, TypeFamilies, OverloadedStrings #-}
{-# LANGUAGE GADTs, FlexibleContexts #-}

import Database.Persist
import Database.Persist.Sqlite (withSqliteConn, runSqlConn, runMigration)
import Database.Persist.TH (share, mkPersist, mkMigrate, sqlSettings, persist)

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persist|
Person                              -- Table name
    name String                     -- String value
    age Int Maybe                   -- Numerical value
|]

updateDB x y = withSqliteConn "data.db" $ runSqlConn $ do
    runMigration migrateAll         -- Creates "Person" table if one doesn't exist
    insert $ Person x $ Just y      -- Inserts …
Run Code Online (Sandbox Code Playgroud)

database haskell yesod

8
推荐指数
1
解决办法
1060
查看次数

在Persistent Yesod中做多对多的最佳方法是什么?

所以我的/ config/models看起来像这样.

Person
  name Text
Car
  name Text
PersonCar
  personId PersionId eq
  carId CarId eq
  UniquePersonCar personId carId
Run Code Online (Sandbox Code Playgroud)

假设数据库中的输入Person "Batman" Person "Superman" Car "SUV" Car "Ford"分别是.

我正在这样做,以便在我的处理程序中将它们链接起来.

runDB $ do
  person <- selectFirst [PersonName ==. "Batman"] []
  car    <- selectFirst [Carname ==. "SUV"] []
  let Entity personId _ = case person of
                            Just info -> infor
                            Nothing -> error "no such Person"
  let Entity carId _ = case car of
                            Just info -> infor
                            Nothing -> error "no …
Run Code Online (Sandbox Code Playgroud)

haskell persistent yesod

8
推荐指数
1
解决办法
779
查看次数

从yesod处理程序返回JSON

我正在尝试从Yesod的处理程序中编写一个最简单的JSON响应,但有一些非常愚蠢的错误(显然).我的处理程序代码如下:

-- HelloYesod/Handler/Echo.hs
module Handler.Echo where

import           Data.Aeson      (object, (.=))
import qualified Data.Aeson      as J
import           Data.Text       (pack)
import           Import
import           Yesod.Core.Json (returnJson)

getEchoR :: String -> Handler RepJson
getEchoR theText = do
  let json = object $ ["data" .= "val"]
  return json
Run Code Online (Sandbox Code Playgroud)

错误是这样的:

Handler/Echo.hs:12:10:
    Couldn't match expected type `RepJson' with actual type `Value'
    In the first argument of `return', namely `json'
    In a stmt of a 'do' block: return json
    In the expression:
      do { let json = object …
Run Code Online (Sandbox Code Playgroud)

api json haskell yesod

8
推荐指数
1
解决办法
1383
查看次数

如何在Elm Client和Haskell(Yesod)服务器之间发送JSON

我正在尝试从客户端到服务器进行基本的JSON通信,使用以下Elm代码:

import open Http

result res = case res of
    Success a -> a
    Waiting -> "Waiting"
    Failure n a-> "Failure " ++ (show n) ++ " " ++ (show a)


main =   lift asText <| lift (show . result) <|  send <| constant  <| post "http://localhost:3000" "{foo : true}"
Run Code Online (Sandbox Code Playgroud)

服务器完全如Yesod书的这一部分所示.

但是,当我运行请求时,我得到了输出

"\"Failure 0 []\""
Run Code Online (Sandbox Code Playgroud)

有没有人知道我要做些什么来让Elm客户端与Yesod服务器正常通信?我尝试过一个Python客户端,请求工作得很好.同样,在Yesod网站上有几个成功的Http请求的例子,所以我相信两个库都正常工作,但我使用它们是错误的.

更新:问题是客户端.我能够使用Chrome并禁用安全选项,并且不对Yesod进行任何更改.我会寻找一种解决方法,但这至少足以让我的开发继续下去.

ajax json haskell yesod elm

8
推荐指数
2
解决办法
2336
查看次数

如何在持久化中存储代数数据类型

对于像这样的数据类型

data Tree = Node String Tree Tree
          | Leaf String
Run Code Online (Sandbox Code Playgroud)

和真实的数据一样

my_tree = (Node "first node" (Leaf "leaf") (Node "second node" (Leaf "leaf") (Leaf "leaf")))
Run Code Online (Sandbox Code Playgroud)

如何使用持久性将其存储到数据库中,具体如何执行"OR"部分?

我试过像这样定义模型

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
    Tree
        value String
        leftTree Leaf
        rightTree Leaf
        deriving Show
    Leaf
        value String
        deriving Show
|]
Run Code Online (Sandbox Code Playgroud)

递归结构将作为json字符串自动存储在一行中的列中,这非常好.但是我们如何或者可以在持久模型中定义"OR"结构?

haskell persistent yesod

8
推荐指数
1
解决办法
891
查看次数

使用Yesod验证JSON请求的最佳实践

我正在使用Yesod编写JSON RESTFul服务,需要实现请求验证.因为服务接受JSON,我不能使用Yesod.Form.我喜欢scalaz验证使用的方式,但我没有在Haskell中找到这样的方法.

是否有最佳实践来实现验证,允许回答结构化错误消息,如下所示:

请求

{
    "birthDate": "2017.07.14",
    "count": "three",
    "kind": "baz",
    "entity": {
        "id": -1
    }
}
Run Code Online (Sandbox Code Playgroud)

响应

{
    "errors": {
        "birthDate": "Date should be less than 2014.05.25", // current date
        "count": "should be a number",
        "kind": "must be one of [foo, bar]",
        "entity": {
            "id": "Entity with id -1 not found"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

rest json haskell yesod

8
推荐指数
2
解决办法
434
查看次数

Haskell小CPU泄漏

我使用GHC 7.8.3和Yesod 1.4.9遇到了小的CPU泄漏.

当我运行我的网站time并在1分钟后停止它(Ctrl + C)而没有做任何事情(只运行,根本没有请求),它消耗1秒.它占CPU的约1.7%.

$ time mysite
^C

real    1m0.226s
user    0m1.024s
sys     0m0.060s
Run Code Online (Sandbox Code Playgroud)

如果我禁用空闲垃圾收集器,它会下降到0.35秒(占CPU的0.6%).虽然它更好,但它仍然消耗CPU而不做任何事情.

$ time mysite +RTS -I0 # Disable idle GC
^C

real    1m0.519s
user    0m0.352s
sys     0m0.064s

$ time mysite +RTS -I0
^C

real    4m0.676s
user    0m0.888s
sys     0m0.468s

$ time mysite +RTS -I0
^C

real    7m28.282s
user    0m1.452s
sys     0m0.976s
Run Code Online (Sandbox Code Playgroud)

cat无限期等待标准输入上的某些命令相比:

$ time cat
^C

real    1m1.349s
user    0m0.000s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

Haskell中还有其他东西在后台消耗CPU吗?

这是Yesod的漏洞吗?

或者这是我在我的程序中完成的事情?(我只添加了处理函数,我不做并行计算)

编辑2015-05-31 19:25

这是执行-s标志: …

haskell cpu-usage yesod

8
推荐指数
1
解决办法
279
查看次数

X {..} < - getYesod表示法

我在Yesod Web应用程序的示例代码中看到了这种表示法,并且不知道它意味着什么:

getHomeR :: Handler Html
getHomeR = do
    App {..} <- getYesod
Run Code Online (Sandbox Code Playgroud)

这个语法是什么意思?

我也看到了以下内容,我假设相关的符号:

getHomeR :: Handler Html
getHomeR = do
    App x <- getYesod
Run Code Online (Sandbox Code Playgroud)

即一些标识符x代替神秘的{..}.

haskell yesod

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

标签 统计

yesod ×10

haskell ×9

json ×3

persistent ×2

ajax ×1

api ×1

charts ×1

cpu-usage ×1

database ×1

elm ×1

javascript ×1

rest ×1