小编Ser*_*pov的帖子

删除PostgreSQL中索引的唯一性

在我的PostgreSQL数据库中,我有一个以这种方式创建的唯一索引:

CREATE UNIQUE INDEX <my_index> ON <my_table> USING btree (my_column)
Run Code Online (Sandbox Code Playgroud)

有没有办法改变索引以删除唯一约束?我看了很多 ALTER INDEX文档,但它似乎没有做我需要的.

我知道我可以删除索引并创建另一个索引,但如果它存在,我想找到更好的方法.

sql database postgresql

54
推荐指数
3
解决办法
4万
查看次数

如何在Rust中使用具有异步Hyper 0.11的HTTP代理?

如何使用Hyper 0.11的代理发送HTTP请求?我有以下工作代码发送没有代理的HTTP请求:

extern crate hyper;
extern crate tokio_core;
extern crate futures;

use futures::Future;
use hyper::Client;
use tokio_core::reactor::Core;

fn main() {
    let mut core = Core::new().unwrap();
    let client = Client::new(&core.handle());

    let uri = "http://stackoverflow.com".parse().unwrap();
    let work = client.get(uri).map(|res| {
        res.status()
    });

    match core.run(work) {
        Ok(status) => println!("Status: {}", status),
        Err(e) => println!("Error: {:?}", e)
    }
}
Run Code Online (Sandbox Code Playgroud)

这与如何通过Hyper代理到达HTTPS站点不重复因为我问的是Hyper 0.11的新版本,它有一个完全不同的API,与以前的版本不兼容.

proxy http rust hyper

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

Rust 的 clippy 可以进行自动更正/自动修复吗?

是否可以cargo clippy使用选项运行,以便自动修复警告?

从帮助消息来看,目前似乎不支持此选项。

lint rust clippy rust-cargo

11
推荐指数
2
解决办法
2586
查看次数

使用JWT和JSONAPI进行身份验证

我正在使用以下技术/方法实现REST API:

我想实现身份验证端点,它应该在JSONAPI格式的POST请求中接收用户名和密码,并以JSONAPI格式返回JWT令牌.但我发现有一些矛盾不允许我100%RESTful:

让我们命名端点/tokens,因为它实际上创建了令牌.响应也是类型的资源tokens,例如:

{
  "data": {
    "type": "tokens",
    "attributes": {
      "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEifQ.ivJ5P23wqVo3w31flg3aOu7er--Ijght_RrBf_MuqsU",
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但请求怎么样?username并且password是用户的属性,但应将它们发送到/tokens端点.如果我将users资源发送到/tokens端点,那就没有多大意义了.

有没有办法解决这个问题,遵循JSONAPI并保持API的意义?

authentication rest jwt json-api

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

有没有办法通过Rust中的枚举索引数组?

我想在内存中表示一个数据表,如下所示:

     | USD | EUR |
-----+-----+-----+
John | 100 | 50  |
-----+-----+-----+
Tom  | 300 | 200 |
-----+-----+-----+
Nick | 200 | 0   |
-----+-----+-----+
Run Code Online (Sandbox Code Playgroud)

有一组已知的人,他们每个人都拥有一些货币.

我有以下枚举:

enum Person {
    John,
    Tom,
    Nick
}

enum Currency {
    USD,
    EUR
}
Run Code Online (Sandbox Code Playgroud)

我想将这些数据编码为2D数组,能够索引数组元素而不是通过usize它来编写数组元素会很酷enum.例如:

data[Person::John][Currency::USD] = 100;
Run Code Online (Sandbox Code Playgroud)

是否可以使用Rust中的数组和枚举?或者是否有任何其他数据结构可以为此服务?

我知道HashMap,但这不是我想要的,因为:

  • HashMap 在堆上工作(这使得它比常规堆栈分配的数组慢得多)

  • HashMap我不能保证项目存在.例如,每次我想得到的东西,我必须解开它并处理None案例,与普通数组的使用相比,这不是很方便.

这与我如何将枚举值与整数匹配不同因为我对转换enum不感兴趣usize; 我只想通过枚举方便地访问数组/地图项.

arrays enums hashmap rust

8
推荐指数
2
解决办法
2360
查看次数

如何为 #[cfg(test)] 后面的模块生成文档?

在 Rust 项目中,有一个包含支持测试的实用程序的模块,打包在一个模块中test_utils

#[cfg(test)]
pub mod test_utils;
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以生成模块及其内部内容cargo doc的文档?test_utils

testing documentation rust rust-cargo

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

使用命令行工具将Swagger API导入AWS API Gateway

亚马逊发布了这条新闻:https://aws.amazon.com/about-aws/whats-new/2016/04/amazon-api-gateway-supports-swagger-definition-import/,说现在可以导入使用aws命令行工具Swagger API .我在用:

aws --version
aws-cli/1.10.20 Python/2.7.9 Linux/3.16.0-4-amd64 botocore/1.4.11
Run Code Online (Sandbox Code Playgroud)

但我找不到一个命令aws apigateway help,允许我使用swagger文件导入或更新API.

目前,我们正在使用aws-apigateway-importer.真的很棒,aws只有swtich .

谢谢.

amazon-web-services swagger aws-cli aws-api-gateway

6
推荐指数
2
解决办法
1245
查看次数

将 glib 绑定​​到 Crystal lang(GC 问题)

我正在尝试将一些函数从 glib 绑定​​到 Crystal 中。我已经这样做了并且有效:

@[Link("glib-2.0")]
lib LibG
  fun g_utf8_strup(str : UInt8*, len : UInt32) : UInt8*
  fun g_utf8_strdown(str : UInt8*, len : UInt32) : UInt8*
end
Run Code Online (Sandbox Code Playgroud)

然而它引入了内存泄漏:使用 g_* 函数创建的对象永远不会被垃圾收集。

是否有可能让glib在Crystal中与Boehm GC一起很好地发挥作用?受PCRE的启发,我尝试过:

@[Link("glib-2.0")]
lib LibG
  # These 2 functions work perfectly
  fun g_utf8_strup(str : UInt8*, len : UInt32) : UInt8*
  fun g_utf8_strdown(str : UInt8*, len : UInt32) : UInt8*

  alias Malloc = LibC::SizeT -> Void*
  alias Free = Void* ->
  $g_malloc : Malloc
  $g_free : Free
end

# …
Run Code Online (Sandbox Code Playgroud)

garbage-collection glib boehm-gc crystal-lang

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

如何在Crystal中将二进制文件写入文件

我有一个 UInt32 数组,将它写入 Crystal lang 中的二进制文件的最有效方法是什么?

现在我正在使用IO#write_byte(byte : UInt8)方法,但我相信应该有一种方法可以编写比每 1 个字节更大的块。

binary file crystal-lang

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

如何在Rust中使用hyper,tokio和future设置HTTP请求的超时?

如何使用异步Hyper(> = 0.11)设置HTTP请求的超时?

以下是没有超时的代码示例:

extern crate hyper;
extern crate tokio_core;
extern crate futures;

use futures::Future;
use hyper::Client;
use tokio_core::reactor::Core;

fn main() {
    let mut core = Core::new().unwrap();
    let client = Client::new(&core.handle());

    let uri = "http://stackoverflow.com".parse().unwrap();
    let work = client.get(uri).map(|res| {
        res.status()
    });

    match core.run(work) {
        Ok(status) => println!("Status: {}", status),
        Err(e) => println!("Error: {:?}", e)
    }
}
Run Code Online (Sandbox Code Playgroud)

timeout http rust hyper rust-tokio

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