小编kol*_*len的帖子

Haskell线性代数?

我开始测试Haskell的线性代数.有没有人为此目的提供最佳套餐的建议?使用Haskell进行基本矩阵操作的任何其他好资源?

haskell wiki 为此列出了几个资源.我目前专注于hmatrixbindings-gsl,两者看起来都很有希望.

haskell matrix linear-algebra gsl

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

如何在Play框架中针对非内存数据库(如MySQL)创建单元测试,并重置为已知状态?

我想创建单元测试,涵盖在Play框架2.1.0中使用关系数据库的代码.这有很多可能性,所有原因都有问题:

测试内存H2数据库

Play框架文档建议在H2内存数据库上运行单元测试,即使用于开发和生产的主数据库使用其他软件(即MySQL):

app = Helpers.fakeApplication(Helpers.inMemoryDatabase());
Run Code Online (Sandbox Code Playgroud)

我的应用程序不使用复杂的RDBMS功能,如存储过程,大多数数据库访问情况是ebean调用,因此它应该兼容MySQL和H2.

然而,在变阵创建表的语句中使用MySQL特定的功能,如指定ENGINE = InnoDB,DEFAULT CHARACTER SET = utf8等我担心我是否会删除这些专有部分CREATE TABLE,MySQL将使用一些默认设置,我无法控制和依赖的版本,所以测试和开发应用程序主MySQL配置必须修改.

任何人都使用这种方法(使evolutions与MySQL和H2兼容)?

其他想法如何处理:

  • MySQL和H2分开演变(不是个好主意)
  • 有些方法让H2忽略了额外的MySQL内容create table(MySQL兼容模式不起作用,它仍然会抱怨default character set).我不知道怎么回事.

在与主数据库相同的数据库驱动程序上进

H2内存数据库的唯一优势是它速度快,并且在与dev/production数据库相同的数据库驱动程序上进行测试可能会更好,因为它更接近真实环境.

如何在Play框架中完成?

尝试:

Map<String, String> settings = new HashMap<String, String>();
settings.put("db.default.url", "jdbc:mysql://localhost/sometestdatabase");
settings.put("db.default.jndiName", "DefaultDS");
app = Helpers.fakeApplication(settings);
Run Code Online (Sandbox Code Playgroud)

看起来像evolutions在这里工作,但在每次测试之前如何最好清理数据库?通过创建截断每个表的自定义代码?如果它会丢弃表格,那么演化会在下一次测试之前再次运行,还是每个play test命令应用一次?或者每次Helpers.fakeApplication()调用一次?

这里的最佳做法是什么?听说dbunit,有没有可能整合它没有太多的痛苦和怪癖?

unit-testing database-testing playframework playframework-2.0

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

如何模拟core.logic中的"外连接"?

我刚刚开始使用core.logic,并且正在努力实现它我正在尝试实现一些类似于我目前专业工作的问题.然而,问题的一部分让我难过......

作为我的例子的简化,如果我有一个项目目录,其中一些仅在某些国家/地区可用,而某些项目在特定国家/地区不可用.我希望能够指定项目列表和例外,例如:

(defrel items Name Color)
(defrel restricted-to Country Name)
(defrel not-allowed-in Country Name)

(facts items [['Purse 'Blue]
              ['Car 'Red]
              ['Banana 'Yellow]])

(facts restricted-to [['US 'Car]])

(facts not-allowed-in [['UK 'Banana]
                       ['France 'Purse]])
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我宁愿不为所有国家指定允许,因为有限制的项目集相对较小,我希望能够进行一次更改以允许/排除给定的项目国家.

如何编写一个规则,为一个国家/地区提供项目/颜色列表,具有以下约束:

  • 该项目必须位于项目列表中
  • 国家/项​​目必须不在"不允许进入"列表中
  • 或者:
    • 该项目的限制列表中没有国家/地区
    • 国家/项​​目对位于限制列表中

有办法做到这一点吗?我是以完全错误的方式思考问题的吗?

logic clojure minikanren clojure-core.logic

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

core.logic matche,defne模式匹配构造使用什么语法?

一些core.logic构建体(matcha,matche,matchu,defne,fne)使用模式匹配表达式作为体并且可以使用,例如:

(run* [q]
  (fresh [a o]
    (== a [1 2 3 4 5])
    (matche [a]
            ([ [1 2 . [3 4 5] ]]
             (== q "first"))
            ([ [1 2 3 . [4 5] ]]
             (== q "second"))
            ([ [1 . _] ]
             (== q "third")))))
;=> ("first" 
;    "second"
;    "third")
Run Code Online (Sandbox Code Playgroud)

(来自Logic-Starter wiki的示例)

但是我在core.logic文档中找不到模式匹配的语法规范.这是什么语法?也许我可以在一些minikanren文档或书籍中找到它?

  • 前缀?和不带前缀的匹配变量有什么区别?
  • 除了列表之外是否还有其他破坏性构造.(类似于&clojure)?
  • [_ _]匹配有两个元素只有序列?
  • 是否有可能破坏地图?

