配置vim

vim配置(linux/manjaro/ubuntu/deepin通用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
sudo pacman -S vim

":关闭与vi的兼容模式
set nocompatible
":显示行号
set number
":显示匹配的括号
set showmatch
":距离顶部和底部3行
set scrolloff=3
":编码
set encoding=utf-8
set fenc=utf-8
"编码设定Encoding
set fileencoding=utf-8
set fileencodings=utf-8,gbk,utf-16,big5

set langmenu=zh_CN.UTF-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.UTF-8

"忽略大小写检索
set ignorecase
":搜索高亮
set hlsearch
"输入检索时动态变化
set incsearch
":语法高亮
syntax on
":命令显示历史
set history=500
"开启插件和缩进
filetype plugin indent on
":鼠标
set autoread
set mouse=
set mousehide

bug: backspace退格键不能使用

把 deleteleft 快捷键设置会 backspace

参考资料

查看更多

配置和使用 pycharm

配置

常用代码片段配置


配置路径 Setting—>Editor—>Live Templates—>加号按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
~nos     
# noinspection PyMethodMayBeStatic

# ~err
error = '\n'.join(traceback.format_exception(*sys.exc_info()))

# ~path
path = os.path.join(os.path.dirname(__file__), '')

# ~root
def root(*f, relative_root='../../../'):
# relative_root 当前代码目录相对root的相对路径
for t in f:
if t[:1] == '/':
print('Warning: root()包含绝对路径 参数={}'.format(f))
break
code_dir = os.path.dirname(os.path.realpath(__file__))
long_path = os.path.join(code_dir, relative_root, *f)
return long_path

查看更多

安装ubuntu

1
2
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service

零 安装kernel(修复界面卡顿问题)

问题:4.18版本kernel的CPU核心显卡存在bug,会导致界面卡顿

解决:安装5.1版本kernel(不要安装最新的rc版本,稳定一些)

查看当前内核版本

1
2
3
4
5
6
7
8
9
10
11
# 查看当前内核版本
uname -r
>>>4.18.0-20-generic

# 搜索可用的内核
apt-cache showpkg linux-headers
apt-cache showpkg linux-image
找到这两个命令里,版本号相同的最新版本

# 示例:选择5.1.0版本
sudo apt install linux-headers-5.1.0-050100-generic linux-image-unsigned-5.1.0-050100-generic --fix-missing

查看硬件

1
2
3
4
5
# 查看内存  槽位
sudo lshw -c Memory

# 查看主板
sudo dmidecode -t 2

查看更多

py2_and_py3

感受: 实际上还是不好用~~~能用3就用3~~~

_future__

python3出来的时候,python的设计者们当然也考虑过代码之间的兼容问题。许多为为兼容性设计的功能可以通过future这个包来导入。例如:

1
2
3
4
5
6
7
8
9
10
11
12
# 使用python3的print函数,禁用python2的print语句。
from __future__ import print_function

# 导入该特征,代码中的文本变量默认是Unicode(如果不导入python2的文本变量默认是str)
# python2 str.decode('utf8') --> Unicode
from __future__ import unicode_literals

# 参见PEP 328 -- Imports: Multi-Line and Absolute/Relative
from __future__ import absolute_import

# 像python3一样,int除以int得float,而不像Python2那样是整除
from __future__ import division

six

查看更多

decorator装饰器

最简单的模板是这样的

1
2
3
4
5
6
7
8
9
10
11
def outer(func):
def inner():
print 'before'
func()
print 'after'
# return r
return inner

@outer
def F1():
print 'test'

函数带多个参数,装饰器对应修改以适合多种情况

1
2
3
4
5
6
7
8
9
10
def ftfunc(func):
def timef(*s,**gs):
print "[%s] %s() called" % (ctime(),func.__name__)
return func(*s,**gs)
return timef

@ftfunc
def foo(*s,**gs):
print(s)
print(gs)

函数带多个参数,装饰器也带多个参数

1
2
3
4
5
6
7
8
9
10
11
12
def decrator(*dargs, **dkargs):
def wrapper(func):
def _wrapper(*args, **kargs):
print "decrator param:", dargs, dkargs
print "function param:", args, kargs
return func(*args, **kargs)
return _wrapper
return wrapper

@decrator(1, a=2)
def foo(x, y=0):
print "foo", x, y

函数带多个参数,装饰器能转换参数类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def validate(**vkargs):
def decorator(func):
def wrapper(**kargs):
for key in vkargs:
# 根据vkargs中的参数的类型对kargs的参数进行类型转换
kargs[key] = vkargs[key](kargs[key])
return func(**kargs)
return wrapper
return decorator


@validate(x=int, y=float, z=float)
def move(x, y, z):
print "move %d (%0.2f, %0.2f)"%(x, y, z)

参考资料

查看更多

elastic_search基础

Document元数据(MetaData)

元数据用于标注文档的相关信息:

_index:文档所在的索引名
_type:文档所在的类型名
_id:文档的唯一id
_uid:组合uid,由_type和_id组成(6.x中_type不再起作用,同_id一样)
_source:文档的原始json数据,可以从这里获取每个字段的内容
_all:整合所有字段内容到该字段,默认禁用

搜索结果超出1万条的报错

如果数据量小于20万,那么简单方法是修改max_result_window

1
2
3
4
# PUT方法,$开头的是变量
PUT $ip:$port/$index/_settings
body =
{ "index" : { "max_result_window" : 200000}}'

异步调用, 报错 HTTP 406: Not Acceptable

需要在post的时候指定headers

查看更多

hexo

安装hexo

1
sudo npm install hexo-cli -g

图片显示

1
2
3
4
5
6
7
8
9
10
11
12
# 配置资源文件夹
# hexo n xxx 会生成同名文件夹,
# hexo g 会把同名文件夹内图片打包生成静态文件
_config.yml里的post_asset_folder,改成true

# 安装插件
npm install hexo-asset-image --save

# 设置typora编辑器
# 图片插入路径= ./${filename}
# 优先使用相对路径
在typora编辑器内粘贴图片时会自动把图片存储到同名文件夹

typora设置界面

主题配置

hexo-theme-Wikitten Github地址

部署hexo

1
2
3
4
5
6
7
8
9
# 进入blog目录
hexo init
# 启动服务器
hexo server
hexo server -p 8080 # -p 端口

# 生成静态文件
hexo generate | hexo g
`

查看更多

mongo

###

服务器

服务器启用mongo集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 进入mongo客户端
mongo
# 以下操作是在mongo客户端命令行内:
# 创建集群,集群名字=“rs0”
rs.initiate(
{
_id: "rs0",
members: [
{
_id: 0,
host: "mongo-r0:27017"
},
{
_id: 1,
host: "mongo-r1:27017"
},
{
_id: 2,
host: "mongo-r2:27017"
}
]
}
)
# 查看集群状态
rs.conf()
rs.status()

mongo客户端使用

登录/验证/切换数据库

1
2
3
4
5
# 进入mongo客户端(默认链接27017)
mongo

# 指定端口
mongo --port 1234

客户端模块调用

pymongo/motor调用mongo集群

当 mongo 是集群时,客户端连接时需要设置好要连接的所有 mongo 节点。

1
2
3
4
5
import pymongo
# uri里的“rs0”是集群名称,前面是每个节点的IP和端口
uri = 'mongodb://mongo-r0:27017,mongo-r1:27017,mongo-r2:27017/?replicaSet=rs0'
conn = pymongo.MongoClient()
[i for i in conn.list_databases()]

查看更多