chrome/新edge 强制暗黑模式

1
2
Chrome:chrome://flags/#enable-force-dark
Edge:edge://flags/#enable-force-dark

参考:https://www.appinn.com/enable-force-dark-for-chrome-and-edge/

Zerotier 连接超时问题

由于Mac我经常不关机,带着到处跑,这就让 zerotier 之前打通的路失效,但是他又不知道自己失效了,所以这时候我的 Mac 就无法连接到别的机器了,于是这时候重启一下Mac上的 zerotier 服务即可。

菜单栏有时候会无法显示那个小图标,所以 GUI 的方法不可靠。下面的命令亲测有效。

1
2
sudo launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist
sudo launchctl load /Library/LaunchDaemons/com.zerotier.one.plist

screen+crontab 定时离线执行

基本思想是先创建一个 screen ,然后 detached 之后,可以通过会话的名字给其指定要执行的指令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 先创建一个名字为 test 的会话
screen -S test
# 然后从会话 test 中 detach
screen -d test
# 然后在会话 test 之外给其传入一个命令
screen -S test -X stuff 'echo "test screen+contab"'`echo -ne '\015'`
# 此时再进入 test 会话看 就会看到执行了命令 输出了 "test screen+contab"

# 先将目标程序后台执行 并记录去 pid
screen -S test -X stuff 'cmd& pid=$!'`echo -ne '\015'`

# 当我们想停止它时 使用 kill
screen -S test -X stuff 'kill \${pid}'`echo -ne '\015'`

# 如果你要用 sudo 并且你保证确实会需要密码的话 可以在后面拼接一个密码输进去就可以了
screen -S test -X stuff 'sudo cmd'`echo -ne '\015'`
screen -S test -X stuff 'password'`echo -ne '\015'`

# 如果不幸 你要执行的命令含有 “&” ,即会挂起的状态
# 则上述的方法便无法输入密码了
# 但 由于输入密码之后 一小段时间内不用输入密码
# 所以可以先随便执行一个无关的 echo 命令 这个不会挂起
# 然后输入密码
# 然后再执行会挂起的 不就可以了吗!
screen -S test -X stuff 'sudo echo "aaa"'`echo -ne '\015'`
screen -S test -X stuff 'password'`echo -ne '\015'`
screen -S test -X stuff 'sudo cmd& pid=$!'`echo -ne '\015'`

# 如果 kill 时 时间太长了 那就再执行一次无用 echo
# 而且不用怕 就算执行的时候 sudo 不用密码
# 最多就是把输入的密码当作了命令无法执行而已 就没啥影响
screen -S test -X stuff 'sudo echo "aaa"'`echo -ne '\015'`
screen -S test -X stuff 'password'`echo -ne '\015'`
screen -S test -X stuff 'sudo kill \${pid}'`echo -ne '\015'`

excel 上下左右框不动而是页面在动

有时候在 excel 中想通过上下左右移动到旁边的单元格但是却是整个窗口都在移动,而没有移动到单元格上。

此时可以通过虚拟键盘(或者物理键盘)上面的 scroll lock 解除。

  1. win + R 唤出命令,输入命令 osk
  2. 然后关闭 ScrLk 就可以了。

image-20210121011655682

参考链接:https://blog.csdn.net/qcyfred/article/details/71107023

油猴在页面加载完毕/之前执行

查阅了很多资料 各种 Windows.onload 啥的 都是放屁,原来就是开头就是。

1
2
3
4
5
6
7
8
9
10
11
12
13
/*! // ==UserScript==
// @name 重放 pass
// @namespace https://lucxer.tk
// @version 0.0.1
// @description 教务处更新后,为了增强安全性,降低中途http明文传输的学生觅马泄露的风险,便将用户的觅马在前端进行md5之后,再发送到后端进行校验,极大地降低了学生觅马泄露的风险!
// @author Ron Liao
// @license Apache-2.0
// @include http://202.115.47.141/*
// @include http://zhjw.scu.edu.cn/*
// @grant none
// @run-at document-end
// ==/UserScript== */

