小编sam*_*ime的帖子

GitLab CI的多行YAML字符串(.gitlab-ci.yml)

我正在尝试编写一个gitlab-ci.yml使用多行字符串作为命令的文件.但是,它似乎没有被解析.我都试过了- |,并- >用相同的结果.

stages:
  - mystage

Build:
  stage: mystage
  script:
    - |
        echo -e "
            echo 'hi';
            echo 'bye';
        "
Run Code Online (Sandbox Code Playgroud)

当它尝试运行时,它只显示echo -e '要运行的脚本,而不是整个多行字符串.这给我带来了问题.

写这样的东西的正确语法是什么?

yaml gitlab-ci gitlab-ci-runner

56
推荐指数
5
解决办法
4万
查看次数

JavaScript将`+ + i`解释为什么?

我以前从未见过的一件有趣的事情发布在另一个问题上.他们有类似的东西:

var i = + +1;
Run Code Online (Sandbox Code Playgroud)

他们认为额外+将它转换为字符串,但他们只是添加到一个字符串,这是导致它转换的.

然而,这引出了一个问题:这里发生了什么?

我本来希望这是一个编译器错误,但JavaScript(至少在Chrome中)对它来说很好......它基本上什么都不做.

我创建了一个小JSFiddle来演示:Demo

var i = 5;
var j = + +i;
document.body.innerHTML = i === j ? 'Same' : 'Different';
Run Code Online (Sandbox Code Playgroud)

任何人都知道实际发生了什么以及JavaScript在这个过程中做了什么?

我想也许它会像对待它一样++i,但i不会增加,你甚至可以使用一个值(例如+ +5)来做,这是你无法做到的++(例如,++5是一个参考错误).

间距也不会影响它(例如,+ + 1并且+ +1是相同的).

我最好的猜测是它基本上将它们视为正面/负面的迹象并将它们组合在一起.它看起来像1 == - -1-1 == + -1,但是这仅仅是太奇怪了.

这只是一种古怪的行为,还是在某个标准中记录?

javascript

28
推荐指数
3
解决办法
1962
查看次数

CSS calc() - 使用单位值进行乘法和除法

是否可以使用calc()乘以或除以基于单位的值(如100%,5px等).

例如,我希望做这样的事情:

width: calc(100% * (.7 - 120px / 100%));
Run Code Online (Sandbox Code Playgroud)

希望它解决类似的问题(假设100%= 500px):

width: calc(500px * (.7 - 120px / 500px));
width: calc(500px * (.7 - .24));
width: calc(500px * .46);
width: calc(230px);
Run Code Online (Sandbox Code Playgroud)

然而,在经过一些实验之后,看起来我不能将基于单位的价值作为分裂的分母.

我也似乎并不能够多两个值在一起像5px * 10px5px * 100%.

我知道在100%的情况下允许这样做没有意义,但在我的用例中,我想知道120px的总宽度是多少百分比,然后我将其输入到我的其余部分.计算.

要么就是这样,或者如果有人能想出一种不同的方式来编写它,那么它也会起作用.我绞尽脑汁,无法想出任何东西.

css css3 css-calc

27
推荐指数
2
解决办法
3万
查看次数

Symfony2在YAML配置中使用PHP类常量?

我知道这可能是不可能的,但有一种干净的方法在YAML config/services/etc中使用PHP类常量.Symfony2的文件?

例如,如果我有这个:

namespace My\Bundle\DependencyInjection;

class MyClass
{
    const MY_CONST = 'cookies';
}
Run Code Online (Sandbox Code Playgroud)

这样的事情是可能的(在.yml文件中):

services:
    my_service:
        class: Some\Class
        arguments:
            - %My\Bundle\DependencyInjection\MyClass::MY_CONST%
Run Code Online (Sandbox Code Playgroud)

这对于帮助保持两者之间的一致性有很大帮助.

php yaml symfony

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

在Spring Boot中处理嵌入式Tomcat异常

我们有一个问题,其中嵌入式Tomcat正在IllegalArgumentException从抛出LegacyCookieProcessor。它抛出500 HTTP响应代码。

我们需要处理异常并对其进行处理(特别是将其发送为400)。

典型的@ExceptionHandler(IllegalArgumentException.class)似乎没有被触发,Google似乎只给出了处理Spring Boot特定异常的结果。


例:

