Jump to Navigation

Document

Programming articles and books.

python字符串转hex

python字符串与hex转换,还挺麻烦的,而且发现不同版本还处理方式不一样。

找了段适用python 2.6-3.5的转换代码,可以容易在任何项目中使用了,

使用Python调用执行JavaScript的几种方式

python-spidermonkey

目前只支持python2

停止开发的起始项目:https://github.com/garywiz/python-spidermonkey

相对新的clone项目:https://github.com/smurfix/python-spidermonkey/

PyExecJS

比较新的一个项目,以插件的方式,支持不同的JS引擎,

像v8,nodejs,spidermonkey等。

并且该项目支持python3。

主项目停止更新有一段时间,但clone项目今年最近还有更新,

官方项目仓库: https://github.com/doloopwhile/PyExecJS

相对新的clone项目:https://github.com/Timtam/PyExecJS

附注

这两个项目使用的方式,其他语言中也可以采用,不过要做许多的封装。

从测试来看,PyExecJS安装简单,使用也非常方便,在项目中可以用这个了。

Linux 微信(weixin)代理项目(wxagent)介绍

微信登陆代理:wxagent

微信桌面版做的很弱,并且没有Linux版。

虽然在Linux上可以使用微信web版,有时很难在一堆浏览器标签中找到。

像这样的应用,应该有属于自己的程序窗口与桌面空间。

微信登陆代理实现目标

提供后台服务,管理微信登陆会话,负责与服务器通信。

以后台服务的方式运行,占用资源少,并且能够长时间运行,避免了需要经常手机扫描登陆的麻烦。

不过,由于这个代理提供的消息服务不再有认证等安全功能,登陆代理最好安装在安全的机器上,像本机上,或者是内网的私有服务器上。

微信登陆代理原理

提到实现,不免要涉及到微信通信协议,好在已经有人对微信web版协议做了分析,虽然还有不完善的地方,基本上可以实现简单登陆与消息收发功能了。

微信登陆代理根据现有资料,使用PyQt5实现了微信web版协议,通过测试,把相关API更新到了最新的微信的wx2版本。

并且把二维码以dbus服务方式提供出来,这样该服务就不需要有UI的支持了,这也是与现有几个Linux版微信不同的地方。

除了以DBus方式提供API,还可以使用socket方式,可以更灵活了。

在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=()一段置空,或者删掉这一段。

页面

订阅 RSS - Document


Main menu 2

by Dr. Radut