Windows 下使用MinGW编译Cython

用Visual C++编译器也是可以的(找不到vcvarsall.bat可以看这篇),不过为了后面移植方便,目前的项目还是用MinGW.

步骤其实很简单,参考http://cython.readthedocs.io/en/latest/src/tutorial/appendix.html

稍微翻译一下就是:

  1. 从这里http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite 下载个MinGW Installer. 下载、安装的时候记住是32位版本的,因为64位版仍旧有些不兼容现象。
  2. 运行安装下载的程序。Cython只需要最基本的包(basic package)就行了,主要是为了里面的C++编译器
  3. 将你安装MinGW的目录设置到PATH环境变量中。默认位置应该是C:\MinGW\bin
  4. 在Python安装目录下创建配置文件。如果Python是安装在C:\Python27目录下,那就创建C:\Python27\Lib\distutils\distutils.cfg,然后文件内容为

     

这样就可以使用GCC编译啦~

 

Python numpy 按矩阵的某一列排序

可以参考我在StackOverflow上的回答

sorting arrays in numpy by column

利用numpy的argsort对需要排序的列标记序号(索引),然后直接改变原始矩阵的索引就行啦~

 

搭建自己的openwrt小镜像服务器

虽然当我写完的时候我发现wget可以一句话解决这个事情,不过还是与大家分享下代码吧~

更简单的方法详见:http://zqhong.qiniudn.com/2014/10/18/%E6%90%AD%E5%BB%BAOpenWrt%E6%9C%AC%E5%9C%B0%E8%BD%AF%E4%BB%B6%E5%BA%93%E9%95%9C%E5%83%8F/

下面是我写的小爬虫,是在其他人的成果基础上改的,新增支持级联目录

 

 

组合 递归

荒废计算机太久了,以至于这么简单一个问题想了我大半天,其实就是数组求组合输出的方法,写下此日志提醒自己不能忘了老本!

题目的话大概可以这样表述

给出一个数据A={a_0,a_1,a_2…a_n}(其中n可变),打印出该数值元素的所有组合

需要使用递归的方法解决比较好,分而治之

给一大团数据{a0,a1, a2, …, an}:

1. 如果就剩一个元素的话,我就输出它,结束;

2.不输出a0,把除了我之外的余下一团交由递归处理;

3.要输出a0自己,然后余下一团交由递归处理;

其中case 3里面需要注意下一个递归要记住a0是要输出的,所以实践起来就是带了个前缀一样的东西记住。感觉这种排列组合的问题应该也可以用栈来解决,但归根结底还是分治。

用Python随意写了一个:

测试输出:

 

淘宝登陆中的token和st之类的东西

学习了一下 Python 淘宝系列(三): 模拟登陆成功后获取购物车信息

关于淘宝登陆验证的东西,里面牵扯到一个叫token,一个叫sp的两个东西~
自己用IE11试了一下,果然有那么些。
因为是网页登陆的,里面POST的参数跟教程中的有些许不用,特别是’TPL_password’字段,网页登陆时是空的。有可能是里面的参数的问题,估计是网页登陆还调用了其他处理密码的JS。
QQ截图20141205142830

QQ截图20141205143308

QQ截图20141205143556

[转载]Python中实现带Cookie的Http的Post请求

本文转载自http://www.crifan.com/python_http_post_request_with_cookie/


 

已经实现了如何获得对应的cookie,具体参考:
【已解决】Python中如何获得访问网页所返回的cookie
现在想要把已获得cookie,在http的提交post请求的时候,也同时发送过去。
即,实现带cookie的http的post。

【解决过程】
1.看了这里
http://www.ideawu.net/blog/archives/270.html
的介绍,好像是cookiejar,自动管理的,不需要手动指定之前已有的cookie了。
去写代码试试。

2.后来的结果证实了,接下来,直接调用urllib2.Request,其自动会把cookie送过去的,
因为之前已经是urllib2.build_opener,添加了对应cookiejar去自动管理cookie了。
对应的代码如下:


 

【总结】

