小编mon*_*ist的帖子

无法从docker容器访问本地网络IP

在其上运行macOS和docker ubuntu,我无法ping我的本地网络的IP地址.以下是我的docker容器的网络配置.我可以ping我的主机的IP地址,但我无法访问本地网络上的其他IP地址.

root# ping 172.17.101.192
PING 172.17.101.192 (172.17.101.192) 56(84) bytes of data.
From 172.17.0.3 icmp_seq=1 Destination Host Unreachable
From 172.17.0.3 icmp_seq=2 Destination Host Unreachable

root# ifconfig         
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:03
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
Run Code Online (Sandbox Code Playgroud)

是否有任何网络配置可以帮助我执行此操作?

我试过net=host但它没有帮助它.

macos ubuntu networking docker

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

在proxyquired对象中存根函数

我想对以下简化模块进行单元测试:

const Logger = require('logplease');
const logger = Logger.create('utils');

const tester = {

    one: () => {
        logger.log('called real one()');
        tester.two();
    },
    two: () => {
        logger.log('called real two()');
    },
};

module.exports = {
    one: tester.one,
    two: tester.two
};
Run Code Online (Sandbox Code Playgroud)

我正在logplease使用Proxyquire替换外部依赖,这非常有效.但是我需要存根,two()因为我想进行单元测试,one()同时消除two()在实际代码中运行时产生的副作用.

