小编Mar*_*riy的帖子

函数式编程的可变性

首先,我是一名Haskell新手.我读过这个: 高度可变域中的不可变功能对象 我的问题几乎相同 - 如何有效地编写状态应该改变的算法.让我们以Dijkstra的算法为例.将找到新路径并更新距离.在传统语言中,这很简单,而在Haskell中,例如我只能想到创建全新的距离,这些距离太慢而且占用内存.是否存在类似于设计模式的情况,其中应该实现具有可变数据结构的算法,并且速度和内存使用是主要问题?

algorithm haskell functional-programming data-structures

15
推荐指数
3
解决办法
2707
查看次数

使用before_action时为什么没有双重渲染?

我很奇怪,为什么没有双重渲染时,有一个redirect_torenderbefore_action.考虑这个例子:

class SomeController < ApplicationController
 before_action :callback

 def new
  callback2
  render 'new'
 end

 def callback
  render 'new'
 end

 def callback2
  render 'new'
 end

end
Run Code Online (Sandbox Code Playgroud)

before_action如果它不能重定向但是它是如何制作的话,我认为这将是无用的?如果我评论before_action它会抛出异常.如何before_action实现不会导致双重渲染?

ruby ruby-on-rails

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

在pymongo中使用$或子句

我在集合中有这些字段:

[{
     u'_id': ObjectId('4d1f7b4d5d256b18c8000000'),
     u'name': u'1'
 },{
     u'_id': ObjectId('4d1f7b505d256b18c8000001'),
     u'name': u'2'
 },{
     u'_id': ObjectId('4d1f7b525d256b18c8000002'),
     u'name': u'3'
 }]
Run Code Online (Sandbox Code Playgroud)

然后我这样做一个查询:

 [x for x in c.things.find( {'$or' : [{'name':'1'}, {'name':'2'}] } )]
Run Code Online (Sandbox Code Playgroud)

我希望得到:

[{
    u'_id': ObjectId('4d1f7b4d5d256b18c8000000'),
    u'name': u'1'
}, {
    u'_id': ObjectId('4d1f7b505d256b18c8000001'),
    u'name': u'2'
}]
Run Code Online (Sandbox Code Playgroud)

不幸的是.我究竟做错了什么?

mongodb pymongo

10
推荐指数
1
解决办法
5488
查看次数

如何使用Qt在Windows和Linux上捕获Ctrl + C.

我有Qt控制台服务器应用程序.我希望有人按下Ctrl + C以正确退出我的服务器(调用析构函数等).我已经读过这篇文章了,但是我希望这可以在Linux和Windows上运行.怎么做?

c++ linux windows console qt

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

vim行尾

我想查看gvim中哪些行结尾.我经常在陈述后有空格,我不想拥有.如何切换此编辑器功能?

vim

9
推荐指数
1
解决办法
8580
查看次数

haskell foldl with(++)

当我发现这真的困扰我时,我正在玩Haskell和ghci:

foldl (++) [[3,4,5], [2,3,4], [2,1,1]] []
Run Code Online (Sandbox Code Playgroud)

我希望得到这个:[3,4,5,2,3,4,2,1,1] 然而它得到:

[[3,4,5],[2,3,4],[2,1,1]]
Run Code Online (Sandbox Code Playgroud)

据我所知,foldl应该是这样的:

(([] ++ [3, 4, 5]) ++ [2, 3, 4]) ++ [2, 1, 1]
Run Code Online (Sandbox Code Playgroud)

如果我在ghci中键入它,它确实是[3,4,5,2,3,4,2,1,1].

而另一个奇怪的是:

Prelude> foldl1 (++) [[3,4,5], [2, 3, 4], [2, 1, 1]]
[3,4,5,2,3,4,2,1,1]
Run Code Online (Sandbox Code Playgroud)

我希望foldl和foldl1的行为方式相同.那么foldl实际上做了什么?

haskell ghc

7
推荐指数
2
解决办法
775
查看次数

动态加载python源代码

我正在玩Flask,我无法弄清楚调试机制是如何工作的.更准确地说,当我使用我的应用程序保存python文件时,我不需要重新启动服务器,它会在我发出请求时自动加载.所以我的问题是正在运行的程序如何知道它已被更改并响应这些更改?

