黑客丛林之旅


无意间看到,试了一下,结果http://www.fj543.com/hack/

第一关

没什么好说的,查看源码

第二关

还是查看源码,结果发现

onSubmit="return chkPassword()"

Ok,f12进入 console,输入

function chkPassword(){
alert('adas');
}

覆盖原有js

第三关

这关我也没想到,后来百度之,原来是cookie的原因

还是进 console

document …

flask时间格式化


在前端显示为该问题 "几分钟前发表或几天前发表"

后端通过filter注册

参考资料

设计需求

  • 如果问题发表超过 10天 ,则显示为 /%Y-%m-%d %H:%M/
  • 如果小于 10天 ,但是大于 1天 ,则显示为 /n天前/ 发表
  • 如果小于 1天 ,但是大于 1小时 ,则显示为 /n小时前/ 发表
  • 如果小于 1小时 ,但是大于 90秒 ,则显示为 /n分钟前/ 发表
  • 如果小于 90秒 ,则显示为 /刚刚/ 发表

具体实现

通过 diff …

linux下串口读写权限问题


方法很简单,将用户加入串口所对应的group,需要 注意 的是不同的系统对应的group可能不同

按照网上说的加入 dialout,

└──╼ sudo usermod -a -G  dialout username

结果提示 /dialout”组不存在/

查看对应的组

└──╼ ls -al /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 0 6月  15 23:09 /dev/ttyUSB0
└──╼ sudo usermod -a -G  uucp username

ok,之后重启一下

archlinux更换默认内核为linux-lts


前几天更新内核到了 4.6.2 ,结果很不幸,电脑变得非常卡(貌似只有我遇到这个问题?), 实在是找不到解决办法了,于是将内核更改为 linux-lts

更改办法很简单,重装 linux-lts

$ sudo pacman -S linux-lts

重启之前,请确认安装了

img

(注:我的是双显卡,还需要安装 bbswitch-lts )

基于restful的flask权限管理


为什么需要restful形式的权限管理

最近在写flask应用时使用了 restful 形式的flask.views.MethodView,但是在对其进行权限管理时遇到了一些问题

flask文档上介绍说用

decorators = []

添加装饰器,但实际使用上,比如

  • getpost 采用不同的权限

get 不使用 login_required
post 需要 login_required

这样就不能使用 decorators 对视图进行装饰

  • post ,delete, put 都需要 login_required,但是get不需要 而 delete 又需要更高级别的权限,我们可以这样

    class AAA(MethodView):
    
        def get(self,uid):
            ...
    
        @login_required
        def post …

培根密码


第一种方式
A aaaaa B aaaab C aaaba
D aaabb E aabaa F aabab
G aabba H aabbb I abaaa
J abaab K ababa L ababb
M abbaa N abbab O abbba
P abbbb Q baaaa R baaab
S baaba T baabb U babaa
V babab W babba X …

wireshark解决权限问题


参考sudo 或者 root 打开 wireshark 是不安全的,毕竟我不是root敢死队

如何以普通用户运行 wireshark

  1. 添加wireshark用户组

    $ sudo groupadd wireshark
    
  2. 将dumpcap更改为wireshark用户组

    $ sudo chgrp wireshark /usr/bin/dumpcap
    
  3. 让wireshark用户组有root权限使用dumpcap

    $ sudo chmod 4755 /usr/bin/dumpcap
    

(注意:如果设为4754 Wireshark还是会提示没有权限 )

  1. 将用户加入wireshark组
    $ sudo gpasswd -a username wireshark
    或者
    $ sudo usermod -a -G wireshark username
    

flask日志处理


使用文档上的一句话:

Applications fail, servers fail. Sooner or later you will see an exception in production. Even if your code is 100% correct, you will still see exceptions from time to time. Why? Because everything else involved will fail.

应用发生错误时发送邮件

这里文档上个人认为说的不清不楚,毕竟想要使用还要看logging的文档

原文档

ADMINS = ['yourname@example.com']
if …

解决evil-escape下visual-state不能使用'jj'的问题


在一个多月前我给 evil-escape 开发者提了一个issue,但是不幸的是,没人理我,人理我,理我,我·····

于是这一个多月来我使用visual-state下选择段落的方式是: 跳到段落最后,按k从下往上选择, 现如今都快成为习惯了,今天终于有人解决了我的问题,非常感谢 ZzAntares

