小编Mic*_*ler的帖子

为什么("foo"=== new String("foo"))在JavaScript中评估为false?

在比较字符串值时,我会一直开始使用===(三等号,严格比较),但现在我发现了

"foo" === new String("foo")
Run Code Online (Sandbox Code Playgroud)

是假的,与此相同:

var f = "foo", g = new String("foo");
f === g; // false
Run Code Online (Sandbox Code Playgroud)

当然:

f == g; // true
Run Code Online (Sandbox Code Playgroud)

那么建议总是使用==进行字符串比较,或者总是在比较之前将变量转换为字符串?

javascript equality object

98
推荐指数
3
解决办法
5328
查看次数

在PhpStorm中运行PHPUnit测试会添加"--teamcity"选项,从而导致错误

我有最新的PhpStorm(2016.2)和PHPUnit phar(5.5.4).出于某种原因,当我在PhpStorm的项目中运行PHPUnit测试时,它会添加--teamcity到run命令,导致失败:

Testing started at 12:52 PM ...
Unit test suite invoked with a path to a non-unit test: --teamcity
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

我不知道这个--teamcity选项来自哪里,无论我运行什么测试,甚至从空白配置开始,它都会发生.我也没有安装TeamCity插件,我甚至没有使用TeamCity.

以下是完整命令显示的内容:

/usr/local/Cellar/php70/7.0.9/bin/php /Users/name/bin/phpunit-5.5.4.phar --configuration /path/to/config/my-phpunit.xml ClassNameTest /Users/name/PhpstormProjects/path/to/tests/unit/app/ClassNameTest.php --teamcity
Run Code Online (Sandbox Code Playgroud)

(敏感信息被换掉)

我想要做的就是摆脱这个--teamcity选项,如果我在没有该选项的单独终端窗口中运行,一切都会正常工作.这最近才开始发生,也许是在PhpStorm更新之后.

teamcity phpunit phpstorm

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

如何使用nginx启用xdebug?

我的情况如下:

我有一个VM(Ubuntu服务器13.04)与PHP 5.4.9-4ubuntu2.2,nginx/1.2.6,php5-fpm和Xdebug v2.2.1.

我正在使用PhpStorm 6.0.3开发一个应用程序(我在VM上部署).

我的问题是,每当我尝试启动调试会话时,IDE都不会从Web服务器获取连接请求(因此,会话永远不会启动).

我查看了很多关于xdebug配置的建议,但没有发现任何有用的东西.

我最近意识到,如果我通过浏览器自己设置XDEBUG_SESSION cookie(感谢FireCookie),我可以调试我的应用程序...所以我的猜测是有一些东西阻止网络服务器将cookie发送回客户端.

问题是,我在不同的项目中使用相同的IDE配置,该项目部署到不同的基于CentOS的VM(使用lighttpd),并且工作得很好.

我试图将我当前的项目部署到这样的VM(将Web服务器更改为NginX)并且它工作正常(不幸的是我丢失了该VM并且无法检查配置:().

所以...这是我的NginX配置:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name localhost;

    location / {
        try_files $uri $uri/ /dispatch.php;
    }

    #
    location ~ \.php$ {
        root /var/www/bresson/web;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index  dispatch.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include fastcgi_params;
        #fastcgi_pass   127.0.0.1:9009;
    }

}
Run Code Online (Sandbox Code Playgroud)

fpm config(/etc/php5/fpm/pool.d/www.conf):

listen = /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)

xdebug.ini:

zend_extension=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_port=9000
xdebug.remote_enable=On
xdebug.remote_connect_back=On
xdebug.remote_log=/var/log/xdebug.log
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.谢谢!

编辑:

我尝试的另一件事是从php开始一个会话,我看到会话cookie创建没有任何问题...

第二编辑:

我想我找到了问题所在:URI.

我写了另一个脚本,以尝试配置参数和东西(更简单的一个),它工作正常!

所以最终我认为问题是查询参数(即:) XDEBUG_SESSION_START=14845没有达到我的脚本.

问题是我的起始URI,它是形式的/images/P/P1/P1010044-242x300.jpg.通过一些虚拟主机配置,我应该能够将其路由到类似的东西/dispatch.php/images/P/P1/P1010044-242x300.jpg,并使用URI的其余部分作为参数.所以...我本身没有找到解决方案,但现在我有一个可行的解决方法(指向我的起始URL /dispatch.php),这将暂时做到这一点.谢谢

xdebug nginx

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

在solr schema.xml中添加字段

我正在使用solr来搜索我的数据库,并且我正在尝试在conf/schema.xml中添加一个新字段(文章的publisher_id)以在我的数据库上搜索后获取publisher_id的值,我没有找到任何与此字段等效的字段名称.那么如何将它作为一个字段添加到schema.xml中,以便与文章的搜索值(正文,标题,日期和发布商ID)一起返回?

solr field

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

为什么PHP会为这两种情况输出不同的错误消息?

它可能不是最佳实践,但在PHP中我们可以在文件底部定义类但是,

$t = new Test();

$t->foo();

class Test extends FakeInvalidClass  {
    public function foo(){
        echo "arrived in foo.";
    }
}
Run Code Online (Sandbox Code Playgroud)

