小编Win*_*ute的帖子

为什么这个正则表达式允许插入符号?

http://regexr.com/3ars8

^(?=.*[0-9])(?=.*[A-z])[0-9A-z-]{17}$
Run Code Online (Sandbox Code Playgroud)

应该匹配"17个字母数字字符,也允许使用连字符,必须包含至少一个字母和至少一个数字"

它会正确匹配:

ABCDF31U100027743
Run Code Online (Sandbox Code Playgroud)

并正确拒绝匹配:

AB$DF31U100027743
Run Code Online (Sandbox Code Playgroud)

(以及几乎任何其他非字母数字字符)

但显然会允许:

AB^DF31U100027743
Run Code Online (Sandbox Code Playgroud)

regex

50
推荐指数
3
解决办法
3010
查看次数

PHP深层克隆对象

方案:从数据库中获取电子邮件模板,并循环访问收件人列表,为每个收件人个性化电子邮件.

我的电子邮件模板作为嵌套对象返回.它可能看起来像这样:

object(stdClass) {
    ["title"] => "Event Notification"
    ["sender"] => "notifications@mysite.com"
    ["content"] => object(stdClass) {
        ["salutation"] => "Dear %%firstname%%,"
        ["body"] => "Lorem ipsum %%recipient_email%% etc etc..."
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我遍历收件人,将此$ email对象传递给personalize()函数:

foreach( $recipients as $recipient ){
    $email_body = personalise( $email, $recipient );
    //send_email();
}
Run Code Online (Sandbox Code Playgroud)

当然,问题是我需要通过引用传递$ email对象以便它替换个性化标记 - 但是如果我这样做,原始对象就会被更改,不再包含个性化标记.

据我所知,克隆在这里不会帮助我,因为它只会创建一个浅拷贝:电子邮件对象内的内容对象不会被克隆.

我已经读过关于使用unserialize(序列化($ obj))来解决这个问题 - 但是我读过的所有内容都说这是一个很大的性能影响.

所以,两个人最后得到了我的两个问题:

  1. 在这里反序列化(序列化($ obj))是一个合理的解决方案吗?
  2. 或者我是否会错过这一切?是否有不同的方式可以生成该电子邮件对象的个性化副本?

php clone object

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

TinyMCE和jQuery - attr()返回一个Object

我已经通过使用data()而不是attr()解决了这个问题,但我仍然想知道这是否只是我,以及是什么导致它:

我正在使用jQuery 1.7.1和TinyMCE 3.5b3(jQuery包).没有其他JS库.

当单击链接时,此代码按预期输出"string"和锚标记的href.

$('a.page_item_delete').on('click', function(event){
    event.preventDefault();
    var $this = $(this);
    console.log(typeof $this.attr('href'));
    console.log($this.attr('href'));
});
Run Code Online (Sandbox Code Playgroud)

当我在页面上的某些textareas上激活TinyMCE时,它会输出"Object",当然,attr()会停止返回预期值.我通过以下方式激活TinyMCE:

$( 'textarea.tinymce')TinyMCE的(选择);

有没有其他人用TinyMCE经历过这种行为?是否存在已知错误或解决方法?为什么TinyMCE显然会影响页面上不相关的HTML元素?

jquery tinymce attr

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

s3cmd sync是将错误文件远程复制到错误的位置

我将以下内容作为shell脚本的一部分,将站点文件复制到S3 CDN:

for i in "${S3_ASSET_FOLDERS[@]}"; do
    s3cmd sync -c /path/to/.s3cfg --recursive --acl-public --no-check-md5 --guess-mime-type --verbose --exclude-from=sync_ignore.txt /path/to/local/${i} s3://my.cdn/path/to/remote/${i}
done
Run Code Online (Sandbox Code Playgroud)

说S3_ASSET_FOLDERS是:

("一二/")

并说这两个文件夹都包含一个名为..."script.js"的文件

并说我已经对两个/ script.js进行了更改- 但没有触及一个/ script.js

运行上面的命令将首先将文件从/ one /复制到正确的位置,虽然我不知道为什么它认为它需要:

信息:发送文件'/path/to/local/one/script.js',请稍候...文件'/path/to/local/one/script.js'存储为's3://my.cdn/ path/to/remote/one/script.js'(在0.1秒内为13551字节,168.22 kB/s)[1 of 0]

...然后是第二个文件夹的远程复制操作:

remote copy:two/script.js - > script.js

它在做什么?为什么??那些文件甚至都不相似.不同的修改时间,不同的校验和.没关系.

我最终得到一个带有两个不正确文件的s3存储桶./ two /中应该更新的文件没有.并且/ one /中不应该更改的文件现在被/two/script.js的内容覆盖

很明显,我做了一些奇怪的事,因为我没有看到其他人有同样的问题.但我不知道是什么?

bash amazon-s3 s3cmd

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

如何使用超时设置解决AWS ELB/EC2 HTTP 503?

我正在从一个由ELB后面的2个t2.medium实例组成的站点获得间歇性但经常503错误("服务不可用:后端服务器处于容量").没有人负载特别重,所有监控似乎都很正常.

此处的AWS文档: http ://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html表示潜在原因是ELB和EC2之间的超时设置不匹配:"设置保持活动超时大于或等于负载均衡器的空闲超时设置"

EC2上的Apache conf有:

  • KeepAlive On
  • MaxKeepAliveRequests 100
  • KeepAliveTimeout 5

负载均衡器上的空闲超时为60秒.

那么这似乎是一个原因,但我不确定这个问题.增加Apache KeepAliveTimeout不是 - 我理解 - 通常建议,并且我同样不确定减少ELB上的空闲超时对站点性能的影响.

推荐的方法是什么?如何才能了解我的设置的理想设置以及它处理的流量级别(目前约为30-50请求/分钟)?

amazon-ec2 amazon-web-services amazon-elb

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

mySQL随机选择概率

假设我有一个带有整数字段的数据库表 - 称之为"flavor",该字段的值只能是数字1到10.

有没有办法从数据库中选择一个随机行,20%的可能性是6号味道,30%的可能性是2号味道,50%的可能性是味道1?


对迟到的回应表示歉意 - 非常感谢您的帮助.欧根的答案似乎最能涵盖我所需要的; 我知道ORDER BY rand()的危险,但我正在编写的应用程序不能在大型数据源上运行,或者必须支持许多并发用户.所以我会接受它并接受性能打击.

mysql sql

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

php setlocale arabic strftime

我在我的服务器上运行了locale -a,可以看到它安装了阿拉伯语语言环境设置:

  • ar_AE
  • ar_AE.iso88596
  • ar_AE.utf8

但是,如果我通过以下方式设置区域设置:

$locale = array('ar_AE', 'ar_AE.iso88596', 'ar_AE.utf8', 'ar');
setlocale(LC_TIME, $locale);
Run Code Online (Sandbox Code Playgroud)

并输出:

strftime('%A %d %B', $current_date)
Run Code Online (Sandbox Code Playgroud)

显示的日期是英文,而不是阿拉伯文.

阿拉伯语是唯一不适用的语言:我正在使用的网站有15种语言,所有其他语言都显示翻译日期.

出了什么问题?

php locale arabic strftime

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

mysql全文搜索返回没有记录

我没有得到任何返回以下的行,我不知道为什么.我是否正确定义了全文索引?

CREATE TABLE `client_contact` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `first_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
 `last_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
 `email` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
 `phone` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
 `company` int(11) DEFAULT NULL,
 `billing_address` text COLLATE utf8_unicode_ci,
 PRIMARY KEY (`id`),
 FULLTEXT KEY `client_search` (`first_name`,`last_name`,`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


INSERT INTO `client_contact` (`first_name`, `last_name`, `email`, `phone`, `company`, `billing_address`) VALUES
('John', 'Smith', 'john.smith@company.com', '123456', 1, '1 Any Street'),
('Mary', 'Smith', 'mary.smith@company.com', '123456', 1, '1 Any Street'); …
Run Code Online (Sandbox Code Playgroud)

mysql full-text-search

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

为什么 window.scrollTo() 在页面加载时不起作用?

我在页面上有一些选项卡式内容,URL 中的哈希段可将您带到正确的选项卡内容。没什么不寻常的。但是,由于选项卡位于页面下方的一小段距离,当有人在 URL 中使用哈希目标进行访问时,他们会被下拉到页面下方的选项卡位 - 这会切断顶部导航栏和面包屑。

我不希望这种情况发生。这是迷失方向。

我认为纠正很简单:例如:

$(function(){
window.scrollTo(0,0)
});
Run Code Online (Sandbox Code Playgroud)

那行不通。您仍然会被丢弃在哈希锚上。

我试过在 window.load() 上调用它。我尝试将脚本从 < head > 移动到 . 我试过 window.scrollTo 和 window.scroll。什么都行不通。我能够真正将我移回页面顶部的唯一脚本是:

$(function(){
    setTimeout(function(){
        window.scrollTo(0,0)
    },2000);
});
Run Code Online (Sandbox Code Playgroud)

...这比根本不滚动更糟糕。

为什么其他的都行不通?是我做错了什么,还是其他什么原因阻止了我将用户移回页面顶部?

====================== 编辑:

一个例子(你可能想用更多的 Lorem 参数来填充它)。将其保存到一个新的 HTML 文件,然后转到 #hash1 URL:

<!doctype html>
<html lang="en">

<head>
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
<title>Load</title>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript">
/*


// doesn't work
$(function(){
    window.scrollTo(0,0);
});


// doesn't work
$(window).on('load', function(){
    window.scrollTo(0,0);
});


// doesn't work
window.scrollTo(0,0);


// works, but horrible UX.
$(function(){
    setTimeout(function(){ …
Run Code Online (Sandbox Code Playgroud)

javascript scroll

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

来自 gitlab-ci docker 的 SSH 在“SSH2_MSG_KEX_ECDH_REPLY”上失败

我正在尝试从 GitLab CI 中运行的 Docker 部署容器通过 SSH 连接到远程网络服务器。我第一次尝试时确实成功连接了一次。现在它不断失败:调试输出的最后两行(完整输出如下)是:

debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Connection closed by ********** port 22
Run Code Online (Sandbox Code Playgroud)

部署任务首先从 GitLab CI“秘密变量”复制 SSH 私钥(公钥当然位于~/.ssh/authorized_keys远程)。完整的部署任务定义为gitlab-ci.yml

.deploy: &import_deploy
    stage: deploy
    image: **********
    tags: [ek-docker]
    before_script:
        # install openssh & rsync
        - apk update && apk --no-cache add rsync openssh
        # copy private key from GitLab secret variable to container
        - mkdir -p ~/.ssh
        - chmod 700 ~/.ssh
        - eval $(ssh-agent -s)
        - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
        - …
Run Code Online (Sandbox Code Playgroud)

ssh docker gitlab-ci

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