Python mac运行 pygame 空白, 图片不显示内容 解决方案

 mac  Python mac运行 pygame 空白, 图片不显示内容 解决方案已关闭评论
10月 092019
 

问题描述: 运行pygame含图片相关的程序,图像不显示。

错误产生环境:macOS MOjave

问题原因:Pygame与MacOS Mojave 不兼容 #见 https://github.com/pygame/pygame/issues/555

可以使用下面一行语句测试是否是这个原因,运行系统示例代码,打开一个窗口,可以听到声音和音乐,但一直是黑色屏幕或白色屏幕表面
python -m pygame.examples.aliens

网上的解决方案:

  1. 将操作系统降级为macOS High Sierra
  2. 安装Miniconda虚拟环境运行pygame

以上方法都比较坑,其实如果为了现在可运行pygame程序,可以使用下面的方法:暂时先安装pygame 2.0的dev版本,等后续2.0正式版本出来后再更新。

以下命令安装pygame 2.0.0.dev4版本:

python3 -m pip install pygame==2.0.0.dev4 –pre –user

再运行原来的程序,done!!!

ssh如何通过跳板机直接访问到后端服务器(Mac&Linux&Windows解决方案)

 linux, ssh  ssh如何通过跳板机直接访问到后端服务器(Mac&Linux&Windows解决方案)已关闭评论
9月 212018
 

记录下,转自:https://my.oschina.net/foreverich/blog/657075

前言

如果公司的服务器在外网,一般会设置一个跳板机,访问公司其他服务器都需要从跳板机做一个ssh跳转,外网的服务器基本都要通过证书登录的。于是我们面临一个情况,本机ssh->跳板机->目标机器。如果直接在跳板机上放置公私钥对,并将跳板机上的公钥放到目标机器上,这样可以直接登录。但这样会有一个问题,跳板机上的root权限的用户可以获取普通用户的公私钥对,就算对私钥设置了密码,但是从安全角度来看,这样还是失去了保障,失去了服务器的一部分安全性。

如何来解决这个问题呢,其实ssh协议本身是支持秘钥转发的,不需要在跳板机上放置公私钥。

Linux(Mac)下有如下两种方式:

方式一:

从linux客户端的ssh跳转时,执行命令

ssh username@跳板机ip

然后在跳板机上跳转到目标机器

ssh username@目标机器ip

跳板机ip和目标机器ip,username账户下已经在相应的 .ssh/authorized_keys 加入了公钥,配置是没有问题了,但是我们会遇到一个Pubkey Unauthorization的错误,因跳板机没有username的私钥。问题总是会有,解决方法也总是有,ssh是有转发密钥的功能,从本机跳转到跳板机时可以把私钥转发过去。

正确做法是,在本机linux客户端执行命令 ssh -A username@跳板机ip

-A表示转发密钥,所以跳转到跳板机,密钥也转发了过来

接下来我们再在跳板机执行命令 ssh username@目标机器ip

另外可以配置本机客户端的默认配置文件,修改为默认转发密钥:

修改ssh_config(不是sshd_config,一般在/etc或者/etc/ssh下):

把 #ForwardAgent no 改为 ForwardAgent Yes

方式二:

ssh username@目标机器ip -p 22 -o ProxyCommand=’ssh -p 22 username@跳板机ip -W %h:%p’

也可以修改配置文件 ~/.ssh/config , 若没有则创建:

Host tiaoban #任意名字,随便使用 HostName 192.168.1.1 #这个是跳板机的IP,支持域名 Port 22 #跳板机端口 User username_tiaoban #跳板机用户 Host nginx #同样,任意名字,随便起 HostName 192.168.1.2 #真正登陆的服务器,不支持域名必须IP地址 Port 22 #服务器的端口 User username #服务器的用户 ProxyCommand ssh [email protected] -W %h:%p



Host 10.10.0.* #可以用*通配符 Port 22 #服务器的端口 User username #服务器的用户 ProxyCommand ssh [email protected] -W %h:%p

