我已经在我的生产Ubuntu服务器上安装了Snap/Haskell(在EC2上),并检出了我的项目 - 但我该如何运行它?
我的意思是,在本地,我从命令行运行它:
project-name -p 8000
Run Code Online (Sandbox Code Playgroud)
snap是否带有它自己的web服务器(它看起来像它),如果是这样,我如何配置它作为某种守护进程运行?
有小费吗?
编辑2:
在维基上,他们说:
snap-server是一个HTTP服务器库,支持snap-core中定义的接口.
在这里,关于"你的haskell网络代码的部署/后端选项"的haskell wiki说Snap:
包括自己的服务器.请参阅Web /框架
但如何?我如何运行它自己的服务器?如果我对编程感兴趣,为什么我必须知道该死的东西的部署...
编辑:相关问题:部署使用Snap Framework的Haskell代码
我似乎无法在我的Mac上安装一些Haskell软件包(10.6.8).我第一次尝试了哈普斯塔克,它失败了,然后我尝试了Snap.
有时当我运行ghci时,我会遇到分段错误.
其他时候它的工作原理如下:
GHCi, version 7.4.2: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>
Run Code Online (Sandbox Code Playgroud)
在尝试获取Snap时:
....
....
....
Loading package vector-0.10.0.1 ... linking ... done.
Loading package zlib-0.5.4.0 ... linking ... done.
Loading package zlib-bindings-0.1.1.3 ... linking ... done.
Loading package zlib-enum-0.2.3 ... linking ... done.
Loading package snap-core-0.9.3.1 ... linking ... done.
Loading package snap-server-0.9.3.3 ... linking ... done.
Loading package …Run Code Online (Sandbox Code Playgroud) 我知道它很少使用,但是可以在Snap中访问客户端证书吗?
如果没有,是否可以使用不同的Web堆栈?
任何人都可以向我推荐关于Snap或书籍的严肃教程吗?你能分享一下你对Snap的印象吗?我有网络编程的经验,但我开始学习Haskell,它很棒,所以我想用我最喜欢的语言写网站?
我犯了通过 Snap 安装 Docker 的错误...一旦我意识到 snap 没有在我的工作目录(在不同分区上)运行的权限,我将其删除。现在我通过apt-get安装后无法使用docker。
请帮忙。
我已经完成了,sudo snap remove docker但是当我sudo apt install docker运行 via 时docker,我得到bash: /snap/bin/docker: No such file or directory
我有两个关于RPC调用的相关问题Yesod/Snap/Servant:
假设我在服务器上有一个函数,用Haskell编写,由GHC编译:
add x y = x+y+42
怎么能:
GHCJS),以类型安全的方式做所有这些吗?
例如,我想在客户端上写这样的东西:
main= putStrLn $ show $ add 2 3
Run Code Online (Sandbox Code Playgroud)
这样add函数就可以在服务器上执行了.
Yesod/Snap/Servant在客户端上使用服务器和GHCJS 进行此操作的最简单方法是什么?
2)同样,我想写一个"功能":
getPhaseOfMoon :: IO Phase它在服务器上运行,我想以getPhaseOfMoon类型安全的方式从客户端调用.
所以我可以在客户端上写这个:
main= do
p<-getPhaseOfMoon
putStrLn $ show p
return ()
Run Code Online (Sandbox Code Playgroud)
Phase客户端我怎么能用Yesod/Snap/Servant(服务器)+ GHCJS(客户端)做到这一点?
我一直在尝试使用安装几个应用程序,sudo snap install <nameofapp>
但是每当我尝试这样做时,我总是会遇到相同的错误:
error: cannot communicate with server: Post http://localhost/v2/snaps/standard-notes: dial unix /run/snapd.socket: connect: no such file or directory
我在 MXLINUX 请帮忙
我有一个基于Haskell的Web服务,它执行一些计算,对于某些输入可能需要很长时间才能完成.("真的很长"这里意味着超过一分钟)
因为执行该计算会占用服务器上所有可用的CPU,所以我将传入的请求放在一个队列中(好吧,实际上是一个堆栈,原因与典型的客户端有关,但除了这一点之外)当它们到达并为它们提供服务时当前正在运行的计算结束.
我的问题是,客户端并不总是等待足够长的时间,有时会超时,断开连接并尝试使用不同的服务器(好吧,他们再次尝试并点击elb,通常会获得不同的实例).此外,由于外部因素,Web客户端偶尔要求的计算将会过时,Web客户端将被终止.
在那些情况下,我真的希望能够在我将下一个请求从堆栈中拉出并开始(昂贵的)计算之前检测到Web客户端已经消失.不幸的是,我使用snap的经验让我相信在该框架中无法询问"客户端的TCP连接是否仍然连接?" 我还没有找到任何涵盖"客户端断开连接"案例的其他Web框架的文档.
那么是否有一个Haskell Web框架,可以很容易地检测Web客户端是否已断开连接?或者失败了,是否有一个至少使它成为可能?
(我知道在所有情况下都可能无法绝对确定TCP客户端是否仍在那里而不向另一端发送数据;但是,当客户端实际向服务器发送RST数据包而服务器的框架没有让应用程序代码确定连接已经消失,这是一个问题)
顺便说一下,虽然有人可能怀疑warp的 onClose处理程序会让你这样做,但只有当响应准备好并写入客户端时才会触发,因此作为中止正在进行的计算的方法是无用的.似乎也无法访问已接受的套接字以便设置SO_KEEPALIVE或类似.(有一些方法可以访问初始侦听套接字,但不是接受的套接字)
我正在努力将一个站点从PHP移植到Snap w/Heist.我已经将一些更简单的形式移植到成功使用Digestive Functors,但现在我必须做一些需要使用子表单的棘手的形式.
此应用程序管理为零售商店生产传单,因此需要完成的任务之一是添加广告尺寸并在打印的传单上定义其物理尺寸.尺寸将根据页面类型(可由传单所有者配置)及其方向(只能由管理员控制)而有所不同.

这种形式保证至少有3个单元格,最有可能有9个单元格(如上图所示的PHP版本),但理论上可以有无限数量.
这是我到目前为止维度子表单的内容:
data AdDimensions = AdDimensions
{ sizeId :: Int64
, layoutId :: Int64
, dimensions :: Maybe String
}
adDimensionsForm :: Monad m => AdDimensions -> Form Text m AdDimensions
adDimensionsForm d = AdDimensions
<$> "size_id" .: stringRead "Must be a number" (Just $ sizeId d)
<*> "layout_id" .: stringRead "Must be a number" (Just $ layoutId d)
<*> "dimensions" .: opionalString (dimensions d)
Run Code Online (Sandbox Code Playgroud)
表单定义感觉不太正确(也许我在这里完全错误的想法?). AdDimensions.dimensions应该是a Maybe String,因为在运行查询时从数据库返回时它将为null,以获取新广告大小的size_id/layout_id的所有可能组合的列表,但是从类似查询中它不会为null将在创建编辑表单时运行.字段本身是必需的(在数据库中ad_dimensions.dimensions设置not null). …