命令base64
编码
macOS
base64 file
Linux
-w, --wrap=COLS wrap encoded lines after COLS character (default 76). Use 0 to disable line wrapping
base64 -w0 file
解码
base64 -d
问题
YWRtaW4= 是 admin 的 base64 编码。
- 解码(正确,这里之所以正确是因为base64过滤了。)
$ echo 'YWRtaW4=' | base64 -d
admin[username@hostname ~]$
- 编码(错误,这是因为 echo 输出字符后会在后面再输出换行符。)
$ echo 'admin' | base64
YWRtaW4K
解决方案
- 方法一:使用
printf命令。
$ printf 'admin' | base64
YWRtaW4=
- 方法二:可以通过参数
-n告诉 echo 不输出换行符。
$ echo -n 'admin' | base64
YWRtaW4=
- 方法三:可以通过参数
-e告诉 echo 启用反斜杠转义的解释。
$ echo -e 'admin\c' | base64
YWRtaW4=
可用的转义符(来自 man echo): - \ backslash - \a alert (BEL) - \b backspace - \c produce no further output - \e escape - \f form feed - \n new line - \r carriage return - \t horizontal tab - \v vertical tab - \0NNN byte with octal value NNN (1 to 3 digits) - \xHH byte with hexadecimal value HH (1 to 2 digits)
SSH X11 Forwarding
macOS
- 安装
brew cask install xquartz
- 验证
xclock
xeyes

不使用XAuth
$ ssh -Y username@hostname
(base) username@hostname:~$ gedit

使用XAuth
- 查找XAuth的位置
$ which xauth
/opt/X11/bin/xauth
- 配置XAuth
$ vim ~/.ssh/config
Host *
XAuthLocation /opt/X11/bin/xauth
- SSH登录,可以尝试使用
ssh -X -vv查看更多的失败信息。
$ ssh -X username@hostname
(base) username@hostname:~$ gedit

参考资料 How To Set Up And Use X11 Forwarding On Linux And Mac What does “Warning: untrusted X11 forwarding setup failed: xauth key data not generated” mean when ssh'ing with -X?
SSH 登录欢迎信息
终端登录时显示给用户的欢迎消息,无论是通过远程 SSH 登录还是直接通过 TTY 或终端,是 motd 的一部分,即 Message Of The Day 守护程序。 通过修改 /etc/update-motd.d 目录中的 /etc/motd 文件或脚本,可以自定义 motd 消息以适合每个用户或管理员的个性化需求。
附加 motd 消息 sudo sh -c 'echo "Hello World!" > /etc/motd' 退出后重新登录 $ ssh username@hostname Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-53-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Thu 29 Apr 2021 08:16:49 AM UTC System load: 7.85 Processes: 1046 Usage of /: 62.1% of 548.
命令helm
Helm 帮助您管理 Kubernetes 应用程序 —— Helm Charts 帮助您定义、安装和升级即使是最复杂的 Kubernetes 应用程序。
安装 Helm
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
Downloading https://get.helm.sh/helm-v3.3.1-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
Helm 的环境变量 $ helm env HELM_BIN="helm" HELM_CACHE_HOME="/home/username/.cache/helm" HELM_CONFIG_HOME="/home/username/.config/helm" HELM_DATA_HOME="/home/username/.
命令yum
下载软件及依赖安装包
要下载的软件必须是未安装的;不使用downloaddir指定保存目录,下载的软件包将会保存到系统默认缓存目录。
yum install docker-ce --downloadonly --downloaddir=docker-ce
列出软件
列出当前安装的和可安装的最新版本
yum list docker-ce
已安装的软件包
docker-ce.x86_64 3:18.09.1-3.el7 @docker-ce-stable
可安装的软件包
docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable
列出软件的所有版本 yum list docker-ce --showduplicates 已安装的软件包 docker-ce.x86_64 3:18.09.1-3.el7 @docker-ce-stable 可安装的软件包 docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable ...... docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.1-3.
容器内幕
容器的本质是一种特殊的进程
- Linux Namespace - 空间隔离
- Linux Cgroups - 资源限制
- chroot - 切换进程的根目录
Linux Namespace
Linux Cgroups - Linux Control Group
作用:限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。
查看Cgroups限制的资源各类
在 Linux 中,Cgroups 给用户暴露出来的操作接口是文件系统,即它以文件和目录的方式组织在操作系统的 /sys/fs/cgroup 路径下。可以用 mount 指令把它们展示出来。
IoT 硬件:Raspberry Pi Camera

