小编jas*_*sie的帖子

GCC 上有不明确的构造函数重载,但 Clang 上没有

假设我们有以下简单的代码:

#include <iostream>
#include <type_traits>

struct S {
    template <typename T> explicit S(T) noexcept requires std::is_signed<T>::value {
        std::cout << "T\n";
    }
    template<typename T> explicit S(const T&) noexcept {
        std::cout << "const T&\n";
    }
};

int main() {
    S s(4);
}
Run Code Online (Sandbox Code Playgroud)

此代码使用 Clang 编译并打印“T”,但使用 GCC 时出现以下错误:

error: call of overloaded 'S(int)' is ambiguous
Run Code Online (Sandbox Code Playgroud)

我的问题是:GCC 还是 Clang 哪个编译器有 bug?

c++ gcc templates clang language-lawyer

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

FluentAssertions ShouldBeEquivalent 可以与 c#9 记录类型一起使用吗?

我一直在摆弄 c#9 的一些新功能,但遇到了一些不那么有趣的事情。如果我尝试在具有 DateTimeOffset 的记录上使用 Should().BeEquivalentTo(),并将 DateTimeOffset 的“使用”选项设置为使用 BeCloseTo,则即使 DateTimeOffset 在允许的精度范围内,测试也会失败。有没有办法让它发挥作用(无需将记录更改为班级哈哈)?非常感谢!

例子:

   public class ExampleTest
   {

      [Fact]
      public void FunWithRecords()
      {
         var thing1 = new Thing
         {
            SomeDate = DateTimeOffset.UtcNow
         };
         var thing2 = new Thing
         {
            SomeDate = DateTimeOffset.UtcNow.AddSeconds(2)
         };
         thing1.Should().BeEquivalentTo(thing2, o =>
            o.Using<DateTimeOffset>(ctx =>
               ctx.Subject.Should().BeCloseTo(ctx.Expectation, 10000))
               .WhenTypeIs<DateTimeOffset>());
      }
   }
   
   public record Thing
   {
      public DateTimeOffset SomeDate {get; init;}
   }
Run Code Online (Sandbox Code Playgroud)

c# datetime unit-testing fluent-assertions

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

在 Jasmine 中对 MatDialog 进行单元测试时,无法读取未定义的属性“afterClosed”

我从 Karma Jasmine 收到以下错误:
TypeError: Cannot read property 'afterClosed' of undefined

我真诚地搜索,但在 Stack Overflow 或其他来源中找不到解决方案。

这就是我MatDialog在组件中打开的方式:(
文档所示

constructor(public dialog: MatDialog) {}

public openDialog(): void {
    const dialogReference: MatDialogRef<any, any> = this.dialog.open(myDialogComponent, {
        width: '1728px'
    });

    dialogReference.afterClosed().subscribe((result) => {
    });
}
Run Code Online (Sandbox Code Playgroud)

这是我的单元测试配置:

beforeEach(async(() => {
    TestBed.configureTestingModule({
        declarations: [
            myRequestComponent
        ],
        imports: [
            MatDialogModule,
            ReactiveFormsModule
        ],
        providers: [
            { provide: MatDialog, useValue: {} },
        ],
        schemas: [CUSTOM_ELEMENTS_SCHEMA]
    }).compileComponents();
}));

beforeEach(() => {
    fixture = TestBed.createComponent(myRequestComponent);
    component = fixture.componentInstance; …
Run Code Online (Sandbox Code Playgroud)

dialog jasmine typescript angular-material angular

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

java.io.IOException使用Avro Tools将JSON转换为Avro后不是数据文件

我有一个JSON文件和一个avro架构文件,它正确地描述了它的结构.然后我将带有Avro工具的JSON文件转换为avro文件,而不会出现错误,如下所示:

java -jar .\avro-tools-1.7.7.jar fromjson --schema-file .\data.avsc .\data.json > .\data.avro
Run Code Online (Sandbox Code Playgroud)

然后我将生成的Avro文件转换回JSON,以验证我是否得到了这样的有效Avro文件:

java -jar .\avro-tools-1.7.7.jar tojson .\data.avro > .\data.json
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

Exception in thread "main" java.io.IOException: Not a data file.
    at org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:105)
    at org.apache.avro.file.DataFileReader.<init>(DataFileReader.java:97)
    at org.apache.avro.tool.DataFileGetMetaTool.run(DataFileGetMetaTool.java:64)
    at org.apache.avro.tool.Main.run(Main.java:84)
    at org.apache.avro.tool.Main.main(Main.java:73)
Run Code Online (Sandbox Code Playgroud)

在做'getschema'或'getmeta'时我也得到了同样的例外,如果我使用avro-tools-1.8.2或avro-tools-1.7.4.我还尝试了多个不同的json和架构数据,我检查了它的有效性.

此处抛出错误(在Avro工具中):

if (!Arrays.equals(DataFileConstants.MAGIC, magic)) {
    throw new IOException("Not a data file.");
}
Run Code Online (Sandbox Code Playgroud)

看起来,(二进制)Avro文件与预期的Avro文件不匹配,因为开头有几个字符.

我已经检查了有关此错误的所有其他stackoverflow问题,但它们都没有帮助.我在Windows 10 PowerShell上使用了命令行.

请参阅https://www.michael-noll.com/blog/2013/03/17/reading-and-writing-avro-files-from-the-command-line/#json-to-binary-avro

有人知道这里发生了什么事吗?

更新:如果我在Cloudera VM上而不是在Windows中进行转换,则转换有效.在生成的Avro文件中,开头只有几个不同.

java json avro avro-tools

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

java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0

我无法解决这个异常,我已经阅读了 hadoop 文档以及我能找到的所有相关的 stackoverflow 问题。

我的 fileSystem.mkdirs(***) 抛出:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode(NativeIO.java:524)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkOneDirWithMode(RawLocalFileSystem.java:465)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirsWithOptionalPermission(RawLocalFileSystem.java:518)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:496)
    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:316)
