跳到主要内容

博客

代码人生:编织技术与生活的博客之旅

sql 大概是这个样子

select booking_id from booking where concat(num, ',' , name) in ('1,name1', '2,name2', '3,name3')

用sqlalchemy 实现

_list_data = ['1,name1', '2,name2', '3,name3']    
session.query(Booking.booking_id).filter(Booking.num.concat(",").concat(Booking.name).notin_(_list_data))

Python阅读需 1 分钟

安装

pip install shadowsocks cd /etc/ vim /etc/shadowsocks.json

贴贴下面的配置:

    

{
"server":"0.0.0.0",
"server_port":8381,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"a123456",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": true,
"workers": 1
}

开启

sudo ssserver -c /etc/shadowsocks.json -d start

开机自启

考虑到如果VPS被重启(实际上只会你自己重启……),所以我们将shadowsocks加入开机启动项,配置如下:

vim /etc/rc.local

  • 然后在exit 0之前加入

sudo ssserver -c /etc/shadowsocks.json -d start

  • 然后重启VPS:

sudo reboot now

  • 重启后查看进程:

ps aux | grep shadowsocks

如果shadowsocks正常运行,表明设置成功。


  • 停止服务用

  • sudo ssserver -c /etc/shadowsocks.json -d stop

  • 日志 tailf /var/log/shadowsocks.log

https://www.cnblogs.com/Eason1024/p/8177665.html

编程阅读需 1 分钟

Ubuntu

安装

  • 打开开发者模式(可选) 设置菜单 - 更新和安全 - 开发者选项 - 选择开发者模式。 image.png

  • 打开适用于linux的windows子系统 设置菜单 - 应用和功能 - 程序和功能 - 启动或者关闭windows功能 - 适用于linux的windows子系统 - 打勾 - 重启电脑 image.png

  • 安装ubuntu 在Mirosoft store中搜索linux,然后点击获取这些应用,将会看到列举的各种linux系统,这里我选着了ubuntu,点击安装即可。 image.png

  • 使用 安装完后,cmd输入 ubuntu 进入ubuntu系统,主要会要求设置帐号密码 image.png

cmder

  • 好看
  • 右键贴贴
  • 大量的 linux 命令:grep, vim, grep, tar, unzip, ssh, ls, bash, perl, curl(没有 wget)

安装 Cmder官网下载,解压可用。

  • 把 cmder 加到环境变量

可以把Cmder.exe存放的目录添加到系统环境变量;加完之后,Win+r一下输入cmder,即可。

  • 添加 cmder 到右键菜单]

在某个文件夹中打开终端, 这个是一个(超级)痛点需求, 实际上上一步的把 cmder 加到环境变量就是为此服务的, 在管理员权限的终端输入以下语句即可:Cmder.exe /REGISTER ALL

* zsh 安装

