小编Ale*_*kiy的帖子

在Node.js中的两个不同进程之间进行通信

问题是:

  • 让我们假设我们有两个运行的Node.js进程:example1.jsexample2.js.

  • example1.js那里有作为结果func1(input)返回的函数result1.

  • 有没有办法从内部example2.js呼唤func1(input)并获得result1结果?

根据我对Node.js的了解,我发现了一个使用套接字进行通信的解决方案.这不太理想,因为它需要一个进程监听端口.如果可能的话我希望避免这种情况.


编辑: 经过一些问题我想补充说,在层次结构example1.js中不能是子过程example2.js,而是相反.此外,如果它有帮助 - 只有一个example1.js处理自己的数据,许多example2.js人处理自己的数据+来自第一个进程的数据.

process node.js

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

git将NOT当前分支推送到远程

有没有办法在git 存储库中推送一个现在不在HEAD中的分支?

例如,我有两个分支:

$ git branch
* master
  another
Run Code Online (Sandbox Code Playgroud)

我有两个遥控器设置:originanother.

我需要能够在不改变HEAD的情况下从一个命令推another送到another/another一个命令.

git git-push

28
推荐指数
2
解决办法
5679
查看次数

git - 在裸存储库下检出单个文件

在服务器上,我有裸存储库,它是开发过程的起源,并简化了到QA环境的部署.

所以post-receive它根本

GIT_WORK_TREE=/home/dev git checkout -f
Run Code Online (Sandbox Code Playgroud)

但随着产品变得越来越复杂,还应该发生其他一些事情.所以现在它由deploy.sh脚本处理,脚本也被存储库跟踪.所以我想做的是能够而不是检查整个存储库只是结账deploy.sh并运行它.我认为这样的东西会起作用:

SOURCE_PATH="/home/dev"
GIT_WORK_TREE=$SOURCE_PATH git checkout deploy.sh
$SOURCE_PATH"/deploy.sh"
Run Code Online (Sandbox Code Playgroud)

但它不起作用给出错误:

error: pathspec 'deploy.sh' did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?或者这样做是不可能的?

git sh githooks

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

基于Cookie的WebSockets负载均衡?

我的情况是我们目前正在编写一个在线应用程序,它在服务器端使用Node.js和WebSocket监听器.我们有两个不同的部分:一个服务页面,使用node.js和express + ejs,另一个是完全不同的应用程序,只包含用于websockets的socket.io库.所以这里我们来讨论websockets部分的可伸缩性问题.

我们发现的一个解决方案是在服务器之间使用redis和共享套接字信息,但由于体系结构,它需要共享其他信息的负载,这将在服务器上产生巨大的开销.

在这个介绍之后,我的问题是 - 是否可以为websockets使用基于cookie的负载平衡?因此,假设来自用户的每个连接都使用cookie server = server1将始终转发到server1,并且每个与cookie server = server2的连接将是fw到server2,并且没有这样的cookie的连接将是fw到最不忙的服务器.

更新:正如一个'答案'所说 - 是的,我知道这存在.只是不记得那个名字是粘性会话.但问题是 - 这对websockets有用吗?有任何可能的并发症吗?

scalability load-balancing websocket node.js

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

如何编译ELF二进制文件以便它可以作为动态库加载?

这是一个理论问题.我知道也许最好的做法是使用共享库.但我遇到了这个问题,似乎无法在任何地方找到答案.

如何构建代码并用ELF格式编译一个C/C++程序,以便可以加载dlopen()

例如,如果一个可执行文件包含某个函数的实现,int test()并且我想从我的程序中调用此函数(并且最好得到函数的结果),如果可能的话,我该怎么做呢?

在伪代码中,我可以将其描述如下:

ELF可执行文件来源:

void main() {
    int i = test();
    printf("Returned: %d", i);//Prints "Returned: 5"
}

int test() {
    return 5;
}
Run Code Online (Sandbox Code Playgroud)

外部计划:

// ... Somehow load executable from above
void main() {
    int i = test();
    printf("Returned: %d", i);//Must print "Returned: 5"
}
Run Code Online (Sandbox Code Playgroud)

c linux elf dlopen dynamic-library

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

如何在shell脚本中将部分变量提取到另一个变量中

我有一个看起来像xx-xx-xx-xx的变量,其中每个xx是一个数字(每个xx的长度未知)