it.only('stubbing functions on the "proxyquired" object under test', function(done) {

    const loggerStub = {
        create: () => {
            return { log: (msg) => { console.log('fake logger: ', msg); } }; …
Run Code Online (Sandbox Code Playgroud)

unit-testing stubs sinon proxyquire

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

lit-element:如何有效地从父级到子级自定义元素共享属性

问题:有没有办法在不触发其render功能的情况下将属性更改传播到子元素?目前,当我更新父级中的属性时,switchViewModeHandler它会触发子级的重新渲染。

用例:将父级切换到“编辑”模式也应该为其所有子级切换相同的模式。

怀疑:我应该使用自定义事件吗?问题在于它将是一个复杂的嵌套元素网络,事件将变得难以快速调试(Polymer 已经遇到了这个问题)。

设置:父元素:

class ParentElement extends LitElement {
  @property() viewMode;

  constructor() {
    this.viewMode = ViewMode.editable;
  }

  static get properties() {
    return {
      viewMode: { type: String, reflect: true },
    };
  }

  private switchViewModeHandler(event: MouseEvent): void {
    this.viewMode =
      (this.viewMode === ViewMode.editing) ? ViewMode.editable : ViewMode.editing; // update my own edit mode
    const options: HTMLElement[] = (Array.from(this.children) as HTMLElement[]);
    options.forEach((item: HTMLElement) => {
      item.viewMode = this.viewMode;
    });
  }

  render() {
    return …
Run Code Online (Sandbox Code Playgroud)

javascript typescript lit-element lit-html

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

在IE6中使<hr>标签不可见?

有没有办法摆脱<hr>IE6中的元素边框而不将其包装在另一个元素中?不幸的是,另一项要求是没有黑客攻击.

我已经设法通过为边框设置样式来为所有浏览器执行此操作:

hr.clear {
    clear: both;
    border: 1px solid transparent;
    height: 0px;
}
Run Code Online (Sandbox Code Playgroud)

然而IE6仍然呈现1像素的白线.

css internet-explorer-6

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

单元测试:导入的TypeScript依赖项使用的模拟文档?

我需要以某种方式模拟document对象,以便能够对传统的TypeScript类进行单元测试.该类导入另一个class(View.ts),它具有一个import第三方模块,并且反过来导入其他假定document存在的东西.

我的进口链:

controller.ts - > view.ts - > dragula - > crossvent - > custom-event

// Controller.ts:
import { View } from './View';    

// View.ts: 
const dragula = require('dragula');

// dragula requires crossvent, which requires custom-event, which does this:
module.exports = useNative() ? NativeCustomEvent :

'function' === typeof document.createEvent ? function CustomEvent (type, params) { 
    var e = document.createEvent('CustomEvent');
    // ...
} : function CustomEvent (type, params) {
    // ...
}

// …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocha.js typescript proxyquire

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

测试JavaScript代码而不重新创建标记?

我想在我们的网络应用程序中测试JavaScript代码.我们正在使用jQuery库和.Net MVC.我看了这些答案,jqUnit看起来不错,所以我试了一下,只是意识到我必须为我想要测试的每个页面重新创建所有标记.

我错过了什么吗?有没有其他方法来测试JS/jQuery代码?我们的标记有时很复杂,并且由于AJAX调用而变化很大.

我能想到的最好的尝试是将我们的应用程序粘贴在测试页面上的iframe中.尚未尝试过.

javascript markup jquery unit-testing

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

从执行函数返回一个承诺?

尝试与JS API交互,但在Grunt任务运行时失败; 我认为我的逻辑很困惑.我的步骤:

  • 从文件中获取令牌,检查它们(check_tokens)
  • 如果他们是旧的 - 刷新他们(refresh_tokens)
  • 调用API刷新,如果失败 - 获取新的(authorize_with_api)< - 这就是问题
  • authorize_with_api拒绝与错误或解决与令牌

目前,Grunt任务报告UnhandledPromiseRejectionWarning并且永远不会完成.如果我注释掉它的调用authorize_with_api然后正确退出并出现错误,我会caught error!打印出最顶层的消息.

为什么我不能从执行函数中返回一个承诺?我的逻辑出了什么问题?

/* global sdk, config, tokens */
return getTokens().then((p_tokens) => {
    tokens = p_tokens;
    return check_tokens(tokens);
}).then((tokens) => {
    console.log('then() is called!');
}).catch((err) => {
    console.error('caught error!', err);
}); 

function check_tokens(tokens) {
    if(are_old(tokens)) { // returns true
        return refresh_tokens(tokens);
    }
    return Promise.resolve(tokens);
}

function refresh_tokens(tokens) {
    return new Promise(function(resolve, reject) { …
Run Code Online (Sandbox Code Playgroud)

javascript promise ecmascript-6 es6-promise

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

使用 JavaScript 自动完成类 Java 代码?

作为一名 Java 开发人员,我已经习惯于能够从 IDE 的代码完成中看到所有相关信息。下面是一个来自 Eclipse IDE 的代码自动完成示例。例如,您可以看到该函数的返回类型contentEquals是一个布尔值,并且它需要一个类型为 的参数StringBuffer。此外,如果有 JavaDoc,您甚至可以很好地解释应该如何使用该函数。

在此处输入图片说明

现在我在用 JavaScript 编码时正在寻找类似的东西。我开始使用 Webstorm 是因为我想要一个具有更高级功能的 IDE,但是当您查看代码自动完成功能时,它要么看起来很糟糕,要么我没有正确使用它。

有人可以帮我弄清楚吗?

下面是一个更具体的例子:

假设您想通过使用 navigator.geolocation 获取用户的位置。假设您知道通过调用 getCurrentPosition() 方法可以完成的工作。

你继续输入你的IDE(在我的例子中是Webstorm):

navigator.geolocation.getCurrentPosition()
Run Code Online (Sandbox Code Playgroud)

以下是 Webstorm IDE 的内容:

在此处输入图片说明

好的,它告诉我有一个强制参数和几个可选参数来调用这个方法。比方说,您只想使用强制参数来调用它,该参数应该是一个函数。到目前为止一切顺利,但什么样的功能呢?这个函数应该带参数吗?它会返回任何东西吗?没有任何提示。

我在网上的各种例子中发现,这个回调函数实际上只带一个参数,所以我继续写它:

function printPosition(position) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但是下一个问题来了:这个参数是什么类型的position?你能用它做什么?

所以我尝试代码自动完成: 在此处输入图片说明

嗬嗬?它给了我各种各样的东西,但根本不是我正在寻找的东西。所以我再次以谷歌结束。

这是它应该是什么样子:

console.log(position.coords.latitude + ' , ' + position.coords.longitude);
Run Code Online (Sandbox Code Playgroud)

老实说,我从来没有想到这是通过查看自动完成来完成的,这很烦人,因为我习惯于在 Java 中编码时能够做到这一点。

任何人都可以与我所经历的有关吗?我错过了什么吗?任何帮助将不胜感激!

javascript autocomplete webstorm

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

使用 CSS 网格或 Flexbox 在垂直列中排序项目?

是否有一种仅 CSS 的方法可以在不使用像素值的情况下对网格布局的列中的项目进行排序?Flexbox 也可以工作。我需要相同的 HTML 来启用以下两种场景(动态生成的 HTML 中的列数在 1 到 5 之间):

案例一:

| item 1          | item 2          | item 3          |
| item 4          | item 5          | item 6          |
| item 7          | item 8          | item 9          |
Run Code Online (Sandbox Code Playgroud)

情况B:

| item 1          | item 4          | item 7          |
| item 2          | item 5          | item 8          |
| item 3          | item 6          | item 9          |
Run Code Online (Sandbox Code Playgroud)

情况A很简单,只需要执行以下操作:

.case-a[data-column-count='3'] {
    display: grid;
    grid-template-columns: …
Run Code Online (Sandbox Code Playgroud)

html css flexbox css-grid

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

如何在使用 AbortController 中止后重新启动 fetch api 请求

我正在开发一个外卖订单接收应用程序(使用 WooCommerce API),订单将立即收到。我创建了一个简单的仪表板,其中显示所有订单,并使用 fetch API 和setInterval.

因此,当用户单击他们在仪表板上收到的订单时。用户管理订单的位置会出现模型弹出窗口。但由于 setInterval(5 秒),模型消失了。为了解决这个问题,我使用该技术来清除间隔,以便当用户单击订单间隔时被清除,并且不会进一步请求,直到用户管理模型框中的订单并按保存按钮,保存时我再次调用函数setInterval

但在这种技术中,存在一个问题:如果setInterval要执行并且用户单击订单,并且由于 fetch 已被触发并且所有订单都已刷新,则模型会消失。所以我必须再次点击订单。

然后我使用AbortControllerAPI​​,它完全按照我想要的方式工作。

AbortController 中止异步获取请求,一旦我中止获取请求,它就不会再次启动,而不是给出错误告诉操作已中止(Uncaught (in promise) DOMException: The operation was aborted)。

长话短说,如何使用 AbortController 再次重新启动 fetch API 请求?

const controller = new AbortController();
const signal = controller.signal;

function gettingOrders(){

var refreshInterval = setInterval(async function(){

const response = await fetch('index.php',{
    method: "GET",
    signal: signal,
    headers : { 
      'Content-Type': 'text/html',
      'Accept': 'text/html'
   }});
   try {

    const html = await response.text();
    var parser …
Run Code Online (Sandbox Code Playgroud)

javascript abort fetch setinterval async-await

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