小编Ste*_*hen的帖子

如何区分未通过的参数和使用false值传递的参数?

我试图找出在没有传递参数的情况和参数传递为0的情况下在Perl中区分的最佳方法,因为它们对我来说意味着不同的东西.

(通常我喜欢歧义,但在这种情况下我生成SQL所以我想用NULL替换未定义的args,但将0保留为0.)

所以这是含糊不清的:

sub mysub {
  my $arg1 = shift;
  if ($arg1){
    print "arg1 could have been 0 or it could have not been passed.";
  }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我最好的解决方案......但我认为这有点难看.我想知道你是否可以想到一个更清洁的方式或者这对你来说是否合适:

sub mysub {
  my $arg1 = (defined shift) || "NULL";
  if ($arg1 ne "NULL"){
    print "arg1 came in as a defined value.";
  }
  else {
    print "arg1 came in as an undefined value (or we were passed the string 'NULL')";
  }
}
Run Code Online (Sandbox Code Playgroud)

perl arguments undefined shift subroutine

8
推荐指数
1
解决办法
2915
查看次数

如果合并一个分支然后删除它,它的提交会被垃圾收集吗?

我想在这里检查一下我对 Git 垃圾收集的理解。

假设你有两个分支:master 和 newidea。在某个时刻,您将 newidea 合并到 master 中,并删除分支 newidea。

你在 newidea 上所做的提交永远不会被垃圾收集,因为由于合并,它们现在成为了 master 树的一部分,对吗?

相比之下,如果您从未合并过,那么这些相同的提交最终将被垃圾收集,因为它们不再可以从活动分支访问。

我有这个权利吗?

git garbage-collection

7
推荐指数
1
解决办法
409
查看次数

使用Encode :: encode with"utf8"

你可能知道,在Perl中,"utf8"意味着Perl对UTF-8的理解更为宽松,它允许在技术上不是UTF-8中有效代码点的字符.相比之下,"UTF-8"(或"utf-8")是Perl对UTF-8更严格的理解,它不允许无效的代码点.

我有一些与此区别相关的使用问题:

  1. 默认情况下,Encode :: encode将使用替换字符替换无效字符.即使您将更宽松的"utf8"作为编码传递,这是真的吗?

  2. 当您读写open"使用"UTF-8" 文件时会发生什么?角色替换是否发生在糟糕的角色上或是否发生了其他事情?

  3. 使用open像'>:utf8'这样的图层和像'>:encoding(utf8)'这样的图层有什么区别?这两种方法都可以同时用于'utf8'和'UTF-8'吗?

perl

7
推荐指数
1
解决办法
616
查看次数

FLASK_ENV 似乎被忽略(无法进入调试环境)

根据 Flask 文档,

Flask 脚本非常适合启动本地开发服务器,但每次更改代码后都必须手动重新启动它。这不太好,Flask 可以做得更好。如果启用调试支持,服务器将在代码更改时重新加载自身,并且如果出现问题,它还会为您提供有用的调试器。

要启用所有开发功能(包括调试模式),您可以导出 FLASK_ENV 环境变量并将其设置为开发,然后再运行服务器:

$ export FLASK_ENV=development 
$ flask run
Run Code Online (Sandbox Code Playgroud)

但是,在我的非常简单的示例中,代码更改在我重新启动服务器之前仍然不会生效。我已经设置了我想要运行的特定脚本export FLASK_APP=hello.py,该脚本如下:

from flask import Flask, url_for, request, render_template
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!!"
Run Code Online (Sandbox Code Playgroud)

当 Flask 开发服务器运行时,我通过添加或删除感叹号并保存文件来更改返回值。然后我在Chrome中刷新页面http://127.0.0.1:5000/,但感叹号的数量没有变化。一旦我在终端中退出 FlaskCtrl-C并重新启动它,然后再次刷新页面,我就会得到正确数量的感叹号。

这是在 Mac、Python 3.6.0 (Anaconda)、Flask 0.12 上进行的。

我是否误解了开发服务器如何帮助我,或者您认为我还应该检查其他什么内容?我对 Flask 还很陌生。

python flask

7
推荐指数
1
解决办法
1万
查看次数

pyenv 本地/全局不适用于 catalina

我有一台新的 MacBook,里面所有的东西都是全新安装的,我升级到 macOS Catalina。我安装了自制软件,然后安装了 pyenv,并使用 pyenv 安装了 Python 3.8.0。所有这些东西似乎都能正常工作。

但是,既没有pyenv local也没有pyenv global似乎生效。以下是我所看到的所有细节:

thewizard@Special-MacBook-Pro ~ % pyenv versions
   system
 * 3.8.0 (set by /Usersthewizard/.python-version)
thewizard@Special-MacBook-Pro ~ % python --version
 Python 2.7.16
thewizard@Special-MacBook-Pro ~ % pyenv global 3.8.0
thewizard@Special-MacBook-Pro ~ % python --version
 Python 2.7.16
thewizard@Special-MacBook-Pro ~ % pyenv local 3.8.0
thewizard@Special-MacBook-Pro ~ % python --version
 Python 2.7.16
thewizard@Special-MacBook-Pro ~ % echo $PATH
 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/thewizard/.pyenv/bin
thewizard@Special-MacBook-Pro ~ % cat ~/.zshenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null …
Run Code Online (Sandbox Code Playgroud)

python macos homebrew pyenv

7
推荐指数
2
解决办法
7190
查看次数

解释depends_on_past 功能

我正在学习 Airflow,我查看了 Airflow 附带的示例 DAG 之一(example_branch_python_dop_operator_3.py)

在此示例中,如果(执行日期时间的)分钟是偶数,则 DAG 会分支到一个分支,如果分钟是奇数,则 DAG 会分支到另一个分支。此外,DAG 已depends_on_past设置True为所有任务的默认值。完整代码是:

args = {
    'owner': 'Airflow',
    'start_date': airflow.utils.dates.days_ago(2),
    'depends_on_past': True,
}

# BranchPython operator that depends on past
# and where tasks may run or be skipped on
# alternating runs
dag = DAG(
    dag_id='example_branch_dop_operator_v3',
    schedule_interval='*/1 * * * *',
    default_args=args,
)


def should_run(**kwargs):
    print('------------- exec dttm = {} and minute = {}'.
          format(kwargs['execution_date'], kwargs['execution_date'].minute))
    if kwargs['execution_date'].minute % 2 == 0:
        return "dummy_task_1"
    else:
        return …
Run Code Online (Sandbox Code Playgroud)

airflow

7
推荐指数
1
解决办法
1173
查看次数

chr() 和 ord() 与 str 和 bytes 有何关系?

我发现了Python 3文档上chr,并ord成为一个有点不清楚它们如何涉及到两个主要的文本数据类型:strbytes。或者也许是我想多了。

这是我认为可能会发生的情况,但是你能告诉我我是否正确吗?

  • ord()将单个字符作为输入str并返回一个int. 输入str就像strPython 3 中的任何其他输入一样。特别是,它不是 bytes以某些特定的 Unicode 格式(如 UTF-8)编码,而是以 Python 的内部str格式表示 Unicode 代码点。
  • chr()将 an 作为输入int,并返回单个字符str。返回str的就像strPython 中的任何其他东西一样,同样不是使用bytes.
  • 在任何时候都不做ord()chr()处理bytes,也不处理像 UTF-8 这样的特定 Unicode 格式,它们只处理 Python 的内部str表示,它更抽象地处理 Unicode 代码点。

python python-3.x

6
推荐指数
1
解决办法
3172
查看次数

什么时候需要kubectl代理?

我正在阅读Kubernetes教程的第二个模块,我对何时kubectl proxy需要它感到困惑。

我感到困惑的原因是,在本教程中,有可能kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080在设置代理之前使用命令创建Deployment(即,将Docker映像作为容器放置在Pod中)。部署映像似乎需要访问节点。

该教程说:“默认情况下,[pod,即容器组]在同一kubernetes群集中的其他Pod和服务中可见,但在该网络外部不可见。” 出于这个原因,它指示我们kubectl proxycurl直接尝试使用Pod 之前(例如使用curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/)设置代理。但是我们已经能够在没有代理的情况下部署这些Pod。我们可以部署它们但不能查询它们,这似乎很奇怪。

同样,本教程还让我们在尝试使用带有Kubernetes API的版本curl http://localhost:8001/version(我相信localhost:8001是代理)之前设置了代理。但是,之前我们可以使用而不使用代理查询版本,该代理kubectl version返回主节点上Kubernetes kubectl Kubernetes 的版本。

有人能阐明这些明显的矛盾吗?

kubernetes

6
推荐指数
1
解决办法
410
查看次数

在 gcp 中限制用户对 VM 的访问

假设两个用户 A 和 B 拥有 GCP 项目的完全访问权限。用户 A 创建虚拟机。完成此操作后,用户 B 似乎可以登录 VM,并且还具有对 VM 的 sudo 访问权限。

我们使用了 enable-oslogin 元数据,但是我们遇到了用户 a 和 b 属于同一组的问题,有没有其他方法可以限制用户 B 的访问

google-compute-engine google-cloud-platform google-iam google-cloud-iam

6
推荐指数
1
解决办法
640
查看次数

理解警告“LF 将被 CRLF 替换”

我已经阅读了这个答案中讨论的 Git 文档(LF 将被 git 中的 CRLF 取代 - 那是什么,它很重要吗?)但我不明白这对我的情况意味着什么。

我有 LF 文件,这些文件是由工具引入到我在 Windows 上的 git checkout 中的。当我尝试提交它们时,我收到了警告warning: LF will be replaced by CRLF in [file]

git config core.autocrlf在这台机器上是真的。反正我答应了。Windows 上的行尾仍然是 LF。然后我在git config core.autocrlf似乎没有设置的 Linux 机器上检查了该文件。我检查了那里的行尾,它们也是 LF。

所以我不明白的是,哪里说LF将被CRLF取代?这是否意味着,下次我对文件进行更改(由另一台机器上的某人提交)时,行尾将被转换?

另外 - Git 在其内部存储库中使用什么行结尾?

git line-endings

5
推荐指数
1
解决办法
1万
查看次数