之前我用

(setq evil-escape-excluded-major-modes '(dired-mode neotree-mode evil-visual-state))

解决了'jj'在 dired-mode neotree-mode 下的问题,但是遗憾的是 visual-state 下的选择问题仍然没有解决

现在终于解决了, issue

(setq evil-escape-inhibit-functions '(evil-visual-state-p))

ok ,就这样

flask中生成atom


参考资料1 参考资料2

下面是具体代码
# from urlparse import urljoin #python2
from urllib.parse import urljoin
from flask import request
from werkzeug.contrib.atom import AtomFeed


def make_external(url):
    return urljoin(request.url_root, url)


@site.route('/atom.xml')
def feed():
    feed = AtomFeed('Recent Articles',
                    feed_url=request.url,
                    url=request.url_root,
                    subtitle …

ssh连接virtualbox中的虚拟机


参考文档

虚拟机设置

  1. 从机设置

    $ sudo pacman -S openssh $ sudo systemctl start sshd # 可能还需要一些其他的安全设置,这里不再多说

  2. 虚拟机设置

    设置里,选择网络,端口转发,主机端口9022,从机端口22

连接虚拟机

主机

$ ssh -p 9022 username@127.0.0.1

archlinux安装steam


最近想要玩会儿游戏,但是又不想切换到windows,所以准备安装steam,在linux下玩游戏, 参考文档Steam

准备工作

因为我的是64位操作系统,所以需要启用 multilib

$ sudo vim /etc/pacman.conf
# 取消下面注释
[multilib]
Include = /etc/pacman.d/mirrorlist

双显卡bumblebee

我的又是双显卡,需要安装32位驱动

lib32-nvidia-utils
lib32-mesa-libgl
lib32-mesa

注意 除此之外,参考 bumblebee报错信息 还需要安装 virtualgl-libs:i386 ( arch上是lib32-virtualgl ) 否则报错

ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded …

flask实现分页


数据库实现分页

offset

使用offset可以实现数据库分页功能

questions = Questions.query.offset(num) # 从num开始

limit

使用limit实现限制每页的文章数量

questions = Questions.query.offset(num).limit(6) #每页显示6篇文章

前端实现分页

需求设计

是使用上一页,下一页,用表单进行跳转,还是使用数字显示

获得文章数量 pages,和当前页码 number

简单的上一页,下一页

因为我的设计不是这个,所以简单说一下

下一页,上一页

jinja2 代码

<a href="{{ url_for('blog.index',number=number + 1)}}">下一页</a>
<a …

sqlalchemy学习(一)


sqlalchemy

系统的学一下sqlalchemyA,不过没有中文文档,只能用我的渣英文能力慢慢看原文档了

数据库连接

>>> from sqlalchemy import create_engine
>>> engine = create_engine('sqlite:///:memory:', echo=True)

echo为True输出日志

各种数据库连接方式

dialect+driver://username:password@host:port/database
  1. Postgresql

    # default
    engine = create_engine('postgresql://scott:tiger@localhost/mydatabase')
    # psycopg2
    engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')
    # pg8000
    engine = create_engine('postgresql+pg8000://scott …

archlinux的一些设置


最近在整理文件时发现了以前记下的一些设置,但是单独记在一个文件里不好找,也占用空间,现在记在博客里

vesa error

fcitx输入法

sudo pacman -S fcitx-im fcitx-configtool fcitx-sunpinyin

使用

增加内容到~/.xinitrc

export LANG=zh_CN.UTF-8
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
exec startxfce4

终端汉字显示

sudo pacman -S fbterm fcitx-fbterm
vim ~/fbtermrc

输入内容input-method=fcitx-fbterm

使用

终端输入fbterm

输入忽略大小写

vim ~/.inputrc

增加内容 …

python一些加密解密


import hashlib
import base64

data = '123456'
data = data.encode('utf-8')
md5 = hashlib.md5()
md5.update(data)
print ("md5加密 :%s"%md5.hexdigest())
sha1 = hashlib.sha1()
sha1.update(data)
print ("sha1加密: %s"%sha1.hexdigest())
sha224 = hashlib.sha224()
sha224.update(data)
print ("sha224加密: %s"%sha224.hexdigest())
sha256 = hashlib.sha256()
sha256.update …