存档
python 保存项目用到的包名生成requirements.txt
安装:pip install pipreqs
在项目根目录下,打开控制台,输入:
pipreqs ./ –encoding=utf8
加–encoding=utf8为了避免编码错误
安装 .Net 6
在以前 .net core 出来的时候,我没有上车,现在MS又释放了新的 .Net 6,是时候看看具体怎么玩的了。
以前在香蕉派上都是通过 mono-complete 来安装完整的 mono 运行时的,现在就给卸载了。
首先可以通过访问 https://dotnet.microsoft.com/en-us/download/dotnet 来查看最新的版本,以及下载地址。好在MS官网提供了 arm32 的版本。
下载完成后,运行下面的命令:
创建目标文件夹
sudo mkdir /usr/local/dotnet
解压缩文件
sudo tar zxf dotnet-sdk-6.0.101-linux-arm.tar.gz -C /usr/local/dotnet
创建软链接
sudo ln -s /usr/local/dotnet/dotnet /usr/bin/dotnet
增加环境变量
sudo nano /etc/profile
export DOTNET_ROOT=/usr/local/dotnet
export PATH=$PATH:/usr/local/dotnet
验证结果
dotnet --info
是不是很简单,像 golang 的安装方式一样。
Git commit 的提交约定
想要使用 bamboo 自动生成 changelog 文件,检索了下发现已经有现成的方式,即大家约定 git commit message 的格式。
<type>(<scope>): <subject>// 空一行<body>// 空一行<footer>
其中,Header 是必需的,body 和 footer 可以省略。任何一个部分建议长度不要太长避免自动换行。
Header 是必需的,只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)
(1)type
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
如果type为 feat 和 fix,则该 commit 将肯定出现在 Change log 之中。其它类型(docs、chore、style、refactor、test)可以不用放。
(2)scope
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
(3)subject
subject是 commit 目的的简短描述,不超过50个字符。以动词开头,使用第一人称现在时,比如change,而不是changed或changes;第一个字母小写;结尾不加句号(.)
Body 部分是对本次 commit 的详细描述,可以分成多行。
Footer 部分只用于两种情况。一:不兼容变动,如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。二:关闭 Issue,如果当前 commit 针对某个issue,那么可以在 Footer 部分标记关闭这个 issue 。
git 仓库强制切换更新
在本地添加了各种测试代码,或者解决冲突失败的情况下,想要完全放弃本地的任何改动(包括已经提交但未推送的变动),直接从远端获取最新的代码记录,可以采用下面的命令。
简单、暴力、好用。
git fetch –all
git reset –hard origin/master
git pull
pm2
最近无意间发现了 PM2 这个工具,它是 node的进程管理工具,可以用来简化node应用的相关任务,例如自动重启、负载均衡等,而且使用也比较简单。
在安装了 nodejs后,只需要 npm install -g pm2 来全局安装PM2即可。
常见命令:
pm2 start PATH
pm2 status
pm2 stop APP_ID
在启动的时候,有一个 -i 参数需要提下,该参数表明启动的实例,可用于负载均衡。如果是传递 0 或者 max,则表示根据机器当前CPU核数来确定实例数目。
git 删除远程仓库的错误提交
在使用git提交代码的时候,有时候处于某些原因,希望撤回远程仓库里的记录,例如:
– 代码错误,影响编译或者产生bug
– 测试代码错误提交
– 敏感信息提交
– 内容或者作者信息错误或者不完善
那么对应的方式可以怎么做呢?首先我们可以运行:git reset --hard HEAD~n
这里的数字n就是你想回滚的提交数,最近的一次的提交就写1,其次就写2,以此类推。运行后,就会提示 HEAD is now at commit xxxx。
再强制推送到远端git push --force
然后远端的内容就更新了,需要注意的是,如果在你原始的提交后,别人也提交了内容,那么在经过操作后,对方的内容也随之消失了。
表格文本
最近要实现一段代码逻辑,里面涉及到了好几个条件。最后整理出一个表格,但是感觉应该把这个表格作为注释放到代码文件里,方便后来的维护人员。
可是找了好久都没有找到这样的工具,后来终于被我无意间给发现了,分享给大家。
查看文件和文件夹被什么程序使用
有时候经常发生要删除、移动、重命名文件夹/文件的时候,系统提示有程序正在使用,导致操作无法继续。
不妨按照下面的方式:
- 打开资源监视器
- 选择 “CPU”标签页,可以看到下面第三行“关联的句柄”,里面还有个搜索框
- 在搜索框里输入受影响的文件夹名称,回车等待一段时间
- 下面列表就会显示具体是哪个进程在占用
这个还是蛮方便的,不需要使用 Unlocker 之类的第三方程序。
Firefly安装opencv4
在 Firefly 通过编译安装的升级 python 的时候,编译始终有些乱七八糟的错误。一气之下,就更新了固件到 Ubuntu 18.04 系统上,再编译升级报错就少了很多,一点点终于升级成功了。
可是按照网上的操作安装 opencv-python 时总是提示找不到,怀疑是这个并没有针对 ARM 的版本吧。使用 python-opencv 只有 2.7 的可以安装上。
只好通过网上的帖子,编译安装 opencv,当前最新的版本是 4.3,按照这里,还有这里。经过漫长的等待,虽然有很多警告,不过终于是安装成功了。
先下载最新的版本
wget https://github.com/opencv/opencv/archive/4.3.0.tar.gz
然后解压缩 tar zxvf opencv.4.3.0.tar.gz
进入到其目录,并创建 build 子目录
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE ..
make -j4
sudo make install
最后可以使用 import cv2 来验证
网上的帖子里说在使用 cmake 时传递的参数会导致很多错误,所以就直接使用了最少的参数。好在没有什么问题。