小编mha*_*ken的帖子

从.NET Framework 4.6.2类库中定位.NET核心类库

我有一个使用.NET Core编写的库,目标是.netstandard2.0.根据这个站点,它应该兼容使用.NET 4.6.2和4.6.1版本的.NET Core库.但是,当我尝试构建我的.NET Framework库时,我收到此错误:

项目'c:\ myproj.csproj'的目标是'.NETStandard,Version = v2.0'.它不能被针对".NETFramework,Version = v4.6.2"的项目引用.

我正在使用Visual Studio 2017来构建库.我正在做什么不可能/支持我只是误解了网站上的信息?.NET Framework库引用System.Management.Automation并且是PowerShell模块,但也引用了.NET核心库中的代码,该代码也在其他项目中使用.

.net c# .net-core .net-4.6.2

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

Angular4材质md-table列宽自动调整大小与普通表一样

我在Angular 4应用程序中使用md-table,因为我在UI格式的其他部分使用Material.当我使用基本没有CSS的常规表时,列自动格式化以适应最宽的td元素.使用md-table,列的全部设置为相同的宽度,除以太宽的单元格,然后它扩展单元格并将该行中的其他单元格向右推动.我的常规表:

<md-tab label="Data" >
  <md-card class="datacard">
    <md-card-content>
      <div>
        <table class="datatable">
        ....
        </table>
      </div>
    </md-card-content>
  </md-card>
</md-tab>
Run Code Online (Sandbox Code Playgroud)

数据表css:

.datatable {
  border: 1px solid black;
  border-collapse: collapse;
  font-size: 10px;
  width: 100%;
  overflow-y:scroll;
}
Run Code Online (Sandbox Code Playgroud)

md表:

 <md-tab label="Data" >
   <md-card class="datacard">
     <md-card-content>
       <div>
        <div class="datatableheader">
          <md-input-container floatPlaceholder="never" id="filtercontainer">
            <input mdInput #filter placeholder="Filter services" />
          </md-input-container>
        </div>

        <md-table id="datatable" #datatable [dataSource]="resultDataSource" mdSort>

          <ng-container cdkColumnDef="Index">
            <md-header-cell *cdkHeaderCellDef md-sort-header>Index</md-header-cell>
            <md-cell *cdkCellDef="let result">{{result,Index}}</md-cell>
          </ng-container>

          <ng-container cdkColumnDef="Service">
            <md-header-cell *cdkHeaderCellDef md-sort-header>Service</md-header-cell>
            <md-cell *cdkCellDef="let result">{{result.Service}}</md-cell>
          </ng-container>

          <ng-container cdkColumnDef="Region">
            <md-header-cell *cdkHeaderCellDef …
Run Code Online (Sandbox Code Playgroud)

html-table css3 angular-material2 angular

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

JSON.NET JToken键区分大小写?

我不得不使用JSON.NET执行一些自定义反序列化,我发现它将JToken中的键值视为区分大小写.这是一些代码:

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
     JToken token = JToken.Load(reader);
     JToken version = token["version"];

     string ver = version.ToObject<string>();

     return new MyVersion(ver);
}
Run Code Online (Sandbox Code Playgroud)

version即使json在顶层包含一个版本元素,该变量仍为null,它只是大写:

