小编ken*_*orb的帖子

在锁定依赖项时发现最新版本的Composer软件包

假设我有一个composer.json锁定依赖项的文件:

{
  "require" : {
   "zendframework/zendframework" : "2.4.2"
  },
  "require-dev": {
    "phpunit/phpunit": "4.6.6"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想这样做是因为想要手动更新依赖项,所以我不会遇到构建失败或其他开发人员遇到我没有的问题的情况,因为Composer安装了不同版本的软件包.

是否有一种很好的方法可以使用Composer列出锁定包的所有较新版本,也许类似于composer discover我获得输出的地方:zendframework/zendframework锁定版本2.4.2(2.4.*或其他),但有版本2.5.0,2.5.1和2.6.0可用*?

现有的任何命令都能提供这种信息吗?


基本上,我更关注向我展示的新版本,因此我可以知道手动更新的依赖项.承诺composer.lock不是真正的解决方案,因为这不会告诉我要更新的内容(并且我composer.json被锁定在特定版本,因此composer.lock无论如何都不会有所不同).

php dependency-management composer-php

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

冲泡更改包安装位置

如何更改Homebrew将在何处安装软件包?这有可能吗?我尝试在中手动移动已安装的文件夹/usr/local/Cellar,但该位置的动态链接“硬连线”。

macos homebrew

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

如何使用winedbg与Wine下的应用程序进行交互?

我在Wine(wine my_app.exe)下运行我的应用程序,我想以编程方式或从脚本中与它进行交互.

所以我正在运行winedbg并附加到该过程:

$ winedbg
Wine-dbg>info process
 00000008 3        'terminal.exe'
Wine-dbg>attach 8
0xf7709c0e __kernel_vsyscall+0xe in [vdso].so: int  $0x80
Run Code Online (Sandbox Code Playgroud)

但我不确定下一步该做什么?

基本上我想向我的应用程序发送一些键盘或鼠标信号(旨在选择一个复选框并单击下一步按钮).

是否有可能使用葡萄酒调试器?

我的目标是自动执行此过程,以便从脚本安装应用程序而无需任何用户交互.或至少知道如何做到这一点.

我知道有xdotool工具可以很容易地从命令行伪造鼠标和键盘的输入,但是它有点儿麻烦,所以我想学习如何从调试器中做到这一点.

debugging assembly wine keyboard-events interrupt-handling

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

模拟应该被称为1次,但被称为0次

我对Laravel 5和PHPUnit有一些奇怪的问题.当我试图模仿Laravel的外观(例如Auth,View,Mail)时,我总是得到这个例外:

Mockery\Exception\InvalidCountException:方法发送("emails.register",数组('用户'=''对象(MCC\Models\Users\User)',),对象(Closure))来自Mockery_0_Illuminate_Mail_Mailer应该被正确调用1次但是叫了0次.

我有"should be called exactly 1 times but called 0 times."部分问题.这是我的测试代码:

public function testSendEmailToNewUserListener()
{
    $user = factory(MCC\Models\Users\User::class)->create();

    Mail::shouldReceive('send')
        ->with(
            'emails.register',
            ['user' => $user],
            function ($mail) use ($user) {
               $mail->to($user->email, $user->name)
                    ->subject('Thank you for registering an account.');
            }
        )
        ->times(1)
        ->andReturnUsing(function ($message) use ($user) {
            dd($message);
            $this->assertEquals('Thank you for registering an account.', $message->getSubject());
            $this->assertEquals('mcc', $message->getTo());
            $this->assertEquals(View::make('emails.register'), $message->getBody());
        });
}
Run Code Online (Sandbox Code Playgroud)

我放弃了dd($message),因为我想了解有关返回值的详细信息(看起来如何$message->getTo()).

我的TestCase类:

<?php

/**
 * Provides default values for functional tests.
 *
 * …
Run Code Online (Sandbox Code Playgroud)

php unit-testing laravel mockery

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

在“$@”扩展中转义逗号

"$@"似乎让,消失。例如

param="123 1,2"
set echo $param
"$@"
Run Code Online (Sandbox Code Playgroud)

这将回显“123 1 2”而不是“123 1,2”,但在某些情况下,需要作为命令的值。

这似乎与bash版本有关,在bash 4.1.2中,结果是正确的,但在4.2.46中,逗号丢失了。


编辑:

简而言之,也许应该nice归咎于:

unset IFS这样做了,在终端中,我给出的测试用例工作正常,但与我的脚本无关。

我实际上正在编写一个初始化脚本,我检查了action()中的函数/etc/init.d/functions,并添加了一些调试代码:

echo "$@" # added by me
unset IFS # added by me
"$@" && success $"$STRING" || failure $"$STRING"
Run Code Online (Sandbox Code Playgroud)

回显的命令是正确的( nice -n -10 ovs-vswitchd ... --socket-mem 1024,1024),但结果是psnice 实际执行的命令变成了ovs-vswitchd ... --socket-mem 1024 1024

我开始想也许这是nice罪魁祸首。

bash shell

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

如何打印多行字符串参数的每个元素?

我在Jenkins(v2.7.1)中完成了Pipeline作业,在这里我要打印多行字符串参数(Params)的每个元素,每行3个字符串:FooBarBaz作为输入。

因此,我尝试了以下语法(使用spliteach):

Params.split("\\r?\\n").each { param ->
    println "Param: ${param}"
}
Run Code Online (Sandbox Code Playgroud)

但是它失败了:

java.lang.UnsupportedOperationException:尚不支持在CPS转换的闭包上调用public static java.lang.Object org.codehaus.groovy.runtime.DefaultGroovyMethods.each(java.lang.Object,groovy.lang.Closure)(JENKINS-26481); 封装为@NonCPS方法,或在org.jenkinsci.plugins.workflow.cps.GroovyClassLoaderWhitelist.checkJenkins26481(GroovyClassLoaderWhitelist.java:90)上使用Java样式的循环

建议使用@NonCPS方法封装,或使用Java样式的循环


所以我试着用@NonCPS方法封装

@NonCPS
def printParams() {
    Params.split("\\r?\\n").each { param ->
        println "Param: ${param}"
    }
}
printParams()
Run Code Online (Sandbox Code Playgroud)

但是它失败了:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许脚本使用staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods println groovy.lang.Closure java.lang.Object

如果没有该功能(按照第一个示例),则@NonCPS在开始时添加它会抱怨意外的token


我还尝试了使用for运算符建议的Java样式语法(类似于here):

String[] params = Params.split("\\r?\\n")
for (String param: params) {
    println "Param: ${param}"
} …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-pipeline

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

在virtualenv中使用ansible安装pip包需要使用pip3吗?

基本上这是我的角色

---

- name: pip install mimodd {{ version }}
  pip:
    name: mimodd
    version: "{{ version }}"
    virtualenv: "{{ apps_dir }}/mimodd-{{ version }}"
    virtualenv_python: python3.5
    virtualenv_site_packages: yes

  tags: mimodd

- file:
    dest: "{{ modules_bio }}/mimodd-{{ version }}"
    state: directory
    mode: 0755

  tags: mimodd

- name: mimodd {{ version }} module definition
  template:
    src: sw-module.lua.j2
    dest: "{{ modules_bio }}/mimodd/{{ version }}.lua"
    owner: "{{ main_guy }}" 
    mode: 0644
  with_items:
    - dir: 'mimodd-{{ version }}'
      help_text: 'loads mimodd pipeline'
      append: true 

  tags: mimodd …
Run Code Online (Sandbox Code Playgroud)

pip ansible

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

如何将 $args 转换为字符串并执行?

我想传递给脚本的所有参数并执行。

例如,给定execute.ps1脚本:

Invoke-Expression $($args[0])
Run Code Online (Sandbox Code Playgroud)

我可以跑:

.\execute.ps1 hostname
myhostname
Run Code Online (Sandbox Code Playgroud)

与此脚本的两个参数相同:

Invoke-Expression "$($args[0]) $($args[1])"
Run Code Online (Sandbox Code Playgroud)

并通过以下方式执行它:

.\execute.ps1 echo foo
foo
Run Code Online (Sandbox Code Playgroud)

如何使脚本通用以支持未知数量的参数?

例如:

.\execute.ps1 echo foo bar buzz ...
Run Code Online (Sandbox Code Playgroud)

我尝试了以下失败的组合:

Invoke-Expression $args
Run Code Online (Sandbox Code Playgroud)

调用表达式:无法将“System.Object[]”转换为参数“Command”所需的类型“System.String”。不支持指定的方法。


Invoke-Expression [system.String]::Join(" ", $args)
Run Code Online (Sandbox Code Playgroud)

调用表达式:找不到接受参数“System.Object[]”的位置参数。


Invoke-Expression $args.split(" ")
Run Code Online (Sandbox Code Playgroud)

调用表达式:无法将“System.Object[]”转换为参数“Command”所需的类型“System.String”。不支持指定的方法。


Invoke-Expression [String] $args
Run Code Online (Sandbox Code Playgroud)

调用表达式:找不到接受参数“System.Object[]”的位置参数。

powershell invoke-command

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

如何在PHP中提取URL的一部分以删除特定部分?

所以,我在一个字符串中有这个URL:

http://www.domain.com/something/interesting_part/?somevars&othervars
Run Code Online (Sandbox Code Playgroud)

在PHP中,我怎么能摆脱所有interesting_part呢?

php regex url

4
推荐指数
3
解决办法
4598
查看次数

"虽然读LINE做"和grep问题

我有两个文件.

file1.txt:  
Afghans  
Africans  
Alaskans  
...  
Run Code Online (Sandbox Code Playgroud)

其中file2.txt包含网页上wget的输出,所以这是一个很大的混乱,但确实包含了第一个列表中的许多单词.

Bashscript:

cat file1.txt | while read LINE; do grep $LINE file2.txt; done
Run Code Online (Sandbox Code Playgroud)

这没有按预期工作.我想知道为什么,所以我在循环中回显了$ LINE变量并添加了一个睡眠1,所以我可以看到发生了什么:

cat file1.txt | while read LINE; do echo $LINE; sleep 1; grep $LINE file2.txt; done
Run Code Online (Sandbox Code Playgroud)

终端中的输出看起来像这样:

Afghans
非洲人
阿拉斯加人
阿尔巴尼亚人
美国人
grep:中文:没有这样的文件或目录
:没有这样的文件或目录
阿拉伯人
阿拉伯人
阿拉伯人/东印度人
:没有这样的文件或目录
阿根廷
亚美尼亚人
亚洲
亚洲印第安人
:没有这样的文件或目录
file2.txt:亚洲火影忍者
. ..

所以你可以看到它终于找到了"亚洲"这个词.但为什么会说:

没有相应的文件和目录

有什么奇怪的事情或我在这里错过了什么吗?

bash grep while-loop cat

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