小编Maa*_*ten的帖子

yesod持久postgresql复杂记录

我使用persistent来保存以下记录(时间是UTCTime).

type Price = Int
type Volume = Int

share [mkPersist sqlSettings, mkMigrate "migrateBook"] 
  [persistLowerCase|
    Level
      limit     Price
      volumes   [Volume]
      deriving Show Read Eq

    Book
      time      Time
      asks      [Level]
      bids      [Level]
      deriving Show Read Eq
  |]
Run Code Online (Sandbox Code Playgroud)

当我迁移结构时,我得到一个Book表:

CREATE TABLE book
(
 id serial NOT NULL,
 "time" timestamp without time zone NOT NULL,
 asks character varying NOT NULL,
 bids character varying NOT NULL,
 CONSTRAINT book_pkey PRIMARY KEY (id )
 )
Run Code Online (Sandbox Code Playgroud)

和一个表级别:

 CREATE TABLE level
 (
   id serial NOT NULL,
   "limit" double …
Run Code Online (Sandbox Code Playgroud)

database orm haskell persistent yesod

16
推荐指数
1
解决办法
731
查看次数

使用Boost.Asio和OpenSSL的HTTPS请求

我正在尝试从我的C++应用程序中读取https://mtgox.com/api/0/data/ticker.php上的股票代码.我使用Boost.Asio和OpenSSL,因为该服务需要HTTPS.

提升版:1.47.0

OpenSSL:1.0.0d [2011年2月8日] Win32

适用于申请; 我从http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/ssl/client.cpp 中获取示例,开始并按如下方式对其进行修改:

这是我想要连接的地方:

boost::asio::ip::tcp::resolver::query query("mtgox.com", "443");
Run Code Online (Sandbox Code Playgroud)

我将验证设置为none,否则握手失败.我不确定这是否是mtgox的问题,或者这个实现是非常严格的,因为当我将证书打印到屏幕上时它看起来是合法的(当访问自动收报机页面时,chrome没有问题).

socket_.set_verify_mode(boost::asio::ssl::context::verify_none);
Run Code Online (Sandbox Code Playgroud)

这是我发送的请求:

std::stringstream request_;

request_ << "GET /api/0/data/ticker.php HTTP/1.1\r\n";
request_ << "Host: mtgox.com\r\n";
request_ << "Accept-Encoding: *\r\n";
request_ << "\r\n";

boost::asio::async_write(socket_, boost::asio::buffer(request_.str()), boost::bind(&client::handle_write, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
Run Code Online (Sandbox Code Playgroud)

(完整代码:http://pastebin.com/zRTTqZVe)

我遇到以下错误:

Connection OK!
Verifying:
/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
Sending request: 
GET /api/0/data/ticker.php HTTP 1.1
Host: mtgox.com
Accept-Encoding: *

Sending request OK!

Read failed: An existing connection was forcibly closed by …
Run Code Online (Sandbox Code Playgroud)

c++ https boost openssl boost-asio

14
推荐指数
1
解决办法
2万
查看次数

Haskell Haddock乳胶方程式在评论中

我想在我的源代码中使用乳胶表示法来表示方程式.例如,我会在一些haskell源文件Equations.hs中写下以下注释:

-- | $v = \frac{dx}{dt}$
Run Code Online (Sandbox Code Playgroud)

doc目录中,这将由Equations.tex中的haddock呈现为:

{\char '44}v = frac{\char '173}dx{\char '175}{\char '173}dt{\char '175}{\char '44}
Run Code Online (Sandbox Code Playgroud)

我在Haddock的乳胶后端的源代码中找到了这个函数,它取代了乳胶格式化中使用的许多字符:

latexMunge :: Char -> String -> String
...
latexMunge '$'  s = "{\\char '44}" ++ s
Run Code Online (Sandbox Code Playgroud)

是否有任何现有的功能允许我绕过这个并在评论中插入乳胶方程式?

documentation latex haskell haddock

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

适用于记录的构造函数

我想一般为haskell记录创建应用程序构造函数,以便为记录创建解析器.

考虑记录:

data Record = Record {i :: Int, f :: Float}
Run Code Online (Sandbox Code Playgroud)

我想要的构造函数:

Record <$> pInt <*> pFloat
Run Code Online (Sandbox Code Playgroud)

给出了基本类型的解析器:

class Parseable a where
  getParser :: Parser a

instance Parseable Int where
  getParser = pInt

instance Parseable Float where
  getParser = pFloat
Run Code Online (Sandbox Code Playgroud)

有没有可以做到这一点的图书馆?是否可以为记录定义getParser?提前致谢.

haskell applicative

5
推荐指数
1
解决办法
1189
查看次数

如何实现多个多对多关系?

我的模型中有几个多对多关系,包括客户、订阅、课程:

  1. 客户端有零个或多个订阅
  2. 订阅允许客户访问一门或多门课程

我已经有了三个表,列出了所有客户、订阅计划和课程。在无需复制大量数据的情况下实现多对多关系的最佳方法是什么?

database database-design many-to-many

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