小编lon*_*nix的帖子

Node 的 bcrypt 和 bcryptjs 库有何不同?

我需要在 Node 中使用 bcrypt,像往常一样,有 27 个无数的库可供选择。

npm 上的两个顶级包是

  • bcrypt 247k 下载量/月
  • bcryptjs 337k 下载量/月
  • (还有什么要考虑的吗?)

它们有何不同?是否有令人信服的理由或用例来使用其中一个?

显然,一个是纯 JS,另一个绑定到本地 C++ 加密库。所以后者比前者

我读过应该选择最慢算法最快实现。所以这意味着我应该选择非 JS 的。然而,JS 更受欢迎。为什么在 node 中会出现这种情况——“纯 js”包比使用 node-gyp 绑定到本机库的包更可取有什么原因吗?

javascript encryption bcrypt node.js

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

何时使用 HTTP 状态代码 425“太早”

425 “太早”状态代码的描述

表示服务器不愿意冒险处理可能重播的请求

它如何在现实世界场景中使用?示例将不胜感激。

rest http-status-codes

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

.NET 6PeriodicTimer 具有最小时计时

.NET 6 引入了PeriodicTimer.

我需要每分钟、每分钟都做点什么。例如:09:23:0009:24:0009:25:00, ...

但在一分钟的时间内 -new PeriodicTimer(TimeSpan.FromMinutes(1))从 开始09:23:45,我将在以下位置得到“刻度”:09:24:45, 09:25:45, 09:26:45, ...

所以这取决于开始时间。

我的解决方法是使用一秒周期,并检查当前时间的秒数是否等于0。另一种解决方法是等待下一分钟,然后启动计时器。这两种方法都有效,但都很繁琐,并且使用的分辨率太精细。

是否有内置或更好的方法在每分钟结束时触发而不是在开始后一分钟触发?

.net c# timer .net-6.0 periodictimer

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

使用 dotnet CLI 显示过时的 nuget 包

我正在使用 .NET Core、VS Code、Linux。

要更新包,我手动更改版本.csproj,然后运行dotnet restore.

但是如何使用dotnetCLI判断哪些软件包已过时?

nuget .net-core

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

使用 TypeScript 的 Express 路由的返回类型

我正在尝试充分利用 TypeScript,所以我any尽可能避免。

我见过这样定义的 Express 路由:

import { Request, Response } from "express";

myRouter.route("/foo").post((req: Request, res: Response): Response => {
  return res.send("Hello World");
});
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为send()返回一个 express Response

但是如果我做一个重定向:

myRouter.route("/bar").post((req: Request, res: Response): Response => {
  return res.redirect("/baz");         // redirect() returns void!
});
Run Code Online (Sandbox Code Playgroud)

这不会编译,因为redirect()返回 void,而不是Response.

选项:

  • 简单的解决方法是让路线返回any,但我想尽可能避免这种情况
  • 我见过可以执行的代码,as unknown as Response但这似乎是一个 hack

在不使用的情况下声明路由返回类型的正确方法是什么any

node.js express typescript

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

我可以使用 Serilog 登录到单独的文件吗?

我的 ASP.NET Core 2.1 应用程序登录到 Serilog 文件接收器,所有“常见的东西”——即与应用程序相关的东西,如调试、监控、性能等。

但是,我们还需要将其他数据记录到单独的文件中。与应用程序无关,但与客户相关 - 应该进入数据库的那种东西。但是由于遗留原因,该系统上没有数据库,因此需要将数据保存到文件中。显然这不能写入同一个日志文件。

我可以只写一个FileStream. 但我更喜欢使用 Serilog 进行结构化日志记录。

那么有没有办法同时拥有两个记录器?将不同的数据记录到不同的文件接收器。

(如果是这样,我如何将它们注入我的类 - 现在我只注入ILogger<ClassName>.)

c# serilog asp.net-core

8
推荐指数
3
解决办法
9352
查看次数

如何在 TypeScript 接口中定义 mongoose _id?

我将 Mongoose 和 TypeScript 与 interface+ class +schema方法一起使用

存储该_id字段的规范方法是什么?

我知道数据库将它存储为 bson ObjectID。但是我已经看到一些string使用 mongoose's 的示例ObjectId,然后出于各种原因在它们之间进行转换 - 所以我不确定使用哪个。

interface Animal {
  _id: ?type?;        // ?
  name: string;
}
Run Code Online (Sandbox Code Playgroud)

是否建议使用

  • string
  • mongoose.Types.ObjectId
  • mongodb.ObjectID
  • bson.ObjectID

另外,假设使用 objectid 是正确的 - 我想避免在接口文件中依赖猫鼬。使用bson软件包是否安全/可取ObjectID- 它们是否等效?

mongoose node.js typescript

8
推荐指数
3
解决办法
8914
查看次数

为什么迁移到 ASP.NET Core 6 最小托管模型?

我正在将系统从 ASP.NET Core 5 升级到 6。我已阅读新的“最小托管模型”的迁移指南。

文档说新的方式是首选和推荐的,但旧的方式是受支持的 - 所以我不需要改变。他们还表示旧方法对于“高级”场景很有用,但没有提及细节。

有很多关于如何使用新方法的文档/博客/SO问题 - 但没有提及原因。给出了“仅四行应用程序”作为理由,但这不足以成为迁移工作系统的理由。

我将升级到 v6,但尚未决定托管模型。我或我的工作生产系统将如何受益?

如果您将生产系统迁移到新的托管模型,您能否分享一下是否值得的建议?新方法的优点(和缺点)是什么?谢谢!

c# asp.net-core asp.net-core-6.0 asp.net-core-minimal-hosting-model

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

如果 nuget 指定 PrivateAssets=all 为什么指定 IncludeAssets?

仅开发包(例如分析器、构建工具)的 nuget 安装页面通常显示以下内容:

<PackageReference Include="Foo" Version="1.2.3">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime;build;native;contentfiles;analyzers;...</IncludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

对于此类包,该PrivateAssets属性始终设置为all

IncludeAssets属性也始终被指定。肯定是多余的吗?

.net msbuild nuget .net-core

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

使用appsettings.Production.json中的数据覆盖appsettings.json中的数组设置

我正在使用ASP.NET Core 2.1.我有设置,appsettings.json并使用选项模式将它们绑定到类.我想覆盖它们中的一些appsettings.Production.json.

根据文档支持覆盖,并且通常对我有用.但它不适用于数组.

appsettings.json:

"MySectionOuter": {
  "MySectionInner": [
    {
      "foo": "1",
      "bar": "2",
      "baz": "3"
    },
    {
      "foo": "a",
      "bar": "b",
      "baz": "c"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的重写 appsettings.Production.json

"MySectionOuter": {
  "MySectionInner": [
    {
      "bar": "4",
    },
    {
      "baz": "d"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用 - 它增加而不是替换.

读到该数组是键值存储的语法糖.所以我也试过这个:

"MySectionOuter": {
  "MySection:1": {
    "bar": "4",
  },
  "MySection:2": {
    "baz": "b",
  }
}
Run Code Online (Sandbox Code Playgroud)

但这也行不通.

什么是正确的语法?

UPDATE

评论显示我没有正确解释.我想要的是这样的:

在开发期间:

element1: foo=1
element1: bar=2
element1: baz=3
element2: foo=a …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core asp.net-core-2.0

7
推荐指数
3
解决办法
2280
查看次数