Euler’s formula

欧拉公式的相关公式总结:

参考:

https://en.wikipedia.org/wiki/Euler%27s_formula

http://muchong.com/html/201405/7356392.html

https://www.zhihu.com/question/23234701

http://www.guokr.com/post/66798/

http://cn.bing.com/search?q=%e6%ac%a7%e6%8b%89%e5%85%ac%e5%bc%8f%e7%89%a9%e7%90%86%e6%84%8f%e4%b9%89&qs=AS&pq=%e6%ac%a7%e6%8b%89%e5%85%ac%e5%bc%8f+%e7%89%a9%e7%90%86&sc=1-7&sp=1&cvid=843387E76F234E8D8AE733A0C34A75C7&FORM=QBRE

 

 

 

 

让wordpress支持svg格式图片

因为要记录一些公式,源图片格式为svg. 但发现上传到wordpress时不支持,查了一下解决方法,有2种:

  1. 更改wp_include/functions.php文件, 找到wp_get_mime_types()函数,在// Image formats.注析后面图像格式最后一行加入svg对应的格式: ‘svg’ => ‘image/svg+xml’, 最后看起来代码是这样的:

更改后再上传时发现已经支持svg格式了,如下图的公式:

    2. 还有一种方法是更改所使用主题文件夹下面的functions.php文件。把下面的代码加入其中:

这种方法没有尝试,因为觉得如果一开心更换一下主题玩玩,那又要改对应主题的文件了。

wordpress 用户头像图片失效的解决方法

发现wordpress 用户头像打了个问号,打不开了。

查看图片链接,是如:

http://1.gravatar.com/avatar/79355402bf1e5773c3624a1f2cbb7eb7?s=64&d=mm&f=y&r=g

这样的链接,就尝试把前面的1.去掉改为:

http://gravatar.com/avatar/79355402bf1e5773c3624a1f2cbb7eb7?s=64&d=mm&f=y&r=g

发现这个图片是打的开的。

于是查网络上的解决方法,很多是基于gravatar被墙,全都打不开的情况下改用别的服务器的做法,但明显现在gravatar是可以用的,只是链接有点不一样而已。

于是自己想了想,应该解决方法比较简单的。进入wordpress/wp-includes目录,查找一下包含“gravatar.com”字符串的文件在哪里:

 

打开link-template.php看了看,终于在文件的3998行左右找到以下内容:

于是果断把那个%d.和后面的$gravatar_server,去掉变为:

保存后,再刷新网页,哈哈,图片出来了:

screen-shot-2016-12-04-at-8-11-37-am

 

 

 

 

 

 

 

python binascii中uu, basse64, qp, hqx 编码与解码

python的binascii模块中包含了几种二进制与可打印字符串相互转换的几种常用编解码函数。dir查看一下:

主要包括:uu(Unix-to-Unit encoding),  base64, qp(Quoted-Printable), hqx(binhex) 四种编解码方式。它们都有共同的一个目标,就是把所有的二进制内容转成可打印的字符串,方便在程序间,网络, email上传输。下面是对这几种编解码理解的笔记:

UU:全称Unix-to-Unix encoding

编码过程是:每输入3个字节(3X8bit),平均分成4份(4x6bit),每份有6bit, 前面加2bit补全成为8bit, 然后每位加上0X20。 还有2个规定:

  1. 其中如果加0x20后是0x20(也就是说没加之前是0x00),那转成0x60(估计是为了避开空格0x20)。
  2. 如果输入不够3个字节,就用0(0x00)在后面补全成为3位。

所以uu编码后的所有字符都落在0X21-0X60之间, 如下图红线之间的字符, 因为3字节变4字节,所以长度变大了。

ascii-uu-encoding

http://blog.csdn.net/taozpwater/article/details/8074896抄来一段C实现的编解码代码:

uu编码:

uu解码:

主要参考:

http://web.chacuo.net/charsetuuencode

http://blog.csdn.net/jeketl/article/details/555553

http://blog.csdn.net/L_thread/article/details/5974749

 

base64:

base编码思想跟uu很像,也是3字节变4字节,分了之后的处理开始不一样了。不加0x20了,而是做一个查表操作,一一对应一个可打印字符,表格如下:

ascii_base64_encoding

同样如果输入不是3的整数倍,在后面补0(0x00),然后加上对应个数的=号,补一个=号表示补了一个0,补二个=号表示补了二个0。

发现没有,索引为62,63的+号和/号,在一些场合不能使用的,如URL中,这时会相应变成其它的符合如-和_。

主要参考:

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001399413803339f4bbda5c01fc479cbea98b1387390748000