Python中的cookiejar,自动帮我们管理好cookie,用起来,还是蛮方便的。

我们要做的只是,第一次build_opener的时候,把对应的cookiejar传进去,

以后每次的http的request,都会自动包含了cookie,而不需要我们操心了。

matplotlib 存储到内存文件 save to memory file(buffer) instead of disk file / PyQt4

References:

http://stackoverflow.com/questions/4330812/how-do-i-clear-a-stringio-object

http://stackoverflow.com/questions/8598673/how-to-save-a-pylab-figure-into-in-memory-file-which-can-be-read-into-pil-image

 

In fact Python have a StringIO module to deal with this problem, it works pretty fine with PyQt and matplotlib.

Procedures:

1. [SAVE] Create a StringIO object (or cStringIO which have faster speed)

2. [SAVE] Call savefig method of matplotlib and use the StringIO object instead as the input variable

3. [LOAD] Use QImage to read from StringIO object (via fromData method)

4. [LOAD] Use QPixmap and blabla to show the image….

 

Code:

 

 

 

PyQt使用线程更新GUI

给几个参考文章:

http://stackoverflow.com/questions/9957195/updating-gui-elements-in-multithreaded-pyqt

http://stackoverflow.com/questions/2585442/sending-custom-pyqt-signals

http://stackoverflow.com/questions/14090353/sending-messages-between-two-widgets-using-signals-and-slots

http://themkbytes.blogspot.com/2012/06/pyqt-qthread-signal-gui-examples.html

Threading with PyQt4

PyCharm 3.4.1 注册码及注册机

==警告==

注册机打开时360系列娱乐软件会报毒,各位自己看着办

=======

注册机下载链接:http://pan.baidu.com/s/1jGvDZ62 密码:hh3o

 

提供几个注册码,用户名是EMBRACE222

 

python format string (转)

来源不可考

在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为 


格式标记字符串 % 要输出的值组 
其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的’值组’如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为: 

%cdoe 
其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用’%s‘来标记。比如: 

‘%s %s %s’ % (1, 2.3, [‘one’, ‘two’, ‘three’]) 
它的输出为’1 2.3 [‘one’, ‘two’, ‘three’]’,就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s 时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个 函数,可以用%r来标记。除了%s外,还有很多类似的code: 

整型数:%d 
无符号整型数:%u 
八进制:%o 
十六进制:%x   %X 
浮点数:%f 
科学记数法: %e   %E 
根据数值的不同自动选择%e或%f: %g 
根据数值的不同自动选择%E或%f: %G 
就跟前面说用进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用%%来表示。 
上面说的只是格式标记的最简间的形式,来看复杂一点的: 

‘%6.2f’ % 1.235 
在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的: 

‘%06.2f’ % 1.235 
在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,可以看到小数也占用一位。类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式: 

‘%(name)s:%(score)06.1f’ %{‘score’:9.5, ‘name’:’newsim’} 
这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值 对中的键。前面的例子可以看到,”格式标记字符串“中标记的顺序和”要输出的值组”中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不 是,每个格式标记对应哪个值由小括号中的键来指定。这行代码的输出为:’newsim:0009.5’。 

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。可 以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:’%*.*f’ % (6, 2, 2.345)就相当于’%6.2f’ % 2.345。 

这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个”+”来构造类似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。 


象C 中的sprintf函数一样,可以用“%”来格式化字符串。 

Table 3.1. 字符串格式化代码 

格式 描述 
%% 百分号标记 
%c 字符及其ASCII码 
%s 字符串 
%d 有符号整数(十进制) 
%u 无符号整数(十进制) 
%o 无符号整数(八进制) 
%x 无符号整数(十六进制) 
%X 无符号整数(十六进制大写字符) 
%e 浮点数字(科学计数法) 
%E 浮点数字(科学计数法,用E代替e) 
%f 浮点数字(用小数点符号) 
%g 浮点数字(根据值的大小采用%e或%f) 
%G 浮点数字(类似于%g) 
%p 指针(用十六进制打印值的内存地址) 
%n 存储输出字符的数量放进参数列表的下一个变量中