自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猛禽的编程艺术

编程是一门艺术

  • 博客(263)
  • 收藏
  • 关注

原创 CSDN搞什么

CSDN的做法太恶心

2017-11-30 11:25:01 1775 1

原创 iSCSI的配置笔记

记录一下iSCSI客户端的配置

2017-10-25 20:42:02 1927

原创 搭建python数据分析平台

基本结构其实没什么高深的东西,无非是常用的那一套:pandas, numpy, matplotlib…但是为了更方便使用,加持了 jupyter notebook(即以前的ipython notebook)……又为了更方便使用,前端加了nginx或apache反代……双为了更安全,加持了Let’s Encrypt的HTTPS

2017-09-19 23:17:57 4892

原创 用Docker+ELK集中处理日志

需求手头有几个服务器的日志需要处理,数据量也不是很大,但是又不想在每个服务器上都装一套ELK,毕竟这货还是挺笨重的。另外,ELK这堆东西依赖也挺多,而且还是用JAVA的,我才不想为了装这个把系统搞得乱七八糟,所以必须跑在docker里。当然,也不可能在每台服务器上都装个docker,毕竟这货也不是省油的灯。于是有这样的方案。

2017-08-27 18:34:41 17705 1

原创 一个Redis消息队列实现

对前文所介绍的Redis Cache作了一点简单的扩展,增加了消息队列功能。

2017-07-14 23:39:10 1997

原创 一个Redis Cache实现

这次的目标是需要实现一个比较通用的cache,支持各种数据类型,有超时更新机制,超时更新需要有锁

2017-06-29 22:09:45 5054

原创 在容器中运行Jenkins部署主机中的docker应用

如何让一个跑在container里的Jenkins把应用部署到host环境上?

2017-05-14 17:24:36 6134

原创 解决多进程中APScheduler重复运行的问题

问题在一个python web应用中需要定时执行一些任务,所以用了APScheduler这个库。又因为是用flask这个web框架,所以用了flask-apscheduler这个插件(本质上与直接用APScheduler一样,这里不作区分)。在开发中直接测试运行是没有问题的,但是用gunicorn部署以后发生了重复运行的问题:每个任务在时间到的时刻会同时执行好几遍。注意了一下重复的数量,恰恰是gun

2017-04-04 22:34:30 16509 12

原创 HTTPS配置全记录

常见的部署环境和条件有以下几种情况组合:Apache+自签名证书Apache+免费或商业证书Nginx+自签名证书Nginx+免费或商业证书免费证书和商业证书本质上是一样的

2017-03-18 22:06:49 22003 2

原创 FreeBSD升级失败的处理

升级几个FreeBSD系统过程中出现的问题及其处理

2017-02-05 21:47:38 2648

原创 Mac OS X中virtualenv里python shell无法使用光标键问题的解决

最近碰到一个奇葩问题,在系统python shell里使用光标是一切正常的,但是到了virtualenv里就不行了,变成各种转义符,不能正常移动光标。搜了半天,都说跟readline有关,建议重新编译python,可是为什么系统的python是正常的呢?而且我是用homebrew安装的,应该也不会有问题啊。试过很多方法,比如重装readline或virtualenv什么的,都不能解决。

2017-01-29 23:33:29 2918

原创 docker在systemd下的配置问题

问题说明最近在debian8上装了个docker,但是因为存储空间的问题,需要把docker的存放路径改一下。按照官方文档的说法,只要修改/etc/default/docker里的DOCKER_OPTS,加上-g参数即可:DOCKER_OPTS="-g /path/to/dockerdata"但是这样改过以后重启docker,发现docker仍然在使用默认的/var/lib/docker

2016-12-23 23:49:43 3727

原创 Let's HTTPS

有了Let's Encrypt和Nginx的SNI配置,让我们像用HTTP一样去用HTTPS吧

2016-11-28 21:24:38 2915

原创 快速文件hash