...
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中包含以下依赖项(通过 maven pom.xml),全部采用版本 2.6.0-cdh5.13.0:hadoop-common、hadoop-hdfs、hadoop-client、hadoop-minicluster

我的文件系统变量是一个有效的(hadoop-common)文件系统(org.apache.hadoop.fs.FileSystem)。

我从https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin下载了 hadoop 文件。我将 winutils.exe 和版本 2.6.0 中的所有其他文件存储到本地文件系统的 C:\Temp\hadoop\bin 下。我用 C:\Temp\hadoop 添加了路径变量 HADOOP_HOME (是的,不是 bin 目录的路径)。

未使用后备(“使用内置 java 类”),我得到:

145 [main] DEBUG org.apache.hadoop.util.NativeCodeLoader  - Trying to load the custom-built native-hadoop library...
147 [main] DEBUG org.apache.hadoop.util.NativeCodeLoader  - Loaded the native-hadoop library
Run Code Online (Sandbox Code Playgroud)

(参见https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/NativeLibraries.html

据我了解,此异常可能是由 hadoop 版本不匹配引起的,但我检查了导入的 hadoop …

java hadoop maven cloudera-cdh

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

(如何)我应该在 Vue.js 组件(TypeScript)中使用访问修饰符(公共、私有等)吗?

我有一个 Vue.js v2.6 项目,其中包含 TypeScript v.4.3“底层”。我的问题:我找不到任何可以澄清的文档,说明在Vue 组件
中 使用是否有意义以及如何正确使用它们。 我搜索了文章、Vue.js 文档和 StackOverflow,但没有任何发现。(Vue.js 文档完全忽略了它们的存在!)access modifiers

这就是我目前在 Vue 组件中使用访问修饰符的方式:

myComponent.vue 的模板部分:

<template>
  <div>
    <!-- accessing some of the fields of the class here e.g. the getter -->
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

myComponent.vue 的脚本部分:

<script lang="ts">
  import { Vue, Component, Prop, Emit } from "vue-property-decorator";

  @Component()
  export default class MyComponent extends Vue {
    @Prop() public readonly myPropertyVariable!: boolean;

    public myVariable!: string; // accessed in template

    private myInternalVariable!: boolean; // not accessed …
Run Code Online (Sandbox Code Playgroud)

access-modifiers typescript vue.js vuejs2 vue-class-components

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

可以在“材料网格”图块中使用材料网格列表(嵌套网格)吗?

我猜想,不允许将材料网格放入材料网格(嵌套网格)中吗?
有人可以确认我的假设吗?
(我正在使用Angular Material6。)

<mat-grid-list cols="6" gutterSize="32px">
    <mat-grid-tile [colspan]="3">
        left
        <mat-grid-list cols="3" gutterSize="8px">
            <mat-grid-tile>1</mat-grid-tile>

            <mat-grid-tile [colspan]="2">2</mat-grid-tile>

            <mat-grid-tile [colspan]="3">3</mat-grid-tile>
        </mat-grid-list>
    </mat-grid-tile>

    <mat-grid-tile [colspan]="3">
        right
        <mat-grid-list cols="3" gutterSize="8px">
            <mat-grid-tile>4</mat-grid-tile>

            <mat-grid-tile [colspan]="2">5</mat-grid-tile>

            <mat-grid-tile [colspan]="3">6</mat-grid-tile>
        </mat-grid-list>
    </mat-grid-tile>
</mat-grid-list>
Run Code Online (Sandbox Code Playgroud)

结果应如下所示(两个不同的装订线大小):

在此处输入图片说明

我为什么要这个?我必须实现的设计在各列之间具有不同的GUTTER SIZES:-/我认为网格中的网格将是一个聪明的解决方案,但它不起作用。

更新:这里建议的解决方案不起作用,因为只有在较旧的Angular JS材质中才有可能。

material-design angular6 angular-material-6

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

如何在 C# 中模拟 OPC UA 会话以进行单元测试

我有一个 C# 应用程序,其中包含一个可与多个 OPC UA 会话 ( UnifiedAutomation.UaClient.Session )配合使用的服务。这些会话是通过连接到 opc.tcp://localhost:48030 等地址来创建的。

foreach (ConnectionStringSettings connectionSettings in ConfigurationManager.ConnectionStrings)
{
    var connectionString = connectionSettings.ConnectionString;

    // Ignore non-OPC-connections 
    if (!connectionString.StartsWith("opc.tcp")) continue;

    // Create new session for connection
    var session = new Session
    {
        AutomaticReconnect = true,
        ReconnectDelay = 0
    };

    // Connect to OPC UA Server
    try
    {
        session.Connect(connectionString, SecuritySelection.None);
        Log("OPC UA Session establish.", EventLogEntryType.Information);
    }
    catch (StatusException)
    {
        Log($"No OPC UA Server found at {connectionString}.",
            EventLogEntryType.Warning);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想对我的服务方法进行单元测试,但我不知道如何模拟 OPC …

c# nunit unit-testing opc-ua unified-automation-sdk

5
推荐指数
0
解决办法
1419
查看次数

如何配置 Nexus Repository Manager 以支持 npm 审计

当我尝试npm audit在我的(Angular 7)应用程序中执行时,我收到以下 npm 错误:

npm 错误!代码 ENOAUDIT
npm ERR!审计 您配置的注册表 ( https://nexus.xxx.com/repository/yyy/ ) 不支持审计请求,或者审计端点暂时不可用。

有谁知道我如何让 Nexus 支持npm audit

audit nexus npm npm-audit

4
推荐指数
2
解决办法
2622
查看次数

如何让 PhpStorm 理解同一项目中 HEREDOC 中的不同 SQL 方言

我的 PHP 7.3 应用程序连接到 MS SQL Server 或 MariaDB,具体取决于在 Windows 或 Linux 下运行。

对于我的查询,我有时使用 SQL Server 语法编写查询,有时使用 MySQL 语法编写查询。对于代码验证等,我通过 HEREDOC使用PhpStorm 的语言注入

当然,只有在项目中配置的方言才能正确验证。

例子:

switch ($dt_type) {
    case 'MSSQL':
        $sql_string = <<<SQL
            [MSSQL query here]
        SQL;
    case 'MYSQL':
    case 'MSSQL':
        $sql_string = <<<SQL
            [MYSQL query here]
        SQL;
}
Run Code Online (Sandbox Code Playgroud)

我在我的项目中配置了 MSSQL 方言,因此 PhpStorm(正确地,预期地)将我的 MySQL 查询标记为无效并怪异的语法突出显示。

有没有办法告诉 PhpStorm,一个特定的字符串应该用不同的 SQL 方言进行验证,例如通过在该字符串声明之前的注释中声明它?我尝试了@lang注释和语言注入注释.. 没有任何成功。

我知道这可能是不可能的,但也许有人知道一个技巧?

mysql sql-server syntax-highlighting heredoc phpstorm

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