小编use*_*472的帖子

D3JS的单元测试策略是什么?

我是D3JS的新手,想了解D3 JS的测试策略.

要详细说明问题 - 请考虑我有一个简单的页面,显示使用TSV文件的折线图.

Java脚本代码:

function LineManager() {}
function LineProperties() { // Line Properties }
LineManager.prototype.draw = function(properties) { 
  // D3 code to draw a line with the given properties.
}
Run Code Online (Sandbox Code Playgroud)

我无法考虑编写单元测试时要考虑的测试用例.这是我写的一个示例测试..

it("should throw an exception if line graph properties are not set.", function() {
        expect(lineManager.draw.bind(lineManager)).toThrow("Line Graph properties not set");
    });

it("It should have single line chart", function() {
    lineManager.draw(properties);
    expect(lineManager.countLines()).toEqual(1);
});
Run Code Online (Sandbox Code Playgroud)

我已编写单元测试以确保正确生成TSV文件.但编写单元测试以查看数据是否正确呈现是否有意义?这不是更多的d3js单元测试而不是单元测试我的功能吗?

所以我的问题是 - 对于由d3js生成的图表应该考虑哪些测试?

unit-testing d3.js

23
推荐指数
3
解决办法
9596
查看次数

如何实现@Singleton注释?

可能是一个重复的问题.但我需要实现类似的东西

@Singleton
public class Person {
}
Run Code Online (Sandbox Code Playgroud)

这将确保只有Person对象的单个实例.

一种方法是使构造函数私有化.但这使Singleton注释变得多余.

我真的无法理解我是否真的可以将对象创建限制为单个对象而不会使构造函数变为私有.

这甚至可能吗?

java

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

如何在Big Query中透视表

我正在使用Google Big Query,并且我正在尝试从公共示例数据集中获取透视结果.

对现有表的简单查询是:

SELECT * 
FROM publicdata:samples.shakespeare
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

此查询返回以下结果集.

在此输入图像描述

现在我要做的是,从表中获得结果,如果单词是勇敢的,选择"BRAVE"作为column_1,如果单词出席,选择"ATTENDED"作为column_2,并聚合单词计数对于这2.

这是我正在使用的查询.

SELECT
(CASE WHEN word = 'brave' THEN 'BRAVE' ELSE '' END) AS column_1,
(CASE WHEN word = 'attended' THEN 'ATTENDED' ELSE '' END) AS column_2,
SUM (word_count)
FROM publicdata:samples.shakespeare
WHERE (word = 'brave' OR word = 'attended')
GROUP BY column_1, column_2
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

但是,此查询返回数据

在此输入图像描述

我在寻找的是

在此输入图像描述

我知道这个数据集的这个数据集没有意义.但我只是以此为例来解释这个问题.如果你可以为我提供一些指示,那将是很棒的.

编辑:我还提到了如何使用BigQuery模拟数据透视表?它似乎也有我在这里提到的相同问题.

google-bigquery

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

Cassandra 中批处理语句的替代方案,用于原子操作以避免性能影响

我们有一个使用 Cassandra 作为数据存储的应用程序。为了方便访问,相同的数据需要存储在具有不同分区键的多个表中。为了将数据存储到多个表中,使用了 BatchStatements。使用批处理语句的原因是确保数据写入全部或不写入。

通过此设置,最近由于用户群的增加,我们开始看到大量写入超时错误。我们发现许多博客和文章都提到 BatchStatements 被错误地用于存储多个分区。

参考:

其原因似乎是协调器节点负载过大,进而导致延迟。可以选择将 cassandra.yaml 中的 write_request_timeout_in_ms 增加到高于默认值 5 秒的值。我们尝试了此操作,但请求仍然失败。因此,我们更新了此设置,现在使用executeAsync。这样,WriteTimeout 异常就完全消失了。

但现在的问题是——我们如何处理原子性?以下是更新为使用executeAsync 的代码。使用executeAsync 是使用批处理语句的正确替代方法吗?有什么方法可以在异常块中处理回滚吗?

try {
    for (ListenableFuture<ResultSet> futureItem : futureItems) {
        futureItem.get();
    }
} catch (Exception e) {
    // need to handle rollback ?
}
Run Code Online (Sandbox Code Playgroud)

cassandra datastax

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

404 的标准 Apache 错误文档的位置是什么?

我正在为 apache 定制各种错误代码,我知道如何做到这一点。(通过添加新页面并在 /etc/httpd/conf/httpd.conf 中针对各种错误代码引用它们。

我的问题是 - apache 的标准错误消息从何而来?例如,如果我运行本地 apache 并尝试浏览不存在的 URL,则会出现以下错误。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /not_found was not found on this server.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at localhost Port 80</address>
</body></html>
Run Code Online (Sandbox Code Playgroud)

我的 httpd.conf 没有任何 ErrorDocument 覆盖。所以这是标准的 apache 错误。当我 grep 时,我没有找到任何包含这些文本的文件。

那么这是否意味着这是来自 apache 模块?

apache httpd.conf

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

部署 Gen2 Cloud Function 时出现权限被拒绝错误

我们根据给定的需求开发了云功能,并使用第一代进行了初步验证,一切顺利。但需要进行的修改很少,因此需要额外的处理时间。因此我们必须切换到--gen2

以下是 gcloud 函数部署命令。

gcloud functions deploy gen2-function \
    --entry-point gen2 --runtime python37 --trigger-http --allow-unauthenticated \
    --service-account=<> --region=<> --project=<> --timeout=3600s --gen2
Run Code Online (Sandbox Code Playgroud)

此命令成功部署了功能和内部云运行服务,但最终失败并出现以下错误

[INFO] A new revision will be deployed serving with 100% traffic.
ERROR: (gcloud.functions.deploy) PERMISSION_DENIED: Permission 'run.services.setIamPolicy' denied on resource 'projects/<project>/locations/<region>/services/gen2-function' (or resource may not exist).
Run Code Online (Sandbox Code Playgroud)

当我们检查cloud run时,服务名称“gen2-function”确实存在。

有人可以指导一下吗?

google-cloud-platform google-cloud-functions google-cloud-run

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

Cassandra 作为分布式锁

我正在尝试评估分布式锁定的各种选项。我入围的选项中很少有 Zookeeper、MySQL 和 Cassandra。

对于 Cassandra,我的想法是创建一个表说锁

create table if not exists app.locks (
    key text,
    primary KEY (key)
);
Run Code Online (Sandbox Code Playgroud)

然后,作为acquireLock过程的一部分,我可以执行插入(如果不存在)查询,如下所示。acquireLock过程只有当 insert 返回 true 时才会返回。

INSERT INTO app.locks (key) VALUES ('KEY_1') IF NOT EXISTS;
Run Code Online (Sandbox Code Playgroud)

释放锁可以删除该键的数据,以便其他线程可以尝试获取它。

我正在对我入围的所有选项进行一些性能测试。从结果来看,Zookeeper 和 MySQL 没有显示任何错误,而 Cassandra 的结果非常不一致,并且在所有测试中都显示很少或更多的错误。大多数情况下,错误是“ Cassandra 在一致性 QUORUM 写入查询期间超时

我的问题是,Cassandra 是否用于分布式锁定?如果尝试获取此锁的并发线程数量超过,它可以扩展吗?

期待专家的想法。提前致谢。

locking cassandra

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