Python PEP 编程规范梳理
各种语言都有对应的编码规范, 以便让代码有一致的标准, 在实践中呢, 总会因为人员的新老更替,需要持续性的内部沟通分享, 尽量让所有成员朝着这一目标靠近.PEP
是 Python Enhancement Proposal
的缩写, 意为Python增强建议.
PEP 官方文档见: https://www.python.org/dev/peps/
各种语言都有对应的编码规范, 以便让代码有一致的标准, 在实践中呢, 总会因为人员的新老更替,需要持续性的内部沟通分享, 尽量让所有成员朝着这一目标靠近.PEP
是 Python Enhancement Proposal
的缩写, 意为Python增强建议.
PEP 官方文档见: https://www.python.org/dev/peps/
JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、垃圾收集这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法区(Method Area)、JAVA堆(Java Heap)、虚拟机栈(JVM Stack)、程序计数器、本地方法栈(Native Method Stack)这几部分组成。
在 Git 上工作的时候,你也许会由于某种原因想要修订你的提交历史。Git 的一个卓越之处就是它允许你在最后可能的时刻再作决定。你可以在你即将提交暂存区时决定什么文件归入哪一次提交,你可以使用 stash 命令来决定你暂时搁置的工作,你可以重写已经发生的提交以使它们看起来是另外一种样子。这个包括改变提交的次序、改变说明或者修改提交中包含的文件,将提交归并、拆分或者完全删除——这一切在你尚未开始将你的工作和别人共享前都是可以的。
git操作一般都支持两种协议:ssh/http(s), 默认情况下, 不管使哪种协议在进行git操作都将输入用户名和密码,这将导致整个使用体验非常差。我们希望仅仅输入一次用户名和密码, 甚至一次也不用输入。
在进行任何配置之前, 我们需要定义我们使用哪个用户和git代码库交互。使用git config
配置用户名和邮箱信息,如果你仅仅是用于当前工作目录,去掉 --global
选项,将仅在当前代码库生效。
git config --global user.email "xxx@xxx.com"
git config --global user.user"xxx"
设置git长期存储密码
git config --global credential.helper store
了解开源软件最好的办法是看开源软件的官方网站,对与GNU Autotools主要包含三个工具:Autoconf
、Automake
、Libtool
。
三个工具的官方文档地址见:
虽然文档多达几百页,但相对来说更系统和更完善,值得细细品读。
GNU软件的构建过程,一般来说, 包含三个步骤:
该过程一般依赖两个文件, configure和Makefile文件。
Autoconf/Automake就是一套用于自动构建configure脚本和Makefile文件的工具。
HTTP是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的Web文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。
重用已获取的资源能够有效的提升网站与应用的性能。Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间。借助 HTTP 缓存,Web 站点变得更具有响应性。
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。这样带来的好处有:缓解服务器端压力,提升性能(获取资源的耗时更短了)。对于网站来说,缓存是达到高性能的重要组成部分。缓存需要合理配置,因为并不是所有资源都是永久不变的:重要的是对一个资源的缓存应截止到其下一次发生改变(即不能缓存过期的资源)。
virtualenv is a tool to create isolated Python environments. Since Python 3.3, a subset of it has been integrated into the standard library under the venv module.
virtualenv是一个用于创建隔离Python环境的工具。从3.3版本开始, 标准库实现了virtualenv的一个功能子集,社区应该是考虑在标准库中集成virtualenv, 不过到目前为止,也近仅仅是个功能子集,完整的功能使用还是需要使用 pip 安装 virtualenv 包才行。
virtualenv主要是解决依赖冲突问题,如果操作系统版本的某个lib库版本较高, 和应用的低版本lib不兼容,那这时候在不影响系统python lib库的同时还能完美的支持应用的调试和使用,将非常方便python开发。也用于模拟不同的python版本环境, 比如Python 2X/3X, 这种大版本的不兼容问题隔离验证。
通过前面13篇文章,我们已经完全准备好了PXE的装机环境, 按PXE系列文章(9)- 优化 PXE 装机流程系统架构,我们需要实现带外管理的Driver以及带内执行逻辑的Agent.
开机
、关机
、重启
、PXE启动
、Disk启动
、Ping ILO Host
等等功能、主要是基于 ipmitool
命令来实现, 也提供了可插拔的机制来实现其他带外管理的能力,比如 iDRAC、Redfish、SNMP等,目前我们使用 ipmitool
能满足使用需求, 所以从实现上来讲仅实现 ipmitool
的支持就足够了。经常编写markdown需要引入一些代码块,需要定义Markdown支持的语言列表,这里列一下,需要的时候方便查找
Name | Markdown Label |
---|---|
.NET Console | dotnetcli |
ASP.NET (C#) | aspx-csharp |
ASP.NET (VB) | aspx-vb |
AzCopy | azcopy |
Azure CLI | azurecli |
Azure PowerShell | azurepowershell |
C++ | cpp |
C++/CX | cppcx |
C++/WinRT | cppwinrt |
C# | csharp |
C# in browser | csharp-interactive |
Console | console |
CSHTML | cshtml |
DAX | dax |
Docker | dockerfile |
F# | fsharp |
Go | go |
HTML | html |
HTTP | http |
Java | java |
JavaScript | javascript |
JSON | json |
Kusto Query Language | kusto |
Markdown | md |
Objective-C | objc |
OData | odata |
PHP | php |
PowerApps (dot decimal separator) | powerapps-dot |
PowerApps (comma decimal separator) | powerapps-comma |
PowerShell | powershell |
Python | python |
Q# | qsharp |
R | r |
Ruby | ruby |
SQL | sql |
Swift | swift |
TypeScript | typescript |
VB | vb |
XAML | xaml |
XML | xml |