小编Tom*_*Tom的帖子

将div放入锚中是否正确?

我听说将一个块元素放在内联元素中是一个HTML罪恶:

<a href="http://www.mydomain.com"><div>
What we have here is a problem. 
You see, an anchor element is an inline element,
and the div element is a block level element.
</div></a>
Run Code Online (Sandbox Code Playgroud)

但是,如果你display:block在样式表中设置外部锚点的样式呢?还是错吗?块级和内联元素的HTML 4.01规范似乎这样认为:

样式表提供了指定任意元素的呈现的方法,包括元素是呈现为块还是内联.在某些情况下,例如列表元素的内联样式,这可能是合适的,但一般来说,不鼓励作者以这种方式覆盖HTML元素的传统解释.

有没有人对此问题有任何进一步的提示?

html

506
推荐指数
8
解决办法
28万
查看次数

如何将Linux cron作业转换为"亚马逊方式"?

无论好坏,我们已将整个LAMP Web应用程序从专用计算机迁移到云计算(Amazon EC2计算机).到目前为止它很好,但我们做crons的方式是次优的.我有一个特定于亚马逊的问题,关于如何使用"亚马逊方式"在云中最好地管理cron作业.

问题:我们有多个Web服务器,需要为批量作业运行crons,例如创建RSS提要,触发电子邮件,实际上有很多不同的事情.但是cron作业只需要在一台机器上运行,因为它们经常写入数据库,因此如果在多台机器上运行,则会复制结果.

到目前为止,我们将其中一个网络服务器指定为"主网络服务器",并且它有一些其他网络服务器没有的"特殊"任务.云计算的权衡是可靠性 - 我们不需要"主 - 网络服务器",因为它是单点故障.我们希望它们都是相同的,能够升级和缩小,而不记得不将master-webserver从集群中取出.

我们如何重新设计我们的应用程序以将Linux cron作业转换为没有单点故障的临时工作项?

我的想法到目前为止:

  • 有一台专用于运行crons的机器.这将是一个更易于管理,但仍然是单点故障,并会浪费一些额外的实例.
  • 有些工作可以想象地从Linux crons转移到MySQL Events但是我不是这个想法的忠实粉丝,因为我不想将应用程序逻辑放入数据库层.
  • 也许我们可以在所有机器上运行所有crons,但是更改我们的cron脚本,所以它们都从一些实现锁定机制的逻辑开始,因此只有一个服务器实际上采取行动而其他服务器只是跳过.我不是这个想法的粉丝,因为它听起来可能有错误,我宁愿使用亚马逊最佳实践,而不是自己动手.
  • 我正在想象一种工作安排在某个地方的情况,添加到队列中,然后网络服务器可能都是一个工人,可以说"嘿,我会拿这个".亚马逊简单工作流服务听起来就是这种事情,但我目前对此并不了解,所以任何具体细节都会有所帮助.对于像cron一样简单的东西,它似乎有点重量级?它是正确的服务还是有更合适的亚马逊服务?

