小编jok*_*arl的帖子

SNAPSHOT 版本应该存在于哪些分支中?

根据Gitflow,带-SNAPSHOT后缀的POM应该放在哪里?据我了解,开发应该始终包含快照版本,以便我们可以从推送到该分支的每个功能构建最新的快照。

当我们想要发布时,我们从开发创建一个发布分支。这个发布分支是否应该有 SNAPSHOT 后缀?当我们合并发布分支时,SNAPSHOT 后缀是否应该出现在 master 中?

如果它应该存在,如果没有分支包含没有快照的版本号,我们如何有效地告诉 CI 我们想要一个版本?

我目前掌握的是最新版本的master,即没有后缀。我的开发分支正在合并新功能时构建快照。

git-flow

6
推荐指数
0
解决办法
1604
查看次数

npx 但使用包 json 中的版本

我在 javascript 项目中有一个构建脚本,它使用 Parcel 来迭代文件夹并查找索引文件,然后构建这些项目。当我找到索引文件时,我运行以下命令:

npx parcel build ${indexFilePath} --out-dir ${outDir} --target node

但是,如果运行此构建脚本的人尚未安装软件包npm i,则 npx 命令将安装最新版本的 Parcel-bundler,其中 --out-dir 现已弃用并破坏整个脚本。

这是正在发生的事情,经过蒸馏:

$ rm -rf node_modules
$ npm i
$ npx parcel --version
1.12.4
$ rm -rf node_modules
$ npx parcel --version
2.0.0-beta.2
Run Code Online (Sandbox Code Playgroud)

npx 是否有任何选项可以使用项目中已有的 package.json 文件中的版本并将其安装到 node_modules 中?或者我只是将安装步骤整合到我的构建中?这似乎有点矫枉过正,因为我需要建造的只是包裹。

我这样使用 npx 是否滥用了它?

npx

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

Google App Script - 允许匿名用户访问

我已阅读以下主题:

我有一个非常简单的绑定脚本,它将在Add-ons菜单下添加一个菜单项.从我收集到的内容来看,无论用户使用authMode和发布脚本的方式如何,这都是可能的.

function onOpen(e) {
  var menu = SpreadsheetApp.getUi().createAddonMenu();
  menu.addItem('Alert', 'alert');
  menu.addToUi();
}

function alert() {
  SpreadsheetApp.getUi().alert('alerted');
}
Run Code Online (Sandbox Code Playgroud)

这适用于所有登录用户,但不适用于匿名用户.以匿名用户身份打开工作表时,菜单选项甚至不存在.正如上面第二篇文章中所建议的那样,我还为onOpen函数创建了一个可安装的触发器,但它仍然无效.可安装的触发器应该以创建脚本的用户身份运行,并且我已经授权它.

我也将链接分享为"每个人都可以编辑链接".我误解了什么吗?感觉这不应该是一个大麻烦.

任何帮助将不胜感激.如果您需要更多信息来帮助,请告诉我,我会提供.

google-sheets google-apps-script

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

访问 Webpack 插件中的文件内容

我正在尝试编写一个 Webpack 插件,它采用 webpack 生成的 CSS 并为其添加自定义前缀。我已经启动并运行并连接到emit编译器阶段,但我找不到一种优雅的方式来访问我需要的文件内容。

下面是我到目前为止所得到的所有代码,基于编写插件示例。我如何访问资产的内容?日志记录compilation.assets['main.css']仅显示对源的脏访问。

