大多数Yup示例使用shape方法,但我发现文档有点难以理解为什么会出现这种情况,以及该方法的作用。
有人可以解释用Yup.object({...})和定义的模式之间的区别Yup.object().shape({...})吗?
我可以做这个:
package Foo;
use Moose;
has 'time' => (
is => 'rw',
isa => 'DateTime'
);
package main;
use DateTime;
my $a = Foo->new(time => DateTime->now);
Run Code Online (Sandbox Code Playgroud)
但不是这个:
package Foo;
use Moose;
has 'time' => (
is => 'rw',
isa => 'DateTime | Str'
);
package main;
use DateTime;
my $a = Foo->new(time => DateTime->now);
Run Code Online (Sandbox Code Playgroud)
因为它引发了一个例外:
Could not locate type constraint (DateTime) for the union
at /opt/xt/xt-perl/lib/site_perl/5.8.8/Moose/Util/TypeConstraints.pm line 89
Run Code Online (Sandbox Code Playgroud)
不首先定义SubType.为什么会这样,有没有办法(除了定义一个检查'isa'的子类型)?
在测试了我的Catalyst应用程序并决定部署它之后,我想将其打包,以便我可以轻松地将其插入登台和活动服务器,管理依赖关系并通过软件包版本控制的灵活性轻松回滚.由于我的生产操作系统是Ubuntu,我认为将其打包为deb包将是最有意义的.
我预测我将不得不创建我的所有perl模块依赖项的第二个包,因为许多不是由我的发行版提供的,或者是独立打包它们 - 尽管这可能是很多工作.
有没有人有这样做的经验 - 或者一个理智的,类似的替代方案?
我有一个使用Dist :: Zilla构建的perl发行版,因此我不必使用依赖项污染我安装的Perl的lib,我使用了Carton来管理它们.
事情在开发中很有用,但是当我运行dzil test或运行dzil release测试时,找不到依赖项并且测试失败,因为无法加载模块.
我已经尝试了carton exec -- dzil test,PERL5LIB=local/lib/perl5 dzil test但我认为这意味着我需要将所有的Dist :: Zilla deps放入cpanfile中,这似乎是完全错误的(我确实有Dist :: Zilla和我需要在我的perl的lib路径中安装的deps).
有没有更好的办法?
我有一堆测试我的DBIx :: Class架构,我使用的是Test :: DBIx :: Class.这很棒,因为它为我提供了有用的测试功能和加载夹具.它还有一个Test :: mysqld特性,所以我可以动态创建一个测试mysqld实例,部署模式,加载fixture和测试.但是如果我有一堆测试脚本,启动服务器似乎很愚蠢,在每个脚本开始时通过构造函数实例化时部署和加载fixture.
创建测试数据库并在测试期间填充它的最佳方法是什么?
我已经设法在Solr中构建一个索引,我可以搜索关键字,生成构面,查询构面等.这一切都很有效.我使用dismax查询实现了我的搜索,因此它搜索预定的字段.
但是,我的结果按照分数排序,而分数似乎仅通过关键字相关性计算得出.我想调整字段具有预定值的分数.我想我可以通过boost查询和boost函数来完成这个,但是这里的文档:
http://wiki.apache.org/solr/DisMaxRequestHandler#head-6862070cf279d9a09bdab971309135c7aea22fb3
不是特别有帮助.我尝试在我的搜索中添加一个bq参数:
&bq=media:DVD^2
Run Code Online (Sandbox Code Playgroud)
(是的,这是电影的索引!)但是当我开始添加更多时,我发现:
&bq=media:DVD^2&bq=media:BLU-RAY^1.5
Run Code Online (Sandbox Code Playgroud)
我发现了负面结果 - 例如DVD但不是 BLU-RAY的电影在得分方面受到负面影响.最后这一切似乎都是平衡的,我的得分就像我开始提升之前一样.
我一定是做错了,我想知道"升级功能"是否会出现在某个地方.关于如何正确使用boost的任何想法?
我想在我的班级中将一些Moose'adfore'方法修饰符应用于许多方法.我想在角色中提供修饰符方法.我可以这样做:
package MyApp::Role;
use Moose::Role
before [qw(foo bar)] => sub {
...
};
package MyApp;
use Moose;
with (MyApp::Role);
sub foo { ... }
sub bar { ... }
sub baz { ... } # this method is unaffected
Run Code Online (Sandbox Code Playgroud)
但是,必须维护角色中的相关方法列表将其与消费类联系起来,这似乎是错误的.我想以更聪明的方式做到这一点,比如方法属性:
package MyApp;
use Moose;
with (MyApp::Role);
sub foo :SomeFlag { ... }
sub bar :SomeFlag { ... }
sub baz { ... } # this method is unaffected
Run Code Online (Sandbox Code Playgroud)
我不熟悉如何识别方法属性或如何动态地将方法修饰符应用于它们.
或者,也许有更好的方法来做到这一点?
我已经使用CloudFormation设置了一个新的EC2实例,并使用以下规则设置了网络ACL:
INBOUND
100 HTTP (80) TCP (6) 80 0.0.0.0/0 ALLOW
102 SSH (22) TCP (6) 22 0.0.0.0/0 ALLOW
104 Custom TCP Rule TCP (6) 1024-65535 0.0.0.0/0 ALLOW
* ALL Traffic ALL ALL 0.0.0.0/0 DENY
OUTBOUND
100 HTTP (80) TCP (6) 80 0.0.0.0/0 ALLOW
102 Custom TCP Rule TCP (6) 1024-65535 0.0.0.0/0 ALLOW
* ALL Traffic ALL ALL 0.0.0.0/0 DENY
Run Code Online (Sandbox Code Playgroud)
我已将具有以下策略的IAM角色分配给该实例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1427889375000",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::my-bucket/*"
]
}
] …Run Code Online (Sandbox Code Playgroud) perl ×6
catalyst ×2
moose ×2
amazon-ec2 ×1
aws-cli ×1
dbix-class ×1
debian ×1
dist-zilla ×1
forms ×1
javascript ×1
lucene ×1
nginx ×1
packaging ×1
plack ×1
search ×1
solr ×1
starman ×1
ubuntu ×1
unit-testing ×1
validation ×1
yup ×1