我需要在单独的变量中提取这些数字才能操作它们.我试着看看正则表达式,但看不出任何解决方案(或者我只是盲目不注意.

理想情况下解决方案应该是这样

#!/bin/sh
# assume VARIABLE equals 1234-123-456-890
VARIABLE=$1

# HERE SOME CODE assigning variables $PART1 $PART2 $PART3 $PART4

echo $PART1-$PART2-$PART3-$PART4
# Output will give us back 1234-123-456-890
Run Code Online (Sandbox Code Playgroud)

我是shell脚本的新手,所以我可能错过了一些东西.

bash shell sh

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

nodejs模块不导出函数

我遇到了Nodejs应用程序的问题.我有两个不同的应用程序正在使用共享库,它位于node_modules中的一级.所以我有这个结构./app1/app.js,./app2/app.js并且./node_modules/shared.libs/index.js.

shared.libs反过来安装了一些其他模块,如猫鼬,redis等.还有一些mogoose模型,其中还有其他功能.所有都是这样导出的index.js:

exports.async = require('async');
exports.config = require('./config');
exports.utils = require('./lib/utils');
Run Code Online (Sandbox Code Playgroud)

然后在应用程序中我导入它们像这样:

var libs = require('shared.libs');
var config = libs.config;
Run Code Online (Sandbox Code Playgroud)

所以在这段代码之后,我可以使用config来自该共享库的代码.这部分过去和现在都很好.但现在我需要在这个库的顶部添加额外的层(阅读:为这两个应用程序提供更多统一的界面).我试图做的是在index.js共享库中添加一些函数,然后使用这些函数导出整个对象.但每当我尝试调用以前导入的(by var libs = require('shared.libs');)对象时,它表示libs没有定义.

我在这做错了什么?

我通常希望保持其他代码相同,所以我不需要在require任何地方替换部分,但同时从共享库中提供可从该导入libs对象获得的其他功能.

node.js

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

在MongoDB中获取文档子集的效果如何?

如果我们有一个集合photos,每个条目都是一个大文档,其中包含有关照片的所有信息,包括视图详细信息和详细的upvotes/downvotes.

{
_id:ObjectId('...'),
title:'...',
location:'...',
views:[
    {...},
    {...},
    ...
    ],
upvotes:[
    {...},
    {...},
    ...
    ],
downvotes:[
    {...},
    {...},
    ...
    ],
}
Run Code Online (Sandbox Code Playgroud)

哪个查询可以更快地工作并且更有效(内存,CPU使用率):

db.photos.find().limit(100)
Run Code Online (Sandbox Code Playgroud)

要么

db.photos.find({}, {views:0,upvotes:0,downvotes:0}).limit(100)
Run Code Online (Sandbox Code Playgroud)

performance mongodb

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

如何在bash中编写看门狗守护进程?

我想要一种在shell脚本中编写守护进程的方法,该脚本在循环中运行另一个应用程序,如果它死了则重新启动它.

  • ./myscript.sh从SSH会话运行时,它将启动守护程序的新实例,除非该守护程序已在运行.
  • 当SSH会话结束时,守护程序将保持不变.
  • 应该有一个参数(./myscript -stop)可以杀死任何现有的守护进程.

(关于编辑的注意事项 - 原始问题指出nohup并且可能不使用类似工具.这个人工要求是一个"XY问题",并且接受的答案实际上使用了OP声称无法使用的所有工具.)

bash shell daemon nohup

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

mongod进程过多

我们有运行3个不同的node.js应用程序的测试服务器。每个应用程序都使用相同的MongoDB数据库测试实例,该实例也在同一服务器上运行。因此,在任何给定的时间,我们最多有3个与mongodb服务器的不同开放连接。

问题是每次部署代码后(基本上是:杀死当前正在运行的进程,代码更新并启动新进程),我在服务器上看到新进程(单个进程的线程),在htop中显示为/usr/bin/mongod --config /etc/mongodb.conf。因此,我们不得不不时地重新启动测试服务器,因为有太多这样的未使用线程,这使mongod进程占用了所有RAM。

我不确定为什么会这样,并正在寻找解决方案来解决此问题。

我的假设是,如果我们只是简单地终止了node.js进程,连接(以及与此连接相关的线程)仍然会保持活动状态,因此,除了终止nodejs进程外,我们还应该通过关闭数据库连接来优雅地关闭它。

mongodb node.js

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