配置
Camera
$ sudo raspi-config
- 3 Interface Options Configure connections to peripherals
- P1 Camera Enable/disable connection to the Raspberry Pi Camera
- Yes
reboot
显存
保证显存 >= 128
- 查看
$ cat /boot/config.txt | grep gpu_mem
gpu_mem=128
- 修改
$ vim /boot/config.txt
检测 Camera
如果没有检测出来,可以考虑重新插拔试试。
$ vcgencmd get_camera
supported=1 detected=1
验证
拍照 raspistill
- 打开摄像头,预览2秒后关闭。
raspistill -t 2000
- 打开摄像头,5秒后拍照(默认),保存为 image.jpg。
raspistill -o image.jpg
- 打开摄像头,3秒后拍照,保存为 image.png,宽640:高480。
raspistill -t 3000 -o image.png -e png -w 640 -h 480
- 打开摄像头,30秒内每2秒保存一张照片。
raspistill -t 30000 -tl 2000 -o image%04d.jpg
IoT 硬件:Raspberry Pi ReSpeaker 智能语音识别双麦克风阵列
树莓派4
硬件概述

烧录系统
wget https://downloads.raspberrypi.org/rpd_x86/images/rpd_x86-2021-01-12/2021-01-11-raspios-buster-i386.iso
dd if=2021-01-11-raspios-buster-i386.iso of=/dev/sdc bs=10M
ReSpeaker 2-Mics Pi HAT

ReSpeaker 2-Mics Pi HAT是专为AI和语音应用设计的Raspberry Pi双麦克风扩展板。 这意味着您可以构建一个集成Amazona语音服务等的功能更强大,更灵活的语音产品。
该板是基于WM8960开发的低功耗立体声编解码器。 电路板两侧有两个麦克风采集声音,还提供3个APA102 RGB LED,1个用户按钮和2个板载Grove接口,用于扩展应用程序。 此外,3.5mm音频插孔或JST 2.0扬声器输出均可用于音频输出。
硬件概述

产品特征

配置
$ sudo raspi-config
打开 I2C
- 3 Interface Options Configure connections to peripherals
- P5 I2C Enable/disable automatic loading of I2C kernel module
- Yes
IoT 硬件:NeoPixel

WS2812B 灯带 一个集控制电路与发光电路于一体的智能外控LED光源。可单独寻址数字 LED 灯。 每个像素都有自己的颜色和亮度。 您可以单独控制它们,并将其设置成任何颜色。 256 灰色级别可调节和 16777216 彩色 24 位全彩显示。
硬件清单
- NodeMCU ESP32
- WS2812B 灯带
- 面包板
- 3条杜邦线
- USB数据线
电路图
![]()
ESP32 管脚图

