Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu.Wang 2018-09-08 23:18:33 +08:00
commit 2444c3fe6c
3 changed files with 64 additions and 52 deletions

View File

@ -3,9 +3,9 @@
![](https://fedoramagazine.org/wp-content/uploads/2018/07/pythonvscode-816x345.jpg)
Visual Studio Code简称 VS Code是一个开源的文本编辑器包含用于构建和调试应用程序的工具。安装启用 Python 扩展后VS Code 可以配置成 Python 开发的理想工作环境。本文将介绍一些有用的 VS Code 扩展,并配置它们以充分提高 Python 开发效率。
Visual Studio Code简称 VS Code是一个开源的文本编辑器包含用于构建和调试应用程序的工具。安装启用 Python 扩展后VS Code 可以配置成理想的 Python 开发工作环境。本文将介绍一些有用的 VS Code 扩展,并配置它们以充分提高 Python 开发效率。
如果你的计算机上还没有安装 VS Code可以参考文章 [Using Visual Studio Code on Fedora ](https://fedoramagazine.org/using-visual-studio-code-fedora/) 安装。
如果你的计算机上还没有安装 VS Code可以参考文章 [在 Fedora 上使用 VS Code](https://fedoramagazine.org/using-visual-studio-code-fedora/) 安装。
### 在 VS Code 中安装 Python 扩展
@ -20,11 +20,12 @@ VS Code 通过两个 JSON 文件管理设置:
* 一个文件用于 VS Code 的全局设置,作用于所有的项目
* 另一个文件用于特殊设置,作用于单独项目
可以用快捷键 **Ctrl+,** (逗号)打开全局设置,也可以通过 **文件 -> 首选项 -> 设置** 来打开。
可以用快捷键 `Ctrl+,` (逗号)打开全局设置,也可以通过 **文件 -> 首选项 -> 设置** 来打开。
#### 设置 Python 路径
您可以在全局设置中配置 python.pythonPath 使 VS Code 自动为每个项目选择最适合的 Python 解释器。 。
您可以在全局设置中配置 `python.pythonPath` 使 VS Code 自动为每个项目选择最适合的 Python 解释器。
```
// 将设置放在此处以覆盖默认设置和用户设置。
// Path to Python, you can use a custom version of Python by modifying this setting to include the full path.
@ -33,18 +34,20 @@ VS Code 通过两个 JSON 文件管理设置:
}
```
这样VS Code 将使用虚拟环境目录 .venv 下项目根目录中的 Python 解释器。
这样VS Code 将使用虚拟环境目录 `.venv` 下项目根目录中的 Python 解释器。
#### 使用环境变量
默认情况下VS Code 使用项目根目录下的 .env 文件中定义的环境变量。 这对于设置环境变量很有用,如:
默认情况下VS Code 使用项目根目录下的 `.env` 文件中定义的环境变量。 这对于设置环境变量很有用,如:
```
PYTHONWARNINGS="once"
```
可使程序在运行时显示警告。
可以通过设置 python.envFile 来加载其他的默认环境变量文件:
可以通过设置 `python.envFile` 来加载其他的默认环境变量文件:
```
// Absolute path to a file containing environment variable definitions.
"python.envFile": "${workspaceFolder}/.env",
@ -52,9 +55,10 @@ PYTHONWARNINGS="once"
### 代码分析
Python 扩展还支持不同的代码分析工具pep8flake8pylint。要启用你喜欢的或者正在进行的项目所使用的分析工具只需要进行一些简单的配置。
Python 扩展还支持不同的代码分析工具pep8、flake8、pylint。要启用你喜欢的或者正在进行的项目所使用的分析工具只需要进行一些简单的配置。
扩展默认情况下使用 pylint 进行代码分析。你可以这样配置以使用 flake8 进行分析:
```
"python.linting.pylintEnabled": false,
"python.linting.flake8Path": "${workspaceRoot}/.venv/bin/flake8",
@ -68,7 +72,8 @@ Python 扩展还支持不同的代码分析工具pep8flake8pylint
### 格式化代码
可以配置 VS Code 使其自动格式化代码。目前支持 autopep8black 和 yapf。下面的设置将启用 “black” 模式。
可以配置 VS Code 使其自动格式化代码。目前支持 autopep8、black 和 yapf。下面的设置将启用 “black” 模式。
```
// Provider for formatting. Possible options include 'autopep8', 'black', and 'yapf'.
"python.formatting.provider": "black",
@ -77,7 +82,7 @@ Python 扩展还支持不同的代码分析工具pep8flake8pylint
"editor.formatOnSave": true,
```
如果不需要编辑器在保存时自动格式化代码,可以将 editor.formatOnSave 设置为 false 并手动使用快捷键 **Ctrl + Shift + I** 格式化当前文档中的代码。 注意,项目的虚拟环境中需要安装有 black此示例方能有效。
如果不需要编辑器在保存时自动格式化代码,可以将 `editor.formatOnSave` 设置为 `false` 并手动使用快捷键 `Ctrl + Shift + I` 格式化当前文档中的代码。 注意,项目的虚拟环境中需要安装有 black此示例方能有效。
### 运行任务
@ -89,40 +94,43 @@ VS Code 的一个重要特点是它可以运行任务。需要运行的任务保
![][4]
编辑如下所示的 tasks.json 文件,创建新任务来运行 Flask 开发服务:
编辑如下所示的 `tasks.json` 文件,创建新任务来运行 Flask 开发服务:
```
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Run Debug Server",
"type": "shell",
"command": "${workspaceRoot}/.venv/bin/flask run -h 0.0.0.0 -p 5000",
"group": {
"kind": "build",
"isDefault": true
"label": "Run Debug Server",
"type": "shell",
"command": "${workspaceRoot}/.venv/bin/flask run -h 0.0.0.0 -p 5000",
"group": {
"kind": "build",
"isDefault": true
}
}
}
]
]
}
```
Flask 开发服务使用环境变量来获取应用程序的入口点。 如 **使用环境变量** 一节所说,可以在 .env 文件中声明这些变量:
Flask 开发服务使用环境变量来获取应用程序的入口点。 如 **使用环境变量** 一节所说,可以在 `.env` 文件中声明这些变量:
```
FLASK_APP=wsgi.py
FLASK_DEBUG=True
```
这样就可以使用快捷键 **Ctrl + Shift + B** 来执行任务了。
这样就可以使用快捷键 `Ctrl + Shift + B` 来执行任务了。
### 单元测试
VS Code 还支持单元测试框架 pytestunittest 和 nosetest。启用测试框架后可以在 VS Code 中单独运行搜索到的单元测试,通过测试套件运行测试或者运行所有的测试。
VS Code 还支持单元测试框架 pytestunittest 和 nosetest。启用测试框架后可以在 VS Code 中单独运行搜索到的单元测试,通过测试套件运行测试或者运行所有的测试。
例如,可以这样启用 pytest 测试框架:
```
"python.unitTest.pyTestEnabled": true,
"python.unitTest.pyTestPath": "${workspaceRoot}/.venv/bin/pytest",
@ -140,7 +148,7 @@ via: https://fedoramagazine.org/vscode-python-howto/
作者:[Clément Verna][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[idea2act](https://github.com/idea2act)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,37 +1,39 @@
介绍 Linux 中的管道和命名管道
======
> 要在命令间移动数据?使用管道可使此过程便捷。
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW-Internet_construction_9401467_520x292_0512_dc.png?itok=RPkPPtDe)
在 Linux 中,`pipe` 能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便于进一步处理。
在 Linux 中,`pipe` 能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便于进一步处理。
`pipe` 或者 `unnamed pipe` 命令的语法是在两个命令之间加上 `|` 字符:
“管道”(或称“未命名管道”)命令的语法是在两个命令之间加上 `|` 字符:
```
Command-1 | Command-2 | ...| Command-N
```
`Command-1 | Command-2 | …| Command-N`
这里,管道不能通过另一个会话访问;它被临时创建用于接收 `Command-1` 的执行并重定向标准输出。它在成功执行之后删除。
这里,该管道不能通过另一个会话访问;它被临时创建用于接收 `Command-1` 的执行并重定向标准输出。它在成功执行之后删除。
![](https://opensource.com/sites/default/files/uploads/pipe.png)
在上面的示例中,contents.txt 包含特定目录中所有文件的列表 - 具体来说,就 是ls -al 命令的输出。我们首先通过管道(如图所示)使用 contents.txt 中的 “file” 关键字 grep 文件名,因此 cat 命令的输出作为 grep 命令的输入提供。接下来,我们添加管道来执行 awk 命令,该命令显示 grep 命令的过滤输出中的第 9 列。我们还可以使用 wc -l 命令计算 contents.txt 中的行数。
在上面的示例中,`contents.txt` 包含特定目录中所有文件的列表 —— 具体来说,就是 `ls -al` 命令的输出。我们首先通过管道(如图所示)使用 “file” 关键字从 `contents.txt``grep` 文件名,因此 `cat` 命令的输出作为 `grep` 命令的输入提供。接下来,我们添加管道来执行 `awk` 命令,该命令显示 `grep` 命令的过滤输出中的第 9 列。我们还可以使用 `wc -l` 命令计算 `contents.txt` 中的行数。
只要系统启动并运行或直到它被删除,命名管道就可以持续使用。它是一个遵循 [FIFO][1](先进先出)机制的特殊文件。它可以像普通文件一样使用。也就是,你可以写入,从中读取,然后打开或关闭它。要创建命名管道,命令为:
```
mkfifo <pipe-name>
```
这将创建一个命名管道文件,它甚至可以在多个 shell 会话中使用。
创建 FIFO 命名管道的另一种方法是使用此命令:
```
mknod p <pipe-name>
```
`>` 符号。要重定向任何命令的标准输入,请使用 `<` 符号。
要重定向任何命令的标准输出到其它命令,请使用 `>` 符号。要重定向任何命令的标准输入,请使用 `<` 符号。
![](https://opensource.com/sites/default/files/uploads/redirection.png)
@ -41,9 +43,9 @@ mknod p <pipe-name>
![](https://opensource.com/sites/default/files/uploads/verify-output.png)
这里,我们创建了一个命名管道 `my-named-pipe`,并将 `ls -al` 命令的输出重定向到命名管道。我们可以打开一个新的 shell 会话并 `cat` 命名管道的内容,如前所述,它显示了 `ls -al`命令的输出。请注意,命名管道的大小为零,并有一标志 “p”。
这里,我们创建了一个命名管道 `my-named-pipe`,并将 `ls -al` 命令的输出重定向到命名管道。我们可以打开一个新的 shell 会话并 `cat` 命名管道的内容,如前所述,它显示了 `ls -al` 命令的输出。请注意,命名管道的大小为零,并有一标志 “p”。
因此,下次你在 Linux 终端上使用命令并在命令之间移动数据时,希望管道使过程快速简便。
因此,下次你在 Linux 终端上使用命令并在命令之间移动数据时,希望管道使这个过程快速简便。
--------------------------------------------------------------------------------
@ -52,7 +54,7 @@ via: https://opensource.com/article/18/8/introduction-pipes-linux
作者:[Archit Modi][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,27 +1,28 @@
如何将 WordPress 博客发布到静态 GitLab Pages 上
======
> 通过 GitLab 或 GitHub Pages 来提供一个 WordPress 镜像站点, 从而最小化安全问题。
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/web-design-monitor-website.png?itok=yUK7_qR0)
很久以前,我为一个家庭成员建立了一个 WordPress 博客。现在有很多选择,但是当时如果你需要一个带有 WYSIWYG 编辑器的基于网络的 CMS那么当时很少有不错的选择。运行良好的一个不幸的副作用是博客随着时间的推移产生了很多内容。这意味着我要经常更新 WordPress 以防止不断出现的漏洞。
很久以前,我为一个家庭成员建立了一个 WordPress 博客。如今有很多选择,但是当时如果你需要一个带有所见即所得的编辑器的基于 Web 的 CMS那么就没什么像样的的选择了。而一切运行良好的不幸的副作用是随着时间的推移该博客产生了很多内容。这意味着我要经常更新 WordPress 以防止不断出现的漏洞。
因此,我决定劝说家人切换到 [Hugo][1] 会相对容易,然后可以在 [GitLab][2] 上托管博客。但是尝试提取所有内容并将其转换为 [Markdown][3] 变成了一个巨大的麻烦。有自动脚本完成了 95% 的工作,但并不完美。手动更新所有帖子不是我想做的事情,所以最终,我放弃了试图移动博客。
因此,我决定劝说家人切换到 [Hugo][1] 会相对容易,然后可以在 [GitLab][2] 上托管博客。但是尝试提取所有内容并将其转换为 [Markdown][3] 变成了一个巨大的麻烦。有自动脚本完成了 95% 的工作,但并不完美。手动更新所有帖子不是我想做的事情,所以最终,我放弃了试图移动博客。
最近,我又开始考虑这个问题,并意识到有一个我没有考虑过的解决方案:我可以继续维护 WordPress 服务器,但将其设置为发布静态镜像,并使用 [GitLab Pages][4](或 [ GitHub Pages][5] ,如果你喜欢的话)服务。这能让我自动化 [Let's Encrypt][6] 证书续订并消除与托管 WordPress 站点相关的安全问题。然而,这意味着评论将无法使用,但在这种情况下感觉就像是一个小损失,因为博客没有收到很多评论。
最近,我又开始考虑这个问题,并意识到有一个我没有考虑过的解决方案:我可以继续维护 WordPress 服务器,但将其设置为发布静态镜像,并使用 [GitLab Pages][4](或 [GitHub Pages][5] ,如果你喜欢的话)提供服务。这能让我自动化 [Let's Encrypt][6] 证书续订并消除与托管 WordPress 站点相关的安全问题。然而,这意味着评论将无法使用,但在这种情况下感觉就像是一个小损失,因为博客没有收到很多评论。
这是我提出的解决方案,到目前为止似乎运作良好:
* WordPress 站点中的 URL 没有链接到或来自其他任何地方,以减少它被利用的几率。在此例中,我们将使用 <http://private.localconspiracy.com>(即使此站点实际上是使用 Pelican 构建的)。
* 公共 URL <https://www.localconspiracy.com> [在 GitLab Pages 上设置托管][7]。
* 添加 [cron job][8],确定两个 URL 之间的最后构建日期何时不同。如果构建日期不同,则镜像 WordPress 版本。
* 托管 WordPress 站点中的 URL 没有链接到或来自其他任何地方,以减少它被利用的几率。在此例中,我们将使用 <http://private.localconspiracy.com>(即使此站点实际上是使用 Pelican 构建的)。
* 公共 URL <https://www.localconspiracy.com> [托管到 GitLab Pages 上][7]。
* 添加 [cron 任务][8],确定两个 URL 之间的最后构建日期何时不同。如果构建日期不同,则镜像 WordPress 版本。
* 使用 `wget` 镜像后,将所有链接从“私有”更新成“公共”。
* 运行 `git push` 来发布新内容。
这是我使用的两个脚本:
`check-diff.sh` (cron 每 15 分钟调用一次)
`check-diff.sh` cron 每 15 分钟调用一次):
```
#!/bin/bash
@ -34,7 +35,8 @@ then
fi
```
`mirror.sh:`
`mirror.sh`
```
#!/bin/sh
@ -62,7 +64,7 @@ git push origin master
就是这些了!现在,当博客发生变化时,在 15 分钟内将网站镜像到静态版本并推送到仓库,这将在 GitLab Pages 中反映出来。
如果你想[在本地运行 WordPress][9],这个概念可以进一步扩展。在这种情况下,你不需要服务器来托管你的 WordPress 博客。你可以在本机运行它。在这种情况下,你的博客不可能被利用。只要你可以在本地运行 `wget`,就可以使用上面的方法在 GitLab Pages 上托管 WordPress 站点。
如果你想[在本地运行 WordPress][9],这个概念可以进一步扩展。在这种情况下,你不需要服务器来托管你的 WordPress 博客。你可以在本机运行它。在这种情况下,你的博客不可能被攻击利用。只要你可以在本地运行 `wget`,就可以使用上面的方法在 GitLab Pages 上托管 WordPress 站点。
_这篇文章最初发表于 [Local Conspiracy] [10]。允许转载。_
@ -72,8 +74,8 @@ via: https://opensource.com/article/18/8/publish-wordpress-static-gitlab-pages-s
作者:[Christopher Aedo][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出