小编DV8*_*2XL的帖子

使用 self 与类名调用静态方法

使用类名调用 Python 静态方法更为常见,但对于长类名来说可能会让人眼花缭乱。有时我self在同一个类中使用调用静态方法,因为我发现它看起来更干净。

class ASomewhatLongButDescriptiveClassName:

   def __init__(self):
      # This works, but it's an eyesore
      ASomewhatLongButDescriptiveClassName.do_something_static()

      # This works too and looks cleaner.
      self.do_something_static()

   @staticmethod
   def do_something_static():
      print('Static method called.')
Run Code Online (Sandbox Code Playgroud)

我的理解是,调用静态方法self会被解释为ClassName.static_method(self),其中self静态方法将被忽略。
(编辑:上述陈述仅适用于实例方法,不适用于静态方法)

self我不应该在同一个类中调用静态方法有什么具体原因吗?

FWIW这是一个姊妹问题:Difference Between Calling Method with self and with class name? ,它处理非静态方法。

python static-methods

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

在gitlab中,如何仅针对特定分支设置“管道必须成功”,而不针对其他分支设置“管道必须成功”以进行合并请求合并?

在合并检查设置中,我启用了“管道必须成功”选项:

在此输入图像描述

但是没有任何作业的分支会因为“等待管道状态”而陷入合并状态,并且如果没有成功的管道,则无法合并。

我可以仅对某些特定分支(例如 master/生产)启用“管道必须成功”选项吗?

gitlab gitlab-ci merge-request

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

Gitlab仅在上一个作业运行时才运行管道作业

我正在尝试创建一个包含生产和开发部署的管道。在这两种环境中,应用程序都应该使用 docker 构建。但仅当相应目录中发生更改时。

例如:

  • 当前端目录中发生更改时,应该构建和部署前端
  • 当后端目录发生更改时,应该构建和部署后端

起初我没有关键字needs: 。即使未执行构建作业,管道也始终执行deploy_backend和deploy_frontend。

现在我已经添加了needs: 关键字,但是 Gitlab 说yaml invalid当一个目录中只有一个更改时。当两个目录都发生更改时,管道工作正常。例如,当 2 个目录之外的 README.md 发生更改时,也会yaml invalid这样说。

有谁知道如何创建一个管道,该管道仅在指定目录发生更改时运行,并且仅在构建作业运行时运行相应的部署作业?

gitlab-ci.yml:

stages:
  - build
  - deploy

