python os模块

Doc: https://docs.python.org/2/library/os.html?highlight=os.listdir#

功能强大,内容丰富的模块。

os.listdir()

程序:

结果:

 

os.path.expanduser()

把〜字符转换为用户家目录,返回转换后的路径字符串。如果后面再附加文件夹, 连带附带的路径一起返回,而且也没有对这个路径做存在性检查,不存在的也没有问题的。其实这个函数最大的作用就是用来获取当前用户的家路径。

程序:

结果:

 

os.path.expandvars()

把环境变量的值返回。比如经常用到的$PATH的值是多少,可以用这个函数获取。

程序:

结果:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

python fnmatch模块

Doc: https://docs.python.org/2/library/fnmatch.html#module-fnmatch

fnmatch用来判断文件名模块是否匹配”Unix shell-style wildcards”, 可用通配符*?[seq][!seq]

实际所谓文件名,就是一个字符串, 这跟re模块的功能差不多,区别在于通配符表达式和正则表达式的不一样。

所以fnmatch模块有个translate()函数,就是把通配符表达式翻译成正则表大家式,比如*就变成.*

函数:

fnmatch.fnmatch(filename, pattern), 返回True/False

fnmatch.fnmatchcase(filename, pattern), 返回True/False, 针对windows这样的对文件名大小写不区分的系统,做强制大小写检查,比如fnmatch.fnmatchcase(‘abc.txt, ‘*.TXT’), 返回False。 在linux下与fnmatch.fnmatch()没有区别。

fnmatch.filter(filenames, pattern) , 返回一个list, 这个list是匹配pattern的filenames list 里的文件组成, 没有一个匹配就返回空list []

fnmatch.translate(pattern), 把Unix shell-style wildcards pattern 转成正则表达式

程序:

结果:

 

python glob模块

Doc: https://docs.python.org/2/library/glob.html

列出指定路径的pathfile, 可用通配符*?[][!]

*匹配0个或多个字符

?匹配1个字符

[1-9] 匹配字符1, 2, 3, 4, 5, 6, 7, 8,9中的一个

[a-z]匹配字符a到z所有字符中的一个

[!a-z]不匹配字符a到z所有字符中的一个

有2函数:

glob.glob() 返回一个pathfile的list

glob.iglob() 返回包含和glob.glob()同样给果的一个iterator,方便一个个的取值。

程序:

结果:

git: https://github.com/allenmo/python_study/blob/master/055_glob.py

wordpress WP_Image_Editor_Imagick 指令注入漏洞

wordpress WP_Image_Editor_Imagick 指令注入漏洞
7975680
/usr/share/wordpress/wp-includes/media.php
云盾自研
2016-09-16 08:12:54
该修复方案为临时修复方案,可能存在兼容风险,为了防止WP_Image_Editor_Imagick扩展的指令注入风险,将wordpress的默认图片处理库优先顺序改为GD优先,用户可在/wp-includes/media.php的_wp_image_editor_choose()函数中看到被修改的部分。【注意:该补丁为云盾自研代码修复方案,云盾会根据您当前代码是否符合云盾自研的修复模式进行检测,如果您自行采取了底层/框架统一修复、或者使用了其他的修复方案,可能会导致您虽然已经修复了改漏洞,云盾依然报告存在漏洞,遇到该情况可选择忽略该漏洞提示】
这是登录阿里云后提示的漏洞,网上查了一下,根据:http://www.skyfox.org/fix-wordpress-editor-choose-injection.html
在/wp-includes/media.php 下找到:_wp_image_editor_choose函数里以下语句:

改为

然后到控制台中点一下“验证一下”, 之后显示“文件已修改”

 

 

git 使用

使用git有一段时间了,基本上就是用来保存代码,方便在不同地方同步代码,从此U盘,移动硬盘等设备就退归二线了, 现在记录一下常用的命令:

  1. 开始得有github账号。这个只要登录https://github.com按提示做就好了。
  2. 新建一个仓库(repository), 在网页右上角找到“+”图标,点击,选择“New repository”。git-create-new-repository-1
    然后填入仓库名和描述信息,点击”Create repository”git-create-new-repository-2
    完成创建:完成创建后就很人性化地告诉我接着该怎么做了,可以看到:git-create-new-repository-3
  3. 然后我们就可以在自己的电脑上, 进入想要上传的文件夹,上传文件了。但在这之前,很多时候不想上传某个文件或某些文件,这时就要做一些工作:在想上传的文件夹下(与.git文件夹同级)创建一个.gitignore文件,写入不想上传的文件名, 如abc.txt,或用通配如*.bin, 把所有以.bin结尾的文件都不上传:

    输入:

    保存,退出
  4. 接着输入命令:

    输入账号,密码后就完成上传了。
  5. 有用的命令:

查看状态: git status

移除被git管理的文件:git rm -r –cached filename

 

 

 

J-Link on RaspberryPi

看到J-Link官网上有ARM linux 上的烧录软件, 于是想用树莓派做主机来给产品烧录固件,于是新买了一个J-Link V8,从https://www.segger.com/downloads/jlink下载了JLink_Linux_V600i_arm.tgz, 把它放到树莓派上解压,这里就放下~目录下,新建一个jlink一个文件夹,把下载下来的文件放到里面解压:

