小编sum*_*ght的帖子

NodeJS fs.unlink() 不释放文件句柄

我正在使用以下调用删除在 Linux (RHEL) 上运行的 nodeJS 应用程序中的现有文件。

fs.unlink(downloadsFolder + '/' + file)
Run Code Online (Sandbox Code Playgroud)

然而,几天后我注意到文件仍在系统中,因为文件句柄没有被释放。我重新启动了节点服务器,这些文件最终消失了。如何以编程方式解决此问题?

dzdo lsof -L | grep -i deleted

node  48782  root 600743243   403197165 /mnt/downloads/file_1516312894734.csv (deleted)
node  48782  root 14999       403197166 /mnt/downloads/file_1516729327306.csv (deleted)
Run Code Online (Sandbox Code Playgroud)

我也在日志中收到了这个警告fs.unlink(),这会导致它吗?

(node:48782) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.

linux node.js

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

Python:加入多个组件来构建URL

我试图通过加入一些动态组件来构建一个URL.我想os.path.join()在我的案例中使用像BUT这样的URL.从研究中我发现urlparse.urljoin()了同样的事情.但是,它看起来一次只需要两个参数.

到目前为止我有以下工作,但看起来很重复:

    a = urlparse.urljoin(environment, schedule_uri)
    b = urlparse.urljoin(a, str(events_to_hours))
    c = urlparse.urljoin(b, str(events_from_date))
    d = urlparse.urljoin(c, str(api_version))
    e = urlparse.urljoin(d, str(id))
    url = e + '.json'
Run Code Online (Sandbox Code Playgroud)

输出= http://example.com/schedule/12/20160322/v1/1.json

上面的工作,我试图这样缩短:

url_join_items = [environment, schedule_uri, str(events_to_hours),
                  str(events_from_date), str(api_version), str(id), ".json"]
new_url = ""
for url_items in url_join_items:
    new_url = urlparse.urljoin(new_url, url_items)
Run Code Online (Sandbox Code Playgroud)

输出: http://example.com/schedule/.json

但第二个实现不起作用.请建议我如何解决这个或更好的方法.

编辑1:reduce解决方案的输出看起来像这样(不幸的是):输出:http://example.com/schedule/.json

python url-parsing

4
推荐指数
3
解决办法
6746
查看次数

Apache Nifi:使用GetFile将文件传递到ExecuteProcess

我有一个python脚本,它接受命令行参数来解密文件.要执行的python命令如下所示:

python decrypt.py -f "file_to_decrypt.enc" -k "private_key_file.txt"

我正在尝试使用GetFile处理器来挑选这些文件,NiFi因为我可以在日志中看到文件名.

另一方面,我有一个ExecuteProcess进程设置来运行如上所述的python脚本.但是,我需要将文件名传递ExecuteProcess给Python脚本才能工作.所以我的问题是,我怎么管这些文件从GetFile过程到ExecuteProcess processApache NiFi

apache-nifi

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

将所有 python 依赖项捆绑到类似 fatjar 的 zip 文件中

我有一个依赖于pycrypto,boto3和 的python 脚本pyYaml。我必须将此脚本交付给完全非技术性的客户,甚至可能无法访问互联网。

有没有一种方法可以将所有内容打包在一起,以便客户只需提取 zip 文件并让脚本开箱即用?此外,该脚本应该能够在 Windows/Mac/Linux 上运行,并且它们也可以有自己的 .zip 文件。

我过去曾与piprequirements.txt和合作过,但从未做过像这样非常基本的事情。setuptools实现这一目标的最佳方法是什么?

python

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

使用Nifi ExecuteScript处理器生成多个流文件

我正在开发一个Nifi流程,我正在获取一个包含多个键值对的JSON文档.我正在使用ExecuteScript处理器python.

我的目标是在JSON上创建各种URLS keys.键是数字的,它们看起来像这样:

keys = [10200, 10201, 10202, ...]
Run Code Online (Sandbox Code Playgroud)

我想要的URL有3种类型,它们应该如下所示:

http://google.com/10200
http://bing.com/10200
http://yahoo.com/10200
Run Code Online (Sandbox Code Playgroud)

我试图遍历我,keys[]并为它包含的每个数字键创建3个特定的URL.我有以下代码,我想:

从列表中读取数字键-->创建3个URL -->吐出流文件.

......并读取列表中的下一个数字键并保持循环.....

我有以下代码,但是当我给它一个JSON流文件时,它现在没有做任何事情.有人可以告诉我我做错了什么吗?

import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback

class ModJSON(StreamCallback):

  def __init__(self):
        self.parentFlowFile = None
        pass
  def process(self, inputStream, outputStream):
    text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
    obj = json.loads(text)
    flowfiles_list = [] 

    outputStream.write(bytearray(json.dumps(obj.keys(), indent=4).encode('utf-8')))


    for numerical_key in obj.keys():
      # create 1 flowfile for each …
Run Code Online (Sandbox Code Playgroud)

python apache-nifi

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

索引0处的数组为空

String A = "00000000"; //8-bit
String [] Aarr = A.split("");
String [] Aarr1= Aarr.clone();
//trying to do a arithmetic right shift here
Aarr[0]=Aarr1[0];
Aarr[1]=Aarr1[0];
Aarr[2]=Aarr1[1];
Aarr[3]=Aarr1[2];
Aarr[4]=Aarr1[3];
Aarr[5]=Aarr1[4];
Aarr[6]=Aarr1[5];
Aarr[7]=Aarr1[6];
System.out.print(Arrays.toString(Aarr));
Run Code Online (Sandbox Code Playgroud)

为什么我将输出设为[,, 0,0,0,0,0,0,0]而不是[,0,0,0,0,0,0,0,0],其中第一个元素为空?

