小编Lan*_*nbo的帖子

如何使用Data.Binary存储递归数据类型

Data.Binary是很棒的.我只有一个问题.我们假设我有一个这样的数据类型:

import Data.Binary

data Ref = Ref {
    refName :: String,
    refRefs :: [(String, Ref)]
}

instance Binary Ref where
    put a = put (refName a) >> put (refRefs a)
    get = liftM2 Ref get get
Run Code Online (Sandbox Code Playgroud)

很容易看出这是一个递归数据类型,因为Haskell是懒惰的.由于Haskell作为一种语言既不使用引用也不使用指针,而是按原样呈现数据,我不确定如何保存它.我有强烈的迹象表明,这种天真的责备将导致无限的字节串......

那么如何安全地保存这种类型呢?

binary haskell recursive-datastructures bytestring

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

从简单的XML获取数据

我试图使用HXT从6行的XML输入中提取一些数据.我也希望保留HXT,因为Curl集成,因为我有其他XML文件有数千行,稍后.

我的XML看起来像这样:

<?xml version = "1.0" encoding = "UTF-8"?>
<find>
    <set_number>228461</set_number>
    <no_records>000000008</no_records>
    <no_entries>000000008</no_entries>
</find>
Run Code Online (Sandbox Code Playgroud)

我一直试图聚在一起解析它.不幸的是,HXT的Wiki页面并没有太大的帮助(或者我只是忽略了一些东西).

data FindResult = FindResult {
        resultSetNumber :: String,
        resultNoRecords :: Int,
        resultNoEntries :: Int
    } deriving (Eq, Show)

resultParser :: ArrowXml a => a XmlTree FindResult
resultParser = hasName "find" >>> getChildren >>> proc x -> do
    setNumber <- isElem >>> hasName "set_number" >>> getChildren >>> getText -< x
    noRecords <- isElem >>> hasName "no_records" >>> getChildren >>> getText -< x
    noEntries <- isElem >>> …
Run Code Online (Sandbox Code Playgroud)

xml haskell arrows hxt

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

Flex/Bison 目标不存在

我的项目中有一个子目录结构,其中有两个 cmake 文件。其中之一应该是一个编译器,使用flex和bison,但是cmake给了我一个我不太明白的错误:

\n\n
cmake_minimum_required(VERSION 2.8)\n\nproject(leaf)\n\nadd_subdirectory(leafc)\n
Run Code Online (Sandbox Code Playgroud)\n\n

并在目录中leafc

\n\n
find_package(BISON)\nfind_package(FLEX)\n\nBISON_TARGET(LeafParser ${CMAKE_CURRENT_SOURCE_DIR}/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)\nFLEX_TARGET(LeafScanner ${CMAKE_CURRENT_SOURCE_DIR}/lexer.l  ${CMAKE_CURRENT_BIANRY_DIR}/lexer.cpp)\nADD_FLEX_BISON_DEPENDENCY(LeafParser LeafScanner)\n\ninclude_directories(${CMAKE_CURRENT_BINARY_DIR})\nadd_executable(leafc main.cpp ${BISON_LeafParser_OUTPUTS} ${FLEX_LeafScanner_OUTPUTS})\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我在尝试时收到此错误cmake .

\n\n
CMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:132 (MESSAGE):\n  Flex target `LeafParser' does not exists.\nCall Stack (most recent call first):\n  leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY)\n\nCMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:136 (MESSAGE):\n  Bison target `LeafScanner' does not exists.\nCall Stack (most recent call first):\n  leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY)\n\nCMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:139 (SET_SOURCE_FILES_PROPERTIES):\n  set_source_files_properties called with incorrect number of arguments.\nCall Stack (most recent call first):\n  leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY)\n\n-- Configuring incomplete, …
Run Code Online (Sandbox Code Playgroud)

cmake

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

在now.js/socket.io聊天中增强安全性

nowjssocket.io聊天是您可以使用它们执行的最简单的练习之一.我想使用nowjs的Group对象实现多房间聊天(具有非固定数量的房间和登录用户).

我还没有直接使用过WebSockets,而且我想知道那里有什么安全问题.例如,我多久检查一次身份验证?

攻击者是否有可能"劫持"socket.io连接,我该如何防止它?

还有哪些其他安全陷阱需要关注?

node.js socket.io nowjs-sockets

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

!MongoDB查询中的e.eoo()错误

这个查询有问题,我不知道它是什么.我相信这很简单:

db.foo.insert({
    'created at': new Date(),
    ooc: false,
    body: '<p>Moo</p>\n',
    keywords: [ 'Moo' ],
    mentioned: [],
    tags: [],
    sender: {
        _id: 'stuff',
        name: 'lambdadusk',
        'display name': 'Lambda'
    }
});
Run Code Online (Sandbox Code Playgroud)

我从Mongo得到的错误很简单

!e.eoo()
Run Code Online (Sandbox Code Playgroud)

我正在使用MongoDB 2.0.5.谷歌搜索错误并没有告诉我太多.

