小编par*_*nza的帖子

Apache NiFi ExecuteScript:Groovy脚本,用于通过映射文件替换Json值

我正在使用Groovy脚本上的Apache NiFi 0.5.1来将传入的Json值替换为映射文件中包含的值.映射文件看起来像这样(它是一个简单的.txt):

Header1;Header2;Header3
 A;some text;A2
Run Code Online (Sandbox Code Playgroud)

我从以下开始:

import groovy.json.JsonBuilder 
import groovy.json.JsonSlurper 
import java.nio.charset.StandardCharsets 

def flowFile = session.get(); 
if (flowFile == null) { 
    return; 
} 

flowFile = session.write(flowFile, 
        { inputStream, outputStream -> 

            def content = """ 
{ 
  "field1": "A"
  "field2": "A", 
  "field3": "A" 

}""" 

            def slurped = new JsonSlurper().parseText(content) 
            def builder = new JsonBuilder(slurped) 
            builder.content.field1 = "A"
            builder.content.field2 = "some text" 
            builder.content.field3 = "A2" 
            outputStream.write(builder.toPrettyString().getBytes(StandardCharsets.UTF_8)) 
        } as StreamCallback) 
session.transfer(flowFile, ExecuteScript.REL_SUCCESS)
Run Code Online (Sandbox Code Playgroud)

