小编Hub*_*bro的帖子

我如何解决Javascript闭包问题?

考虑这个小小的JavaScript片段:

for(var i in map.maps)
{
    buttons.push($("<button>").html(i).click(function() { alert(i); }));
}
Run Code Online (Sandbox Code Playgroud)

它为map.maps对象中的每个字段创建一个按钮(它是一个assoc数组).我将索引设置为按钮的文本,并将其设置为警告索引.显然,人们会希望所有按钮在单击时提醒它自己的文本,而是所有按钮在单击时提醒对象中最终索引的文本map.maps.

我认为这种行为是由JavaScript处理闭包,返回并从创建它们的闭包中执行函数的巧妙方式引起的.

我可以想象解决这个问题的唯一方法是将索引设置为按钮对象上的数据并使用单击回调中的数据.我也可以模仿map.maps我的buttons对象中的索引,并在点击使用时找到正确的索引indexOf,但我更喜欢前一种方法.

我在答案中寻找的是确认我正在以正确的方式做,或者建议我该如何做.

javascript jquery closures function

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

在运行查询之前,如何检查PDO MySQL连接是否存在错误?

我的脚本在很多不同的功能中都充满了分叉的进程.每当pcntl_fork()调用时,所有MySQL连接都将丢失.如果我在PDO MySQL连接上运行查询,我会收到错误"MySQL server has gone away".

问题是此错误仅在PDO::errorinfo()查询执行失败后显示.在尝试运行查询之前,我希望能够检测MySQL服务器是否"已经消失".这样我就可以创建一个PDO包装器,在这种情况下为我创建一个新的连接.

有任何想法吗?

php mysql pdo pcntl

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

对于node.js,是否存在Python的argparse等效模块?

argparse for python使得它可以快速轻松地处理命令行输入,处理位置参数,可选参数,标志,输入验证等等.我已经开始在node.js中编写应用程序了,我发现手动编写所有这些内容非常繁琐且耗时.

是否有node.js模块来处理这个?

module command-line-arguments node.js

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

是否有任何通用CRUD客户端应用程序?

我正在使用PHP Tonic创建一个CRUD样式API,它使用相同的URL(例如/ somepath/person),您可以对其执行POST,GET,PUT和DELETE请求.但我遇到了测试API的问题.测试GET显然很容易(只需使用浏览器访问URL),但如何测试剩余的3个请求方法?

我正在想象一个桌面CRUD客户端,我在其中得到一个简单的文本框,其中放置查询参数,URL框和发送按钮.

这样的应用程序是否已经存在,或者我必须制作一个?


替代问题,我可以使用CURL吗?在哪种情况下,怎么样?

php curl crud

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

如何在打开 MessageBox 之前关闭 ProgressDialog?

我制作了一个可运行的示例来演示错误行为:http : //pastebin.com/8KpzD4pw


这个问题非常令人恼火。我wx.ProgressDialog在保存文件时遇到了问题IOError,然后我想关闭进度对话框并显示错误消息。不幸的是,这似乎是不可能的。进度对话框在消息框关闭之前公然拒绝关闭:

插图

如您所见,消息框出现在进度对话框下方,因此用户必须手动将焦点切换到消息框才能查看其内容。当消息框关闭时,进度对话框也会消失。这是保存函数的代码:

def save(self, path=None):
    # Show a loading dialog while the document is staving.
    progress = shared.show_loading(self, 'Saving document')

    try:
        raise IOError('Error message')

        if not path:
            self.document.save()
        else:
            self.document.save_to_file(path)
    except IOError as e:
        progress.done()

        message = 'Failed to save file:\n\n{}'.format(e.message)
        wx.MessageBox(message, 'Error', wx.OK | wx.ICON_ERROR)

    progress.done()
Run Code Online (Sandbox Code Playgroud)

show_loadingprogress.done功能是使用只是快捷方式wx.ProgressDialog)。

为什么在打开消息框之前进度对话框没有消失?我该如何解决?


我也试过用wx.CallAfter打开消息框,无济于事:

# ...
except IOError as e:
    message = 'Failed to …
Run Code Online (Sandbox Code Playgroud)

python wxpython

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

如何从 Vim 脚本文件手动执行组合键?

假设我想<C-e>从 Vim 脚本中运行组合键五次。那可能吗?如果是这样,它是如何完成的?


具体来说,我需要这个是因为我想映射一个键来在一个方向上微移屏幕高度四分之一的视口。为此,我需要以某种方式将该功能winheight(".")与键组合结合起来<C-e>

