supervisord常用笔记

30. May 2018 Linux 0
在laravel项目中使用supervisord管理守护laravel队列进程,修改队列任务后经常需要重启来生效配置 1.更新新的配置 supervisorctl update 2.重启配置中所有进程 supervisorctl reload 3.启动配置中指定的进程 supervisorctl start laravel-worker:* //填写自己配置的进程名称 4.查看守护中的进程 supervisorctl 5.停止配置中的进程 supervisorctl stop laravel-worker:* //填写自己配置的进程名称 6.重启指定进程 supervisorctl restart laravel-worker:* //填写自己配置的进程名称 7.停止全部进行 supervisorctl stop all

服务器文件定时备份笔记

28. May 2018 Linux 0
crontab -e 10 23 1 * * tar -zcvPf /home/lijian/Desktop/lijian.$(date +%Y%m%d).tar.gz /home/lijian/Desktop/lijian 每月1号23点10分开始备份文件 脚本正常执行的前提,crond服务启动,执行下: service crond restart 在Desktop中生成lijian.20180706.tar.gz

sqlite3安装,重新编译python

23. May 2018 Python 0
基本上大多数linux系统都预先安装sqlite3,不过也有未安装的,比如我使用的那个服务器就没安装,只能手动安装然后再重新编译下python了 wget http://www.sqlite.org/snapshot/sqlite-snapshot-201805181758.tar.gz tar -zxvf sqlite-snapshot-201805181758.tar.gz cd sqlite-snapshot-201805181758 .configure --prefix=/usr/local make && make install sqlite3安装成功后,在控制台输入sqlite3 可进入,测试是否成功。 python需要重装或重新编译,若重新编译,则查看python软件包下setup.py文件 查找到sqlite_inc_paths,查看是否包含你指定或默认安装sqlite3的路径,上面把sqlite3 安装到了/usr/local中,则在sqlite_inc_paths添加 /usr/local/sqlite3/include 然后在python包根目录执行 .configure make && make install 完成后,在控制台测试是否可导入成功: python >>import sqlite3 然后就可以使用了 import sqlite3 conn = sqlite3.connect(\'file.db\', check_same_thread=False) c = conn.cursor() def insert(url): hasfile = c.execute(\"select * from file where url=\'{fileUrl}\'\".format(fileUrl=url)) if hasfile.fetchone(): pass else: c.execute(\"insert ...

flask,uwsgi,nginx安装调试步骤

23. May 2018 Python 0
刚开始学flask时,跑在服务器上,各种问题,记录下排除故障的步骤,一步步来,可快速发现问题 一:安装好flask后,导入包后,main.py文件如下: from flask import Flask from flask import render_template from flask import request from flask_cors import * //允许跨域请求的包 app=Flask(__name__) CORS(app,supports_credentials=True) @app.route(\'/\') def index(): return render_template(\'file.html\') //在templates文件下建file.html文件,填写一下内容 if __name__ == \'__main__\': app.run() 然后在项目文件夹下运行: python main.py //main.py 为我创建的文件,内容如上。若有错误,在控制台就能看到,排除掉代码问题 二:uwsgi安装配置 ①安装好uwsgi后,先在控制台使用uwsgi跑flask uwsgi --http :9090 --wsgi-file main.py //若有错误,亦可在控制台发现,若无错误,可使用浏览器访问下http://127.0.0.1:9090,错误也可能在访问过程中产生。 若服务器无桌面环境,在控制台执行 curl http://127.0.0.1:9090,若执行成功,则返回file.html中的内容。 ②接下来将uwsgi放在web服务器nginx后,使用uwsgi协议,众多配置项放到一个文件中 在etc下创建了uwsgi.ini文件,内容如下: [uwsgi] socket = 127.0.0.1:9090 chdir ...

uwsgi 服务器停止,重启

23. May 2018 Python 0
停止uwsgi服务器 方式1: ps -aux|grep uwsgi //获取uwsgi进程ID kill -HUP pid //pid即获得的进程ID 方式2:知道uwsgi自定义配置的pid文件的位置 cat /tmp/uwsgi.pid kill -HUP pid //pid即获得的进程ID 方式3:把方式2合并到一起 kill -HUP `cat /tmp/uwsgi.pid` //注意命令中是反引号,并非单引号。 启动uwsgi服务器 uwsgi /etc/uwsgi.ini //第二项为uwsgi初始化文件 uwsgi.ini 初始化文件内容 [uwsgi] socket = 127.0.0.1:9090 chdir = /var/www/project/metadata/ wsgi-file=main.py threads = 4 reload-mercy = 10 vacuum = true max-requests = 1000 limit-as = 512 buffer-size = 30000 ...