build_frontend:
  stage: build
  only:
    refs:
      - master
      - development
    changes:
      - frontend/* 
  script: 
    - cd frontend
    - docker build -t frontend .

build_backend:
  stage: build
  only:
    refs:
      - master
      - development
    changes:
      - backend/* 
  script: 
    - cd backend
    - docker build -t backend .

deploy_frontend_dev:
  stage: deploy
  only:
    refs: …
Run Code Online (Sandbox Code Playgroud)

pipeline gitlab-ci

11
推荐指数
1
解决办法
5259
查看次数

运行管道上出现“缺少 CI 配置文件”消息,但 .gitlab-ci.yml 存在

3张截图来说明问题

当我运行管道时出现错误... 错误消息显示“缺少 CI 配置文件”

但该文件存在

但该文件存在

而且很好

在此输入图像描述

gitlab gitlab-ci

10
推荐指数
1
解决办法
8075
查看次数

Angular Circular Module 导入

我有两个模块,它们的组件相互使用。所以我必须在“test”中导入“word”,在“word”中导入“test”-->抛出一个错误......我该怎么办?

模块“测试”:

    @NgModule({
      declarations: [
        AppTest1Component,
        AppTest2Component,
      ],
      imports: [
        AppWordModule,
      ],
      exports: [
        AppTest1Component,
        AppTest2Component,
      ],
    })
    export class AppTestModule {
    }
Run Code Online (Sandbox Code Playgroud)

模块“字”:

    @NgModule({
      declarations: [
        AppWordComponent,
      ],
      imports: [
        AppTestModule,
      ],
      exports: [
        AppWordComponent,
      ],
    })
    export class AppWordModule {
    }
Run Code Online (Sandbox Code Playgroud)

我因为模板相互导入。test1.component.ts的模板调用word.component.ts,word.component.ts的模板调用test1.component.ts。

测试1.html

    <div class="app-word"></div>
Run Code Online (Sandbox Code Playgroud)

字.html

    <div class="app-test1"></div>
Run Code Online (Sandbox Code Playgroud)

我尝试使用 SharedModule 但我没有实现...

import module circular-dependency angular

9
推荐指数
1
解决办法
2051
查看次数

在 spring-boot 应用程序中将 Micrometer 与 OpenFeign 结合使用

OpenApi 文档说它支持微米。整合如何运作?除了这个小文档之外我找不到任何东西。

我在 Spring Boot 应用程序中有一个 FeignClient

@FeignClient(name = "SomeService", url = "xxx", configuration = FeignConfiguration.class)
public interface SomeService {

    @GET
    @Path("/something")
    Something getSomething();
}
Run Code Online (Sandbox Code Playgroud)

与配置

public class FeignConfiguration {
    @Bean
    public Capability capability() {
        return new MicrometerCapability();
    }
}
Run Code Online (Sandbox Code Playgroud)

和微米积分作为依赖项

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-micrometer</artifactId>
    <version>10.12</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

该代码进行了调用,但我无法通过actuator概述找到任何新指标,需要一些有关我的 HTTP 请求的一般信息。缺少什么部分?

spring-boot feign micrometer spring-micrometer

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

在 Windows 10 上使用 docker compose 挂载网络驱动器

我最近使用下面的示例 docker-compose.yml 文件在 Windows 10 的各个项目中成功安装了卷。对于今天的一个新项目,我需要从 Z:/ 驱动器(一个网络安装驱动器,当\\IP.IP.IP.IP\public\data (Z:)我导航到 Windows 文件资源管理器中的该区域时出现)安装一个文件夹。

当我编辑卷以指向 Z: 上的位置时(例如在下面的第二个 docker-compose.yml 中),当我通过 CLI 连接到容器时,卷未正确安装并且是空文件夹。

任何关于正确安装 Z: 驱动器文件夹的建议都会很棒,谢谢。

工作 docker-compose.yml 文件:

version: '3.1'

services:
  db:
    image: mysql:8.0.25
    container_name: db
    restart: always
    secrets:
      - mysql_root
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root
      MYSQL_DATABASE: donuts
      TZ: "Australia/NSW"
    volumes:
      - mysql-data:/var/lib/mysql
      - ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql
    network_mode: "host"
  
  voyager_donuts:
    container_name: voyager_donuts
    build:
      context: .
      dockerfile: Dockerfile
    image: voyager_donuts
    network_mode: "host"
    environment:
      TZ: "Australia/NSW"
    volumes:
      - c:/Users/MYUSERNAME/data/DonutsCalibration:/voyager_calibration
      - c:/Users/MYUSERNAME/data/DonutsLog:/voyager_log
      - c:/Users/MYUSERNAME/data:/voyager_data
      - c:/Users/MYUSERNAME/data/DonutsReference:/voyager_reference

volumes:
  mysql-data:

secrets: …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

9
推荐指数
1
解决办法
8915
查看次数

如何禁用 Dropwizard 健康检查的日志记录

我有一个在 Dropwizard (0.9) 中开发的应用程序,我们内部基础设施的一部分会定期 ping 管理员健康检查 REST 端点以验证服务是否已启动。这增加了很多:

127.0.0.1 - - [26/Sep/2016:21:47:04 +0000] "GET /healthcheck HTTP/1.1" 200 - "-" "curl/7.43.0" 27
Run Code Online (Sandbox Code Playgroud)

到日志文件。调整我们的内部工具超出了范围,所以我想配置记录器以使这些条目静音。不幸的是,我无法识别生成这些消息的类。哪个类负责内置的 /healthcheck 端点,并将一个简单的:

logging:
    loggers:
        "com.class.that.is.responsible": ERROR
Run Code Online (Sandbox Code Playgroud)

yaml 配置中的条目会抑制它们吗?

java logging dropwizard

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

为 kinesis firehose cloudformation 启用 cloudwatch 日志

我正在尝试为我的 Firehose 捕获 Cloudwatch 日志,以在将数据发送到S3目的地时发现任何错误。我创建了一个带有日志详细信息的 cloudformation 模板

"CloudWatchLoggingOptions" : {
    "Enabled" : "true",
    "LogGroupName": "/aws/firehose/firehose-dev", -->firehose-dev is my firehosedeliverystream name 
    "LogStreamName" : "s3logs"
},
Run Code Online (Sandbox Code Playgroud)

我已授予必要的 IAM 权限来创建loggroupnamestreamname.

{
    "Sid": "",
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
    ],
    "Resource": [
        "arn:aws:logs:*:*:*"
    ]
}
Run Code Online (Sandbox Code Playgroud)

当我触发模板时,我没有在 cloudwatch 日志中找到任何日志组名和流名。

但是当我们为AWS::Lambda资源提供相同的 IAM 权限时,它会自动创建一个/aws/lambda/mylambdaname日志组名(即)并将日志发送到该组。但是为什么这种情况不适用于 firehose ?

作为解决方法

我手动创建AWS::Logs::LogGroup与名称资源/aws/firehose/firehose-devAWS::Logs::LogStream资源使用的名称s3logs


如果我们使用控制台配置 firehose 传输流,firehose 也会自动创建日志组名称和日志流名称。

通过 cloudformation 配置时,firehose 不能像 aws …

amazon-web-services aws-cloudformation amazon-cloudwatchlogs amazon-kinesis-firehose

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

规则:MR 管道中的更改始终评估为 true

我有一个 monorepo,其中每个包都应构建为 docker 映像。

我为每个触发子管道的包创建了一个触发器作业。

在 MR 中,我的更改规则被忽略,所有子管道都被触发。

.gitlab-ci.yml

---
workflow:
  rules:
     - if: $CI_MERGE_REQUEST_ID || $CI_COMMIT_BRANCH

trigger-package-a:
  stage: build
  trigger:
    include: .gitlab/ci/packages/package-gitlab-ci.yml
    strategy: depend
  rules:
   - changes:
      - "packages/package-a/**/*"
  variables:
    PACKAGE: package-a

trigger-package-b:
  stage: build
  trigger:
    include: .gitlab/ci/packages/package-gitlab-ci.yml
    strategy: depend
  rules:
    - changes:
      - "packages/package-b/**/*"
  variables:
    PACKAGE: package-b

done_job:
  stage: deploy
  script:
    - "echo DONE"
    - "cat config.json"
stages:
  - build
  - deploy
Run Code Online (Sandbox Code Playgroud)

包-gitlab-ci.yml

workflow:
   rules:
     - if: $CI_MERGE_REQUEST_ID
     - changes:
         - "packages/${PACKAGE}/**/*"

stages:
  - bootstrap
  - validate

cache: …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci

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