关于ModuleNotFoundError: No module named ‘gi’

Traceback (most recent call last):
File “/usr/bin/firewall-cmd”, line 24, in
from gi.repository import GObject
ModuleNotFoundError: No module named ‘gi’

系统环境:centos7.3

Python版本:python3、python2.7

原因:由于firewall使用的是python2,当前系统被修改默认环境为python3。

解决方案:

修改文件:

/usr/sbin/firewalld

/usr/bin/firewall-cmd

修改内容:

将#!/usr/bin/python变更为/usr/bin/python2.7

系统环境

Python + js 通过RSA算法对post表单数

HTTP采用明文传输,如果不对用户密码进行加密处理的话,会导致用户密码明文暴露在网络,通过监听抓包很容易获得。此问题处理方法一般有使用https代替http或对http 表单提交数据进行加解密处理。这里分享的是用RSA非对称加密算法对数据进行加解密,前端js使用公钥进行加密,后端python使用私钥进行解密。
HTTP采用明文传输,如果不对用户密码进行加密处理的话,会导致用户密码明文暴露在网络,通过监听抓包很容易获得,如下图:
22
此问题处理方法一般有使用https代替http或对http 表单提交数据进行加解密处理,这里分享的是用RSA非对称加密算法对数据进行加解密,前端js使用公钥进行加密,后端python使用私钥进行解密。

RSA加密算法简而言之就是服务端生成公钥私钥对,公钥给客户端,客户端拿着公钥去加密数据,然后服务端用私钥去解密数据。

RSA算法中,n、e两个参数决定公钥,n和d决定私钥。在本例的B/S应用中,来往数据如下图:
23
具体实现
生成公钥私钥对
为了避免加密后的密码重复使用,后端处理时每次请求都重新生成公钥私钥对。

当用户请求登录时,生成公钥私钥对,并将n和e写在http页面中返回给前端。需要注意的是生成e和n需要转成十六进制再传递给前端,代码如下:

import rsa
def login(request):
(pub_key, priv_key) = rsa.newkeys(256) ## 生成公钥私钥
pubkey_e = hex(pub_key.e)
pubkey_n = hex(pub_key.n)
request.session['privkey'] = priv_key
return render_to_response('login.html', {'pubkey_e': pubkey_e , 'pubkey_n': pubkey_n})

前端js获取公钥n和e,并使用公钥对用户输入的密码进行加密,然后将加密后的密码发送给服务器请求认证。需要注意的是前端需要将python传输过来的16进制数据进行处理,去掉前面的0x和后面的L。
24
后端使用私钥进行解密验证

def dologin(request):
username=request.POST.get('username','')
en_password=request.POST.get('password','')
priv_key = request.session.get('privkey')
request.session['privkey'] = None ##清除私钥
try:
##使用私钥解密得到明文密码
password = rsa.decrypt(en_password.decode('hex'),priv_key)
except Exception as error:
password = None
##这里省略密码验证500字

验证一下,通过firebug看到post数据中密码已经进行了加密,如下图:
25

Ubuntu 14.04 文件服务器–samba的安装和配置

  1.  这次操作是在Ubuntu 14.04上完成,其它版本应该类似,我没有去测试。
  2. Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
  3. 安装samba

    打开”终端窗口”,输入”sudo apt-get install samba samba-common”–>回车–>输入”y”–>回车–>安装完成。

    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
  4. 新建共享目录并设置权限

    1、打开”终端窗口”,输入”sudo mkdir /home/share”–>回车–>共享目录share新建成功。

    2、输入”sudo chmod 777 /home/share”–>回车,这样用户就对共享目录有了写权限。

    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
  5. 打开配置文件smb.conf

    打开”终端窗口”,输入”sudo gedit /etc/samba/smb.conf”–>回车–>打开了配置文件smb.conf。

    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
  6. 修改配置文件smb.conf

    1、输入”security = user”。

    2、输入”图B”中指定的语句–>保存。

    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
  7. 新建访问共享资源的用户和设置密码

    1、打开”终端窗口”,输入”sudo useradd smbuser”–>回车–>用户创建成功。

    2、输入”sudo smbpasswd -a smbuser”–>回车–>输入两次密码–>回车–>密码设置成功,这个用户属于smb组。

    3、输入”sudo service smbd restart”重启samba服务–>回车–>服务重启成功。

    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
  8. 访问共享名为myshare的共享目录

    1、在”运行”窗口中输入”\\192.168.1.4″–>回车–>双击打开myshare–>回车–>输入用户名和密码–>回车–>访问成功。

    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置
    Ubuntu 14.04 文件服务器--samba的安装和配置

 

Scratch3.0二次开发搭建环境

首先我们知道,Scratch3.0(以下简称sc3)是开源的项目,也就是说我们每人都可以二次开发。

