解决Docker打包报错问题

背景


报错:

ERROR: failed to solve: nginx: blob sha256:cd64407576751d9b9ba4924f758d3d39fe76a6e142c32169625b60934c95f057 expected at /media/richard/N1/data/docker/buildkit/content/blobs/sha256/cd64407576751d9b9ba4924f758d3d39fe76a6e142c32169625b60934c95f057: blob not found: not found



解决方案


清除缓存:

1
sudo docker system prune -a --force

对应 -a 删除全部未使用的镜像,-f 或 --force 不经过确认强行删除。

再检查一下缓存情况,使用命令

1
sudo docker system df

About Comments and TDD

From《Test-Driven Development with Python, 3rd Edition》by Harry Percival

When I first started at Python Anywhere, I used to virtuously pepper my code with nice descriptive comments. My colleagues said to me: “Harry, we have a word for comments. We call them lies.” I was shocked! I learned in school that comments are good practice?

当我第一次开始使用 Python Anywhere 时,我常常用漂亮的描述性注释来填充我的代码。我的同事对我说:“哈利,关于注释我们有话要说。我们称之为谎言。”我很震惊!我在学校学到注释是很好的做法?

They were exaggerating for effect. There is definitely a place for comments that add context and intention. But my colleagues were pointing out that comments aren’t always as useful as you hope. For starters, it’s pointless to write a comment that just repeats what you’re doing with the code:

他们为了效果而夸大其词。肯定有一个地方可以发表评论来添加上下文和意图。但我的同事指出,评论并不总是像你希望的那样有用。对于初学者来说,编写只是重复您对代码所做的事情的注释是没有意义的:

1
2
# increment wibble by 1
wibble += 1
More...

产品笔记:好产品与“人性原罪需求”理论

2018年的老文章,记录学习一下,原文

一、产品是什么(Product)

首先,我们来谈谈产品,“产品究竟是什么?”

1.产品指什么

(1)产品的定义

很多人对于产品的定义,都是什么APP啊,什么应用啊,这都是比较狭义上的对于产品的理解。外行的朋友对于产品的认知可能比较局限,产品的范围其实非常之广。

产品的广义概念可以通过很多资料得出:产品是指满足人们需求的载体。

(2)产品的作用(价值)

解决用户需求与商业需求。

产品存在我们生活的各个角落,如:你现在正在移动的鼠标、正在看着的电脑屏幕,也是属于产品范畴。包括:你所接触的这个网站、你所打开的这个软件、你在玩的这个游戏,也归属于产品范畴。

产品存在形式多得数不胜数,可能你会说两者都不一样:一个是由实物制作而成的,一个是用代码编写而成的。

其实他们的区别在于:产品的存在形态不同,但是相同点都是**“为了满足用户需求”**。

如:电脑解决了你上网、获取知识的需求;鼠标解决了你操作的需求;而网站,为你带来了你想要的视频资源;软件,让你的办公需求得到满足;游戏,满足你的娱乐需求等等。

其实我们只需要记住两点,便可以区分。“需求决定了产品的存在价值,而解决方法决定了产品的存在形态”。

而本篇文章内容主要围绕互联网产品来展开。

More...

Python管理虚拟环境安装 virtualenv

背景

记录一下virtualenv安装过程,这里只介绍Windows下的情况

安装:

终端(命令行)输入:pip install virtualenv

创建虚拟环境目录

终端(命令行)输入:python -m venv venv

其中,venv就是你创建的环境目录,创建成功后,你项目里会出现一个名为venv的文件夹。

注意:

①不创建目录直接激活的话会出现如下错误:

②后面的那个venv是可以自定义的文件夹名字

③不写文件夹名称会报错;

venv: error: the following arguments are required: ENV_DIR

这个错误提示表明在使用venv命令时缺少了必要的ENV_DIR参数。

venv是Python内置的用于创建和管理虚拟环境的模块,它需要指定一个目录作为虚拟环境的位置。

要创建一个新的虚拟环境,你需要提供一个目录路径作为ENV_DIR参数。

例如,以下命令将创建一个名为myenv的虚拟环境:python -m venv myenv