java

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

如何在多个字段中搜索文本或表达式

db.movies.find({"original_title" : {$regex: input_data, $options:'i'}}, function (err, datares){
            if (err || datares == false) {
                db.movies.find({"release_date" : {$regex: input_data + ".*", $options:'i'}}, function (err, datares){
                    if(err || datares == false){
                        db.movies.find({"cast" : {$regex: input_data, $options:'i'}}, function (err, datares){
                            if(err || datares == false){
                                db.movies.find({"writers" : {$regex: input_data, $options:'i'}}, function (err, datares){
                                    if(err || datares == false){
                                        db.movies.find({"genres.name" : {$regex: input_data, $options:'i'}}, function (err, datares){
                                            if(err || datares == false){
                                                db.movies.find({"directors" : {$regex: input_data, $options:'i'}}, function (err, datares){
                                                    if(err || datares …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query mongojs

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

为什么我的构造函数没有实例化变量?

为什么值clowns等于0以下?

如果我打印numOfDecks,它会3按预期打印出来.

public class CardSet {

private static int numOfDecks;
char suits [] = {'a','s','h','c'};
char ranks [] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'};

public CardSet(int number){

    if (number > 0) {
        this.numOfDecks = number;

    }
    else this.numOfDecks = 3;
}

public static int getNumOfDecks(){
    return numOfDecks;
}

static int clowns = numOfDecks;

public static void main (String [] args){
    CardSet cards = new CardSet(3);
    System.out.println(clowns); //prints out 0
    System.out.println(numOfDecks); // prints out 3
}
Run Code Online (Sandbox Code Playgroud)

java

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

如何打印 BSONDocument 的内容

我很想使用reactiveMongo 实现CRUD 操作,这里是我从在线教程中找到的函数。

def findTicker(ticker: String) = {
    val query = BSONDocument("firstName" -> ticker)
    val future = collection.find(query).one

    future.onComplete {
      case Failure(e) => throw e
      case Success(result) => {
        println(result)

      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个结果:

Some(BSONDocument(<non-empty>))

我如何才能真正看到我正在寻找的实际可读 JSON 数据:

{ "_id" : ObjectId("569914557b85c62b49634c1d"), "firstName" : "Stephane", "lastName" : "Godbillon", "age" : 29 }

scala bson playframework reactivemongo

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

在Chef文件资源中动态添加当前用户名

我有以下方法将一些数据写入用户主目录chef中的文件中。current如您所见,vagrant在我的例子中,用户是硬编码的。我必须做什么才能使代码user根据当前登录的人动态获取?

file '/home/vagrant/.ssh/id_rsa' do
  content "This is the super secret"
  mode '0755'
  owner 'vagrant'
  group 'vagrant'
end
Run Code Online (Sandbox Code Playgroud)

我尝试做类似以下的事情,但它不起作用:

file '/home/#{node['user']}/.ssh/id_rsa'

recipe chef-infra

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

如何使用ReactiveMongo更新文档

当我找到时,我从MongoDB返回以下文档列表"campaignID":"DEMO-1".

[
  {
    "_id": {
      "$oid": "56be0e8b3cf8a2d4f87ddb97"
    },
    "campaignID": "DEMO-1",
    "revision": 1,
    "action": [
      "kick",
      "punch"
    ],

    "transactionID": 20160212095539543
  },
  {
    "_id": {
      "$oid": "56c178215886447ea261710f"
    },
    "transactionID": 20160215000257159,
    "campaignID": "DEMO-1",
    "revision": 2,
    "action": [
      "kick"
    ],
    "transactionID": 20160212095539578
  }
]
Run Code Online (Sandbox Code Playgroud)

现在,我在这里尝试做的是给定的campaignID我需要找到它的所有版本(在我的情况下是修订版)并将action字段修改为deadString类型.我阅读了文档,他们的例子太简单了,在我的案例中没有太大帮助.这就是文档所说的:

val selector = BSONDocument("name" -> "Jack")

val modifier = BSONDocument(
  "$set" -> BSONDocument(
    "lastName" -> "London",
    "firstName" -> "Jack"),
    "$unset" -> BSONDocument(
      "name" -> 1))

// get a future update
val …
Run Code Online (Sandbox Code Playgroud)

scala reactivemongo

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

如何在JavaScript中将对象安全地包装到数组中

我有一个函数,它接受一个Array,迭代它找到所有Objects并将它们显示到UI.

在极少数情况下,我必须提供一个Object(来自WSas的结果application/JSON)Array默认情况下不是,因此我的函数无法迭代它并显示在UI上.

在正常情况下,我Array看起来像这样:

[
  { "name" : "foo"},
  { "name" : "bar"},
  { "name" : "baz"}
]
Run Code Online (Sandbox Code Playgroud)

这就像它应该的那样.但是,有时我得到的数据可能是这样的:

{ "name" : "I am not in a List"}
Run Code Online (Sandbox Code Playgroud)

并且我接受数组的函数如下所示:

function loadJSONIntoUI(data) {

    for (var aMsg = 0; aMsg < data.length(); aMsg++) {
        // Do something with each `index` in the List
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以检测到不是数组的单个对象是奇怪的,可能会将它放入List中并将其传递给函数?

到目前为止,我已经尝试使用typeof并尝试创建一个新Array的动态和push我的对象,但它打印出来的1时候我这样做.

javascript arrays javascript-objects

0
推荐指数
4
解决办法
7100
查看次数

这到底是什么意思?

任何人都可以解释我下面的代码行产生了什么?

i = 1<<(sizeof(n) * 8 - 1);
Run Code Online (Sandbox Code Playgroud)

你可以为'n'假设你想要的任何价值.我试图使用Booths算法实现一个8位乘法程序.

c++

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