Shawn's Blog

一个伪程序员的伪技术博客

0X00 普通的查询

1
2
3
4
from django.db.models import Q

queryset.filter(Q(age=233)) # 找到233岁的人
queryset.filter(Q(name='shawn')) # 找到名为shawn的人

这种查询方式与普通的方式比起来没什么区别。

1
2
queryset.filter(age=233)
queryset.filter(name='shawn')
阅读全文 »

在Linux下安装软件通常会使用包管理工具自动处理依赖问题,在Fedora下一般使用dnf包管理工具。一般我们会给自己的源设置为国内的镜像源,比如

1
2
3
https://mirrors.tuna.tsinghua.edu.cn
https://mirrors.ustc.edu.cn
https://mirrors.163.com

但是有的时候还是避免不了从国外源下载数据,这种情况下经常出现速度巨慢无比甚至会断开的情况。这种时候我们可以给dnf设置通过代理连接网络,这样一来下载速度就会快得多了。

sudo vim /etc/dnf/dnf.conf编辑dnf的配置文件,添加如下配置,保存后再执行dnf命令就可以使用代理的方式连接了。

1
2
3
proxy=socks5://127.0.0.1:1080
proxy_username=shawn
proxy_password=shawn

需要注意的几点:

  1. 本示例只是针对我自己的电脑,如果你自己的Shadowsocks配置跟我的不同,请根据自己的配置自行修改(没有密码的可以不写后两项)
  2. 示例中使用了socks4://的协议,如果自己有其他方式的代理也可以使用,比如http://
  3. 当不再使用的时候记得将配置注释掉,以防连接国内源也使用代理
阅读全文 »

git stash save/apply/pop

在用git的时候经常会有需要临时切分支等操作,但是如果当前工作区进行了修改就不能直接切分支。这时候呢就得把当前的代码暂存起来,可以这么操作:

1
2
git add .
git stash

这样就吧上次commit到现在的修改都暂存起来了,可以使用git stash show来查看暂存区。我以前就是这样的,每次由两个或是两个以上的stash之后就蒙圈了,不知道那个stash做了哪些改变。虽然git stash show可以看到每个stash修改了哪些文件,但是还是不能准确的定位到自己需要的stash。

后来发现git stash后面还能继续接参数,这里得感谢git plugin for oh-my-zsh。当临时保存一些修改的时候可以这样:git stash save "fix:xxxxx",有多个stash的时候也可以用git stash show来看到每个stash的备注,就方便多了。

1
2
3
4
5
git on  new_branch [$?] via simple took 2s
➜ git stash show stash@\{0\}
stash@{0}: On new_branch: feature:xxxxx (38 seconds ago) stash@{3}: On new_branch: create new file named hello.py (4 days ago)
stash@{1}: On new_branch: fix:xxxxx (53 seconds ago) stash@{4}: WIP on master: 75e1918 add a (7 weeks ago)
stash@{2}: On new_branch: create file zzz (4 days ago)
阅读全文 »

0X00 遇到了一个问题

前段时间自己的电脑重装了系统,然后公司内网的Docker hub出了点问题,没办法继续开发。后来经过一波Google找到了一个可以备份与恢复Image的方法,使用docker save / docker load命令。

0X01 备份与导入镜像

首先查看自己的镜像,然后找一个准备备份的镜像,找到他的IMAGE ID,假设选中的是ubuntu的镜像,那就使用dokcer save 0458a4468cbc --output ubuntu.tar就可以把ubuntu.tar文件拷贝到其他电脑上。

1
2
3
4
5
6
7
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
nextcloud latest 9d7d01184cbf 9 days ago 593MB
rabbitmq latest 72cee1616e73 2 weeks ago 127MB
ubuntu latest 0458a4468cbc 2 weeks ago 112MB
redis latest 861cc310cd91 3 weeks ago 107MB
mysql 5.7.17 9546ca122d3a 10 months ago 407MB
mongo 3.4.2 5bc602c0b7fe 10 months ago 360MB

到另外一台电脑上执行docker load --input ubuntu.tar就可以把这个镜像导入进去。

0X00 enumerate是什么

enumerate()是一个Python自带的函数,用来同时遍历刻碟带对象和索引值.

0X01 enumerate怎么用

如果不在不使用enumerate()的情况下去除一个字符串列表中的字符串中的空格,那么通常会写出下面这种程序.

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
# -*- coding: utf-8 -*-

my_list = [" 搞个大 新闻", "我作 为一 个长者", "比 谁跑 的都快",
"哪 个国家 我没 去过", "比你们不 知道 高到 哪里去了",
"谈 笑风生 ", "当然 支持 啊", "遵循 基本法 的 "]
index = 0
for item in my_list:
my_list[index] = item.replace(' ', '')
index = index + 1

可以看到光是处理空格都用了四行,而且还并不怎么优雅.那么可以使用enumerate()来修改一下这个程序.

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# -*- coding: utf-8 -*-

my_list = [" 搞个大 新闻", "我作 为一 个长者", "比 谁跑 的都快",
"哪 个国家 我没 去过", "比你们不 知道 高到 哪里去了",
"谈 笑风生 ", "当然 支持 啊", "遵循 基本法 的 "]

for index, item in enumerate(my_list):
my_list[index] = item.replace(' ', '')

语法大概就是这for 索引, 对象 in enumerate(可迭代对象).用起来不仅干净优雅而且可读性也更强了.

0%