小编Ars*_*nko的帖子

我可以在node.js中指定RabbitMQ凭据吗?

我开始使用rabbit.js从node.js应用程序连接到RabbitMQ.

我被阻止了:

错误:服务器关闭了通道:403(ACCESS-REFUSED),并
    在Channel.C.accept(/.../rabbit.js/node_modules/amqplib/lib/channel 上)显示消息"默认交换时不允许使用ACCESS_REFUSED - 操作" . js:398:24
    )
    在Socket.go(/.../ rabbit)的Connection.mainAccept [as accept](/.../ rabbit.js/node_modules/amqplib/lib/ connection.js :63:33). js/node_modules/amqplib/lib/connection.js:448:48)
    在Socket.EventEmitter.emit(events.js:92:17)
...

这是预期的,因为我使用的RabbitMQ实例被配置为要求发布者和订阅者在能够使用消息队列之前提供凭据,并禁用来宾帐户.

rabbit.js的官方文档没有提到凭据.Google搜索"rabbit.js指定凭据"和"rabbit.js登录密码"尚无定论.

是否支持rabbit.js的凭据?如果没有,node.js的其他RabbitMQ客户端是否支持它们?

rabbitmq node.js

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

在进行单元测试时,100%的代码覆盖率是否真的很好?

我总是了解到使用单元测试进行最大程度的代码覆盖是很好的.我还听到像微软这样的大公司的开发人员说他们编写了比可执行代码本身更多的测试代码.

现在,这真的很棒吗?它有时似乎完全没有时间损失,只会使维护更加困难吗?

例如,假设我有一个方法DisplayBooks()可以填充数据库中的书籍列表.产品要求表明,如果商店中有超过一百本书,则只能显示一百本.

所以,有了TDD,

  1. 我将首先进行单元测试BooksLimit(),这将在数据库中保存两百本书,调用DisplayBooks()并执行Assert.AreEqual(100, DisplayedBooks.Count).
  2. 然后我会测试它是否失败,
  3. 然后我会DisplayBooks()通过将结果限制设置为100来改变
  4. 最后,我将重新运行测试,看看它是否成功.

那么,直接进入第三步是不是更容易,而且根本不进行BooksLimit()单元测试?当需求从100个书籍限制改为200个限制,更改只有一个字符而不是更改测试,运行测试以检查它是否失败,更改代码并再次运行测试以检查是否成功时,是不是更敏捷?