开发 import time from machine import Pin from neopixel import NeoPixel from random import randint #GPIO0 pin = 0 #这里用的NeoPixel有60个灯珠 pixel_count = 60 np = NeoPixel(Pin(pin, Pin.OUT), pixel_count) def get_random_rgb_color(): red = randint(0, 255) green = randint(0, 255) blue = randint(0, 255) return (red, green, blue) def random_color(np): for _ in range(0, 10): for pixel_id in range(0, np.
命令brew
安装
brew install putty
FAQ
1、Updating Homebrew... 卡住
$ brew install putty
Updating Homebrew...
- 方法1:直接关闭brew每次执行命令时的自动更新
$ vim ~/.bash_profile
export HOMEBREW_NO_AUTO_UPDATE=true
$ source ~/.bash_profile
- 方法2:替换brew源
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew-core.git
brew update
2、`initialize': Version value must be a string; got a NilClass () (TypeError) $ brew install putty /usr/local/Homebr
SFTP 客户端
将所有的图片文件复制到一个目录
脚本
INPUT_DIR=''
OUTPUT_DIR=''
_prompt='██'
#find返回的文件列表在macOS系统上不能使用for循环进行迭代。
img_files=$(find $INPUT_DIR -type f \
-iname '*.jpg' -o \
-iname '*.jpeg' -o \
-iname '*.png' -o \
-iname '*.bmp' -o \
-iname '*.tif')
for file in $img_files
do
echo $_prompt $file
cp $file $OUTPUT_DIR
done
VS Code远程开发 - SSH
架构图

安装
Remote
Local
- Install OpenSSH compatible SSH client
- Install Visual Studio Code
- Install Remote Development extension pack
连接远程主机
- 在VS Code中, 按F1,选择Remote-SSH: Connect to Host...输入user@hostname。
- VS Code将连接到SSH服务器并进行设置。 VS Code将使用进度通知使您保持最新状态。

- 连接后,您将进入一个空窗口。 您始终可以参考状态栏来查看连接到的主机。

- 选择菜单:File > Open...

关闭远程连接
- 选择菜单:File > Close Remote Connection。
- 您可以简单地退出VS Code,也可以关闭远程连接。
Remote Explorer
管理您的远程连接

在远程主机上打开终端
选择菜单:Terminal > New Terminal

在远程主机调试
在Extensions窗口中选择要在远程主机上安装的调试器,按F5。

FAQ "Visual Studio Code is unable to watch for file changes in this large workspace" (error
VS Code实践
编辑
- 注释或取消注释
Command+/ - 格式化文档
Option+Shift+f
选择
- 多列选择
Option+Shift,按住鼠标左键拖动 - 多选
Option,按住鼠标左键拖动
转到
- 转到行号
Ctrl+g - 转到文件
Command+p
导航
- 后退
Ctrl+- - 前进
Shift+Ctrl+-
视图
- 自动换行
Option+z
窗口
- 显示或隐藏Side Bar
Command+b - 显示或隐藏Terminal Ctrl+`
- 多个VS Code实例切换 Command+`
- 一个VS Code实例中多个窗口切换
Ctrl+Tab
场景
当有一堆图片文件使用键盘进行快速浏览
- 按
Command+Shift+e打开资源管理器。 - 使用键盘的上下箭头键选择要浏览的文件。
- 按
Space(filesExplorer.openFilePreserveFocus) 打开文件保留焦点。
参考资料
Python实践
语言
变量
- 变量的赋值,只是表示让变量指向了某个对象,并不表示拷贝对象给变量;而一个对象,可以被多个变量所指向。
- 可变对象(列表,字典,集合等等)的改变,会影响所有指向该对象的变量。
- 对于不可变对象(字符串、整型、元组等等),所有指向该对象的变量的值总是一样的,也不会改变。但是通过某些操作(+= 等等)更新不可变对象的值时,会返回一个新的对象。
- 变量可以被删除,但是对象无法被删除。
函数参数传递
Python 里所有的数据类型都是对象,所以参数传递时,只是让新变量与原变量指向相同的对象而已,并不存在值传递或是引用传递一说。
- 不可变参数
>>> def func(x):
... x=2
...
>>> n=1
>>> func(n)
>>> n
1
- 可变参数
>>> def func(x):
... x.append(2)
...
>>> l=[1]
>>> func(l)
>>> l
[1, 2]
- 最佳实践(不管参数是可变还是不可变,明确地返回值。)
>>> def func(x):
... pass
... return x
...
>>> n=1
>>> n = func(n)
>>> n
1
Python爬虫实践
HTTP Status Code
import requests
url = "https://movie.douban.com/cinema/later/beijing/"
page = requests.get(url)
print(page.status_code)
418
在头信息中加入 User-Agent 来解决。在 Safari 浏览器中通过选择菜单[开发]->[显示JavaScript控制台],然后选择[网络]->[文稿]->[标头],在内容里的[请求]节可以找到 User-Agent。 import requests url = "https://movie.douban.com/cinema/later/beijing/" headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15'} page = requests.get(url, headers=headers) print(page.
Install NVIDIA device plugin for Kubernetes
配置每个NVIDIA GPU节点上的Docker
- 增加
"default-runtime": "nvidia"
$ sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://75oltije.mirror.aliyuncs.com"],
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
- 重启服务
sudo systemctl restart docker
设置每个节点的污点
GPU 节点
kubectl taint node gpu1 nvidia.com/gpu:NoSchedule
kubectl taint node gpu2 nvidia.com/gpu:NoSchedule
CPU 节点 kubectl taint node ln2 node-type=production:NoSchedule kubectl ta
基于腾讯云物联网开发平台的光照传感器
构建光照传感器
硬件
- NodeMCU ESP8266
- 光照度传感器
- 面包板
- 杜邦线
- USB数据线
NodeMCU 的管脚图

电路图

光照传感器

物联网开发平台
平台使用流程

① 登录腾讯云物联网开发平台控制台,进入公共实例

③ 创建产品
选择智能家居,新建产品:光照传感器。

④ 定义数据模板 选择数据模板,通过导入自定义数据模板。 { "version": "1.
基于腾讯云物联网开发平台的场景联动(智能电灯和光照传感器)
没有找到匹配的文章









