cyl的博客

记录所思

文件目录结构

1
2
3
4
5
6
7
8
9
├── library
│ ├── CMakeLists.txt
│ ├── libMySharedLib.a
│ ├── library.cpp
│ └── library.h
└── test
├── CMakeLists.txt
├── main.cpp
└── test

library

library.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef MYSHAREDLIB_LIBRARY_H
#define MYSHAREDLIB_LIBRARY_H

// 打印 Hello World!
void hello();

// 使用可变模版参数求和
template <typename T>
T sum(T t)
{
return t;
}

template <typename T, typename ...Types>
T sum(T first, Types ... rest)
{
return first + sum<T>(rest...);
}

#endif

library.cpp

1
2
3
4
5
6
#include <iostream>
#include "library.h"

void hello() {
std::cout << "Hello, World!" << std::endl;
}

CMakeLists.txt

1
2
3
4
5
6
7
8
9
10
cmake_minimum_required(VERSION 2.8)

project(MySharedLib)

set(CMAKE_CXX_STANDARD 11)

# 动态库
# add_library(MySharedLib SHARED library.cpp library.h)
# 静态库
add_library(MySharedLib STATIC library.cpp library.h)

编译 MySharedLib

1
2
3
cd library
cmake .
make

test

man.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "library.h"
using std::cout;
using std::endl;

int main() {

hello();
cout << "1 + 2 = " << sum(1, 2) << endl;
cout << "1 + 2 + 3 = " << sum(1, 2, 3) << endl;

return 0;
}

CMakeLists.txt

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
#cmake版本
cmake_minimum_required(VERSION 2.8)

#项目名:test
project(test)

# C++11 编译
set(CMAKE_CXX_STANDARD 11)

#指定生成的版本
set(CMAKE_BUILD_TYPE DEBUG)

#指定编译选项
set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall")

#指定头文件目录
include_directories(${CMAKE_SOURCE_DIR}/../library)

#链接库路径
link_directories(${CMAKE_SOURCE_DIR}/../library)

#链接库,MySharedLib为库名
link_libraries(MySharedLib)

#生成目标文件
add_executable(test main.cpp)

# 链接 库文件 MySharedLib 库 (无论动态库还是静态库都是该命令)
target_link_libraries(test MySharedLib)

编译并运行 test

1
2
3
4
cd test
cmake .
make
./test

换机iPhone的对比

iPhone Android
快捷指令 ⭐原生支持 添加简单 Task 权限太多 添加复杂
系统 ⭐系统稳定 维护周期长 只维护2个版本
浏览器 大多付费 标签页单手难用 浏览滑动有时卡顿 ⭐via 支持扩展 简洁
摄像机 ⭐使用简单 稳定可靠 有时摄像机无反应
广告 无法自动跳过 ⭐李跳跳 无权限 简单好用
返回 ⭐边缘返回
多开 ⭐分身 多开
小窗 ⭐app小窗
其他 ⭐app随意摆放 微信付款码
硬件 维修价格高 过保有时会烧主板
其他 app大多需要付费 ⭐自由安装 有破解版使用
截图 大爆炸

找到修改文件

在当前引擎页找到该文件

image-20221016111620179

修改内容

将该部分内容修改成下文

1
2
3
<p class="footer">
Created with <a href="https://www.cocos.com/products" target="_blank" title="Cocos Creator">Cocos Creator</a>
</p>
1
2
3
4
5
6
<!--
<p class="footer">
Created with <a href="https://www.cocos.com/products" target="_blank" title="Cocos Creator">Cocos Creator</a>
</p>
-->
<div class="footer"></div>

使用 envsubst 命令, 替换文本中的环境变量

1
envsubst <xxx.yaml | kubectl apply -f -

其中环境变量使用 ${XXX} 或 $XXX 格式

安装插件

1
npm install hexo-filter-mermaid-diagrams

修改配置文件

修改 Hexo 的 _config.yml 文件,添加以下内容:

参考链接

1
2
3
4
5
6
# mermaid chart
mermaid: ## mermaid url https://github.com/knsv/mermaid
enable: true # default true
version: "7.1.2" # default v7.1.2
options: # find more api options from https://github.com/knsv/mermaid/blob/master/src/mermaidAPI.js
#startOnload: true // default true

js文件修改

查找主题下的 layout 文件夹下的 footer.ejs文件,添加以下内容:

参考链接

1
2
3
4
5
6
7
8
<% if (theme.mermaid.enable) { %>
<script src='https://unpkg.com/mermaid@<%= theme.mermaid.version %>/dist/mermaid.min.js'></script>
<script>
if (window.mermaid) {
mermaid.initialize({theme: 'forest'});
}
</script>
<% } %>

参考

准备登录

获取本机公钥

本机PowerShell执行

1
2
echo "echo '$(cat $env:userprofile\.ssh\*.pub)' >> ~/.ssh/authorized_keys"
# 复制生成的命令

腾讯云后台 一键登录(WebShell)

1
2
sudo su root
#粘贴刚刚生成的命令并回车执行

本机验证

1
client/run-tencent.bat

登录

终端登录

1
ssh root@101.43.208.171

生成 SSH 密钥

1
2
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N '' -q -C tom
cat ~/.ssh/id_ed25519.pub

添加 SSH 公钥

在 Gitte 后台添加 SSH公钥 https://gitee.com/profile/sshkeys

备份

压缩

1
tar -zcvf ssh.tar.gz --exclude authorized_keys --exclude known_hosts .ssh/

