docker-compose 子目录编译、运行

公司开发物联网业务,使用Twisted 基于TCP协议开发的上位机服务,使用Django开发的Web后端,虽然是分别开发的,但两个服务之间有一定的耦合,比如上篇【基于Django & Channels & WebSocket & Twisted的物联网远程控制】就需要Web后端和Twisted共同完成,而Twisted上位机接收到下位机但上传数据后,是异步调用了Web后端进行数据入库的,所以两个服务还是一块启动的,再加上Redis, Postgresql数据库服务等,最终选择使用Docker Compose 一块发布管理。

Read More

ShadowsocksX-NG kcptun加速配置释疑

新版ShadowsocksX-NG 已经自带了kcptun 客户端,这样就不用自己单独启动kcptun进程了。但是shadowsocks团队并没有给出配置示例,导致很多网友对设置含含糊糊,从Google 搜索的第一页结果就可以看出来。

Read More

基于Django & Channels & WebSocket & Twisted的物联网远程控制

公司业务需要开发IOT从硬件到软件的全部工作,由于一开始来的硬件工程师选择了基于TCP直接进行终端与控制中心交互,自己设计报文内容与格式,所以远程控制也需要自己实现。还是自己太年轻,放着好好的现成的MQTT协议不用,自己瞎折腾。

硬件终端与服务器的通讯模块采用的是普通的2G卡,这样才能与自己的服务器直接通信(电信的物联网卡只能连接华为云,移动的物联网卡只能连接Oneconnect云平台,然后再对接自己的业务系统)。为了节省终端电池电量,终端5分钟唤醒一次连接服务器上报数据,也就是在这个时候,需要服务器查询控制任务队列,下发给下位机。所以,这里有下面几个工作需要完成:

Read More

django-allauth配置微信登陆

django-allauth很方便地继承了第三方登陆的功能,但其说明文档并不是很详细,配置一个demo都捉摸了好长时间,这里就以微信订阅号登陆为例,详细地说明一下配置过程,以供其他新上手地小伙伴参考。

Read More

Django2结合Celery添加定时任务

项目需要对一些观测数值做监控预警,没有找到特别合适的专门的开源项目,因此决定采用Celery实现任务调度,当然,除了Cerlery,还有就是可以采用APScheduler实现,也有django-apscheduler的开源项目利用Django的ORM存储APScheduler的任务和调度信息,但是APScheduler并没有那么灵活,比如要想修改例行信息,是需要修改源代码并且重启Django进程才可以,也正是参考了这个Stackoverflow问题,才决定选用Celery来调度任务。

Read More

python3调用Twisted web request的坑

硬件终端发送数据给服务器采用的是TCP直接传输,自己定义了二进制数据流格式,选来选去采用了Twisted开发TCP服务器。在数据外露的时候,采用Django开发了一个网站,因为在Django中已经定义了数据模型,不能也不想定义两次数据模型,所以Twisted接收到数据时,调用Django的REST接口保存数据到数据库,这就需要用到Twisted web client 发送数据。该回答 分析了在Twisted和Django中“共享数据库”的几种方法。

Read More

Docker的OS image是做什么用的

这两天闲来无事,简单入门了一下Docker。主要参考的有阮一峰老师的两篇文章——Docker 入门教程Docker 微服务教程和 yeasy的开源项目Docker — 从入门到实践,照葫芦画瓢简单入门,不过离真正理解认清楚容器的特点、必要性,如何实践在持续交付和部署以及容器云等实际的运维应用还有很长的路要走。当我看到Docker 的OS image例如CentOS/Fedora、Busybox、Alphine等镜像的时候,不禁怀疑,既然我可以docker pull一个很简单命令就可以实现如Nginx, mysql等微服务的启动和部署,那为什么还会存在这些OS image, 这些OS image 的作用是什么?

Read More

理解python with语句

Python中的with语句可谓是相当的好用了,省去了try...finally...的复杂写法,浅谈 Python 的 with 语句 一文写的已经非常详细里,解决了使用过程中的两点疑问。文中的代码清单也主要摘自这篇文章。

Read More

关于目前工作的一点感想

从7月份入职以来,时时感觉到目前的工作跟我所期望的差别很大,但又不知道该如何取舍。

在面试的时候,经理问我是否愿意从事一些产品相关的工作,由于是岗位是机器学习,所以我想那么即使是产品相关,最起码也是要用到机器学习的,不论是数学层面、算法层面还是架构层面,这样是比较符合我的预期的,所以就签合同入职。可是入职这么久以来,发现当初没有对岗位做更多的了解,是很大的一个坑,这也是校招的同学普遍遇到的一个难点和痛点,除非是在公司以及组内部亲自实习过。

Read More

Python字符串格式化

使用Python的时间也不短了,可是对字符串格式化的方式还是不怎么了解,尤其是对于自定义类型,如何实现友好的格式化输出?

printf-style的字符串格式化”%”号操作符的使用方法就不再赘述了,如果”%”后面不止一个参数,那么需要传入一个tuple,或者是一个dict。

Read More