续上一篇R快速入门笔记,本文是最近学习R的一些笔记心得。 Continue reading
Category Archives: Python|R
Flask-RESTful构建小型REST服务
REST是web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了。诸如docker daemon等服务都是提供了RESTful API,docker的CLI可以通过该API的URL地址与之通信。
Flask是一个超级流行的Python 编写的轻量级 Web 应用框架。而Flask有一个REST插件——Flask-RESTful是为了快速构建REST API的Flask插件,它能和现有的ORM配合实现轻量级数据抽象。Flask-RESTful鼓励小型化实践,非常简单易学。本文将会使用python的Flask框架轻松实现一个RESTful的服务。
REST的六个特性:
- Client-Server:服务器端与客户端分离。
- Stateless:每次客户端请求必需包含完整的信息,换句话说,每一次请求都是独立的。
- Cacheable(可缓存):服务器端必需指定哪些请求是可以缓存的。
- Layered System(分层结构):服务器端与客户端通讯必需标准化,服务器的变更并不会影响客户端。
- Uniform Interface(统一接口):客户端与服务器端的通讯方法必需是统一的。
- Code on demand(按需执行代码):服务器端可以在上下文中执行代码
Continue reading
Python任务调度模块 – APScheduler
APScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务、并以daemon方式运行应用。目前最新版本为3.0.x。 Continue reading
Redis Sentinel配置小记
Sentinel是一个管理多个redis实例的工具,它可以实现对redis的监控、通知、自动故障转移。sentinel不断的检测redis实例是否可以正常工作,通过API向其他程序报告redis的状态,如果redis master不能工作,则会自动启动故障转移进程,将其中的一个slave提升为master,其他的slave重新设置新的master实例。也就是说,它提供了:
监控(Monitoring): Sentinel 会不断地检查你的主实例和从实例是否正常。
通知(Notification): 当被监控的某个 Redis 实例出现问题时, Sentinel 进程可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主redis实例失效时, Sentinel 会开始记性一次failover, 它会将失效主实例的其中一个从实例升级为新的主实例, 并让失效主实例的其他从实例改为复制新的主实例; 而当客户端试图连接失效的主实例时, 集群也会向客户端返回新主实例的地址, 使得集群可以使用新主实例代替失效实例。
Redis Sentinel自身也是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程, 这些进程使用流言协议(gossip protocols)来接收关于主Redis实例是否失效的信息, 然后使用投票协议来决定是否执行自动failover,以及评选出从Redis实例作为新的主Redis实例。 Continue reading
Python Reading List (2)
最近工作又要用到Python了,无奈有段时日没用Python写过东西了,有些生疏。所以借五一把收藏的Python博文翻出来看一下,温故而知新。 Continue reading
Linux下R和package编译安装
R语言在Linux下安装较为麻烦,在online可以直接通过epel来安装,而离线的情况下需要通过编译来安装。而package也不能通过install.packages()通过CRAN在线安装。下面简单介绍一下编译安装的方式 Continue reading
Python Reading List (1)
从接触Python到现在也有四五年时间了,由于平时代码写的少,一直处于打游击的新手状态,缺乏系统的、原理的学习。这段时间陆续收藏了一些干货,借这个时间review一遍。
Python 3 正在毁灭 Python
Python 3打破了对Python 2向后兼容性,“Python 2的字节字符串(str)和Python 3的字节字符串(bytes)之间的根本不同。事实上会很难移植,并且需要一点移植技巧”。但从目前来看许多关键的第三方库都已经成功移植到3.3上。知乎上也对这个问题有着激烈的讨论:http://www.zhihu.com/question/23928496 。Python 3弥补了一些设计上的失误,大部分Python高手还是倾向于转战Python 3的。但是新的语法和规则的引入让我觉得完全在接触一个新的语言,带来的是太多学习的成本。虽然文章有一些危言耸听的成份,但转战Python 3对我来说还有有一些遥远。。
Continue reading
使用Python操作Redis
1. 安装pyredis
首先安装pip
1 2 3 4 5 6 7 8 |
<SHELL># apt-get install python-pip ...... <SHELL># pip install --proxy=http://172.1.2.6:8080 redis Downloading redis-2.9.1.tar.gz (62kB): 62kB downloaded Running setup.py (path:/tmp/pip_build_root/redis/setup.py) egg_info for package redis ...... Successfully installed redis Cleaning up... |
也可以使用easy_install的方式来安装:
1 |
easy_install redis |
或者直接编译安装:
1 2 3 4 |
wget https://pypi.python.org/packages/source/r/redis/redis-2.9.1.tar.gz tar xvzf redis-2.9.1.tar.gz cd redis-2.9.1 python setup.py install |
从Oracle到MySQL传输表数据
今天有一个需求,要把一个500W行的表传输到一个MySQL数据库中。有OGG和阿里楼大大的工具(见anysql.net)两种比较好的解决方法。这里我也简单得写了一小段python代码来实现这种简单的需求。
方法:Oracle -cx_Oracle lib-> Python -MySQLdb lib-> MySQL
常见类型对应如下:
number(12) – long – decimal(12)
date – datetime – datetime
varchar2(20) – str – varchar(20)
Continue reading