我使用节点ws库(Ubuntu 16.04上的节点10.8.0)连接到外部websocket api .我有一个监听器只是解析json并将其传递给回调:
this.ws.on('message', (rawdata) => {
let data = null;
try {
data = JSON.parse(rawdata);
} catch (e) {
console.log('Failed parsing the following string as json: ' + rawdata);
return;
}
mycallback(data);
});
Run Code Online (Sandbox Code Playgroud)
我现在收到错误,其中的rawData
外观如下(我格式化并删除了不相关的内容):
?~A
{
"id": 1,
etc..
}?~?
{
"id": 2,
etc..
Run Code Online (Sandbox Code Playgroud)
然后我想知道; 这些人物是什么?看到结构我最初认为第一个奇怪的符号必须是数组([
)的开括号,第二个是逗号(,
),以便它创建一个对象数组.
然后,rawdata
每当遇到JSON解析错误时,我都会通过写入文件来进一步调查问题.在一个小时左右的时间里,它已经保存了大约1500个错误文件,这意味着这种情况会发生很多.我cat
在终端上编了几个这样的文件,其中我上传了一个例子:
这里有一些有趣的事情:
我对websockets不太熟悉,但可能是因为我的websocket以某种方式接收到它连接在一起的消息流,这些奇怪的符号作为分隔符,然后随机切断最后一条消息?也许是因为我得到了一个非常快速的消息流?
或者可能是因为服务器端的错误(或功能),它组合了这些单独的消息?
有谁知道这里发生了什么?欢迎所有提示!
[编辑]
@bendataclear建议将其解释为utf8.所以我做了,我粘贴了下面结果的截图.第一个打印是原样,第二个打印为utf8.对我来说这看起来不像什么.我当然可以转换为utf8,然后按这些字符拆分.虽然最后一条消息总是被切断,但这至少会使一些消息变得可读.其他想法仍然欢迎.
我正在使用Javascript FileReader在浏览器中加载图像:
e = e.originalEvent;
e.dataTransfer.dropEffect = 'copy';
this.documentFile = e.dataTransfer.files[0];
var reader = new FileReader();
reader.onloadend = function () {
if (reader.result) {
console.log(reader);
$('#theImage').attr('src', reader.result);
}
};
reader.readAsDataURL(this.documentFile);
Run Code Online (Sandbox Code Playgroud)
这很好用.我现在想获得图像的原始文件名,但我不知道如何在互联网上查找我也找不到任何东西?
有人知道如何通过FileReader获取文件名吗?欢迎所有提示!
我正在使用pm2(版本3.4.1)来管理Laravel Echo Websocket服务器。它运行完美,但是我试图让它在计算机重启(运行Ubuntu 16.04)后自动启动。为此,我遵循以下说明:
$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 startup systemd -u kramer65 --hp /home/kramer65
$ sudo env PATH=$PATH:/usr/bin /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 startup systemd -u kramer65 --hp /home/kramer65
[sudo] password for kramer65:
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=kramer65
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/kramer65/.pm2
PIDFile=/home/kramer65/.pm2/pm2.pid
ExecStart=/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 reload …
Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我有几个radion按钮,应该有不同的颜色,并在选择时变得大胆.我通过在drawable中定义radio_pick_color.xml文件来设法获得不同的颜色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- checked -->
<item android:state_checked="true"
android:color="#00FF15" />
<!-- default -->
<item android:color="#4000FF" />
</selector>
Run Code Online (Sandbox Code Playgroud)
并在我的main.xml文件中引用此文件:
android:textColor="@drawable/radio_picker_color"
Run Code Online (Sandbox Code Playgroud)
我现在想要使文本变粗.所以我创建了另一个名为radio_picker_style.xml的文件,我想在其中定义这样的样式:
<item android:state_checked="true"
android:style="bold" />
Run Code Online (Sandbox Code Playgroud)
不幸的是eclipse抱怨在'android'包中找不到属性'style'的资源标识符.我也试过android:textStyle,但是从选择器项中它也不知道android:textStyle
属性.
有谁知道如何以粗体显示所选的单选按钮?
== EDIT == main.xml文件的相关部分:
<RadioGroup
android:id="@+id/radioGroup2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/option_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/option_1"
android:textColor="@drawable/radio_picker_color"
/>
<RadioButton
android:id="@+id/option_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/option_2"
android:textColor="@drawable/radio_picker_color"
/>
</RadioGroup>
Run Code Online (Sandbox Code Playgroud)
和我试图放在drawable文件夹中的radio_picker_style.xml,但是"属性缺少Android名称空间前缀":
<?xml version="1.0" encoding="utf-8"?>
<style name="mystyle">
<item name="android:textColor">#ffffff</item>
<item name="android:textStyle">bold</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我正在尝试按照Flask Mega教程学习烧瓶.在第5部分中,login()视图是这样编辑的:
@app.route('/login', methods = ['GET', 'POST'])
@oid.loginhandler
def login():
if g.user is not None and g.user.is_authenticated():
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
session['remember_me'] = form.remember_me.data
return oid.try_login(form.openid.data, ask_for = ['nickname', 'email'])
return render_template('login.html',
title = 'Sign In',
form = form,
providers = app.config['OPENID_PROVIDERS'])
Run Code Online (Sandbox Code Playgroud)
但是,这会给我一个AttributeError,我将在下面粘贴StackTrace.它给出了一个错误,我完全从示例的来源粘贴了一块.我确实使用PeeWee而不是SQLAlchemy,但由于这段代码对DB没有任何作用,我不知道为什么会有相关性.
有谁知道我在这里做错了什么?
Traceback (most recent call last):
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1403, …
Run Code Online (Sandbox Code Playgroud) 我的网页中有一个字段A,当用户编辑时,调用API调用(使用jQuery),更新字段B.编辑后,应每隔10秒调用一次API以再次更新字段B. .我目前这样做使用:
setTimeout(thisFunction, 10000);
Run Code Online (Sandbox Code Playgroud)
问题是每次用户编辑字段A时都会设置此超时,在编辑字段A几次后会导致多次设置超时并且API被多次调用.这使得网站看起来非常紧张.
我想要做的是,每次编辑字段时都设置一个新的超时,无论是用户编辑字段A,还是间隔达到10秒,从而轮询API.换一种说法; 如果字段B未更新10秒或更长时间,则应更新该字段.
最后,如果用户然后单击按钮C,则轮询应该停止.
所以我的问题; 如果该字段B没有更新10秒或更长时间如何运行更新字段B的功能,如何在我想要的时候停止轮询(当用户点击另一个按钮时)欢迎所有提示!
我正在使用Flask建立一个网站,我在其中使用WTForms.在表单中,我现在想要使用FormFields的FieldList,如下所示:
class LocationForm(Form):
location_id = StringField('location_id')
city = StringField('city')
class CompanyForm(Form):
company_name = StringField('company_name')
locations = FieldList(FormField(LocationForm))
Run Code Online (Sandbox Code Playgroud)
所以让人们有能力进入一个有两个地点的公司(动态添加地点的时间比较晚)我在前面这样做:
<form action="" method="post" role="form">
{{ companyForm.hidden_tag() }}
{{ companyForm.company_name() }}
{{ locationForm.location_id() }}
{{ locationForm.city() }}
{{ locationForm.location_id() }}
{{ locationForm.city() }}
<input type="submit" value="Submit!" />
</form>
Run Code Online (Sandbox Code Playgroud)
所以在提交时我打印的位置:
print companyForm.locations.data
Run Code Online (Sandbox Code Playgroud)
但我明白了
[{'location_id': u'', 'city': u''}]
Run Code Online (Sandbox Code Playgroud)
我可以使用locationForm打印第一个位置的值(见下文),但我仍然不知道如何获取第二个位置的数据.
print locationForm.location_id.data
print locationForm.city.data
Run Code Online (Sandbox Code Playgroud)
所以位置列表确实有一个带空值的dict,但是:
有谁知道我在这里做错了什么?欢迎所有提示!
我正在OSX上读一个网络摄像头,这个简单的脚本可以正常工作:
import cv2
camera = cv2.VideoCapture(0)
while True:
try:
(grabbed, frame) = camera.read() # grab the current frame
frame = cv2.resize(frame, (640, 480)) # resize the frame
cv2.imshow("Frame", frame) # show the frame to our screen
cv2.waitKey(1) # Display it at least one ms before going to the next frame
except KeyboardInterrupt:
# cleanup the camera and close any open windows
camera.release()
cv2.destroyAllWindows()
print "\n\nBye bye\n"
break
Run Code Online (Sandbox Code Playgroud)
我现在想要在一个单独的进程中阅读视频,我的脚本更长,并且在Linux上的单独进程中正确地读取视频:
import numpy as np
import time
import ctypes
import argparse
from multiprocessing …
Run Code Online (Sandbox Code Playgroud) 我有一个有很多输出的程序.一旦完成,我经常想回滚到运行的开始,以便我可以看到那里的一些东西.由于输出很长,我看到自己无休止地使用PageUp滚动并尝试将右侧的滚动条拖动到可能已经开始的位置.过了一段时间,这开始变得非常无聊,所以我想知道:
有没有办法让终端滚动回到最后一个命令的部分?
我想尝试使用Flask和Python3.我在Ubuntu 14.04上有Python 3.4,据说包含了pip.所以我试过了
pip3 install flask
Run Code Online (Sandbox Code Playgroud)
这结束于:
Cleaning up...
Command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip_build_kramer65/flask/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-i98xjzea-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_kramer65/flask
Storing debug log for failure in /tmp/tmpqc3b2nu5
Run Code Online (Sandbox Code Playgroud)
所以我尝试导入它,但无济于事:
kramer65@vps1:~/cxs$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import flask
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named …
Run Code Online (Sandbox Code Playgroud) javascript ×4
python ×4
flask ×3
jquery ×2
android ×1
bash ×1
command-line ×1
fieldlist ×1
filereader ×1
forms ×1
io ×1
java ×1
json ×1
laravel-echo ×1
macos ×1
node.js ×1
opencv ×1
pathos ×1
pip ×1
pm2 ×1
polling ×1
python-3.x ×1
scroll ×1
stream ×1
terminal ×1
timeout ×1
websocket ×1
wtforms ×1