Python版本升级从2.6到2.7

从python2.6.6升级到python2.7.12, 记得在升级前pip list记录下来已经安装的模块, 避免在升级后漏装.

接下来就可以通过pip install xxx的方式直接在线安装模块

 

参考:

http://blog.csdn.net/jcjc918/article/details/11022345

http://gavinshaw.blog.51cto.com/385947/610585/

 

Python中对dict排序方法

在Python中list的排序很简单, 可是无法对dict直接排序, 只能将dict转成list辅助排序

 

将键和值分别转成有序的list, 遍历键, 根据键的索引位置找到对应的值

CDH离线安装

集群服务器命名

    HOSTNAME=hdp-master

SSH 免密登录设置

    生成私钥/公钥, 执行后在~/.ssh 目录下会生成2个文件id_rsa(私钥)和id_rsa.pub(公钥),

    将公钥追加到认证文件中

    为了安全可以将authorized_keys文件的权限设置成600

    修改以下值

    RSAAuthentication yes

    PubkeyAuthentication yes

    AuthorizedKeysFile      .ssh/authorized_keys

    保存退出文件, 重启服务

    重启后可以’ssh {本机IP}’ 验证, 同样的道理, 只要将生成的公钥copy到远程服务器追加到 authorized_keys文件中,

    重复以上步骤即可

关闭集群机器防火墙

    将值设置为disabled

时间同步服务

    设置时间同步的目标机器, 可以将内部的一台机器(A)设置为ntp服务器, ntp.conf同步网络时间,

    其它内部机器同步A的时间, 下面的是同步网络时间的配置

    server 202.120.2.101 prefer(prefer优先服务器)

    server 202.102.29.82

JDK安装  

    jdk安装的目录一定要注意, 否则即使设置了linux的环境变量, cloudera也照样无法找到, 因为cloudera不认系统的JAVA_HOME, 而是遍历自己的一套目录, 这是个大坑

    上面部分代码, 是出自cm-5.3.3/share/cmf/bin/cmf-server, 在安装jdk时, 注意选择对应上面目录就好了!

 

以上的环境每个集群节点都需要做, ssh免密登录只需要clouder server能登录其它集群节点即可

—————

在server服务器上安装MySQL

    Hive, monitor等服务需要连接数据库

    登录mysql, 设置好root密码, 并授权节点服务器登录

安装cloudera manager

    为每个节点机器创建用户

    将cloudera-manager的安装包解压到指定目录/home/hadoop

    该步骤是初始化cm的数据库, 只需要在server节点初始化, 查看该文件可获得参数的含义

    将cm-5.3.3目录复制到集群的其它节点, 并修改agent配置文件

    注意修改下面的配置

    server_host=hdp-cms  # server就是集群主节点, 具体是你设置的机器的名字

    parcel_dir=/home/hadoop/cloudera/parcels

准备CDH离线安装包

    创建/opt/cloudera/parcel-repo/目录 , 当然这个目录是可以指定为其它目录的, CM配置时选择那个目录即可

    将CDH离线包加压到该目录下,

    CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel

    CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1  # 该文件的内容可以在manifest.json中找到, parcelName是上面那个文件名的对应的hash值

    manifest.json

启动安装server和agent

        在主节点启动以上服务, 要确认一下是否启动成功, 如果有问题在log中查看具体的报错原因

        该命令在其它节点上执行, 错误请查看log

CM安装步骤

    跟着提示一步步走吧

 

Python安装模块时关于gcc的错误

如果是gcc没有安装, 并不会报一堆的错误, 而是提示:

gcc xxxxxx …..

unable to execute gcc: No such file or directory                                                                           

error: command ‘gcc’ failed with exit status 1

如果gcc已经安装, 报一堆错误, 后面还是紧跟着:

…….

error: command ‘gcc’ failed with exit status 1

那么这个时候就需要安装一下python-devel:

问题解决。

 

Python中读取lib下模块失败的问题(No module named ssl_match_hostname)

之前的好好的程序,  最近一次停机, 重启python服务时, 报错了:

从错误日志中可以看出, 是backports.ssl_match_hostname这个模块没有安装, 真的很难过, 因为明明它就在那里,

执行命令 pip list 查看已经安装的python模块列表:

然后搜索了一大堆关于这个问题的资料, 说是这个模块是tornado的依赖模块, 重新pip安装一下就好了,

pip install xxx

pip uninstall xxx

我重试了N遍也没有好, 是的, 依然很难过 …

但是我没有放弃, 在我无数遍的install , uninstall过后, 突然发现了个问题, tornado安装的路径实在lib64下,

/usr/lib64/python2.6/site-packages

依赖模块backports*安装在了lib下,

/usr/lib/python2.6/site-packages

然后觉得这可能会导致tornado包含引入依赖包时, 在lib64下是找不到的, 然后报了上面的错,

基于这个想法, 把依赖包的文件copy了一份到lib64下,

cp -r /usr/lib/python2.6/site-packages/backports* /usr/lib64/python2.6/site-packages

程序终于可以正常执行了 …

好感动 …

 

Python为什么会这样呢?  还是说我之前配置过库的寻找路径? 不记得了, 后面找到原因再补充吧!

Mac下的开发软件汇总(持续更新…)

数据库

Sequel Pro

Sequel Pro is a fast, easy-to-use Mac database management application for working with MySQL databases.

快速, 易于使用, 关键是免费

SSH工具

SSH Shell

    如果你用习惯了xshell, 那么在Mac下这款软件,会是一个不错的替代工具

 

FTP

File Zilla

Hosts管理

iHosts

多分组编辑, 切换方便, 可多分组同时生效, 也可单独生效, 免费版本最多可添加4个节点, 应该够用了

VPN

Tunnelblick

和在win下面用的openvpn一样的配置方法

Restful API 测试

Postman

基于chrome浏览器的扩展,Mac和Win一模一样

编程

PHP

–PhpStorm

Python

–PyCharm

CotEditor

可支持多语言高亮, 用来代理win下的notepad++ 了

关于MySQL的一系列问题

开启日志

之前版本配置:

在5.6中如此配置会报错,启动错误提示:

Starting MySQL……. ERROR! The server quit without updating PID file (/var/run/mariadb/mariadb.pid)

错误日志中提示:

ambiguous option ‘–log=/var/log/mariadb/mysql.log’

如此配置是无法启动MySQL的, 正确配置如下:

开启慢查询日志

之前的版本:

5.6配置:

连接MySQL过慢的问题

这是因为正常情况下MySQL会对连接的客户端进行DNS反向解析,然而却查找不到对应记录, 解决办法:

方法1:

在Hosts或者DNS中加入对应的解析记录, 便于MySQL解析

方法2:

跳过反向解析, 在配置文件中加入

    skip-name-resolve

 

阿里妈妈自动登录

声明:

以下关于阿里登陆部分的描述,纯属个人娱乐。禁止转载。

第一部分:

因为自己是淘宝客,所以需要经常查看订单和高佣金以及隐藏计划,想着写个自动登陆的,能省点事,程序运行不到2小时,遇见了第一个门槛,滑动验证,就是下面这货↓↓↓

最开始看到他,想着 一定是有请求的,然后模拟发送请求就好了,当我打开源代码看着N多变量组成的加密码时

不行,一定是我打开方式不对,要冷静,对~!!要冷静,麻痹我非得一定要走这里?想着能不能C语言来写一个控制鼠标的简单小程序?

好的,说干就干,……

……

……

呵呵,我特么哪会C语言啊?然后找到了某款按键精灵,哈哈,我就是天才,我要准备写滑动小程序了。

 

什么?!Q语言?Q语言是他吗什么鬼?

好吧,看了一会后,写出了这个符合功能的程序,也就是下面的这个样子。
声明:程序写的时间大概在15年11月份左右,那时候的验证流程是 正常登陆==》滑动验证==》点击文字验证==》图形验证码。
录这个gif的时候发现已经改变规则了。。。,不过咱不在乎[淫荡脸.jpg]

 

 

