小编Dav*_*d H的帖子

alembic - 将包资源用作script_location的示例

我试图将Alembic迁移作为python包分发的一部分.由于将安装此发行版,因此Alembic脚本编目目录(包含迁移)将最终复制到python包文件夹.在这种情况下,我如何告诉Alembic在哪里找到这个目录?

在Alembic文档中,它说该migration目录可以在config.ini文件中指定为包引用:

  • script_location - 这是Alembic环境的位置.它通常被指定为文件系统位置,相对或绝对.如果位置是相对路径,则将其解释为相对于当前目录.

(剪断)

为了支持将自身打包为.egg文件的应用程序,也可以将该值指定为包资源,在这种情况下,resource_filename()用于查找文件(0.2.2中的新增内容).任何包含冒号的非绝对URI在此都被解释为资源名称,而不是直接文件名.

文档没有提供进一步的信息或示例.

有没有人成功实现过这个?您如何将migrationscripting_folder变成"包资源"?那么你怎么告诉alembic在哪里找到它?

python sqlalchemy alembic

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

正确设计C代码,处理单精度和双精度浮点?

我正在用C开发一个专用数学函数库.我需要为库提供一个处理单精度和双精度的功能.这里重要的一点是"单个"函数应该在内部使用"单个"算术(对于"双"函数).

作为示例,请看一下LAPACK(Fortran),它提供了每个函数的两个版本(SINGLE和DOUBLE).还有C数学库(例如,expfexp).

为了澄清,我想支持类似于以下(人为)示例的内容:

float MyFloatFunc(float x) {
    return expf(-2.0f * x)*logf(2.75f*x);
}

double MyDoubleFunc(double x) {
    return exp(-2.0 * x)*log(2.75*x);
}
Run Code Online (Sandbox Code Playgroud)

我考虑过以下方法:

  1. 使用宏作为函数名称.这仍然需要两个独立的源代码库:

    #ifdef USE_FLOAT
    #define MYFUNC MyFloatFunc
    #else
    #define MYFUNC MyDoubleFunc
    #endif
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将宏用于浮点类型.这允许我在两个不同版本之间共享代码库:

    #ifdef USE_FLOAT
    #define NUMBER float
    #else
    #define NUMBER double
    #endif
    
    Run Code Online (Sandbox Code Playgroud)
  3. 刚开发两个独立的库,忘记尝试保存头痛.

有人有推荐或其他建议吗?

c floating-point

8
推荐指数
2
解决办法
1658
查看次数

Spring 4 @Value,其中property default是一个java系统属性

在Spring 4中,使用@Value注释,如果指定的属性不存在,将系统属性指定为默认值的正确方法是什么?

虽然这适用于非默认情况:

@Value("${myapp.temp}")
private String tempDirectory;
Run Code Online (Sandbox Code Playgroud)

当我需要默认值时,这不起作用:

@Value("#{myapp.temp ?: systemProperties.java.io.tmpdir}")
private String tempDirectory;
Run Code Online (Sandbox Code Playgroud)

这也不是:

@Value("#{myapp.temp ?: systemProperties(java.io.tmpdir)}")
private String tempDirectory;
Run Code Online (Sandbox Code Playgroud)

在Spring尝试创建bean时,这两个都给了我一个例外:

org.springframework.beans.factory.BeanCreationException: Error creating bean  
     with name 'configurationService': Invocation of init method failed;
     nested exception is java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

java spring

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

Spring Boot-如果未设置属性,则检测并终止?

如果未在任何地方(在application.properties文件或其他属性源中)未设置必需的属性,Spring Boot Web应用程序是否有任何方法在启动时中止?现在,如果该属性包含在另一个属性中,则看来Spring Boot只是避免了替换。

例如,在我的application.properties文件中,有以下一行:

quartz.datasource.url=jdbc:hsqldb:${my.home}/database/my-jobstore
Run Code Online (Sandbox Code Playgroud)

现在,如果未在其他位置设置“ my.home”,则Spring Boot会将字面值设置为“ jdbc:hsqldb:$ {my.home} / database / my-jobstore”(无替代)。

如果属性my.home未在其他任何地方设置,我希望应用程序无法启动。

spring spring-boot

6
推荐指数
2
解决办法
5592
查看次数

在FsCheck中,如何使用非负字段生成测试记录?

在F#中,我有几个字段的记录:

    type myRecord = { a:float; b:float; c:float }
Run Code Online (Sandbox Code Playgroud)

我正在使用FsCheck来测试一些使用此记录的属性.对于(一个人为的)例子,

    let verify_this_property (r:myRecord) = myFunction(r) = (r.a * r.b) / r.c
Run Code Online (Sandbox Code Playgroud)

由于myFunction的内部实现限制,我想让FsCheck创建测试用例,其中每个字段a,b,c都限制为非负浮点数.

我怀疑这需要为myRecord创建一个生成器,但我无法找到任何如何执行此操作的示例.