最近打算把家里服务器上的文件理一下,想把重复的文件找出来,虽然我已经用了ZFS的dedup,实际占用空间并不会重复,但是还是觉得有必要理一下……写个程序扫描一遍并不复杂,但是要判断文件是不是重复就比较麻烦,可靠的方法当然是做全文件HASH,但是对于T级的硬盘来说,这样效率太低了,所以写了一段小代码来做一个快速的HASH。def get_filemd5(fullpath, filename):

2016-10-31 23:56:21 5108

原创 支付宝接口编码不规范问题

支付宝平台接口使用了不规范的方式,导致flask不能正常处理的问题解决。

2016-09-14 00:07:26 4522

原创 docker实践入门之六

最后一篇来举个栗子。样本项目一个基于bottle的python web项目依赖mako暂时只考虑部署一个版本的例子项目有以下内容:+-appname.py+-config.json+-requirements.txt+-views +-index.htmlrequirements.txt的内容为:bottlemakovirtualenv部署方式传统的python应用部署方式一般会推荐用

2016-08-13 22:29:26 2627

原创 docker实践入门之五

image的派生上面这个例子 有一个问题就是,如果应用程序修改了,就需要重新build一次,问题是重build的时候需要把前面一堆的命令都跑一遍,特别是安装软件那些还是挺慢 的,而且是不必要的重复工作,实际上我们只是修改了应用程序而已,所以更机智的办法是把这个image分成两个image,一个是python3基础环 境,一个是应用程序image。先来python3环境的Dockerfile:FRO

2016-07-05 00:36:37 5165

原创 docker实践入门之四

在前一个实践中,我们演示了如何使用现成的image来运行container供我们使用,这一节我们来试试自己建立image。使用交互方式创建image在第一篇文章里说过,通过对一个container执行commit操作可以创建一个image,这里先用这个方法做一个例子。首先需要一个基本image,目前docker推荐的是用一个轻量级linux发行版:Alpine Linux,这个发行版的最大优点就是

2016-06-02 23:44:33 11727

原创 docker实践入门之三

文件系统说完了网络,现在来说存储。对于redis这样的应用来说,我们通常并不需要它的持久化存储,只是拿它做缓存而已,所以存储问题并不重要,但是对于mysql这样的数据库来说,存储就非常重要了。前面说到了container和image的区别,但并不完全,它们还有一个重要区别就在于存储。docker使用了一套自己的文件存储机制,基于aufs、devicemapper、btrfs、vfs等文件系统,它的

2016-05-02 23:00:02 10166

原创 docker实践入门之二

开始动手先准备一个空的系统,现在要在上面装一个redis,传统的做法就是用系统的包管理器装一个呗,比如debian下可以用sudo apt-get install -y redis-serversudo service redis-server start然而在docker下是这样:docker pull redisdocker run -d --name redis redis第一步是从do

2016-04-16 17:26:53 7660

原创 docker实践入门之一

前戏……呃,前言docker是什么?docker是一种容器技术,它的主要功能就是能够让进程在一个隔离的容器环境里运行——在进程看来,它有一整套“独立”的OS环境,包括文件系统,类似于虚拟机。docker不是什么?docker 不是虚拟机,它只是一套虚拟运行环境,实际上在host机上用ps可以看到容器里面的进程。实际上docker里用到的环境都是来自于host机,只是相 对隔离而已,类似于pytho

2016-04-14 22:39:38 7049

原创 阿里大鱼短信接口(Python3版)

最近因为需要用到短信接口,选型的的结果是用阿里大鱼的短信服务,然而淘宝开放平台(TOP)的SDK已经很多年没有更新了,不支持python3,自己动手改了半天,还是不太正常,索性不用它,自己写一个算了。我才不会跟你们说我嫌弃它的代码,所谓大公司也就这样了。用法用法与TOP提供的SDK差不多,不过实现代码大幅简化,因为只用了短信功能,另外我这个只支持python3。

2016-03-16 20:21:52 8079 6

原创 不用密码的用户系统实现

一个可以不用密码的用户系统。默认只需要输入email即可注册或登录,如果需要密码,可以使用Google Authenticator扫描邮件中的二维码,使用GA生成的一次性密码登录。

2016-02-29 14:15:36 3220 1

原创 一个不用密码的用户系统

