小编Mic*_*pat的帖子

Bash脚本,监视文件夹,执行命令

我正在尝试创建一个带有2个参数的bash脚本:目录和命令.我需要查看此目录以进行更改,并且当某些内容发生更改时,我需要执行该命令.我真的很喜欢用bash编写脚本而且我不确定我在做什么,所以对我很轻松.我也在Mac上,而不是linux.任何指针或外部资源都会有很大帮助.我知道有很多人在互联网上尝试这一点,似乎没有人能够做到这一点.我真的想模仿SASS的手表功能.

#!/bin/bash

#./watch.sh $PATH $COMMAND

DIR=$1  

ls -l $DIR > $DIR/.begin
#this does not work
DIFFERENCE=$(diff .begin .end)

if [ $DIFFERENCE = '\n']; then
    #files are same
else
    $2
fi 

ls -l $DIR > $DIR/.end
Run Code Online (Sandbox Code Playgroud)

macos bash shell

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

是否有返回ES6承诺的setTimeout版本?

这个问题类似,但我并没有询问承诺如何起作用,我特别想知道:

在返回Promise的东西中包装setTimeout的标准/最佳方法是什么?我在想像Angular的功能,但不是Angular特有的.$timeout

javascript promise ecmascript-6 es6-promise

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

在PowerShell中创建一个临时目录?

PowerShell 5引入了New-TemporaryFilecmdlet,非常方便.我怎样才能做同样的事情而不是文件创建目录?有New-TemporaryDirectorycmdlet吗?

powershell temporary-directory

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

Azure网站上提供了哪些版本的node.js?

我已经知道如何更改在Azure网站上运行的Node.js的版本,但是如何查看可以在Azure中使用的可用Node.js版本?

这与此问题类似,但那里的提问者明确地想知道当前正在运行的版本,而不是可用的版本.

azure node.js azure-web-sites

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

如何注入对特定IHostedService实现的引用?

我的网络应用程序有一个后台服务,可以收听服务总线.基于文档,看起来运行后台服务的内置方式是实现IHostedService.

所以我有一些看起来像这样的代码:

public class ServiceBusListener : IMessageSource<string>, IHostedService
{
    public virtual event ServiceBusMessageHandler<string> OnMessage = delegate { };

    public Task StartAsync(CancellationToken cancellationToken)
    {
        // run the background task...
    }

    // ... other stuff ...
}
Run Code Online (Sandbox Code Playgroud)

然后注册该服务Startup.cs:

services.AddSingleton<IHostedService, ServiceBusListener>();
Run Code Online (Sandbox Code Playgroud)

一旦我更新到ASP.NET 2.1,我可以使用新的便捷方法:

services.AddHostedService<ServiceBusListener>();
Run Code Online (Sandbox Code Playgroud)

但我相信这两者在功能上是等价的.

复杂性:我的Web应用程序有多个实现IHostedService(特别是服务总线监听器的不同实例).

问题:如何让其他组件获得对特定托管服务实现(我的服务总线监听器)的引用?换句话说,如何将特定实例注入组件?

用例:我的后台服务侦听服务总线消息,然后重新发布消息作为.NET事件(如果您想知道,消费代码处理线程问题).如果事件在后台服务上,则订阅者需要获得对后台服务的引用才能进行订阅.

我尝试过:如果我做了明显的事情,并声明ServiceBusListener作为依赖注入到不同的组件,我的启动代码抛出"无法解析类型的服务"异常.

甚至可以请求特定的实现IHostedService?如果没有,最好的解决方法是什么?介绍我的服务和消费者可以参考的第三个组件?避免IHostedService并手动运行后台服务?

dependency-injection asp.net-core

12
推荐指数
5
解决办法
3422
查看次数

如何在厨师中运行bash脚本文件?

我写了一个简短的bash脚本并将其存储起来files/default/bash.sh.

如何链接它以使其在我的主要默认配方中运行?它需要以sudo身份运行,因为我使用的是ubuntu系统.

bash file chef-infra

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