在这个例子中,myenv是虚拟环境的目录名,它将在当前工作目录中创建。

激活:

终端(命令行)输入:.\venv\Scripts\activate

其中,venv是你的虚拟环境名称。如果你的虚拟环境名称不同,请将命令中的venv替换为你的虚拟环境名称。

如果你的虚拟环境成功激活,你应该能够看到终端命令提示符的前面有(virtualenv名称)字样。

退出当前虚拟环境:

终端(命令行)输入:deactivate

删除虚拟环境:

直接删除venv目录即可

另外:

(1)Git Bash或Cygwin等Unix/Linux命令行终端,则可以继续使用“source”命令激活虚拟环境。在命令行终端输入:source venv/bin/activate

(2)问题:在pycharm终端,无法将“source”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

原因:“source”命令是Unix/Linux命令,在Windows命令行终端无法识别“source”命令。

在Windows下虚拟环境的激活用的是:.\venv\Scripts\activate

(3)问题:无法将“activate”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

原因:没有正确激活虚拟环境。

命令行导出Notion文章MD文件

痛点

我用笔记工具,很多时候都需要输出成文章发布。发布的时候,我得用 Markdown。很不幸,在 Notion 上,这个过程,从来就没有痛快过。虽然 Notion 从很早就提供 Markdown 导出,还包括子页面。但是导出来的结果,总是无法令我满意。导出的文件是个压缩包,还要手工解压,我就想找一个命令行工具来提高效率。

解决方案

找到了一个开源的Github 项目,叫做 notion2md

安装

它已经做成了 Python 的软件包,可以调用 Notion 的 API,帮助用户导出为更妥帖的 markdown 格式。

你只需要使用pip安装即可:

1
pip install notion2md
More...

英语单词辨析 - Principal or principle

Principal or principle

ref:原文

Principal:

Principal作为形容词意味着“最重要的”

The principal reason for the failure to take action was poor communication between government departments. (the most important reason)

我们可以将principal用作名词,指的是学校或大学的校长(尤其在美式英语中):

The college principal made a speech congratulating all the students who were graduating in that year.

Principle:

Principle是一个名词,意思是‘解释某事物或工作方式的规则或理论’或‘道德规则或准则’:

The scientific principles behind even the most complicated computer are relatively simple.

He seems to have no principles at all, and is only interested in money. (He has no moral rules or guidelines.)

Fail2Ban 排查错误

背景

Fail2Ban 安装完后( 参考 安装过程 ),用 systemctl status fail2ban 查看,发现报错:

1
fail2ban.service: Main process exited, code=exited, status=255

排查过程

首先查看 log:

1
sudo cat /var/log/fail2ban.log

发现日志为空,无线索。

有搜索了一下,可以通过下面命令查看系统log:

1
sudo journalctl -xe | tail -n 50

检查了一下,发现以下报错:

1
Failed during configuration: Have not found any log file for sshd jail

感觉是配置文件问题,搜索了一下,找到以下解决方案:

编辑jail.conf文件:

1
sudo vim /etc/fail2ban/jail.conf

找到 ‘backend = auto‘ 修改为 ‘backend = systemd

重启fail2ban 服务:

1
sudo systemctl restart fail2ban

发现还是报错,查了以下,需要手工创建log文件:

1
sudo touch /var/log/auth.log

该文件定义在 fail2ban.local 文件中

再次重启fail2ban 服务,问题解决:

1
2
3
4
5
6
7
8
9
10
> sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:

英语单词辨析 - As, because or since

Asbecause or since

ref:原文

概述:

As、because和since都是连词。As、because和since都用来引导从句。它们将某件事的结果和其原因联系起来。

结果 原因
He decided to go to the conference in Barcelona, as he was in Spain anyway.
Are you angry with me because I opened the letter?
Bilardo coaches his team by telephone since half of them play in Italy, France or Spain.

Because:

Because" 比 “as” 和 “since” 更常用,无论是在写作还是在口语中。当我们使用 “because” 时,我们专注于原因:

She spoke quietly because she didn’t want Catherine to hear.

We’ll come over on Sunday because David’s got to work on Saturday.

我们经常将因为从句放在句子的开头,尤其是当我们想要特别强调原因时。我们在因为从句后面使用逗号:

