小编Mar*_*rth的帖子

POD中的perl6签名

因为-->是perl6中签名中声明返回类型的首选方法,我想知道是否可以将函数签名的代码放入其中C<...>.

例如 C<foo(Int $a --> Bool)>

return escaping quoting code-documentation perl6

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

在Perl6中向数组附加多个值

我正在寻找一种方法将多个值附加到@array.该文档指出,有一个名为.append的方法可以完成这项工作.但是当我做这样的事情时:

my @array = <a b>;
my @values = 1,2,3;
@array.append: @values, 17;
Run Code Online (Sandbox Code Playgroud)

我得到一个嵌套的结果:

[a b [1 2 3] 17]
Run Code Online (Sandbox Code Playgroud)

arrays nested append flatten perl6

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

perl6中的基本身份验证与Cro

我正在寻找一个简单的解决方案来保护我的路线与基本认证机制与Cro.在我的例子中,我想看看401 Unauthorized如果你根本不提供任何凭据.如果您提供错误的凭据,我希望看到一个403 Forbidden

在我的代码示例中,我从未看到MyBasicAuth被调用的中间件:

class MyUser does Cro::HTTP::Auth {
    has $.username;
}

subset LoggedInUser of MyUser where { .username.defined }

class MyBasicAuth does Cro::HTTP::Auth::Basic[MyUser, "username"] {
    method authenticate(Str $user, Str $pass --> Bool) {
        # No, don't actually do this!
        say "authentication called";
        my $success = $user eq 'admin' && $pass eq 'secret';
        forbidden without $success;
        return $success
    }
}

sub routes() is export {
    my %storage;
    route {
        before MyBasicAuth.new;
        post -> LoggedInUser $user, …
Run Code Online (Sandbox Code Playgroud)

basic-authentication perl6 cro

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

Perl6中的Sub vs Blocks-又名罗马数字挑战

Perl的每周挑战10号要求我们写来解析罗马数字的实现。

我的解决方案使用reduce。我对Subroutine的尝试有效,但对Block却不起作用。导致失败的区别是什么?

use Test;
my %roman2num =
    'I'  => 1,
    'V'  => 5,
    'X'  => 10,
    'L'  => 50,
    'C'  => 100,
    'D'  => 500,
    'M'  => 1000;

for test-data().kv -> $roman, $number {
    my $r;
    $r = $roman.comb().reverse.map({%roman2num{$_}}).reduce(
        sub ($sum, $b) {
            state $last = $sum;
            LEAVE { $last = $b };
            return $sum + (($last <= $b)*2-1) * $b;
        }
    );
    is $r, $number, "Roman $roman $r- way 1";

    $r = $roman.comb().reverse.map({%roman2num{$_}}).reduce({
        state $last …
Run Code Online (Sandbox Code Playgroud)

perl6

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

如何导出%*SUB-MAIN-OPTS

假设有一个模块包含sub MAIN应该提高启动速度的's'.不幸的是我无法以named-anywhere这种方式使用该功能.我的出口是破产还是我应该做什么?

use v6.c;

unit module My::Main;
our %*SUB-MAIN-OPTS is export = ( 'named-anywhere' => True);

multi sub MAIN() is export {
    say 1;
}

multi sub MAIN('a', :$pa) is export {
    say $pa;
}
Run Code Online (Sandbox Code Playgroud)

perl6

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

perl6 - 将Blob中的数据转换为Num

我在blob中有一些字节,二进制数据的不可变缓冲区,我正在寻找一种方法将它所包含的内容转换为浮点数据结构Num,因为它是适合所有这3种格式的类.在$ blob中

  1. IEEE Float
  2. IEEE Double
  3. IEEE Long Double

进行转换的最佳方式是什么?

representation perl6

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

在rakudo-star docker镜像上使用DBIish的mysql的安装要求

我正在基于最新的rakudo-star docker图像创建自己的docker图像.我想使用DBIish连接到mysql数据库.不幸的是我无法让DBDish :: mysql工作.

我已经安装了default-libmysqlclient-dev,你可以看到

# find / -name 'libmysqlclient*.so'
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
Run Code Online (Sandbox Code Playgroud)

我面临的错误是:

# perl6 -Ilib -e 'use DBDish::mysql; DBDish::mysql.connect()'
Cannot locate native library 'mysqlclient': mysqlclient: cannot open shared object file: No such file or directory
  in method setup at /usr/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 289
  in method CALL-ME at /usr/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 539
  in method connect at /root/DBIish/lib/DBDish/mysql.pm6 (DBDish::mysql) line 12
  in block <unit> at -e line 1
Run Code Online (Sandbox Code Playgroud)

mysql perl6 docker

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

在perl6模块中运送文件夹

我目前遇到的问题是melezhik在bailador项目的门票中解释过的.https://github.com/Bailador/Bailador/issues/309.我想写一个模块App :: Something是基于Cro的,它应该发送一些文件和文件夹.从这篇文章的评论中,$?RESOURCE将目录内容"扁平化"为单个文件.

您是否明智地了解如何提供模块中提供的文件夹结构的访问权限?

perl6

6
推荐指数
0
解决办法
118
查看次数

Docker Swarm 中任务的可发现性

我正在运行一个小型 Docker Swarm,运行一个有 2 个副本的服务。在该服务中,该服务的“task-1”需要与同一服务的“task-2”通信,但我没有找到实现此目的的方法

首先,我想避免将服务设置为主机网络模式,因为这样将其放入集群中就没有什么意义了。

其次,我发现您可以设置一个环境变量,其中包含docker-compose.yml我部署到 swarm 的文件中的 TaskName docker stack deply ...

    environment:
        - NODENAME={{.Node.Hostname}}
        - NODEID={{.Node.ID}}
        - SERVICEID={{.Service.ID}}  
        - SERVICENAME={{.Service.Name}}  
        - TASKID={{.Task.ID}}
        - TASKNAME={{.Task.Name}}
Run Code Online (Sandbox Code Playgroud)

您可以从各种容器 ping $TASKNAME。但它是不可发现的,因为名称中TASKNAME=e2foobar_yada.gq7ygzvp114q2x3t99lasuowc.e6ncft2k14g9o2u4blvhns19包含的 ID 在您重新启动服务时会发生更改。

我可以设置别名吗?或者有什么方法可以让我进行任务通信吗?

service-discovery docker docker-swarm

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