我在该组件中有一个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) 我有一张桌子,上面有几列构成主键.存储的数据的性质允许这些字段中的一些具有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
?
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);
我不知道究竟是什么导致了这个错误.
我有一个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) 当我查看Devel :: NYTProf v4 的输出以获得CGI程序时,我遇到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) 我在运行类似于以下示例的代码时遇到了问题:
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方法在逻辑上类似于:
Run Code Online (Sandbox Code Playgroud)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 }
它就是.它回来了 …
我从外部服务器获取数据流(文本格式),并希望逐行将其传递给脚本.该文件以连续方式附加.哪个是执行此操作的理想方法.使用Perl的IO :: Socket方法会做什么?最终,这些数据必须通过PHP程序(可重用)并最终登陆MySQL数据库.
问题是如何打开文件,不断更新?
对于字符串"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) 在我的Mojolicious应用程序中,我需要使用客户端的IP地址($c->tx->remote_address
)来限制服务的速率.这很好用.
我现在正在尝试为此功能构建单元测试,但我在测试中伪造客户端的IP时遇到问题.
首先我认为local_address
在Mojo :: UserAgent可能会做我想要的,但这是用户代理在本地绑定应用程序的地方,并且更改它会破坏所有内容,因为它无法再找到应用程序.
然后我尝试使用Sub :: Override来替换remote_address
Mojo :: 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的系统)执行此操作,但这些方法在此处不起作用.
我需要创建一个 CPAN 模块,但我不知道从哪里开始或如何做。我已经用 Perl 编写了我的模块,但我不知道如何继续。有人可以帮忙吗?