Java执行Jar包签名错误
在启动Jar包时,报Exception in thread “main” java.lang.SecurityException: Invalid signature file digest for Manifest main attributes错误。
在stackoverflow上找到如下方法,解决问题。1
zip -d you.jar 'META-INF/*.SF' 'META-INF/*.DSA' 'META-INF/*.RSA'
在启动Jar包时,报Exception in thread “main” java.lang.SecurityException: Invalid signature file digest for Manifest main attributes错误。
在stackoverflow上找到如下方法,解决问题。1
zip -d you.jar 'META-INF/*.SF' 'META-INF/*.DSA' 'META-INF/*.RSA'
在使用Thrift时,遇到TypeError: string argument expected, got ‘bytes’错误。在stackoverflow上,找到使用饿了吗的thriftpy库解决问题。
之后遇到TSocket read 0 bytes错误,原因是传了null值给字符串类型,改成空字符串, 解决问题。
在Python多版本环境管理之pyenv中说到使用pyenv, 但没有写安装的过程。本以为按照官网安装即可,后来在给同事安装时,发现了问题。
官网上说,在使用Zsh,需要将环境变量加到~/.zshenv中,而不是~/.bash_profile,但其实这样还是会提示没有安装pyenv。正确的配置是将环境变量加到~/.zshrc中。
在编译Thrift时,遇到src/thrift/transport/TSSLSocket.cpp:33:10: fatal error: ‘openssl/err.h’ file not found问题,按照Mac安装Thrift的Openssl错误解决没有解决问题
最后按照stackoverflow上的解决办法,解决了问题。1
2brew install openssl
./configure LDFLAGS='-L/usr/local/opt/openssl/lib' CPPFLAGS='-I/usr/local/opt/openssl/include'
Fabric用于发布和执行一些系统管理任务,非常方便。
目前[学习笔记](用于发布的脚本如下,很方便。1
2
3
4
5
6
7
8
9
10
11
12
from fabric.api import *
env.hosts = ['43.242.128.158']
env.user = 'dengsl'
def deploy():
code_dir = '/home/dengsl/program/nodejs/blog'
with cd(code_dir):
run("git pull")
#deploy static site
run("hexo clean")
run("hexo g")
run("cp -r public/* /home/dengsl/program/html/blog/note")
之前使用virtualenvwrapper来管理Python虚拟环境,使用Python2.7, 没发现问题。后来公司的新项目都使用Python3.5,此时virtualenvwrapper就不能满足需求了,于是开始使用pyenv。
总的来说, pyenv是用于管理Python版本,而virtualenv用于管理Python虚拟环境,两者结合使用,基本上能满足需求。
Middleware相当于Django的底层插件,用于改变Django的输入和输出。最近遇到一个问题是有一些Android无法显示HTTPS页面中夹带的HTTP图片, 于是想到在返回结果中修改,于是想到Middleware.
编写一个Middleware也比较简单,根据需求定义响应的hook方法就好。这里定义如下1
2
3
4
5
6
7class StaticPathFilter(object):
def process_response(self, request, response):
if not response.streaming:
if request.scheme == 'https':
response.content = re.sub(r"http://static.eyaos.com", r"https://static.eyaos.com", response.content)
return response
我这里是StaticPathFilter放在apps.common.middleware模块里, 把’apps.common.middleware.StaticPathFilter’添加到MIDDLEWARE_CLASSES即可。
context_processors用于给Django模版添加context,例如django.template.context_processors.media用于添加MEDIA_URL,django.template.context_processors.static用于添加STATIC_URL。之所以使用context_processors, 是想全局添加某个变量,而不需要在每个View中添加。
查看django.template.context_processors.static的实现,就可以模仿着写自己的context_processors1
2
3
4
5
6def static(request):
"""
Adds static-related context variables to the context.
"""
return {'STATIC_URL': settings.STATIC_URL}
Docker-Compose是用来定义和管理多个Docker容器的工具,用Python编写,前身是Fig.
使用Compose一般分为三步
目前B7310实验室和爱与生的烦恼就是使用Compose管理的。
环境配置放在Github上。