巧用git submodule子模块,轻松维护大项目
项目中如果经常需要使用一些子模块,子模块可以单独独立成为一个仓库,由专人维护。使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。这就需要使用Git的submodule功能。
公司一些大项目,依赖很多其他的子项目。而且这些子项目,被用在多个大项目中,就中情况,就需要使用了git submodule子项目功能。判断项目是否使用了该功能,可以查看项目根目录,是否存在了一个.gitmodule文件。
官方介绍https://git-scm.com/docs/git-submodule
使用子模块的添加添加子模块非常简单,命令如下:
1git submodule add <url> <path>
其中,url为子模块的路径,path为该子模块存储的目录路径。
执行成功后,git status会看到项目中修改了.gitmodules,并增加了一个新文件(为刚刚添加的路径)
子模块的使用克隆项目后,默认子模块目录下无任何内容。需要在项目根目录执行如下命令完成子模块的下载:
12git submodule initgit submodule ...
kdevtmpfsi挖矿病毒
最近阿里云服务器安全警告,提示发现蠕虫病毒,查找了相关资料,发现是被注入了挖矿病毒。
kdevtmpfsi:挖矿程序,会占用服务器的内存与流量,无故内存爆满、流量跑满,如果是云服务器严重的还会被官方停封机器。
病毒原理腾讯安全威胁情报中心捕获H2Miner挖矿蠕虫新变种,这篇文章详细介绍了挖矿病毒的攻击原理。
其主要利用的漏洞如下:
Redis未授权RCE;
Solr dataimport RCE(CVE-2019-0193);
Hadoop Yarn REST API未授权RCE(CVE-2017-15718);
Docker Remote API未授权RCE;
ThinkPHP5 RCE;
Confluence 未授权RCE(CVE-2019-3396);
SaltStack RCE(CVE-2020-11651)
恶意进程(云查杀)-蠕虫病毒
问题描述top查看cpu占用情况,会发现服务器CPU资源占用一直处于100%的状态。
Linux服务器出现名为kdevtmpfsi的进程,占用高额的CPU、内存资源。
单纯的kill -9 进程ID, 无法完全杀死,不久就会复活。
cron ...
python使用pip.req错误
今天使用Docker build 一个Python项目时,提示错误。查询相关资料,记录如下。项目使用requirements.txt文件,放置环境依赖,但是使用会导致pip.req提示失败。尝试修改后成功。结论:避免在requirements.txt文件中放置任何依赖项链接。而是使用下面提到的方法。您可以直接将依赖项链接放入setup.py文件中。
源码12345678910111213141516#from pip.req import parse_requirementsfrom pip._internal.req import parse_requirementsinstall_reqs = parse_requirements('requirements.txt', session=False)install_requires = [str(ir.req) for ir in install_reqs]setup(name='chumpy', version=get_version(), packages = ['c ...
Go使用CGO调用C语言
C语言作为一个通用语言,很多库会选择提供一个C兼容的API,然后用其他不同的编程语言实现。
Go语言通过自带的一个叫CGO的工具来支持C语言函数调用,同时我们可以用Go语言导出C动态库接口给其它语言使用。
要使用CGO特性,需要安装C/C++构建工具链,在macOS和Linux下是要安装GCC,在windows下是需要安装MinGW工具。同时需要保证环境变量CGO_ENABLED被设置为1,这表示CGO是被启用的状态。在本地构建时CGO_ENABLED默认是启用的,当交叉构建时CGO默认是禁止的。比如要交叉构建ARM环境运行的Go程序,需要手工设置好C/C++交叉构建的工具链,同时开启CGO_ENABLED环境变量。然后通过import "C"语句启用CGO特性。
调用C标准库函数1234567891011121314151617181920package main/** * 调用 C 语言<stdio.h>头文件 * //#include <stdio.h> 这里不能有空行 import ( " ...
Mac下使用opencv(2020)
背景因为工作需求,本人要在MAC端使用OpenCV实现一些视觉功能,配置环境成了最大的阻碍,网上查了很多相关资料和博客,都因为版本环境问题屡试屡败,不过经历重重尝试,笔者最终还是配置成功并运行了自己的源码.当然成功的关键还是因为笔者站在了巨人的肩膀上,借鉴了很多网上的教程
安装opencv可以通过源码安装,但mac上使用brew安装更加方便
12345brew search opencv# 最新版本是opencv4,这里安装openc@2brew install opencv@2#安装成功后查看brew info opencv@2
显示相应信息
12345678910111213141516171819202122232425opencv@2: stable 2.4.13.7 (bottled) [keg-only]Open source computer vision libraryhttps://opencv.org//usr/local/Cellar/opencv@2/2.4.13.7_11 (278 files, 35.1MB) Poured from bottle on ...
Python使用aruco实现相机标定
姿态估计在许多计算机视觉的应用中都是十分重要的环节,在机器人导航、增强现实等场景中广泛运用。这个过程主要基于找到点在真实3d环境中的坐标和2d图像中的对应坐标。这通常是一个比较困难的步骤,因此运用通用的标记物或者标准标号来使这个问题简单一点。
ArUco简介ArUco是一个开源的微型的现实增强库,目前好像已经集成在OpenCV3.0以上的版本内了,它除了用于现实增强,还很用于实现一些机器视觉方面的应用,上图中的波士顿动力也曾用此方法用于Atlas的视觉定位,下面是两个重要的网址:
ArUco下载地址:ArUco下载(可以下载2.0.19或3.0.0)
ArUco的Marker生成网址:Marker生成(可以定制Marker的size、ID以及Padding)
ArUco开源库的几个特点如下:
1.基于C++;
2.仅依赖于OpenCV(≥2.4.9)和Eigen3(源码中已经包含);
3.BDS开源。
Demopip install opencv-contrib-python才有扩展模块,扩展模块中包含aruco
123456789101112131 ...
Python使用dlib实现人脸检测
前期准备在开始之前,你得先做如下准备:
opencv 这个一般没啥问题,通过pip install opencv-python安装即可。
dlib 安装dlib之前需要安装好cmake,之后再通过pip install dlib安装,如果报错的话,再自行百度吧,我是折腾了一下午才弄好。
下载dlib提供的检测模型文件 下载地址:http://dlib.net/files/ 文件名shape_predictor_68_face_landmarks.dat
人脸检测单一图片代码部分实现起来非常简单,不过十几行的事,不过需要注意的是,通过cv2.imread读取的图片是BRG通道的,需要转成RGB通道,不然通过pyplot显示图片会变色。
1234567891011121314151617181920212223242526272829303132333435#!/usr/bin/env python2#-*- coding:utf-8 -*-import cv2import dlibimport matplotlib.pyplot as pltimport numpy as nppre ...
Mac OS X:Python is not installed as a framework解决方案
今天运行一段python代码时出错。
报错信息:
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of ‘python’ with ‘pythonw’. See ‘Working with Matplotlib on OSX’ ...
远程桌面连接Ubuntu
由于今年疫情影响,有些时候,我们需要远程开发。不在办公室,需要安装开发软件,搭建服务等,很多时候不方便。
这样我们就需要一个远程桌面,远程连接到公司电脑开发。有很多远程连接工具,例如使用TeamViewer,qq等。
如果我们远程系统是Ubuntu,我们也可以使用vnc连接。在办公室电脑中安装vnc服务端,然后在远程电脑中再安装一个客户端,就可以像在公司一样,使用自己电脑开发了。
服务端在Ubuntu上安装x11vnc
123456789sudo apt-get install x11vnc# 配置vnc密码x11vnc -storepasswd# 启动vnc服务, 如果提示~/.vnc/passwd 读取权限错误,需要使用sudox11vnc -forever -shared -rfbauth ~/.vnc/passwd
查询服务器的ipd地址
1ifconfig
当然使用后台执行,更加方便
1nohup x11vnc -forever -shared -rfbauth ~/.vnc/passwd
客户端下载客户端
https://www.realvnc.com/en/conn ...
Go 实现简易web框架
用 Go 实现一个 http server 非常容易,Go 语言标准库 net/http 自带了一系列结构和方法来帮助开发者简化 HTTP 服务开发的相关流程。因此,我们不需要依赖任何第三方组件就能构建并启动一个高并发的 HTTP 服务器。
基于 HTTP 构建的服务标准模型包括两个端,客户端 (Client) 和服务端 (Server)。HTTP 请求从客户端发出,服务端接受到请求后进行处理然后将响应返回给客户端。所以 http 服务器的工作就在于如何接受来自客户端的请求,并向客户端返回响应。
Demo1123456789101112131415package mainimport ( "fmt" "net/http")func HelloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World")}func main () { http.HandleFunc(" ...