使用网络面板进行性能分析时,强制Chrome关闭/重新打开所有TCP/TLS连接

Chrome的DevTools网络面板非常适合查看加载不同请求的时间.它会描述每个请求并报告请求的不同部分需要多长时间,包括进行初始TCP连接和SSL握手所花费的时间:

当我第一次看到初始连接和SSL握手所花费的时间时加载页面.如果我立即重新加载页面,我不再看到在初始连接和SSL握手上花费的时间.我认为这是因为Chrome已经保持打开先前请求的TCP连接并重新使用它.这对于正常浏览非常有用,但它使初始页面加载的分析变得困难.

有什么办法可以强制Chrome不重复使用任何现有的TCP/TLS连接并且总是制作新的连接?

如果不是在Chrome中,我可以在操作系统级别做些什么来实现这一目标吗?我在Windows上,如果它有所作为.

windows tcp google-chrome google-chrome-devtools

9
推荐指数
1
解决办法
5166
查看次数

在部署插槽交换后,如何正常迁移打开的Websocket连接?

在我的Web应用程序中,当用户登录到应用程序时,他们的浏览器会打开一个Websocket到服务器,以便可以将更新下推到浏览器.

它是在Azure应用服务中运行的ASP.NET核心Web应用程序(自托管).我想使用Azure的部署插槽交换功能将代码更新推送到生产中,无需停机部署.

在我完成的有限测试中,看起来在插槽交换后,Websocket连接保持打开到浏览器所连接的原始插槽.(因此,如果浏览器的Websocket连接到插槽A,并且我们交换插槽A和B以便新连接进入插槽B,则Websocket仍将对插槽A上运行的应用程序开放.)

在某些时候,旧的插槽将被脱机,这将强行关闭任何打开的Websockets.我希望尽可能优雅地重新打开Websocket到新插槽,并在插槽交换后尽快重新打开,这样如果我更新与Websocket相关的代码,所有客户端将尽快运行新代码.

这可能如何工作的草图:

  1. 插槽交换发生
  2. 将通知发送到旧插槽上运行的代码
  3. 在旧插槽上运行的代码会推送Websocket消息以重新连接
  4. 收到消息后,浏览器将打开一个新的Websocket连接(将转到新的插槽)
  5. 连接成功后,浏览器将关闭旧的Websocket

有没有更好的方法呢?

如何在旧插槽上运行的代码知道它何时被交换?

是否可以优雅地处理这个问题?或者总会有一堆竞争条件?

websocket azure-web-sites azure-deployment-slots asp.net-core

8
推荐指数
1
解决办法
448
查看次数

我可以使用 PropTypes 来表示一个 prop 是一个 Promise 吗?

PropTypes 有助于调试,因为它们会在未满足预期时显示警告。除此之外,他们也很好地表达了如何使用组件的意图。

如果我有一个组件接受一个 prop 的值可以是一个 promise,有什么方法可以使用 PropTypes 来表达它吗?我正在想象一些直接的东西PropTypes.promise,或者使用构建块 PropTypes 来表达“thenable”概念的某种方式。

这是一个高度简化的示例,用于展示我的预期用例:

class SomeComponent extends Component {
  static propTypes = {
    someDataPromise: PropTypes.object // <-- can I be more expressive here?
  }

  state = {
    isLoading: false
  }

  async handleSubmit() {
    this.setState({ isLoading: true });

    const data = await this.props.someDataPromise;
    const response = await fetch(`/some/api/endpoint?data=${data}`);
    // do something with the response

    this.setState({ isLoading: false });
  }

