升级python2.7和安装pip,easy_install和setuptool

升级python和安装pip,easy_install和setuptool 新机子装环境什么的最麻烦了,在此记录一下python的升级和包(模块)管理软件 ...

July 30, 2014 · 2 min · Me

python交互模式下方向键乱码的正确解决方法

python交互模式下方向键乱码的正确解决方法 今天升级了python后,发现在交互模式中上下左右变成了乱码 ^[[A ^[[D ^[[B ^[[C ^[[D ^[[D ^[[D ^[[D ^[[D ^[[D ^[[D ^[[D 搜索了一下,普遍的解决方法是 因为方向键被转义了 原因主要是由于缺少readline Module问题导致的。而CentOS默认只有readline模块而没有readline-devel模块。 解决方法 yum -y install readline-devl 然后重新编译安装python就ok了 再仔细一看,这些问题都是N年前了,yum中的包名早都换了。。。怪不得总是报错,说找不到readline-devl,貌似现在开发版后面都变成devel了 ...

July 29, 2014 · 1 min · Me

bad-interpreter-没有那个文件或目录

bad interpreter: 没有那个文件或目录 起因 今天在linux上运行一个python脚本,总是报错bad interpreter,开始我以为是解释器的路径问题,可是whereis python告诉我路径没有错! google之,问题解决: 在windows上编辑的脚本,到linux上执行,会提示上面的错误 解决办法 dos2unix myfilename 报错的话执行一下yum install dos2unix -y 原因 在windows下编辑的脚本,是dos格式的,即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A。 以后再windows上的写脚本一定要三思!

July 29, 2014 · 1 min · Me

#!-usr-bin-env与#!-usr-bin-python的区别

今天写了个采集脚本,使用了BeautifulSoup,所以在代码中有下面的import语句 from BeautifulSoup import BeautifulSoup as BS 在win下执行,没问题,但是在linux下执行,就报这个错误 ImportError: No module named BeautifulSoup google之 转自快乐&&平凡 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器; #!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。 #!/usr/bin/python相当于写死了python路径; #!/usr/bin/env python会去环境设置寻找python目录,推荐这种写法。 而我的/usr/bin/python是2.6版本,但是安装BeautifulSoup的是2.7。。。 #mv /usr/bin/python /usr/bin/python2.6.6 #ln -s /usr/local/bin/python2.7 /usr/bin/python 成功解决!

July 29, 2014 · 1 min · Me

记一次bypy的使用

无意间发现了bypy一个python写得百度网盘的linux客户端 工具实在难得,记录一下,说不定以后能用上! ...

July 28, 2014 · 1 min · Me

在python的urllib2中使用socks代理

转自潘魏增的博客! python2.5中的urllib2支持http代理,不支持socks代理。假如代码库或者编码时使用了urllib2,同时又要使用socks,就需要第三方的库来实现。幸运的是,已经有人造好了轮子。 SocksiPy是一个socks module。它提供了一个类socket的接口,支持socks4、socks5和http proxy。下载后在代码中引用socks.py即可,也可以写个setup.py文件安装到python的site-packages目录中。 使用时,将下面的代码放在调用urllib2的代码之前即可: import socks import socket socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080) socket.socket = socks.socksocket import urllib2 print urllib2.urlopen('http://baidu.com').read() 如果是自己写的程序,也可以尝试使用pycurl这个库。ubuntu使用sudo apt-get install python-pycurl python-pycurl-dbg安装。 示例代码 import pycurl c = pycurl.Curl() c.setopt(pycurl.URL, 'http://baidu.com') c.setopt(pycurl.PROXY, '127.0.0.1') c.setopt(pycurl.PROXYPORT, 8080) c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5) c.perform() 如果在程序外部使用socks,推荐使用tsocks。ubuntu中直接使用sudo apt-get install tsocks安装。安装完毕以后需要修改/etc/tsocks.conf。配置样例如下 # 默认代理服务器 server = 127.0.0.1 # 代理服务器类型 server_type = 5 # 代理服务器端口 server_port = 8080 使用时,在命令行输入tsocks 程序名即可。例如ubuntu下的epiphany浏览器没有代理设置,如果想使用socks代理,输入tsocks epiphany-browser即可(注意先关闭其他的epiphany实例)。

July 27, 2014 · 1 min · Me

在github写博客

没想到jekyll这么火啊! 今天闲来无事,也想试试把博客搬到github玩玩。 ...

July 26, 2014 · 1 min · Me

PHP正则表达式的模式修正符

PHP在处理正则表达式的时候,在最后面可以加上诸如/i, /is, /s, /isU的选项,他们都代表什么含义呢? 其实他们是PHP正则表达式的模式修正符,用于对正则表达式的补充。 [TOC] 优先级概念 正则符号的优先级: ()圆括号因为是内存处理所以第1 * ? + { } 重复匹配内容第2 ^ $ \b 边界处理第3 | 条件处理第4 最后按照运算顺序计算匹配 常用的修正符 i (PCRE_CASELESS)正则内容在匹配时候不区分大小写(默认是区分的)。 如preg_match('/\[TOC\]/i',$str) 这句话中的小写字母i,他跟在正则表达式后面,起的作用是匹配时忽略大小写 所以,上述正则表达式可以匹配诸如 [toc]、[ToC]、或者[TOC]。 m (PCRE_MULTILINE) 在匹配首内容或者尾内容时候采用多行识别匹配。默认情况下,PCRE 将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始,“行结束”元字符($)仅仅匹配字符串的结束,或者最后一个字符是换行符时其前面(除非设定了 D 修正符)。这和 Perl 是一样的。 当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。这和 Perl 的 /m 修正符是等效的。如果目标字符串中没有“/n”字符或者模式中没有 ^ 或 $,则设定此修正符没有任何效果。 S (PCRE_DOTALL) 如果没有使用这个模式修正符号,元字符中的".“默认不能表示换行符号,将字符串视为单行。如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。 x (PCRE_EXTENDED) 忽略正则中的空白。如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。 A (PCRE_ANCHORED) 强制从头开始匹配。如果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配即自动在模式开头加上^。此效果也可以通过适当的模式本身来实现(在 Perl 中实现的唯一方法)。 D (PCRE_DOLLAR_ENDONLY) 强制$匹配尾部无任何内容。如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。 S 当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。...

July 25, 2014 · 1 min · Me

php将image转换为base64编码

引用PHP手册里的一评论 This will greatly reduce your page load time as the browser will only need to send one server request for the entire page, rather than multiple requests for the HTML and the images. Requests need to be uploaded and 99% of the world are limited on their upload speed to the server. 翻译一下就是 这种方式能够大大减少页面载入时间,因为整个页面只需要一个请求,多个针对html文档和图片的请求。请求需要被提(上)交(传),但是99%的上传速度是被限制的。 所以减少请求也是一个明确的选择! ...

July 25, 2014 · 1 min · Me

单引号和双引号的区别及用法

双引号,单引号问题自古以来一直处在混沌状态,不懂的人觉得没啥区别,懂的人貌似也说不出来啥区别,其实区别还是有很多,转给大家看看,自己也留一份参考 转自http://blog.sina.com.cn/s/blog_706476980100xapp.html 1.单引号和双引号都可以作为字符串的开始符和关闭符,并且只能‍同一种单或者双引号来定义开始和结束;单引号之间的字符都被认为是字符,即使是转义符\和变量符$,例外的是\’标识单引号。 2.双引号之间的字符是需要php解析的,包括$,\,{都保留了php赋予的特殊含义。 3." “双引号里面的字段会经过编译器解释,然后再当作HTML代码输出;而' ‘单引号里面的不进行解释,直接输出。 例如: $abc='my name is tome'; echo $abc //结果是:my name is tom echo '$abc' //结果是:$abc echo "$abc" //结果是:my name is tom 特别在使用MYSQL语句的时候,双引号和单引号的用法让新手不知所措,在这里,举个例子,来进行说明。 假设查询条件中使用的是常量,例如: select * from abc_table where user_name='abc'; SQL语句可以写成: SQLstr = "select * from abc_table where user _name= 'abc'" ; 假设查询条件中使用的是变量,例如: $user_name = $_REQUEST['user_name']; //字符串变量 或 $user=array ("name"=> $_REQUEST['user_name‘,"age"=>$_REQUEST['age'];//数组变量 SQL语句就可以写成: SQLstr = "select * from abc_table where user_name = ' " . $user_name . " ' "; SQLstr = "select * from abc_table where user_name = ' " . $user["name"] . " ' "; 对比一下: SQLstr="select * from abc_table where user_name = ' abc ' " ; SQLstr="select * from abc_table where user_name =' " . $user _name . " ' "; SQLstr="select * from abc_table where user_name =' " . $user["name"] . " ' "; SQLstr可以分解为以下3个部分: 1:"select * from table where user_name = ' " //固定SQL语句 2:$user //变量 3:" ' " 1,2,3部分字符串之间用"." 来连接 ...

July 22, 2014 · 4 min · Me