clojure logic-programming clojure-core.logic

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

jinja2.exceptions.TemplateSyntaxError:预期标记“打印语句结束”,已“发布”

我是编程新手,最近我的一个朋友给了我一个项目来让我熟悉编程环境和语言(在这个特定的例子中是 python)。 https://www.youtube.com/watch?v=QnDWIZuWYW0我将此视频用作初学者教程,以帮助我了解我应该如何进行我的个人项目。我写的代码正是它在视频中的写法,我得到了一个错误。

from flask import Flask, render_template
app = Flask(__name__)

posts = [
    {
        'author': 'Alon Salzmann',
        'title': 'First Post',
        'content': 'First post content',
        'date posted': 'September 5, 2018'
    },
    {
        'author': 'Alon Salzmann',
        'title': 'Second Post',
        'content': 'Second post content',
        'date posted': 'September 6, 2018'
    }
]

@app.route("/")
def homepage():
    return render_template('Home.html', posts=posts)

@app.route("/about")
def about():
    return render_template('About.html')

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

上面的代码是我写的python代码,下面的代码是我写的涉及python的html代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    {% for post in posts %} …
Run Code Online (Sandbox Code Playgroud)

html python flask

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

podman:错误:无法解析“X-Registry-Auth”标头

我第一次尝试使用podmanpodman machine (在 Mac OS 下使用 podman ,但这可能无关紧要)。当我尝试启动 busybox 图像作为测试时,如简介中所述

podman run -it docker.io/library/busybox
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error: failed to parse "X-Registry-Auth" header for /v3.3.1/libpod/images/pull?alltags=false&arch=&authfile=&os=&password=&policy=missing&quiet=false&reference=docker.io%2Flibrary%2Fbusybox&username=&variant=: error storing credentials in temporary auth file (server: "https://index.docker.io/v1/", user: ""): key https://index.docker.io/v1/ contains http[s]:// prefix
Run Code Online (Sandbox Code Playgroud)

(podman版本3.3.1)

podman

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

std::time::Duration 是否与 time::precise_time_ns 来自“时间”板条箱一样精确?

长期以来,在 Rust 中精确测量时间的标准方法是timecrate 及其time::precise_time_ns功能。但是,time现在不推荐使用 crate,并且stdlibrarystd::time::Instant旨在测量经过的时间。

我不确定它是否具有相同的精度,至少在设计上是这样。我知道这可能是一个模糊的问题,因为对于不同的操作系统,这两种东西都有不同的实现,而且不同版本的实现可能会有所不同,但至少它们有相同的目的吗?至少从其设计的角度来看是std::time::Duration正确的替代品time::precise_time_ns吗?

在我的系统 (Mac OS) 上运行此脚本输出的持续时间非常短,因此它可能非常精确:

use std::time::Instant;

fn main() {
    let mut t = Instant::now();
    loop {
        println!("{:?}", t.elapsed());
        t = Instant::now();
    }
}
Run Code Online (Sandbox Code Playgroud)
40ns
42ns
41ns
45ns
40ns
41ns
40ns
40ns
41ns
41ns
41ns
40ns
40ns
40ns
Run Code Online (Sandbox Code Playgroud)

time rust

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

玩2个框架单元测试 - java.lang.RuntimeException:DataSource用户是否为空?

我试图在MySQL兼容模式下使用H2数据库在Play 2应用程序中运行单元测试.我配置@Before如下:

@Before
public void startApp() throws Exception {
    Map<String, String> settings = new HashMap<String, String>();
    settings.put("db.default.driver", "org.h2.Driver");
    settings.put("db.default.user", "sa");
    settings.put("db.default.password", "");
    settings.put("db.default.url", "jdbc:h2:mem:play-test-351881363;MODE=MySQL"); // TODO: use config for url
    settings.put("db.default.jndiName", "DefaultDS");
    app = Helpers.fakeApplication(settings);
    Helpers.start(app);

    databaseTester = new JndiDatabaseTester("DefaultDS");

    IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(play.Play.application()
            .resourceAsStream("/resources/dataset.xml"));
    databaseTester.setDataSet(expectedDataSet);
    databaseTester.onSetup();
}

@After
public void stopApp() throws Exception {
    databaseTester.onTearDown();
    Helpers.stop(app);
}
Run Code Online (Sandbox Code Playgroud)

但它在java.lang.RuntimeException: DataSource user is null?尝试访问数据库时导致实际测试方法:

[ERROR] [02/12/2013 01:19:32.085] [application-akka.actor.default-dispatcher-4] [akka://application/user/load_data_task_runner_test/load_record] DataSource user is null?
java.lang.RuntimeException: DataSource user …
Run Code Online (Sandbox Code Playgroud)

unit-testing h2 playframework ebean playframework-2.0

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