谁能提供指导?

f# fscheck

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

流利断言:近似比较两个数字集合

我有两个double数组.有没有办法使用FluentAssertions使用.BeApproximately()技术逐个元素地比较数组?

一个范围值足以满足整个阵列的要求.

例:

double[] source = { 10.01, 8.01, 6.01 };
double[] target = { 10.0, 8.0, 6.0  };

// THE FOLLOWING IS NOT IMPLEMENTED
target.Should().BeApproximately(source, 0.01);   
Run Code Online (Sandbox Code Playgroud)

有替代方法吗?

c# nunit unit-testing fluent-assertions

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

Rundeck:使用 SCM 插件从 GitHub 中提取作业定义

我非常想将我的 rundeck 工作描述 (YAML) 导入/导出到 GitHub 存储库。

rundeck (2.6.4) 的 SCM 插件似乎已经准备好了,但我找不到关于如何使用它的文档很少。

当我尝试在“设置 SCM 插件:Git 导出”屏幕中对其进行配置时,出现以下错误:

Failed fetch from the repository:  
https://github.com/OptionMetrics/Rundeck.git: Authentication is required but no CredentialsProvider has been registered
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个 SSH 密钥,将其上传到 GitHub,并将其存储在 rundeck 密钥存储中。然后我从配置页面引用了这个键。没运气。

谁能给我明确的指示如何使这项工作?

git rundeck

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

可以将C#扩展方法添加到F#类型中吗?

我有一个人的F#库,里面有一个类型:

module HisModule

type hisType {
    a : float;
    b : float;
    c : float;
}
Run Code Online (Sandbox Code Playgroud)

我在C#中使用它,我想为它添加一个"ToString()"方法,以便于调试.

但以下似乎不起作用:

public static class MyExtensions
{
    public static string ToString(this HisModule.hisType h)
    {
        return String.Format("a={0},b={1},c={2}", h.a, h.b, h.c);
    }
}
....
var h = new hisType();
Console.WriteLine(h.ToString());  // prints "HisModule+hisType"
Run Code Online (Sandbox Code Playgroud)

任何想法为什么不呢?

c# extension-methods f#

3
推荐指数
2
解决办法
313
查看次数

分配给构造函数?(像一个元组层)

为什么我不能分配给构造函数,当我可以分配给"看起来"像构造函数的函数?

例:

struct Bar {
   Bar() : b_(false) {}
   Bar(bool b) : b_(b) {}
};

struct Foo {
   Foo(Bar const & bar) : bar_(bar) {}
   Foo operator=(Foo const & f) { return Foo(f.bar_); }
   const Bar & bar_;
}

Foo bool_to_foo(bool b) { return Foo(Bar(b)); }

Foo MakeFoo(Bar const & bar) { return Foo(bar); }
Run Code Online (Sandbox Code Playgroud)

为什么这样做:

Bar bar;
MakeFoo(bar) = bool_to_foo(true);
Run Code Online (Sandbox Code Playgroud)

什么时候不起作用?

Bar bar;
Foo(bar) = bool_to_foo(true);  // Error: 'bar': redefinition; different basic types
Run Code Online (Sandbox Code Playgroud)

MakeFoo(.)和Foo(.)具有相同的签名和相同的功能.

构造函数有什么特别之处?

c++ constructor assignment-operator

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

Spring Batch 5.0 与 Spring Boot -- Tasklet 作业未自动启动

我有一个非常简单的 Spring Boot 项目,其中包含 Spring Batch 5.0 和 CommmandLineRunner。有一项作业、一个步骤和一个仅打印“正在运行”的微线程。我遵循指示并期望工作能够开始和完成。

没有错误;正在创建批处理数据库表;正在创建 Job 和 Step beans。

它就是不运行。

我将不胜感激任何见解或帮助!

注意:如果我使用自动装配的 JobLauncher 从 CommandLineRunner 显式启动作业,则它可以正常工作。它只是不会自动启动作业(如承诺的那样)。

注意 2:删除@EnableBatchProcessing 没有什么区别。

代码如下

应用程序属性:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost/postgres
spring.batch.jdbc.initialize-schema=always
spring.batch.job.enabled=true
Run Code Online (Sandbox Code Playgroud)

应用程序.java:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost/postgres
spring.batch.jdbc.initialize-schema=always
spring.batch.job.enabled=true
Run Code Online (Sandbox Code Playgroud)

作业配置:

@SpringBootApplication
@EnableBatchProcessing
public class Application implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }


    @Override
    public void run(String... args) throws Exception {
        System.out.println("Starting...");
        Thread.sleep(2000);
    }
}
Run Code Online (Sandbox Code Playgroud)

小任务:

@Configuration
public class AbacusJobConfiguration {

    Logger logger = LoggerFactory.getLogger(AbacusJobConfiguration.class);

    @Bean …
Run Code Online (Sandbox Code Playgroud)

spring-batch spring-boot

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