这是重现该行为的示例。您可以通过下载包含2.1.5.RELEASE版本中的spring-web(https://start.spring.io/)的初始项目来执行示例。然后将以下两个类添加到您的项目。

DemoControllerAdvice.java

package com.example.demo;

import java.util.HashMap;
import java.util.Map;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class DemoControllerAdvice {

    @ExceptionHandler(IllegalArgumentException.class)
    @ResponseStatus(HttpStatus.FORBIDDEN)
    public Map<String, String> forbiddenHandler() {
        Map<String, String> map = new HashMap<>();
        map.put("error", "An error occurred.");
        map.put("status", HttpStatus.FORBIDDEN.value() + " " + HttpStatus.FORBIDDEN.name());
        return map;
    }

}
Run Code Online (Sandbox Code Playgroud)

DemoRestController.java

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoRestController {

    @GetMapping(value = "/working") …
Run Code Online (Sandbox Code Playgroud)

java spring tomcat spring-boot

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

不能在Windows的NPM脚本中使用mkdir

我正在尝试使用如下所示的脚本:

{
    "scripts":
        "setup": "mkdir -p ./my-dir"
}
Run Code Online (Sandbox Code Playgroud)

它失败了,至少在Windows上,即使我从Git Bash提示符运行它也是如此.即使尝试只是mkdir ./my-dir不起作用.我无法弄清楚它应该失败的原因.

它给出的错误是"语法不正确"错误:

> my-app@0.0.1 stage C:\my-app
> mkdir ./my-dir

The syntax of the command is incorrect.

npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "stage"
npm ERR! node v6.4.0
npm ERR! npm  v3.10.3
npm ERR! code ELIFECYCLE
npm ERR! my-app@0.0.1 stage: `mkdir ./my-dir`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the my-app@0.0.1 stage script 'mkdir ./my-dir'.
npm ERR! Make sure …
Run Code Online (Sandbox Code Playgroud)

node.js npm npm-install

15
推荐指数
3
解决办法
7863
查看次数

PHPUnit在实例化之后将类的实例转换为模拟

有没有办法用PHPUnit创建一个mock类,然后我可以使用它的类名创建一个新的实例?

我有一个定义两种方法的接口.就像是:

interface FooInterface {
    function getA();
    function getB();
}
Run Code Online (Sandbox Code Playgroud)

然后我有另一个接受类名的类,创建该类的实例,检查它是否是它所期望的实例(FooInterface),然后在该类上调用两个方法来获取一些信息.

class FooInfo {
    protected $a;
    protected $b;

    public function __construct($fooClass) {
        $foo = new $fooClass;

        if (!($foo instanceof FooInterface)) {
            throw new \Exception();
        }

        $this->a = $foo->getA();
        $this->b = $foo->getB();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道如何模拟一个对象就好了.问题是,因为这个类接受一个类名,而不是一个对象(它是一个Manager的一部分,根据需要创建给定类的实例),我不能使用普通的模拟对象.

我试着制作一个模拟对象,然后使用该类名.它似乎创造了对象很好,甚至似乎有我嘲笑的功能.但是,它似乎没有遵循我稍后设置的will($ this-> returnValue('myValue'))部分.

public function testConstruct()
{
    $foo = $this->getMockForAbstractClass('Foo', array('getA', 'getB'));
    $foo->expects($this->any())->method->('getA')->will($this->returnValue('a'));
    $foo->expects($this->any())->method->('getB')->will($this->returnValue('b'));

    $copyClass = get_class($foo);
    $copy = new $copyClass();

    // Passes
    $this->assertTrue(method_exists($copy, 'getA');

    // Fails, $copy->getA() returns null.
    $this->assertEquals($copy->getA(), $foo->getA());
}
Run Code Online (Sandbox Code Playgroud)

因此,它确实具有被模拟的函数,但它们都返回null.

有任何想法吗?

php phpunit unit-testing mocking

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

Spring 全局异常处理程序 - 不是 MVC

常规 Spring (Boot) 是否有办法进行全局异常处理,或者至少可以捕获任何未捕获的异常(例如RuntimeException可能随机发生的异常)?

我已经用谷歌搜索过,但我发现的所有内容都谈到了@ControllerAdvice @ExceptionHandlerfor 控制器。与一般的全局异常处理程序无关。

我基本上只是想确保如果发生一些我尚未捕获的异常,我会记录它以便我知道它。

java spring

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

语音识别 - 持续运行

我正在尝试使用语音识别API创建一个支持HTML5的语音控制编辑器.目前,问题是当你开始录音时,它只会持续一段时间(基本上直到用户停止说话).

我可以设置continuousinterimResultstrue,但并不把它永远记录.它仍然结束.

我也可以告诉它在结束活动期间重新开始,但随后它每次都要求许可,这是非常具有破坏性的.

有没有办法允许它连续进行而只需要询问用户一次?

javascript html5 speech-recognition html5-audio

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

将单文件.vue组件转换为JavaScript?

有没有可以采用这样的.vue模板的工具:

<template>
  <div>Hello, {{ thing }}</div>
</template>

<script>
  export default {
    data() { return { thing: 'World' }; }
  }
</script>

<style>
  div { background: red; }
</style>
Run Code Online (Sandbox Code Playgroud)

并将其转换为.js文件,如下所示:

export default {
  template: `
    <div>Hello {{ thing }}</div>
  `,
  data() {
    return {
      thing: 'World'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

(不确定它对CSS有什么魔力,但它会做点什么.)

我正在尝试使用本机浏览器模块,它运行良好,但我想使用.vue文件语法,因为它提供了一些不错的东西.我想避免使用像Webpack或Browserify这样的捆绑器.

我正在使用巴别塔.我有transform-vue-jsx插件,但无法处理.vue格式,只能转换JSX.

javascript babel vue.js

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