上面的滑动是自己滑动的,不是我鼠标控制的;
很快我就发现了一些问题,出现图形验证码,虽然可以找打码平台但是没什么必要,还得花钱不是~
然后就诞生了下面的这种方法。。。

第二部分:

很快的,我就发现了上面那种登录方式的弊端和各种问题,然后就开发了下面这种一劳永逸的登录方式:

 

正文:

大概在4月末左右吧,具体时间我真忘了,不过我发现的时候是在5月份了,发现登陆窗口增加了二维码登陆。↓↓↓

其实大家不要认为我之前的那个滑动验证没有意义,在没改版之前我一直在使用第一种解决办法,不过那时候我用的是短信提醒,然后在联盟页面插入的代码,30秒向后台发送一次状态,如果3分钟没反应,会向我手机发送短信,然后我就要连上vpn登陆虚拟机手动的点击图形验证码,然后这样坚持了小半年。。。

然后在某一天的贤者时间里,我悟了,悟了。
那个二维码是不是可以用上。
说做就做。
删掉之前的所有代码,开始新的解决思路。
准备工作:
以为我有个电脑是闲着的,里面装了两个虚拟机,分别装着win7,里面都安装了火狐浏览器,然后下载火狐插件,
1、Greasemonkey
2、其他的 无关紧要了……
首先我写了如下的脚本,只有两个开启了,

然后把页面变成了如下的样子,是不是特别干净:

以上代码主要实现,定时发送二维码,当时我的做法是把二维码图片存到后台,然后短信提醒,然后有一个页面里面有这个二维码,我另存到系统相册,然后打开淘宝或者天猫,打开扫一扫,在打开图库找到刚才保存的照片进行识别,后来发现经常二维码过期(网速慢,手慢…),这个二维码有效期是180秒,然后不仅流程麻烦我手机还要保存N多照片,简直要命~!
实在没办法了,但是不甘心啊,
后来聪明的我想到可以看看这个二维码的内容啊,我识别了一下发现二维码是一个链接 ,而且还是 url scheme可以直接唤起到app的扫一扫的结果页,这就好办了,每次我不用传图片了,直接发送连接就好了啊……

不过这个扫一扫之后的账号有效期是约等于2个小时,每两小时给我发一次短信……
终于在两天后我发现短信成本太高,有没有那种push的软件,可以直接给我手机推送信息呢?
功夫不负有心人,经过半天的寻找和筛选找到了Qpush,但是她只有浏览器插件……我的希望是,有一个接口给我然后我可以通过我的程序调用给手机发Push,妈蛋完全不给我出路啊。

哈哈,没错聪明的我,想到浏览器插件一定也是发送请求的,找到源码就好了,我打开浏览器插件列表后没有发现以Qpush命名的文件夹,然后通过 about:support 进入配置 找到了Qpush的ID 通过全局搜索ID 终于找到了Qpush的 源码
然后经过一系列的寻找找到的它发送请求的位置,拿出代码融入后台……然后实现了最终版本的webapp:
实现功能:
1、两个虚拟机的账号可互不干扰的在一个界面内完成登录(优先登陆主虚拟机程序)
2、发送到手机的push可以自定义无线人和设备,可以随机分发(每次分发一个人,避免每天多次接收到push)
3、可在页面直接操作下载联盟后台的报表(默认区间范围是3个月)
4、如果登陆窗口出现问题或者二维码过期,在手机端可以强制刷新页面
5、可以在手机里看到两台虚拟机的运行状态。
因为时间匆忙,上面的代码和话术写的太乱……
现在我给大家演示一下:
算了不方便演示,截个图吧

扫码关注,查看更多文章。

Linux7使用中的问题汇总

systemctl

在Linux7中使用systemctl代替service,chkconfig来管理服务,以mysqld服务为例:

ifconfig

Linux7默认不会安装ifconfig, 可以用其它命令代替, 也可以yum安装

libiconv

在安装php时, 需要安装libiconv库为编码转换提供支持,但是在Linux7中安装时出现了如下的错误:

解决方案是需要修改当前编译目录下的文件 srclib/stdio.in.h