搭建Gitlab CI
因组内算法开发工作需要搭建一套Gitlab CI实现算法底库的自动化编译和Linux端/车机端离线测试,这里记录一下踩过的坑🤣
🌵 简介
GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:
Continuous Integration (CI) 持续集成
Continuous Delivery (CD) 持续交付
Continuous Deployment (CD) 持续部署
持续集成的工作原理是将小的代码块推送到Git仓库中托管的应用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,然后再将其合并到主分支中。
持续交付和部署相当于更进一步的CI,可以在每次推送到仓库默认分支的同时将应用程序部署到生产环境。
这些方法使得可以在开发周期的早期发现bugs和errors,从而确保部署到生产环境的所有代码都符合为应用程序建立的代码标准。
GitLab CI/CD 由一个名为 .gitlab-ci.yml 的文件进行配置,改文件位于仓库的根目录下。文件中指定的脚本由GitLab Runner执行。
🌵 基 ...
Git Memo - 使用submodule
当你所开发的repo需要使用另外一个repo时,你可以使用submodule对需要使用的repo进行管理。
🌵 为当前repo添加submodule
1234git submodule add <url> <path> # 将repo作为submodule添加到path中git submodule update --init # 获取submodule的内容# git submodule update --init --recursivegit commit -m "Add submodule xxx at path xxx"
--recursive的作用是,不仅仅获取submodule的内容,同时还会递归的获取submodule’s submodule的内容。
在添加submodule后,git会创建/修改.gitmodules文件,同时修改.git/config文件:
123456789# .gitmodules[submodule "third_party/googletest"] ignore = dirty path = third_pa ...
Git Memo - 常用命令
🌵 Generate Key
生成ssh所需要的key
1ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
🌵 git config
对git进行配置,配置可以作用于当前repo,也可以配置为全局的。常用的有配置git的username和email。
⁋ 显示当前的username和email
12git config user.namegit config user.email
⁋ 配置当前repo的username和email
1234# namegit config user.name# emailgit config user.email
⁋ 配置全局的username和email
1234# usernamegit config --global user.name "<your name>"# emailgit config --global user.email "<your email>"
在命令中的--global参数表明是对全局进行配置。
⁋ 配置vim为git默认编辑器
1git ...
vscode - 调试配置
最近在工作中使用C++开发框架,期间需要进行debug,所以学习了下如何在vscode中配置相关编译和调试的配置。
🌵 vscode配置c++开发环境
vscode使用三种文件实现对c++开发的环境管理、编译和调试
c_cpp_properties.json:C++开发环境的管理
tasks.json:编译过程的配置
launch.json:调试配置
⁋ 熟悉vscode c++配置中的常用的变量
${workspaceFolder}:当前工作区目录
⁋ 创建c_cpp_properties.json
快捷键:command + p,选择> C/C++: Edit Configuration(UI)
Linux Memo - 命令行挂载U盘
使用命令行挂载U盘需要3步:
找到插入的U盘的设备名
挂载,之后使用
安全弹出
🌵 Step1 找到U盘的设备名
找到插入的U盘的设备名有很多种方法,rivergold推荐的最简单和直接的方法为:
1dmesg # 根据输出信息查看设备名
🌵 Step2 挂载
12mkdir /media/xxx/xxxsudo mount /dev/sdx1 /media/xxx/xxx
🌵 Step3 安全弹出
12udisksctl umount -b /dev/sdx1udiskctl power-off -b /dev/sdx
References:
博客园: Linux系统下查看USB设备名及使用USB设备
Stackoverflow: What is the Command Line Equivalent of “Safely Remove Drive”?
使用Hexo搭建博客
之前是使用jekyll搭建的博客,但是总有些不太满意的地方,也因为自己对Ruby不了解,所以决心将博客迁移至Hexo进行搭建,这里记录下自己的一些经验。
🌵 Hexo基础命令
⁋ 创建草稿
1hexo new draft <title>
⁋ 发布草稿
1hexo publish post <title>
⁋ 本地预览
1hexo clean && hexo s -p <端口号> --draft
--draft: 对_drafts下的文章也进行预览
⁋ 部署github pages
首先,需要在_config.yaml进行部署相关的配置:
123456789# Deployment## Docs: https://hexo.io/docs/one-command-deploymentdeploy: type: git repo: <Github仓库ssh链接> # example, git@github.com:xxx/xxx.github.io.git branch: <分支名> # example ...
使用Flask搭建文件服务器
远程开发时经常需要查看服务器上的图片、视频,有一个支持下载和上传的文件服务器还是很方便的。搭建文件服务器的方式有很多,例如基于 Apache,Nginx 等,本文介绍使用 Flask 和 Python 构建自己的小型文件服务器,方便日常开发使用。
作为一个算法工程师,前端、后端开发确实不是强项,实现的都是基础功能,如有不足之处还望见谅。
🌵 目录功能
关于如何在 Flask 上快捷的实现文件目录功能,我调研了很久。终于在 stackoverflow 上发现了一个不错的 Flask 插件Flask-AutoIndex,即插即用,nice!
⁋ 安装 Flask-AutoIndex
1pip install Flask-AutoIndex
⁋ 为 app 或者 blueprint 添加 autoindex 功能
Flask-AutoIndex 的使用很简单,主要代码如下
123456789import os.pathfrom flask import Flaskfrom flask_autoindex import AutoIndexapp = Flask(__name__)AutoIn ...
Python包发布PyPi教程
rivergold最近开发了几个包,希望将它们到PyPi从而可以通过pip一键安装,总结了一份教程share给大家。
🌵 核心步骤
总结起来主要分为5个步骤,分别为:
Write your package code and test it.
Write setup.py
Build wheel
Config pypirc
Upload into PyPI
下面以rivergold写的rutils包(一个集合了日常图像开发常用的小工具的包)作为样例,依次对以上步骤详细介绍下。
🌵 Step-1 Write your package
You need to manage your code as a Python package. Here is an example:
12345678910111213141516rutils├── CHANGELOG.md├── LICENSE├── README.md├── rutils│ ├── common.py│ ├── __init__.py│ ├── time. ...
FFmpeg命令收集
FFmpeg collection and memo.
🌵 Install
Use Static BuildPython PackageBuild from SourceThis is the simplest and least error-prone method to install ffmpeg.
Get builds from FFmpeg.ory, and set your shell PATH.Note that pip install opencv-python install OpenCV has some problems like not support x264. Better use following way to install OpenCV.
12conda install x264=='1!152.20180717' ffmpeg=4.0.2 -c conda-forgeconda install opencv
注意: 使用上述命令安装支持读写 x264 的 OpenCV,之后再删除通过 conda 安装的 ffmpeg,改为静态库版本。因为通过 c ...
Linux网络配置
日常开发基本都是在Linux上个进行的,有一个好的开发环境至关重要。rivergold整理一份关于Linux网络配置的笔记,主要包括以下内容:
防火墙配置
设置静态IP
代理配置
使用Flask搭建简易的文件服务器
NFS远程挂载
🌵 Linux防火墙命令
不同的Linux发行版有各自不同的防火墙命令,这里主要介绍两种:
Ubuntu:ufw
CentOS:firewall-cmd
⁋ 安装
UbuntuCentOS1sudo apt install ufw1yum install firewalld firewall-config
⁋ 启动
UbuntuCentOS1sudo ufw enable12sudo systemctl enable firewalld.servicesudo systemctl start firewalld.service
⁋ 关闭
UbuntuCentOS1sudo ufw disable12sudo systemctl stop firewalld.servicesudo systemctl disable firewalld.servic ...