http://baike.baidu.com/link?url=p9ZwPqUBPRJt4Qe7b4u88QILHohAPcP1kEiejOxIXfwuiCKXoDz89T1w3gGBmUVMihvhr7IlZ3xbwiP0VPT1Oq

http://base64.xpcha.com/

 

Quoted-printable:

编码的基本方法是:输入数据在33-60、62-126范围内的,直接输出;其它的需编码为”=”加两个字节的HEX码(大写)。为保证输出行不超过规定长度,可在行尾加“=\r\n”序列作为软回车。等号”=”(十进制值为61)必须表示为”=3D”。跟uu,和base64不一样的是这里不做3字节转4字节的操作了。直接判断一下范围就做转换了。

ascii_qp_encoding

主要参考:

http://biancheng.dnbcw.info/216/216040.html

http://web.chacuo.net/charsetquotedprintable

 

hqx(binhex):

这个编码方式查也很多资料都没有明确的定义,都是说跟苹果系统有关的文件会用到这种编码。终于有在github上找到一个不太官方的总结,凑合着看吧。也不知道正确性如何,后面再验证一下。

https://gist.github.com/i-e-b/fe0a0158ae61973802a9

大约的编码方式:也是3字节转4字节,然后查表, 有效的字符如下,也是64个。

!”#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr

hqxbinhex-codes

符上github上的原文,时间是2016-12-01复制过来的。

binascii官方DOC:

https://docs.python.org/2/library/binascii.html

其中有hexlify(),和unhexlify()应该比较常用的函数。

 

还有相关网页的一些用法:

http://blog.csdn.net/b_h_l/article/details/9357453

https://www.cnblogs.com/LarryGen/p/5088144.html

http://www.2cto.com/kf/201208/145066.html

Timelapse — Google Earth 32年的岁月

Google地图开放了一个”延迟摄影”,支持用户调用全球的卫星拍摄库存浏览从1984年到2016年的地球变迁,几乎支持所有的国家和城市,如时光机一样,32年,和我一样的成长,太有感触了!

https://earthengine.google.com/timelapse/

1984,那年我出生

1988,那年我上幼儿园

1990,那年我上小学

1997,那年我上初中

2000,那年我上高中

2003,那年我上大学

2007,那年我大学毕业

2016,在深圳看着这几秒中闪过的岁月,这里的亲人,朋友!

enping1984-2016

python struct 模块

在做树莓派摄像头把图片通过socket传送时,需要把图片变成二进制, 这时用到了struct, 以下是struct的几个小程序:

例子1,

运行结果:

 

例子2:

运行结果:

 

例子3,多个对象放到同一个buffer里:

运行结果:

 

例子4, 更直观的做法,直接调用struct.pack() 和struct.unpack()方法:

运行结果:

dir(struct):

用到的类型格式:

python-struct-type-map

还有一个大小端的格式符,可以写在上表的类型字符前面,如'<L’表示小端unsigned long

python-struct-pack-byte-order-size

 

主要参考了:

https://www.cnblogs.com/coser/archive/2011/12/17/2291160.html

官网DOC:

https://docs.python.org/2/library/struct.html

http://blog.sina.com.cn/s/blog_4b5039210100f1tu.html

Python模块学习:struct 数据格式转换

听说你会 Python ?

python ctypes 模块

ctype模块可以让python 调用c写的动态库。主要是对应两种语言的基本数据类型,指针,函数指针,结构体等类型的支持,从而可以让python可调用c库。

python-ctypes

例子1,用c自定义一个函数,编译后用python调用:

 

编译后生成动态库文件:

linux:

windows:

 

python 调用动态库:

运行结果:

 

例子2, 调用系统的printf函数, 跨平台支持mac, linux, windows:

运行结果:

 

例子3,关于类型自动转换:

可以自动转换:

运行结果:

 

结果:

 

例子4, 函数的参数可以是指针类型,然后可以通过参数返回值:

运行结果:

 

例子5, 指定返回值类型:

运行结果:

 

例子6, 关于多维数组,ctype 重载了 * 号

 

例子7, 指针, 用POINTER(),pointer()

运行结果:

 

例子8,关于函数指针,用CFUNCTYPE()

运行结果, linux和windows的结果有点不一样:

 

感谢知乎上的讲解:https://zhuanlan.zhihu.com/p/20152309?columnSlug=python-dev

还参考了:

http://blog.csdn.net/linda1000/article/details/12623527

http://blog.csdn.net/coroutines/article/details/41957527

官方DOC:

https://docs.python.org/2/library/ctypes.html

 

dir(ctypes), 手动分了行,好看些:

 

picamera dir(PiCamera)

 

camera.py sourcecode on Github:https://github.com/waveform80/picamera/blob/master/picamera/camera.py

再写个小程序看看这里面都有什么值:

输出: