`
liaofeng_xiao
  • 浏览: 127445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
最直接的学习Beanstalkd的方式就是读官方协议文档: https://raw.github.com/kr/beanstalkd/master/doc/protocol.txt beanstalkd是一个快速的、通用目的的work queue。协议简单,是个轻量级的消息中间件。 “(Beanstalkd) is a simple, fast workqueue service. Its interface is generic, but was originally designed for reducing the latency of page views in high-volum ...

tmux学习笔记

tmux号称screen的替代品,来看看为什么这么说: 支持多个window之间的粘贴/复制,可以选择粘贴缓冲区,而这screen不支持。 分屏操作完胜。screen只支持简陋的上下分屏,分屏后还需要ctrl+a+c才能创建一个新的终端。screen直接创建一个终端,且支持屏幕之间的切换/relocate/重定义大小,以及提供了一些预置的layout tmux默认自带status bar,screen还需手动配置 tmux的配置比screen简单 vi和emac模式绑定                                                     启动tmux ...

diff and patch

diff的选项挺多,但这里只介绍最常用的三个,其他的,还是看man diff吧: -r: 递归比较文件夹下的文件 -N: 如果某个比较的文件为不存在,则视为空文件 -u: unified,diff的结果进行格式化输出(可读性更好) 所以,diff的一般用法是: diff -Nur old_version new_version >> mods.diff patch使用diff文件的输出,所以两者总是配对使用。但patch不仅可以支持diff产生的输出,也可使用svn/git等工具生成的diff。 patch的三个常用选项: -p NUM: 产生的diff文件,包含dif ...

virtualenv

virtualenv通过创建独立的python运行环境,隔离不同项目对同一个lib不同版本之间的依赖,以及在某些目录/机器上安装新的package但没有权限问题。 掌握virtualenv只需要两个步骤: virtualenv --hlep 参考文档:https://virtualenv-chinese-docs.readthedocs.org/en/latest/ 对这么简单高效的工具,简洁的介绍对它是一种尊重。

pycaptcha

pycaptcha是python的开源图片验证码库,很基础,但也记录一下吧。 1. 目录结构 下载pycaptcha,基本目录结构如下: . | -- Base.py: 定义BaseCaptcha,提供Factory接口供外面生成、验证验证码 | -- data: 用来存放数据的目录,验证码字体、验证码背景图片以及验证码词库都存在该目录下 |    | -- fonts |    | -- pictures |    | -- words |-- File.py: 定义RandomFileFactory,用来在data目录中获取随机的字体、背景图片和词语 |-- __init__.py: 作为 ...

flask学习笔记

Micro means Flask aims to keep the core simple but extensible. Flask won't make any decisions for you(database, template, form validation, authorization, uploading file, etc), everything is up to you. so flask can be anything you need and nothing you don't. conventions: static files and templates ar ...

screen用法小记

screen也是早就会用的工具,但发现近来一段时间不用,就知道^a^a和detach attach这些简单的命令了。同样的情况还有tmux、svn、git,学习的时候一是觉得知识简单,二十觉得经常在用,不可能忘掉。可知世事无常,好记忆总不如烂博客,于是吃一见长一智,来个亡羊补牢罢。 第一步,启动screen: screen 或者启动时执行一条shell命令: screen vim notification.py 启动选项: screen -c: 指定screen配置文件,默认配置文件是~HOME/.screenrc screen -d: detach screen, 在screen会话里使用 ...

ssh命令

就不复述ssh的作用了 主要是一些配置用于ssh到远程主机时不用输入用户名和密码 第一步: ssh-keygen -t rsa 生成ssh的密匙文件和私匙文件:id_rsa和id_rsa.pub -t选项是type的意思,即加密方式(还可以用dsa,具体参看manual) 第二步: ssh-copy-id username@host 输入一次密码就配置好了。 关于第二步也有笨方法 scp id_rsa.pub username@host 然后在远程主机上执行: cat id_dsa.pub >> ~/.ssh/authorized_keys 比较而言,ssh-copy-i ...

find用法

find [PATH] [option] [action] 与时间相关的参数: -atime, -mtime, -ctime,分别是上次访问时间,上次修改时间和创建时间 以mtime为例: -mtime n: n为数字,表示在几天前的“一天之内”修改过 -mtime +n: n天之前修改过,不包括n -mtime -n: n天之内修改过,包括n -newer filename: 比filename还要新的文件 时间的单位有: s:second m: minute h: hour d: day w: week 举个栗子:找出今天有更新的python代码文件: find . -mtime 0 ...

ack用法

ack可以用来替代grep 99%的的使用场景 它很智能,只搜索它“认识”的文件 比如:ab.c这中文件,ack是不会去搜索的 使用-a选项可以搜索所有的文件,但 某些文件是永远都不会搜索的(除非在命令行中指定),比如备份文件。 [no]ignore-dir: ack会在制定目录下递归搜索文件夹,如果要忽略搜索某个文件件,使用--ignore-dir. 如果不忽略,使用--noignore-dir. -a, --all: 搜索所有文件 -C:打印匹配文本前后的N行文字。-A(after),打印匹配文本后面的N行,-B(befor),打印匹配文本前面的N行。 -c, --count: 覆 ...
要说quixote1.2真是老古董了,官网都已经不提供下载了(只维护1.3和2.x)。鉴于历史原因,公司暂时是不会做quixote升级的,而且就目前来看,完全没有问题。 下载源代码,主要看publish.py 有个publish方法: def publish(self, stdin, stdout, stderr, env): """publish(stdin : file, stdout : file, stderr : file, env : dict) Create an HTTPRequest object f ...
生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率。 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) Ctrl + b :按字符后移(左向) Alt + f :按单词前移(右向) Alt + ...

Mako总结

mako是python的模板语言之一,类似于Java的JSP。 特点:简单快速,对模块话编程支持到位,能直接调用python代码。 关于速度的对比: Mako: 1.10 ms     Myghty: 4.52 ms Cheetah: 1.10 ms Genshi: 11.46 ms Django: 2.74 ms Kid: 14.54 ms mako的本质:模板 ...
生产环境收集到bug,在小组管理员进行ban/unban小组成员操作时需要更改小组成员的状态(单独的一张表,大概为:小组id,成员id,状态,前两列组成联合主键),往该表插入数据行时数据库提示insert主键冲突。分析原因,可能是服务器抖动(概率很小,而且看日志的重复次数不像是服务器原因),也可能是两个小组的管理员都在执行同一个小组成员的insert操作,一先一后,后操作的执行失败。 可能的解决方法是,每次插入操作时执行一次查询操作,如果表中没有对应记录就执行insert,否则执行update,但这需要进行两次db操作。Mysq提供了insert...on duplicate key upda ...

Spring定时程序

以Java Application的形式在本地开发环境运行定时程序: PropertyConfigurator.configure(ScheduleQuartz.class.getClassLoader().getResource("config/log4j.properties")); ContextManager.setContext(new ClassPathXmlApplicationContext("/config/applicationContext.xml" ...
Global site tag (gtag.js) - Google Analytics