kubectl常用用法
kubectl是Kubernetes集群管理器的命令行工具,使用kubectl可以在Kubernetes上部署和管理应用程序。 使用kubectl,可以检查集群资源;创建,删除和更新组件。
更多kubectl参考:https://kubernetes.io/docs/reference/kubectl/overview/
kubectl常用命令
查看集群信息
1 | kubectl cluster-info |
查看资源信息
1 | kubectl get nodes # 查看node信息 |
【转载】Python的GIL
GIL是什么
首先需要明确的一点是GIL
并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。
就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。
有名的编译器例如GCC,INTEL C++,Visual C++等。
Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行。
像其中的JPython就没有GIL。然而因为CPython是大部分环境下默认的Python执行环境。
所以在很多人的概念里CPython就是Python,也就想当然的把GIL归结为Python语言的缺陷。
所以这里要先明确一点:GIL
并不是Python的特性,Python完全可以不依赖于GIL。
Requests源码解析
年终岁尾,也没心思写代码了,后来想想,看看requests源代码吧~
setup.py
首先看这一段代码:
1 | if sys.argv[-1] == 'publish': |
当执行python setup.py publish
时会自动编译并上传分发包,
咱们在编写分发包时可以参考这种写法,不过可以优化,我们只上传当前版本的分发包即可。
1 | if sys.argv[-1] == 'publish': |
再看这一段代码:
1 | about = {} |
这段代码有两个写的好的地方:
- 将一些公共配置信息放到了
requests/__version__.py
文件中; - 在执行
setup.py
时不会引入不必要module。
Python的with语句块
WITH语句块用于使用上下文管理器定义的方法。语法结构如下:
1 | with_stmt ::= "with" with_item ("," with_item)* ":" suite |
我们经常会用到文件读写:
1 | f = open("a.txt", "r") |
使用with语句块可以这么写:
1 | with open("a.txt", "r") as f: |
验证码识别
使用Google’s Tesseract-OCR Engine来做验证码识别。
安装Tesseract
参考Install Tesseract via pre-built binary package安装Tesseract。
识别验证码
识别验证码可以按照以下步骤进行:
- 处理验证码图片
- 去掉背景,有些验证码背景是纯色背景,这样的验证码我们可以先去掉背景色
- 去噪/干扰线,去掉噪点以及干扰线,有些干扰线是1像素宽度,这样可以使用去噪点的方式去除干扰线
- 二值化,将图片做二值化处理
- 图片切割,将图片切分成单个字符的小图片,也可不切割
- 识别验证码
Python图片识别
使用Google’s Tesseract-OCR Engine来识别图片。
安装
安装Tesseract
参考Install Tesseract via pre-built binary package安装Tesseract。
安装pytesseract
直接使用pip命令安装:
1 | pip install pytesseract |
Quickstart
1 | try: |
Python解包
昨天有个Python初学者问了一个问题:
1 | def test(a, b, c): pass |
这里用到了一个解包的概念,可以直接使用test(*(1, 2, 3))
。
解包可迭代对象
在Python中,可迭代对象都可以解包,如str、list、tuple、set、生成器、迭代器…
1 | >>> a0, a1, *args, a_1 = "Hello world!" # 解包str |
使用Nodejs编写命令行工具
编写命令行工具
创建一个项目
直接使用npm init
初始化一个项目,package.json
文件内容如下:
1 | { |
创建可执行程序
创建文件bin/nb-cli
,内容如下:
1 | #!/usr/bin/env node |
Python命令行参数解析:argparse
Python标准库中自带了一个argparse模块,这个模块用来解析命令行参数。 当然,python还自带了另外两个库用来实现同样的功能:getopt、optparse。
基本用法
一个最简单的例子如下:
1 | # prog.py |
执行这段代码,结果如下:
1 | $ python3 prog.py |