小编Fra*_*eil的帖子

如何在Python中指出无效参数?

可能重复:
python:我应该使用ValueError还是创建自己的子类来处理无效字符串?

阅读内置异常我读到:

所有用户定义的异常也应该从这个类派生"关于异常.

我还看到一个ValueError,它说:

当内置操作或函数接收到具有正确类型但不适当值的参数时引发,并且情况不会由更准确的异常(如IndexError)描述.

如果我想为无效参数引发异常(相当于Ruby的ArgumentError),我该怎么办?我应该ValueError直接提出,或者最好是以我自己的意图揭示名称来继承ValueError吗?

在我的例子中,我接受一个关键参数,但我想限制键中的字符集,这样只/\A[\w.]+\Z/接受(Perl/Ruby正则表达式).

python exception

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

如何在PostgreSQL中生成一个虚拟表来生成一系列日期?

我想生成一个日期列表,希望加入另一个表,但我不知道使用什么语法,类似于这个:

SELECT dates.date, transactions.account_id, transactions.amount
  FROM (...) as dates
       LEFT JOIN transactions ON transactions.date = dates.date
 WHERE dates.date >= '2010-01-01' AND dates.date <= '2010-12-31'
 ORDER BY dates.date;
Run Code Online (Sandbox Code Playgroud)

我想要日期,所以我没有必要进一步按摩数据客户端.我用它来显示一个类似于这样的表:

Account    2010-01-01    2010-01-02    2010-01-03    Balance
============================================================
Chase 123        +100           -20           -70        +10
Chase 231                       +13            -9         +4
Run Code Online (Sandbox Code Playgroud)

sql postgresql datetime-generation

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

是否有允许可视化crontab条目的工具?

我有许多机器的crontabs,并希望看到什么时候开始,并确保数据库服务器上的负载会很好.是否有一个工具可以将crontab条目转换为iCal,或者是直接进行可视化的工具?

cron icalendar crontab

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

成对数组和聚合函数?

我有一个数组作为一列的表,我想将数组元素加在一起:

> create table regres(a int[] not null);
> insert into regres values ('{1,2,3}'), ('{9, 12, 13}');
> select * from regres;
     a
-----------
 {1,2,3}
 {9,12,13}
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

{10, 14, 16}
Run Code Online (Sandbox Code Playgroud)

那就是:{1 + 9, 2 + 12, 3 + 13}.

这样的功能在某处已经存在吗?插入扩展看起来是一个很好的候选者,但这样的功能尚不存在.

预计数组的长度在24到31个元素之间,所有元素都是NOT NULL,并且数组本身也将是NOT NULL.所有元素都是基本的int.每个聚合将有两行以上.在查询中,所有数组都将具有相同数量的元素.不同的查询将具有不同数量的元素.

