我的笔记

本项目基于mdbook框架,主要是用作笔记的功能,记录一些重要的内容,以方便我在不同的机器上使用Copy+Paste魔法。

因为是笔记的原因,所以我不会写得太详细,目的是达到我自己能看懂,日后有时间会逐渐完善更正相关内容。

树莓派笔记

本专题内容跟都是和树莓派相关,包括常用的命令、配置以及项目使用等等。

同时笔记当中所有内容都是使用原生源,也就是说如果你是使用了国内源的话可能会出现一定程度上的不兼容。

配置vim

一、安装vim

sudo apt-get install vim -y

二、配置vim

进入vim配置文件:

vim ~/.vimrc

添加以下内容:

syntax on

set number
set relativenumber
set tabstop=4 softtabstop=4
set shiftwidth=4
set expandtab
set smartcase
set incsearch
set nobackup
set undodir=~/.vim/undodir
set undofile
set backspace=indent,eol,start
set smartindent

let &t_SI = "\e[6 q"
let &t_EI = "\e[2 q"

Warning

注意:本配置只在pi用户下有效,如果你想在root也有效需要重新配置

三、使用vim

命令类


强制退出:

q!

退出并保存:

qw

执行命令:

!echo hello

编辑类


在前方插入:

i

在最前端插入:

[shift]+i

在后方插入:

a

在最后端插入:

[shift]+a

在下方插入:

o

在上方插入:

[shift]+o

快捷键类


删除:

v+d

复制:

v+y

粘贴:

p

配置alias

进入bash_aliaes配置文件

vim ~/.bash_aliaes

添加以下内容:

alias la="ls -a"
alias ll="ls -l"

alias apt-clean="sudo apt-get autoremove -y && sudo apt-get clean -y"
alias apt-update="sudo apt-get update && sudo apt-get upgrade -y"
alias cpu-temp="vcgencmd measure_temp"
alias eeprom-update="sudo rpi-eeprom-update -a"

alias autologin="/home/pi/Projects/Autologin/autologin.sh"
alias autorun="pwsh -File /home/pi/Projects/Autorun/autorun.ps1"

Warning

注意:注意:本配置只在pi用户下有效,如果你想在root也有效需要重新配置

使用ssh

一、使用puttygen

二、使用ssh-keygen

生成密钥,一路回车选择默认选项就好了:

ssh-keygen -t rsa -b 1024 -f piserver -C "Piserver-ssh-key"

配置服务器,将公钥放到服务器上:

cat piserver.pub >> ~/.ssh/authorized_keys

配置连接端:

vim ~/.ssh/config

添加以下内容:

Host piserver
     HostName 192.168.137.120
     Port 22
     User pi
     IdentityFile ~/ssh-private-key/piserver

使用crontab

一、配置crontab

进入corntab配置文件:

crontab -e

如果你是第一次使用,crontab可能需要你选择默认的编辑器,这边我一般会选择vim作为我的编辑器,因此输入2:

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

你也可以在后面更改默认的编辑器:

select-editor

默认编辑器选择完后就会进入编辑界面,在文件末尾添加以下内容:

30 23 * * 0-5 sudo /usr/sbin/shutdown -h now

@reboot gpio mode 15 out && gpio write 15 1
@reboot /usr/local/bin/clash
@reboot sleep 10 && /home/pi/Projects/Autologin/autologin.sh

查看已有任务:

crontab -l

二、contab语法

基本格式:

