在启动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'

Python多版本环境管理之pyenv中说到使用pyenv, 但没有写安装的过程。本以为按照官网安装即可,后来在给同事安装时,发现了问题。

官网上说,在使用Zsh,需要将环境变量加到~/.zshenv中,而不是~/.bash_profile,但其实这样还是会提示没有安装pyenv。正确的配置是将环境变量加到~/.zshrc中。

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")

Middleware相当于Django的底层插件,用于改变Django的输入和输出。最近遇到一个问题是有一些Android无法显示HTTPS页面中夹带的HTTP图片, 于是想到在返回结果中修改,于是想到Middleware.

编写一个Middleware也比较简单,根据需求定义响应的hook方法就好。这里定义如下

1
2
3
4
5
6
7
class 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_processors

1
2
3
4
5
6
def static(request):
"""
Adds static-related context variables to the context.

"""

return {'STATIC_URL': settings.STATIC_URL}

在git操作时,需要输入完整命令比较麻烦,此时可以配置别名。

配置status的别名

git config –global alias.st status

配置check的别名

git config –global alias.ch check