PrefixCssPlugin.prototype.apply = function(compiler) {
  compiler.plugin('after-compile', function(compilation) {
    console.log(new RawSource(compilation.assets['main.css']));
  });

  compiler.plugin('emit', (compilation, callback) => {
    let prefixedCssContent = '';
    for (const filename in compilation.assets) {
      for (const pattern in filePatterns) {
        if (filePatterns[pattern].test(filename)) {
          console.log(`${filename} matched ${filePatterns[pattern]}`);
          console.log(JSON.stringify(compilation.assets[filename]));

            // I want to access the contents of the matched file here, and pass it
            // to another module that will handle the prefixing.
/*           prefixedCssContent = cssPrefixer( …
Run Code Online (Sandbox Code Playgroud)

webpack

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

ARM 上的 Docker 非常慢

在我的开发机器上,我可以在大约 30 秒内构建我的映像。是我正在构建的 Dockerfile。

但是,现在我需要在 Raspberry Pi 上部署我的应用程序,现在我必须以 ARM 为目标。上面链接的项目还包含我正在使用的ARM Dockerfile。但是,无论我如何构建它,这都非常缓慢。无论我如何进行构建,至少需要 20 分钟。这是我尝试过的:

  • 使用 qemu 在我的开发人员机器上构建。Docker 版本 18.09.1,构建 4c52b90,qemu-arm 版本 2.11.1
  • 基于 Rasbperry Pi 3 Model B,Docker 版本 18.09.0,构建 4d60db4。
  • 启用对 Raspberry 上守护程序的远程访问,并使用 dockers -H 标志从我的开发机器上定位该守护程序。

使用 maven 获取依赖项非常缓慢,并且占用了创建映像所花费的大部分时间,即使依赖项在我们的镜像内部存储库中也是如此。

有什么办法可以加快这个过程吗?Dockerfiles 可以改进吗?是我的错,还是像 ARM 的这座建筑,如果是这样,为什么?

arm maven docker

5
推荐指数
0
解决办法
990
查看次数

应该按应用程序还是按环境使用 Azure Log Analytics 和 Application Insights?

我们有一个基于 Azure 的系统,该系统的复杂性不断增加,我们需要监视事件链并确保它们到达我们期望的位置。

我们有一个本地 Java 应用程序,它将事件发送到 IoT 中心。IoT 中心路由到服务总线队列。我们有更新 Cosmos 数据库、触发其他函数或路由到其他队列的函数。某些函数也可以通过 API 管理实例调用。

在此输入图像描述

我们的函数已经连接到 Application Insights,这里 Application Insights 实例的命名与 Function App 相同(IIRC 这个命名是通过创建 AI 资源的表单建议的)

Application Insights 中的应用程序地图让我倾向于每个环境一个 AI,以获得完整的系统地图。Log Analytics 在每个环境中使用一个日志分析似乎也是合乎逻辑的,以便能够在需要时关联数据。

Log Analytics 和 Application Insights 的正确路径分别是什么?

如果没有我标题中所说的那么明确,那么当我开始使用这些服务时,我需要考虑哪些因素?

azure azure-monitoring azure-application-insights azure-log-analytics

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

使用 Azure AD 和应用角色保护 SPA 和 API

我正在构建一个 SPA 可以调用 API 的系统。SPA 以及 API 在 Azure AD 中使用需要将用户分配给它的应用程序注册来表示。

在分配过程中,用户还会被分配给应用程序注册公开的角色。可用的角色是SPA 和 API 应用程序注册中的Developer,我在这两个注册中为用户分配相同的角色。User

API 注册还公开 SPA 注册用于请求访问令牌的范围。

SPA 中的角色用于呈现不同的 UI 元素,具体取决于用户是否被分配DeveloperUser

一旦用户批准了 SPA 向 API 请求的范围,就可以调用 API。此访问令牌的声明aud是 API 的应用程序注册的 ID,它还包含Developer在加入步骤中分配的角色。

我认为这张图正确地代表了正在发生的事情: 在此输入图像描述

我有几个与此相关的问题,仅通过阅读文档很难弄清楚。

管理调用链中的角色(SPA -> API)

通过系统传播角色的正确方法是什么?所有应用程序注册是否需要具有相同的角色,并且用户在每个注册中手动分配角色?

或者我可以传播用户首次登录 SPA 时收到的角色吗?或者这是否会破坏 JWT 的安全性?我猜想这需要在每个应用程序注册中处理,因为没有什么可以阻止我修改传出请求并将角色设置为Admin

角色和范围

我发现这个答案部分地向我解释了这些概念。User.Read我正在构建一个内部系统,除了 OIDC提供的(电子邮件、oid 等)之外,实际上并不需要任何其他用户数据。SPA 请求此范围来显示登录的用户名。

除了用户提供的信息之外,我的 API 永远不会需要任何其他信息。在这种情况下我还需要示波器吗?
同意仅适用于范围吗?
是否knownClientApplicationspreAuthorizedApplications仅在使用范围时适用?

如果这是胡言乱语,我深表歉意,我已经阅读了太多文档,以至于我无法保持头脑清醒。

identity oauth azure azure-identity azure-oauth

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

Azure AD 应用程序注册中应用程序角色和范围之间的差异

我使用 Azure 中的应用程序注册创建了一个受 OAuth 保护的 API。我的应用程序注册不需要分配,但它公开了底层 API 验证的许多角色。据我了解,这几乎与需要批准完成相同的事情。

到目前为止,我只有用户/组角色,但现在我添加了一个供集成商使用的应用程序角色,并且我希望其他应用程序所有者能够请求对我的 API 的权限。作为 API 所有者,我希望查看这些内容并拒绝或同意该请求。例如,我不希望每个人都能够在我不知情的情况下访问租户内的我的 API,就像所有用户/组都无权访问我将他们分配给角色一样。

应用程序开发人员基于角色的访问控制文档清楚地表明了谁管理访问:

...应用程序开发人员定义角色而不是授权单个用户或组。然后,管理员可以将角色分配给不同的用户和组,以控制谁有权访问内容和功能。

但是,如果您创建一个角色并将允许的成员类型设置为应用程序,那么事情就不那么清楚了,它的行为似乎更像是一个范围,我放弃了任何访问管理。另外,根据我有限的理解,当 API 需要向用户请求数据(例如想要读取他们的用户名)时,会使用作用域,而应用程序开发人员则使用角色来控制对他们正在开发的内容的访问。

当我从另一个应用程序请求访问我的 API 时,情况如下所示: 在此输入图像描述

同一页面提到了以下信息:

“需要管理员同意”列显示组织的默认值。但是,可以根据权限、用户或应用程序自定义用户同意。此列可能无法反映您的组织或将使用此应用程序的组织中的价值。

也:

作为同意过程的一部分,当用户/管理员授予应用程序权限时,应用程序有权调用 API

然而,从我的阅读来看,作为 API 所有者,这似乎从来没有让我深入了解谁有权访问我拥有的 API。我想要控制应用程序访问,就像将组或用户分配给企业应用程序中的角色一样。

当另一端是应用程序而不是用户时,可以实现这一点吗?如果不是,我如何允许应用程序以受控方式集成?

azure azure-active-directory

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

骆驼休息路线不返回异常状态代码

我使用以下异常处理创建了一条骆驼路线:

onException(BadRequestException.class)
    .handled(true)
    .process(exchange -> {
        System.out.println("Reached processor");
        System.out.println(exchange.getIn().getBody(String.class));
    })
    .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(HttpStatus.BAD_REQUEST));
Run Code Online (Sandbox Code Playgroud)

我请求 http://localhost:8080/services/rest/endpoint?key=value

在 bean 中,我有一些验证表明需要两个查询参数,key并且keyTwo. keyTwo不存在,所以我抛出一个BadRequestException

public void assertRequiredParametersPresentOnExchange() throws BadRequestException {
    try {
        requiredParameters.stream()
            .forEach(p -> assertNotNull(p));
    } catch (IllegalArgumentException e) {
        throw new BadRequestException(e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行 URL 时,我可以看到Reached processor上面异常处理程序的输出,但没有任何反应。邮递员等待回复约 60 秒,然后给我状态代码 23。

我在这里缺少什么?环保部?在交易所设置一些属性?

java apache-camel

4
推荐指数
1
解决办法
1561
查看次数

将 Hibernate 过滤器与 Spring Boot JPA 结合使用

我发现需要通过子类中的属性来限制子集合的大小。

遵循本指南后,我得到以下结果:

@FilterDef(name="dateFilter", parameters=@ParamDef( name="fromDate", type="date" ) )
public class SystemNode implements Serializable {

    @Getter
    @Setter
    @Builder.Default
    // "startTime" is a property in HealthHistory
    @Filter(name = "dateFilter", condition = "startTime >= :fromDate")
    @OneToMany(mappedBy = "system", targetEntity = HealthHistory.class, fetch = FetchType.LAZY)
    private Set<HealthHistory> healthHistory = new HashSet<HealthHistory>();

    public void addHealthHistory(HealthHistory health) {
        this.healthHistory.add(health);
        health.setSystem(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不太明白如何在使用 Spring Data JPA 时切换此过滤器。我正在像这样获取我的父实体:

public SystemNode getSystem(UUID uuid) {
    return systemRepository.findByUuid(uuid)
        .orElseThrow(() -> new EntityNotFoundException("Could not find system with id " + …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-boot

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

二头肌名称属性和模块

我很难理解name二头肌文件中丰富的属性。main.bicep我已经设置了自己的一些模块,在调用其中之一时看起来像这样:

module vas_resource_group '../common/resource_group.bicep' = {
  name: 'vas_resource_group'
  params: {
    runningNumber: runningNumber
    descriptionShort: descriptionShort
    function: function
    regionShort: regionShort
    environment: environment
    location: defaultLocation
  }
}
Run Code Online (Sandbox Code Playgroud)

有问题的模块如下所示:

resource resource_group 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: 'rg-${runningNumber}-${descriptionShort}-${function}-${regionShort}-${environment}'
  location: location
}

output name string = resource_group.name
Run Code Online (Sandbox Code Playgroud)

现在,main.bicep我想知道模块中声明的名称,例如我想知道模块决定将我的输入参数串在一起rg-${runningNumber}-${descriptionShort}-${function}-${regionShort}-${environment}

在 中main.bicep,如果我写下这篇文章,我确信我会得到我想要的东西:

vas_resource_group.outputs.name
Run Code Online (Sandbox Code Playgroud)

但这有一个缺点,那就是它不能在任何地方使用,例如这是不允许的:

scope: resourceGroup(vas_resource_group.outputs.name)
Run Code Online (Sandbox Code Playgroud)

并显示错误:

该表达式用于对“模块”类型的“范围”属性的赋值,这需要一个可以在部署开始时计算的值。可以在开始时计算的 vas_resource_group 的属性包括“name”.bicep(BCP120)

因此,由于组成名称的所有构建块从一开始就已知,因此我不需要先创建资源,以便可以在部署之前计算名称。

然后,我选择引用资源组的名称,如下所示:

scope: resourceGroup(vas_resource_group.name)
Run Code Online (Sandbox Code Playgroud)

错误消失了,但我不知道这是否会导致声明的名称main.psvas_resource_group(无效),或者是否导致模块声明的名称为rg-${runningNumber}-${descriptionShort}-${function}-${regionShort}-${environment}.

它是哪一个,我应该如何考虑 name 属性?它有时似乎代表正在创建的资源的实际名称,而在其他时候(例如在调用模块中)根本没有多大用处。

如果是当前文件中的名称,如何以最佳方式获取模块中声明的名称?

azure-resource-manager azure-rm-template azure-bicep

3
推荐指数
1
解决办法
1787
查看次数

按配置文件使用 yaml 属性进行 Spring Boot 测试

所以在这个话题上有很多点击,但没有一个对我有用。

我有一个非常简单的配置类:

@Configuration
@ConfigurationProperties(prefix = "props")
public class TagIncluder {

    private static final String PARAMETER_NAME = "tags";

    private List<String> tags;

    public TagIncluder() {
        tags = new ArrayList<>();
    }

    public List<String> getTags() {
        return tags;
    }

    @Handler
    public void attachIncludedTags(Exchange exchange) {
        exchange.getIn().setHeader(PARAMETER_NAME, tags);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这个类能够加载不同的属性文件。我正在使用 yaml,我的文件名为application-tag_test.yml. 我曾尝试将此文件放在src/main/resources,src/test/resources和 中src/test/resources/config,但从未被提取。

这是属性文件的内容:

props:
  tags:
    - test 
Run Code Online (Sandbox Code Playgroud)

最后,测试用例:

@SpringBootTest
@ActiveProfiles("tag_test")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TagIncluder.class)
public class TagIncluderTest extends ExchangeTestSupport {

    @Autowired
    private TagIncluder sut;

    @Test …
Run Code Online (Sandbox Code Playgroud)

java spring configuration-files

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

gitignore 用于基于 git 项目根目录的 python venv

我正在 git 中设置一个 python 项目,我想在 venv 中运行该项目。我python3 -m venv .在 git repo 的根目录中运行。

这将创建多个目录和一个文件:

  • 垃圾桶
  • 包括
  • 库64
  • 分享
  • pyenv.cfg

这些文件和文件夹中的哪些会以与我相同的方式导入我的同事以设置环境?在项目的根目录中,我还包含了这个脚本来设置:

python3 -m venv .
source bin/activate
pip3 install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

python git

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