Jump to Navigation

Document

Programming articles and books.

在PyQt5中使用Qt DBus的延时响应返回

在PyQt5中使用Qt DBus的延时响应返回

### dbus介绍
dbus是一种现代linux系统中的本机RPC调用实现,实现了程序间的松耦合依赖。

### RPC调用
RPC调用可分为同步调用和异步调用。
常用的同步调用很容易理解,就是调用并一直等待RPC服务器端的返回值。
异步调用,是针对某次耗时的RPC调用而言,像文件操作,或者是网络操作,或者计算操作。
如果再一直等待服务器端的返回,客户端的效率将非常低下。

### 原始DBus的方式
dbus是使用了异步IO回调方式,所以并不存在所谓的延时响应返回问题。
因为所有的调用都可以看作是异步的,延时的。
不过dbus提供了一个超时机制,如果超时,则dbus调用端不再接收响应返回值了。

### Qt DBus的方式
在Qt中,把DBus的服务,调用响应封装成为Qt的QObject和slots,从而简化DBus的使用。
同时,默认情况下,Qt还把对应slots的返回作为DBus调用结束的标志。
这样就引入一个问题,如果在这个slots中无法立即完成一个dbus调用,应该怎么处理?

docker应用小记

docker应用小记

这两天搞了点docker相关的东西,涉及到了docker两个相关的点,
都是关于网络方面的。

一个是docker使用的子网的配置。
一个是 docker pull/push使用的代理方式配置。

###
在centos7上,docker使用了这些配置文件:
/etc/sysconfig/docker
/etc/sysconfig/docker-network
/etc/sysconfig/docker-storage
/etc/sysconfig/docker-storage-setup

这几个文件内容比较简单,每个文件一行,而且默认是空参数。
这些文件叫做EnvironmentFile,用来设置docker的固定配置参数。

对本文开头提到的两个问题,修改这些文件即可实现。
比如这里只修改了/etc/sysconfig/docker-network文件,因为这两个配置都是关于网络方面的。

toxnet rUDP协议,重点

toxnet rUDP协议,重点,
三次握手
四次挥手

丢包检测,
丢包重传

RUDP的模块中最为重要的是其收发缓冲控制和CCC发送窗口控制、CCC发送慢启动控制、CCC快恢复控制等

设计:
现有的rudp实现,大都还处于socket层之上,也许更有前途的要基于任意tranport层上。
双层设计,控制层和传输层,
rudcp rilable USER DATA control protocol layer
rudtp rilable USER DATA transport protocol layer

生成ISN(initial sequence no)算法:防止被猜到,使用32位随机整数。
理论上对于长连接来说有可能超过32位,所以最好找一个稍微小点的值,尽量防止超过之后返0处理。

Category:

toxcore几个常量记录

toxcore几个常量记录:

python开发两项小记

最近用python做了些试验性开发,除了前面一篇的的语法缩进规范不爽之外,其他的还可以。

1、打包方式
最近使用python开发了小工具程序,然后自然想到了打包,顺便总结下了python的打包方式。

python的打包一般使用setup.py的方式,
但setup.py其实是一段python程序,根据不同的打包要求,格式也不相同。
setup.py包括以下几种:
* pip规范
*

这些规范适合系统机打包,依赖可以邮包管理来处理。
还有一种比较特殊的,类似静态打包的要求,当然也有多个选择:
* cxfreeze项目
* pyinstaller项目
* py2exe项目

这种需求比较少,虽然有选择,但也不是哪一个都能满足所有要求。
cxfreeze支持全平台,支持py3k,但不支持打包为单一文件。
pyinstaller项目,支持全平台,实验支持py3k,不完善。
py2exe支持windows平台,支持打包为单一文件。

目前看比较方便的cxfreeze,也先使用了这个作为基础工具。

以上是关于打包的一点总结。

shadowsocks安装,portable化

sss

配置文件:

创建toxcore初始节点与快速测试

使用正式的toxcore网络,目前速度上还有些慢,包括连接到网络上,以及添加好友等操作。
可能是因为toxcore的节点还不是那么多,DHT程序上也优化的不够吧。

可以使用一种简单的方式,实现一个快速的toxcore网络,
用这个小网络做测试,然后再加入到正式的toxcore网络测试。

建立一个自己的toxcore网络,
首先要启动一个初始节点,在toxcore源码树中other/bootstrap_daemon/目录中,
编译出tox-bootstrapd程序,配置该目录中的示例配置文件,启动命令,
tox-bootstrapd tox-bootstrapd.conf

注意,如果要把这个节点作为一个新的toxcore网络的初始节点,
需要把bootstrap_nodes=()一段置空,或者删掉这一段。

115syncd项目介绍

115网盘是个比较好用的网盘,提供比较大的磁盘容量。

该115syncd项目主要提供以下功能,
自动模拟登陆115网盘api。
以服务模式运行。
指定本地目录以及对应的115网盘目录。
监控指定目录,如有目录或者文件发生变化,则自动上传到115网盘对应的目录。
指定目录对可配置多个。
本地目录与网盘目录能够保持一到,在缺少目录时自动创建。
支持任务队列式并发上传控制,默认3个并发上传。
文件上传采用POST协议方式,有上传文件大小限制。
能够自动过滤掉一些指定的临时文件。
能够实现仅上传模式功能,即本地删除而网盘不删除,这样保持本地空间远小于网盘空间。
反复修改重复上传的文件,根据哈希去重,只保留最近一次上传的文件。

该实现使用PyQt5,在linux系统上安装使用都非常简便。
项目地址:https://github.com/kitech/115syncd

ToxCore 客户端基本处理流程图

每一个使用toxcore的程序,都可以算是一个toxcore客户端程序。
而这个客户端大都有一个共有的处理流程,以下提供一个简单流程图,仅供参考:

ToxCore API本次升级总结

在2015年早些时候,ToxCore完成了一次比较大的升级API升级,影响到所有的使用原API的程序。
最近又拾起来了toxcore项目,在些基础上做些项目与研究,在升级API的过程中整理了一下,公布在之儿。如有不完善不正确之处,请指正。

这次api从外面看主要是命名的规范化的提升,其中也不乏大的改动,像文件API部分,有API的增删。

页面

订阅 RSS - Document


Main menu 2

by Dr. Radut