生成错误消息:

Fatal error: Class 'Test' not found in /mysite/test.php on line 4

这很奇怪......类'Test'在文件的底部定义,PHP应该失败,因为FakeInvalidClass没找到,不是Test

<?php
// test.php

class Test extends FakeInvalidClass  {
    public function foo(){
        echo "arrived in foo.";
    }
}

$t = new Test();

$t->foo();
Run Code Online (Sandbox Code Playgroud)

产生更易读的错误

Fatal error: Class 'FakeInvalidClass' not found in /mysite/test.php on line 4

作为参考,这很好用:

<?php
// test.php

$t = new Test();

$t->foo();

class …
Run Code Online (Sandbox Code Playgroud)

php

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

在使用"Break on Next"进行调试时,如何排除setTimeout或setInterval类型语句?

我目前正在处理一个大的预先存在的代码库,它可能有一个或多个setInterval 定时器,它们从各种插件或库中一直运行.这基本上使得无法尝试使用Break on Next来调试单击元素时发生的情况.

问题:一旦我单击Break on Next,浏览器调试器(尝试使用Firebug和Chrome)会在其中一个setInterval函数中停止,然后我才有机会与页面进行交互以真正调试我想要的事件.

具体问题:无论多少次点击它们,我都会在未经检查时保持未选中的复选框.我删除了ID和类名也没有用,似乎没有附加事件处理程序.

注意:不使用jQuery

javascript

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

警告:格式'%d'需要类型为'int'的参数,但参数2的类型为'long int'[-Wformat =]

这段代码是关于.

竞争条件:调度和编译器行为在进程或线程同步中发挥重要作用.演示同步需求的最简单方案来自两个线程/进程之间创建的竞争条件,试图修改共享变量的值,这通常会导致数据不一致和错误的结果.以下示例演示了这种情况:

我是C的新手,我遇到了这个警告发生的问题.警告意味着什么,我该如何解决它.我写的代码在这里:

q1.c: In function ‘runner’:
q1.c:13:1: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
 printf("T tid: %d x before: %d\n", syscall(SYS_gettid),x); int i;
 ^
q1.c:19:1: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
 printf("T tid: %d x after: %d\n", syscall(SYS_gettid),x);
Run Code Online (Sandbox Code Playgroud)

这是代码:

// Race condition
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/syscall.h>
int x=0;
void * runner(void *arg) …
Run Code Online (Sandbox Code Playgroud)

c unix multithreading thread-synchronization

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

在PHPStorm中调试时如何忽略某些文件?

我在PHPStorm中使用Xdebug和我的本地apache webserver进行调试.我也在使用CodeSniffer来检查我的代码风格.CodeSniffer(phpcs.bat)是一个可以在PHPstorm中启用的工具,它实际上是一个每3-5秒运行一次的外部PHP脚本.令人讨厌的是,每当我启用调试(侦听连接)时,它都会尝试调试phpcs脚本,即使它不是我项目的一部分.甚至更奇怪的是phpcs是通过php命令行运行的,而不是Xdebug所属的apache服务器.

反正有没有阻止phpStorm调试这个外部命令行脚本?

php xdebug phpstorm

5
推荐指数
3
解决办法
4692
查看次数

如果PHP的mt_rand()使用比rand()更快的算法,为什么不改变rand()来使用更新的实现呢?

随机数函数的目的是得到 - 你猜对了 - 一个随机数,你无法预测的东西(或者很难确定地预测).如果mt_rand()函数比旧函数更快且更不可预测(更"随机")rand(),为什么不将基础实现切换到新方法?

换句话说,rand()如果/因为底层实现发生了变化,那么使用哪种程序会破坏PHP的更高版本?

php

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

每次更新一行时运行10,000个查询会更快,或者每次更新100行会运行100个查询吗?

假设我有一个主键列表,每行需要更新一个值.运行是否更好:

-- run 10,000 of these queries
UPDATE mytable SET myflag = 1 WHERE id = [each_id]
Run Code Online (Sandbox Code Playgroud)

或者将更新组合成批量查询,如下所示:

-- run 100 of these queries, where the IN () list contains about 100 elements
UPDATE mytable SET myflag = 1 WHERE id IN (3, 4, 5, 9, 99, ... 7887 )
Run Code Online (Sandbox Code Playgroud)

100个IN()项目的100个查询怎么样?

mysql postgresql performance sql-update

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

谷歌饼图非常不准确,分别为57%和42%

我有一些饼图的非常基本的数据.

Yes:     189.84 (57.03%)
No:      252 (42.97%)
Abstain: 0 (0%)
Run Code Online (Sandbox Code Playgroud)

当我通过以下网址请求谷歌饼图时:http://chart.apis.google.com/chart?tt = p&chs = 400x200&chl = Yes%2042.97%| No.%2057.03%| Abstain%200%&chd = t: 189.94 ,252,0&chdl = 189.84 | 252 | 0&CHCO = FF0000

...看起来非常像每个彩色部分正好是50%,即使一个是42%而另一个是57%.这是我的数据格式的问题还是这是饼图服务的限制?

http google-visualization

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