小编Dri*_*ise的帖子

在asyncio协议/服务器之间进行通信

我正在尝试编写一个服务器端事件服务器,我可以使用telnet连接它,并将telnet内容推送到浏览器.使用Python和asyncio背后的想法是使用尽可能少的CPU,因为它将在Raspberry Pi上运行.

到目前为止,我有以下使用库中的库:https://pypi.python.org/pypi/asyncio-sse/0.1,它使用asyncio.

我还复制了一个使用asyncio的telnet服务器.

两者都分开工作,但我不知道如何将两者结合在一起.据我了解,我需要调用send()SSEHandler从内部类Telnet.data_received,但我不知道如何访问它.这两个"服务器"都需要在循环中运行才能接受新连接或推送数据.

任何人都可以帮忙,或指向另一个方向?

import asyncio
import sse

# Get an instance of the asyncio event loop
loop = asyncio.get_event_loop()

# Setup SSE address and port
sse_host, sse_port = '192.168.2.25', 8888

class Telnet(asyncio.Protocol):
    def connection_made(self, transport):
        print("Connection received!");
        self.transport = transport

    def data_received(self, data):
        print(data)
        self.transport.write(b'echo:')
        self.transport.write(data)

        # This is where I want to send data via SSE
        # SSEHandler.send(data)

        # Things I've tried :(
        #loop.call_soon_threadsafe(SSEHandler.handle_request());
        #loop.call_soon_threadsafe(sse_server.send("PAH!"));

    def connection_lost(self, esc): …
Run Code Online (Sandbox Code Playgroud)

python python-asyncio

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

在字符串文字的上下文中“R”是什么意思?

此代码基本上与 AMPS 服务器通信并尝试发布主题。

