小编sim*_*que的帖子

Angular2 @Input到具有get/set的属性

我在该组件中有一个Angular2组件,它当前有一些字段,在它们之前应用@Input()以允许绑定到该属性,即

@Input() allowDay: boolean;
Run Code Online (Sandbox Code Playgroud)

我想要做的是实际使用get/set绑定到一个属性,这样我就可以在setter中做一些其他的逻辑,如下所示

_allowDay: boolean;
get allowDay(): boolean {
    return this._allowDay;
}
set allowDay(value: boolean) {
     this._allowDay = value;
     this.updatePeriodTypes();
}
Run Code Online (Sandbox Code Playgroud)

我如何在Angular2中做到这一点?

根据Thierry Templier的建议我将其更改为,但是抛出错误无法绑定到'allowDay',因为它不是已知的本机属性:

//@Input() allowDay: boolean;
_allowDay: boolean;
get allowDay(): boolean {
    return this._allowDay;
}
@Input('allowDay') set allowDay(value: boolean) {
    this._allowDay = value;
    this.updatePeriodTypes();
}
Run Code Online (Sandbox Code Playgroud)

angular

136
推荐指数
3
解决办法
15万
查看次数

多列主键中的NULL值

我有一张桌子,上面有几列构成主键.存储的数据的性质允许这些字段中的一些具有NULL值.我设计了我的桌子:

CREATE TABLE `test` (
    `Field1` SMALLINT(5) UNSIGNED NOT NULL,
    `Field2` DECIMAL(5,2) UNSIGNED NULL DEFAULT NULL,
    PRIMARY KEY (`Field1`, `Field2`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行describe test它时显示如下:

|| *Field* || *Type*                || *Null* || *Key* || *Default* || *Extra* 
|| Field1  || smallint(5) unsigned  || NO     || PRI   ||           ||         
|| Field2  || decimal(5,2) unsigned || NO     || PRI   || 0.00      ||         
Run Code Online (Sandbox Code Playgroud)

插入NULL值时我一直收到错误.

列'Field2'不能为空

这是因为作为主键一部分的字段不能为空吗?除了使用"0"之外,我还有什么其他选择NULL

mysql null composite-primary-key

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

LDAP:错误代码49 - 80090308:LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext错误,数据52e,v1db1

LDAP:错误代码49 - 80090308:LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext错误,数据52e,v1db1

我知道"52e"代码是用户名有效,但密码无效.我在apache studio中使用相同的用户名和密码,我能够成功建立与LDAP的连接.

这是我的java代码

    String userName = "*******";
    String password = "********";
    String base ="DC=PSLTESTDOMAIN,DC=LOCAL";
    String dn = "cn=" + userName + "," + base;  
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://******");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, dn);
    env.put(Context.SECURITY_CREDENTIALS, password);
    LDAPAuthenticationService ldap = new LDAPAuthenticationService();
   // LdapContext ctx;
    DirContext ctx = null;
    try {
        ctx = new InitialDirContext(env);
Run Code Online (Sandbox Code Playgroud)

我的错误是在这一行:ctx = new InitialDirContext(env);

我不知道究竟是什么导致了这个错误.

authentication ldap

51
推荐指数
6
解决办法
26万
查看次数

用Gradle更改apk名称

我有一个Android项目,它使用Gradle进行构建过程.现在我想添加两个额外的构建类型登台和生产,所以我的build.gradle包含:

android {
    buildTypes {
        release {
            runProguard false
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }

        staging {
            signingConfig signingConfigs.staging

            applicationVariants.all { variant ->
                appendVersionNameVersionCode(variant, defaultConfig)
            }
        }

        production {
            signingConfig signingConfigs.production
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的appndVersionNameVersionCode看起来像:

def appendVersionNameVersionCode(variant, defaultConfig) {
    if(variant.zipAlign) {
        def file = variant.outputFile
        def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
        variant.outputFile = new File(file.parent, fileName)
    }

    def file = variant.packageApplication.outputFile
    def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
    variant.packageApplication.outputFile = …
Run Code Online (Sandbox Code Playgroud)

android gradle apk android-gradle-plugin

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

如果我的代码中没有诊断,为什么Perl会编译diagnostics.pm?

当我查看Devel :: NYTProf v4 的输出以获得CGI程序时,我遇到diagnostics.pm了报告源代码文件 - 按专用时间排序然后命名.

diagnostics.pm

首先,我不明白为什么会出现在生产代码中.我在报告中深入挖掘并发现它被称为main::BEGIN@17.反过来,这是以下行:

# spent 34µs (26+8) within main::BEGIN@15 which was called: # once (26µs+8µs) by main::RUNTIME at line 15
use strict;
# spent 34µs making 1 call to main::BEGIN@15 # spent 8µs making 1 call to strict::import

# spent 36µs (17+19) within main::BEGIN@16 which was called: # once (17µs+19µs) by main::RUNTIME at line 16
use warnings;

# spent 36µs making 1 call to main::BEGIN@16 # …
Run Code Online (Sandbox Code Playgroud)

perl devel-nytprof

25
推荐指数
1
解决办法
495
查看次数

如果零行受到影响,为什么DBI的do方法返回"0E0"?

我在运行类似于以下示例的代码时遇到了问题:

my $rows = $dbh->do('UPDATE table SET deleted=NOW() WHERE id=?', undef, $id) 
  or die $dbh->errstr;
if (!$rows) {
  # do something else
}
Run Code Online (Sandbox Code Playgroud)

由于文档声明do返回受影响的行数,我认为这样可行.

准备并执行单个陈述.返回受影响或undef出错的行数.返回值-1表示行数未知,不适用或不可用.

事实证明,我错了.当我调试它时,我看到它$rows实际上保存了字符串0E0,当然这是一个真正的值.我进一步挖掘了文档并看到了这段代码:

默认的do方法在逻辑上类似于:

  sub do {
      my($dbh, $statement, $attr, @bind_values) = @_;
      my $sth = $dbh->prepare($statement, $attr) or return undef;
      $sth->execute(@bind_values) or return undef;
      my $rows = $sth->rows;
      ($rows == 0) ? "0E0" : $rows; # always return true if no error
  }
Run Code Online (Sandbox Code Playgroud)

它就是.它回来了 …

perl dbi

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

如何读取不断更新的文件?

我从外部服务器获取数据流(文本格式),并希望逐行将其传递给脚本.该文件以连续方式附加.哪个是执行此操作的理想方法.使用Perl的IO :: Socket方法会做什么?最终,这些数据必须通过PHP程序(可重用)并最终登陆MySQL数据库.

问题是如何打开文件,不断更新?

perl

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

无法理解多行正则表达式qr /(.$.+)/ xms的结果

对于字符串"aa \nbb \ncc"我想从左边的最后一个字母到第一个换行符("a")到多行字符串的末尾匹配,并且预期

"aa\nbb\ncc" =~ qr/( . $ .+ )/xms 火柴 a\nbb\ncc

然后

"aa\nbb\ncc\n" =~ qr/( . $ .+ )/xms比赛 a\nbb\ncc\n.

但我敌不过"aa\nbb\ncc" =~ qr/( . $ .+ )/xms 和匹配c\n"aa\nbb\ncc" =~ qr/( . $ .+ )/xms.

使用qr/( . $ ..+ )/xms我获得了预期的结果(参见示例代码).

Perl版本5.14.2.

任何人都可以解释这种行为吗?

perldoc perlre:

   m   Treat string as multiple lines.  That is, change "^" and "$" 
       from matching the start or end of the string to matching the start 
       or end …
Run Code Online (Sandbox Code Playgroud)

regex perl

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

如何在Mojolicious应用程序的单元测试中伪造客户端IP地址?

在我的Mojolicious应用程序中,我需要使用客户端的IP地址($c->tx->remote_address)来限制服务的速率.这很好用.

我现在正在尝试为此功能构建单元测试,但我在测试中伪造客户端的IP时遇到问题.

首先我认为local_address在Mojo :: UserAgent可能会做我想要的,但这是用户代理在本地绑定应用程序的地方,并且更改它会破坏所有内容,因为它无法再找到应用程序.

然后我尝试使用Sub :: Override来替换remote_addressMojo :: Transaction,但是当我这样做时$t->post_ok,它已经应用于客户端,它会尝试向不存在的IP发送请求,因为客户端的远程地址是服务器的地址,我遇到了一个永远不会成功的等待阻塞请求,因为它想要的服务器不存在.

您可以使用以下MCVE来尝试.预期的结果是测试通过.

use strict;
use warnings;
use Test::More;
use Test::Mojo;
use Mojolicious::Lite;

get '/foo' => sub { my $c = shift; $c->render( text => $c->tx->remote_address ) };

my $t = Test::Mojo->new;
$t->get_ok('/foo')->content_like(qr/\Q127.0.0.1/);

# TODO change client IP address to 10.1.1.1
# in a way that the /foo route sees it
$t->get_ok('/foo')->content_like(qr/\Q10.1.1.1/);

done_testing;
Run Code Online (Sandbox Code Playgroud)

我知道如何使用Catalyst和Dancer(或其他基于Test :: Plack的系统)执行此操作,但这些方法在此处不起作用.

perl unit-testing mojolicious

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

如何将 Perl 模块发布到 CPAN?

我需要创建一个 CPAN 模块,但我不知道从哪里开始或如何做。我已经用 Perl 编写了我的模块,但我不知道如何继续。有人可以帮忙吗?

perl cpan module

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