小编ILi*_*cos的帖子

如何在Array原型图中获取当前索引?

我正在使用Array.prototype.map.call在一个数组中存储一堆节点列表对象:

function getListings() {
    return Array.prototype.map.call(document.querySelectorAll('li.g'), function(e) {
         return {
             rectangle: e.getBoundingClientRect();
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我还想存储这些元素在DOM中出现的顺序,我不知道该怎么做.

我知道我将它存储在一个数组中,顺序将是数组的索引.例如:

var listings = getListings();
console.log(listings[0]); // rank #1
console.log(listings[1]); // rank #2
// etc...
Run Code Online (Sandbox Code Playgroud)

但我在数据库中插入json对象,存储"排名"信息的最简单方法是在我的对象中创建属性"rank",但我不知道如何获取"索引"当前数组.

就像是:

function getListings() {
    return Array.prototype.map.call(document.querySelectorAll('li.g'), function(e) {
         return {
             rectangle: e.getBoundingClientRect(),
             rank: magicFunctionThatReturnsCurrentIndex() // <-- magic happens
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何指导我正确方向的帮助将不胜感激!谢谢

javascript arrays dom prototype prototypejs

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

TestNG没有在测试套件中运行测试

我正在尝试使用XML和TestNG运行测试套件,但我总是使用两者来获取相同的消息:Eclipse和命令行:

[TestNG] Running:
  /Users/achavez/Programs/Selenium/java/src/tests/resources/testng.xml


===============================================
TestingSuite1
Total tests run: 0, Failures: 0, Skips: 0
===============================================
Run Code Online (Sandbox Code Playgroud)

文件读取正确,但似乎测试没有运行.

这些是我的testng.xml的内容:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestingSuite1" verbose="1">
    <test name="Test1"  >
        <packages>
            <package name="tests"/>
        </packages>
    </test>
</suite>
Run Code Online (Sandbox Code Playgroud)

这就是我的目录结构在Eclipse中的样子:

Eclipse中的TestNG目录结构

此外,这也是我试图通过命令行运行测试套件的方式:

java -jar /Applications/Zend\ Studio.app/Contents/Resources/Java/plugins/org.testng.eclipse_6.8.6.20141201_2240/lib/testng.jar src/tests/resources/testng.xml
Run Code Online (Sandbox Code Playgroud)

我试过通过eclipse清理项目,这似乎没有帮助.我也试过跑:

mvn clean 但它也没有做到这一点.

任何指导我正确方向的帮助将不胜感激!

java eclipse testng

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

PHP中是否存在"钳位"数字函数?

我写了一个函数来"钳制"PHP中的数字,但我想知道这个函数是否存在于本地语言中.

我在数学部分阅读了PHP.net文档,但我找不到它.

基本上我的函数所做的是它接受一个变量,一个可能值的数组和一个默认值,这是我函数的签名:

function clamp_number($value, $possible_values, $default_value)

如果$value不匹配$possible_values则默认为$default_value

我认为如果PHP本身提供它,我的功能会更快,因为我在我的程序中经常使用它.

无论如何,如果这个问题不属于SO,请随时投票关闭它.

php clamp

8
推荐指数
2
解决办法
7010
查看次数

在Twig如何比较日期是否在X天内?

如果与该行关联的日期少于30天,我正在使用twig标记表中的行.

Twig的文档说明要比较两个日期对象,您必须先将对象转换为日期,然后以这种方式进行比较:

{% if date(yourDate) < date(-'30days') %} ... {% endif %}

但是,它没有指定如何传递比较左侧的日期格式,我知道Twig的日期函数是某种PHP日期的包装器.

在PHP中,我通常会打电话:

$myDate = \DateTime::createFromFormat("m/d/Y", $myDate);

但在Twig显然没有办法指定原始日期的格式,以便将其转换为另一种格式,或者至少它不在文档中.

这就是我尝试过的:

{% if date(d.LastDate) > date('-30days') %}...{% endif %}

{% if d.LastDate | format("Y-m-d") > date('-30days') %}...{% endif %}

{% if date("m/d/Y", d.LastEmailSentDate) > date('-30days') %}...{% endif %}

这些条件及其变体在Symfony2中返回以下异常:

 An exception has been thrown during the rendering of a template 
("DateTimeZone::__construct(): Unknown or bad timezone (---)")
Run Code Online (Sandbox Code Playgroud)

我的控制器以格式返回日期:m/d/Y如果该日期少于30天,我只想标记该行.

php date symfony twig

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

在AWS Codestar中,如何配置分支部署到特定环境?

我刚刚创建了一个全新的AWS Codestar项目。

据我所知,Codestar只是一个集成了多个AWS产品的仪表板。

我还不知道如何配置,这是分支部署。

在我的git仓库,我有3个分支:masterdevelopstaging

在理想的世界中,master部署到生产,develop开发环境和stagingQA环境。

我不知道如何使用AWS配置该管道,也无法在其开发人员门户中找到相关文档。

这是我的buildspec.yml文件,以防万一可以在此处配置:

version: 0.2

phases:
  install:
    commands:
      - echo Installing NPM Packages...
      - npm install
  build:
    commands:
      - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml

artifacts:
  type: zip
  files:
    - template-export.yml
Run Code Online (Sandbox Code Playgroud)

这是一个使用AWS API Gateway将请求路由到AWS Lambda函数的项目。

amazon-web-services aws-cloudformation aws-api-gateway aws-codestar

8
推荐指数
1
解决办法
910
查看次数

在Perl中,如何将函数作为另一个函数的参数传递?

我写了以下Perl类:

package Menu;
use strict;

my @MENU_ITEMS;
my $HEADER = "Pick one of the options below\n";
my $INPUT_REQUEST = "Type your selection: ";

sub new {
    my $self = {};
   $self->{ITEM}   = undef;
   $self->{HEADER} = undef;
   $self->{INPUT_REQUEST} = undef;
   bless($self);
   return $self;
}

sub setHeader {
    my $self = shift;
    if(@_) { $self->{HEADER} = shift }
    $HEADER = $self->{HEADER}."\n";
}

sub setInputRequest {
    my $self = shift;
    if(@_) { $self->{INPUT_REQUEST} = shift }
    $INPUT_REQUEST = $self->{INPUT_REQUEST}." ";
}

sub addItem …
Run Code Online (Sandbox Code Playgroud)

oop perl function argument-passing

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

尝试使用 next_permutation 在 C++ 中模拟 python 组合

我需要将一个用 Python 编写的代码段移植到 C++ 中,但该代码段在 python 中使用了 itertools 的组合。

我真正有兴趣移植到 C++ 的那一行是:

for k in combinations(range(n-i),2*i):
Run Code Online (Sandbox Code Playgroud)

range(n-i) 在 Python 中将生成一个列表 0 to (n-i) - 1

让 n = 16, i = 5

print range(n-i)

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

和 python 组合将生成该列表中的所有可能组合。

例如

print list(combinations(range(n-i),2*i))

输出:

[(0, 1, 2, 3, 4, 5, 6, 7, 8, 9),
(0, 1, 2, 3, 4, 5, 6, 7, 8, 10),
(0, 1, 2, 3, 4, 5, 6, …

c++ python std python-itertools

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

使用 PHP 读取“块”文件

在 php 中通过相对较小的数据块读取文件的最佳方法是什么?

例如,读取 5MB,然后释放该内存并读取另外 5MB

我正在用 php 编写一个解析工具,需要读取一个巨大的文件并将其转换为 CSV。

我的问题是我不断超出允许的内存限制,并且在我的环境中提高它不是一个选项。

这是完成工作的代码的一部分:

$i = 0;
$fileName = "test.txt";
$file = fopen($fileName,'r');

while($i <= 2000) {
    $line = fgets($file);
    $streetsheet[$i] = preg_split('@\ @',$line,NULL, PREG_SPLIT_NO_EMPTY);
    ++$i;
}

fclose($file);
$fp = fopen('result.csv','w');

foreach($streetsheet as $key=>$value) {
    fputcsv($fp, $value);
}
Run Code Online (Sandbox Code Playgroud)

例如,在上面显示的片段中,我正在读取文件的前 2000 行,它工作得很好。

当我将条件更改为时,问题就出现了

while(!feof($file)){\*....*\}

它立即告诉我,我已经超出了允许的内存限制,然后它告诉我导致问题的行是我使用 preg_split 的行。

所以我想知道读取文件的最佳方法是什么...一次 1000 行?

谢谢!

如果您要投反对票,至少要以基本礼貌来解释原因

php regex

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

用javascript在html上绘制矩形

我知道有一个类似的问题在这里,但没有问题,也不回答任何代码.

我想要做的是将此功能移植到100%Javascript解决方案.现在我可以使用PHP在HTML内容上绘制一个矩形.

我用CasperJS抓取一个网站,拍摄快照,将快照路径发送回PHP以及一个json对象,该对象包含用GD库绘制矩形所需的所有信息.这有效,但现在我想将该功能移植到Javascript中.

我发现了矩形信息的方式是使用getBoundingClientRect()它返回一个对象有top,bottom,height, width,left,和right.

有没有办法将网站的HTML"绘制"到canvas元素,然后在该canvas元素上绘制一个Rectangle?或者有没有办法使用Javascript在HTML上绘制一个矩形?

希望我的问题很清楚.

这是我用来获取我想要绘制一个Rectangle的元素坐标的函数.

function getListingRectangles() {
    return Array.prototype.map.call(document.querySelectorAll('.box'), function(e) {
        return e.getBoundingClientRect();
});
Run Code Online (Sandbox Code Playgroud)

html javascript canvas

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

如何在匹配模式后插入字符串

我需要catch在包含数千个PHP文件的项目中插入一个调试指令.

我想匹配模式

catch (

所以在每个匹配模式之后,我想插入指令:

Reporter::send_exception($e);

我一直在尝试使用sed来实现这一目标,但我未能成功.

这是我正在使用的sed命令:

sed -e '/catch \(/{:a,n:\ba;i\Reporter::send_exception\(\$e\);\g' -e '}' RandomFile.php

任何写这篇文章的帮助将不胜感激!

我在Stack Overflow中看到了同样问题的其他解决方案,但这些解决方案都没有奏效.

谢谢

编辑

基本上我的文件看起来很像这样:

try {
  do_something();
} catch ( AnyKindOfException $e) {
  Reporter::send_exception($e); // Here's where I want to insert the line
  // throws generic error page
}
Run Code Online (Sandbox Code Playgroud)

这就是为什么我想匹配catch \(*$ 并在插入之后 Reporter::send_exception($e)

regex shell perl sed

3
推荐指数
1
解决办法
3640
查看次数