小但有用的知识点

收集一些平时用到的不喜欢记忆的点

Posted by xiaoh on February 17, 2016

目录

  1. VIMDIFF操作
  2. Nginx Body Size
  3. 令人惊艳的正则
  4. Unix/Linux快捷键
  5. Linux同步时间
  6. Merge fork 的项目
  7. Github Pages Jekyll Tips
  8. Shell Default Params
  9. Python Logging

这篇博客里面记录一些平时能够用到的,比较小的知识点


VIMDIFF操作

You can use the following basic commands to merge:

  • do Get changes from other window into the current window.
  • dp Put the changes from current window into the other window.
  • ]c Jump to the next change.
  • [c Jump to the previous change.
  • zo open folded lines.
  • zc close folded lines.
  • Ctrl+w,w change window.
  • :only | wq quit other windows, write and quit.

See more details at: http://amjith.blogspot.com/2008/08/quick-and-dirty-vimdiff-tutorial.html


Nginx Body Size

在用Nginx处理上传数据时,可以指定最大的Post Body的大小:

client_max_body_size 50k;
client_body_buffer_size 50k;

我在使用 lua 去处理 body 的时候,通过 ngx.req.read_body();local body = ngx.req.get_body_data() 来读取内容,这个时候 buffer 的大小尤为关键,默认只能读取11k多一些的内容,所以需要指定一下。


令人惊艳的正则

  • 判断一个数字是否可以被3整除
^([0369]+|[147]([0369]*[147][0369]*[258])*([0369]*[258]|[0369]*[147][0369]*[147])|[258]([0369]*[258][0369]*[147])*([0369]*[147]|[0369]*[258][0369]*[258]))+$
  • 判断一个数字是否是素数

    ^(?!(xx+?)\1+$)


Unix/Linux快捷键

  • Ctrl-a : 行首
  • Ctrl-e : 行尾
  • Ctrl-b : 光标前移
  • Ctrl-f : 光标后移
  • Ctrl-l : clear, 清屏
  • Ctrl-p : 上一个命令
  • Ctrl-n : 下一个命令
  • Ctrl-c : SIGINT中断程序
  • Ctrl-\ : 发送SIGQUIT信号中断程序
  • Ctrl-h : 删除光标前的一个字符
  • Ctrl-d : 删除光标后的一个字符
  • Ctrl-w : 删除光标前的一个词
  • Ctrl-u : 删除行首到光标的所有内容
  • Ctrl-k : 删除光标到行尾的所有内容
  • Ctrl-y : 粘贴刚才删除的所有字符
  • Ctrl-r : 在历史命令中查找
  • Ctrl-z : 转入后台运行(不过,由Ctrl + z转入后台运行的进程在当前用户退出后就会终止,所以用这个不如用nohup命令&,因为nohup命令的作用就是用户退出之后进程仍然继续运行,而现在许多脚本和命令都要求在root退出时仍然有效)
  • !! 重复执行最后一条命令
  • history 显示你所有执行过的编号+历史命令。这个可以配合!编辑来执行某某命令
  • !$ 显示系统最近的一条参数

Linux同步时间

sudo ntpdate time.nist.gov

上面的命令就可以同步时间了,如果想做成自动的,如下:

*/10 * * * * ntpdate time.nist.gov   #域名或IP  

每隔十分钟同步一次。推荐几个时间服务器。

time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org

Merge fork 的项目

git remote add remote_xx xx_url
git fetch remote_xx
git merge remote_xx/master

Github Pages Jekyll Tips

如果出现更新的博客在 Jekyll 生成之后不能显示,试着给博客的时间减去8个小时

如果还是不能显示,则需要查看一下是否修改后的时间和其他的博客的时间有冲突,比如 ,他们最好是一个顺序的关系(后生成的博客最好不要比之前的时间早)等等。


Shell Default Params

  • $# 是传给脚本的参数个数
  • $0 是脚本本身的名字
  • $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数
  • $@ 是传给脚本的所有参数的列表
  • $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
  • $$ 是脚本运行的当前进程ID号
  • $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

Python Logging

Python的日志输出模块:

import logging, logging.handlers

logging.basicConfig(format='%(asctime)s %(levelname)s %(lineno)d] %(message)s', datefmt='%m-%d %H:%M')
logger = logging.getLogger('class_name')
handler = logging.handlers.RotatingFileHandler(
        filename='/dev/null',
        maxBytes=10 * 1024 * 1024,
        backupCount=5)
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)

for i in range(1000000):
    logger.debug('alksdf;laksdf;laksdf;lkasd;flasd;fl%d' % i)

END