小编Ham*_*ada的帖子

NodeJS 中的空合并赋值运算符 (??=)

我正在尝试在 NodeJS 中使用 Nullish 合并赋值运算符 (??=),这可能吗?

const setValue = (object, path, value) => {
  const indices = {
      first: 0,
      second: 1
    },
    keys = path.replace(new RegExp(Object.keys(indices).join('|'), 'g'), k => indices[k]).split('.'),
    last = keys.pop();

  keys
    .reduce((o, k, i, kk) => o[k] ??= isFinite(i + 1 in kk ? kk[i + 1] : last) ? [] : {}, object)[last] = value;

  return obj;
}
Run Code Online (Sandbox Code Playgroud)
est.js:9
       .reduce((o, k, i, kk) => o[k] ??= isFinite(i + 1 in kk ? kk[i + 1] …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

在 VS Code python 笔记本中将 autopep8 和 linting 添加到 jupyter

问题

错误突出显示和自动格式化可以成为帮助人们创建出色笔记本的绝佳工具。我正在尝试更改 VS 代码上的设置,以允许我在 python 笔记本中自动格式化为 pep8。

此 Jupiter 笔记本页面上,我发现我必须在 VSCode 的设置 > 首选项中的 .json 文件中添加一些行才能执行此操作。我特别有兴趣将我的代码更改为 pep8 编码约定,并添加 linting 以突出显示错误。

  1. linting(错误突出显示)
  2. 自动格式化(autopep8)

我在 Ubuntu 18.04 上使用 VS Code。以下是我的尝试,导致错误“不支持或定义代码语言”。

试图

在 VS code 中安装 Python 扩展和 autopep8 扩展并运行后

pip3 install autopep8
Run Code Online (Sandbox Code Playgroud)

我收到错误消息并且无法使用 pep8。

在此输入图像描述

如果您知道如何在 VS Code 中为 Jupyter 笔记本设置高效的工作环境,我将非常感谢您的帮助

概括

如何设置:

  1. linting(错误突出显示)
  2. 自动格式化(autopep8)

在 python 笔记本的 VS 代码中。

编辑1:

我也尝试在命令面板中运行autopep8并收到错误

Command 'autopep8' resulted in an error (Running the contributed command: 'extension.sayHello' failed.)
Run Code Online (Sandbox Code Playgroud)

python visual-studio autopep8 visual-studio-code jupyter-notebook

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

使用辅助监视器时,如何在 window.onmousemove 上获取相对于主机屏幕的 e.screenX/Y?

我以为这很容易,但事实证明并非如此。

采取以下情况:底部有一个主桌面,而该主桌面上方有一个辅助桌面。

在此处输入图片说明

目标是获取鼠标 X 和 Y 相对于在辅助桌面上托管窗口的屏幕的位置。天真的方法是:

const onMouseMove = e => {
  const hostScreenX = e.screenX;
  const hostScreenY = e.screenY;

  document.body.innerHTML = `${hostScreenX}x${hostScreenY}`;
};

window.addEventListener("mousemove", onMouseMove, false);
Run Code Online (Sandbox Code Playgroud)

事实证明,screenY当在辅助屏幕(顶部)上运行时,这会返回一个负数。主屏幕被视为“零边界”,之前的所有内容都在负空间中。

我们可以使用screen.availTopand来解决这个问题screen.availLeft

const onMouseMove = e => {
  const hostScreenX = e.screenX - window.screen.availLeft;
  const hostScreenY = e.screenY - window.screen.availTop;

  document.body.innerHTML = `${hostScreenX}x${hostScreenY}`;
};

window.addEventListener("mousemove", onMouseMove, false);
Run Code Online (Sandbox Code Playgroud)

好多了,除了它实际上是不正确的:因为availTop空间包括永久操作系统UI的空间(在MacOS上是工具栏,在Windows上是工具栏,如果你把工具栏从默认的底部移到顶部),我们错误地减去工具栏空间。

例如,在 chrome 中的 MacOS 上,当将鼠标移动到最顶端时,这会给我们hostScreenY80,而它应该是 103(macos 工具栏是 23 像素)。

然后你可能会认为我们可以通过加回高度差 -availHeight 来解决这个问题:

html javascript multiple-monitors mouseevent dom-events

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

java.net.HttpClient 上有连接池的处理吗?

我想使用 Java 11 HttpClient 并使用 HTTP 1.1 的 Keep-Alive 参数在同一地址上发送多个请求。我知道 Apache HTTP 客户端有类似的功能,但是 Java API 客户端有类似的功能吗?

java api connection-pooling java-http-client

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

如何在 VS Code 中使用 d.ts 文件进行智能感知,类似于 NPM 方法

我有一个nodejs项目(用JS)。不幸的是,我必须利用很多节点全局变量。

一切工作正常(甚至很多人建议不要使用全局变量),除了:

全局变量没有智能感知。所以每次我想使用全局函数/对象时,我都需要查看它的代码并找出参数是什么,它返回什么等等。

假设我有一个全局变量,它是一个纯对象:

foo = {
    bar: {
        level2: {
            level3: {
                level4: "abc
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

处理它是相当烦人的,因为我在使用它时无法“看到”对象的结构,并且在编写代码时很容易出错。

我发布这个问题的原因是 ...npm 包

有很多用 vanilla JS 编写的包,其中大多数都使用强大的 d.ts 文件。安装该包后,您可以从项目中的任何位置使用它,并且 VS code 将为它们提供智能感知。如果您单击 VS 代码的工具提示(不知道它怎么称呼...类型定义工具提示?),您将导航到包的 d.ts 文件(不是命令的实际实现)。

所以我的问题是如何在我的项目中做同样的事情。我不会将其发布为 npm,我只想在项目中的某个位置有一个 d.ts 文件,这样我就可以使用我的全局文件,而无需在每次需要回忆它的作用时查看其实现。

javascript node.js typescript visual-studio-code

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

使用 mongo-go-driver,如何有效地从 WriteError 中检索重复的字段名称?

我的收藏中有三个独特的索引。当用户不小心插入字段中重复的数据时B,我如何知道重复项来自字段B

在违反唯一索引约束时, mongo-go-driver 行为返回 err WriteException,它基本上由 WriteError 数组和一些其他对象组成。

WriteError本身(来自 mongo-go-driver):

// WriteError is an error that occurred during the execution of a write operation. This error type is only returned as part
// of a WriteException or BulkWriteException.
type WriteError struct {
    // The index of the write-in the slice passed to an InsertMany or BulkWrite operation that caused this error.
    Index int

    Code    int
    Message string
}
Run Code Online (Sandbox Code Playgroud)

在调试会话期间,我发现 WriteError 的值为:

{
    Index: …
Run Code Online (Sandbox Code Playgroud)

go mongodb mongo-go

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

MongoDB Realm 有 [与 OAuth2 提供程序交换访问代码时出错]

我目前正在创建一个简单的应用程序,目的是:

  • 通过 GoogleSignInSDK 使用 Google 登录,然后token从 google获取,并将其用于io.realm.mongodb.Credentials.google(token).
  • 但我总是得到错误E/SignInActivity: AUTH_ERROR(realm::app::ServiceError:47): error exchanging access code with OAuth2 provider

我试过:

[realm.mongodb.com 上的错误][1][1]:https://i.stack.imgur.com/Esgi5.png

非常感谢您阅读本文,我绝望地等待任何对相同问题有解决方案的人。

陈清忠

java android realm mongodb

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

在 Angular 中禁用垫选择

我有一个下拉菜单。当所选值为Uber时,我想禁用整个 mat-select 。否则,需要启用它。

<mat-label>DB Property Name</mat-label>

<mat-select class="dBProperty"  name="dbpropertyName{{i}}" [(ngModel)]="mappingObj.dbpropertyName" [disabled]="selectedValue=='**Uber**'?'disabled':'null'" required>

<mat-option *ngFor="let options of dBPropertyArray" [value]="options.dBProperty" >{{options.dBProperty}}
                                                    </mat-option>

                                                </mat-select>
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它..?这是我的代码。我哪里出错了?

angular-material angular

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

如何捕获负向后查找术语正则表达式之间未知数量的单词?

我试图排除在“狗”一词之前有“所有者”一词的记录

  • 业主有一只狗(不含)
  • 主人有一只黑棕色的狗(不含)
  • 约翰有一只狗(包括)
  • 约翰有一只黑色和棕色的狗(包括)

这是当前的正则表达式:

\b(?<!owner\s)\w+\sdog\b
Run Code Online (Sandbox Code Playgroud)

这适用于单个未知单词(排除“主人有狗”,但包括“主人狗”)),但是,我无法捕获多个单词,这些单词在“主人”和“主人”之间的所有单词中保留其负面外观。 “狗”。

非常感谢

python regex data-mining

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

Qt QTableView 调整大小以适合内容

主窗口

你好,我已经创建了主窗口,如上所示。我想尽可能地扩展第一个小部件(绘图),以便其他两个小部件适合内容(或者实际上,我想删除表格下方的空白空间)。我不知道该怎么做。

目前,两个表的垂直标题大小策略都设置为 FitToContent。

另外,它需要是动态的,因此如果我向表中添加新行,新行应该是可见的(表会更大)。

我希望我足够清楚,也希望不需要可运行的代码。

c++ python qt qtableview pyside

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