很多年前云风设想过这样一个用户系统《为什么一定要有密码?》,我是挺赞同的。对我来说,用户系统是一个责任重大的东西,可惜很多国内厂商都不把这当回事。之前做过一些小东西,基本上都是采用第三方登录的方式,比如用google账号登录。这样就把用户管理的麻烦事交给第三方去处理了,相信google这样的大厂能做得更好。然而总会有需要自己管理用户的时候,虽然可以采用各种安全的措施去保护这些用户数据,比如用更安全

2016-01-30 23:48:29 3186 4

原创 基于fabric和hg的自动化部署

自动化部署fabric是个很好用的自动化部署工具,虽然功能比起puppet,saltstack之类要弱一些,但胜在用python,而且免安装服务端。

2015-12-25 00:42:53 4007

原创 几个bottle插件

上篇《Bottle的插件与view装饰器冲突问题》里说到的问题就是我在写这几个插件时碰到的问题。为便于使用bottle写了一组插件。最初自己用的时候是把所有功能都写在一个插件里,感觉有点笨重,不适合灵活组合,所以分拆改写成现在的样子。包含beaker.BeakerPluginparams.ParamsPluginlogin.LoginPluginbeaker.BeakerPluginBeaker

2015-11-22 20:59:46 3723 1

原创 Bottle的插件与view装饰器冲突问题

其实这个问题由来已久,早在2012年就有人在bottle那报告过,但是因为python的inspec库本身的问题,它的wraps函数不能保留被包装函数的参数信息,所以一直不能彻底解决。问题大致是这样:@app.get("/")@view("index")def get_index(): return dict(a="a")上面是一个典型的使用view decorator的请求响应函数。

2015-10-22 22:32:16 3647 1

原创 sqlalchemy的关联子查询

SQLAlchemy也算是用过好几年了,不过一直都用着其中相对简单的一小部分,最近写个程序碰到个问题,需要作一个关联子查询,试了很久才解决。

2015-09-25 17:13:09 10546 2

原创 VIBE君,放过MOTO吧

(应朋友之邀而作,废话略多,肾入)这两年手机市场就没有太平过,而且是越来越不太平。这两天先是老罗发布了传说中的小锤子——坚果U1手机,紧接着360也发布了和酷派合作推出的奇酷手机,市场一片火爆,尤其是低价机市场。虽然老罗和老周都说他们的手机是为年轻人设计的(实际就是针对屌丝市场),然而有人评论认为,这种低价机根本就不是给所谓的屌丝准备的,而是定位于二奶机——因为即使屌丝,要买大奶机也会首先考虑苹果

2015-08-28 19:01:25 4519 1

原创 用Wordpress构建App更新和反馈平台(下)

用户反馈上文说了,APP的用户反馈功能麻烦在于GooglePlay在国内没法用,但这只是一方面,另一方面用户也不一定乐意在发现问题时再去打开GooglePlay去找到你的应用再评论,能在应用里直接反馈当然是最好了。当然这个功能做一个也不是很麻烦的事情,无非是在系统后端加一个表,API上加一个函数的事情,但是如果每个应用都要前后端这么做一回还是很烦的,最好还是能有一个统一的渠道。于是我想到利用Wor

2015-06-06 00:28:20 3862 1

原创 在cubieboard2里安装pptpd碰到的依赖问题处理

前一阵家里那个ATOM服务器的电源坏了(7X24跑了4年,已经很不错了),在等配件期间买了一块cubieboard2做备用服务器。这货带一个SATA口,的确是ARM主板中的 大杀器,性能和功能比树莓派强大多了,价格也贵不了多少。目前我的配置是带一块1T的2.5寸硬盘,稳定工作状态下耗电仅2.7W——大约只有ATOM D525主机的十分之一。本来想装FREEBSD的,但是太麻烦,而需要占用一块TF卡

2015-05-25 16:25:19 3424 1

原创 用Wordpress构建App更新和反馈平台(上)