进入解压后的文件夹,看到有个README.txt, 先打看瞄瞄,原来为了让标准权根用户也可以用,要把一个文件放到指定文件夹,

于是照做,然后重启:

重启后, 第一次运行./JLinkExe, 发现固件会自动升级, 后面第二次运行就没有升级了:

S/N:一行做了处理,用xxxxxxxxx代替

看了2天的文档,终于知道如何只用一个命令完成烧录了。 新建一个文件1.sh, 写入以下内容,保存在跟JLinkExe同一个目录下,在调用JLinkExe时指定将烧录的芯片, 手头上刚好有上次做的小项目用到的STM32F103C8T6, 查了一下支持列表里只有STM32F103C8,就写成这个了。同时指定打开JLinkExe打开后要执行的命令脚本,随意写成了1.jlink.

1.sh文件:

1.jlink文件:

这些是在下载的压缩包,解压后的JLink_Linux_V600i_arm/Doc/UM08001_JLink.pdf文件里找到的说明,89页:

screen-shot-2016-09-09-at-8-11-32-pm

然后给1.sh添加可执行权限, 就可以执行了,执行完后程就可以运行来下载程序到芯片上了:

可以看到烧录过程只要几秒钟,看来树莓派做这事还是蛮快的哈!上个合照:

img_20160909_203800

再记录一下系统版本信息,感觉明年4代的树莓派,系统可能会上64位。

最后加几个链接:

J-Link官网:https://www.segger.com/downloads/jlink

有关于arm的不错链接:  http://www.21ic.com/jszt/arm.htm

gdb: https://sourceware.org/gdb/current/onlinedocs/gdb/

 

 

python 爬虫 百度贴吧

参考:http://cuiqingcai.com/993.html

显示出来:

github: https://github.com/allenmo/python_study/blob/master/spider/003_baidutieba.py

 

保存到txt文件:

github: https://github.com/allenmo/python_study/blob/master/spider/004_baidutieba_save_to_file.py

mac ssh to ubuntu, open file in vi, chinese garbled, 中文乱码

在Mac下,用终端ssh到ubuntu下,用vim打开含有中文的文件, 发现乱码。参考:http://www.vat58.com/mac下vim中文乱码及ssh远程中文乱码的解决方法/

原来在/etc/ssh/ssh_config文件下有一行:

表示ssh指令会发送本地语言环境到目标机器。

解决办法是:

然后加入:

然后重启mac终端,就可以了。

python 正则表达式 re

参考:静觅 » Python爬虫入门七之正则表达式

有个正则表达式的规则图:

python-re

例子1:

github地址:https://github.com/allenmo/python_study/blob/master/re/001_re_match.py

 

 

python 爬虫

参考: http://cuiqingcai.com/1052.html

爬糗事百科:

github: https://github.com/allenmo/python_study/blob/master/spider/002_qiushibaike_2.py

 

 

 

 

 

 

php7 phpmyadmin mysql nginx on raspberry pi

安装php7

目前为止,rasbian上的php还是5版本, 想用上性能X2的7版本,需要在/etc/apt/sources.list里增加stretch版本源。

参考:https://getgrav.org/blog/raspberrypi-nginx-php7-dev 和 http://steveorevo.com/raspberry-pi3-and-php-7/

都是在/etc/apt/sources.list文件里添加一行:

其实就是复制原来的那一行,再用stretch替代原来有的jessie。但是在国内, 当安装PHP7的时候, 获取的文件都是重定向到浙江大学的镜像服务器mirrors.zju.edu.cn,然而这个服务器我一直ping不上。于是找了一下其它的国内镜像,在http://www.raspbian.org/RaspbianMirrors里有大连东软的,浏览器点进去还很快。于是在/etc/apt/sources.list文件里变成添加这行:

然后在/var/apt/下面新建preferences文件,写入以下内容,让apt-get默认从jessie获取包,避免从stretch获取包:

然后运行以下命令更新源:

然后安装php7:

一切正常,安装成功。查看php7版本:

接着配置一下/etc/php/7.0/fpm/php.ini, 提高安全性。查找到

这行,去掉前面的;号, 把值改为0, 变成:

 

接下来安装nginx:

装完后,就可以访问了:

nginx-works

接着为了能让nginx运行php, 要做以下几步:

  1. 打开/etc/nginx/sites-available/default, 找到index那行,加入index.php为:
  2. 找到 “# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000”接下来的几行,去掉几行注释,改为:
  3. 找到“ # deny access to .htaccess files, if Apache’s document root”接下来的几行, 去掉注释,改为:

于是就可以运行php了。把以下内容写入/etc/www/html/phpinfo.php文件中:

在浏览器中输入192.168.1.88/phpinfo.php就找开相关的信息了:

nginx-php

 

安装mysql

完成后登录:

 

安装phpmyadmin

过程中安装了很多其它的包,而之前用jessie包时没有装这么多。

查看之前文章记录:http://allstack.net/wordpress/post-1216.html, 终于在小pi上跑起php7 和phpmyadmin

就是在/etc/nginx/sites-available/default 文件里其它locaiton行之前加入:


于是打开192.168.1.88/phpmyadmin, 就有:php-nginx-mysql-phpmyadmin-t-stretch