这第一步工作得很好,虽然它是硬编码的,但远非理想.我最初的想法是使用ReplaceTextWithMapping来执行替换,但是它不适用于复杂的映射文件(例如多列).我想更进一步,但我不知道如何去做.首先,我想读取传入的流文件,而不是传入整个编码的JSON.这怎么可能在NiFi?在将脚本作为ExecuteScript的一部分运行之前,我通过UpdateAttribute输出带有内容的.Json文件,其中filename = myResultingJSON.json.此外,我知道如何使用Groovy(String mappingContent= new File('/path/to/file').getText('UTF-8')加载.txt文件,但是如何使用加载的文件来执行替换,以便我生成的JSON看起来像这样:

{ 
  "field1": "A" …
Run Code Online (Sandbox Code Playgroud)

groovy json apache-nifi

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

能够在IntelliJ中将Gradle项目转换为Maven并保留两个构建文件

我一直很高兴使用IntelliJ + Gradle,但最近我被要求转移到Maven作为构建工具.有没有一种简单的方法可以在IntelliJ中将Gradle项目转换为Maven,或者保留两个配置文件(build.gradle和pom.xml)?根据Gradle build.gradle到Maven pom.xml,我使用了Gradle Maven的插件并在build/poms中生成了pom.xml文件,但是我想将build.gradle和pom.xml保持在同一级别使用任何首选项构建项目的能力.那可能吗?

谢谢,

intellij-idea gradle maven

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

Mongodb Atlas 的 Terraform 提供程序:我的数据库在哪里?

我已经通过 Mongodb terraform 提供程序成功创建了项目、用户和集群,但是我希望看到在我的新集群下已经创建的数据库,但找不到该数据库。我不确定它缺少什么或不正确,并且我在文档中找不到任何与我自己实现的内容不同的示例/信息。以下是我的 main.tf 文件中的相关信息:

# Create a db user
resource "mongodbatlas_database_user" "mongodb_user" {
  username = "${var.database_username}"
  password = "${random_string.master_password.result}"
  project_id = "${mongodbatlas_project.mongodb.id}"
  database_name  = "admin"

  roles {
    role_name = "readWrite"
    database_name = "admin"
  }
}
Run Code Online (Sandbox Code Playgroud)

团体

resource "mongodbatlas_project" "mongodb"{
  org_id = "${var.mongodb_atlas_org_id}"
  name = "${var.project_name}-${var.stage}"
 }
Run Code Online (Sandbox Code Playgroud)

# Create a cluster
resource "mongodbatlas_cluster" "mongodb-cluster" {
  project_id = "${mongodbatlas_project.mongodb.id}"
  name = "${var.cluster_name}-${var.stage}"
  num_shards = 1

  replication_factor = 3
  backup_enabled = true
  auto_scaling_disk_gb_enabled = true
  mongo_db_major_version = "4.0"

  //Provider Settings …
Run Code Online (Sandbox Code Playgroud)

terraform mongodb-atlas terragrunt terraform-provider-aws

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

NVDA 没有读取跨度中的 aria-label - 还有什么选择?

我对可访问性问题相当陌生,我正在尝试在 NVDA 中读取 aria 标签。

这是我的 HTML:

    <div class="myClass">
          <input type="checkbox" name="mycheckbox" id="toggle" onclick="togglelongText()"aria-label="tldr">
          <label for="toggle" aria-label="tldr"><span class="active" aria-label="tldr">tl;dr</span>
          <span class="toggleshape"></span><span class="inactive" aria-hidden="true">tl;dr</span></label>
    </div>
Run Code Online (Sandbox Code Playgroud)

无法在 Windows 上的 NVDA 上读取标签,并且我发现如果元素位于 div 或 span 内,则不会始终成功:

https://www.w3.org/WAI/GL/wiki/Using_aria-label_to_provide_an_invisible_label

有哪些替代方案?你能帮我吗?

谢谢,

问候,

P。

编辑:

我做了一些返工,我设法让 aria 标签仅部分工作,因为它现在显示为“tl;dr”。已在 Windows 7 上使用 Chrome 54、IE 11 和 Firefox 49 对此进行了测试,所有版本都存在相同的问题。这是修改后的代码:

<div class="myClass">
    <input type="checkbox" tabindex="0" name="mycheckbox" id="toggle" onclick="toggleLongText()" 
     aria-label="TL;DR switch">
    <label for="toggle" aria-label="TL;DR switch"><span class="active" tabindex="0" 
     aria-label="TL;DR switch">tl;dr</span><span class="toggleshape"></span>
     <span class="inactive">tl;dr</span></label>
</div>
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

screen-readers nvda

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

Nats/Jetstream:命令主题的命名约定

我现在已经在 CQRS/Event 采购项目中与 Nats/Jetstream 合作了一段时间。最近,我发现我没有遵循任何用于命令的主题名称的命名约定(事件几乎被涵盖)。到目前为止所做的事情如下:

myProjectName.internal.pricing
Run Code Online (Sandbox Code Playgroud)

意思是myProjectName我的项目名称,internal因为它是我项目中特定服务的内部,然后最终是该命令执行的操作(例如一些定价逻辑)。有没有我可以使用的广泛使用的命名约定?如果您可以分享我可以用来在我的项目中进行更好命名的任何视图或资源,我将不胜感激。

谢谢

command nats.io nats-jetstream

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

SpringBoot/Kotlin 和通过内容协商进行版本控制:正确的方法?

我一直在尝试使用 Content Negotiation 作为 SpringBoot/Kotlin 应用程序的后端版本控制。我有以下几点:

 @GetMapping("/user", produces = [MediaType.APPLICATION_JSON_VALUE])
      fun getUsers() {
        //some code here
      }
Run Code Online (Sandbox Code Playgroud)

我发现这个项目结合了“接受”标头和“接受版本”自定义标头。我想知道这是否是实现内容协商方法的正确方法,如果不是,我该如何解决?

@GetMapping("/user", produces = [MediaType.APPLICATION_JSON_VALUE], headers = ["Accept-Version=$CUSTOM_ACCEPT_HEADER"])
          fun getUsers() {
            //some code here
          }

object VersioningUtility {
  const val CUSTOM_ACCEPT_HEADER = "vnd.sample.com-v1+json"
  //here more constants as each controller can be versioned independently
}
Run Code Online (Sandbox Code Playgroud)

谢谢

kotlin spring-boot api-versioning

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

Notepad ++中一行的最大长度

我想知道是否有可能计算出Notepad ++中每行的最大长度,并仅突出显示超过某个阈值的那些行.我知道有一种方法可以通过自定义垂直边缘间接地完成它,但如果你有一个很长的文档要滚动它就不可行.

谢谢,

一世.

notepad++

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

使用XSLT删除字符串的第一个和最后一个字符

我需要使用样式表转换将Solr服务器的响应转换为类似XML的格式.Solr模式中的许多字段都是多值的,包括方括号,表示数组.出于显示目的,我想在字段值的开头和结尾删除这些括号.目前,我的XSLT看起来像这样(该示例引用了字段标题并处理没有标题的记录:

<pnx:title>
      <xsl:variable name="title">
              <xsl:choose>
              <xsl:when test="string-length(field[@name='title']) &gt; 0">
              <xsl:value-of select="field[@name='title']" />
              </xsl:when>
              <xsl:otherwise>
              <xsl:value-of select="field[@name='text']" />
              </xsl:otherwise>
              </xsl:choose>
              </xsl:variable>

              <!-- handle empty title -->
              <xsl:choose>
              <xsl:when test="string-length($title) = 0">
              Untitled
              </xsl:when>
              <xsl:otherwise>
              <xsl:value-of select="$title"/>
              </xsl:otherwise>
              </xsl:choose>
              </pnx:title>
Run Code Online (Sandbox Code Playgroud)

我通常会使用substring(string,number,number)从字符串中删除字符,但在这种情况下我不知道最后一个字符的位置.任何的想法?

谢谢,我.

regex xml xslt solr

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

CSS - 为不同的字符编码指定多种字体 -

我想允许将多种字体应用于可以具有不同字符编码的动态生成的内容.我用这个font-face方法来修改CSS,如下所示:

.ResultsTitleClass{ font-family: 'custom-font', Arial Unicode MS, Arial, verdana; !important ; }

@font-face {
font-family: 'custom-font';
    src: url('tt0596m0-webfont.eot');
    src: url('tt0596m0-webfont.eot?#iefix') format('embedded-opentype'),
         url('tt0596m0-webfont.woff') format('woff'),
         url('tt0596m0-webfont.ttf') format('truetype'),
         url('tt0596m0-webfont.svg#custom-font') format('svg');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)

我的理解是font-face允许指定自定义字体和后备列表.但是,我的自定义字体的目的是处理记录标题,包括希腊语,俄语,希伯来语收缩,我不希望这通常适用于罗马语脚本语言(使用Arial).有人建议我写一些客户端javascript来读取标题,并寻找扩展的Unicode字符或编码字符.如果找到一些,则更新应用的CSS类.但是,我想考虑不同的解决方案.有没有替代解决方案?

我对CSS和字体不是特别有信心,所以希望我的问题得到清楚解释!

谢谢,

一世.

css encoding font-face

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

计算多个文件中的所有单词并输出每个计数及其文件名

我正在努力解决以下问题.我有一个包含~60K文件的Unix目录,我希望能够计算每个文件中的所有单词,并输出一个列表,每个计数及其相应的文件名.

unix word-count

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