注意看,@run-at 这个就是起作用的。

Ubuntu 升级 node&npm

Ubuntu18.04 默认安装了 Nodejs v8.x 版本

升级

1
2
3
4
5
6
$ curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh
$ sudo bash nodesource_setup.sh
$ sudo apt install nodejs

# 需要从源代码编译代码的 NPM 包
$ sudo apt install build-essential

检查

1
2
$ node -v
$ npm -v

参考:https://learnku.com/articles/29950

Windows Terminal 修改配色

https://zhuanlan.zhihu.com/p/163765431

python print different

有时候需要将python的输出换成不同的颜色,以突出显示想要表示的重点,于是可以用这个方法。

显示颜色的格式:

\ 033 [显示方式;字体色;背景色m something [\ 033 [0m]

具体各个参数如下表:

显示方式 效果 字体色 背景色 颜色描述
0 终端默认设置 30 40 黑色
1 高亮显示 31 41 红色
4 使用下划线 32 42 绿色
5 闪烁 33 43 黄色
7 反白显示 34 44 蓝色
8 不可见 35 45 紫红色
36 46 青蓝色
37 47 白色

例子

1
2
3
print('This is a \033[1;35m test \033[0m!')
print('This is a \033[1;32;43m test \033[0m!')
print('\033[1;33;44mThis is a test !\033[0m')

效果

python-print

参考:https://blog.csdn.net/qq_34857250/article/details/79673698

利用win10画图实现图片反色

将想要反色的图片使用win10自带的画图打开,然后用下面的快捷键 ctrl+shift+i 可以实现反色。

1
ctrl+shift+i

虚拟机网络故障的修复

描述:物理机网络正常,也是管理员模式运行的,VM显示网卡连接正常,但是没有网。并且体现在,ping 任何东西都找不到域名,右上角也没有了之前那个网络连接的图标了。

输入ip a ,显示为:

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:d5 brd ff:ff:ff:ff:ff:ff
3: docker0: mtu 1500 qdisc noqueue state DOWN group default
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 192.97.0.1/16 brd 192.97.255.255 scope global docker0
valid_lft forever preferred_lft forever

正常情况下,ens33 后面应该还有些内容的。

网上找到一个方法,亲测有用,并且之后再出现没网的时候,也屡试不爽。

1
2
3
sudo service NetworkManager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service NetworkManager start

建议写成一个可执行脚本,下次直接运行即可。

然后再 ip a 的结果如下,

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.247.133/24 brd 192.168.247.255 scope global dynamic noprefixroute ens33
valid_lft 1530sec preferred_lft 1530sec
inet6 00:00:0000:0000:0000:0074/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: mtu 1500 qdisc noqueue state DOWN group default
link/ether 00:40:00:00:00:d8 brd ff:ff:ff:ff:ff:ff
inet 170.17.0.1/16 brd 170.17.255.255 scope global docker0
valid_lft forever preferred_lft forever

然后就修复了,右上角也有了有网络的图标了。

ubuntu添加定时任务

有时候需要服务器定时执行一个脚本。如一个自动的健康打卡,就需要每天早上自动打卡帮助。

首先,打开终端输入下面命令:

1
crontab -e

然后按照里面的注释提示,前面是时间,中间是用户,后面的命令添加好。

然后重启服务即可。

1
service cron restart

screen 的使用

由于某系必要的原因,在断开 ssh 连接后,通过此 ssh 运行的所有进程和程序都会被强制干掉。(没有官方证据或者可能我的说法有问题)。但有时候需要在断开 ssh 后服务器继续执行之前的命令。

比如你自动的健康打卡是使用 python 加一个 while 死循环,用 python 来监控时间,每天定时打卡。但是你用 ssh 挂载到了服务器之后,一断开这个 python 的脚本就会被干掉。这是就需要这个功能了。而 screen 刚好可以做到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建一个名字为 name 的screen
screen -S name

# 列举出所有的screen
screen -ls

# 退出当前会话(但是不停止执行)
Ctrl + a + d

# 退出关闭screen会话
exit

# 杀死某个进程的会话
screen -X -S PID quit

# 重新进入会话
screen -r name/PID

参考: https://www.138vps.com/vpsjc/933.html

kali换源

启动终端输入下面命令

1
vim /etc/apt/sources.list

将下面的地址填进去

1
2
3
4
5
6
7
8
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

deb http://mirrors.163.com/debian wheezy main non-free contrib
deb-src http://mirrors.163.com/debian wheezy main non-free contrib

cmd 挂代理

只代理了 HTTP socks5 同理。

有些时候代理工具的全局模式也无法让CMD的走上代理。

打开一个需要设置代理的CMD,输入下面的命令:

1
2
3
4
5
6
7
# windows
set HTTP_PROXY=http://127.0.0.1:10809
set HTTPs_PROXY=http://127.0.0.1:10809

# ubuntu
export http_proxy=http://192.168.0.102:10809/
export https_proxy=http://192.168.0.102:10809/

同时,直接在git bash中设置是不行的,在CMD中设置了用git命令就会方便(快)很多。

检测自己设置成功与否,可以在当前CMD中输入下面的命令。利用 curl 来检测。

ping 来检测是不行的,这个只代理了 httpping 使用的是 ICMP 的协议,因此不成。

1
curl -vv https://google.com

Ubuntu 18.04 apt install error

运行 sudo apt install *** 报错,无法按照软件。报错信息如下:

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

执行下面的命令,进行强制解锁,即可。(我也不知道哪条是真正起作用的,反正又不是不能用

1
2
3
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock

python 的全局解释锁 GIL

尽管Python完全支持多线程编程, 但是解释器的C语言实现部分在完全并行执行时并不是线程安全的。 实际上,解释器被一个全局解释器锁保护着,它确保任何时候都只有一个Python线程执行。 GIL最大的问题就是Python的多线程程序并不能利用多核CPU的优势 (比如一个使用了多个线程的计算密集型程序只会在一个单CPU上面运行)。

也就是 python 的多线程,底层还是单线程在跑。效率上不会有真正并行那么高,但是还是有很大用的。另外,需要性能提升的可以试着使用多进程来实现。

参考: https://python3-cookbook.readthedocs.io/zh_CN/latest/c12/p09_dealing_with_gil_stop_worring_about_it.html#python

linux 统计文件夹下面文件数目

Linux下有三个命令:lsgrepwc。通过这三个命令的组合可以统计目录下文件及文件夹的个数。

  • 统计当前目录下文件的个数(不包括目录)

    1
    ls -l | grep "^-" | wc -l
  • 统计当前目录下文件的个数(包括子目录)

    1
    ls -lR| grep "^-" | wc -l
  • 查看某目录下文件夹(目录)的个数(包括子目录)

    1
    ls -lR | grep "^d" | wc -l

命令解析

  • ls -l

    长列表输出该目录下文件信息(注意这里的文件是指目录、链接、设备文件等),每一行对应一个文件或目录,ls -lR是列出所有文件,包括子目录。

  • grep "^-"
    过滤ls的输出信息,只保留一般文件,只保留目录是grep "^d"

  • wc -l
    统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。

参考:http://noahsnail.com/2017/02/07/2017-02-07-Linux%E7%BB%9F%E8%AE%A1%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8B%E7%9A%84%E6%96%87%E4%BB%B6%E6%95%B0%E7%9B%AE/

python 从 setup.py 安装包

1
2
python setup.py build
python setup.py install

参考: https://blog.csdn.net/xxzhangx/article/details/53558654

windows预览体验计划打开空白

诊断数据 改成 可选诊断数据 就打开了

诊断数据

参考:https://answers.microsoft.com/zh-hans/insider/forum/insider_wintp-insider_install/windows%E9%A2%84%E8%A7%88%E4%BD%93%E9%AA%8C/14d3002b-03ac-459e-b518-34231b1727e0?auth=1

anaconda 创建虚拟环境

1
2
3
4
5
6
7
8
# 创建环境 创建一个名字为 pytorch_gpu 的环境,python的版本为3.7
conda create -n pytorch_gpu pip python=3.7

# 初始化环境
conda init pytorch_gpu

# 进入该环境
conda activate pytorch_gpu

自动生成 python 项目的依赖包

1
2
3
4
5
# 首先安装依赖
pip install pipreqs

# 然后 到项目根目录打开终端
pipreqs ./ --encoding=utf-8

修改cmd的默认编码

1
2
3
4
5
6
7
8
9
10
# 查看当前活动的编码编号为多少
CHCP

# 切换为utf-8
chcp 65001

#以下是几种常用的编码:
#936 GBK(一般情况下为默认编码)
#437 美国英语
#65001 utf-8

参考:https://blog.csdn.net/iway_lch/article/details/50408796

ubuntu 安装 dlib

参考: https://www.jianshu.com/p/44469d7d86b3

GraphicsMagick-1.3.35

https://blog.csdn.net/ycpanda/article/details/12199895

flask 的文件类

https://werkzeug.palletsprojects.com/en/1.0.x/datastructures/#werkzeug.datastructures.FileStorage

Android 实现模拟点击的一种方式

Android ProcessBuilder [“input”, “tap”,int int]

Android在任何地方模拟点击屏幕 ====》 使用安卓中的linux命令行来进行模拟(可以完成目标但是不优雅)

ADB中可以使用”adb shell tap x y”来模拟点击
Android代码中可以使用 ProcessBuilder 来执行命令行语句。

1
2
ProcessBuilder pb =
new ProcessBuilder("myCommand", "myArg1", "myArg2").start();

可以开启一个子进程 执行其中数组命令,再利用 Linux 的命令,即可以完成模拟点击。

1
2
//利用ProcessBuilder执行shell命令 可以点击 (x,y) 像素坐标处
String[] order = { "input", "tap", "" + x, "" + y};

参考链接1:https://blog.csdn.net/hai29785/article/details/52769307

参考链接2:https://developer.android.com/reference/java/lang/ProcessBuilder#command()

Android Activity 之 isTaskRoot()

App打包apk安装后重复启动根界面的问题,这个问题很特殊,一般情况下很难被发现,是Android系统一直以来的一个Bug。系统会在同一个栈中打开重复的 Activity

但触发上述的 bug,需要下面的步骤:

  1. 点击apk文件安装app
  2. 安装完成界面点击打开按钮
  3. 点击Home键,进入系统桌面,此时app退到后台
  4. 再点击桌面上启动图标

通过这样的步骤,系统就会在之前打开了activity 的栈中再次打开这些activity。

通过 isTaskRoot() 可以避免这个问题,在 Activity 的 onCreate() 方法中,通过判断 isTaskRoot() 是否是 false,如果是则直接 finish 或者 return 不再进行创建。

参考链接: https://www.jianshu.com/p/eea14ca0b164

pyMysql Access Denied

在新安装了 mysql 之后,由于一直使用的是 root 登录的,所以在终端中,始终能够无密码链接进去 mysql 中,但是 pymsql 链接就会出现 Access Denied 的问题,网上搜索有人说是 mysql 初始化 root 是没有密码的,所有这个问题,但是我实际测试了,并不是这个原因。(而且网上查到的各种通过命令行修改密码的方案疑似都不太成功),于是最终找到了一个原因。

今天更新的mysql8,和你遇到了一模一样的问题,不知道你怎么解决的。
我是更换了root密码的认证方式解决的,新版mysql使用的caching_sha2_password,换成mysql_native_password我就可以连上了。
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘xxxxx’;

参考链接:https://segmentfault.com/q/1010000014620982