小编src*_*ulo的帖子

DBIx :: Class示例

在下面的示例中:

my $rs = $schema->resultset('CD')->search(
{
  'artist.name' => 'Bob Marley'
  'liner_notes.notes' => { 'like', '%some text%' },
},
{
  join     => [qw/ artist liner_notes /],
  order_by => [qw/ artist.name /],
}
);
Run Code Online (Sandbox Code Playgroud)

DBIx cookbook说这是将生成的sql:

# Equivalent SQL:
# SELECT cd.*, artist.*, liner_notes.* FROM cd
# JOIN artist ON cd.artist = artist.id
# JOIN liner_notes ON cd.id = liner_notes.cd
# WHERE artist.name = 'Bob Marley'
# ORDER BY artist.name
Run Code Online (Sandbox Code Playgroud)

但是从菜谱的其余部分开始,我一直认为查询只会选择cd.*,除非当然使用prefetch是这样的:

my $rs = $schema->resultset('CD')->search(
{
  'artist.name' => 'Bob Marley'
  'liner_notes.notes' …
Run Code Online (Sandbox Code Playgroud)

perl orm catalyst dbix-class

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

File :: Slurp将文件写入perl更快

我有一个perl脚本,我写了一个非常大的日志文件.目前我用"传统的"Perl方式写出我的文件:

open FILE, ">", 'log.txt';
print FILE $line;
.....
close FILE;
Run Code Online (Sandbox Code Playgroud)

在阅读文件时,我听到了很多关于File :: Slurp的好东西,以及它如何能够大大改善运行时.我的问题是,使用File :: Slurp会更快地写出我的日志文件吗?我问,因为在perl中写出一个文件看起来很简单,我不知道File :: Slurp如何才能真正优化它.

perl performance file-io fileslurp

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

跨多个'app'服务器的Catalyst :: Plugin :: StatusMessage

所以我在Catalyst应用程序中使用Catalyst :: Plugin :: StatusMessage.唯一的问题是,现在我有一个负载平衡器,后面有两个应用程序服务器,都运行催化剂.因此,如果在一个应用服务器上设置了状态消息,然后重定向了用户,然后负载均衡器将它们发送到第二个应用服务器,则用户将看不到状态消息,因为状态消息是本地消息应用服务器.无论如何,我可以在应用服务器上共享这些状态消息,这样我就不必担心负载均衡器将它们发送到哪个服务器了?谢谢!

perl catalyst status-message

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

DBIx :: Class获取dbh

我在我正在构建的Catalyst应用程序中使用DBIx :: Class.它工作得很好,但有时我需要使用我自己开发的自己的db函数,这些函数非常符合我的需求.因此,我需要一个dbh.但是,因为我已经在使用,所以我知道它已经有一个正在使用的dbh.为了避免与数据库建立另一个不必要的连接,我想只使用已经创建的dbh .我知道DBIx ::类::存储:: DBI模块有两个方法和,但我真的不知道有什么区别两者之间,如果他们获得访问胸径的最佳途径.谁能告诉我什么是最好的方式来获得胸径会在一个应用程序?我更喜欢一种方法,我可以将其存储在存储区中,如下所示:DBIx::ClassDBIx::Classdbhdbh_doDBIx::ClassCatalyst

sub dbh :Private { 
    my ($self, $c) = @_;
    $c->stash->{dbh} = #get dbh from DBIx::Class here
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

database perl catalyst dbix-class

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

Catalyst Template :: Toolkit渲染输出

我正在使用CatalystTemplate :: Toolkit作为我的模板系统.我希望能够渲染模板的特定部分,然后将它们返回给我,这样我就可以将它们存储在变量中.Template :: Toolkit 文档提到您可以这样做:

my $content = $c->forward($c->view('HTML'), "render", $template_name);
Run Code Online (Sandbox Code Playgroud)

但是,每当我这样做,我只是得到这个错误:

file error - : not found
Run Code Online (Sandbox Code Playgroud)

有谁知道我做错了什么?谢谢!

perl render catalyst template-toolkit output

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

用于API的perl测试套件

我正在编写一个与API接口的perl模块,我想在将它放到CPAN上之前为它编写一个测试套件.但是,由于此模块基本上只是API的接口,因此所有测试都需要有效的API密钥和用户.显然我无法在测试套件中使用我的API密钥和用户名发布此模块,那么处理这样的事情的最佳方法是什么?我应该只是在本地进行测试,然后在没有测试的情况下将其放在CPAN上吗?有没有人遇到过这个并想出一个好的解决方案?我知道编写测试是最佳实践,所以如果可以,我想做.谢谢!

api perl unit-testing cpan test-suite

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

Template :: Toolkit不会将变量评估为字符串

我正在使用Template :: Toolkit并且在for循环中我试图更改对象的时区:

[%- FOR item IN c.user.items -%] 
    [% item.date.set_time_zone(c.user.timezone.name) %]

    Date: [% item.date %] <br />
[% END %]
Run Code Online (Sandbox Code Playgroud)

它工作并且它改变了时区,但是该set_time_zone函数返回DateTime对象,然后将其计算到页面上.所以每次围绕for循环时,字符串都会被评估并放到页面上.我知道其他一些模板系统有两组标签,一组表示运行此代码,另一组表示评估此标记并将其放在页面上.Template :: Toolkit有这样的东西吗?我看了,但似乎找不到任何东西.到目前为止,我发现没有在页面上评估字符串的唯一方法是设置返回给变量的值:

[% var = item.date.set_time_zone(c.user.timezone.name) %]
Run Code Online (Sandbox Code Playgroud)

有没有人知道在Template :: Toolkit中更好的方法?

perl template-toolkit evaluate

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

protoc jar maven 插件 intellij 不创建已编译的 proto 文件

我正在尝试在 intelij 中使用 protoc jar maven 插件。我已将此添加到我的 pom.xml 中:

        <plugin>
            <groupId>com.github.os72</groupId>
            <artifactId>protoc-jar-maven-plugin</artifactId>
            <version>3.1.0.2</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <includeDirectories>
                            <include>src/main/protobuf</include>
                        </includeDirectories>
                        <inputDirectories>
                            <include>src/main/protobuf</include>
                        </inputDirectories>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

我有一个位于src/main/protobuf. 我的 pom.xml 中也有这个:

    <dependency>
        <groupId>com.github.os72</groupId>
        <artifactId>protoc-jar</artifactId>
        <version>3.1.0.1</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

这是原型:

package stringtest;

message StringObject {
    repeated string string_one = 1;
    repeated string string_two = 2;
    repeated string string_three = 3;
}
Run Code Online (Sandbox Code Playgroud)

但是,无论何时我右键单击我的模块并单击构建,或者如果我转到构建菜单并点击构建项目,我都看不到正在生成任何已编译的 protobuf 文件。我也没有看到任何错误。有谁知道我做错了什么?

intellij-idea protocol-buffers maven protoc

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

perl正则表达式匹配最接近

我正试图从最后一个项目壁橱到最后一个单词匹配.

例如,最接近狗的b

"abcbdog"

应该是"bdog"

但相反,我得到"bcbdog"

我怎样才能匹配"狗"之前的最后一次出现"b"

这是我目前的正则表达式:

/b.*?dog/si
Run Code Online (Sandbox Code Playgroud)

谢谢!

regex perl match closest

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

rails find_by sql注入

所以我知道Rails在使用时有助于防止sql注入:

Object.find(:first, :conditions=>["name=?",name])
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法找到自动生成的find_by和find_all_by方法是否保护了再次sql注入.

即:

Object.find_by_name(name)
Run Code Online (Sandbox Code Playgroud)

所以这两个调用具有完全相同的结果.我的问题是,即使第二个更方便,我应该继续使用第一个,因为它提供防止SQL注入,或第二个也这样做吗?

ruby sql sql-injection ruby-on-rails

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