  render() { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-proptypes

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

单元测试AngularJS控制器,它通过$ controller从基本控制器继承

该方案是我有一个ChildCtrl控制器,从继承BaseCtrl下面这种继承方式:

angular.module('my-module', [])
    .controller('BaseCtrl', function ($scope, frobnicate) {
        console.log('BaseCtrl instantiated');

        $scope.foo = frobnicate();

        // do a bunch of stuff
    })

    .controller('ChildCtrl', function ($controller, $scope) {
        $controller('BaseCtrl', {
            $scope: $scope,
            frobnicate: function () {
                return 123;
            }
        });
    });
Run Code Online (Sandbox Code Playgroud)

假设BaseCtrl有很多东西,并且已经经过了很好的测试,我想用某些参数测试那个ChildCtrl实例BaseCtrl.我最初的想法是这样的:

describe("ChildCtrl", function () {
    var BaseCtrl;

    beforeEach(module('my-module'));

    beforeEach(module(function($provide) {
        BaseCtrl = jasmine.createSpy();
        $provide.value('BaseCtrl', BaseCtrl);
    }));

    it("inherits from BaseCtrl", inject(function ($controller, $rootScope) {
        $controller('ChildCtrl', { $scope: $rootScope.$new() });

        expect(BaseCtrl).toHaveBeenCalled();
    })); …
Run Code Online (Sandbox Code Playgroud)

inheritance unit-testing jasmine angularjs

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

什么是最大允许的内容安全策略?

我有一个庞大的遗留代码库,我想引入Content-Security-Policy标题.在短期内真正锁定网站是不可行的(例如,整个地方都有没有自动化测试覆盖的内联脚本),但至少我可以开始禁止访问我知道的内容源当然,目前还没有使用,然后随着时间的推移慢慢减速.

不幸的是,未使用的源列表相当短.这是我第一次尝试Content-Security-Policy价值:

default-src * 'unsafe-eval' 'unsafe-inline'
Run Code Online (Sandbox Code Playgroud)

这破坏了许多事情,例如使用data:scheme获取的图像.环顾四周,我看到了许多您可能想要包含的内容,例如connect-src ws:,未在文档中明确指出的内容.

什么是最大允许Content-Security-Policy标头值,基本上允许网站执行浏览器默认允许执行的所有操作?问另一种方式:我可以介绍什么标题值,绝对不会破坏网站上的任何东西?

如果我可以从我知道不会破坏任何东西的东西开始,然后减去我知道可以安全删除的权限,我会觉得将标题引入遗留站点更为舒服.

content-security-policy

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

Etag标头不是从jQ​​uery.ajax()跨源XHR返回的

为什么在以下最小示例中Etag没有返回标头jqXHR.getAllResponseHeaders()

运行:( node etag-server.js然后访问http://localhost:8080/)

ETAG-server.js

var fs = require('fs'),
    http = require('http');

var webServer = http.createServer(function (request, response) {
    response.writeHead(200, {"Content-Type": "text/html"});
    response.end(fs.readFileSync('frontend.html'));
});

var apiServer = http.createServer(function (request, response) {
    response.writeHead(200, {
        'Access-Control-Allow-Origin': 'http://localhost:8080',
        'Cache-Control': 'no-cache',
        'Content-Type': 'application/json; charset=utf-8',
        'Etag': 123,
        'Expires': -1,
        'Pragma': 'no-cache'
    });
    response.end(JSON.stringify({ data: [1, 2, 3] }));
});

webServer.listen(8080);
apiServer.listen(8081);
Run Code Online (Sandbox Code Playgroud)

frontend.html

<!DOCTYPE html>
<html>
<head>
  <title>Etag header not returned from jQuery.ajax() cross-origin XHR</title>
  <script src="//code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
  <script …
Run Code Online (Sandbox Code Playgroud)

jquery xmlhttprequest cross-domain node.js

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

作为捆绑安装的一部分安装的依赖项 gem 的固定或锁定版本

我正在尝试解决Windows 上ffi Gem中的错误。我需要运行bundle install一些从互联网上获取的项目。问题是bundle install尝试安装ffi版本 1.9.9时会出错。

有什么方法可以告诉我安装ffibundle install版本 1.9.8 吗?也许是一个命令行参数,或者是对or的补充。GemfileGemfile.lock

一个可能的复杂情况是,我正在处理的 Gemfile根本没有列出ffi,因此它必须由依赖项的依赖项之一拉入。

ruby bundler pinning

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