* * * * * [username] command(s)
- - - - -
| | | | |
| | | | ----- Day of week  (0 - 7) (Sunday=0 or 7)
| | | ------- Month        (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour         (0 - 23)
------------- Minute       (0 - 59)

部分符号含义:

符号含义
*任意值
,分割符
-范围符
/步数符
@reboot启动事件

Info

crontab在线编辑器:crontab.guru

三、示例

* */2 * * * root apt-get update && apt-get upgrade -y

每两小时自动更新apt。

30 23 * * 0-5 sudo /usr/sbin/shutdown -h now

周日到周五晚23:30自动关机,即跳过星期六。

@reboot gpio mode 15 out && gpio write 15 1

开机自动调用wiringpi打开风扇。

使用apache2

一、安装apache2

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install apache2 -y

打开apache2默认地址查看默认的网页内容http://localhost

二、配置apache2

首先准备好一个网页,然后我们需要对网页进行一些配置。这里我已我的笔记网页为例/home/pi/Projects/Notes/book

新建配置文件:

sudo vim /etc/apache2/sites-available/note.conf

添加以下内容:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/pi/Projects/Notes/book
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然后进入apache的配置文件给该目录以权限:

sudo vim /etc/apache2/apache2.conf

添加以下内容:

<Directory "/home/pi/Projects/Notes/book">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

三、使用apache2

首先我们需要关闭默认的apache网页:

sudo a2dissite 000-default.conf

然后激活我们的网页:

sudo a2ensite notes.conf

最后重新启动apache:

sudo systemctl reload apache2

然后我们就可以通过默认网址访问我们的网页了http://localhost

查看apche2服务:

sudo systemctl status apache2

停止apache2服务:

sudo systemctl stop apache2

注销apache2服务:

sudo systemctl disable apache2

注册apache2服务:

sudo systemctl enable apache2

使用wiringpi

Info

官方文档:wiringpi

一、安装wiringpi

安装wiringpi:

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

测试是否安成功:

gpio -v

二、基础命令

查看GPIO状态:

gpio readall

设置GPIO 14号引脚为输出,并且输出高电平:

gpio mode 15 out
gpio write 15 1

还原GPIO 14状态:

gpio write 15 0
gpio mode 15 in

三、调用<wiringpi.h>

我们写一个fan.c的程序,该程序用于控制树莓派的GPIO 14。

#include <signal.h>
#include <wiringPi.h>

#define Fan 14

int isLoop = 1;

void breakLoop(int signal) {
    isloop = 0;
}

int main(void) {
    signal(SIGINT, breakLoop);
    signal(SIGTERM, breakLoop);
    signal(SIGHUP, breakLoop);

    wiringPiSetupGpio();
    pinMode(Fan, OUTPUT);
    digitalWrite(Fan, HIGH);

    while (isloop);

    digitalWrite(Fan, LOW);
    pinMode(Fan, INPUT);
    return 0;
}

编译代码:

gcc -Wall -o fan fan.c -lwiringPi

执行代码:

./fan

使用Powershell

Info

官方文档:powershell

一、安装Powershell

32位和64位系统的唯一的区别就是32位需要安装依赖,而64位不需要。

32位操作系统

安装依赖:

sudo apt-get update
sudo apt-get install '^libssl1.0.[0-9]$' libunwind8 -y

下载解压文件,在我写此文档时powershell最新版本是7.2.5,你可以前往官网下载更新的版本

wget https://github.com/PowerShell/PowerShell/releases/download/v7.2.5/powershell-7.2.5-linux-arm32.tar.gz
mkdir ~/Powershell
tar -xvf ./powershell-7.2.5-linux-arm32.tar.gz -C ~/Powershell

64位操作系统

直接下载解压文件:

wget https://github.com/PowerShell/PowerShell/releases/download/v7.2.5/powershell-7.2.5-linux-arm64.tar.gz
mkdir ~/Powershell
tar -xvf ./powershell-7.2.5-linux-arm64.tar.gz -C ~/Powershell

二、配置Powershell:

sudo ~/Powershell/pwsh -command 'New-Item -ItemType SymbolicLink -Path "/usr/bin/pwsh" -Target "$PSHOME/pwsh" -Force'

三、使用Powershell:

pwsh

使用Oh-My-Posh

Info

官方文档:oh-my-posh

一、安装字体

首先你需要安装一个Nerd字体才能正常显示oh-my-posh,推荐安装Hack字体

树莓派需要先安装一个font-manager,然后选择需要安装的字体就好了。

sudo apt install font-manager

二、安装oh-my-posh

首先前往oh-my-posh官方地址下载对应的版本,如果是树莓派64位就下载posh-linux-arm64

sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-arm64 -O /usr/local/bin/oh-my-posh
sudo chmod +x /usr/local/bin/oh-my-posh

安装主题:

mkdir ~/.poshthemes
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
chmod u+rw ~/.poshthemes/*.omp.*
rm ~/.poshthemes/themes.zip

三、配置终端

进入配置文件:

sudo vim ~/.bashrc

在最后添加以下内容:

eval "$(oh-my-posh --init --shell bash --config /home/pi/.poshthemes/paradox.omp.json)"

如果是powershell,应该进入$PROFILE,然后添加以下内容:

oh-my-posh --init --shell pwsh --config /home/pi/.poshthemes/paradox.omp.json | Invoker-Expression

最后重新启动终端就可以正常使用了。

其他配置

一、配置WiFi

sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

二、更新并使用pip-review

pip install pip-review
pip-review --interactive

三、安静启动Telegram

Telegram --startintray

常用命令

查看系统CPU:

htop

查看系统存储空间:

df -h

查看系统进程:

ps -A

结束某个进程:

kill $id

更新树莓派eeprom:

sudo rpi-eeprom-update -a

查看树莓派温度:

vcgencmd measure_temp

教程笔记

这个专题主要就是折腾笔记,把一些瞎折腾的东西给搬过来。

因此本专题操作上会有一定的难度,也有可能不成功。

使用git

一、配置git

进入git配置文件:

vim ~/.gitconfig

然后添加以下内容:

[user]
    name=MR-Addict
    email=2750417853@qq.com
[http]
    proxy=http://127.0.0.1:7890
[https]
    proxy=http://127.0.0.1:7890
[init]
    defaultBranch=main
[pull]
    ff=only

二、常用命令

查看提交记录:

git log

查看当前状态:

git status

回退版本:

git reset --hard $hash_value_of_last_commit

查看本地配置:

git config --list

查看全局配置:

git config --global --list

编辑全局配置:

git config --global --edit

保存系统登录验证:

git config --system credential.helper store

重置系统登录验证:

git config --system --unset credential.helper

只拉取不提交:

git config --global pull.ff only

设置本地默认分支:

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/$branch_name

删除本地和远程分支:

git branch -D $branch_name
git push --delete $branch_name

三、首次提交模板

添加基本内容:

git init
echo "# Test" > README.md
git add README.md
git commit -m "First commit"

添加远程仓库链接:

git remote add origin git@github.com:mr-addict/test.git

更改默认分支名为main:

git branch -M main

推送提交到远程仓库:

git push -u origin main

使用GitHub Actions

一、基本模板

新建配置文件:

vim .github/workflows/demo.yml

然后添加以下内容:

name: build
on:
  push:
    branches:
      - main
  pull_request:

jobs:
  Check-Python-Version:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout current branch
        uses: actions/checkout@v3

      - name: Setup python
        uses: actions/setup-python@v4
        with:
          python-version: 3.9

      - name: Check python version
        run: python --version

  Check-Windows-Powershell-Version:
    runs-on: windows-latest
    steps:
      - name: Check-Windows-Powershell-Version
        shell: powershell
        run: echo $PSVersionTable

Github Action状态API:

https://github.com/mr-addict/notes/actions/workflows/gh-pages.yml/badge.svg?branch=main

二、部署mdbook模板

name: build

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  Deploy-Github-Pages:
    runs-on: ubuntu-20.04
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
    steps:
      - name: Checkout current branch
        uses: actions/checkout@v3

      - name: Setup mdBook
        uses: peaceiris/actions-mdbook@v1
        with:
          mdbook-version: 'latest'

      - name: Build book
        run: mdbook build

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        if: ${{ github.ref == 'refs/heads/main' }}
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./book

三、部署hexo模板

name: build

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  Deploy-Github-Pages:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout current branch
        uses: actions/checkout@v2

      - name: Setup nodejs
        uses: actions/setup-node@v3
        with:
          node-version: '16'

      - name: Cache npm dependencies
        uses: actions/cache@v3.0.4
        with:
          path: node_modules
          key: ${{ runner.OS }}-npm-cache
          restore-keys: ${{ runner.OS }}-npm-cache

      - name: Install npm dependencies
        run: npm install

      - name: Build project
        run: npm run build

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public

使用Clash内核

一、下载Clash

在这里我们使用Clash作为科学上网的代理框架,你可以到GitHub下载Clash内核。如果你是树莓派4B 32位操作系统,那么你应该下载对应armv7版本clash-linux-armv7-v1.10.6.gz,如果是树莓派4B 64位操作系统,那么你应该下载对应armv8版本clash-linux-armv8-v1.10.6.gz

其他型号的树莓派可以通过以下命令查看树莓派的架构:

arch

clash-release

下载完成后解压文件,建议把文件名改为clash, 然后移动到/usr/local/bin/clash位置,同时给该文件以执行的权限:

wget https://github.com/Dreamacro/clash/releases/download/v1.10.6/clash-linux-armv7-v1.10.6.gz
gunzip clash-linux-armv7-v1.10.6.gz
rm -rf clash-linux-armv7-v1.10.6.gz
mv clash-linux-armv7 clash
sudo mv clash /usr/local/bin
sudo chmod a+x /usr/local/bin/clash

二、配置Clash

Clash配置文件的默认路径是~/.config/clash,如果你的Home目录不存在相应文件夹就需要你自己创建,然后把你机场提供的配置文件放到该文件下就可以了,Clash配置文件的默认名称应该是config.yaml

mkdir ~/.config/clash
mv your/clash/config/file config.yaml
mv config.yaml ~/.config/clash

另外Clash还需要一个Country.mmdb文件,Country.mmdb是全球IP库,可以实现各个国家的IP信息解析和地理定位,没有这个文件clash无法正常启动,你可以前往GitHub下载。下载完成后同样放在默认路径下就可以了~/.config/clash

三、配置终端代理

首先我们需要添加几个环境变量:

sudo vim /etc/environment

然后添加以下配置内容:

export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export no_proxy="localhost, 127.0.0.1, *edu.cn"

Warning

系统变量的https_proxy的代理地址和http_proxy的代理地址是一样的,因为Clash使用一个地址同时代理http和https。另外,no_proxy表示其中的地址不需要代理,这一点很重要,比如我们不需要代理我们的校园网地址,因此加入要*edu.cn

然后再对相应的终端应用配置代理:

为sudo配置代理

进入sudo配置文件:

sudo visudo

然后添加以下内容:

Defaults env_keep+="http_proxy https_proxy no_proxy"

为apt配置代理

进入apt配置文件:

sudo vim /etc/apt/apt.conf.d/10proxy

然后添加以下内容:

Acquire::http::Proxy "http://127.0.0.1:7890/";

为git配置代理

进入git配置文件:

vim ~/.gitconfig

然后添加以下内容:

[http]
  proxy=http://127.0.0.1:7890
[https]
  proxy=http://127.0.0.1:7890

为pip配置代理

进入pip配置文件:

vim ~/.config/pip/pip.conf

然后添加以下内容:

[global]
  proxy = http://127.0.0.1:7890
  http-proxy = http://127.0.0.1:7890
  https-proxy = http://127.0.0.1:7890
  trusted-host = pypi.python.org global.trusted-host pypi.org global.trusted-host files.pythonhosted.org

为npm配置代理

进入npm配置文件:

vim ~/.npmrc

然后添加以下内容:

proxy=http://127.0.0.1:7890
http-proxy=http://127.0.0.1:7890
https-proxy=http://127.0.0.1:7890

为cargo配置代理

进入cargo配置文件:

vim ~/.cargo/config

然后添加以下内容:

[http]
  proxy=http://127.0.0.1:7890
[https]
  proxy=http://127.0.0.1:7890

四、使用Clash

配置完成后需要重启树莓派让配置生效,这样配置才能生效。理论上这样一波配置后,大部分终端应用都可以正常使用了,如果你有其他的终端应用可自行参考相关文档进行配置。

重启之后在终端中输入clash,如果输出类似以下内容那么就说明Clash启动成功了。

INFO[0000] Start initial compatible provider 手动选择
INFO[0000] Start initial compatible provider 节点选择
INFO[0000] Start initial compatible provider 故障切换
INFO[0000] Start initial compatible provider 自动选择
INFO[0000] HTTP proxy listening at: [::]:7890
INFO[0000] RESTful API listening at: 127.0.0.1:9090
INFO[0000] SOCKS proxy listening at: [::]:7891

你可以更新一下系统或者打开浏览器测试一下Google,如果可以访问你就可以愉快地玩耍了!

Warning

在终端请不要使用ping google.com来测试,因为ping使用不同的协议无法被Clash代理,但是可以使用curl google.com

五、开机自启

既然我们都已经可以使用Clash了,当然要让树莓派能够开机自启Clash对吧。在树莓派推荐使用crontab作为自动任务管理器。

输入以下命令可以打开crontab:

crontab -e

第一次使用可能需要你选择默认的编辑器,看个人喜好选择就好,然后在打开的文件末尾添加以下内容:

@reboot /usr/local/bin/clash

六、控制面板

GitHub上有很多优秀的有关Clash Dashboard的项目,这些项目可以非常方便地帮助你查看、设置和管理你的Clash。

从GitHub上克隆Clash Dashbaord到Clash的默认配置文件夹下。

cd ~/.config/clash
git clone https://github.com/Dreamacro/clash-dashboard.git
cd ~/.config/clash/clash-dashboard
git checkout -b gh-pages origin/gh-pages

下载完成后你需要对Clash的配置文件稍作修改,在config.yaml的头部添加或者修改以下两项:

external-ui: clash-dashboard
external-controller: 127.0.0.1:9090

然后在浏览器中输入http://127.0.0.1:9090/ui就可以看到Clash的控制面板了。

clash-dashboard

编程笔记

Matlab 1 — bianlinag

Matlab 2