解决 Python 3 调用 Redis 字符串显示 b 前缀的问题

2018年2月2日 没有评论

昨天有按照网上的教程去使用 Python 调用Redis ,代码很简单,就像下面这样子:

但是,运行后的结果显示  b’python’ ,多了一个b,但是获取字符长度的确又是对的,觉得很是奇怪。

今天有向同事妹子请教,后来得出的结论是用回 python 2.7。和妹子继续搜索,发现了解决方法:sys.stdout.buffer.write(r.get(“name”)) ,这么一来需要再引入 sys 库,而且需要自己添加换行符了。

继续搜索,我们可以使用 print(r.get(‘name’).decode(‘utf-8’)),即解码一下然后再显示。稍微好了一点,但是每次要读取 Redis 数值的时候,都要这么来转换下确实显得有点猥琐。

我在想,一定还有更简单的方式。最后看到 stackoverflow 和简书上也讨论了这个事情,有一个剑走偏锋的设置,就是在数据库的连接字符串里多添加一个参数 decode_responses=True,这么一来就会自动将 response 解码。这么做大多数情况下是没有问题的,需要额外注意的是,如果保存在 Redis 数据库里的原始数据就是二进制的,那么通过这种方式,可能得不到自己想要的结果。

在实际运用的时候,就可以灵活考虑了,适当的时候综合使用这两种方式。

 

分类: Python 标签: ,

如何移除远程桌面的历史记录

2018年1月19日 没有评论

今天衣服自己洗突然想起来还有一个事情没有处理,就是清理电脑上远程桌面的历史记录。

这倒不是出于隐私考虑,而是里面的一些 IP 地址都是内网地址,服务器随着位置的迁移,会产生新的IP地址,以前旧的地址就无效了。以前也有考略过要不要去和 IT 申请一个固定 IP 会比较舒服点,看到复杂的审批流程,最后还是放弃了。

我用了大朋友的域名,添加了域名解析,在每次 IP 发生变化时,更新DNS解析就好了。除了生效慢一点,其它还好。就是其它的同学都被迫记录大朋友的域名,哈哈。扯远了。

其实也很简单,注册表打开 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default 路径,就会在右边发现一串列表,以MRU+数字索引的方式命名,可劲地删除它们就可以了。实际操作发现,删除后即使索引顺序不连续也没有关系。

连注销都不需要,直接生效。

分类: 一句话 标签:

pip 的安装

2018年1月10日 没有评论

在前面的《Ubuntu安装Shadowsocks》一文中,衣服自己洗简单地使用了apt-get来安装pip,但是这样会有一个问题,其依赖于本机安装的python版本,对于目前的ubuntu系统而言,都是默认安装的2.7的版本,对应的pip版本也是python 2.7的,我们需要主动使用python3。

首先安装python 3

sudo apt-get install python3,然后我们需要替换默认的python命令以指向新的3.5,删除/usr/bin/python 这个软链接,重新创建 sudo ln -s /usr/bin/python3.5 /usr/bin/python。

接下来就是正文了。

curl “https://bootstrap.pypa.io/get-pip.py” -o “get-pip.py”
python get-pip.py
pip install –upgrade pip
pip install shadowsocks

所以,让我们运行上面的命令,来安装pip和shadowsocks吧。

分类: Python, 一句话 标签:

压缩 Golang 编译的可执行文件体积

2018年1月1日 没有评论

自从接触 Golang 以来,一直对其编译出来的可执行文件有点看法,因为体积比较大。使用 go build av.go,编译简单的代码出来后就有近8M,当然,这是因为把 Go 的运行时环境也给打包进去了的原因,为了几k的源码实在是不划算,特别是在香蕉派/Firefly这些磁盘空间紧张的设备上面。

今天有搜索一下解决方法,Golang 的先行者给出的思路一共分为2步。

第一步,添加编译符号。

go build -ldflags “-s -w” av.go

-s 相当于strip掉符号表, 但是以后就没办法在gdb里查看行号和文件了。
-w 告知连接器放弃所有debug信息

衣服自己洗是使用 LiteIDE 来编写go代码的,按照下图添加即可,注意不要忘记添加引号,不然编译是无法通过的。

这样一来,编译后的文件就是5M多,看起来还是有点效果。

