小编Dae*_*yth的帖子

类型转换与无形

我有一个类似这样的类:

class MyClass[T <: HList] {
  val x: ???
}
Run Code Online (Sandbox Code Playgroud)

我的问题是xval 的类型.我想要的是让它成为一个HList,每个类型UTHList被替换为Option[U].即如果我指定:

new MyClass[Int :: String :: HNil]
Run Code Online (Sandbox Code Playgroud)

我想x有一种类型Option[Int] :: Option[String] :: HNil

这甚至可能吗?怎么做?

scala shapeless

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

python词典中的键值一致性

这可能是一个菜鸟问题.对于python中的任何字典'd',这总是为True:

dict( zip( d.keys(), d.values() ) ) == d 
Run Code Online (Sandbox Code Playgroud)

键和值是否以相同的顺序返回?

python

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

如何使用一个遥控器推送到一个网址并从另一个网址拉出?

我已经创建了这个存储库的克隆.如果我运行以下命令,我会看到我的本地存储库被配置为使用我的克隆来获取/拉取,如预期的那样.

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/domurtag/airbrake-grails.git
  Push  URL: https://github.com/domurtag/airbrake-grails.git
Run Code Online (Sandbox Code Playgroud)

我希望我的本地仓库取代主仓库(我克隆的那个)并推送到我的克隆.我做的第一件事是将主仓库添加为远程:

$ git remote add cavneb https://github.com/cavneb/airbrake-grails.git
Run Code Online (Sandbox Code Playgroud)

如果我再次运行,git remote show origin我会看到相同的输出,所以显然我需要做一些其他事情来表明cavnebrepo应该用于获取,但我不确定这是什么.

如果相关,我已经显示了以下内容.git/config:

[core]
    repositoryformatversion = 0
    filemode = true
    logallrefupdates = true
