小编Dan*_*ina的帖子

在导入依赖项之前开玩笑模拟窗口对象

在导入依赖项之前,我需要在窗口对象中设置一个值。假设我有这个代码

\n\n
// foo.test.js\nimport { dependency } from \'./foo\'\n\ndescribe(\'...\', () => {\n  it(\'...\', () => {\n    // use dependency\n  })\n})\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是为了导入依赖项,我需要在中定义一个值window.myValues

\n\n
// foo.js\nexport const dependency = {\n  key: window.myValue.nestedValue\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

该代码在导入文件时会给我一个错误,因为window.myValue.nestedValue试图访问nestedValue未定义的属性。

\n\n

我怎样才能做到这一点?

\n\n

编辑\n按照下面christianeide 的答案,我收到以下错误

\n\n
  \xe2\x97\x8f Test suite failed to run\n\n    TypeError: Cannot convert undefined or null to object\n\n      2 |   delete global.window.myValue\n      3 |   global.window = Object.create(window)\n    > 4 |   global.window.myValue = {\n        |                 ^\n      5 | …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs

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

如何使用 JSDOC 记录全局变量的类型

我有一段在浏览器上运行的代码。有一个从 CDN 加载的库,它将一些变量放在全局范围内。我如何记录该变量的类型?

例如

index.hmtl => 置于globalVariable全局范围

...
<script src="//cdn.library.com/library.js"></script>
...
Run Code Online (Sandbox Code Playgroud)

index.js => 使用globalVariable

/**
 * @type {SomeType} globalVariable
 */
const foo = globalVariable()
Run Code Online (Sandbox Code Playgroud)

类似的东西,所以我可以指定globalVariable. 那可能吗?

javascript global-variables jsdoc

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

Recyclerview使用不同的最后一项作为"添加"项目

我想用的物品,其中最后一个项目是一个按钮,添加了"标准"类型的新项目列表中创建的布局.它应该像Google Keep列表一样,在列表的末尾有一个永久的"添加"项. Google Keep列表示例

我尝试了两种方法来实现它.第一个很简单,但我发现了一个问题.第二个并不那么简单,性能更差.另外,我认为我使用的第二种方式RecyclerView是非预期的方式,我认为我可以找到性能问题.

你会怎么做?

第一种方式

第一个应该是最简单的,即添加相同的布局a,RecyclerView然后ViewGroup包含"添加"项.作为父级,我使用LinearLayout带有"添加"项布局的RecyclerViewInclude标记.这实际上是在一个CoordinatorLayout因为我使用a BottomSheet来选择要添加的新"标准"项目.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBackgroundLight"
    android:orientation="vertical">

    <!-- Other Views -->

    <android.support.v7.widget.RecyclerView
        android:id="@+id/mainRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <include
        layout="@layout/itemAdd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

问题是"添加"项位于下方RecyclerView,并且当它RecyclerView为空时都消失.

第二种方式

然后我尝试了第二种方法,即从中创建"添加"项RecyclerView.Adapter.到目前为止,这样做是有效的,尽管我确信这不是最好的方法.我将粘贴代码,在下面我解释背后的原因.

适配器

public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
    private final LayoutInflater mInflater;
    private BottomSheetBehavior bottomSheetBehavior;
    private int count = 0;
    private final List<Object> mDataset;

    // Standard constructor. I …
Run Code Online (Sandbox Code Playgroud)

performance android android-layout android-recyclerview

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

RecyclerView删除动画错误

我已经实现了RecyclerView可以添加和删除项目的位置.我想在最后一个位置添加添加的项目,每当我添加一个新项目时,动画运行良好.也就是说,最后一个项目向下移动,让新项目的空间淡入.

当我删除项目时,有一个问题,我不知道如何解决.我希望它的表现如下:

  1. 淡出删除的元素,
  2. 向上移动它下面的所有项目.

实际发生的是,首先,最后一项消失,然后动画的其余部分发生.当已删除元素下方的项目向上移动时,最后一项将重新显示为来自墙后方.

对我来说,似乎RecyclerView缩小到"动画后"高度,然后执行动画.

我没有定义ItemAnimator,所以DefaultItemAnimator必须使用的那个.我观看了这个视频,并supportsPredictiveItemAnimations在自定义实现中覆盖了该方法LinearLayoutManager,但它没有修复它.

android animator android-recyclerview

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

如何使用Android Studio录制带有应用声音的视频?

我正在使用Android Studio 2.1开发一个应用程序,我想用声音录制一个用法示例的视频.

我已经录制了一些视频,但总是没有声音.由于我的应用程序中的声音是一个关键功能,我希望视频与我的应用程序的音频输出.

可能吗?如果是的话,我该如何使用它?

谢谢!

android video-capture audio-recording

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

使用 heapify 与 heappush 创建堆。哪个更快?

我必须创建一个存储距离的优先队列。为了构建堆,我正在考虑以下两种可能性:

from heapq import heapify, heappush
n = 35000  # input size

# way A: using heapify
dist = []
for i in range(n):
  dist.push(distance)  # distance is computed in O(1) time
heapify(dist)

# way B: using heappush
dist = []
for i in range(n):
  heappush(dist, distance)  # distance is computed in O(1) time
Run Code Online (Sandbox Code Playgroud)

哪个更快?

推理

根据文档heapify()以线性时间运行,我猜测heappush()以 O(log n) 时间运行。因此,每种方式的运行时间为:

  • 答:O(2n) = O(n)
  • B: O(n log n)

然而,A 比 B 快对我来说是违反直觉的。我错过了什么吗?A真的比B快吗?

**编辑

我一直在用不同的输入和不同大小的数组进行测试,但我仍然不确定哪个更快。

阅读 Elisha …

python heap performance time-complexity

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

使用 Reflect.defineProperty 代替 Object.defineProperty 更好吗?

将 eslint 与 React 配置结合使用时,我在使用Object.defineProperty. 错误说:

避免使用Object.defineProperty,而是使用Reflect.defineProperty。(偏好-反思)

在Preferred-Reflect 的eslint文档中,他们说它已被弃用,原因是:

现在,这条规则的初衷似乎被误导了,因为我们已经了解到,Reflect方法实际上并不是为了替换Object规则建议的对应项,而是作为与代理一起使用的低级原语存在,以便复制默认行为各种先前存在的功能。

Reflect.defineProperty那么我的问题是:使用而不是有什么优势吗Object.defineProperty

javascript ecmascript-6 es6-proxy

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

如何释放 unordered_map 内存?

问题

我已经看到使用map.clear()并且map.rehash(0)不会从我的 RAM 中释放预期的内存。

我用以下代码创建了一个程序:

int main() {
    std::unordered_map<std::string, int> m1;
    std::unordered_map<std::string, int> m2;
    
    // fill the maps m1 and m2 with 5 million elements

    // bucket_count = 5098259; size = 5000000
    
    // now I clear m1
    m1.clear();
    m1.rehash(0);
      // m1: bucket_count = 2; size = 0
      // m2: bucket_count = 5098259; size = 5000000

    // now I clear m2
    m2.clear();
    m2.rehash(1);
      // m1: bucket_count = 2; size = 0
      // m2: bucket_count = 2; size …
Run Code Online (Sandbox Code Playgroud)

c++ memory memory-leaks memory-management

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

Immer 不支持在数组上设置非数字属性

我正在尝试使用从服务器获取的一组数据来更新一段状态。这是我的减速器:

const schoolsDataReducer = (state = { data: [] }, action) =>
  produce(state, draft => {
    switch (action.type) {
      case SET_INITIAL__DATA:
        draft.data = [...action.payload.data]
        break
    }
  })
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

“Immer 不支持在数组上设置非数字属性:数据”

我应该如何存储对象数组?
状态中的数组是否被认为是不好的做法?
我错过了什么吗?

javascript reactjs redux immer.js

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

使用node.js登录Firebase服务器:databaseAuthVariableOverride"SyntaxError:Unexpected identifier"

我按照指南将具有有限权限的服务器登录到Firebase.我的代码看起来像:

firebase.initializeApp({
  serviceAccount: "myJsonFile.json",
  databaseURL: "https://myAppAddress.firebaseio.com/"
  databaseAuthVariableOverride: {
    uid: "server"
  }
});
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我收到以下错误:

  databaseAuthVariableOverride: {
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SyntaxError: Unexpected identifier
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
Run Code Online (Sandbox Code Playgroud)

我是node.js的新手,这是我第一次尝试运行服务器.我已经设法以无限制的权限运行它,但是在添加databaseAuthVariableOverride它时会因上面的错误而崩溃.

任何建议表示赞赏!

node.js firebase server firebase-realtime-database

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

在下列情况下,我可以避免在C++中复制unordered_map吗?

上下文

我正在尝试使用C++的动态编程算法来解决旅行商问题.我试图解决25个城市的问题,这意味着我必须在每次迭代中存储多达500万个键值对. unordered_map

使用这个算法与Python和4GB ram我的进程由于内存不足而被杀死,所以我试图提高内存中的性能.

问题

为了减少使用的内存量,我试图保留两个unordered_set,一个具有前一个迭代的值,另一个具有新值.

std::unordered_map<std::string, int> costs;
std::unordered_map<std::string, int> new_costs;

for (int m = 1; m <= n; m++) {
  new_costs.clear();
  while (something) {
    // I build the content of new_costs based on the content of costs
  }

  // Here I want to make costs point to new_costs and free new_costs to
  // build the next iteration
  costs = new_costs; // ??
}
Run Code Online (Sandbox Code Playgroud)

我不知道是否可以避免复制所有内容new_costs,costs因为我们正在讨论数百万个元素.

我想知道我是否可以使用指针来 …

c++ memory algorithm memory-management unordered-map

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

req.session是未定义的快递会话

我知道这个问题已被问过好几次了.但是,我读过的答案都没有解决我的问题.

其中许多已经过时用于快递v4,因为快递会议目前是一个单独的模块.那些问题/答案在这里:

其他问题已更新,但是给出的解决方案并不能解决我的问题.那些问题/答案在这里:

大多数解决方案是配置应用程序时的中间件序列.我尝试了不同的选项,但我找不到正确的方法.也许就是这样.

在其他解决方案中,有人说session中间件无法被调用,因为如果是,req.session则会被定义.我在之前使用过中间件app.use(session({...})),并检查两者是否被调用.

我也在这个问题中发现有人说他req.session在商店断开连接时未定义.到目前为止我正在使用默认商店.这可能是问题吗?

我收到这个错误:

TypeError:无法读取undefined的属性'destroy'

当我尝试使用req.session.destroy()login.js 注销会话时它会中断(请参阅下面的代码)


我的代码

server.js

const express = require('express');
const session = require('express-session');
const mongo = require('mongodb');
const passport = require('passport');
const path = require('path');
const routes = require('./app/routes');
const login = require('./app/routes/login.js');

const app = express();
app.use(session({
  secret: 'key',
  resave: false,
  saveUninitialized: true,
}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/public', express.static(path.normalize('./public')));
app.use(routes);
app.use(login);
app.set('view engine', 'pug'); …
Run Code Online (Sandbox Code Playgroud)

session node.js express express-session

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