第二步,我们使用UPX来进一步压缩,其地址为 https://github.com/upx/upx,下载对应的版本即可。使用起来也很简单,默认即为压缩,输入upx av.exe 即可。

-d 解压缩
-l 查看压缩前后信息

现在再看,体积已经到1.7M左右了,效果很明显,就问你惊不惊喜,意不意外。

由于以前有木马病毒也使用UPX来加壳,导致现在杀毒软件对UPX不太友好。如果是部署在服务端或者Linux系统应该还好,特别是面向windows用户发布的,各位同学请慎重,可以考虑添加数字签名。至于如何使用数字签名,可以参考我的另外一个帖子。

对于产线的 Release 编译,使用自动化工具来做这个事情,应该都是小菜一碟了,就不提了。

分类: Golang, 日常 标签: , ,

W: mdadm: /etc/mdadm/mdadm.conf defines no arrays

2017年12月31日 没有评论

最近发现在执行Ubuntu的升级时,每次都可以看到W: mdadm: /etc/mdadm/mdadm.conf defines no arrays这样的错误提示。

网上查询了下,发现解决起来比较简单:

  1. sudo rm /etc/mdadm/mdadm.conf
  2. sudo update-initramfs -u
  3. sudo reboot
分类: 一句话 标签:

解决VMware Pro 14虚拟机黑屏

2017年11月11日 没有评论

最近有把VMware 12升级到14版本,升级后发现虚拟机显示黑屏了,根据现象似乎虚拟机是正常运行的,只是无法看到而已。

网上找了很久没有知道解决方法,在快要放弃的时候发现了解决方法。

那就是重置 LSP 网络,大家可以使用各种管家来重置,也可以在管理员权限下运行下面的命令:

netsh winsock reset

稍等后,重启系统即可。

分类: 一句话 标签: , ,

Ubuntu安装Shadowsocks

2017年10月5日 1 条评论

以前准备安装VPN的,后来发现怎么都连接不上去,遂放弃。现在有更好的解决方案了。首先在安装前先更新下系统,然后

1, sudo apt-get install python-pip

安装完成后,可以查看pip 的版本号:pip -V

2, sudo pip install shadowsocks

3, 编辑vi /etc/shadowsocks.json

{
“server”:”IP”,#你的服务器IP
“server_port”:8389, #你要开放的接口
“password”:”******”, #密码
“timeout”:300,
“method”:”aes-256-cfb”,
“fast_open”:true,
“workers”: 1
}

4, 启动服务 sudo ssserver -c /etc/shadowsocks.json -d start

5, 加入到开机启动,编辑/etc/rc.local,exit 0之前加入上面启动服务那句话。

6,配置客户端就可以上网啦。

分类: 一句话 标签:

身边多了个小朋友

2017年9月29日 没有评论

就让我沐浴在温和的春风里,宛如夏日午后泡开的凉茶,在醉人的秋天里带给你沉甸甸的不一样。

分类: 一句话 标签:

Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1

2017年9月22日 没有评论

最近在写一个数据清洗工具,以调整MongoDB的数据内容。工具使用了MongoDB官方提供的Nuget包,但是在连接的时候,一直无法成功,总是连接超时报Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1异常。

后来在Stackoverflow上找到解决方法,原来问题出在连接字符串上。

原来我的连接字符串是:mongodb://username:password@ip/mydb,就出现 Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1 异常。在官网的文档里有一句话 Above, the database by the name of “mydb” is where the credentials are stored for the application.

原来连接字符串里要写存储授权信息的数据库名称,默认是为admin。所以在连接字符串里不需要提供数据库名称了。在后面可以通过 var db = client.GetDatabase(“dbname”); 来定位到需要操作的数据库上。

 

分类: 一句话, 日常 标签:

mongodump 备份数据

2017年8月21日 没有评论

Mongodump 是MongoDB里的一个工具,可以用来备份数据。

我们在命令行里输入 mongodump –help 即可查看其用法,对于日常使用来说,主要会用到下面一些参数:

-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件

例如:mongodump -h 127.0.0.1 -d mm-o data.dmp

但是在MongoDB采用了version 3版本身份认证的服务器上,这个方式会失败。经过查询后发现,还需要添加–authenticationDatabase admin 参数。

分类: 一句话, 日常 标签: