小编Joh*_*ohn的帖子

为什么Crystal的迭代宏语法与Crystal的其余部分不同

来自Ruby世界,我立刻明白为什么Crystal选择不实现一个for方法.但后来我惊讶地发现Crystal 确实for为宏实现了一种方法.我更惊讶地发现宏不允许可枚举(.each等)语法(即{% ["one", "two", "three"].each do |value| %}不是有效的宏语法).

这种语法差异是否有合理的原因?答案很可能就是〜"因为开发人员认为宏语法看起来像x,而非宏语法看起来像y",但我猜测它还有更多的东西(任意语法不一致似乎一个缺陷).

谢谢!

crystal-lang

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

如何将方法参数限制为元组类型的索引号?

我有一个泛型类,其中类型参数是一个元组。我在类上创建一个方法时遇到问题,该方法的参数仅限于元组的索引。

例如(游乐场链接):

class FormArray<T extends [any, ...any[]]> {
  constructor(public value: T) {}

  // how to restrict `I` to only valid index numbers of `T` ?
  get<I extends keyof T>(index: I): T[I] {
    return this.value[index];
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道您可以做的是keyof获取元组上的所有属性,其中包括与元组包含的对象关联的键(即“0”、“1”等)。不幸的是,keyof会拉入元组的所有属性,包括“长度”、“拼接”等。

我尝试使用keyof并排除所有不属于 type 的属性number,但后来我意识到索引属性(“0”、“1”等)是由keyofas type返回的string

目前可以在 TypeScript 中完成此任务吗?

typescript typescript-generics

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

如何使用sha512为JWT生成RSA密钥?

我知道可以使用不同的sha算法生成RSA密钥.使用openssl,我似乎没有选择指定密钥生成器应该使用的算法.我怀疑它正在使用sha256.

如何在bash shell或Ruby中使用不同的sha算法(如sha512)生成RSA密钥?openssl库是否支持使用不同的算法生成RSA密钥?如果没有,有没有人知道我可以使用的另一个库?(在ruby中,OpenSSL::PKey::RSA似乎不允许选择算法,但文档很难让我遵循soo ......?)

抱歉,如果这个问题已经得到解答,但我找不到答案.

也许我也应该注意(如果我错了):我的理解是,为生成的RSA密钥(即RSA 2048)选择大小与选择散列算法(即sha512)是分开的.

更新 - 一些背景

我想用RSA密钥签署Java Web Tokens.我正在使用的JWT库给我的印象是可以使用不同的散列算法(RS256,RS384,RS512)生成RSA密钥.使用生成密钥openssl似乎并没有让我选择使用什么散列算法.

谢谢!!

json rsa sha512 jwt

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

Firebase https 函数意外删除 `set-cookie` 标头

正如firebase 函数文档中(间接)提到的,https 函数应该支持在请求/响应标头中操作 cookie。

如果您需要注入 cookie 支持或 CORS 等中间件依赖项,请在函数中调用它们。

但是,以下 HTTPS 函数向客户端返回不包含标头的响应:set-cookie

functions.https.onRequest(async (request, response) => {
  response.set('access-control-allow-origin', '*');

  response.cookie('TEST COOKIE', 'Success!!!!');

  console.log(response.get('set-cookie'));

  response.json({ status: 'success' });
});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,对的调用console.log(response.get('set-cookie'))显示set-cookie标头在函数调用中的该点设置的。因此,不知何故,set-cookie标头被从响应中剥离。这看起来确实像 firebase 函数实际上并不支持操作 cookie。

有人知道发生了什么事吗?我已经尝试解决这个问题几个小时了:(

cookies firebase google-cloud-functions

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

正确使用EOF(可以在程序中多次使用吗?)

在我的编程课程(c ++)中,讲师告诉我们:

"编写一个输入未指定数量的整数("int")值的程序,然后输出输入的最小值和最大值.将始终输入至少一个值.(读取所有输入直到EOF).当用户根本没有输入任何整数(只是EOF)时,信用使你的程序也能正常工作."

我想得到想象,所以,在我的解决方案中,当刚EOF进入时,程序会响应"Oops! You didn't enter anything. Please try again, this time entering at least one integer: "并再次提示输入.

我的导师说这个答案是错误的,因为

在EOF之后,应该没有更多的程序输入(用户和程序都没有预期) - 使用EOF从输入的"一种模式"切换到另一种输入模式不支持标准.

  1. EOF我在互联网上发现的每一个定义似乎都不支持我教授的定义.EOF从我所知道的,简单地定义为当前文件的结尾.接受来自用户的EOF输入,然后对该输入执行某些操作,然后EOF再次请求其他输入似乎是完全有效的.
  2. 因为这是一个在线课程,我能够回顾我们学到的所有相关内容EOF,我们只被告知这EOF意味着"文件结束"并且可能"用于表示结束用户输入"(重要的是,因为,即使我的教授是错的,有人可能会说,如果他特意告诉我们,我应该采用他的标准.但他没有告诉我们).

使用EOF用户输入的正确方法是什么?我教授的陈述是"在EOF之后,应该没有更多的输入程序"使用EOF的标准和预期方式吗?如果程序接受可变数量的输入,对其执行某些操作,然后接受更多变量输入,那么使用EOF这些输入是不可接受的(while(cin >> user_input)也就是说不在该场景中使用)?如果是这样,在您多次接受变量输入的情况下,是否有一个标准用于表示输入结束?

我对作业的确切解决方案如下.我对主要作业的解决方案"编写一个输入未指定数量的整数("int")值的程序,然后输出输入的最小值和最大值"被认为是正确的,通过赋值的第二部分"make当用户根本没有输入任何整数(只是EOF)时,你的程序也可以工作."被认为是不正确的("使程序也能正常工作"是我们给出的唯一提示).

非常感谢任何反馈!! 显然,我对我的教授反馈/决定持怀疑态度,但总的来说,我只是想了解一下C++社区标准.

#include <iostream>
#include <iomanip>
#include <string>
#include <stdlib.h>

using namespace std;

int main(){
  string user_input;

  int int_input, min_user_input, max_user_input;
  bool do_it = true;

  cout << "Hi …
Run Code Online (Sandbox Code Playgroud)

c++

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

如何在 GraphQL 中使用联合查询结果返回对象类型?

我正在构建一个 GraphQL API。返回联合/接口类型字段时,是否可以让服务器告诉我对象类型?即像这样的东西

{
  search(text: "an") {
    ... on Human {
      __type
      name
      height
    }
    ... on Droid {
      __type
      name
      primaryFunction
    }
    ... on Starship {
      name
      length
    }
  }
}

// or even better

 {
  search(text: "an") {
    __type // <--- even though it's a Union query, everything has a type right? :/

    ... on Human {
      name
      height
    }
    ... on Droid {
      name
      primaryFunction
    }
    ... on Starship {
      name
      length
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

哪个会返回

{ …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-ruby

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