Build Your Own Git Server
当我们在做团队项目时,如果需要进行代码管理而代码又不方便开源上传到 Github,则有两种方法可以满足多人协作以及代码版本管理的需求:
升级Github企业用户
搭建自己的代码托管服务器
下面主要介绍如何搭建自己的代码托管服务器。
远程服务器准备工作
创建 git 用户
创建一个新的 git 用户专门用于管理远程 git 代码仓库,可以防止 git 用户的配置文件与当前用户的配置文件发生冲突。
12sudo adduser git # 创建 git 用户su git # 切换到 git 用户下
创建远程仓库
在远程服务器中, 需要创建项目代码仓库文件夹,然后在该文件夹下初始化一个空的代码仓库:
123mkdir -p ~/Repositories/Project.git # 创建文件夹cd ~/Repositories/Project.git # 进入到仓库文件夹git init --bare # 初始化一个空仓库
免密码提交
在创建了远程仓库后,已经可以通过 git clone ssh://server.ip:/path/to/*.git 的命 ...
Differences in Serveral Executable Commands in Linux
In Linux, there are several commands to execute shell scripts such as bash, source, sh, ./. So, what are the differences of them?
source
1source a.sh
Execute the specified shell script in current bash, and the executable authority of this script is unneccesary. Besides, . equals source:
1. a.sh
bash/sh
12sh a.shbash a.sh
Execute the specified shell script in the subshell, and the executable authority of this script is also unneccesary.
./
1./ a.sh
Execute the specified shell script in the subshe ...
How to Use Bibtex and Latex in Sublime Text
Before using Latex in Sublime text 3, latex release should be installed in your computer. TeX Live in an
excellent release version which can be instlled in Unix, Windows and Mac. Please read documents in its website to install TeX Live.
Download link: TeX Live
Latex Tools
In order to use TeX Live in sublime text 3, a plugin named LaTeXTools should be installed first. Use ctrl+shift+P to open command line
in sublime text 3 and use the package control plugin to instll LaTexTools.
Open LaTexTools.s ...
Kalman Filter
Kalman filter is a technology to achieve Bayes filter. It’s an optimal linear state estimation method (eqauls to optimal linear filter under the minimum mean square error criterion), which seeks the state vector that best fits the observed data by mathematical methods.
In localization and navigation of robots, kalman filter is the most commonly used method to estimante the robot’s status, as it solve the problem recursively and only the estimation value in the last sampling period and the meas ...
Bash Scripts Exploration
What is bash script?
Bash is a Unix shell, which is a command line interface(CLI) for interacting with the operating system(OS).
Bash script which contains command lines can be run in Bash and finish extremely excellent work.
Prepared work
Create a bash script
In Linux operating system, suffix name is not necessary so that we can name the bash script whatever we want. For example, we can create a folder named scripts and
a bash script named experiment in it.
123mkdir scriptscd scriptstouch exper ...
ROS Launch Exploration
在 Ros 中,要启动多个节点的时候,如果要一个一个节点的去启动,将十分麻烦而且浪费时间。因此 Ros 提供了 roslaunch 方法来同时启动多个节点。roslaunch 在启动任何一个节点前,都会确定 roscore 节点是否已经在运行,如果没有则自动启动它。
要使用 roslaunch 方法,首先需要编写 .launch 文件,该文件以 xml 的格式编写。
Basic knowledge
roslaunch 启动多个节点的时候,无法控制节点的启动顺序。因此,如果需要顺序启动节点的话,可以使用bash script来控制节点的启动。
launch 文件的存放位置并不做要求,也就是说一个launch文件可以启动多个 workspaces 内的多个 packages。但是在使用 roslaunch 命令调用 launch 文件之前,必须通过 source ws/devel/setup.bash 将该 workspace 加入到环境变量中,
否则会出现 Package not found 的错误。
因此,推荐的运行 launch 文件的方式为:
123# In launch file ...
Basic Operation of Git and Git Flow Strategy
Basic Operation of Git
Fundamental Conception
Git 是一个很强大的代码版本管理软件,通过使用 Git 我们可以很方便地管理我们的代码,包括撤销操作,回退到某个版本,临时修改代码等。
Git 有四个基本空间,名为工作区(working directory),暂存区(stage),本地仓库(local repository),
远程仓库(remote repository)。
工作区
就是电脑里的代码目录,所有的操作都在此处进行。
暂存区
也叫 index ,我们 git add 后的信息会被存放到此处,一般用于我们在开发过程中遇到另外的情况需要恢复
到未修改的代码状态,但是又想保留已经更改的代码下次开发时,可以将修改的内容放到暂存区。
本地仓库
Git 的版本库,通过本地仓库我们可以实现回退代码到某个版本的操作。
远程仓库
服务器端的版本库,通过git push, git pull指令进行本地仓库和远程仓库的同步。
Common Commands
提交
日常最常用的指令就是修改代码后将修改提交到代码库。
12git add . ...
C++ Debug in Linux through GDB
Prerequisite
修改 CMakelists.txt
Linux 下为了使用 GDB 调试 C++ 项目,在编译的过程中需要加入 -g -ggdb 参数,而习惯上我们使用 CMakelists 来生成 Makefile , 因此我们需要修改 CMakelists.txt 来生成符合条件的 Makefile 。
首先在 CMakelists.txt 中加入以下内容:
12345# The configuration used for construction of Debug MakefileSET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")# The configuration used for construction of Release MakefileSET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
加入这两行的之后,我们就可以分别用不同的命令调用不同的CM ...
A Kinematic Simulator of Autonomous Vehicles in Pygame
Pygame Initialization
在使用PyGame模块的所有功能之前,应当使用pygame.init()初始化 PyGame。
使用pip安装好对应版本的PyGame, 创建一个新的 main.py文件,并输入以下代码初始化 PyGame。
12345678910import pygame# For using key value of keyboardfrom pygame.locals import *def main(): pygame.init()if __name__ == "__main__": main()
Pygame Object Construction
Screen Object
初始化 PyGame 后,第一件事情应该是创建一个屏幕对象用以显示接下来仿真环境所需要的各种对象。在使用面向对象的编程方法中,可以设置一个Game的类用于存放 PyGame 的各种对象,屏幕对象也以成员变量的方式存放在其中。
12345678910111213class Game: def __init__(self): p ...
Configuration and Bundle Management of vim
Vim是一个高度可配置的文本编辑器,旨在使创建和更改任何类型的文本非常高效。在大多数UNIX系统和Apple OS X中,它都包含为“ vi”。
Configuration
Vim 安装
Ubuntu 默认安装了vim-tiny,在终端中输入vim --version可以查看当前vim的版本。要安装完整版的vim,在bash中输入
sudo apt-get install vim-basic 即可。
Vim 更新
目前最新的vim 版本是8.1,在终端中添加ppa源后即可更新vim。
123sudo add-apt-repository pa:jonathonf/vimsudo apt updatesudo apt install vim
Vim 基础配置
创建~/.vimrc,在该文件内加入相关vim的配置。
12345678910111213141516171819202122232425262728293031323334"""""""""""""&q ...