json mongodb bson

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

文件字段 - 附加文件列表

我做了一个简单的文件字段:

<input type="file" name="pictures_array[]" multiple accept="image/*" id="page_pictures_array" />
Run Code Online (Sandbox Code Playgroud)

和一些 HTML5 文件 API 代码来列出文件:

$('.page-form #page_pictures_array').change(function(evt) {
      var file, files, reader, _i, _len;
      files = evt.target.files;
      console.log(files);
      $('#file-list').empty();
      for (_i = 0, _len = files.length; _i < _len; _i++) {
        file = files[_i];
        reader = new window.FileReader;
        reader.onload = (function(file) {
          return function(e) {
            var src;
            src = e.target.result;
            return $("<li>" + file.name + " - " + file.size + " bytes</li>").prepend($('<img/>', {
              src: src,
              "class": 'thumb'
            })).appendTo($('#file-list'));
          };
        })(file);
        reader.readAsDataURL(file); …
Run Code Online (Sandbox Code Playgroud)

html forms file-upload fileapi

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

使用 Zend Framework 2 提供二进制数据和部分内容的正确方法

我想允许使用某种访问控制来提供二进制文件。由于控件相当复杂,我不能简单地让 Apache 提供文件,我必须使用我的 Zend Framework 2 应用程序通过 PHP 提供文件。动作是这样的:

public function sendAction() {
        $filename = /* database action */;
        $size = filesize($filename);
        $response = $this->getResponse();

        if($this->getRequest()->getHeaders()->has('Range')) {
            list($unit, $range) = explode('=', $this->getRequest()->getHeaders()->get('Range')->toString());
            $ranges = explode(',', $range);
            $ranges = explode('-', $ranges[0]);

            $start = (int)$ranges[0];
            $end = (int)(isset($ranges[1]) ? $ranges[1] : $size - 1);
            $length = $start - $end;

            $response->getHeaders()->addHeaders(array('Content-Type' => 'audio/mpeg', 'Accept-Ranges' => 'bytes', 'Content-Length' => $length - 1));
            $response->setStatusCode(206);

            $f = fopen($filename, 'r');
            if($start) fseek($f, $start);
            $out = '';
            while($length) …
Run Code Online (Sandbox Code Playgroud)

php download http-headers zend-framework2

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

C#App中小型项目的最佳数据库设计

我遇到的问题是,我有一个小程序的业余爱好请求.将在Windows上使用Visual C#完成.据我所知,它将需要一个数据库,我不知道如何开始,主要是因为要求:

  1. 它将包含小数据元素,但其中很多都是如此.三个表有很多行,但可能只有2或3列.数据将以更频繁的方式读取然后写入.

  2. 阅读应该很快.

  3. 最重要的一点:我必须能够使用我的应用程序轻松部署系统,而无需最终用户进一步安装.此外,请不要有任何许可证问题.

由于我将与Linq合作,我也考虑过XML,这可能是另一种选择吗?

谢谢阅读.

c# linq database

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

潘多克忽略了Markdown-Headlines

使用snap,我使用此函数编写了一个拼接创建来自markdown的文本:

markdownToHTML :: T.Text -> [Node]
markdownToHTML = renderHtmlNodes . (writeHtml writeOpts) . readMarkdown readOpts . T.unpack
    where
        readOpts = defaultParserState
        writeOpts = defaultWriterOptions
            { writerStandalone = False
            , writerHtml5 = True
            , writerStrictMarkdown = False
            }
Run Code Online (Sandbox Code Playgroud)

现在,例如,当我给它这个降价时

# Hi

Lorem ipsum something somthing

# Stuff

[a link](http://twitter.com/)
Run Code Online (Sandbox Code Playgroud)

它产生这个HTML:

<h1 id='hi'>Hi
</h1>
<p>
 Lorem ipsum something somthing

 # Stuff

 <a href='http://twitter.com/'>a link</a></p>
Run Code Online (Sandbox Code Playgroud)

无论我在此之前添加了多少新行#,它仍然只是嵌入到段落中.

有趣的是,如果我将相同的markdown转储到pandoc的演示站点,它会生成正确的Html输出.

如有必要,可以在此处找到我的项目的完整代码.

html markdown haskell pandoc

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

CakePHP忽略响应中的Content-Type设置

在我的控制器动作中,我有这个:

$pdf = $this->Invoice->makePdf($invoice);
$this->response->charset('UTF-8');
$this->response->body($pdf);
$this->response->type(array('pdf' => 'application/x-pdf'));
$this->response->disableCache();
$this->response->send();
Run Code Online (Sandbox Code Playgroud)

但是,无论我做什么,CakePHP总是将数据发送为text/html; charset=utf-8.我也试过了

$this->response->header(array('Content-Type' => 'application/x-pdf'));
Run Code Online (Sandbox Code Playgroud)

但它仍然发送它text/html.如何强制使用上面的内容类型发送响应?

php cakephp cakephp-2.3

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