ros2单播组网
在/etc/ros/fastdds.xml
文件内增加如下内容
1 |
|
增加环境变量
1 | echo 'FASTRTPS_DEFAULT_PROFILES_FILE=/etc/ros/fastdds.xml' > ~/.bashrc |
在/etc/ros/fastdds.xml
文件内增加如下内容
1 | <?xml version="1.0" encoding="UTF-8"?> |
增加环境变量
1 | echo 'FASTRTPS_DEFAULT_PROFILES_FILE=/etc/ros/fastdds.xml' > ~/.bashrc |
系统版本: Windows 11 专业版 22H2
WSL版本
1 | PS C:\Users\v_connliu> wsl -v |
.wslconfig
和/etc/wsl.conf
均使用默认配置
本人在一个内网环境,使用登录公司特定软件才可以访问网络
使用一台windows11电脑上,使用wsl开启的linux 环境用于日常linux 开发使用
因开发或者其他需要使用一个vpn代理软件,但因公司安全策略不能在宿主机安装,只好使用hyper-v 安装一个虚拟机在里面使用
使用hyper-v时网络是最大的难题
在hyper-v内使用Default Switch 没有网络
遂放弃
查看wsl网关
1 | root@ubuntu:~# route -n |
进入虚拟机后修改ip,子网掩码,网关,dns服务器
ip: 使用 172.31.176.0 同网段
子网掩码:255.255.240.0
网关: 172.31.176.1
dns服务器: 172.31.176.1
这样虚拟机就可以正常上网了, 但是 wsl 重启会导致 网关变动,进而导致 使用固定网关的虚拟机内也无法使用网络
需要一种解决方案既可以在wsl 可以访问网络,在 虚拟机内也可以访问网络的方案
修改/etc/wsl.conf
的systemd 配置
1 | [boot] |
修改/etc/systemd/network/eth0.network
为如下内容
1 | [Match] |
重启生效
1 | wsl --shutdown |
1 | systemctl --type=service |
1 | systemctl --type=service --state=load |
1 | nvidia@nvidia-desktop:~$ systemctl status fstrim.service |
1 | journalctl _PID=1135 |
1 | journalctl -u fstrim |
ansible 安装,编写hosts,执行命令,sudo 提升权限
根据官方文档manage-install,我们使用go install 安装新版本golang
1 | $ go install golang.org/dl/go1.18@latest |
但是这个时候go1.18 并不是默认版本
which 得到程序的执行路径
1 | which gogo1.18 |
使用update-alternatives
管理多版本goupdate-alternatives --install <软链> <名字> <路径> <优先级>
1 | update-alternatives --install /usr/bin/go go $(which go1.18) 900 |
其他update-alternatives 命令
1 | update-alternatives --display go #查看已安装 |
1 | $ which go |
1 | v=1.17 && go install golang.org/dl/go${v}@latest && go${v} download && update-alternatives --install /usr/bin/go go $(which go${v}) 900 |
创建 hello.cpp 文件
1 | #include <iostream> |
编译可执行文件
1 | $ g++ ./hello.cpp -o hello |
运行
1 | $ ./hello |
创建 hello_std.cpp 文件
1 | #include <iostream> |
现在使用std::cout
来做标准输出,使用std::cerr
来做错误输出,注意return也是非0
运行
1 | $ ./hello_std sds > out # 把标准输出重定向到out文件,仅保留错误输出 |
1 | #define VERSION @PROJECT_VERSION@ |
以PROJECT_
开始的3个变量是cmake的内置变量,参见cmake project
1 | cmake_minimum_required(VERSION 3.10) |
1 | #include <iostream> |
1 | cmake . # 根据CMakeLists.txt 生成 Makefile 文件 |
起因是因为项目内使用了一个执行命令的 deputy包,需要移除包,重构代码
1 | func SyncRunTimeout(timeoutSeconds time.Duration, commandName string, params ...string) (string, error) { |
这个方法实现了执行超时错误,返回命令输出,命令执行中实时打印输出3大功能
检索资料借鉴了GO语言执行命令超时的设置
得到如下代码
1 | func SyncRunTimeout(timeoutSeconds time.Duration, commandName string, params ...string) (string, error) { |
但是如上方法有个问题,无输出时命令执行错误无法提示
例如 echo "abc" | grep d
1 | $ echo "abc" | grep d |
如果用如上代码echo "abc" | grep d
执行,既没有返回命令输出,也没有报错,这在单元测试是不通过的
因 grafana 告警信息太多无用数据,容易干扰查看
例如使用 企业微信告警消息如下
太多无用Labels 例如 endpoint,job,pod,service
还有Value 字段太占空间,Source, Silence 字段,因太长且无用
所以修改模版来精简告警消息
例如企业微信类的文本告警,根据官网文档知道默认模版来自 default_template.go
主要定义了2个模版,一个是__text_alert_list
,另一个default.message
使用了模版__text_alert_list
我们只需要根据__text_alert_list
模版修改为自定义模版即可
我们在使用 kratos 时 发现没有热部署,每次更新代码都要重新编译,并且重新执行
即使使用 kratos run
也要 停止命令,重新编译
第一个热编译选择了 oxequa/realize ,实际使用中发现 各种无法运行
可能是我打开的方式不对。而且项目好像已经停止维护了…
然后选择 使用 cosmtrek/air 中乱码
1 | [11:17:56] watching internal\service |
在所有win 命令行下均有此问题,包括cmd,GitBash,PowerShell
在win10 内置linux下无此问题
创建时间 create_time
使用的 timestamp
类型额外参数
仅在 附加规则
为 function
或 callback
时有效
thinkphp 文档内没有说明如何使用带参函数或者带参回调
1 | namespace Home\Model; |