小编Dr.*_*eel的帖子

如何在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万
查看次数

并行ping多个网络设备的最佳方法是什么?

我通过迭代ping在网络中调查了很多设备(超过300个).

程序按顺序轮询设备,因此速度很慢.我想提高民意调查的速度.

在Delphi 7中有一些方法可以做到这一点:

  1. 每个设备都有一个执行ping的线程.手动管理线程.
  2. 学习和使用Indy 10.需要举例.
  3. 根据窗口消息使用重叠I/O.
  4. 根据事件使用完成端口.

什么是更快,更容易?请举例说明一些示例或链接.

delphi network-programming ping polling iocp

7
推荐指数
3
解决办法
9442
查看次数

如何使用SuperObject序列化包含点(例如IP地址)的JSON密钥?

我正在尝试保存JSON,其中IP是关键.预期的JSON结果是:

{"SnmpManagers":[{"10.112.25.235":162}]}
Run Code Online (Sandbox Code Playgroud)

Delphi SuperObject代码:

const
  IpAddr = '10.112.25.235';
  Port = 162;
var
  tmp: TSuperObject;
begin
  tmp := TSuperObject.Create;
  tmp.I[IpAddr] := Port;
  Json.A['SnmpManagers'].Add(tmp);
end;
Run Code Online (Sandbox Code Playgroud)

SuperObject将点解析为JSON对象的路径分隔符:

{"SnmpManagers":[{"10":{"112":{"25":{"235":162}}}}]}
Run Code Online (Sandbox Code Playgroud)

如何使用SuperObject正确地将IP保存为JSON密钥?

delphi parsing json ip-address superobject

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

更好的错误处理

在这里https://github.com/astaxie/build-web-application-with-golang/blob/master/en/11.1.md描述了如何根据http包增强自定义路由器和自定义错误类型的错误处理。

type appError struct {
    Error   error
    Message string
    Code    int
}    

type appHandler func(http.ResponseWriter, *http.Request) *appError
// custom handler catching errors
func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    if e := fn(w, r); e != nil { // e is *appError, not os.Error.
        c := appengine.NewContext(r)
        c.Errorf("%v", e.Error)
        http.Error(w, e.Message, e.Code)
    }
}
// fetch data or return *appError
func viewRecord(w http.ResponseWriter, r *http.Request) *appError {
    c := appengine.NewContext(r)
    key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) …
Run Code Online (Sandbox Code Playgroud)

error-handling web-applications http go

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