我写了一个Node.js应用程序,我希望它能在我们的一台生产机器上运行.这似乎是一个非常常见的请求,但我找不到合适的解决方案.是否没有用于部署生产Node.js应用程序的既定解决方案?
该应用程序很简单(<100 LOC),但需要非常高效,可靠,并且可以连续运行多年而无需重新启动.它将在一个大型网站上运行,每秒有几十个连接.(该应用程序不用作Web服务器,它只有一个JSON API)
以下是我考虑过的方法,但我仍然不确定:
使用框架(例如Express)
因为应用程序需要高性能并且非常简单,所以我希望避免以框架的形式添加膨胀.
使用启动服务器 nohup
这里的主要问题是异常处理,我们(显然)不希望整个服务器因异常而崩溃.根据我的理解,将整个应用程序包装在一个try {} catch {}循环中将无济于事,因为Javascript解释器在异常后处于不可预测的状态.那是对的吗?
使用像Forever这样的东西
我在我们的FreeBSD机器上安装了Forever,它非常多.它最终催生了无法从Forever中杀死的无尽进程.我不得不跑去kill -9恢复我的机器,我对在Forever上运行生产应用程序感到不自信.似乎Upstart(类似的工具,但更通用)不会在FreeBSD上运行.
托管解决方案(例如,Heroku,Rackspace,Amazon EC2等)
这可能是最简单的解决方案,但我们已经为其余的Web服务器提供了一个严肃的硬件.出于财务考虑,它没有意义.
当然必须有一些既定的解决方案吗?我错过了什么吗?
作为一名工科学生,我想用python制作一个聊天机器人.所以,我搜索了很多,但无法真正找到可以教我的东西,或者给我一些具体信息来构建智能聊天机器人.
我想制作一个聊天机器人,提供类似人类的回应(就像朋友和你聊天一样).我目前期待它只是我笔记本电脑上的一个软件(希望以后在IM,IRC或网站上实现).
所以,我正在寻找一个教程/任何其他信息,这肯定会帮助我完成我的项目.
我在使用Pandas的groupby功能时遇到了麻烦.我已经阅读了文档,但是我无法弄清楚如何将聚合函数应用于多个列并为这些列提供自定义名称.
这非常接近,但返回的数据结构具有嵌套的列标题:
data.groupby("Country").agg(
{"column1": {"foo": sum()}, "column2": {"mean": np.mean, "std": np.std}})
Run Code Online (Sandbox Code Playgroud)
(即.我想取column2的mean和std,但将这些列作为"mean"和"std"返回)
我错过了什么?
考虑以下简单视图控制器:
class ViewController: UIViewController, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var items = ["One", "Two", "Three"]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(CustomTableViewCell.self, forCellReuseIdentifier: "customCell")
self.tableView.dataSource = self
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("customCell") as CustomTableViewCell
cell.titleLabel!.text = self.items[indexPath.row]
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
和自定义单元格视图:
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var titleLabel: UILabel!
}
Run Code Online (Sandbox Code Playgroud)
此代码导致以下错误.
致命错误:在展开Optional值时意外发现nil
titleLabel是零 - 不清楚为什么.设置 …
假设我有这样的格式(叫他们两个dataframes df1和df2):
+------------------------+------------------------+--------+
| user_id | business_id | rating |
+------------------------+------------------------+--------+
| rLtl8ZkDX5vH5nAx9C3q5Q | eIxSLxzIlfExI6vgAbn2JA | 4 |
| C6IOtaaYdLIT5fWd7ZYIuA | eIxSLxzIlfExI6vgAbn2JA | 5 |
| mlBC3pN9GXlUUfQi1qBBZA | KoIRdcIfh3XWxiCeV1BDmA | 3 |
+------------------------+------------------------+--------+
Run Code Online (Sandbox Code Playgroud)
我希望得到的是有一个共同的所有行的数据帧user_id中df1和df2.(即,如果user_id是在两个df1和df2,在输出中包括数据帧的两行)
我可以想出很多方法来解决这个问题,但它们都让我感到笨拙.例如,我们可以user_id在每个数据帧中找到所有唯一的s,创建一组,找到它们的交集,用结果集过滤两个数据帧并连接两个过滤的数据帧.
也许这是最好的方法,但我知道熊猫很聪明.有更简单的方法吗?我看过了,merge但我认为这不是我需要的.
给定一个十进制整数(例如65),如何反转Python中的底层位?即.以下操作:
65 ? 01000001 ? 10000010 ? 130
Run Code Online (Sandbox Code Playgroud)
看来这个任务可以分为三个步骤:
步骤#2和3似乎很简单(见本和本 SO问题关系到步骤#2),但我卡上的步骤1#.步骤#1的问题是检索带有填充零的完整十进制表示(即65 = 01000001,而不是1000001).
我四处寻找,但似乎找不到任何东西.
我想使用核心图来动态绘制线图.数据不会一次出现,我们将逐点接收动态.
是否可以使用核心绘图动态绘制图表,即在我们收到(x,y)点时逐点绘制?
请帮帮我,谢谢.
我希望让Socket.io 在Node.js v.0.6.0及更高版本中使用本机负载平衡("集群")进行多线程.
据我所知,Socket.io使用Redis来存储其内部数据.我的理解是:我们不想为每个工作者生成一个新的Redis实例,而是强制工作者使用与主服务器相同的Redis实例.因此,连接数据将在所有工作人员之间共享.
在主人中有类似的东西:
RedisInstance = new io.RedisStore;
Run Code Online (Sandbox Code Playgroud)
我们必须以某种方式传递RedisInstance给工人并做以下事情:
io.set('store', RedisInstance);
Run Code Online (Sandbox Code Playgroud)
受到使用旧的第三方集群模块的此实现的启发,我有以下非工作实现:
var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
var sio = require('socket.io')
, RedisStore = sio.RedisStore
, io = sio.listen(8080, options);
// Somehow pass this information to the workers
io.set('store', new RedisStore);
} else {
// Do the work …Run Code Online (Sandbox Code Playgroud) 我正在使用PostgreSQL的Ltree模块来存储分层数据.我希望检索按特定列排序的完整层次结构.
请考虑下表:
votes | path | ...
-------+-------+-----
1 | 1 | ...
2 | 1.1 | ...
4 | 1.2 | ...
1 | 1.2.1 | ...
3 | 2 | ...
1 | 2.1 | ...
2 | 2.1.1 | ...
4 | 2.1.2 | ...
... | ... | ...
Run Code Online (Sandbox Code Playgroud)
在我当前的实现中,我将查询数据库SELECT * FROM comments ORDER BY path,它将返回整个树:
Node 1
-- Node 1.1
-- Node 1.2
---- Node 1.2.1
Node 2
-- Node 2.1 …Run Code Online (Sandbox Code Playgroud) python ×4
ios ×2
javascript ×2
node.js ×2
pandas ×2
chatbot ×1
core-plot ×1
d3.js ×1
database ×1
dataframe ×1
deployment ×1
force-layout ×1
group-by ×1
hierarchy ×1
intersect ×1
iphone ×1
nlp ×1
postgresql ×1
python-2.7 ×1
socket.io ×1
swift ×1
tree ×1
uitableview ×1