git clang-format

1. why use clang-format?

  1. important to raise the code quality
  2. formatting your code is important is that you get a uniformed code when reading it, meaning you will decrease the “WTF per minute”-score*.

install

  1. clang-format

    1
    sudo apt-get install clang-format
  2. config .clang-format

    1
    2
    cd <path to repo>    
    clang-format -style=llvm -dump-config > .clang-format

    also you can choose another style or custom your style by changing .clang-format.

how to use

after editing the code. do it as follows:

1
2
git add -u
git clang-format

The clang-format will format the staged code, you can use git diff to check whether the clang-format is work.

linux安装Anaconda以及基本用法

要在Linux上安装Anaconda,您可以按照以下步骤进行操作:

  1. 下载Anaconda:首先,访问Anaconda官方网站(https://www.anaconda.com/products/individual)并下载适用于Linux的Anaconda安装包。请选择适合您系统的版本(如Python 3.7或Python 3.8)。

  2. 打开终端:打开终端应用程序,您可以在系统菜单中找到它。

  3. 切换到下载目录:使用cd命令切换到您下载Anaconda安装包的目录。例如,如果安装包在主目录的”Downloads”文件夹中,可以运行以下命令:

    1
    cd ~/Downloads
  4. 运行安装脚本:在终端中运行以下命令来执行安装脚本(请根据您下载的文件名进行替换):

    1
    bash Anaconda3-<版本号>-Linux-x86_64.sh

    注意:请确保将<版本号>替换为您下载的Anaconda版本的实际版本号。

  5. 阅读并接受许可协议:在安装过程中,您将被要求阅读并接受许可协议。请按照屏幕上的指示进行操作。

  6. 选择安装位置:接下来,您将被要求选择Anaconda的安装位置。默认情况下,它会安装在您的主目录下,但您可以选择其他位置。按照屏幕上的指示进行操作。

  7. 初始化Anaconda:安装完成后,您将被提示是否要初始化Anaconda。选择”yes”以使Anaconda生效并将其添加到您的Shell配置文件(例如,.bashrc)。这样,您就可以在终端中使用Anaconda了。

  8. 重新加载Shell配置文件:在完成初始化后,重新加载Shell配置文件,以便立即生效。您可以运行以下命令之一:

    • 如果您使用的是bash Shell:

      1
      source ~/.bashrc
    • 如果您使用的是zsh Shell:

      1
      source ~/.zshrc

至此,Anaconda已成功安装在您的Linux系统上。您可以在终端中运行conda命令来管理和使用Anaconda环境、安装包等。

Anaconda是一个功能强大的Python发行版,它提供了许多有用的命令和工具来管理Python环境和安装包。下面是一些常用的Anaconda命令以及一些有用的包管理命令:

  1. 创建和管理环境:

    • 创建新环境:conda create --name myenv(”myenv”是环境名称,可以替换为您自己的名称)
    • 激活环境:conda activate myenv
    • 停用环境:conda deactivate
    • 删除环境:conda remove --name myenv --all
  2. 管理包:

    • 安装包:conda install packageName(”packageName”是要安装的包名称)
    • 升级包:conda update packageName(更新指定的包到最新版本)
    • 移除包:conda remove packageName(卸载指定的包)
    • 搜索包:conda search packageName(搜索可用的包)
  3. 管理环境:

    • 导出环境:conda env export > environment.yml(将当前环境的配置导出到YAML文件)
    • 创建环境:conda env create -f environment.yml(使用YAML文件创建环境)
    • 复制环境:conda create --name myclone --clone myenv(从一个环境克隆另一个环境)
  4. 其他常用命令:

    • 查看已安装的环境:conda info --envs
    • 查看已安装的包:conda list
    • 查看可用的包更新:conda update --all
    • 查看conda版本:conda --version

在安装Anaconda后,您可以使用上述命令来管理环境、安装、更新和删除包,以及导入和导出环境配置。此外,您还可以使用pip命令来安装Python包,它也是Anaconda中的一部分。

对于常用的安装包,可以根据您的需求和项目来决定。以下是一些常用的Anaconda包的示例:

  • NumPy:用于进行数值计算和科学计算的基础包。
  • Pandas:提供了数据分析和数据处理的功能,适用于处理结构化数据。
  • Matplotlib:用于绘制图形和数据可视化的库。
  • Scikit-learn:提供了各种机器学习算法和工具,适用于数据挖掘和机器学习任务。
  • TensorFlow:用于构建和训练深度学习模型的开源库。
  • PyTorch:另一个流行的用于深度学习的开源库。
  • Jupyter Notebook:用于创建交互式的数据分析和可视化文档的工具。
  • Django:用于构建Web应用程序的高级Python框架。

这只是一小部分常用的包示例,Anaconda提供了

大量的包供您选择和安装,可以根据您的具体需求来安装适合的包。

在Linux中,可以使用Anaconda中的conda来管理Python环境和包,而不必直接使用pip。但是,如果您希望在Anaconda环境中使用pip,可以按照以下步骤进行操作:

  1. 激活Anaconda环境:在终端中运行以下命令来激活您的Anaconda环境(假设您的环境名称为”myenv”):

    1
    conda activate myenv
  2. 安装pip:在激活的Anaconda环境中,使用conda命令安装pip。运行以下命令:

    1
    conda install pip
  3. 使用pip:一旦安装了pip,您可以使用pip命令来安装、升级和删除Python包,就像在普通的Python环境中一样。例如:

    • 安装包:pip install packageName
    • 升级包:pip install --upgrade packageName
    • 删除包:pip uninstall packageName

请注意,当您在Anaconda环境中使用pip时,安装的包将被放置在Anaconda环境的目录中,并与conda安装的包相互独立。这样可以避免与conda包管理系统的冲突。

建议在Anaconda环境中优先使用conda来管理包,因为conda能够更好地处理依赖关系和环境兼容性。只有当您在Anaconda中找不到所需的包时,才建议使用pip进行安装。

记得在完成操作后,您可以使用conda deactivate命令来停用Anaconda环境,或者关闭终端窗口来自动停用环境。

— writed by chatgpt

github: 问题收集

  1. Recv failure: Connection reset by peer
    Firstly try this.

    1
    2
    git config --global --unset http.proxy
    git config --global --unset https.proxy
  2. remote: Support for password authentication was removed on Augus

    1
    git remote set-url origin https://<new token>@github.com/<用户名>/<仓名>.git
  3. git commit –amend 使用nano编辑器,非常不方便

    1
    git config --global core.editor vim

Neovim: 安装与配置

安装和配置Neovim(nvim)包括两个主要步骤:安装Neovim本身和进行基本配置。以下是安装和配置Neovim的一般步骤:

  1. 安装Neovim:

    • 在Linux上,您可以使用包管理器(如apt、dnf、pacman等)进行安装。例如,在Ubuntu上,可以运行以下命令:
      1
      sudo apt-get install neovim
    • 在macOS上,您可以使用Homebrew进行安装。运行以下命令:
      1
      brew install neovim
    • 在Windows上,您可以从Neovim的官方网站(https://neovim.io/)下载预编译的安装程序并进行安装。
  2. 基本配置:

    • 打开终端或命令提示符,并运行以下命令创建配置文件:
      1
      2
      mkdir -p ~/.config/nvim
      touch ~/.config/nvim/init.vim
    • 使用您喜欢的文本编辑器(如Vim、Neovim自带的nvim)打开~/.config/nvim/init.vim文件,并添加您的配置设置。以下是一个基本配置示例:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      " 启用行号显示
      set number

      " 启用语法高亮
      syntax enable

      " 设置tab宽度为4个空格
      set tabstop=4
      set shiftwidth=4
      set expandtab
    • 保存并关闭文件。
  3. 启动Neovim:

    • 在终端或命令提示符中运行以下命令启动Neovim:
      1
      nvim
    • Neovim将读取配置文件,并根据您的设置进行初始化。
  4. 进一步配置:

    • 您可以根据个人需求进一步定制和配置Neovim。例如,您可以选择安装插件管理器(如vim-plug、dein.vim)来管理插件,配置自动补全、主题、快捷键映射等。

请记住,Neovim具有丰富的配置选项和功能,您可以根据自己的需求进行定制和扩展。官方文档(https://neovim.io/doc/user/)是了解更多Neovim功能和配置的绝佳资源。

下面是一个简单的示例,展示了Neovim的基本配置:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
" 设置行号显示
set number

" 启用语法高亮
syntax enable

" 设置配色方案
colorscheme gruvbox

" 设置自动缩进
set autoindent

" 启用文件类型检测
filetype plugin indent on

" 设置tab宽度为4个空格
set tabstop=4
set shiftwidth=4
set expandtab

" 启用鼠标支持
set mouse=a

" 设置搜索时忽略大小写
set ignorecase

" 启用增量搜索
set incsearch

" 设置快捷键映射
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>

" 自动关闭括号匹配
autocmd FileType ruby,python,perl,php,javascript,vim,jinja,html,xml,yaml,yml autocmd BufEnter * silent! %s/\s\+$//e | syntax sync fromstart

" 启用插件管理器
" 以下是使用vim-plug插件管理器的示例配置
call plug#begin('~/.vim/plugged')

" 插件列表
" 插件1: NERDTree 文件资源管理器
Plug 'preservim/nerdtree'

" 插件2: coc.nvim 自动补全和语言服务器支持
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" 插件3: vim-commentary 注释插件
Plug 'tpope/vim-commentary'

" 结束插件列表
call plug#end()

以上示例展示了一些常用的配置选项和插件,包括行号显示、语法高亮、配色方案、自动缩进、文件类型检测、快捷键映射等。同时,示例中使用了vim-plug插件管理器来管理插件的安装和加载。

请注意,这只是一个基本的示例配置,您可以根据自己的需求进行修改和扩展。同时,根据您使用的插件管理器和具体插件的要求,可能需要进行额外的设置和依赖项安装。

您可以将以上配置保存为~/.config/nvim/init.vim文件(如果该文件夹和文件不存在,则需要手动创建),Neovim将在启动时加载该配置文件,并应用相应的设置和插件。

github: workflow

要在GitHub Actions中执行测试脚本,您可以按照以下步骤进行操作:

  1. 在您的代码库中创建一个名为.github/workflows的目录(如果该目录不存在)。

  2. .github/workflows目录中创建一个新的YAML文件,用于定义工作流程。您可以根据需要将该文件命名为test.yml或其他适当的名称。

  3. test.yml文件中编写工作流程的定义。以下是一个示例的基本配置:

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
name: CI

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.x

- name: Install dependencies
run: pip install -r requirements.txt

- name: Run tests
run: |
# 运行您的测试脚本的命令
python test_script.py

在上述示例中,工作流程在main分支的推送和拉取请求事件时触发。它定义了一个名为test的作业,该作业在最新版本的Ubuntu操作系统上运行。作业包含一系列步骤,例如检出代码、设置Python环境、安装依赖项和运行测试脚本。

在示例中的最后一个步骤中,使用run关键字来执行测试脚本的命令。您需要根据实际情况调整该命令,确保它与您的项目和测试脚本的要求一致。

  1. test.yml文件推送到代码库的.github/workflows目录中。

  2. 在GitHub上打开您的代码库,导航到“Actions”选项卡,您将看到您的工作流程正在运行。您可以查看工作流程的执行状态、日志和输出。

  3. 每当有新的代码推送到main分支时,GitHub将自动运行工作流程,并执行定义的测试脚本。

通过这样的设置,您可以确保在每次代码更改时自动运行测试脚本,并及时获取测试结果和反馈。请根据您的项目和需求进行自定义和调整。


writed by chatgpt

git pre-commit

要在Git中设置pre-commit钩子并使用clang-format进行代码格式化和设置代码风格,您可以按照以下步骤进行操作:

  1. 安装clang-format:确保您的系统上已安装clang-format。您可以根据您的操作系统选择适当的方法进行安装。

  2. 导航到您的Git项目的根目录。

  3. 进入.git/hooks/目录:

    1
    cd .git/hooks/
  4. 检查是否已存在pre-commit文件。如果存在,可以备份或删除该文件。

    1
    ls pre-commit

    如果输出显示pre-commit文件,则可以备份或删除它。

  5. 创建一个新的pre-commit文件并编辑:

    1
    2
    3
    touch pre-commit
    chmod +x pre-commit
    vim pre-commit

    这将创建一个名为pre-commit的空文件,并赋予它执行权限。使用适合您的文本编辑器打开文件。

  6. pre-commit文件中,添加以下脚本逻辑:

    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
    #!/bin/bash

    # 定义clang-format的配置文件路径
    CONFIG_FILE=".clang-format"


    # 获取即将提交的C/C++源文件列表
    files=$(git diff --cached --name-only --diff-filter=ACM "*.c" "*.cpp" "*.h" "*.hpp")

    # 运行代码规范检查命令,例如使用clang-format进行检查
    # 检查命令将输出不符合规范的文件列表
    CHECK_RESULT=$(clang-format -style=llvm --dry-run --Werror $(git diff --cached --name-only))

    # 检查是否存在不符合规范的文件
    if [ -n "$CHECK_RESULT" ]; then
    echo "Code style violation:"
    echo "$CHECK_RESULT"
    exit 1
    fi

    # 检查是否存在要格式化的文件
    if [ -n "$files" ]; then
    echo "Running clang-format..."

    # 逐个格式化文件
    for file in $files
    do
    # 使用clang-format进行代码格式化,并覆盖原始文件
    clang-format -style=file -i "$file"
    git add "$file"
    done
    fi

    exit 0

    在示例中,我们使用了git diff命令来获取即将提交的C/C++源文件(扩展名为.c、.cpp、.h和.hpp)。然后,我们使用clang-format对这些文件进行格式化,并使用git add将格式化后的文件添加到暂存区。

    请注意,我们使用了.clang-format作为clang-format的配置文件。您可以根据需要在项目中创建并配置该文件,以定义您所需的代码风格。
    如果我们要使用llvm的风格,可以使用**-style=llvm**。

  7. 保存并关闭文件。

现在,当您执行git commit命令提交代码时,Git将自动运行.git/hooks/pre-commit脚本,并使用clang-format对即将提交的C/C++源文件进行代码格式化,并根据.clang-format配置文件设置代码风格。

请确保脚本中的命令与您的开发环境和项目要求相匹配,并根据需要进行自定义。

注意:如果您的项目中包含其他类型的源文件,如C源文件(.c)或C++源文件(.cxx),请根据需要修改文件类型的匹配模式,并相应地更新git diff命令中的参数。同样,根据需要进行适当的配置文件调整。

writed by chatgpt

hexo备份迁移

hexo 部署到github 之后,如何进行进行迁移备份?

1. 备份分支

备份文件的分支和部署的分支要分开,比如这里我选择main 分支作为备份文件的分支,选择master作为部署分支。

1
2
 ✗ echo `git branch`
* main master

2. 新机器拉取拉取分支

  1. 新的机器首先配置hexo 所需环境,安装必须的 nodejs、npm、hexo,建议直接下载node的二进制压缩包,然后直接解压,设置软连接。
1
2
3
4
5
6
7
## 1.下载地址
https://nodejs.org/en/download/releases

## 2. 设置软连接
ln -s <解压文件>/some path/node /usr/local/bin/node
ln -s <解压文件>/some path/npm /usr/local/bin/npm
ln -s <解压文件>/some path/hexo /usr/local/bin/hexo
  1. 拉取分支
1
2
3
git clone htpps://.....git  <somepath>
cd <somepath>
npm install

3. Other

  1. hexo主题不匹配导致无法生成静态文件 *.html,此时可以将主题设置成默认的landscape,查看是否是主题问题。

  2. github权限问题,除了配置ssh 密钥外,还要设置token。

ubuntu安装zsh

zsh

安装

1
sudo apt install zsh

切换zsh

1
chsh -s /bin/zsh

查看

1
echo $SHELL

oh-my-zsh

安装

1
git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh

配置zsh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## 拷贝一个模板配置
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

## 下载两个插件试试
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/plugins/zsh-syntax-highlighting

git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/plugins/zsh-autosuggestions

## 添加到~/.zshrc 中
plugins=(git
zsh-autosuggestions
zsh-syntax-highlighting
)

使之生效

1
source ~/.zshrc