配置好后, 直接 ssh nginx 就可以登录 192.168.1.2 这台跳板机后面的服务器。 也可以用 ssh username@10.10.0.xx 来登录10.10.0.27, 10.10.10.33, …. 等机器。

windows SecureCRT密钥转发

windows下SecureCRT配置转发,需要做以下设置

输入图片说明

Ubuntu14.04下Python(cx Oracle)访问Oracle解决方案( PyCharm wrong notification: no module named cx_Oracle)

 python  Ubuntu14.04下Python(cx Oracle)访问Oracle解决方案( PyCharm wrong notification: no module named cx_Oracle)已关闭评论
2月 272017
 

转自:http://blog.itpub.net/26031462/viewspace-1117480/


第一步:下载安装cx_Oracle

下载地址:http://sourceforge.net/projects/cx-oracle/files/5.1.2/下载cx_Oracle的rmp安装文件,注意下载版本最好和Oracle、Python环境保持一致,我当前的环境是Oracle 11g和Python2.7,因此下载的是cx_Oracle-5.1.2-11g-py27-1.x86_64rpm。

不需按RPM方式去安装,直接解压从中取出cx_Oracle.so文件(只需要这个),复制到Python环境的dist-packages目录,我的机器是/usr/local/lib/python2.7/dist-packages/。

解压命令:

>>rpm2cpio file.rpm | cpio -div

第二步:下载安装Oracle instant client

下载地址:http://www.oracle.com/technetwork/indexes/downloads/index.html,从Database栏目的Instant Client链接进入,按当前系统选择对应的下载,我选择的是Instant Client for Linux x86-64

解压下载文件oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm ,路径很长实际上只需要其中的so共享库文件,将所有so文件复制到一个单独路径即可,我将他们复制到/opt/oracle-instantclient11.2/lib。

应该有5个文件:

>>pwd
    /opt/oracle-instantclient11.2/lib
>> ls
    libclntsh.so.11.1  libnnz11.so  libocci.so.11.1  libociei.so  libocijdbc11.so

 

第三步:检查并安装libaio1

sudo apt-get install libaio1

 

第四步:配置环境变量

>>cd ~
  >>sudo vim .bashrc

把 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle-instantclient11.2/lib 这行放在里面,保存退出。

最后:测试一下

$ python
>>>import cx_Oracle
>>>conn = cx_Oracle.connect(’username/[email protected]:port/servicename’)
>>>cursor = conn.cursor()
>>>...

一个简单应用:

#! /usr/bin/python
#coding=UTF-8

import cx_Oracle

def hello():
    '''Hello cx_Oracle示例:
    
    1)打印数据库版本信息.
    2)查询表数据.'''
    
    conn = cx_Oracle.connect("codomain/[email protected]:1521/oracle1")
    cur = conn.cursor()
    try:
        print "Oracle Version:%s" % conn.version
        print "Table test rows:"
        cur.execute('select * from test')
        for row in cur:
            print row
    finally:
        cur.close()
        conn.close()

hello() 


按上面步骤安装完成后

测试发现使用终端执行命令行时正常, 

但脚本在pycharm下使用
import cx_Oracle 

总是提示: 

 no module named cx_Oracle

最后发现需要在/etc/ld.so.conf.d目录下自己配置一个.conf 文件,指向上面文章中复制到的/opt/oraclexxx目录, 再执行下ldconfig即可

java.io.CharConversionException: Not an ISO 8859-1 character解决方案

 java, 编码  java.io.CharConversionException: Not an ISO 8859-1 character解决方案已关闭评论
12月 152014
 

java.io.CharConversionException: Not an ISO 8859-1 character解决方案

一般都是类似这样的代码出现的问题:

ServletOutputStream out = response.getOutputStream();

out.print(“中文“);

方案1:   使用response.getWriter()代替 response.getOutputStream()来write就好了。outputstream是以字节为单位输出字符串的,需要符合ISO 8859-1编码

方案2:   使用这样的方式输出:

ServletOutputStream out = response.getOutputStream();

out.write(“中文“.getBytes(“UTF-8”);

done!