- 博客(146)
- 收藏
- 关注

原创 基于JWT token 及 AUTH2.0 refresh_token的前后端分离验证模式
前后端分离的登录验证我们的程序一般是通过微信扫码来进行登录的,但是在接进前后端分离之后,发现登录验证过程不是很友好,于是查了一些资料。比较推荐用JWT来做一个token的验证实现登录,但是有些文章提到,JWT token会有token失效时间过短造成要重新登录的问题。考虑到这个,参考一些文章在jwt的基础上添加了auth2.0中的refresh token的机制。关于代码我们的前后端架构是f...
2018-12-29 14:08:34
11745
7

原创 mongodb复制集搭建测试
架构因为我们机器不多,考虑到小而稳定,我们用三台机器来搭建这个复制集,其中一台primary,一台secondary,一台ARBITER角色机器primary192.168.203.128secondary192.168.203.129ARBITER192.168.203.130网络环境hosts配置复制集每台机器互相之间的连接可以通过ip:...
2018-12-29 10:38:52
3114

原创 wiki.js搭建自己的wiki
wiki.js搭建官网[wiki.js:](https://docs.requarks.io/wiki/)目前这个wiki.js还存在一些bug,期待2.x版本正式发布!软件依赖wiki.js需要以下软件包:- git 2.7.4 or later is required- nodejs 6.11.1 or later is required.- mongodb 3.2 or ...
2018-07-24 21:28:20
15805
原创 python3.7 redis队列类实现
# -*- coding: utf-8 -*-import loggingfrom typing import Listlogger = logging.getLogger(__name__)class BaseQueue(object): def __init__(self,redis_cli, name): self.redis_cli = redis_cli...
2019-11-22 10:28:51
473
1
原创 python3.7安装
用python3.7.4安装,老是会报关于ssl的错误,但是用3.7.5就不会,很神奇!!安装依赖yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++安装最新的opensslwget https://www.openssl.org/source...
2019-11-22 10:17:49
348
原创 fpm 对python3.7.5虚拟环境进行打包
python3.7.5环境打包打包前准备环境可能是由于版本原因,fpm打包时默认会从系统拿默认的python来打包,即使进行虚拟环境也一样。但是我们需要用python3。所以首先把系统默认的python改为3.7cp /usr/bin/python3.7 /usr/bin/pythoncp /usr/bin/pip3.7 /usr/bin/pip3.7因为打包virtualenv需要...
2019-11-22 10:15:02
856
原创 fpm打包python3.7安装过程为rpm
python3.7安装包需要的安装包Python3.7wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xzopenssl安装包wget https://www.openssl.org/source/openssl-1.0.2t.tar.gzafter-install 脚本install_py37....
2019-11-22 10:12:16
1450
原创 fpm安装与打包
fpm相比其他打包工具,它的优势在于能在一个系统平台上打包出适合各个系统平台的安装包。不需要说centos用rpm-build打包rpm,ubuntu用dept打包安装包。安装fpmyum install ruby-devel gcc make rpm-build rubygems#替换成国内源gem sources --add https://gems.ruby-china.com/ -...
2019-11-22 10:10:31
619
原创 conflicts with file from package epel-release-6-8.noarch
安装rpm-build包时与epel-release-6-8.noarch冲突,报错:Transaction check error:file /etc/rpm/macros.ghc-srpm from install of redhat-rpm-config-9.1.0-88.el7.centos.noarch conflicts with file from package epel-r...
2019-11-22 10:04:25
2479
1
原创 mongodb数据库基本操作
mongodb shell添加用户赋权限use socketProjectdb.createUser({user:'dev',pwd:"1111111",roles:[{role:"readWrite",db:"socketProject"}]})db.createUser({user: "admin",pwd: "1111",roles: [ { role: "userAdminAnyD.
2018-12-29 10:34:32
260
原创 字典元素排序
按key排序sorted(temp_dict.items(),key=lambda x:int(x[0]),reverse=False)按value排序sorted(temp_dict.items(),key=lambda x:int(x[1]),reverse=False)
2018-10-19 10:42:10
791
原创 时间转换
datetime对象转为time结构对象datetime.datetime.now().timetuple()获取时间戳> 当前时间戳time.time()> 某个时间字符串的时间戳time.mktime(time.strptime(time_str,'%Y-%m-%d %H:%M:%S'))> datetime对象转时间戳time.mktime(dat...
2018-10-19 10:23:49
558
原创 js 两个列表取交集
js没有直接的方式来获取两个列表的交集,需要自己写一个函数,如下:function jiaoji(arr_1,arr_2){ //先对arr_1进行一次深拷贝,防止对原两个列表造成影响 let temp_list = $.extend([],arr_1) arr_1.forEach(function(value){ //如果arr_1的元素不在arr_2中,那么去...
2018-09-21 12:20:25
4048
原创 js 深拷贝
js中,对于动态对象通过赋值,concat,或是扩展运算符进行变量定义的,都是浅拷贝。如果要进行深拷贝,一种方式是进行循环进行append,加入到新变量中,这种方式比较麻烦另外一种的话,就是通过$.extend函数进行深拷贝了,方式如下:以对一个列表进行深拷贝为例:array_1=[1,2,3]array_2= $.extend([],array_1)这样之后,修改arr...
2018-09-21 12:10:55
269
原创 js jq 删除列表元素
if ($.inArray(value,array_1)==-1) { array_1.splice($.inArray(value,array_1),1)}
2018-09-21 12:04:57
2163
原创 python 判断对象是否可被调用
有时候在传参时,需要判断该参数是不是可以被调用的,例如说变量说函数或者说类。可以通过callable函数来判断:>>> a=1>>> callable(a)False>>> def b():... print 1... >>> callable(b)True如果想更仔细的确定调用类型,那么就需要用...
2018-08-30 09:07:04
1255
原创 python 删除列表中指定元素
import collectiondef delete_nth(d, n): d.rotate(-n) d.popleft() d.rotate(n)
2018-08-03 16:06:18
3301
原创 python 监听salt job状态,并任务数据推送到redis中
salt分发后,主动将已完成的任务数据推送到redis中,使用redis的生产者模式,进行消息传送#coding=utf-8import fnmatch,json,loggingimport salt.configimport salt.utils.eventfrom salt.utils.redis import RedisPoolimport sys,os,datetime,...
2018-07-26 21:57:47
785
原创 python ipset管理 增删白名单
为方便用ipset 来管理防火墙,写了下面Ipset类来对Ip进行管理#!/usr/bin/env python# coding: utf-8import MySQLdbimport MySQLdb.cursorsimport subprocessimport loggingimport re,osimport xml.saxclass XMLHandler(xml.sa...
2018-07-24 21:52:48
1662
原创 python 多层嵌套列表 转成一维列表
如以下的嵌套列表:[1,[2,3],[4,[5,6]]]因为不知道嵌套了多少层,常规的方式是写一个递归函数,对这个函数进行递归来生成一维列表。后来发现,在python的compiler模块中,提供了类似功能的函数:>>> from compiler.ast import flatten>>> flatten(a)[1, 2, 3, 4, ...
2018-07-23 12:27:00
7349
3
原创 uwsgi https 访问
一般我们自己写的django站点都是用的http方式,如果需要用https的话,可以考虑用两种方式来实现,一种是nginx配置https,另外一种则是直接用uwsgi的https配置。这里讲的是uwsgi的https.首先生成ssl的key和crt文件mkdir -p /data/ssl/;cd /data/sslopenssl genrsa -out foobar.key 2048opens...
2018-06-26 12:29:36
6002
1
原创 python 根据时间来生成唯一的字符串
我们很多时候,特别是在生成任务的时候,都需要一个唯一标识字符串来标识这个任务,比较常用的有生成uuid或者通过时间来生成。uuid的话可以直接通过uuid模块来生成。如果是时间的话,可以这么写:def tid_maker(): return '{0:%Y%m%d%H%M%S%f}'.format(datetime.datetime.now())这里的时间精确到了微妙,一般来说不会重复,如果想更安...
2018-06-13 11:06:20
6356
原创 python 检查文件mime类型
magic 模块可以检查文件的mime类型,而不是从后缀名来判断,例如判断文件是不是视频或图片类型如下:#检查文件类型mime_type = magic.from_file(full_path,mime=True)logger.info("上传的文件类型:"+str(mime_type))if not mime_type.startswith('video') and not mime_
2018-01-16 15:30:36
4853
4
原创 bootstrap datatable显示数据表格及因分页获取数据造成的搜索问题
因为在实际中,datatable在展示数据表格时,并不是一下子将所有数据获取,而是只是获取一页的数据,造成datatable的搜索框无法使用,解决方法是在后端中自定义搜索项的数据获取:1、加载bootstrap 和datatable的css和js,注意jquery.dataTables.min.js要在dataTables.bootstrap.min.js之前引入,不然会有报错{% blo
2018-01-12 16:18:53
4003
原创 python 获取目录下的文件信息
获取某个目录下深度为1的目录和文件的大小和最近的修改时间:for item in os.listdir(request_path): full_path = os.path.join(request_path,item) fsize = os.path.getsize(full_path) fmtime = timeStampToTime(os.path.getmtime(full_pa
2018-01-12 15:45:16
3743
原创 python mysql where in 对列表(list,,array)问题
例如有这么一个查询语句:select * from server where ip in (....)同时一个存放ip 的列表 :['1.1.1.1','2.2.2.2','2.2.2.2']我们希望在查询语句的in中放入这个Ip列表,这里我们首先会想到的是用join来对这个列表处理成一个字符串,如下:>>> a=['1.1.1.1','2.2.2.2','2.2.2.2']>>
2018-01-12 15:36:21
27817
5
原创 django 如何编写控制登录和访问权限控制的中间件
django中,很多时候我们都需要有一个地方来进行更加详细的权限控制,例如说哪些用户可以访问哪些页面,检查登录状态等,这里的话就涉及到了中间件的编写了。在django项目下的setting.py文件中,有一个MIDDLEWARE_CLASSES的字段,这里存放的就是中间件,用户的访问会先经过这些中间件的处理之后再给各种views函数进行处理。在这个参数中加入我们接下来要编写的中间件:MID
2018-01-12 15:15:12
5322
1
原创 python 使用poster模块进行http方式的文件传输到服务器
这几天帮内部人员做一个文件传输的小工具,要用http的方式,在用django搭建了个小框架之后,如何进行传输,特别是大文件的传输,成为主要问题。经过查资料,最后选择了通过poster这个模块来进行文件的传输,方式如下:from poster.encode import multipart_encodefrom poster.streaminghttp import registe
2018-01-12 14:59:43
4884
3
原创 bootstrap 输入框组 通过加减按钮来增加删除内嵌输入框组
实现效果图如下:当我点击 + 按钮时,会添加一行输入框组;当点击 - 按钮时,会删除这一行输入框组html代码如下: salt配置: + 按钮 点击触发事件函数:function addSaltIpGrp(obj){ html = ''+ 'IP:'+ ''+ 'API端口:'+ ''+
2017-11-15 10:50:47
11009
2
原创 js 实现递归从后台获取任务数据,直到任务完成
假如有一个任务列表taskList,从这个列表中弹出一个任务id,到后台获取数据,如果已经完成那么处理,如果还没完成,那么再次到后台获取数据,直到完成。实现方式如下:function getTaskData(task,taskList,recode){ console.log('获取task-'+recode+':'+task) $.ajax({ 'url':'/jgwork
2017-11-15 10:34:27
2517
原创 bootstrap table中的行tr标签设置display:block后行样式错乱问题
在table中,如果在tr加上display样式时,会发生错乱如下: fa fa Gold Level Virtual Server 已完成 haha Platinum Level Virtual Server 正在执行 aha Hardware Switch 已完成效果如图:可以看到,第一行在设置dis
2017-11-15 10:23:38
4807
原创 jquery datatable 通过ajax从后台获取每个分页数据后,搜索框无法搜索问题
当我们通过如下的ajax到后台获取数据permissionTable = $('#permissionTable').DataTable({ "ajax": { "url": "/user/permission_get", "data": function(d) { d.type = 'getPer
2017-10-09 16:39:04
2855
原创 python 执行shell命令的类
在写代码时,经常需要执行系统命令或shell命令,这时候有一个执行命令的类,是相当方便的,如下:脚本名:runCMD.py# -*- coding: utf-8 -*-import subprocessimport itertools,sysreload(sys)sys.setdefaultencoding( "utf-8" )import logginglogger = lo
2017-09-26 20:58:55
1448
原创 python 用本地git来保存文件或者博客,实现版本控制
最近写一个类似博客的东西,用于存放部门的文档,为了文章能够回滚,写了个git的类用于操作本地类,如下:import os,sys,reimport logginglogger = logging.getLogger(__name__)from runCMD import runCmdfrom django.conf import settingsGIT_DIR = setting
2017-09-26 20:54:30
929
原创 django 自定义分页类改善,适用于于条件查询等操作,提高灵活性
之前的一篇文章 http://blog.youkuaiyun.com/u011085172/article/details/71405043 里面写到的自定义分页类,因在代码中只能对数据库表进行all()方式的查询操作,不能满足filter或者其他的条件查询,刚好今天碰到要用,于是改善了下代码:class Pagination(object): """分页基础类""" "
2017-09-19 12:02:42
1046
原创 js 判断数组是否包含某个key
可以用函数hasOwnProperty来进行判断,如下:if (result.hasOwnProperty('code') && !result.code) { alertify.alert(result.msg)}
2017-09-15 11:06:48
8117
原创 python pip install报错error: Unable to find vcvarsall.bat
在windows上用Pip安装一些模块时,有时候会碰到error: Unable to find vcvarsall.bat这个报错网上各种方式,但是很多都不行其实最简单的方式就是直接下载包到本地安装了到站点 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 点击打开链接 下载特定版本的whl包到本地再用pip 来安装这个包就好了如果在本地碰
2017-09-05 18:12:08
431
原创 爬虫 scrapy 抓取小说实例
以http://www.biquge.com/2_2970/ 这部小说为例,用scrapy对这部小说的章节进行抓取#coding=utf-8import scrapy,oscurpath = os.getcwd()noveldir = ''class novelSpider(scrapy.Spider): name = 'xiaoshuo' start_urls = ['http:
2017-09-05 16:02:08
1284
原创 find 用xargs来处理带空格的文件名文件
当用find和xargs来处理文件时,如果文件名包含空格,会导致处理失败。在find的帮助中,有一个参数-print0:-print0 True; print the full file name on the standard output, followed by a null character (instead of the newline charac
2017-09-01 12:04:52
6480
2
原创 bootstrap select2插件用ajax来获取和显示数据
用select2插件,实现以下这个选择框:1、html代码 预定义参数 2、js代码$("#preParamDefine").select2({ //data: data, placeholder:'请选择',//默认文字提示 tags: true,//允许手动添加 allowClear: true,//允许清空
2017-08-31 10:34:14
9217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人