我开始测试Haskell的线性代数.有没有人为此目的提供最佳套餐的建议?使用Haskell进行基本矩阵操作的任何其他好资源?
haskell wiki 为此列出了几个资源.我目前专注于hmatrix和bindings-gsl,两者看起来都很有希望.
我想创建单元测试,涵盖在Play框架2.1.0中使用关系数据库的代码.这有很多可能性,所有原因都有问题:
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兼容)?
其他想法如何处理:
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
我刚刚开始使用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)
如果可能的话,我宁愿不为所有国家指定允许,因为有限制的项目集相对较小,我希望能够进行一次更改以允许/排除给定的项目国家.
如何编写一个规则,为一个国家/地区提供项目/颜色列表,具有以下约束:
有办法做到这一点吗?我是以完全错误的方式思考问题的吗?
一些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)?[_ _]匹配有两个元素只有序列?我是编程新手,最近我的一个朋友给了我一个项目来让我熟悉编程环境和语言(在这个特定的例子中是 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) 我第一次尝试使用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)
长期以来,在 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) 我试图在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)