需求在国内这种奇葩生态环境下,对于Android平台的移动应用,必备的功能之一就是要自带版本更新功能——这种事情本来用GooglePlay可以做得很好的……当然这事做起来也不麻烦,开发一个后端接口就是了,或者如我之前用过的方法:通过RSS实现。另外就是要提供一个用户反馈的渠道,以快速发现问题并加以改进,这个功能GooglePlay也有,但是在国内你懂的。至于国内那些应用市场,实在是太多太乱,管不过

2015-05-04 20:28:24 3491 1

原创 一个简单的Redis应用(修订版)

需求很早就听说过Redis的大名,但是一直也没有去研究。因为前一阵有朋友需要用到,来问过我时大致看了看,正好最近自己也碰到需求,就研究了一下。我这里的情况其实很简单:在一个VPS上跑了一个应用,提供了短链接功能,原来的实现是直接在web server上 做了一个反向代理,通过urlrewrite映射到后端服务器上。这么用当然是没有问题,功能是完全可以实现的,只是后来发现,当把短链接分享到社交网络

2015-03-02 15:53:36 3019 1

原创 rsync over ssh over socks

之所以要这么折腾,首先需要强烈谴责那些为某墙作出过贡献的程序员,解放后你们是一定会被清算的。需求这事的需求是这样的,我有几个国外的VPS用来跑自己和朋友的BLOG,为了保险起见,我搞了一套备份系统:在家里的服务器上开了一个ZFS做远程VPS的备份,备份方法是每天晚上通过rsync over ssh进行同步,然后本地服务器生成快照做版本控制。实现起来很简单,也可以满足需求:如果远端VPS数据丢失(故

2015-02-16 17:04:53 3781 1

原创 基于ZFS和GnuPG的安全远程备份方案

用ZFS提供备份存储,然后创建快照后加密传输到远程备份服务器保存。另,用ZFS的快照可以防范CryptoLocker病毒。

2015-01-30 12:34:45 4977 1

原创 用motion实现家庭视频监控

需求?当然不是为了艳照!你们这些猥琐的人类!毕竟家里总会有没人的时候,出门走到半路忘记煤气灶是不是关了,还得回去看看。在这个科技以人为本的时代,当然应该是拿出智能手机联网看看啦。还有万一有人闯空门什么的,也能有个及时报警什么的。motion是什么?motion是一个提供视频监控解决方案的开源软件,支持Linux/FreeBSD/MacOS等多个平台,本文以Linux为例,测试平台是LinuxMin

2014-12-18 20:18:22 13678 3

原创 喜大普奔,微软开源

总之微软宣布.NET开发环境开源是个好消息,但未来还需拭目以待……

2014-11-13 17:56:05 6292 12

原创 迁移Wordpress网站到PostgreSQL/Nginx

作为一名不喜欢MySQL的pg党,最近又迁了一个WordPress到PostgreSQL上,顺便就作个笔记以备不时不之需吧。当然,web server也从Apache换成了Nginx,所以这个配置也要改一下。WordPress的Nginx配置这个比较简单,因为Nginx不支持 .htaccess 配置只能改在conf里(使用php-fpm): location / { tr

2014-11-04 14:00:53 4801 1

原创 感受情怀

关于老罗和王自如事情要从long long ago说起。话说十几年前老罗语录走红的时候,我就是他粉丝了。不过后来他开始写BLOG,我就粉转路人了,虽然那时也常去牛博,但对老罗的很多观点都不赞同。等他再去开英语学校的时候,基本已经淡出我的视线。直到锤子ROM出来,我才重新注意到他。虽然锤子ROM的确有一些亮点,但真谈不上什么革命性——基本上所有的Android第三方ROM在我看来都差不多:比较好的就

2014-09-15 09:27:52 2896 1

原创 Android Studio中support版本错误问题的处理

问题现象说实话,我真不知道Google是怎么想的,或者如这里所说的确是个BUG,也不知道为什么拖这么长时间没有解决掉,或者是我的RPWT。这问题的表现就是,在项目的build.gradle文件里,如果用传统的自动依赖处理方式:compile 'com.android.support:appcompat-v7:+'编译时系统就会去依赖最新版的support:21.0.0-rc1 。理论上这本不应该有

2014-08-13 15:52:54 73994 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除