Recap The TDD Process

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


We’ve now seen all the main aspects of the TDD process, in practice:

  • Functional tests
  • Unit tests
  • The unit-test/code cycle
  • Refactoring

What does the overall TDD process look like?

  • We write a test.
  • We run the test and see it fail.
  • We write some minimal code to get it a little further.
  • We rerun the test and repeat until it passes (the unit test / code cycle)
  • Then, we look for opportunities to refactor our code, using our tests to make sure we don’t break anything.
  • And start again from the top!

More...

解决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...

请我喝杯咖啡吧~

支付宝
微信