Because breathing is something we do automatically, we rarely think about it.

在口语或非正式写作中,我们可以单独使用因为从句而不需要主句:

A: Would you like to go to school there?
B: Yes.
A: Why?
B: Because my best friend goes there. (I would like to go to school there because my best friend goes there.)

警告:

我们在正式写作中不单独使用because从句:

In 1998, the government introduced a new import tax because people were importing cars from abroad.
Not: … a new import tax. Because people were importing cars from abroad.

Cos

在非正式口语和写作中,我们经常将because缩写为cos /kəz/ 或 /kɒz/:

I’m laughing cos I’m so happy.

As and since

我们经常使用as和since当我们想更专注于结果而非原因时。As和since比because更正式。在主句之后的since前通常会用逗号:

I hope they’ve decided to come as I wanted to hear about their India trip.

They’re rather expensive, since they’re quite hard to find.

我们经常在句子开头使用as和since从句。在as或since从句之后使用逗号:

Since everything can be done from home with computers and telephones, there’s no need to dress up for work any more.

As everyone already knows each other, there’s no need for introductions. We’ll get straight into the business of the meeting.

我们在提出原因的问题中使用because,而不是as或since:

Are you feeling unwell because you ate too much?
Not: Are you feeling unwell since you ate too much? or … as you ate too much?

英语单词辨析 - "above" and "over"

背景

发现了一个英文单词辨析的网站,写得挺清楚的,搬运过来,同时翻译一下,加深印象。

“above” and “over”

ref:原文

共用情况:

当我们将above用作介词时,它表示“高于”。它的意思与介词over接近。在下面的句子中,可以用over代替above:

The waves came up above her head and she started screaming. (or … came up over her head …)

She is a nervous flier. But once the plane got above the clouds, she started to relax. (or … got over the clouds …)

区别1:

我们使用above而不是over来指代处于较高水平或高处的东西:

A ‘chalet’ is a small wooden building usually found in mountainous areas

Do they live in that chalet above the village?
Not: Do they live in that chalet over the village?

区别2:

当所指的事物之间没有接触时,我们通常使用above而不是over。over或on top of有着更加普遍的意义,可以用于一个事物接触或覆盖另一个事物的情况:

They made her comfortable and put a blanket over her.
Not: They made her comfortable and put a blanket above her.

区别3:

我们通常使用over而不是above来表示数字:

I get over sixty emails a day.
Not: I get above sixty emails a day.

If you weigh over 100 kilograms, then you may need to start a diet.
Not: If you weigh above 100 kilograms

特例:

当我们谈论与零或平均值相关的温度时,我们使用above而不是over:

It was three degrees above zero.
Not: It was three degrees over zero.

当我们谈论其他温度(非0或者平均值)时,我们可以使用above或over:

The temperature is already above 30 degrees. (or … over 30 degrees.)

典型错误:

  • 我们不使用over来表示“更高的水平”。(区别1)

Most of the race is 500 metres above sea level.
Not: Most of the race is 500 metres over sea level.

  • 当一样东西接触或覆盖另一样东西时,我们不使用above。(区别2)

Pour some cream over the tart and serve it warm.
Not: Pour some cream above the tart

  • 我们不使用above与数字搭配。(区别3)

Over 100 people complained about the programme.
Not: Above 100 people complained about the programme.

Fail2Ban - 网络入侵防御软件

Fail2Ban 是一款入侵防御软件,可以保护服务器免受暴力攻击,开源在 GitHub

介绍

简单来说,Fail2Ban 的功能就是可以记录登录失败(例如SSH,MySQL等服务)的次数,如果失败太多次就禁用登录的 IP,还可以邮件通知;这样可以防止短时间内有大量暴力破解。

注意:Fail2Ban 能够降低错误认证尝试的速度,但是它不能消除弱认证带来的风险。假如一款服务使用了弱密码,那么别人一猜就对了,那么 Fail2Ban 也无能为力。

安装Fail2Ban

1
2
3
# Ubuntu
sudo apt update && apt upgrade
sudo apt install fail2ban
More...

请我喝杯咖啡吧~

支付宝
微信