更新:自从问及我在YouTube上观看亚马逊简单工作流服务网络研讨会并在34:40(http://www.youtube.com/watch?v=lBUQiek8Jqk#t=34m40s)注意到的问题后,我看到了一个问题.幻灯片提到cron作为示例应用程序.在他们的文档页面" 亚马逊SWF的AWS Flow Framework样本 "中,亚马逊称他们有crons的示例代码:

... > Cron作业在此示例中,长时间运行的工作流会定期执行活动.可以证明能够继续执行新执行,以便执行可以运行很长一段时间....

我下载了适用于Java的AWS开发工具包(http://aws.amazon.com/sdkforjava/),并确保在一个荒谬的文件夹层中埋藏了一些java代码(aws-java-sdk-1.3.6/samples/AwsFlowFramework/src/com/amazonaws/services/simpleworkflow/flow/examples/periodicworkflow).

问题是,如果我是诚实的,这并没有真正的帮助,因为它不是我能用我的技能组合轻易消化的东西.PHP SDK中缺少相同的示例,并且似乎没有可以通过该过程的教程.所以基本上,我还在寻找建议或提示.

cron lamp scheduled-tasks amazon-ec2 amazon-swf

111
推荐指数
6
解决办法
3万
查看次数

ARG或ENV,在这种情况下使用哪一个?

这可能是一个微不足道的问题,但阅读ARGENV的文档并不能让我明白.

我正在构建一个PHP-FPM容器,我希望能够启用/禁用一些用户需求扩展.

如果可以在Dockerfile中通过添加条件并在构建命令上传递标志来完成,那将是很好的,但是不支持AFAIK.

在我的情况下,我个人的方法是在容器启动时运行一个小脚本,如下所示:

#!/bin/sh   
set -e

RESTART="false"

# This script will be placed in /config/init/ and run when container starts.
if  [ "$INSTALL_XDEBUG" == "true" ]; then
    printf "\nInstalling Xdebug ...\n"
    yum install -y  php71-php-pecl-xdebug
    RESTART="true"
fi
...   
if  [ "$RESTART" == "true" ]; then
    printf "\nRestarting php-fpm ...\n"
    supervisorctl restart php-fpm
fi

exec "$@"
Run Code Online (Sandbox Code Playgroud)

这是我的Dockerfile样子:

FROM reynierpm/centos7-supervisor
ENV TERM=xterm \
    PATH="/root/.composer/vendor/bin:${PATH}" \
    INSTALL_COMPOSER="false" \
    COMPOSER_ALLOW_SUPERUSER=1 \
    COMPOSER_ALLOW_XDEBUG=1 \
    COMPOSER_DISABLE_XDEBUG_WARN=1 \
    COMPOSER_HOME="/root/.composer" \ …
Run Code Online (Sandbox Code Playgroud)

arguments environment-variables docker dockerfile

95
推荐指数
2
解决办法
7万
查看次数

jquery.validate插件 - 如何在表单验证之前修剪值

我正在使用JörnZaefferer的优秀jquery.validation插件,我想知道是否有一种简单的方法可以在验证之前自动修剪表单元素?

以下是验证电子邮件地址的表格的简化但有效的示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"
           type="text/javascript"></script>
    <script src="http://ajax.microsoft.com/ajax/jquery.validate/1.5.5/jquery.validate.js" 
           type="text/javascript"></script>
    <script type="text/javascript">
        $().ready(function() {
          $("#commentForm").validate({
            rules: {
                email: {
                    required: true,
                    email: true
                }
            }
          });
        });
    </script>
</head>
<body>

  <form class="cmxform" id="commentForm" method="get" action="">
     <label for="cemail">E-Mail:</label><input id="cemail" name="email"
      class="required email" />
     <input class="submit" type="submit" value="Submit"/>
  </form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题是一些用户感到困惑,因为他们意外地在他们的电子邮件地址中输入了一些空格,例如"test@test.com".表单将不会提交并显示错误消息:"请输入有效的电子邮件地址.".非技术用户不知道如何发现空白,可能只是退出网站而不是试图弄清楚他们做错了什么.

无论如何,我希望我可以jQuery.trim(value)在验证之前链接" ",这样就删除了空白并且验证错误永远不会发生?

我可以使用addMethod来构建我自己的电子邮件验证功能.但我确信有一个更优雅的解决方案?

jquery jquery-validate

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

如何更改Jquery UI Slider句柄

我想修改库存JQuery UI滑块,以便手柄上有一个箭头而不是正方形.即我想使用自定义图像作为句柄.

有一些教程可以做到:

但我无法让它发挥作用.以下代码生成固定句柄图像:

<!DOCTYPE html>
<html>
<head>
  <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
  <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.slider.js"></script>
  <style type="text/css">
  #myhandle {position: absolute;z-index: 100;height: 25px;width: 35px;top: auto;background: url(http://stackoverflow.com/content/img/so/vote-arrow-down.png) no-repeat;}   
  </style>
  <script type="text/javascript">
  $(document).ready(function(){
    $("#slider").slider({handle: '#myhandle'});
  });
  </script>
</head>
<body>
<div id="slider"><div id="myhandle"></div></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

就好像JQuery没有拿起我想要使用myhandle id作为句柄.我想知道:我是否需要一个JQuery插件来识别句柄选项?(它没有记录在http://docs.jquery.com/UI/Slider中).或许它只能在旧版本的JQuery中运行?

有任何想法吗?

jquery jquery-ui slider jquery-plugins

43
推荐指数
3
解决办法
12万
查看次数

如何获取DynamoDB表中的项目总数?

我想知道我的dynamodb表中有多少项.从API指南中,一种方法是使用如下扫描:

<?php
$dynamodb = new AmazonDynamoDB();

$scan_response = $dynamodb->scan(array(
    'TableName' => 'ProductCatalog' 
));

echo "Total number of items: ".count($scan_response->body->Items)."\n";
Run Code Online (Sandbox Code Playgroud)

但是,这必须获取所有项目并将它们存储在内存中的数组中,这在我认为的大多数情况下是不可行的.有没有办法更有效地获得总项目数?

我已经检查过AWS Dynamo Web控制台中没有此数据.(起初看起来它显示在分页按钮旁边,但事实证明,当你转到下一页的项目时,数字会增长).

php amazon-dynamodb

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

在Ubuntu 13.10(saucy)中安装Mongodb PHP扩展的最简单方法?

我正在使用Ubuntu 13.10(saucy salamander),我希望这sudo apt-get install php5-mongo足以安装mongodb数据库驱动程序.

没有这样的运气.我正在使用php5-fpm,所以首先我发现我也需要做,php5enmod mongo但即便如此,我收到一个错误:

include(MongoClient.php): failed to open stream: No such file or directory
Run Code Online (Sandbox Code Playgroud)

相反,要安装我必须执行以下操作(它使用更多的磁盘空间):

 sudo apt-get install php5-dev make php-pear
 sudo pecl install mongo
 sudo echo "extension=mongo.so" | tee /etc/php5/mods-available/mongo.ini
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么还 sudo apt-get install php5-mongo不够?这是Ubuntu回购的问题吗?我如何查看ubuntu存储库并查找它使用的版本或未MongoClient.php包含的原因.我正在使用" ubuntu:saucy"泊坞窗图像作为我的基础,我认为它默认包含宇宙.

php mongodb ubuntu-13.10

20
推荐指数
2
解决办法
4万
查看次数

如何在PHP中找到两个字符串之间的最大公共子串?

是否存在一种快速算法,可以在两个中找到最大公共子串,strings还是一个NPComplete问题?

在PHP中,我可以在大海捞针中找到针:

<?php

if (strstr("there is a needle in a haystack", "needle")) {
    echo "found<br>\n";
}
?>
Run Code Online (Sandbox Code Playgroud)

我想我可以在其中一个循环中做到这一点,strings但这将是非常昂贵的!特别是因为我的应用是搜索电子邮件数据库并查找垃圾邮件(即同一个人发送的类似电子邮件).

有没有人有他们可以丢弃的PHP代码?

php string algorithm performance spam-prevention

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

如何使用关联数组编写好的PHP数据库插入

在PHP中,我想使用包含在字段/值对的关联数组中的数据插入到数据库中.

例:

$_fields = array('field1'=>'value1','field2'=>'value2','field3'=>'value3');
Run Code Online (Sandbox Code Playgroud)

生成的SQL插入应如下所示:

INSERT INTO table (field1,field2,field3) VALUES ('value1','value2','value3');
Run Code Online (Sandbox Code Playgroud)

我想出了以下PHP单行代码:

mysql_query("INSERT INTO table (".implode(',',array_keys($_fields)).") VALUES (".implode(',',array_values($_fields)).")");
Run Code Online (Sandbox Code Playgroud)

它分离关联数组的键和值,并implodes生成逗号分隔的字符串.问题是它不会转义或引用插入数据库的值.为了说明危险,想象一下如果$_fields包含以下内容:

$_fields = array('field1'=>"naustyvalue); drop table members; --");
Run Code Online (Sandbox Code Playgroud)

将生成以下SQL:

INSERT INTO table (field1) VALUES (naustyvalue); drop table members; --;
Run Code Online (Sandbox Code Playgroud)

幸运的是,不支持多个查询,但引用和转义对于防止SQL注入漏洞至关重要.

你如何编写PHP Mysql插件?

注意:PDO或mysqli的准备查询当前不适合我的选择,因为代码库已经使用广泛的MySQL - 改变计划,但它会采取很多资源的转换?

php sql associative-array

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

如何从不同的命名空间触发Capistrano任务,而不是:deploy?

在我的capistrano配方中,我有一个具有不同任务的命名空间:

namespace :mystuff do
  task :mysetup do; ... end;
  task :mytask1 do; ... end;
  task :mytask2 do; ... end;
  task :mycleanup do; ... end;
end

这些自定义任务是通过我的食谱顶部的这样的行触发的:

after "deploy", "mystuff:mycleanup"
Run Code Online (Sandbox Code Playgroud)

我想从命名空间内执行一个普通的capistrano任务.例如,如果已经建立了一定数量的版本文件夹,我想自动触发正常的清理任务:

task :mycleanup do;
  if releases.length > 50
    logger.info "Too many releases, runing deploy:cleanup."
    deploy:cleanup #***THIS DOESN'T WORK***
  end
end;
Run Code Online (Sandbox Code Playgroud)

不幸的是,调用deploy:cleanup在我的命名空间内不起作用.我该怎么deploy:cleanup办?

ruby deployment capistrano

11
推荐指数
1
解决办法
4892
查看次数