{
    "VERSION" : "1.0",
    "NAME" : "john smith"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用JToken不区分大小写的键?或者也许没有JToken它的另一种方法可以让我抓住并反序列化各个属性?

编辑:

根据评论我最终做到了这一点:

JObject token = JObject.Load(reader);
string version = token.GetValue("version", StringComparison.OrdinalIgnoreCase).ToObject<string>(serializer);
Run Code Online (Sandbox Code Playgroud)

c# json json.net

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

为Presto和AWS S3设置独立的Hive Metastore服务

我的工作环境是将S3服务用作数据湖,但没有AWS Athena。我正在尝试设置Presto以能够查询S3中的数据,并且我知道我需要通过Hive Metastore服务将数据结构定义为Hive表。我正在Docker中部署每个组件,所以我想使容器的尺寸尽可能的小。我需要从Hive的哪些组件开始运行Metastore服务?我实际上并不真正在乎运行Hive,而只是在关心Metastore。我可以减少所需的东西,还是已经为此预先配置了软件包?我没有找到任何在线内容,其中不包括下载所有Hadoop和Hive。我想做的事可能吗?

hive presto hive-metastore

5
推荐指数
2
解决办法
2314
查看次数

Bash 正则表达式捕获组

我有一个这种格式的字符串:

"Mike H<michael.haken@email1.com>" michael.haken@email2.com "Mike H<hakenmt@email1.com>"
Run Code Online (Sandbox Code Playgroud)

如果我在 JS、C# 等中编写一个普通的正则表达式,我会这样做

(?:"(.+?)"|'(.+?)'|(\S+))
Run Code Online (Sandbox Code Playgroud)

并迭代匹配组以获取每个字符串,理想情况下没有引号。我最终想将每个值添加到数组中,因此在示例中,我最终会在数组中包含 3 个项目,如下所示:

Mike H<michael.haken@email1.com>
michael.haken@email2.com 
Mike H<hakenmt@email1.com>
Run Code Online (Sandbox Code Playgroud)

我不知道如何使用greporsed或 bash 正则表达式复制此功能。我尝试过一些类似的事情

echo "$email" | grep -oP "\"\K(.+?)(?=\")|'\K(.+?)(?=')|(\S+)"
Run Code Online (Sandbox Code Playgroud)

问题在于,虽然它有点模仿捕获组的功能,但它并不真正适用于倍数,所以我得到了类似的捕获

"Mike
H<michael.haken@email1.com>"
 michael.haken@email2.com 
Run Code Online (Sandbox Code Playgroud)

如果我删除前瞻/后视逻辑,我至少会得到 3 个字符串,但第一个和最后一个仍然用引号括起来。在这种方法中,我将输出通过管道传输到,read以便我可以将每个字符串单独添加到数组中,但我对其他选项持开放态度。

编辑:

我认为我的输入示例可能令人困惑,这只是一个可能的输入。实际输入可以是任意数量的任意顺序的双引号、单引号或非引号(无空格)字符串。我提供的 Javascript/C# 正则表达式是我试图实现的真实行为。

regex bash grep pcre

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

Angular 4 HttpModule如何从Get请求返回文件

我有一个REST API,如果我直接在浏览器中查询,它将返回一个JSON或CSV文件进行下载。我想对Angular HttpModule做同样的事情。

我的get请求很简单(它有一个查询字符串参数来指示要返回的文件格式):

public Submit(request: Request) {
  ...
  return this.http.get(url).subscribe(response => {
    //What here
  });
}
Run Code Online (Sandbox Code Playgroud)

响应内容类型为application/octet-stream。我尝试将响应作为Blob进行处理,但这不起作用。我如何才能将服务器的响应传递到浏览器,然后让其下载文件?此方法是响应按钮单击的组件正在调用的服务的一部分

onClick() {
    this._requestService.Submit(request); //This gets the Subscription response from the service, but I want it to let the broswer download the file
}
Run Code Online (Sandbox Code Playgroud)

angular

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

Docker 环境变量未覆盖

鉴于我有一个像这样的 dockerfile:

ARG MAX_MEMORY_PER_NODE="10GB"
ENV P_MAX_MEMORY_PER_NODE="${MAX_MEMORY_PER_NODE}"
ENTRYPOINT ["/var/p/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

Entrypoint.sh 的作用如下:

echo "Max memory ${P_MAX_MEMORY_PER_NODE}"
Run Code Online (Sandbox Code Playgroud)

如果我使用默认值运行容器,我会期望

Max Memory 10GB
Run Code Online (Sandbox Code Playgroud)

这可行,但如果我跑

docker run me/mycontainer:latest -e P_MAX_MEMORY_PER_NODE=1GB
Run Code Online (Sandbox Code Playgroud)

该脚本仍然使用默认值(不打印 1GB)。事实上,如果我跑:

docker run me/mycontainer:latest -e A_TEST=Hello
Run Code Online (Sandbox Code Playgroud)

剧本里有

echo "My test: ${A_TEST}"
Run Code Online (Sandbox Code Playgroud)

它会输出

My test:
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?我不能覆盖(甚至设置) docker run 入口点脚本中使用的环境变量吗?

environment-variables docker

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