小编cus*_*der的帖子

如何在Jenkins Pipeline配置中定义和使用函数?

我正在尝试用里面的函数创建一个任务:

def doCopyMibArtefactsHere(projectName) {
    step ([
        $class: 'CopyArtifact',
        projectName: $projectName,
        filter: '**/**.mib',
        fingerprintArtifacts: true, 
        flatten: true
    ]);
}

def BuildAndCopyMibsHere(projectName, params) {
    build job: $project, parameters: $params
    doCopyMibArtefactsHere($projectName)
}


node { 
    stage('Prepare Mib'){
        BuildAndCopyMibsHere('project1')
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这给我一个例外:java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法'BuildAndCopyMibsHere'

有没有办法在Pipline脚本中使用嵌入式功能?

groovy jenkins jenkins-pipeline

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

在clojure中,我们应该何时使用monad而不是宏,反之亦然?

monad上有太多的教程说..."看!这里是我们可以使用monad的情况"或"这就是monad的用途".我想知道的是,人们用什么步骤得出他们可以对自己说的结论 - "Gee Whiz!看起来我们可以在这里使用monad!"

所以,当有人告诉我......"(等等)与monad无关......",它真的无助于我回答我的问题,它们是:

  • 我如何确定使用monads表达程序中的哪种模式?
  • 当我发现使用它们的潜力时,如何编写我自己的定制monad?

我在这里开始了一个很长的问题关于monads如果有人有兴趣帮忙 - Map和Reduce Monad for Clojure ...... Juxt Monad怎么样?.

回到这个问题:

什么时候应该使用monad而不是宏,反之亦然?

  • 我读过文章和看过演示文稿,说......'Monad用于DSL抽象'......但是大多数clojure DSL库(例如打嗝和korma)都在使用defmacro并且效果很好.

如果我们有宏,为什么我们需要在clojure中使用monad?

macros monads clojure

26
推荐指数
2
解决办法
6036
查看次数

RxJS 中的 tap 和 map 有什么区别?

我阅读了文章中的不同之处,但要点如下。

所以tap我可以改变变量,比如如果我把x=3+4它改变了变量的值,那么我可以说有一个副作用。

但是map我可以改变循环每个值的值,不是吗?你能指出他们有哪些突出的差异吗?

轻敲

RxJS tap 对源 Observable 发出的每个值执行副作用,并返回与源 Observable 相同的 Observable,直到没有错误为止。

地图

map 是一个 RxJS 可管道操作符。map 将给定的函数应用于源 Observable 发出的每个元素,并将结果值作为 Observable 发出

rxjs

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

为什么在可以安装服务或应用程序时对其进行 dockerize?

我们有大约12 种服务和其他应用程序,例如 presto。

我们正在考虑为每个服务和应用程序构建 Docker 容器。将它们全部 dockerize 是否正确?

什么时候 Docker 容器不是理想的解决方案?

linux containers rhel docker dockerfile

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

如何根据常规提交规范对 UI 更改进行分类?

根据传统的提交,单纯的 UI 更改应该如何分类?例如,假设注销按钮从屏幕底部移动到顶部,文本旁边添加了一个图标,并且有一个新的动画。除此之外,从功能角度来看没有任何变化。

\n

我的困惑来自于这个(可能是错误的)推理。您不能使用以下任何一项,因为:

\n
    \n
  • 壮举:这不是一个新功能
  • \n
  • 修复:没有任何需要修复的错误
  • \n
  • perf:未涉及性能
  • \n
  • 重构:这可能是遵循Angular重构定义“既不修复错误也不添加功能的代码更改”的情况,但不使用重构的维基百科定义“代码重构是重组现有计算机代码的过程\xe2\” x80\x94更改分解\xe2\x80\x94而不改变其外部行为”
  • \n
  • 样式:不影响代码含义的更改(空格、格式、缺少分号等)。不言而喻,事实并非如此
  • \n
\n

git conventional-commits

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

如何使用不同的间隔过滤数字数组?

在下面的示例代码中,我想根据不同的间隔过滤 numbersArray。一个区间由 2 个数组的组合以及所述区间的下限和上限定义。如何识别匹配或不匹配,如下所示?

const numbersArray = [1,2,3,4,5,6,7,8,9,10];
const lowerBound = [1, 4, 8];
const higherBound = [3, 6, 10];
Run Code Online (Sandbox Code Playgroud)

如果代码有效,则以下测试应返回 true:

matches == [2, 5, 9];
nonmatches == [1, 3, 4, 6, 7, 8, 10];
  
Run Code Online (Sandbox Code Playgroud)

假设数组包含 1000 多个项目并且数字不遵循任何模式。

下面是一个不太可读但更现实的场景。

let numbersArray = [];
let lowerBound = [];
let higherBound = [];

for (let i = 0; i< 1000; i++){
  numbersArray.push(i);
}

for(let i = 0; i < 100; i++) {
  lowerBound.push(i * 10);
  higherBound.push((i * 10) + Math.random() * …
Run Code Online (Sandbox Code Playgroud)

javascript conditional-statements

12
推荐指数
4
解决办法
305
查看次数

将Clojure宏用于DSL

我正在开发一个Clojure项目,我经常发现自己正在为DSL编写Clojure宏,但我正在观看Clojure视频,了解公司如何在实际工作中使用Clojure,而且发言人说在实际使用中他们不使用宏来实现他们的DSL,他们只使用宏来添加一点句法.这是否意味着我应该使用标准函数编写我的DSL,然后在最后添加一些宏?

更新:在阅读了这个问题的许多不同(和有趣的)回答后,我意识到答案并不像我最初想的那样明确,原因有很多:

  1. 应用程序中有许多不同类型的API(内部,外部)

  2. API的用户有很多种类(商业用户只想快速完成某项工作,Clojure专家)

  3. 是否有宏隐藏锅炉板代码?

我会离开并更深入地思考这个问题,但感谢你的回答,因为他们给了我很多思考.另外我注意到Paul Graham认为与Christophe视频相反,并认为宏应该是代码库的很大一部分(25%):

http://www.paulgraham.com/avg.html

macros dsl clojure higher-order-functions

11
推荐指数
2
解决办法
2049
查看次数

Git - 如果我想拥有一致的工作流程,挑选樱桃是一种不好的做法吗?

我发现cherry-pick在某些情况下特别有用,例如,当我有一个feature1分支和一个test-feature1分支时,我想应用测试中发现的更正;或者换句话说,我想测试新功能,为此我需要在测试分支中使用这些新功能。

cherry-pick这里的好处是我可以选择我想在其他分支中应用的具体更改;也许合并整个分支并不有趣。

我在过去的项目中一直在使用它,但我认为这种做法会导致工作流程不一致。是cherry-pick-ing一个不推荐和可避免的做法?

git cherry-pick

10
推荐指数
2
解决办法
5846
查看次数

重新启动 Electron 应用程序的正确方法是什么?

在这个 Electron 文档页面中,他们建议重新启动应用程序,应该执行app.quitapp.exit 调用之后app.relaunch

注意这个方法在执行的时候不会退出app,需要在调用app.relaunch后调用app.quit或者app.exit才能让app重启。

然而,经过试验,我发现顺序似乎并不重要。(见我下面的例子。)

我知道这app.quitapp.exit不完全一样。前者可以被中断并会触发一些事件,而后者会强制应用退出而不触发任何事件或允许应用取消操作。

问题:假设强制应用程序退出总是可以的,并且在应用程序退出之前我们没有任何任务要执行,是否有:

  1. 一个喜欢的理由app.quitapp.exit
  2. 一个人为什么必须跑app.quitapp.exit追赶的原因app.relaunch

这是一个非常简单的 Electron 应用程序:

包.json

{
  "name": "burrito",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "devDependencies": {
    "electron": "^4"
  }
}
Run Code Online (Sandbox Code Playgroud)

主文件

const {app, BrowserWindow, Menu} = require('electron');
let mainWindow;

app.on('ready', () => {
  Menu.setApplicationMenu(
    Menu.buildFromTemplate([
      {role: 'appMenu', submenu: [

        {label: 'relaunch(); exit()', …
Run Code Online (Sandbox Code Playgroud)

javascript electron

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

连接到独立的 Chrome 调试容器时如何避免身份验证?

我在用selenium/standalone-chrome-debug

默认情况下,通过 VNC 连接到容器将触发身份验证提示,可以通过按照文档设置环境变量来避免该提示:

如果您想在没有密码验证的情况下运行 VNC,您可以设置环境变量VNC_NO_PASSWORD=1

当我使用以下命令启动容器时,系统仍然提示我输入密码:

docker run -d -p 4444:4444 -p 0:5900 -v /dev/shm:/dev/shm -e VNC_NO_PASSWORD=1 selenium/standalone-chrome-debug
Run Code Online (Sandbox Code Playgroud)

正如您在以下截屏视频中看到的:

  • 仍然要求我输入密码
  • 尝试在没有密码的情况下进行身份验证失败
  • 当我使用默认密码 ( secret) 时,它会通过

问题:如何完全避免身份验证?

在此输入图像描述

selenium vnc-viewer docker docker-selenium

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