python dynamic flask

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

Python 密码学:无法使用 PKCS1v15 填充使用 RSA 私钥进行签名

我正在尝试使用 Python 和 PHP 的加密库openssl_pkey_get_privateopenssl_sign使用 SHA1 哈希来实现功能上等效的签名。我读到 PHP 使用 PKCS1v15 填充,所以这也是我尝试使用的。我的代码是:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives.serialization import load_pem_private_key
from cryptography.hazmat.backends import default_backend

pk = open('key.pem', 'rb')
key = load_pem_private_key(pk.read(), password=None, backend=default_backend())
message = b'hello world'
signature = key.sign(
    message,
    padding.PKCS1v15,
    hashes.SHA1()
)
Run Code Online (Sandbox Code Playgroud)

执行此命令会产生:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-21-ef3db8a6f4a8> in <module>()
      3     message,
      4     padding.PKCS1v15,
----> 5     hashes.SHA1()
      6 )

/home/vagrant/virtualenvs/test/lib/python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py in sign(self, data, padding, algorithm)
    613 
    614     def …
Run Code Online (Sandbox Code Playgroud)

php python cryptography pkcs#1

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

超级尝试MRO中的每个班级

class Base(object):
    def m(self):
        print 'base'


class MixinA(Base):
    def m(self):
        super(MixinA, self).m()
        print 'mixin a'


class MixinB(Base):
    def m(self):
        super(MixinB, self).m()
        print 'mixin b'


class Top(MixinB, MixinA, Base):
    def m(self):
        super(Top, self).m()
        print 'top'


t = Top()
t.m()
Run Code Online (Sandbox Code Playgroud)

这打印:

base
mixin a
mixin b
top
Run Code Online (Sandbox Code Playgroud)

我对多种事情感到惊讶.第一个MRO Top(<class 'Top'>, <class 'MixinB'>, <class 'MixinA'>, <class 'Base'>, <type 'object'>)

  1. 为什么mixin a来之前mixin b
  2. 是否super尝试在MRO每一个类(不同于搜索时,返回找到的第一个属性的属性)?

python oop multiple-inheritance super

3
推荐指数
1
解决办法
70
查看次数

jQuery变量阴影

jQuery中有奇怪的模式:

var jQuery = (function() {

// Define a local copy of jQuery
var jQuery = function( selector, context ) {
 ...
return jQuery;

})();
Run Code Online (Sandbox Code Playgroud)

这有什么实际的原因?为什么不公开内部jQuery函数?它只适用于内部jQuery和外部jQuery中的名称冲突,因为它们都在闭包中.

javascript jquery

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

结构不能为零,但这是编译

我正在玩Go Playground并找到这段代码:

package main

import (
    "fmt"
    "time"
)

type MyError struct {
    When time.Time
    What string
}

func (e *MyError) Error() string {
    return fmt.Sprintf("at %v, %s",
        e.When, e.What)
}

func run() error {
    return &MyError{
        time.Now(),
        "it didn't work",
    }
}

func main() {
    if err := run(); err != nil {
        fmt.Println(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在这里我可以看到*MyError实现error接口.但是,如果我&errorfunc中删除并返回MyError,我收到编译时错误: prog.go:19: cannot use MyError literal (type MyError) as type error in return …

go

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

QString的终身问题

我有一个这样的课:

class SomeClass {
    public:
        QString data;
        SomeClass(const QString &);
};
Run Code Online (Sandbox Code Playgroud)

并在.cpp文件中:

SomeClass::SomeClass(const QString &_data) {
    data = _data;
}
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用它:

SomeClass c("foobar");
Run Code Online (Sandbox Code Playgroud)

这将调用QString("foobar")并将其传递给SomeClass的构造函数.但是这个QString是一个自动对象,所以它的生命周期将在构造函数之后消失.另一方面,data除非修改,否则不会被复制(据我所知,Qt文档).这段代码是否可能存在终身问题,或者我错了吗?如何更好地设计?

c++ qt lifetime

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