我在Arduino上制作了"航点"的矢量.每个航点都是一个对象.Arduino显然需要为航点导航存储多个航路点.但是,不是将这些航点存储在标准的预编程阵列中,用户需要能够添加,删除航点并移动它们.不幸的是,Arduino不提供矢量类型作为内置库.
我目前正在考虑两种选择:
在容器中为C++'vector'这样的对象?有人发布了一个通用图书馆.它不包含任何索引删除或移动操作.但它确实包含一些内存管理策略.
我过去使用过malloc,dealloc,calloc.但我根本不喜欢这个选项,尤其是课程.但这在我的Senario中是一个更好的选择吗?
哪条路走得更好?
我很好奇,看看我是否可以使用它a<b<c作为条件而不使用标准a<b and b<c.所以我试了一下,我的测试结果通过了.
a = 1
b = 2
c = 3
assert(a<b<c) # In bounds test
assert(not(b<a<c)) # Out of bounds test
assert(not(a<c<b)) # Out of bounds test
Run Code Online (Sandbox Code Playgroud)
只是为了好的衡量,我尝试了更多的数字,这次是在负面区域.哪里a, b, c = -10, -9, -8.测试再次通过.即使是更高范围的测试套装也能正常工作a, b, c = 10, 11, 12.甚至a, b, c = 10, 20, 5.
和C++一样的实验.这是我的心态:
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
a=10;
b=20;
c=5;
cout << ((a<b<c)?"True":"False") << endl; // Provides True …Run Code Online (Sandbox Code Playgroud) 我试图通过websockets传递二进制数据,更具体地说是通过websockets传递压缩字符串.在我目前的设置中,我使用tornado作为服务器,其中websocket客户端传输二进制数据.二进制数据是通过压缩数据形成的zlib.客户端和服务器都很简单,如下所示.
服务器:
import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web
class WebSocketServer(tornado.websocket.WebSocketHandler):
def open(self):
print 'OPEN'
def on_message(self, message):
print 'len = {}'.format(len(message))
print 'GOT MESSAGE: {}'.format(message.decode('zlib'))
def on_close(self):
print 'CLOSE'
app = tornado.web.Application([
(r'/', WebSocketServer)
])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9500)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
客户:
import websocket
host = 'localhost'
port_ws = 9500
ws = websocket.create_connection('ws://{}:{}/'.format(host, port_ws))
message = 'this is my message'.encode('zlib')
print 'Length of message is {}'.format(len(message))
ws.send(message)
Run Code Online (Sandbox Code Playgroud)
客户端不会抛出任何错误,它会打印出消息:Length of message is 24.消息str …
我正在尝试编写ts-optchain. 功能将尝试返回具有拼接更改的根对象的副本。这样原件不会以任何方式改变或修改。然而,对于尚未修改的对象区域,它们作为引用(通过Object.assign(...))复制到浅复制操作中。
我试图验证的测试如下:
const example = { a: { b: { c: { d: 5 } } } };
const out = osc(example).a.b.c.d(6);
expect(out).to.be.deep.eq({ a: { b: { c: { d: 6 } } } });
Run Code Online (Sandbox Code Playgroud)
... 其中osc(可选设置链)是我对 mimmicopt-chain的oc功能所做的功能。
我期待结果有点类似于 Object.assign({}, example, {a: Object.assign({}, example.a, {b: Object.assign({}, example.a.b, {c: Object.assign({}, example.a.b.c, {d: 6})})})});
上述方法编写、阅读和维护都很痛苦。因此,使这个功能的推理。
我的尝试如下:
// ----- Types -----
// Generic type "R" -> The returned root object type …Run Code Online (Sandbox Code Playgroud) 我真的需要update使用对数函数对超过40万行执行。不幸的是,sql对数函数似乎在sqlite中不存在。有什么方法可以导出对数函数或导入该LOG函数?
我知道如何执行此操作的唯一其他方法是,我相信通过python来订购O(n ^ 2)。这种方法将花费太长时间(我尝试过,在速度较慢的计算机上花了大约5%的时间才花费了1.5个小时)。
编辑:
我还找出了花这么长时间的原因。数据库中的主键未标记为主键。因此,我使用的代码如下:
for row in database:
...calculations for the row...
...sql update for the specific row which follows:...
for search_row in database:
if search_row[id] = row[id]:
...update values here...
Run Code Online (Sandbox Code Playgroud)
效率极低... O(n ^ 2)
我使用龙卷风作为服务器.我希望它能接收二进制数据.服务器端就像简单的获取一样简单:
import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web
class WebSocketServer(tornado.websocket.WebSocketHandler):
def open(self):
print 'OPEN'
def on_message(self, message):
print 'GOT MESSAGE: {}'.format(message)
def on_close(self):
print 'CLOSE'
app = tornado.web.Application([
(r'/', WebSocketServer)
])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9500)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
此服务器仅用于可视化传入数据,不是太特别.服务器只能使用标准的ascii查找,但是当它获得任何unicode(我对伪二进制数据的测试)时会爆炸.我使用网站http://www.websocket.org/echo.html并重定向发送到ws://172.0.0.1:9500/我设置服务器的位置.服务器然后提示我非常讨厌的错误:
ERROR:tornado.application:Uncaught exception in /
Traceback (most recent call last):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/tornado/websocket.py", line 303, in wrapper
return callback(*args, **kwargs)
File "test.py", line 11, in on_message
print 'GOT MESSAGE: {}'.format(message)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position …Run Code Online (Sandbox Code Playgroud) 我最近在我的Mac上重新安装了pygame.我安装了pygame 1.9.2a0.我在我的Windows上有相同的版本和之前在这台Mac上的相同版本.但是这个新装置让我得到了奇怪的结果.我注意到所有绘制命令都工作正常,但由于某种原因点击pygame窗口没有.窗口在后台打开,这不正常,但这不是一个大问题.但随后所有按键被重定向到终端/ IDE(从应用程序运行).我在下面附上了一个我正在测试的非常简单的程序.该程序只查找转义键.请注意,这在我的Windows机器上运行正常.
TL; DR:当选择窗口时,为什么按键被发送到终端而不是pygame窗口的事件循环.
我对这个问题感到困惑,主要是因为我之前没有遇到过这样的问题.我也不确定如何调试此问题.如果需要其他信息,我很乐意提供.
import pygame
import sys
from pygame.locals import *
pygame.init()
size = width, height = 100, 100
screen = pygame.display.set_mode(size)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.event.post(pygame.event.Event(QUIT))
screen.fill((30, 30, 30))
pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)
对于好奇:
更新:
我有一个理论认为其中一个较新的提交中出现了某种问题.所以我决定将他们的存储库拉下来并恢复到之前的提交.这似乎很有希望,特别是因为他们在2015年1月初就有8个左右的拉动请求"大爆炸"合并.所以我在这次大规模合并发生之前将存储库拉回到提交,问题完全相同.我决定对其他几个提交(合并位置之前和之后)执行此操作,但仍然没有更改.有什么建议?
我将通过内置硬件串行库在两个 Arduino 之间建立二进制驱动的串行通信。由于我的数据包采用二进制格式构建,因此对于值为 0 的整数实例,数据包中的几个字符很可能是空字符。我不确定 Arduino 将如何处理空字符,或者是否有处理。在我进一步开展我的项目之前,我当然想知道。
我很抱歉也要提出这个问题.但似乎我今天没有运气.我已将我的所有结果连接成"Unioned",现在我试图将其推向视图.这应该也很简单,但我似乎无法改变各种组件以使其工作.这是我尝试使用的代码:
CREATE VIEW v AS
SELECT *
FROM
(
(SELECT maker, model, price FROM product NATURAL JOIN laptop)
UNION
(SELECT maker, model, price FROM product NATURAL JOIN pc)
UNION
(SELECT maker, model, price FROM product NATURAL JOIN printer)
) `Unioned`
Run Code Online (Sandbox Code Playgroud)
错误: #1349 - View's SELECT contains a subquery in the FROM clause
我一直在尝试将各种组件封装到括号中.或者仅为创建视图创建一个新语句.这个问题应该很容易回答,但我只是没有看到它.
再次感谢您的帮助!
我在private下定义了一个变量adc_cmd[9]作为static const unsigned char我的类ADC.因为它是一个常数,我想我会在它自己的类中定义它,但这显然不起作用:
#pragma once
class ADC{
private:
static const unsigned char adc_cmd[9] = { 0x87, 0xC7, 0x97, 0xD7, 0xA7, 0xE7, 0xB7, 0xF7, 0x00 };
//...
};
Run Code Online (Sandbox Code Playgroud)
错误:
error: a brace-enclosed initializer is not allowed here before '{' token
error: invalid in-class initialization of static data member of non-integral type 'const unsigned char [9]'
Run Code Online (Sandbox Code Playgroud)
...
所以我尝试用以下方法将该行带出类:static const unsigned char ADC::adc_cmd[9] = { 0x87, 0xC7, 0x97, 0xD7, 0xA7, 0xE7, 0xB7, 0xF7, 0x00 }; …
我正在查看这里列出的代码,它们提供了一个非常有趣的结构,用于在线编写Python中的"时钟".我以前从未见过这种古怪的语法,老实说不知道它是如何工作的.这在Python中是完全黑魔法.但即使它不是写作者想要的最恐怖的方式,我仍然想知道它是如何运作的.
qClock = (lambda:0, time.clock)[qDuration > 0]
qDuration = (1, (qClock() + qDuration))[qDuration > 0]
Run Code Online (Sandbox Code Playgroud)
我的过程:
qClock 返回True表示已经过了持续时间qDurration 以int开头,但后来改为lambda函数?我已经将问题简化为我的问题的一个小的可运行示例,如下所示:
package main
import "fmt"
type A struct {
Name string
}
func main() {
main_list := []A{A{"1"}, A{"b"}, A{"3"}}
second_list := make([]*A, 0)
fmt.Println("FIRST LIST:")
for _, x := range main_list {
fmt.Println(x.Name)
second_list = append(second_list, &x)
}
fmt.Println("SECOND LIST:")
for _, x := range second_list {
fmt.Println((*x).Name)
}
}
Run Code Online (Sandbox Code Playgroud)
其中提供:
FIRST LIST:
1
b
3
SECOND LIST:
3
3
3
Run Code Online (Sandbox Code Playgroud)
简单的任务是创建main_list一些虚拟结构.真正的问题是创建从值引用(指针)main_list进入second_list.我绝对不希望结构的副本,只需要指向结构的指针/引用main_list.第二个for循环遍历新填充的second_list并且仅显示main_list(3 …
我开始一个项目并开始构建它的一些结构.我将每个传感器的头文件和c ++源文件放在Arduino传感器库下的一个名为"Sensors"的文件夹中.它抱怨的文件相当小而且无趣,因为刚刚创建它.
错误:
In file included from /Applications/Arduino.app/Contents/Resources/Java/libraries/PID/../Sensors/Sensors.h:6,
from Aircraft.h:5,
from Aircraft.cpp:1:
/Applications/Arduino.app/Contents/Resources/Java/libraries/PID/../Sensors/Compass.h:14: error: multiple types in one declaration
Run Code Online (Sandbox Code Playgroud)
Compass.h
#pragma once
class Compass
{
private:
double x,y,z;
public:
void refresh();
double getX();
double getY();
double getZ();
};
Run Code Online (Sandbox Code Playgroud)
它抱怨multiple types in one declaration.但该文件似乎没问题.有什么我想念的吗?我忽略了什么?
python ×6
arduino ×3
c++ ×3
tornado ×2
class ×1
go ×1
pygame ×1
python-3.x ×1
serial-port ×1
sql ×1
sqlite ×1
static ×1
typescript ×1
vector ×1
websocket ×1