我的实现目标是:x86_64-unknown-linux-gnu上的PostgreSQL 9.1.13,由gcc编译(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3,64位

postgresql aggregate-functions

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

如何确定ActiveRecord中的关联是否发生了变化?

ActiveRecord提供更改跟踪,其中调用#name_changed?返回true/false,具体取决于name属性在加载模型和现在之间是否更改.

协会有同等效力吗?我特意寻找has_many关联,但所有关联类型都很有用.

Rails 5.2,Ruby 2.5.1

activerecord ruby-on-rails

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

ls输出中"t"的含义是什么?

ls 报告以下内容:

# ls -ld /var/lib/puppet/state/
drwxr-xr-t 3 puppet puppet 4096 Jan  8 16:53 /var/lib/puppet/state/
Run Code Online (Sandbox Code Playgroud)

"t"对其他人意味着什么?什么工具报告权限的符号名称?ls--numeric-uid-gid选项,但还有另一个权限吗?

ls

7
推荐指数
2
解决办法
4011
查看次数

Rails Activerecord的域模型解耦

我一直在读"SQL反模式:避免数据库编程的陷阱"一书,特别是围绕魔豆反模式.其中显示了使用域模型解耦activerecords的图表,并且在PHP中有示例,但不是Rails,它将此称为域模型和视图/控制器之间的HAS-A聚合以及域模型和activerecords之间的HAS-A组合(I假设这是UML说话).

在Rails中,通过使用模型方法来制作瘦控制器胖模型似乎很常见,这些方法可能会操纵其他相关模型,因此在任何给定的控制器中只能使用一个模型.但是,我想知道是否有一种练习包括Rails中的完全解耦?

也就是说,创建一个无表格模型或其他类作为域模型,充当控制器和activerecord对象之间的层(反过来又映射到表),这样控制器可以更好地隔离,不需要知道任何东西关于底层数据库及其结构.它还提供了远离CRUD方法的选项,这些方法无法解释它们适用的应用程序要求,这是书中的另一个批评.

activerecord domain-driven-design anti-patterns ruby-on-rails domain-model

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

如何在S3上设置存储桶的ACL?

我尝试了几件事:S3Browse,RightAws Ruby gem和其他工具.所有允许在单个密钥的基础上授予访问权限,但我无法在存储桶上设置ACL.实际上,我在存储桶上设置了ACL,没有返回任何错误.但是当我刷新或检入其他工具时,存储桶的ACL仅重置为所有者.

我想为我正在开发的应用程序提供对FlixCloud的读写访问权限.他们需要访问权来编写输出文件.

acl amazon-s3

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

如何使用Bunny gem优先向RabbitMQ发布消息

RabbitMQ 提供了一个优先级队列,其中消息可能具有优先级并以相反的优先级传递给消费者。

使用Bunny gem,我创建了一个优先队列。然后,我发布 5 条没有优先级的消息和 2 条优先级为 1 的消息,并检查我的消费者日志。不幸的是,我的消费者告诉我它处理 5 条无优先级消息,然后处理 2 条具有优先级的消息。通过添加睡眠,我确保每条消息至少需要 2 秒来处理。我的频道的预取也设置为 1。这是我使用的示例代码

require "bunny"
require "logger"

logger = Logger.new(STDERR)
bunny = Bunny.new(ENV["AMQP_URL"], logger: logger)
bunny.start
at_exit { bunny.stop }

channel = bunny.channel
channel.prefetch 1

routing_key = "build-show-report"
exchange = channel.exchange("signals", passive: true)
queue = channel.queue("signal.#{routing_key}", durable: true, arguments: {"x-max-priority" => 3})
queue.bind(exchange, routing_key: routing_key)
queue.subscribe(manual_ack: true, block: false) do |delivery_info, properties, payload|
  logger.info "Received #{payload}"
  sleep 2

  channel.acknowledge(delivery_info.delivery_tag, false)
end

5.times {|n| …
Run Code Online (Sandbox Code Playgroud)

bunny

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

如何在 Nix 环境中安装 PostGIS

我有以下内容shell.nix(设置我的开发环境,没有 NixOS):

with import <nixpkgs> {};

stdenv.mkDerivation {
    name = "my-shiny-project";
    buildInputs = [
        jq
        nodejs-6_x
        #postgis {version="2.3.1";}
        #postgis ("2.3.1")
        #postgis "2.3.1"
        postgresql96
        zsh
    ];
    shellHook = ''
        export SHELL=zsh
        export PATH="$PWD/node_modules/.bin/:$PATH"
    '';
}
Run Code Online (Sandbox Code Playgroud)

PostGIS 需要一个版本参数。我不确定如何传递该参数。无论我使用postgis{version="2.3.1";}postgis("2.3.1")还是postgis "2.3.1",我都会收到以下错误:

错误:无法将集合强制为字符串,位于 /nix/store/0rj9y7gvzzahp93cvdmrwc2v2aznh61p-nixpkgs-18.03pre118061.69607d7662/nixpkgs/pkgs/stdenv/generic/make-1

函数和导入 Nix 药丸无名和单参数部分,我看到调用函数的语法很简单NAME PARAM

我必须添加什么才能buildInputs为该特定版本的 PostgreSQL 安装 PostGIS?

nix

5
推荐指数
2
解决办法
473
查看次数