下载保存

本机PowerShell执行

1
2
sftp root@101.43.208.171
get ssh.tar.gz

上传 SSH 公钥

本机PowerShell执行

1
2
sftp root@101.43.208.171
put ssh.tar.gz

终端登录

1
ssh root@101.43.208.171

解压

1
tar -xzvf ssh.tar.gz && rm ssh.tar.gz

准备登录

本机验证

1
client/run-huawei.bat

登录

终端登录

1
ssh root@119.3.141.3

生成 SSH 密钥

1
2
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N '' -q -C tom
cat ~/.ssh/id_ed25519.pub

添加 SSH 公钥

在 Gitte 后台添加 SSH公钥 https://gitee.com/profile/sshkeys

备份

压缩

1
tar -zcvf ssh.tar.gz --exclude authorized_keys --exclude known_hosts .ssh/

下载保存

本机PowerShell执行

1
2
sftp root@119.3.141.3
get ssh.tar.gz

上传 SSH 公钥

本机PowerShell执行

1
2
sftp root@119.3.141.3
put ssh.tar.gz

终端登录

1
ssh root@119.3.141.3

解压

1
tar -xzvf ssh.tar.gz && rm ssh.tar.gz

测试 Gitte 连接

1
ssh -o StrictHostKeyChecking=no -T git@gitee.com

自动化执行

1
git clone --depth 1 git@gitee.com:landream/auto-install.git ~/auto-install && cd ~/auto-install/server

Typora介绍

Typora是一个Markdown编辑工具.

  • 轻量

  • 干净

  • 实时编辑, 实时预览

  • 支持截图粘贴自动保存功能

能更好的将注意力集中在文字内容编写而不是排版

官网地址: https://typora.io/

Typora设置

默认的图片插入地址是电脑的绝对路径, 这肯定是不行的, 需要图片跟着项目走, 是要上传到git上去的

所以要修改成项目下的同文件名同名的文件夹下面

image-20220801121319592

文本居中引用

blah blah blah

代码添加改动标记

1
2
- print("Woops! I'll be deleted!")
+ print("Hey! I'll be added!")

Note 标签

default 提示块标签

primary 提示块标签

success 提示块标签

info 提示块标签

warning 提示块标签

danger 提示块标签

Tab 标签

页签一

因没有特别命名,所以此页签会用 mytab 加上流水号。

页签二

默认进来会先看到我。

页签三

这里有命名,会看到页签名不一样。

页签四

可以看到这里的流水号是从 4 开始,应该是抓 array index 作为流水号。

页签五

这里有加 icon,有什么 icon 可以来这里找。

安装必须软件

1
apt install -y sudo

添加用户

1
2
useradd -m -d /home/ubuntu -s /bin/bash ubuntu
echo "ubuntu ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

删除用户

1
userdel –r ubuntu 

切换用户

1
su ubuntu

仓库

跨域问题

1
2
3
4
5
6
7
REGISTRY_HTTP_HEADERS_X-Content-Type-Options: [nosniff]
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: ['https://docker.${DOMAIN_NAME}']
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: ['Authorization', 'Accept']
REGISTRY_HTTP_HEADERS_Access-Control-Max-Age: [1728000]
REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: ['Docker-Content-Digest']
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials: ['true']

HTTPS证书

1
2
REGISTRY_HTTP_TLS_CERTIFICATE: /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem
REGISTRY_HTTP_TLS_KEY: /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem

密码登录

1
2
REGISTRY_AUTH_HTPASSWD_REALM: basic-realm
REGISTRY_AUTH_HTPASSWD_PATH: /etc/docker/registry/htpasswd

支持镜像删除

1
REGISTRY_STORAGE_DELETE_ENABLED: "true"

WebUI

镜像 joxit/docker-registry-ui:latest

1
2
3
4
REGISTRY_TITLE: 镜像仓库                           # 标题名称
DELETE_IMAGES: true # 支持删除镜像
SINGLE_REGISTRY: true # 显示删除提示弹窗
NGINX_PROXY_PASS_URL: "https://registry-srv:5000" # 只能通过容器之间访问

示例

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
version: "3"

services:
registry:
image: registry
container_name: registry-srv
restart: unless-stopped
environment:
- REGISTRY_HTTP_HEADERS_X-Content-Type-Options: [nosniff]
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: ['https://docker.${DOMAIN_NAME}']
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: ['Authorization', 'Accept']
- REGISTRY_HTTP_HEADERS_Access-Control-Max-Age: [1728000]
- REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: ['Docker-Content-Digest']
- REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials: ['true']
- REGISTRY_AUTH_HTPASSWD_REALM: basic-realm
- REGISTRY_AUTH_HTPASSWD_PATH: /etc/docker/registry/htpasswd
- REGISTRY_STORAGE_DELETE_ENABLED: "true"
- REGISTRY_HTTP_TLS_CERTIFICATE: /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem
- REGISTRY_HTTP_TLS_KEY: /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem
volumes:
- registry:/var/lib/registry
- ./registry/docker.htpasswd:/etc/docker/registry/htpasswd
- /etc/letsencrypt:/etc/letsencrypt
networks:
- registry

docker:
image: joxit/docker-registry-ui:latest
restart: unless-stopped
environment:
- REGISTRY_TITLE: 镜像仓库
- DELETE_IMAGES: "true"
- SINGLE_REGISTRY: "true"
- NGINX_PROXY_PASS_URL: https://registry-srv:5000

volumes:
registry:

networks:
registry:
0%