[remote "origin"]
    url = https://github.com/domurtag/airbrake-grails.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "cavneb"]
    url = https://github.com/cavneb/airbrake-grails.git
    fetch = +refs/heads/*:refs/remotes/cavneb/*
Run Code Online (Sandbox Code Playgroud)

git github

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

如何更改QML对话框/窗口的临时父代?

我正在开发一个Qt(5.3)桌面应用程序(带有QML ui的C++核心),其主窗口是一个ApplicationWindow,并且在某些时候启动Dialogs.由于在Windows和Mac OS X之间使用对话框模式存在差异(例如,关于对话框在Mac OS X上很少是模态的,但在Windows上几乎总是模态的),而且在呈现一些对话框的内容方面,我也是我们改变了设计,允许实现特定于平台的对话框版本.

为此我创建了以下DialogLoader:

Loader {
    id: dialogFactory
    property string dialogName
    function platformFolder() {
        if (Qt.platform.os === "osx")
            return "osx"
        return "win"
    }
    onDialogNameChanged: { source = platformFolder() + "/" + dialogName + ".qml" }
    onStatusChanged: {
        if (dialogFactory.status === Loader.Error)
            console.log("DialogFactory: failed to load file: " + source);
        else if (dialogFactory.status === Loader.Ready)
            console.log("DialogFactory: file \"" + source + "\" loaded")
    }
}
Run Code Online (Sandbox Code Playgroud)

我用的如下:

ApplicationWindow {
    // …
    property alias …
Run Code Online (Sandbox Code Playgroud)

qt qml qt5 qt5.3

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

Play框架在"开始"模式下不绑定端口

如果我play run从我的scala项目root 运行,它会正常启动,我可以测试它.

如果我运行play start,它不会绑定到端口,并且没有日志输出或任何其他迹象表明任何错误.

$ play run
[info] Loading project definition from /Users/Daenyth/myproject/project
[info] Set current project to myproject (in build file:/Users/Daenyth/myproject/)

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0%0:9000

(Server started, use Ctrl+D to stop and go back to the console...)
Run Code Online (Sandbox Code Playgroud)
$ play start
[info] Loading project definition from /Users/Daenyth/Localytics/myproject/project
[info] Set current project to profile-api (in build file:/Users/Daenyth/myproject/)

(Starting server. Type Ctrl+D to …
Run Code Online (Sandbox Code Playgroud)

scala playframework-2.0

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

在图中查找长度为 k 的派系

我正在处理约 200 个节点和约 3500 个边的图表。我需要找到该图的所有派系。使用networkxenumerate_all_cliques()可以很好地处理最多100个节点的较小图形,但对于较大的图形会出现内存不足的情况。

“但是,希望该算法不会耗尽内存,因为它只将候选子列表保留在内存中,并不断删除耗尽的子列表。” enumerate_all_cliques() 的源代码

有没有办法返回长度为 k 的所有派系的生成器,而不是所有派系,以节省内存?

python clique-problem networkx

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

让 __eq__ 引发异常的陷阱?

我有一种类型,相等比较没有意义。显式比较此类型的两个实例的引用或值相等将指示调用代码中的逻辑错误。

__eq__定义引发异常是不是不好?这其中有陷阱吗?它是否作为某些常见操作的一部分隐式调用?

在像 Haskell 这样的语言中,我根本不会实现 Equal 类型类,并且尝试比较将是一个编译错误。由于 python 是完全动态的,如果这个定义不是一个好主意,我是否有一个选项可以帮助鼓励正确使用?

我可以return NotImplemented,但是如果 RHS 也返回,它会进行后备比较,最终会导致身份比较NotImplemented,但我仍然不希望这样。

python equality

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

使用现有的psycopg2连接池创建sqlalchemy引擎

我正在使用sqlalchemy的声明性映射系统添加一个新的ORM类。我的代码库有一个现有的psycopg2连接池,我想重用该连接池-我不希望使用orm类的代码拥有自己的池。有很多直接调用get_connpsycopg2池的现有代码,因此我也不想只替换它。

我在构造要连接的引擎时遇到问题。

pool_config = {...}
POOL = psycopg2.pool.ThreadedConnectionPool(0, 32, **pool_config)

[...]

engine = sqlalchemy.create_engine('postgresql://', pool=POOL)
Session = sqlalchemy.orm.sessionmaker(bind=engine)
...
Run Code Online (Sandbox Code Playgroud)

问题是我打给create_engine;

  File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 362, in create_engine
    return strategy.create(*args, **kwargs)
  File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 159, in create
    event.listen(pool, 'first_connect', on_connect)
  File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/event/api.py", line 63, in listen
    _event_key(target, identifier, fn).listen(*args, **kw)
  File "/home/ubuntu/environment/local/lib/python2.7/site-packages/sqlalchemy/event/registry.py", line 190, in listen
    dispatch_descriptor = getattr(target.dispatch, identifier)
AttributeError: 'ThreadedConnectionPool' object has no attribute 'dispatch'
Run Code Online (Sandbox Code Playgroud)

是否可以通过这种方式使用现有的池,或者是否需要创建一个单独的连接池以供这些类使用?

python connection-pooling sqlalchemy psycopg2

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

在 doobie 中为 for-comprehension 编写可选查询?

我想在 doobie 中使用 for-comprehension 在一个事务中运行多个查询。就像是:

def addImage(path:String) : ConnectionIO[Image] = {
  sql"INSERT INTO images(path) VALUES($path)".update.withUniqueGeneratedKeys('id', 'path')
}

def addUser(username: String, imageId: Optional[Int]) : ConnectionIO[User] = {
  sql"INSERT INTO users(username, image_id) VALUES($username, $imageId)".update.withUniqueGeneratedKeys('id', 'username', 'image_id')
}

def createUser(username: String, imagePath: Optional[String]) : Future[User] = {
  val composedIO : ConnectionIO[User] = for {
    optImage <- imagePath.map { p => addImage(p) }
    user <- addUser(username, optImage.map(_.id))
  } yield user

  composedIO.transact(xa).unsafeToFuture
}
Run Code Online (Sandbox Code Playgroud)

我刚开始接触 doobie(和猫),所以我对 FreeMonads 不太熟悉。我一直在尝试不同的解决方案,但为了理解工作,看起来两个块都需要返回一个cats.free.Free[doobie.free.connection.ConnectionOp,?]。

如果这是真的,有没有办法将我的 ConnectionIO[Image](来自 addImage 调用)转换为 cat.free.Free[doobie.free.connection.ConnectionOp,Option[Image]] ?

scala free-monad scala-cats doobie

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

"TypeError:object()不带参数"将python2元类转换为python3

我正在将一些代码从python2转换为python3,并且我遇到了一个带有元类的错误.

这是工作的python2代码(简化):

#!/usr/bin/env python2
# test2.py

class Meta(type):
    def __new__(mcs, name, bases, clsdict):
        new_class = type.__new__(mcs, name, bases, clsdict)
        return new_class

class Root(object):
    __metaclass__ = Meta

    def __init__(self, value=None):
        self.value = value
        super(Root, self).__init__()

class Sub(Root):
    def __init__(self, value=None):
        super(Sub, self).__init__(value=value)

    def __new__(cls, value=None):
        super(Sub, cls).__new__(cls, value)

if __name__ == '__main__':
    sub = Sub(1)
Run Code Online (Sandbox Code Playgroud)

这是转换后的python3代码:

#!/usr/bin/env python3
# test3.py

class Meta(type):
    def __new__(mcs, name, bases, clsdict):
        new_class = type.__new__(mcs, name, bases, clsdict)
        return new_class

class Root(object, metaclass=Meta):
    def __init__(self, value=None): …
Run Code Online (Sandbox Code Playgroud)

python metaclass super python-3.x

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