Vue 初始化使用笔记

23. May 2018 HTML5 0
做为一个后端开发,搞点前端也是必不可少的,最实用的就是平时写点东西展示出来,工作中调试接口,省去前后端交互的很多事,我会告诉前端接口我已经测试过了,接口问题和我无关哦。 1.vue安装使用,初始化项目绝对要使用vue-cli,不然太难搞 npm install --global vue npm install --global vue-cli vue init webpack my-project 接下来根据自己需求安装,可以的话,全选yes,依赖自动安装,完成后可以使用 npm run dev 查看项目,初始化介绍。 2.添加 axios npm install axios 在main.js中添加刚安装的axios import axios from \'axios\' import qs from \'qs\' import VueAxios from \'vue-axios\' axios.defaults.headers.post[\'Content-Type\'] = \'application/x-www-form-urlencoded\' axios.defaults.timeout = 5000 Vue.use(VueAxios, axios) 添加请求拦截器,格式化提交数据,否则数据提交失败。 axios.interceptors.request.use((config) => { if (config.method === \'post\') { config.data ...

Mysql 排序orderBy if 使用方法及排序规则

22. May 2018 DataBase 0
开发中遇到的排序问题中,有字段为0或null,需要后置处理,网上部分博客感觉有点问题,多次实践,总结如下: 使用的字段id,自增,usnews_n_sort参照,rank进行排序,有0和null   排序过程中判断rank是否为0或为null,若是,则在rank上添加隐藏字段,为“1”添加在查询结果尾部,为“0”添加在查询结果首部 情景一:不使用 if 排序 SELECT id,usnews_n_sort,rank from test ORDER BY rank ASC 使用rank 升序,null 在0之前。   情景二:使用 if  后置 升序 SELECT id,usnews_n_sort,rank from test ORDER BY IF(rank=0 || ISNULL(rank),1,0), rank ASC 把为0或为null的情况后置,然后进行升序处理   情景三:使用if 后置 降序 SELECT id,usnews_n_sort,rank from test ORDER BY IF(rank=0 || ISNULL(rank),1,0), rank DESC 把为0或为null的情况后置,然后进行降序处理   情景四:使用if 前置 升序 ...

Laravel 控制器中try catch 排除状态码422,即validate 验证失败

09. May 2018 Laravel 0
1.控制器中使用try catch,catch默认获取所有异常,但validate返回的422验证失败我们需要单独处理,不需要异常跑出, 可以这么来: use IlluminateValidationValidationException; catch (Exception $e) { throw_if($e instanceof ValidationException, $e); return InfoController::errorInfo(618); }

PHP代码规范笔记

07. May 2018 PHP 0
1.变量名需有意义且可读 2.常量名称可搜索,如0,1最好使用const定义后使用 3.避免逻辑嵌套太深,判断条件尽可能提前返回 4.不增加不需要的上下文,如类名不在变量或函数中重复。 5.使用默认参数而非短路运算符或条件运算符。形参赋予类型和初始值。 6.形参不易过多,两个以下为宜,需要多个可封装对象传入。 7.函数应该只做一件事,避免过多逻辑。 8.函数名语义化,取出依赖关系。 9.避免函数副作用,函数内部使用超全局变量容易产生问题,global, 10.避免使用单例模式,单例模式隐藏依赖关系,难于测试,违反单一责任原则。 11.用函数封装条件语句,返回布尔值。 12.尽量避免反义判断。过多反义判断降低代码可读性。 13.避免类型检查 14.移除无用代码 15.对象封装注意使用public, protected and private,优先使用private 16.组合优于继承。 17.避免流式调用,否则将难以测试。 18.类名以大写开头的驼峰命名规范,方法名以小写开头驼峰命名规范,类中的常量所有字母都 必须 大写,单词间用下划线分隔; 19.代码 必须 使用 4 个空格来进行缩进, 并且 一定不能 使用 tab 键来缩进。 20.命名空间和use后需存在一个空行。 21.方法参数中,每个逗号后有空格,前面没有空格。 22.需要添加 abstract 或 final 声明时,必须 写在访问修饰符前,而 static 则 必须 写在其后。·  

机器学习 线性、逻辑回归

28. April 2018 深度学习 0
1.逻辑回归 h = sigmoid(X*theta); theta1 = [0 ; theta(2:size(theta), :)]; p = lambda*(theta1’*theta1)/(2*m); J = ((-y)’*log(h) – (1-y)’*log(1-h))/m + p; grad = (X’*(h – y)+lambda*theta1)/m; 预测p=sigmoid(X*theta)>=0.5