小编Ale*_*lls的帖子

COPY与docker但排除在外

在Dockerfile中,我有

COPY . .
Run Code Online (Sandbox Code Playgroud)

我想排除整个目录,在我的例子中,node_modules目录.

像这样的东西:

   COPY [all but **/node_modules/**] .
Run Code Online (Sandbox Code Playgroud)

Docker可以实现吗?

docker dockerfile docker-copy

168
推荐指数
8
解决办法
7万
查看次数

检查JS中的typeof错误

在JS中,似乎无法检查传递给函数的参数是否实际上是"错误"类型或错误实例.

例如,这是无效的:

typeof err === 'error'

因为只有6种可能的类型(以字符串的形式):

typeof运算符将类型信息作为字符串返回.typeof返回有六个可能的值:

"number","string","boolean","object","function"和"undefined".

MSDN

但是,如果我有一个这样的简单用例怎么办:

function errorHandler(err) {

    if (typeof err === 'error') {
        throw err;
    }
    else {
        console.error('Unexpectedly, no error was passed to error handler. But here is the message:',err);
    }
}
Run Code Online (Sandbox Code Playgroud)

那么确定参数是否是Error实例的最佳方法是什么?

instanceof任何帮助的运营商?

javascript node.js

116
推荐指数
6
解决办法
9万
查看次数

git push --force-with-lease vs. --force

我试图了解它们之间的区别

git push -f
Run Code Online (Sandbox Code Playgroud)

git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果遥控器没有本地分支没有的提交,后者只会推送到遥控

如果有更好的方式来表达问题,lmk,但希望它很清楚.

git git-push

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

async/await隐式返回promise?

我读到由async关键字标记的异步函数隐式返回一个promise:

async function getVal(){
 return await doSomethingAync();
}

var ret = getVal();
console.log(ret);
Run Code Online (Sandbox Code Playgroud)

但这不是连贯的...假设doSomethingAsync()返回一个promise,而await关键字将返回promise中的值,而不是promise itsef,那么我的getVal函数返回该值,而不是隐式promise.

那究竟是什么情况呢?由async关键字标记的函数是否隐式返回promises,还是我们控制它们返回的内容?

也许如果我们没有明确地回报某些东西,那么它们会隐含地回报一个承诺......?

更清楚的是,上述和之间存在差异

function doSomethingAync(charlie) {
    return new Promise(function (resolve) {
        setTimeout(function () {
            resolve(charlie || 'yikes');
        }, 100);
    })
}

async function getVal(){
   var val = await doSomethingAync();  // val is not a promise
   console.log(val); // logs 'yikes' or whatever
   return val;  // but this returns a promise
}

var ret = getVal();
console.log(ret);  //logs a promise
Run Code Online (Sandbox Code Playgroud)

在我的概要中,行为确实与传统的return语句不一致.看来,当您从 …

javascript node.js async-await ecmascript-next

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

async/await与ES6的差异与发电机的比率

我刚读这篇精彩的文章 -

https://www.promisejs.org/generators/

它清楚地突出了这个函数,它是一个处理生成器函数的辅助函数:

function async(makeGenerator){
  return function () {
    var generator = makeGenerator.apply(this, arguments);

    function handle(result){
      // result => { done: [Boolean], value: [Object] }
      if (result.done) return Promise.resolve(result.value);

      return Promise.resolve(result.value).then(function (res){
        return handle(generator.next(res));
      }, function (err){
        return handle(generator.throw(err));
      });
    }

    try {
      return handle(generator.next());
    } catch (ex) {
      return Promise.reject(ex);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我假设或多或少是async关键字的实现方式async.所以问题是,如果是这种情况,那么async关键字和await关键字之间的区别是什么呢?是否await总是把东西放到一个承诺,而yield没有这样的保证?这是我最好的猜测!

你还可以看到async/await与本文中的生成器的yield相似,他描述了'spawn'函数:https://jakearchibald.com/2014/es7-async-functions/

javascript generator node.js ecmascript-6 ecmascript-next

69
推荐指数
5
解决办法
3万
查看次数

Node.js将相同的可读流管道化为多个(可写)目标

我需要串行运行两个需要从同一个流中读取数据的命令.将流传输到另一个流后,缓冲区被清空,因此我无法再次从该流中读取数据,因此这不起作用:

var spawn = require('child_process').spawn;
var fs = require('fs');
var request = require('request');

var inputStream = request('http://placehold.it/640x360');
var identify = spawn('identify',['-']);

inputStream.pipe(identify.stdin);

var chunks = [];
identify.stdout.on('data',function(chunk) {
  chunks.push(chunk);
});

identify.stdout.on('end',function() {
  var size = getSize(Buffer.concat(chunks)); //width
  var convert = spawn('convert',['-','-scale',size * 0.5,'png:-']);
  inputStream.pipe(convert.stdin);
  convert.stdout.pipe(fs.createWriteStream('half.png'));
});

function getSize(buffer){
  return parseInt(buffer.toString().split(' ')[2].split('x')[0]);
}
Run Code Online (Sandbox Code Playgroud)

请求抱怨这个

Error: You cannot pipe after data has been emitted from the response.
Run Code Online (Sandbox Code Playgroud)

并改变inputStreamfs.createWriteStream当然会产生同样的问题.我不想写入文件,而是以某种方式重用请求生成的流(或其他任何内容).

有没有办法在完成管道后重复使用可读流?完成上述例子的最佳方法是什么?

javascript pipe stream node.js node.js-stream

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

JavaFX - 它真的可以部署在浏览器中吗?

我在去年对JavaFX做了一些研究,甚至用它构建了一些基本的桌面应用程序.

它被描述为用于创建RIA(富Internet应用程序).

http://en.wikipedia.org/wiki/Javafx

但它真的可以通过网络浏览器部署吗?我只通过可执行的JAR文件部署它.

通过Web浏览器部署有多容易?它有用吗?有任何人对此有经验吗?

http://docs.oracle.com/javafx/2/deployment/deployment_toolkit.htm

browser ria javafx

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

如何在非线程的对象上调用wait()和notify()方法?

如何在不是线程的对象上调用wait()notify()方法?那真的没有意义,是吗?

当然,它必须有意义,因为这两种方法可用于所有Java对象.有人可以提供解释吗?我无法理解如何使用wait()和之间的线程之间进行通信notify().

java multithreading notify wait

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

使用VSCode重构局部变量名称

我有这个简单的情况,我想重构角色变量的名称:

在此输入图像描述

看起来VSCode很聪明,知道不应该触及网址中的"角色".

我只想在一个文件中,在一个范围内重构变量的名称,而不是整个文件,绝对不是多个文件!

如果我使用ctrl+H它,它将带我进入一个菜单,默认情况下在多个文件或整个单个文件中重构名称,但我只想在单个函数范围内重构名称!

visual-studio-code

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

如何将图标添加到mat-icon-button

我正在使用Angular with Material

 <button mat-icon-button><mat-icon svgIcon="thumb-up"></mat-icon>Start Recording</button>
Run Code Online (Sandbox Code Playgroud)

我正在尝试添加一个图标到按钮,但我无法弄清楚如何做到这一点,并找不到这方面的文档.

https://material.angular.io/components/button/api

看文件,有这样的:

在此输入图像描述

该按钮具有以下html:

<a _ngcontent-c1="" aria-label="Angular Material" class="docs-button mat-button" mat-button="" routerlink="/" tabindex="0" aria-disabled="false" href="/"><span class="mat-button-wrapper">
    <img _ngcontent-c1="" alt="angular" class="docs-angular-logo" src="../../../assets/img/homepage/angular-white-transparent.svg">
    <span _ngcontent-c1="">Material</span>
  </span> <div class="mat-button-ripple mat-ripple" matripple=""></div><div class="mat-button-focus-overlay">
</div>
</a>
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

angular-material2 angular5

36
推荐指数
4
解决办法
8万
查看次数