小编ley*_*you的帖子

为什么三元运算符比if/else更复杂?

我正在使用pdepend测试我的库,并且一些函数具有极高的复杂性.我刚刚意识到它来自三元运算符,但我不确定为什么.

具有如下功能:

  function test($a) {
        return $a > 10 ? 5:20;
  }
Run Code Online (Sandbox Code Playgroud)

pdepend返回5的复杂度(npath).为什么有5条不同的路径?我只看到2.

具有如下功能:

   function test($a) {
      if($a > 10)
         return 5;
      else
         return 20;
   }
Run Code Online (Sandbox Code Playgroud)

npath复杂度为2.这是有道理的.


编辑:好的,我看看另一个问题:PMD - 使用三元运算符的NPath复杂度非常高(?

它是算法的一部分..但是,该函数只有2条可能的路径.该算法对我没有意义.节点数不反映路径数,并且任意将值加2.

php pdepend

15
推荐指数
1
解决办法
1857
查看次数

PHP 中的分段错误(核心转储)

好的,我在 Ubuntu 的命令行上运行一个 PHP 应用程序,它以“分段错误(核心转储)”结尾。

我如何从这里去调试它?我很确定没有内存泄漏,因为我已经用 get_memory_usage() 检查过了。

编辑:好的,正如 Brendan 和 Ulricht 所解释的,我尝试了 gdb。这根本不是我的环境,所以对即将到来的新手问题感到抱歉。

我在 gdb 下运行我的代码并得到了段错误。这是前 22 行。

(gdb) bt
#0  0x00000000006f5d36 in ?? ()
#1  0x00000000006f7625 in ?? ()
#2  0x00000000006f7b68 in zend_parse_parameters ()
#3  0x0000000000610584 in zif_array_rand ()
#4  0x00000000006dd9bb in dtrace_execute_internal ()
#5  0x000000000079da15 in ?? ()
#6  0x0000000000717748 in execute_ex ()
#7  0x00000000006dd8b9 in dtrace_execute_ex ()
#8  0x000000000079e060 in ?? ()
#9  0x0000000000717748 in execute_ex ()
#10 0x00000000006dd8b9 in dtrace_execute_ex ()
#11 0x000000000079e060 in ?? …
Run Code Online (Sandbox Code Playgroud)

php

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

phpunit无法断言两个数组相等,但没有显示出差异

这是phpunit说的:

1) Asgard\Entity\Tests\EntityTest::testToArray
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
     'id' => null
     'title' => 'Test Title'
     'content' => 'Test Content'
     'published' => 2015-03-04T11:19:50+0000
     'comments' => Array (
         0 => Array (
             'id' => null
             'content' => 'foo'
             'published' => 2015-03-04T11:19:50+0000
             'another_property' => null
             'news' => null
         )
         1 => Array (
             'id' => null
             'content' => 'bar'
             'published' => 2015-03-04T11:19:50+0000
             'another_property' => null
             'news' => null
         )
         2 => Array ( …
Run Code Online (Sandbox Code Playgroud)

php phpunit

7
推荐指数
1
解决办法
3736
查看次数

鼠标移动到img后鼠标不起作用

我正在尝试做一个简单的拖动脚本.这个想法是在鼠标停止时保存位置,在鼠标移动时更新视图,在鼠标移动时停止.问题,mouseup事件无法正常工作.

看代码:

var target = $('a')
var pos = 0;
var dragging = false;

$(document).mousedown(function(e) { pos=e.pageX; dragging = true })
$(document).mouseup(function() { dragging = false })
$(document).mousemove(function(e) {
    if(dragging){ 
        target.css('left', e.pageX-pos);
    }
})  ?
Run Code Online (Sandbox Code Playgroud)

为什么mouseup与"a"标签一起使用:http: //jsfiddle.net/leyou/c3TrG/1/

为什么mouseup无法使用"img"标记:http: //jsfiddle.net/leyou/eNwzv/

只是尝试水平拖动它们.

ie9,ff和chrome也有同样的问题.Windows 7的

jquery drag mouseup

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

focus()不会将光标移入字段

我想在值错误时强制光标返回其先前的输入.这是我使用的脚本的更简单版本:

$('input:first-child').blur(function(e){
    console.log('here');
  $('input:first-child').focus();
});
Run Code Online (Sandbox Code Playgroud)

当我点击另一个元素进行聚焦时它可以工作,但是当我点击主体或另一个div元素时却没有.为什么?我有一个jsfiddle案例:http://jsfiddle.net/leyou/Zabn4/37/

编辑:我在Chrome/Win7上测试,但使用Firefox看起来更糟糕.它完全忽略了焦点()

jquery focusout

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

关于 Next.js 服务器错误的更有用的堆栈跟踪?

当 Next.js 上发生服务器错误时,调用堆栈会为我提供发生错误的组件,但除此之外它没有提供任何帮助。

例如,在pages/index.jsI 中包含一个名为Test. 此组件包括另一个名为 的组件Test2,其中发生错误。

Next.js 会告诉我在 中发生错误Test2,但不会提及Testpages/index.js。因此,由我来猜测Test2包含在何处。

看这里:

在此处输入图片说明

所有的/node_modules/react-dom/cjs/电话都没有帮助。

那么当 Next.js 发生错误时,如何获得更有用的调用堆栈?

javascript reactjs next.js

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

Python TCP套接字没有关闭?

也许这里有人会对这件事做出回应,这只会让我疯狂.

为了简单起见,我正在做一种代理.只要它收到某些东西,它就会将所有内容转发给服务器,然后发回响应.因此,有一个套接字始终在端口4557上侦听客户端,并且对于每个传入连接,在随机端口上创建一个新套接字以连接到服务器端口4556.

客户端<==>代理<==>服务器

此外,还有另一个套接字,它被实例化并监听来自服务器的请求并转发到相应的客户端.

这是一个例子:

  • 客户端A连接到端口4557上的代理
  • 代理在端口4556上创建到服务器的套接字
  • 除此之外,它还创建了一个侦听端口40100的套接字
  • 客户端发送东西,转发到服务器
  • 客户端断开连接.关闭客户端连接和服务器的套接字
  • 一段时间后,服务器在端口40100上向代理发送内容
  • 所有内容都转发给客户端A(端口40100对应客户端A)
  • 等等..

到目前为止,在我的测试中,我使用一个简单的python脚本向代理发送一个唯一的tcp数据包,以及一个显示接收数据并回显的转储服务器.

所以问题是当关闭与代理的连接时,也应该用"sock.close()"关闭与服务器的连接.然而它似乎完全被忽略了.套接字保持为ESTABLISHED.

现在关于代码.

几点说明.

  • DTN和Node分别是服务器和客户端.
  • 在循环中调用runCallback,直到线程死掉.
  • 当线程死亡时调用finalCallback.
  • 远程主机(客户端),代理端口(到服务器)和代理之间的关联保存在字典中:TCPProxyHostRegister(RemoteHost => Proxy),TCPProxyPortRegister(Port => Proxy),TCPPortToHost(Port => RemoteHost).

第一个类是TCPListenerThread.它只是侦听特定端口并实例化代理(每个Client => Server couple和Server => Client couple)并转发它们的连接.

class TCPListenerThread(StoppableThread):
    def __init__(self, tcp_port):
        StoppableThread.__init__(self)

        self.tcp_port = tcp_port

        self.sock = socket.socket( socket.AF_INET, # Internet
                        socket.SOCK_STREAM ) # tcp
        self.sock.bind( (LOCAL_ADDRESS, self.tcp_port) )

        self.sock.listen(1)

    def runCallback(self):
        print "Listen on "+str(self.tcp_port)+".."
        conn, addr = self.sock.accept()

        if isFromDTN(addr):
            tcpProxy = getProxyFromPort(tcp_port)
            if not tcpProxy:
                tcpProxy = TCPProxy(host, …
Run Code Online (Sandbox Code Playgroud)

python sockets tcp

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

标签 统计

php ×3

jquery ×2

drag ×1

focusout ×1

javascript ×1

mouseup ×1

next.js ×1

pdepend ×1

phpunit ×1

python ×1

reactjs ×1

sockets ×1

tcp ×1