它的源码由MIT和PullRequest维护,传送门:github.com/LLK/scratch-gui

我们做二次开发,肯定要拿下来源码啊,首先先装上git,然后clone活着download zip都可以,但是必须要装git,原因一会就知道了。

下载好源码,改配环境了,配什么环境呢?我们一看readme.md 哦?npm install? 那肯定要上npm和nodejs啊,度娘找nodejs,进入官网下载,安装好在cmd里面输入npm -v 和 node -v 没有报错就对了。

路人:那为什么不用再去下一个npm呢?

我:因为最新版nodejs自带了npm。

一切准备完成,打开sc3源码文件夹,按住shift按右键,选“在此处打开命令行窗口”,如果是win7以上的,可能是powershell,其实是一样的。输入 npm install 滚完进度条后输入npm start。然后去浏览器打开127.0.0.1:8601,等漫长的一段时间,你会发现运行成功了。

路人:为啥我install总是不能完成

我:一些支持库可能由于PRC的原因无法下载

解决方案:当然是**上网了

纯手机码字不容易,各位点个赞投个币再走呗。

另:由于作者也仅是略知一二,文章谬误之处在所难免,欢迎大家指出。

一天完成把PC网站改为自适应!原来这么简单!

网站自适应,很多人都认为是很高级需要很多时间去实现的东西,不愿意去把一个现成的网站改成自适应,宁愿单独另外做一个移动站。我之前觉得实现网站自适应,要设计很多套CSS,并且要结合jQuery,来实现自适应不同的设备。我还以为要重新设计文章的图片,或者要用到JavaScript来控制图片尺寸,因为图片过大就会超出手机屏幕,而这个工作量是非常可怕的。种种顾虑使我一直不敢着手开刀,造成至今网站还只是一个PC版,而也没有多做一个移动版。
经常在群里看到大家都说移动流量怎么多怎么多,有的还说移动流量大大超过了PC流量,说移动流量的广告点击率也比PC流量高,潜移默化的作用,我也慢慢受到了感染,于是决定把网站改成自适应!
我为什么是把网站改为自适应,而不是改为一个单独的移动站?因为我想一劳百逸,不想同时维护PC站和移动站,这将为日后更新文章节省大量的时间。
由于是第一次接触,没有实际经验,所以需要边找资料看案例边修改代码。
令我感到非常意外的是,我竟然仅需一天时间就完成了修改工作!
先看看我的修改成果吧
PC版网页
PC版网页
手机版网页
手机版网页
此手机版效果图显示的内容比较少,事实上,手机版网页中,在文章结尾也显示Google广告,文章结尾还有用户留言,用户照样可以在手机上评论,此外,“扩展阅读”后面还显示了PC版中的侧栏几个栏目的文章列表,最后,在页尾的搜索框着色层上方投放了百度移动的自适应广告。
网站改为自适应有多简单?
下面就说说如何把网页改为自适应吧,我为什么说很简单?因为你不需要任何高深的网页设计技术,你只需要懂一点html、一点css,而修改耗时对于一张普通网页来说,确实只需几个小时。
我把整个改动过程分为两个步骤。
第一步,非常简单,把如下代码直接复制到<head></head>里面。
<meta http-equiv=”Cache-Control” content=”no-transform” /> 
<meta http-equiv=”Cache-Control” content=”no-siteapp” />
<meta name=”viewport” content=”width=device-width,initial-scale=1.0,user-scalable=yes” />
前面两个meta,no-siteappno-transform,是告诉搜索引擎不要把网页转码。第三个meta,声明网页可以缩小放大。
第二步,在<head></head>里加上如下css代码。
<style type=”text/css”>
@media(max-width:960px)
{
}
</style>
这段css代码,意思是在屏幕宽度小于960px的时候执行的样式,当然你可以把960px改为其他更小的宽度,例如760px
接下来,我们要做的就是把那些不需要在手机网页上显示的内容隐藏掉。如何隐藏?这就需要看懂网页的html代码了,需要分析每一个模块使用的div,例如头部的div、导航栏的div、正文的div、侧栏的div、页脚的div,然后,我们就使用css隐藏不用显示的div,代码很简单,就是display:none
举例说明,比如网页结构如下图所示:
网页结构图
手机网页只需显示正文,我们把其他部分全部隐藏,代码如下:
<style type=”text/css”>
@media(max-width:960px)
{
     /* 网页全屏显示 */
    body {width:100%;}
    /* 正文全屏显示 */
    #divMain{width:100%}
    /* 为了避免正文图片超出屏幕宽度 */
    /* 正文图片宽度最多是屏幕宽度的90% */
    #divMain img{max-width:90%}
    /* 隐藏头部、导航、侧栏、页脚 */
    #divHead{display:none}
    #divNav{display:none}
    #divSide{display:none}
    #divBottom{display:none}
}
</style>
这样,当在手机浏览网页时,就只显示正文了。
网页自适应就是这样做的!
看了这个实例,是不是很简单?网页自适应就是这样做的!
不过要把手机网页自适应得有头有尾,你还需要补充编写一些代码,例如编写针对手机网页的头部、导航和页脚的div,编写后默认为隐藏,在手机里再显示。
如下图所示网页结构:
包含手机模块的网页结构
css就可以这样写
<style type=”text/css”>
/* 默认隐藏手机版头部、导航和页脚 */
#divHead_mobile{display:none}
#divNav_mobile{display:none}
#divBottom_mobile{display:none}
@media(max-width:960px)
{
     /* 网页全屏显示 */
    body {width:100%;}
    /* 正文全屏显示 */
    #divMain{width:100%}
    /* 为了避免正文图片超出屏幕宽度 */
    /* 正文图片宽度最多是屏幕宽度的90% */
    #divMain img{max-width:90%}
    /* 隐藏头部、导航、侧栏、页脚 */
    #divHead{display:none}
    #divNav{display:none}
    #divSide{display:none}
    #divBottom{display:none}
    /* 显示手机版头部、导航和页脚 */
    #divHead_mobile{display:block}
    #divNav_mobile{display:block}
    #divBottom_mobile{display:block}
}
</style>
至此,你就可以自适应设计出一个漂亮的手机版页面了。
看完这个实例,是不是觉得自适应设计其实是非常容易的呢?当然了,这只是一个最基本的自适应设计,着重是介绍思路,你可以在此思路的指引下,完成更加复杂的设计。你用电脑和手机浏览我的博客(http://www.webkaka.com/blog)看看,我的博客就是这样自适应的!

centos7下使用yum安装pip

首先安装epel扩展源:

yum -y install epel-release

更新完成之后,就可安装pip:

yum -y install python-pip

安装完成之后清除cache:

yum clean all

这是在root用户时使用的命令,当前用户如果不具有root权限,加上sudo。

 

如果pip install 出现问题可以试试命令

pip install setuptools==33.1.1

centos tar压缩与解压缩命令大全

tar命令详解

-c: 建立压缩档案

-x:解压

-t:查看内容

-r:向压缩归档文件末尾追加文件

-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。

下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的

-j:有bz2属性的

-Z:有compress属性的

-v:显示所有过程

-O:将文件解开到标准输出

参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思

查看
tar -tf aaa.tar.gz   在不解压的情况下查看压缩包的内容

压缩

tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg

tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar –cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

解压

tar –xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2tar –xZvf file.tar.Z //解压tar.Z

总结

1、*.tar 用 tar –xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar –xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar –xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar –xZf 解压

玩转ubuntu18.04之安装VMware Tools

1.打开虚拟机VMware Workstation,启动Ubuntu系统,菜单栏 – 虚拟机 – 安装VMware Tools,不启动Ubuntu系统是无法点击“安装VMware Tools”选项的,如下图:

2.等待几分钟会发现ubuntu桌面多了VMware Tools镜像,点击它,其里面有一个VMwareTools…tar.gz文件

3.接下来我们把VMwareTools…tar.gz文件提取到某个目录下,如下图,我提取到桌面刚刚新建的一个目录下:

4.安装tools,根据其提示输入yes/no,直到出现Enjoy, –the VMware team如下图,就表示安装成功了,然后手动重启虚拟机

cd VMwareTools-10.2.5-8068393/

cd vmware-tools-distrib/

ls

切换为sudo用户

sudo su

4

5 66

 

安装了VMware Tools后,虚拟机与主机可以通过“拖拽”来对传文件。
———————
作者:kan2016
来源:CSDN
原文:https://blog.csdn.net/kan2016/article/details/81676044
版权声明:本文为博主原创文章,转载请附上博文链接!

centos下使用mwget加速wget

使用wget下载文件时十分缓慢 可使用mwget进行加速 其中m代表多线程的意思

1.安装mwget

wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2
tar -xjvf mwget_0.1.0.orig.tar.bz2
cd mwget_0.1.0.orig
执行./configure

./configure
如果出现 error: C++ compiler cannot create executables 说明没有安装c++编译器 安装一个c++编译器就可以了

yum install gcc-c++
如果执行./configure 出现 configure: error: Your intltool is too old.  You need intltool 0.35.0 or later.

需要安装0.35.0以上的版本

yum install intltool
然后做最后的安装

make
make install
安装完毕后 可以使用mwget下载

mwget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
———————
作者:lu2322
来源:CSDN
原文:https://blog.csdn.net/luhengchang/article/details/81365484
版权声明:本文为博主原创文章,转载请附上博文链接!