注意:我们假设代码已完整记录.否则,有些人可能会说,他们是对的,进行完整的单元测试将有助于理解缺乏文档的代码.实际上,进行BooksLimit()单元测试将非常清楚地显示存在最大数量的书籍,并且该最大数量为100.进入非单元测试代码将更加困难,因为这样的限制可能是虽然for (int bookIndex = 0; bookIndex < 100; ...或实施foreach ... if (count >= 100) break;.

documentation tdd unit-testing code-maintainability

28
推荐指数
4
解决办法
7350
查看次数

为什么JavaScript说数字不是数字?

我有一段JavaScript代码,预计会为变量设置一个整数值.

有些东西坏了,所以当我尝试做的时候alert(A);,它会回来NaN.isNaN(A);返回true.但是,如果我alert(typeof(A));,它说number.

那么变量怎么可以是一个数字而不是一个数字呢?也许我误解了NaN究竟是什么?


编辑:感谢答案,我看到我错了,因为:

  • 的类型NaNNumber,
  • NaN是指"不是数字",这与"不是类型Number"不同,
  • 0/0是一个很好的例子NaN:它仍然是一个数字,但JavaScript(没有其他人)可以说零的实际值除以零.1/0另一方面,返回Infinity,这不是NaN.

javascript typeof nan

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

如何查找列表中的元素是否在另一个列表中?

我想知道在第二个列表中是否可以找到第一个列表中的至少一个元素.

我可以看到两种方法.假设我们的列表是:

List<string> list1 = new[] { "A", "C", "F", "H", "I" };
List<string> list2 = new[] { "B", "D", "F", "G", "I" };
Run Code Online (Sandbox Code Playgroud)

第一种方法使用循环:

bool isFound = false;
foreach (item1 in list1)
{
    if (list2.Contains(item1))
    {
        isFound = true;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个直接使用Linq:

bool isFound = list1.Intersect(list2).Any();
Run Code Online (Sandbox Code Playgroud)

第一个是写的很长,而不是非常直接/易于阅读.第二个是短而清晰的,但表现很低,特别是在大型名单上.

这可能是一种优雅的方式吗?

c# linq performance

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

如何在" - "之后删除字符串中的任何内容?

这是我的字符串的例子.

$x = "John Chio - Guy";
$y = "Kelly Chua - Woman";
Run Code Online (Sandbox Code Playgroud)

我需要reg替换的模式.

$pattern = ??
$x = preg_replace($pattern, '', $x); 
Run Code Online (Sandbox Code Playgroud)

谢谢

php regex

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

为可变范围目的使用大括号是错误的吗?

我有时会使用大括号来隔离代码块,以避免以后错误地使用变量.例如,当我SqlCommand在同一个方法中放入几个s时,我经常复制粘贴代码块,最后混合名称并执行两次命令.添加大括号有助于避免这种情况,因为SqlCommand在错误的位置使用错误将导致错误.这是一个例子:

Collection<string> existingCategories = new Collection<string>();

// Here a beginning of a block
{
    SqlCommand getCategories = new SqlCommand("select Title from Movie.Category where SourceId = @sourceId", sqlConnection, sqlTransaction);
    getCategories.Parameters.AddWithValue("@sourceId", sourceId);
    using (SqlDataReader categoriesReader = getCategories.ExecuteReader(System.Data.CommandBehavior.SingleResult))
    {
        while (categoriesReader.Read())
        {
            existingCategories.Add(categoriesReader["Title"].ToString());
        }
    }
}

if (!existingCategories.Contains(newCategory))
{
    SqlCommand addCategory = new SqlCommand("insert into Movie.Category (SourceId, Title) values (@sourceId, @title)", sqlConnection, sqlTransaction);

    // Now try to make a mistake and write/copy-paste getCategories instead of addCategory. It will not …
Run Code Online (Sandbox Code Playgroud)

c# scope coding-style stylecop object-lifetime

19
推荐指数
4
解决办法
2404
查看次数

将HTML转换为XAML

有没有办法将HTML转换为XAML?我注意到您可以将HTML粘贴到RichTextBox中,您可以通过查看FlowDocument来获取XAML.但是,这是一个黑客.有没有更好的办法?

html wpf xaml

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

如何知道两个单词是否具有相同的基数?

我想用几种语言知道,如果两个词是:

  • 要么是同一个词,
  • 或同一个词的语法变体.

例如:

  • had并且has有相同的基础:在这两种情况下,它都是动词have,
  • citycities有相同的基础.
  • wentgone有相同的基础.

有没有办法使用Microsoft Word API不仅拼写检查文本,还可以将单词规范化为基数,或者至少确定两个单词是否具有相同的基数?

如果没有,那么允许我这样做的(免费或付费)库(不是网络服务)是什么(再次,用几种语言)?

c# grammar nlp

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

使用泛型与XmlSerializer

在C#中使用XML序列化时,我使用如下代码:

public MyObject LoadData()
{
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyObject));
    using (TextReader reader = new StreamReader(settingsFileName))
    {
        return (MyObject)xmlSerializer.Deserialize(reader);
    }
}
Run Code Online (Sandbox Code Playgroud)

(以及类似的反序列化代码).

它需要铸造而且不是很好.有没有办法,直接在.NET Framework中使用泛型与序列化?也就是说写下这样的东西:

public MyObject LoadData()
{
    // Generics here.
    XmlSerializer<MyObject> xmlSerializer = new XmlSerializer();
    using (TextReader reader = new StreamReader(settingsFileName))
    {
        // No casts nevermore.
        return xmlSerializer.Deserialize(reader);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# oop generics xml-serialization xmlserializer

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

在多次执行相同的SQL查询时重用SqlCommand更好吗?

使用相同的查询但不同的参数查询数据库时,最好是:

  • 一次性使用,
  • 或者创建两个单独的查询?

使用单个示例:

using (SqlCommand addProduct = new SqlCommand(@"insert into [Products].[Products] ([Name], [Price]) values (@name, @price)", sqlConnection))
{
    // Insert the first product.
    addProduct.Parameters.AddWithValue("@name", "Product 1");
    addProduct.Parameters.AddWithValue("@price", 41F);
    int countAffectedRows = addProduct.ExecuteNonQuery();
    Debug.Assert(countAffectedRows == 1, "Wrong number of rows affected.");

    addProduct.Parameters.Clear();

    // Insert the second product.
    addProduct.Parameters.AddWithValue("@name", "Product 2");
    addProduct.Parameters.AddWithValue("@price", 49.9);
    countAffectedRows = addProduct.ExecuteNonQuery();
    Debug.Assert(countAffectedRows == 1, "Wrong number of rows affected.");
}
Run Code Online (Sandbox Code Playgroud)

使用两个单独查询的相同代码示例:

// Insert the first product.
using (SqlCommand addProduct = new SqlCommand(@"insert into [Products].[Products] ([Name], [Price]) …
Run Code Online (Sandbox Code Playgroud)

c# refactoring readability

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