场景
向仪表发送采集命令
实现代码
仪表命令接口
1 | namespace DesignPatterns.Command |
采集命令
1 | namespace DesignPatterns.Command |
调用者对象
1 | namespace DesignPatterns.Command |
接收者对象
1 | namespace DesignPatterns.Command |
相关调用
1 | Receiver receiver = new Receiver(); |
Out
1 | 发送数据:采集命令 |
向仪表发送采集命令
1 | namespace DesignPatterns.Command |
1 | namespace DesignPatterns.Command |
1 | namespace DesignPatterns.Command |
1 | namespace DesignPatterns.Command |
1 | Receiver receiver = new Receiver(); |
1 | 发送数据:采集命令 |
站点和仪表目录。
1 | namespace DesignPatterns.Composite |
1 | namespace DesignPatterns.Composite |
1 | namespace DesignPatterns.Composite |
1 | SiteComponent rootSite = new Site("总站"); |
Out:1
2
3
4
5
6
7
8
9
10
11
12-总站
---分站1
-----仪表1
-----仪表2
---分站2
---分站3
---分站4
-----仪表1
-----仪表2
-----仪表3
-----仪表4
-----仪表5
解析协议接口,集中验证数据、解析数据头,解析数据体
1 | namespace DesignPatterns.Facade |
1 | namespace DesignPatterns.Facade |
1 | namespace DesignPatterns.Facade |
1 | namespace DesignPatterns.Facade |
1 | var parser = new ParserFacade(); |
1 | 验证数据 |
使用HongDian DTU后需要在原本发送的逻辑前先发送HongDian规定的内容
1 | namespace DesignPatterns.Decorator |
1 | namespace DesignPatterns.Decorator |
1 | namespace DesignPatterns.Decorator |
1 | IDtuComponent standDtu = new StandDtuComponent(); |
Out:1
2发送宏电Dtu数据
发送透明DTU数据
安装jupyter
的时候卡在notebook
一动不动,
1 | λ pip install jupyter |
本机装了ss,所以直接用--proxy http://ip:port
,
1 | λ pip install --proxy http://127.0.0.1:2080 jupyter |
国内使用豆瓣源也是一个很好的选择,
1 | λ pip install -i http://pypi.douban.com/simple/ requests --trusted-host pypi.douban.com |
在gmail里看到bandwagon的邮件后想起vps的租期要到了,正好想起GO神之前在群里安利,于是注册vultr的账号充了5$。网上找了优惠码,送了50$,心想着可以好好用半年,到账后马上开了一个东京机房的vps并装了SS。
用了go版的一件安装包,下载安装包:1
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go.sh
设置权限:1
chmod +x shadowsocks-go.sh
安装:1
./shadowsocks-go.sh 2>&1 | tee shadowsocks-go.log
安装过程会提示输入ss服务器的密码和端口,也可以通过编辑 /etc/shadowsocks/config.json
设置ss服务器的参数。
常用命令:
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status
刚开始用vultr的东京路线吓到我了,看youtube的720p很流畅。上班后在公司发现很慢,ping值也很高,上网查了才发现东京路线对中国移动的宽带比较友好。由于赠送的$50要在六个月内用完,于是再开了一个洛杉矶机房的vps。就性价比来说,完全没问题,就是不知道为什么,对电信路线不是很友好,联通未测。
使用前后端分离开发,前端使用nginx
将指定路由指向前端开发目录:
1 | location /gw { |
后端使用python
开发,web api
端口为5000
,使用nginx
重定向/api
的路由:
1 | location /api { |
这样,在前端调用web api
时,只需设置/api/xxx
即可。
优化之前,前端的主要工具为webpack
,如果要实现实时刷新,需要使用webpack-dev-server
,因此再开发中需要指明web api
的全路径。原先使用全局变量保存web api
的地址,像这样:
1 | const baseUrl = '127.0.0.1:5000/api/gw'; |
在发布的时候将地址改回:
1 | const baseUrl = '/api/gw'; |
略微有点繁琐,某天端神问我关于Browsersync
的事情,我突然豁然开朗。弃用webpack-dev-server
,使用browser-sync-webpack-plugin
,配置如下:
1 | ... |
借助BrowserSync的代理模式,即实现了实时刷新技术,同时保证开发和部署无差异化。
后端使用Flask
开发,为了方便部署,使用独立的virtualenv.py
文件,将源码分发到远程服务器上,只需要执行
1 | python virtualenv.py ENV |
1 | pip install -r requirements.txt |
即可完成安装
最近新功能上线,偶尔会遇到一些小bug和小功能调整,一天会更新数次服务端的代码,最开始的时候直接暴力复制粘贴到远程服务器。这个过程需要:复制本地代码->打开远程桌面->粘贴源码,尤其复制python
的时候还需要清理pyc
文件。为了精简过程,使用Pycharm
和Webstorm
的Deployment
工具,对每个前端和后端项目均做了设置,每次小改动后,只需右键并upload to xxx
即可同步远程代码,十分方便。
1 | from pdfminer.converter import PDFPageAggregator |
1 | from pdfminer.pdfparser import PDFParser |
1 | import xlsxwriter |
1 | import xlsxwriter |
1 | import xlsxwriter |
1 | import xlsxwriter |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true