什么是git
git中数据中数据的状态
git clone --global user.name "name"
git clone --global user.email [email protected]
# 带--global参数的命令配置的是全局变量,可用于以后所有项目;
# 对特定项目使用不同用户名与邮件地址时,在所在项目目录下重新运行不带--global的命令来覆盖
# 配置文件及优先级:~/.gitconfig > /etc/gitconfig
git config --list --show-origin #查看所有配置及所在文件
git config --list #查看所有配置
cd project/
git init # 初始化
git add *.c #指定追踪所有.c文件
git add LICENSE
git commit -m ''
命令:
git add file # 跟踪或暂存文件
git status # 查看文件状态
git status -s/--short # 以简洁方式查看文件状态
git diff # 查看未暂存的文件更新的部分(比较当前文件与暂存区快照间差异)
git diff --staged/--cached # 查看已暂存未提交文件的更改(比较已暂存文件与最后一次提交文件间的差异)
git commit # 提交更新,会自动打开默认编辑器填写提交消息
git commit -m "提交消息" # 在命令中填写提交消息
git commit -a # 跳过暂存步骤,将所有已跟踪的文件自动暂存后一并提交
git commit --amend #补充提交
git reset HEAD 文件 # 取消对文件的暂存
git checkout -- 文件 # 取消对文件的修改
git rm 文件 # 从跟踪清单中删除文件,并从工作目录中也删除
git rm --cached 文件 # 从暂存区及仓库中删除文件,但保留工作目录中的文件
git mv file_src file_to # 移动文件或改名
git log # 查看提交历史
git log -p/--patch -2 # 显示最近两次提交所引入的差异
git log --pretty=oneline # 将每一次提交的sha校验和、提交信息显示在一行内
###################################################
git clone 仓库地址 # 克隆仓库,自动将其添加为远程仓库,并默认具有简称origin
git remote (-v) # 显示已配置的远程仓库服务器的简称,-v显示其对应的URL
git remote add shortname url # 添加远程仓库url,并指定简称shortname
git fetch url/shortname # 从远程仓库拉取工作目录中没有的数据,只下载不合并,不改变工作目录文件
git pull
git push <remote> <branch> # 推送到服务器,可以是url或简称
git remote show <remote> # 显示远程仓库信息
git remote rename name_src name_to # 修改远程仓库的简称
git remote remove/rm name # 删除一个远程仓库
git tag (-l/--list) # 列出已有标签
git tag -a v1.4 -m "a message for tag" # -a创建一个标签,-m为该标签附加信息
git tag v1.4-lw # 后缀-lw为轻量标签,不需指定-a -s -m 等选项
git tag -a v1.2 9fceb02 # 在后期为之前的提交补充tag,命令末尾为指定提交的校验和或部分校验和,
# 校验和可使用git log --pretty=oneline得到
git show v1.4 # 显示指定标签的提交信息
git push <remote> <tag> # 将标签推送到服务器上(git push 默认不同步tag)
git push <remote> --tags # 将所有不在远程仓库中的tag同步过去
git tag -d <tag> # 删除本地仓库的tag
git push <remote> --delete <tag> # 删除远程仓库中的标签
######################################################
git branch branch_name # 创建分支,但不自动切换
git log --oneline --decorate # --decorate显示各个分支当前所指的对象
git checkout branch_name # 切换分支
git branch -b branch_name_1 # 创建并切换到分支1
git checkout master # 切换到master分支
git merge branch_name_1 # 将branch_name_1合并到master,
# 若branch_name_1为master的推进,则该合并会将master向后推进
git branch -d branch_name_1 # branch_name_1内容已经合并到master,-d 将其删除
使用.gitignore
文件忽略文件
简单应用
git --version
确认已安装git$ git config --global user.email "邮箱"
$ git config --global user.name "用户名"
# 如果仅在本仓库设置身份标识,则省略 --global 参数。
$ git init project_name
$ cd project_name
$ git add file1.txt
# add只是暂时将文件标记,用于接下来的提交
$ git commit -m "My first commit"
# -m 用于添加一条提交信息,用于描述文件活动记录
```
$ git <命令> --help #获取<命令>的手册
$ git <命令> -h #获取<命令>的简明手册
```
$ cd /home/user/my_project
$ git init
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
$ git clone https://github.com/libgit2/libgit2 mylibgit
对真实项目 Git 仓库的维持:
工作目录下的文件状态:
工作目录下的文件分为两种状态:已跟踪 或 未跟踪
已跟踪的文件是指那些被纳入了版本控制的文件,存在于上次快照的记录中,它们的状态又可分为:未修改、已修改或已放入暂存区;未跟踪文件,不存在于上次快照的记录中。
跟踪暂存文件
$ git add #跟踪新文件、暂存已修改的文件
查看文件状态
$ git status #查看哪些文件处于什么状态
$ git status -s #状态简览
M README #已修改,未暂存
MM Rakefile #已修改,暂存后又作了修改
A lib/git.rb #新添加到暂存区
M lib/simplegit.rb #已修改,已暂存
?? LICENSE.txt #新添加的未跟踪文件
------------------------------
# 输出标记有两栏,左栏为已暂存,右侧为未暂存,??为未跟踪
提交更新
$ git commit #提交更新,自动启动你选择的文本编辑器来输入提交说明
$ git commit -m "提交说明"
$ git commit -a "提交说明" #跳过 git add 步骤,把所有已经跟踪过的文件暂存起来一并提交
移除文件
$ rm PROJECTS.md
$ git rm PROJECTS.md
$ git rm --cached README #使用 --cached 选项,只删除暂存区缓存
$ git rm log/\*.log #glob模式,删除log/ 目录下扩展名为 .log 的所有文件
#官网下载向日葵deb包,安装
$sudo apt install ...deb
#解决win10远程控制ubuntu失败,显示「连接已断开」的问题
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt install lightdm
#选择lightdm
#重启电脑
指 shell 所使用的简化了的正则表达式。
星号(*)匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符 (这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字);
使用两个星号(**)表示匹配任意中间目录,比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等。
移动(重命名)文件
$ git mv file_from file_to
# 相当于运行如下三条命令
$ mv README.md README
$ git rm README.md
$ git add README
忽略文件
创建一个名为 .gitignore 的文件,列出要忽略的文件的模式。文件内容举例:
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
远程仓库是指托管在因特网或其他网络中的你的项目的版本库。远程仓库可以在你的本地主机上。
fork 在自己的远程仓库创建别人仓库的副本
clone 在自己的本地创建远程仓库的副本
push 将自己本地的更新上传到远程代码并合并
pull 从远程获取代码并合并本地的版本。
pull request 将自己远端修改的内容申请同步到原来的那个别人的远端仓库
fetch 将远端更新的内容更新到本地
Docker 菜鸟教程
(官方)Ubuntu安装Docker
(官方)Docker Get Started
(官方)Docker doc
docker-从入门到实践
#拉取一个image
#使用image启动一个container
cd image_path
bash docker/scripts/dev_start.sh
#进入一个container
bash docker/scripts/dev_into.sh
#在container外获取containerID
docker ps
#在container内获取container ID
cat /proc/self/cgroup | head -1
#或
cat /proc/self/cpuset
#关闭一个container
docker stop container_name/container_ID
#Docker容器向宿主机传送文件
docker cp container_id:<docker容器内的路径> <本地保存文件的路径>
#宿主机向Docker容器传送文件
docker cp 本地文件的路径 container_id:<docker容器内的路径>
来源
获取应用程序
Download the App contents,注意只需要app文件夹
下载->提取->使用vscode打开
构建应用的容器镜像
Dockerfile :一个基于文本的指令脚本,用于创建容器映像
在文件 package.json 所在的文件夹中创建一个名为 Dockerfile 的文件,内容如下:
# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
-----------------------------------------
# FROM node:12-alpine:从"node:12-alpine" image开始构建,但当前机器上并没有,因此会下载一系列"node:12-alpine" image的layer image
# WORKDIR:设置工作目录
# COPY:复制源路径的所有元数据到工作目录,注意此处的两个点之间有个空格
# apk:软件包管理工具;
## add:安装PACKAGES并自动解决依赖关系;
## --no-cache:不使用本地缓存安装包数据库,直接从远程获取安装包信息安装
# 使用yarn安装信赖项
# CMD:设置默认参数
在Dockerfile所在的文件夹下打开终端,执行
$ docker build -t getting-started .
# 该指令使用Dockerfile构建一个新的container image.
# -t 将image命名为getting-started
# 最后的点为dockerfile所在目录
启动一个app容器
$ docker run -dp 3000:3000 getting-started
# 启动getting-started
# -d: 后台运行容器,并返回容器ID;
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
几秒钟后,打开 Web 浏览器访问http://localhost:3000。将会看到应用程序。
docker权限问题
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.
-----------------------------------------------
解决方法:
# 创建组
$ sudo groupadd docker
# 列出组用户
$ groups
# 将登陆用户加入到docker用户组中
$ sudo gpasswd -a $USER docker
或
$ sudo usermod -aG docker $USER
# 更新用户组
$ newgrp docker
# 列出组用户(验证)
$ groups
对于vscode问题
current user does not have permission to run 'docker'.try adding the user to the 'docker' group
# 需要重启ubuntu
--------------------------------------------------
参考
How to Fix Docker Permission Denied Error on Ubuntu
解决Ubuntu18.04启动Docker“Got permission denied while …
把用户添加进Docker用户组
docker内走代理
在docker中有些操作需要在github上下载一些东西,但老是失败,可以走代理解决。
如apollo build时,rules_swift下载失败影响编译。
参考快速设置 Docker 的三种网络代理配置
# 创建目录
mkdir ~/.docker
# 创建配置文件
touch ~/.docker/config.json
# 编辑配置文件
vim ~/.docker/config.json
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:7890",
"httpsProxy": "http://127.0.0.1:7890",
"noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
}
}
}
sudo systemctl restart docker
利用 col -b 命令去除掉所有 控制符
$ man [command] | col -b > /root/[command].man
#按照每个单元花费的启动时间从多到少的顺序,列出所有当前正处于活动(active)状态的单元:
systemd-analyze blame
#显示系统bootup各阶段用时:
systemd-analyze time
启动未完成时,会返回Bootup is not yet finished. Please try again later.
使用以下命令可查看仍在运行的服务:systemctl list-jobs
ROS Tutorials
解决ROS系统 rosdep update超时问题的新方法
.sh
/.rviz
文件(若有的话)。参考:生成C++调用流程图
Ubuntu中使用doxygen+graphviz
理解一个功能包集的正确方法——如何使用Doxygen + Graphviz理解ros的navigation功能包集
很详细,推荐:Doxygen + Graphviz windows下图解安装与配置
Doxygen + graphviz + Windows Help Workshop生成函数调用图和chm文件
其他:在windows平台上,VS Studio有叫code graph
的插件,github链接
安装:
sudo apt install doxygen doxygen-gui
sudo apt install graphviz graphviz-doc
使用:
$ doxywizard
参考:
Linux Core Dump
Linux上Core Dump文件的形成和分析
core(5) — Linux 手册页
打开coredump并修改文件生成路径
Shell脚本———— /dev/null 2>&1详解
linux中core dump开启使用教程【转】
File
-> Settings
-> Project
-> Project Interpreter
-> ⚙️->add
Virtualenv Environment
-> Existing environment
-> ...
bin
中的python可执行文件Make availabale to all projects
参考
GPU之nvidia-smi命令详解
深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析
Pytorch GPU内存占用很高,但是利用率很低
深度学习训练已经停止了,可GPU内存还在占用着,怎么办?
解决GPU显存未释放问题
训练时GPU显存太小问题、batchsize 的大小跟GPU的显存的关系
训练神经网络时如何确定batch size?
神经网络中Batch Size的理解
深度学习中Epoch、Batch以及Batch size的设定
可标定单双目相机,依赖安装:opencv、sudo apt-get install libpopt-dev
标定文件详述
kalibr/Schweizer-Messer/sm_python/python/sm/PlotCollection.py
中NavigationToolbar2Wx
改为NavigationToolbar2WxAgg
kalibr/python/kalibr_camera_calibration/MulticamGraph.py at line 83
下isGraphConnected(self)
函数为:def isGraphConnected(self):
if self.numCams == 1:
# Since igaph 0.8, adhesion correctly returns 0 for the non-connected one cam case.
# which evaluates to false later on. So we skip the check and return true in the one camera case.
return True
else:
#check if all vertices are connected
return self.G.adhesion()
sudo apt install python-igraph
安装很简单,catkin_make
即可
信息采集
rosrun topic_tools throttle messages /imsee/image/left 4.0 /left
rosrun topic_tools throttle messages /imsee/image/left 4.0 /right
rosbag record /imsee/image/camera_info /left /right -o imsee_calib.bag
标定
rosrun kalibr kalibr_calibrate_cameras \
--target "april_6x6.yaml" \
--bag "static.bag" \
--models pinhole-equi pinhole-equi omni-radtan omni-radtan \
--topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw \
--approx-sync 0.1
–bag filename.bag
包含数据的ROS包
–topics TOPIC_0 … TOPIC_N
相机话题列表,与–models 的顺序对应
–models MODEL_0 … MODEL_N
相机/失真模型列表,与–topics 的顺序对应(请参阅支持的模型)
支持的相机投影模型:
pinhole camera model (pinhole)——>
(intrinsics vector: [fu fv pu pv])
omnidirectional camera model (omni)——>
(intrinsics vector: [xi fu fv pu pv])
double sphere camera model (ds)——>
(intrinsics vector: [xi alpha fu fv pu pv])
extended unified camera model (eucm)——>
(intrinsics vector: [alpha beta fu fv pu pv])
内参向量中的参数:
fu, fv: focal-length
pu, pv: principal point
xi: mirror parameter (only omni)
xi, alpha: double sphere model parameters (only ds)
alpha, beta: extended unified model parameters (only eucm)
支持的畸变模型:
radial-tangential (radtan)——>
(distortion_coeffs: [k1 k2 r1 r2])
equidistant (equi)——>
(distortion_coeffs: [k1 k2 k3 k4])
fov (fov)——>
(distortion_coeffs: [w])
none (none)——>
(distortion_coeffs: [])
–target target.yaml
校准用标定板配置(参见此处)
棋盘格配置:
target_type: ‘checkerboard’ #gridtype
targetCols: 6 #number of internal chessboard corners
targetRows: 7 #number of internal chessboard corners
rowSpacingMeters: 0.06 #size of one chessboard square [m]
colSpacingMeters: 0.06 #size of one chessboard square [m]
执行标定时出现的问题
参考
kalibr 标定双目相机
package ‘igraph’ is deprecated #466
Cameras are not connected through mutual observations #364
相机标定
教程
中文教程
基础知识:
The matplotlibrc file
配置文件matplotlibrc详解
查看配置文件路径
import matplotlib
matplotlib.matplotlib_fname()
matplotlib.get_cachedir() #缓存目录
matplotlib.get_configdir() #配置目录
matplotlib.get_data_path() #数据路径
>> GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported.
>> Failed to load module "canberra-gtk-module"
报错复现:import cv2
import matplotlib.pyplot as plt
cv2.namedWindow("test")
解决办法:更改backend
GTKAgg GTKCairo GTK3Agg GTK3Cairo MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
Alt+v
,并设置自启动#官网下载向日葵deb包,安装
$sudo apt install ...deb
#解决win10远程控制ubuntu失败,显示「连接已断开」的问题
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt install lightdm
#选择lightdm
#重启电脑
Bitcomets
https://lanzoux.com/b01ihw9wf【密码:1234】
https://www.cometbbs.com/
# tracker:
https://gitee.com/harvey520/www.yaozuopan.top/raw/master/blacklist.txt
https://trackerslist.com/all.txt
期刊、文献
address | - |
---|---|
paperdigest | 文献检索、综述 |
openknowledgemaps | 文献检索、map分类索引 |
connectedpapers | 以图浏览相关文献 |
中文分词+文章重写工具 | |
文章重写者 | |
paraphraser | 文章重写 |
nounplus | 在线语法检查 |
#13. media tools
无影工厂,备份(已隐藏)
基础
.pxd文件
.pxd 文件是由 Cython 编程语言 “编写” 而成的 Python 扩展模块头文件。
.pxd 文件类似于 C 语言的 .h 头文件,.pxd 文件中有 Cython 模块要包含的 Cython 声明 (或代码段)。
.pxd 文件可共享外部 C 语言声明,也能包含 C 编译器内联函数。.pxd 文件还可为 .pyx 文件模块提供 Cython 接口,以便其它 Cython 模块可使用比 Python 更高效的协议与之进行通信。
可用 cimport 关键字将 .pxd 文件导入 .pyx 模块文件中。
.pyx文件
.pyx 文件是由 Cython 编程语言 “编写” 而成的 Python 扩展模块源代码文件。
.pyx 文件类似于 C 语言的 .c 源代码文件,.pyx 文件中有 Cython 模块的源代码。
不像 Python 语言可直接解释使用的 .py 文件,.pyx 文件必须先被编译成 .c 文件,再编译成 .pyd (Windows 平台) 或 .so (Linux 平台) 文件,才可作为模块 import 导入使用。
.pyd文件
.pyd 文件是非 Python,由其它编程语言 “编写-编译” 生成的 Python 扩展模块。
Python 要导入 .pyd 文件,实际上是在 .pyd 文件中封装了一个 module。在 python 中使用时,把它当成 module 来用就可以了,即:“import 路径名.modulename” 即可,路径名为 .pyd 文件所在的路径。
Python的.py与Cython的.pxd.pyx.pyd 文件格式之间的主要区别
关于 .pyx文件的编译和导入
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = 'dtw',
ext_modules=cythonize('./dtw.pyx')
)
from distutils.core import setup
from Cython.Build import cythonize
import numpy as np
setup(
name = 'dtw',
ext_modules=cythonize('./dtw.pyx'),
include_dirs=[np.get_include()]
)
#注意此处python版本要和工程所用一致
python3 setup.py build_ext --inplace
import pyximport
pyximport.install()
import dtw
python使用ctypes调用第三方库时出现undefined symbol分析