python脚本在crontab中无法执行解决

 今天在crontab里配置了一个python脚本定时执行,配置信息如下:

# crontab -l
35 9 * * * cd /home/work/test; ./test.py

 结果没有任何输出就是执行不了,利用下面命令观察crontab日志。

# s[......]<p class="read-more"><a href="http://neoremind.com/2012/05/python%e8%84%9a%e6%9c%ac%e5%9c%a8crontab%e4%b8%ad%e6%97%a0%e6%b3%95%e6%89%a7%e8%a1%8c%e8%a7%a3%e5%86%b3/">继续阅读</a></p>

 发现任务按时运行了,问题就奇怪了。

后来想到是不是环境变量引起的,于是检查python脚本的头部,将python的执行命令加入进去就好了,例如:

#!/usr/local/bin/python
# cod[......]<p class="read-more"><a href="http://neoremind.com/2012/05/python%e8%84%9a%e6%9c%ac%e5%9c%a8crontab%e4%b8%ad%e6%97%a0%e6%b3%95%e6%89%a7%e8%a1%8c%e8%a7%a3%e5%86%b3/">继续阅读</a></p>

HTTP Server简介

1. HTTP Server是干什么的?

    – 处理http请求,返回数据给浏览器
    – 负载均衡/反向代理/健康检查
    – 日志(access log)
    – URL Rewrite
    – gzip
    – cache-control(expire,etag,last-modified)
    – keep-alive(长连接[……]

继续阅读

分布式应用通信协议

1. 历史

第一轮:HTTP,带来了Internet与电子商务
第二轮:Java,cross-platform,最早的RMI
第三轮:XML,标准的数据封装技术,各种App之间交换数据不再是难事。
第四轮:RPC,Webservice、REST、高性能通信协议
 

2. What is RPC?

简单理解: 可互操作的Web服务

RPC(Remote Procedure Call)
–    在某种传输协议(TCP\HTTP等)上携带信息数据,通过网络从远程计算机程序上请求服务
– &[……]

继续阅读

跨平台通信中间件thrift学习【Java版本】

1. What is thrift?

Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。跨平台通信中thrift可以作为二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。
 

2. thrift为我们做了什么?

首先我们需要先了解下任何RPC的解决方案都包含如下几层实现:
· 服务层(service):RPC接口定义与实现
· 协议层(protocol):RPC报文格式和数据编码格式
· 传输层(transport):实现底层的通信(如 s[……]

继续阅读

几种Java常用的通信协议比较

本文比较了RMI,Hessian,Burlap,Httpinvoker,Web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。

 

1. 简介

RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。
Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以用于任意语言。
Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。

[……]

继续阅读

WEB小流量实验解决方案

最近在项目组里负责搭建WEB系统的小流量实验平台,这篇文章主要介绍了小流量实验的目的,方法原理,实现方案等。

 

1. 小流量实验的目的

业务上经常需要做一些小流量的实验,即抽取一部分客户,这部分客户使用系统,会看到一些小流量的新功能,而其他用户使用系统,仍然和原来一样。这样通过一些数据指标的对比,有助于我们评估小流量的价值,从而决策是否将其转成全流量。
 

2. 小流量实验方法论

小流量实验必须要区分实验组和对照组,实验组就是被小流量的请求或者用户,同理对照组就是全流量的。因此为了保证实验符合A-B原则,理论上需要先做A-A测试,即在全流量上寻找这样一组各项度[……]

继续阅读

nginx根据cookie分流

众所周知,nginx可以根据url path进行分流,殊不知对于cookie分流也很强大,同时这也是我上篇提到的小流量实验的基础。
 
二话不说,先看需求,两台服务器分别定义为
apache001:192.168.1.1:8080
apache002:192.168.1.2:8080
 
默认服务器为:
default:192.168.1.0:8080
 
前端nginx服务器监听端口8080,需要根据cookie转发,查询的cookie的键(key)为abcdexpid,如果该cookie值(value)以1结尾则转发到apache001,以2[……]

继续阅读

在Linux上利用phantomjs进行网页截图

1. phantomjs介绍

基于Javascript驱动的命令行webkit引擎,轻量级,安装简单,开发快速,渲染速度较快
无界面的webkit浏览器
更多介绍可以参考 http://code.google.com/p/phantomjs
 

2. phantomjs应用场景

web回归测试
网页截图,png,pdf
网络状况监控
 

3. phantom网页截图

以在ubuntu上截图为例。
 
1) Ubuntu 10.10上安装
sudo add-apt-repository ppa:jerome-etienne/neoip[......]<p class="read-more"><a href="http://neoremind.com/2012/03/%e5%9c%a8linux%e4%b8%8a%e5%88%a9%e7%94%a8phantomjs%e8%bf%9b%e8%a1%8c%e7%bd%91%e9%a1%b5%e6%88%aa%e5%9b%be/">继续阅读</a></p>

MySQL的Infobright引擎介绍

Infobright是一个与MySQL集成的开源数据仓库(Data Warehouse)软件,可作为MySQL的一个存储引擎来使用,SELECT查询与普通MySQL无区别。

基本特征

优点:

1. 查询性能高:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍

2. 存储数据量大:TB级数据大小,几十亿条记录

3. 高压缩比:在我们的项目中为18:1,极大地节省了数据存储空间

4. 基于列存储:无需建索引,无需分区

5. 适合复杂的分析性SQL查询:SUM, COUNT, AVG, GROUP BY

[……]

继续阅读

海量用户积分排名的几种算法

问题

某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。

PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,而不局限于面试题的理想环境。

存储结构

首先,我们用一张用户积分表user_score来保存用户的积分信息。

表结构:

user<em />score</em>schema

示例数据:

user<em />score</em>sample

下面的算法会基于这个基本的表结构来进行。

算法1:简单SQL查询

首先,我们很容易想到用一条简单的SQL语句查询出积分大于该用户积分的用户数量:

select[......]

继续阅读

网络营销词汇表

网络广告计费模式

CPM:(Cost Per Mille/ ) 每千人成本: 通常用于banner, 图片,flash广告 

CPC:(Cost Per Click) 每点击成本: 以每点击一次计费,广泛应用于搜索引擎广告 

CPA/CPT:(Cost Per Action/Transaction) 每行动成本: CPA计价方式是指按广告投放实际效果,通常用于在线交易。 

除了CPM、CPC、CPA之外,还有: 

CPTM (Cost per Targeted Thousand Impressions) :经过定位的用户(如根据人口统计信息定位[……]

继续阅读

召回率与准确率

召回率(Recall Rate)(查全率):是检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。 

精度(Precision)(查准率):是检索出的相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率。



对于一个检索系统来讲,召回率和精度不可能两全其美:召回率高时,精度低,精度高时,召回率低。

  

对于搜索引擎系统来讲,因为没有一个搜索引擎系统能够搜集到所有的 Web 网页,所以召回率很难计算。

目前的搜索引擎(广告)系统都非常关心精度,而网盟联盟广告系统更关心召回率,因为要出准确的广告。



影响一个搜索引擎系统的性能有很多因素[……]

继续阅读

B树、B+树与B*树简介

本文主要介绍各种B树,不对插入、删除做过多的深入了解。

1. 引子

动态查找树主要有:

二叉查找树(Binary Search Tree)
平衡二叉查找树(Balanced Binary Search Tree)
B-tree
B+-tree
B*-tree 
前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率
 
但是我们要面对这样一个实际问题,大规模数据存储中,实现索引查询是在这样一个实际背景下的,即树节点存储的元素数量是有限的(如果元素数[……]

继续阅读

查看memcached运行状态

 memcache的运行状态可以方便的用stats命令显示。

调用命令如下:
 
telnet ip port
 
例如,执行 telnet 127.0.0.1 11211 这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。

一个实际的执行结果如下:

$ telnet 127.0.0.1 11311
 
Trying  127.0.0.1 ...
 
Connected to xxx.yyy.ccc.com ( 127.0.0.1 ).
 
Escape character is[......]<p class="read-more"><a href="http://neoremind.com/2012/02/%e6%9f%a5%e7%9c%8bmemcached%e8%bf%90%e8%a1%8c%e7%8a%b6%e6%80%81/">继续阅读</a></p>

Python time时间用法

python的time使用方法详见链接。下面列举一些常用方法。

>>> import time

设置一个时间的格式,下面会用到

>>>ISOTIMEFORMAT=’%Y-%m-%d %X’

看一下当前的时间,和其他很多语言相似这是从epoch(1970 年 1 月 1 日 00:00:00)开始到当前的秒数。

>>> time.time()

1180759620.859

上面的看不懂,换个格式来看看

>>> time.localtime()

(2007, 6, 2, 12, 47, 7, 5, 153[……]

继续阅读