如何更优雅地在后台运行nodejs服务

使用pm2,官方文档:https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/

以下为一些常见的操作:

1、安装

npm install pm2 -g

2、启动服务

pm2 --name HelloWorld start npm -- start

具体例子:

之前启动一个项目的命令:

npm run serve

现在需要改成:

pm2 --name xx-stock start npm -- run serve

3、查看后台任务

pm2 ps

4、停止任务

pm2 delete 'id number'

5、查看日志

pm2 logs2  //所有的日志

pm2 log 'id number' // 某个服务的日志

关于python3编码的说明

写代码过程中遇到的编码问题,通过搜索引擎解决了。记录在这里,方便自己以后查阅。
需要注意的几点:
python3中字符串是unicode编码,但并不等同于utf-8编码!
字符串通过编码(encode)转换成字节码,字节码通过解码(decode)成为字符串
直接使用str.decode(“xxxx”)是不行的,直接就报错了 AttributeError: ‘str’ object has no attribute ‘decode’
string != bytes

参考
1. https://www.cnblogs.com/wenyi1992/p/6261716.html
2. https://www.cnblogs.com/Xuuuuuu/articles/9670451.html
3. https://www.cnblogs.com/abclife/p/7445222.html
4. https://www.cnblogs.com/liuyinzhou/p/7911509.html

解决命令行下找不到scrapy命令的问题

之前mac下已经成功装过Scrapy了,scrapy命令运行也是正常的。这两天尝试在电脑上部署github上的一个开源项目,结果导入requirements.txt时IDE卡了老半天也没完事儿,最后就强制关停了。结果就出了问题,再从命令行执行scrapy命令直接就”command not found”了。。尝试在python3交互环境中import scrapy,是正常的,长出一口气:之前的爬虫任务暂时不会受到影响。

用Google搜之,基本返回的都是安装小白之类的,要么就是环境变量ln一下,我这个是直接find / -name “scrapy” 都找不到阿。。

实在没有什么办法了,跑到自己的VPS上,看了一下scrapy命令的格式,发现就是个python脚本,实际调的是scrapy.cmdline里的execute方法,so easy!

copy了一份,在本地/usr/local/bin目录下自己创建了一个scrapy,加可执行权限,然后就ok了~

scrapy命令封装的内容,就这么几行!!

#!/usr/bin/env python3

# -*- coding: utf-8 -*-
import re
import sys

from scrapy.cmdline import execute

if __name__ == ‘__main__’:
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$’, ”, sys.argv[0])
sys.exit(execute())

如何制作电子书

占坑先。

有一批文档是JPG格式的,看起来很不方便,想导入到kindle或者手机上看。查了下资料,可以用Pages,导出功能里就有 epub格式的。然后还查到了下面的这两篇,有空的时候在虚拟机上试试。

参考1: JPG转换成mobi电子书

参考2: 用python爬取漫画并转换格式为pdf和mobi

参考3: Kindle漫画制作软件ChainLP简明教程

SpringBoot尝鲜

SpringBoot出来已经有2,3年了,自己却是最近一段时间才开始尝试着用它写了点demo程序,感觉确实很方便,再也不用在一堆配置文件中绕来绕去晕头转向了。尝试前端模版时,看getting Started都是用的thymeleaf。试着在application.yml里引入velocity。但总是不成功,还报错。google查了下,才知道是自己用了SpringBoot版本1.5.x的缘故。因为apache velocity项目的发布版本还是停留在7年前的1.7(2017.8.6 velocity发布了2.0 https://velocity.apache.org/news.html#engine20),SpringBoot的开发人员认为velocity太老了跟不上时代的发展,于是乎就在1.5版本里直接remove了对velocity的支持。

这是英文说明:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.5-Release-Notes

Classes, methods and properties that were deprecated in Spring Boot 1.4 have been removed in this release. Please ensure that you aren’t calling deprecated methods before upgrading. In particular, the HornetQ and Velocity support have been removed.

又google了相关的解决方案,罗列如下:

http://blog.csdn.net/duanlexianer/article/details/76474380
https://stackoverflow.com/questions/42109387/velocity-with-springboot-1-5-x
继续学习中。。。

Maven中-DskipTests和-Dmaven.test.skip=true的区别

我们在对maven项目使用命令mvn package/mvn assembly:assembly进行编译/打包时,有时为了跳过测试,需要加上参数-DskipTests或者-Dmaven.test.skip=true

这两个参数的主要区别是:

-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件到target/test-classes目录下

-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类