R)的第二个参数的含义是什么publish(

#include <ampsplusplus.hpp>
#include <iostream>

int main(void)
{
    const char* uri = "tcp://127.0.0.1:9007/amps/json";

    // Construct a client with the name "examplePublisher".

    AMPS::Client ampsClient("examplePublisher");

    try
    {
        // connect to the server and log on
        ampsClient.connect(uri);
        ampsClient.logon();

        // publish a JSON message
        ampsClient.publish("messages",
                           R"({ "message" : "Hello, World!" ,)"
                           R"(client" : 1 })");

    }
    catch (const AMPS::AMPSException&amp; e)
    {
        std::cerr << e.what() << std::endl;
        exit(1);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ string-literals

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

未初始化的值在Linux上的行为与预期不同,但不是Windows

为什么未初始化的"max"和"min"值适用于Linux而不适用于Windows?例如:

double max, min, test;
while (1)
{
  std::cin >> test;
  if (test > max)
    max = test;

  if (test < min)
    min = test;
}
Run Code Online (Sandbox Code Playgroud)

这适用于Linux.我知道一个事实,因为我一直在使用这个(虽然我直到现在还没有意识到这是多么可怕)至少3个月了.但是,许多同事告诉我,他们的机器上已经坏了:他们使用Visual Studio进行编译.他们的陈述是否有效,为什么?这仅仅是UB的情况吗?如果是这样的话,过去几个月没有我注意到它是如何运作的?

另请注意:gcc(Ubuntu/Linaro 4.5.2-8ubuntu4)4.5.2和Visual Studio 2010

c++ g++ visual-studio-2010

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

三元比较运算符重载

如何实现三元比较运算符来确定例如布尔值a < b < c

c++ operator-overloading

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

如何将此代码从 Dijkstra 转换为 Astar?

所以我有一个项目由于速度原因想切换到Astar。

但C++并不是我的强项。谁能帮助我(或告诉我如何做..)将算法从 Dijkstra 转换为 Astar?

我找到了这个 Astar 实现: http://code.google.com/p/a-star-algorithm-implementation/

但我不知道如何将它与我现有的代码一起使用。

这是获得算法的图形文件:

#include "Graph.h"
#include <iostream>
#include <algorithm>
#include <stack>

Graph::Graph(void)
{
}

Graph::~Graph(void)
{
    while(!mNodes.empty())
    {
        delete mNodes.back();
        mNodes.pop_back();
    }
}

void Graph::addNode(int name, bool exists, Node** NodeID )
{
    Node* pStart = NULL;
    mNodes.push_back(new Node(name,exists));
    std::vector<Node*>::iterator itr;
    itr = mNodes.begin()+mNodes.size()-1;
    pStart = (*itr);
    if(exists == true)pStart->DoesExist_yes();
    *NodeID = pStart;
}

void Graph::connect_oneway(Node* pFirst, Node* pSecond, int moveCost)
{
    if(pFirst != NULL && pSecond != NULL)
    {
        pFirst->createEdge(pSecond, moveCost);
    } …
Run Code Online (Sandbox Code Playgroud)

c++ a-star dijkstra

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

现在的视图显示黑屏,为什么?

我正在制作一个应用程序,如果特定日期已过,则会在启动应用程序后显示一个视图控制器。问题是:它只是返回黑屏。我已经测试了它,将呈现的视图控制器设置为初始视图控制器,并且它工作得很好;没有黑屏。因此,我的错误一定是在代码中。

我在以下位置调用这个函数viewDidAppear()

if date.hasPassed {
        presentView(fromDate: date)
    }
Run Code Online (Sandbox Code Playgroud)

这不是实际的代码,它更像是一个简化版本。在我的例子中,日期是数组中的自定义对象。该对象将其属性保存到 UserDefaults 中,以便它们可以显示在出现的视图控制器中。我的presentView(fromDate: date)功能如下:

func presentView(fromDate: date) {
    let vc = NewViewController()

    let title = date.title ?? "My date"
    let description = date.description ?? "My description"

    UserDefaults.standard.set(title, forKey: "title")
    UserDefaults.standard.set(description, forKey: "description")
    UserDefaults.standard.synchronize()

    self.present(vc, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

但当实际调用此函数时,它会呈现黑屏,但不会显示任何错误。你能告诉我为什么吗?

viewcontroller ios swift

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

多个表保存在同一个.fits文件中

我有多个表创建astropy.table.Table,例如:

 from astropy.table import Table
 import numpy as np
 #table 1
 ta=Table()
 ta["test1"]=np.arange(0,100.)
 #table 2
 tb=Table()
 tb["test2"]=np.arange(0,100.)
Run Code Online (Sandbox Code Playgroud)

我可以将它们单独保存到.fits文件中

ta.write('table1.fits')
tb.write('table2.fits')
Run Code Online (Sandbox Code Playgroud)

但是我希望将它们保存到同一个.fits文件中,每个文件都有不同的文件hdu.我怎样才能做到这一点?

python fits pyfits astropy

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

值符号更改后如何重置 cumsum?

In [46]: d = np.random.randn(10, 1) * 2

In [47]: df = pd.DataFrame(d.astype(int), columns=['data'])
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个 cumsum 列,它应该在数据列中的符号更改后重置,如下所示

   data  custom_cumsum
0    -2  -2
1    -1  -3 
2     1   1
3    -3  -3
4    -1  -4
5     2   2 
6     0   2 
7     3   5 
8    -1  -1 
9    -2  -3 
Run Code Online (Sandbox Code Playgroud)

我能够通过 实现这一点df.iterrows()。我试图避免迭代并通过向量运算来实现。当存在 NaN 时,有几个关于重置 cumsum的问题。我无法通过这些解决方案实现这个目标。

python dataframe pandas pandas-groupby

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

两个可以互相扩展的库

所以我正在为我和我的团队开发一个Modular C++库.这是我的情况:

我有一个A包含复杂存储控件的库class a.我还有一个库B,它类似于包含特殊响应的复杂协议的接口.现在,我希望在一个可以使用的类a中有一个函数B.这对于X使用A和的程序很有帮助B.但也有程序Y,它只会使用A而不是复杂的库B.

如何在C++中获得此行为?我是否需要宏,符号或是否有其他方法可以轻松实现这一点,以便我不需要在程序中包含额外的文件?哪种类型的库更好?

c++ class lib

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

构造函数调用的约束

我设计了InputField一个具有2个参数的构造函数的类:explicit InputField(InputFieldIndex uiIndex, QString sName) noexcept;

我将这个类存储在a中QVector,所以,不幸的是,我必须添加一个default-contructor.在软件设计方面,这对我不利(因为我有一个约束uiIndex).有没有办法只允许QT(QVector在我的情况下)调用默认构造函数?宏或预处理器指令?

c++ qt

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