注意: 我知道我可以更改'scroll'设置行数<C-u><C-d>滚动的选项,但该组合键也会移动光标。此外,我不知道如何设置'scroll'选项来滚动窗口高度的一部分,除了当我将其设置为 0 时它会滚动窗口高度的一半。

vim

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

为什么我的自建PyGObject段导入Gtk或Gdk?

编辑:我曾尝试导入代表了几乎所有的图书馆/usr/lib/girepository-1.0,通过gi.repository和他们所有除GTK和GDK工作.我更新了标题以反映这一点.


我需要一个自建的PyGObject库来配合我自己构建的Python 3.3.3.我使用了为PyGObject安装了所有依赖项sudo apt-get build-dep python3-gi.我发现工作系统PyGObject版本是3.2.2,所以我从Git repo检查了源版本3.2.2.我跑了:

autoreconf --force --install
./configure --prefix=/home/tomas/.pyenv/versions/3.3.3
make
make install

一切都编译和安装精美.我打开了一个新的CMD并将工作目录设置为~,然后:

~$ python
Python 3.3.3 (default, Dec 21 2013, 23:12:28) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gi.repository import Gtk
Segmentation fault (core dumped)
~$ 

我已LD_LIBRARY_PATH/home/tomas/.pyenv/versions/3.3.3/lib,并检查了正确的库被加载:

~$ ldd .pyenv/versions/3.3.3/lib/python3.3/site-packages/gi/_gi.so
    linux-vdso.so.1 =>  (0x00007fffcdf51000)
    libgirepository-1.0.so.1 => /usr/lib/libgirepository-1.0.so.1 (0x00007f45d8304000)
    libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f45d80b5000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f45d7dbf000)
    libpyglib-gi-2.0-python.so.0 …

python gtk

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

本机 Ruby 模块出现错误“找不到指定的模块。” 这不是真的

我刚刚使用以下命令安装了适用于 Windows 的 Ruby gem“sqlite3”

>gem install sqlite3 --platform=ruby -- --with-sqlite3-include=c:/sqlite3/include --with-sqlite3-lib=c:/sqlite3/lib --with-sqlite3-dir=c:/sqlite3/bin
Run Code Online (Sandbox Code Playgroud)

它编译看起来很完美,但是当我尝试包含 gem 时,我得到:

irb(main):001:0> 需要“sqlite3”
LoadError:126:找不到指定的模块。- C:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.9/lib/sqlite3/sqlite3_native.so
        来自 C:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        来自 C:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        来自 C:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.9/lib/sqlite3.rb:6:in `rescue in '
        来自 C:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.9/lib/sqlite3.rb:2:in `'
        来自 C:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:135:in `require'
        来自 C:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:135:in `require 中的救援'
        来自 C:/Ruby200/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:144:in `require'
        来自(irb):1
        来自 C:/Ruby200/bin/irb:12:in `'

所以我检查了它为“sqlite3_native.so”提供的路径,你瞧,它就在那里!就像它应该的那样。那么鲁比为什么要对我撒谎呢?我怎样才能找出宝石不起作用的真正原因?

我手动构建 gem 的原因是预构建的 gem 带有过时的 SQLite3 版本

ruby sqlite

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

Python/tkinter - 如何在Windows上获得包含边框的窗口大小?

我正试图根据窗口的宽度和高度来定位窗口.在Windows上,窗口大小由报告wm_geometry,winfo_width并且winfo_height客户区的大小,即没有边框的窗口大小.窗口的位置,如所报告的 wm_geometry,winfo_x以及winfo_y使用的位置设置wm_geometry,是包括边框的窗口的左上角点的位置.

这意味着当我尝试将窗口置于屏幕中央时,屏幕上的位置明显太低.

我不想硬编码边框厚度,因为它可以变化.

是否可以使用Python/tkinter在Windows上获取或推断窗口边框的大小?

python windows tk-toolkit tkinter

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

是否可以根据 Varnish 中后端响应的大小来阻止缓存?

我们正在缓存有问题的 IIS 服务器,该服务器有时只发送空响应(0 字节)而不是正确的响应。缓存这些响应将是一场灾难,而且我们无法解决问题,因为它不是我们的服务器。相反,我想指示 Varnish 如果后端的响应为空(0 字节),则不要缓存它们。

阅读VCL参考(https://www.varnish-cache.org/docs/4.0/reference/vcl.html)我看不到任何明显的方法来解决这个问题。

能做到吗?

caching varnish varnish-vcl varnish-4

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