docker(https://www.jianshu.com/p/d1b2b4240256)

windows包

用windows环境开发,需要一些环境去编译包,可以考虑直接现成已编译好的。

https://www.lfd.uci.edu/~gohlke/pythonlibs/

右键复制

shift + 鼠标右键 选择复制路径 image.png * 设置默认出现 复制路径选项

开发相关

windows 访问 ubuntu

\\wsl$\Ubuntu\home image.png

ubuntu 访问 windows

挂载在/mnt/image.png 推荐使用软连接 连接到Windows需要的组件

  • cmder在Ubuntu中右键贴贴时自动补齐 /mnt/c/...

pycharm中使用Ubuntu的python

  • pycharm 配置python环境

image.png

  • 可以看到ubuntu的实际目录如下 C:\Users\74071\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\usr\bin

  • 也可以连接服务器解释器 pycahrm会开启一个File Transfer的窗口(自动同步) image.png image.png

cmd中启动环境(比较麻烦 推荐cmder再开一个) image.png

pycharm 远程环境

  • 配置方式 image.png
  • 本质上是将文件传到服务器/tmp下进行工作 image.png
随笔阅读需 2 分钟

  • windows cmd 下 找到 python 与 pip 文件存放地址
λ  where.exe python    
D:\Python36\python.exe

λ where.exe pip
D:\Python36\Scripts\pip.exe
  • windows 自带 ubuntu 下 (Windows 系统盘符存在/mnt/中)
:~$ sudo ln -s /mnt/d/Python36/Scripts/pip.exe /usr/bin/wpip    
:~$ sudo ln -s /mnt/d/Python36/python.exe /usr/bin/wpython
Python阅读需 1 分钟

安装

下载地址

  • 我的 windows 上装了 wsl2
  • 默认点下一步就好了

image.png

安装完成后顺手设置 P...

image.png

ps. wsl telnet 127.0.0.1 9999 失败 我改成了本机 ip

非常的智能。


试玩

在 docker 网站上下个 python 镜像 玩玩

docker pull python:3.8

image.png

docker run --name docker-tutorial python:3.8 python -c "print('Hello, World!')"    
docker rm docker-tutorial
docker run --name docker-tutorial python:3.8 python -c "import os;print(os.listdir('.'))" -v $PWD:/usr/src/myapp -w /usr/src/myapp
docker rm docker-tutorial

-v $PWD/myapp:/usr/src/myapp: 将主机中当前目录下的 myapp 挂载到容器的 /usr/src/myapp。 -w /usr/src/myapp: 指定容器的 /usr/src/myapp 目录为工作目录。


安装 python 环境并保存

docker run --name  -it jupyter-dev python:3.8 bash     
pip config set global.index-url https://pypi.douban.com/simple
pip install jupyter
exit
docker ps -a
docker commit jupyter-dev jupyter-dev:version1
docker images
docker run -d -p 8888:8888 --restart=always --name jupyter jupyter-dev:version1 jupyter-notebook --ip='*' --port=8888 --allow-root --no-browser --NotebookApp.token=''

image.png

image.png

关闭

docker stop jupyter    
docker rm jupyter


pycharm

配置 python 解释器

image.png

不过已经可以愉快的 debug 了

image.png


kubectl

先装个命令补全

echo "source <(kubectl completion zsh)" >> ~/.zshrc    
source ~/.zshrc

找到你想连接的 kubectl 集群的配置文件 比如我的在服务器上

rsync -avz root@192.168.20.65:/root/.kube/config /root/.kube/config    
rsync -avz root@192.168.20.65:/root/.minikube/ca.crt /root/.minikube/ca.crt
rsync -avz root@192.168.20.65:/root/.minikube/profiles/minikube/client.crt /root/.minikube/profiles/minikube/client.crt
rsync -avz root@192.168.20.65:/root/.minikube/profiles/minikube/client.key /root/.minikube/profiles/minikube/client.key
  • 然后kubectl get pods 你就会发现都在你本机上看得到了

  • 然后就可以获取一个项目的配置文件,然后启动。

    • kubectl get pods contest-jiantou-64b9cd5597-kvbjp -o yaml

编程阅读需 2 分钟

  • 有多好用。.. 自行百度

image.png

SH 安装脚本

命令不是打错了 相同命令确实需要运行两遍

export http_proxy="http://192.168.100.228:9999"
export https_proxy="http://192.168.100.228:9999"

sudo sh -c "$(curl -fsSL https://github.com/AngusWG/river-zsh-config/raw/master/install.sh)"
sh -c "$(curl -fsSL https://github.com/AngusWG/river-zsh-config/raw/master/install.sh)"
source ~/.zshrc

自动安装

  • zsh
  • oh my zsh
  • 彩色命令
  • 历史提示

sh 脚本所属 github 项目

image.png


  • bug 修复
  • 执行第三步的时候会报错
  • 需要去修改下文件

image.png

image.png

  • 注释红色的这一行
编程阅读需 1 分钟

  • 项目用到了 socket io 通信 发送信息

  • client 和 server 直连无问题

  • 但是走 niginx 集群就直接报错了

  • 大神改了一个配置然后就通过了

  • 记录一下 Nginx 配置

        location /socket.io {    
proxy_pass http://pro_socketio;
proxy_http_version 1.1;
proxy_set_header upgrade $http_upgrade;
proxy_set_header connection $connection_upgrade;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header host $http_host;
proxy_set_header x-nginx-proxy true;
proxy_set_header Access-Control-Allow-Origin *; # 主要起作用
proxy_set_header Origin ""; # 主要起作用字段
proxy_read_timeout 86400;
}

随笔阅读需 1 分钟

音程

  • 不看黑键,只看白健,在此基础上在看所按的音与标准白健差几个半音
  • 减 差两个
  • 小 差一个
  • 大 不差
  • 增 多一个
  • 例如 1 3 白健之间数字关系为 1-3 为三度 音阶上差三个半音 1# 2 2# 所以为大三度
  • 例如 1 2# 白健之间数字关系为 1-2 为二度 音节上为一个两半音 1# 2 所以为曾二度
  • 例如 3 5# 白健之间数字关系为 3 5 = 1 3 为三度 音阶上为三个半音 所以为 大三度

三和弦

  • 三个音之间的关系为某两个音程的组合 称为一个和弦
  • 大三度 + 小三度 为大三和弦 3 2 (三个音之间差 三个半音 两个半音 例如 1 3 5 大C和弦)
  • 小三度 + 大三度 为小三和弦 2 3
  • 大三度 + 大三度 为增三和弦 3 3
  • 小三度 + 小三度 为减三和弦 2 2

七和弦

  • 大七 = 大大七 3 2 3 也可看作大三和弦加上一个标准七度
  • 属七 = 大小七 3 2 2 也可看作大三和弦加上一个小七度
  • 小七 = 小小七 2 3 2 也可看作小三和弦加上一个小七度
  • 半减七 = 减小七 2 2 3
  • 减七 = 减减七 2 2 2
  • 例如C大七 1 (3个半音) 3 (2个半音) 5 (3个半音) 7

大小调关系

  • 大调的第六个音为小调的第一个音
  • 如1234567 大调 67123456
随笔阅读需 2 分钟