三不朽

基于Scrapy的高校学术活动爬虫介绍

Publish: September 6, 2018 Category: 数据分析 No Comments

先把地址贴一下 https://gitee.com/kuaizhaoren/swallow, 给自己挖了个坑可能填不上了。现在的感觉是只有需求驱动才有动力搞下去。有共同学习兴趣的可以看下。

阅读剩余部分...

PHP源码加密之ionCube加密

Publish: December 12, 2017 Category: 运维 No Comments

生产服务器部署解密环境

加密操作分为两部分,首先要在生产环境中部署解密扩展.具体操作流程可以参考:
一、下载loader-wizard.php(支持php5.3、php5.4、php5.5、php5.6、php7.0版本)
ioncube提供了一个安装的向导程序,可以非常方便的帮助检测php的运行环境,自动给出提示。
1.1 通过下面的地址下载loader-wizard:http://www.ioncube.com/loader-wizard/loader-wizard.zip
1.2 下载之后,将其解压缩,到apache的www或者htdoc目录。





阅读剩余部分...

Workerman中TCP网络粘包问题处理

Publish: November 22, 2017 Category: 编程,代码分享 No Comments

在网络编程中TCP协议相关的肯定会遇到粘包问题,具体原因可查看相关资料,这里仅作简单叙述。着重在workerman中对TCP中消息封包和解包问题的实际处理。

粘包与拆包的概念

在TCP/IP协议中,由于传输层并不了解应用层数据的含义,发送端传输层可能会对应用层数据进行拆分或者合并,在接收端也同样如此。由此而产生的问题就是常常会听说的“粘包与拆包”的问题。“粘包拆包”的问题在“短报文”和“一问一答”的场景下其实并不会出现。短报文是指报文长度远小于MSS的情况,应用层的报文在TCP报文中完全可以放下。另一方面,“一问一答”的通信模式可以保证报文会以单一的TCP包发送出去。在这两个条件下都满足时,我们不需要考虑“粘包拆包”问题。

反之,如果这两个条件不同时满足,就很可能会出现“粘包拆包”问题。

阅读剩余部分...

Python多线程实现web端远程实时控制嵌入式设备

Publish: October 27, 2017 Category: 编程 No Comments

最近接到一个小任务,要为客户实现“web端实时控制嵌入式设备”的项目。主要要求是通过在公网部署,客户通过web页面操控,触发远程设备的相关指令,完成相应操作。

项目结构

项目设计的初期目标是,实现一个类似通道的通过,程序只负责转发数据,具体的业务由远程设备和web端协商。下面是项目的结构图

http2tcp.png

服务启动,实施对应用层http和传输层tcp的监听,远程设备此时可以通过TCP建立双向连接。HTTP服务收到web请求,解析请求数据,然后将请求数据转发给TCP服务,由于TCP服务和远程设备是双向通信,因此web请求的数据就转发到远程设备,完成这个简单的传输过程。

阅读剩余部分...

围栏算法研究与实现

Publish: April 18, 2017 Category: 编程,代码分享 No Comments

实际应用中常用的解决方法。

1.1 方法选择

实现电子围栏的方法选择 判断点是否在电子围栏内/外,用数学来描述就是判断一个点是在多边形内/外部,为 了方便,这里的多边形默认为有向多边形,规定沿多边形的正向,边的左侧为多边形的外侧 域,即多边形边按顺时针方向遍历。比较常见的判断点与多边形关系的算法有射线法、点线判断法、夹角和法等[3],不过只有射线法可以正确用于凹多边形,其他 2 个只可以用于凸多 边形。

点线判断法 把多边形的每条边看作首尾相连的有向线段。如果一个点相对于多边形的每条边(有向 线段)的方向(左侧还是右侧)都相同,那么这个点就在这个多边形内部。这种方法只适用于凸多边形,而不适用于凹多边形。定义点在有向线段的一侧,定义有向线段(x1,y1),(x2,y2), 对于点(x, y)计算:

v = (x2-x1)*(y-y1) - (y2-y1)*(x-x1)

v=0 表示点在线段所在的直线上,v>0 表示点在线段的左侧,v<0 表示点在线段的右侧。 上面的计算式也可以表示比较斜率的大小:

 (y-y1)/(x-x1) > (y2-x1)/(x2-x1) 

阅读剩余部分...