Azus

Never be a sad song with nothing to say.

0%

bin

学习的时候的bin,碎碎记~ 💪

VS Code launch.json参数

request是最重要的参数,它能选择两种类型,一个是launch模式,一个是attach模式:
launch模式:由VS Code来启动一个独立的具有debug功能的程序。
attach模式:监听一个已启动的程序(其必须已经开启debug模式)。
大多数情况下,调试Python都是用launch模式。少数情况下,你无法通过新建独立程序来调试(如要与浏览器相结合的程序,launch模式会导致你大部分浏览器插件失效),这时候就需要attach模式。


npm镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//查看源
npm config get registry
//更换源
npm config set registry https://registry.npmjs.org
//淘宝源
npm config set registry https://registry.npm.taobao.org
//淘宝npm镜像
https://npm.taobao.org/

//采用如下命令进行操作:

npm install -g package --registry=https://registry.npm.taobao.org

//安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

//使用cnpm进行安装,使用方法和npm相同
cnpm install -g electron

Hexo

Hexo canvas-nest https://github.com/theme-next/theme-next-canvas-nest

Hexo显示部分文章

1
<!--more-->

Hexo & Github Pages pull/push

github远程仓库

git pull & git clone

pull&clone

从字面意思也可以理解,都是往下拉代码,git clone是克隆,git pull 是拉。
但是,也有区别:
从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
git pull相当于是从远程获取最新版本并merge(合并)到本地 git pull = git fetch + git merge,git fetch更安全一些
git clone是远程操作的第一步,通常是从远程主机克隆一个版本库

FFMPEG

-i 指定来源

PIP(Picture in Picture) in Youtube Using Safari

With the YouTube video open in Safari, right-click on the actual video. However, you won’t see the PIP option on this menu. Instead, you must right-click again elsewhere on the video to bring up a second pop-up menu, as shown above, while the first one is still visible on the screen.

Monokai-Pro Licenses

  1. 进入~/.vscode/extensions/monokai.theme-monokai-pro-vscode-1.1.18/js, 找到app.js
  2. 搜索 APP.UUID, 注释以下代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    key: "isValidLicense",
    value: function()
    {
    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
    //if (!e || !t) return !1; 注释掉原来的代码
    if (!e || !t) return 1;
    var o = s()("".concat(i.APP.UUID).concat(e)),
    r = o.match(/.{1,5}/g),
    n = r.slice(0, 5).join("-");
    //return t === n 注释掉原来的代码
    return 1
    }

Visual Studio Code

左侧状态栏(Activity Bar), 下方状态栏(Status Bar)

QuickLook插件

1
$ brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlimagesize webpquicklook suspicious-package quicklookase qlvideo

Mac唤醒/定时任务

StackOverflow

aria2 CLI

常用命令aria2

一般使用使用 aria2 下载文件,只需在命令后附加地址即可。比如我们下载QQ如:

1
aria2c http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe

如果需要重命名的话加上–out或者-o参数

1
2
3
aria2c --out=QQ http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe

aria2c -o QQ http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe

分段下载利用 aria2 的分段下载功能可以加快文件的下载速度,对于下载大文件时特别有用。为了使用 aria2 的分段下载功能,你需要在命令中指定 x 选项。如:

1
aria2c -x 2 http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe

-x配合-s 和-j可更好使用如:

1
aria2c -s 2 -x 2 -j 10 http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe

这将使用 2 个连接来下载该文件。s 后面的参数值介于 1~5 之间,你可以根据实际情况选择。

PS:-s这个参数的意思是使用几个线程进行下载,-x是最大使用几个线程下载,-j就是同时下载几个文件。(这个是我的理解对不对不清楚)
断点续传在命令中使用 c 选项可以断点续传文件。如:

1
aria2c -c http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe

BSD Apache GPL LGPL MIT

DIF of Open-Source Liscense

Linux 开启ssh服务

SSH

  1. 更新源
    sudo apt-get update
  2. 安装ssh服务
    sodo apt-get install openssh-server
  3. 检测是否启动
    ps -e | grep ssh
    如果没有 手动启动 /etc/init.d/ssh start
  4. 配置ssh-server, 配置文件在/etc/ssh/sshd_config
    ,然后重启服务sudo /etc/init.d/ssh restart

Linux 更改登录后显示的消息

成功登陆系统后看到的当天消息(Message of the day)由/etc/motd控制。

你可以使用 cowsay[1]、banner[2]、figlet[3]、lolcat[4] 等工具创建出色的引人注目的登录消息。此方法适用于几乎所有 Linux 发行版,如 RedHat、CentOs、Ubuntu、Fedora 等。

Anaconda

Anaconda pytorch深度学习环境配置:

这次用的是RTX3060(Laptop)来配置环境,期间还是磕磕绊绊折腾了好久。总得来说,就是:

**配置开发环境时:更新的版本 == 更少支持/不稳定的版本

以下记录详细步骤:

  • 使用Anaconda配置pytorch环境(使用Nvidia CUDA并行计算加速)

$ conda create -n pytorch_env python=3.8.2
#下面一步安装conda建议的环境,推荐使用镜像 (TsingHua Mirror)[https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/]
$ conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -conda-forge
#检查是否能使用cuda:

1
2
3
4
$ python
$ >>> import torch
$ >>> torch.cuda.is_available()
$ True

Mac 更换默认终端

chsh -s /bin/zsh

change shell

iTerm2

*剪贴板历史记录

iTerm2 允许我们快速查看剪贴板内容 只需使用 Command + Shift + h 可以呼出粘贴历史,支持模糊检索。还可以设置将粘贴历史保存在磁盘上(Preferences -> General)

VS Code 执行多条指令:

1
"dependsOn": ["labelName"],//  指定执行该任务之前执行的任务

循环队列(顺序储存)

构造一个空队列Q

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//循环队列一队列的顺序存储结构
#define MAXQSIZE 100
typedef struct {
QElemType * base; //初始化的动态分配存储空间
int front; //头指针,若队列不空,指向队列头元素
int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置
}SqQueue;
// ---- -循环队列的基本操作的算法描述-- -- -
Status InitQueue (SqQueue &Q){
//构造一个空队列Q
Q.base = (ElemType * ) malloc (MAXQSIZE * sizeof (ElemType));
if (! Q.base) exit (OVERFLOW); //存储分配失败
Q.front = Q.rear = 0;
return OK;
}

返回循环链表队列的元素个数/长度

1
2
3
int QueueLength(SqQueue Q){
return (Q.rear- Q.front + MAXQSIZE) % MAXQSIZE;
}

插入元素e为Q的新的队尾元素

1
2
3
4
5
6
Status EnQueue (SqQueue &Q, QElemType e){
if ((Q.rear+ 1) % MAXQSIZE == Q.front) return ERROR; // BA5IJ#
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1) % MAXQSIZE;
return OK;
}

删除元素

1
2
3
4
5
6
7
8
Status DeQueue (SqQueue &Q, QElemType &e) {
//若队列不空,则删除Q的队头元素,用e返回其值,并返回0K;
//ETiEE ERROR
if (Q.front == Q.rear) return ERROR;
e = Q.base[ Q.front];
Q.front = (Q.front+ 1) % MAXQSIZE;
return OK;
}

vim系统粘贴板

"*p

Safari打开最近关闭的网页

⇧+⌘+T

shell脚本语法

算术运算符:注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。

[[ ]] 用于比较字符串、判断文件等,功能比较复杂多样,这里先使用最基础的用法。注意尽量不要用 [[ ]] 比较数值,因为不留神的话,数值会被转化成字符串来比较,没有任何错误提示,但结果可能不符合预期,导致不必要的麻烦。

1
2
3
4
# 样例
if [[ "$str" == "name" || "$str" == "value" ]] {
echo "$str"
}

(( )) 用于比较数值,里边可以调用各种数值相关的函数,格式类似 c 语言,变量前的 $ 可省略。

1
2
3
4
# 样例
if ((num > 3 && num + 3 < 10)) {
echo $num
}

{ } 用于在当前 shell 运行命令并且判断运行结果。

1
2
3
4
# 样例
if {grep sd1 /etc/fstab} {
echo good
}

(zsh脚本语法简述)[https://blog.csdn.net/weixin_33851177/article/details/88986284?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link]

Mac 屏幕排列切换脚本

基于displayplacer&zsh脚本

  1. brew tap jakehilborn/jakehilborn && brew install displayplacer
  2. displayplacer list and select bottom command
  3. script zsh function
1
2
3
4
5
6
7
8
9
10
11
12
function placed(){
if (( $# == 0 )){
echo "args: |1 left_right |2 up_down|"
echo "  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"&& return 0
}
if (( $1 == 1 )){
/opt/homebrew/bin/displayplacer "id:37D8832A-2D66-02CA-B9F7-8F30A301B230 res:1440x900 hz:60 color_depth:8 scaling:on origin:(0,0) degree:0" "id:69DF8D4A-596D-C5D3-0857-D6964E3302DB res:2560x1440 hz:60 color_depth:8 scaling:on origin:(1440,-540) degree:0"
}
if (($1 == 2 )){
/opt/homebrew/bin/displayplacer "id:37D8832A-2D66-02CA-B9F7-8F30A301B230 res:1440x900 hz:60 color_depth:8 scaling:on origin:(0,0) degree:0" "id:69DF8D4A-596D-C5D3-0857-D6964E3302DB res:2560x1440 hz:60 color_depth:8 scaling:on origin:(-539,-1440) degree:0"
}
}

cltq == movslq %eax, %rax

Fork Bomb

:(){:|:&};:

see fork-bomb

Invsqrt()

https://www.cnblogs.com/pkuoliver/archive/2010/10/06/sotry-about-sqrt.html

float InvSqrt(float x)
{
float xhalf = 0.5fx;
int i = (int)&x; // get bits for floating VALUE
i = 0x5f375a86- (i>>1); // gives initial guess y0
x = (float)&i; // convert bits BACK to float
x = x
(1.5f-xhalfxx); // Newton step, repeating increases accuracy
return x;
}

strtol

blog

当字符合法时,‘0’,……‘9’依次被转换为十进制的0~9,‘a’,……‘z’一次北转换为十进制的10~35。

volatile 关键字

说明这玩意是volatile的(提示编译器每次必须重新读取/不采用优化),即可变的。
常用于多中断,多线程的情况。

定义 & 声明

声明 declaration
定义 definion