小编Wes*_*n C的帖子

jQuery回调显然在失败时重复?

我似乎在观察至少一种情况,如果在执行时出现错误,传递给jQuery效果函数的回调函数将重复执行.

例如,请参阅此JS Fiddle,其中包含以下代码:

$('#awesome').fadeOut(400,function () {
    log('fading out...');
    dieInAFire();
});
Run Code Online (Sandbox Code Playgroud)

log将传递给它的任何内容附加到div ...但dieInAFire不存在.然而,相反,简单地停止执行,匿名函数似乎被反复调用,正如日志div中出现的"淡出..."的出现数量越来越多所证明的那样.

这是预期的行为吗?如果是这样,为什么?

javascript error-handling jquery animation callback

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

与显示:怎么办FB.ui( 'auth.login' ... {法): 'IFRAME' 而不是 '弹出'?

我正在登录一个简单的Facebook应用程序.我能够使用JavaScript SDK成功地呈现登录/扩展权限与任何的FB.login或下面的代码的弹出窗口对话框:

FB.ui({ method: 'auth.login',
    perms: 'read_stream,publish_stream',
    display: 'popup' },
    function (rsp) {
        fg_log('on login');                             
        if(rsp.session) { 
            if(rsp.perms) {
                fg_log('PERMS: ',rsp.perms);
            } else {
                fg_log('Hmm. No permissions');
            }
        } else {
            fg_log('Hmm. No login');
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

问题是......我不太喜欢弹出窗口.从UI的角度来看,我认为他们感觉不对,就像他们不属于应用程序的其余部分一样.并让他们通过JavaScript现身还需要从用户没有理由额外的点击 - 为了避开弹出窗口拦截器,用户必须点击类似登录按钮(主要是没有意义的,因为在时间应用程序知道它需要显示登录按钮,它已经知道用户需要登录并可能也只是目前的权限对话框).

所以,我想,为什么不是iframe呢?没有弹出窗口拦截器的问题,在页面中很好地嵌入,而Facebook似乎很喜欢它们.

在最近的(2.1.2)的JavaScript SDK源等各个岗位上的Facebook开发者论坛上有一点点似乎预示着一个可以通过"显示:'IFRAME’"为选项FB.ui.部分

但是当我尝试它时,虽然iframe确实出现了,而不是获得权限对话框,我得到:

"发生错误.请稍后再试."

(注意:稍后再次尝试会产生相同的结果.)

是否有一个技巧可以使这个工作,或者由于某种原因被禁止?

javascript facebook facebook-iframe

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

C预处理器作为语言创建工具的长度/限制是多少?我在哪里可以了解更多相关信息?

在他的常见问题解答中,Bjarne Stroustrup说:

为了构建[Cfront,第一个C++编译器],我首先使用C来编写"C with Classes"-to-C预处理器."C with Classes"是C方言,成为C++的直接祖先......然后我在"C with Classes"中编写了Cfront的第一个版本.

当我读到这篇文章时,它引起了我对C预处理器的兴趣.我已经看到它的宏功能适合于简化常用表达式,但没有想到它能够在我想要将类带到C的级别上显着添加语法和语义.

所以现在我有些疑问:

  1. 是否还有其他一些从C语言引导语言的方法?

  2. Stroustrup原创作品的来源是否随处可见?

  3. 我在哪里可以了解更多关于利用这种技术的具体细节?

  4. 这种方法的长度/限制是多少?比方说,可以创建一组预处理器宏,让某人写一些显着的Lisp/Scheme之类的东西吗?

c c++ language-design c-preprocessor

6
推荐指数
4
解决办法
1164
查看次数

如何设置本地python库目录/ PYTHONPATH?

在尝试编写今天使用PIL的Python脚本的过程中,我发现我似乎没有在我的本地计算机上使用它(OS X 10.5.8,默认2.5 Python安装).

所以我跑:

easy_install --prefix=/usr/local/python/ pil
Run Code Online (Sandbox Code Playgroud)

它有点抱怨/usr/local/python/lib/python2.5/site-packages尚未存在,所以我创建它,然后再试一次,得到这个:

测试失败:/usr/local/python//lib/python2.5/site-packages不支持.pth文件错误:错误的安装目录或PYTHONPATH

您正在尝试将程序包安装到不在PYTHONPATH上的目录以及哪些Python不从中读取".pth"文件.您指定的安装目录(通过--install-dir, - prefix或distutils默认设置)是:

/usr/local/python//lib/python2.5/site-packages
Run Code Online (Sandbox Code Playgroud)

并且您的PYTHONPATH环境变量当前包含:

''
Run Code Online (Sandbox Code Playgroud)

好吧,公平 - 我没有做任何事情来设定路径.所以我给〜/ .bash_profile添加了一个快速行:

PYTHONPATH = "$ PYTHONPATH:/usr/local/python/lib/python2.5"

source它,然后再试一次.

相同的错误消息.

考虑到PYTHONPATH显然是固定的,这有点好奇; 我可以echo $PYTHONPATH回去:/usr/local/python/lib/python2.5.我决定从里面查看包含路径的样子:

import sys
print "\n".join(sys.path)
Run Code Online (Sandbox Code Playgroud)

产量:

/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 /System/Library/Frameworks/Python.framework /Versions/2.5/lib/python2.5/plat-darwin /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac /System/Library/Frameworks/Python.framework/Versions /2.5/lib/python2.5/plat-mac/lib-scriptpackages/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/System/Library/Frameworks/Python.framework/Versions/2.5 /lib/python2.5/lib-tk /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/Library/Python/2.5/site-packages/System/Library/Frameworks /Python.framework/Versions/2.5/Extras/lib/python/PyObjC

从中/usr/local/python/yadda/yadda尤其缺失.

不知道我应该在这做什么.如何让python将此位置识别为包含路径?

UPDATE

正如Sven Marnach所说,我忽略了出口PYTHONPATH.我已经纠正了这个问题,现在看到它出现在我sys.path从Python中打印出来的时候.但是,我仍然得到了TEST FAILED上面提到的错误消息,只是使用了我的新PYTHONPATH环境变量.

因此,我尝试将其更改/usr/local/python/lib/python2.5/usr/local/python/lib/python2.5/site-packages,easy_install再次导出和运行相同的命令.这导致一个全新的结果,起初看起来像成功(但不是):

Creating /usr/local/python/lib/python2.5/site-packages/site.py
Searching for pil
Reading http://pypi.python.org/simple/pil/
Reading http://www.pythonware.com/products/pil …
Run Code Online (Sandbox Code Playgroud)

python macos path easy-install python-imaging-library

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

如何识别有助于重现Android Web浏览器的Web渲染错误的因素?

最近,我一直在研究一些网络渲染错误的门票,这些漏洞只能出现在Android设备的一个子集上(甚至是单个Android设备上).此类别中重现的bug似乎真的很难 - 有时我发现我不能做所有,更糟的是,有时我我可以在某些设备上,但不是别人,不知道为什么.

例如:QA最近报告了一张影响"Galaxy Tab/Android QA build 4.1"的故障单.我试过了

  • 使用4.1运行模拟器(ADT和Genymotion)(无法在那里重现)
  • 运行4.1的两个不同的Galaxy Tab设备(无法在那里重现)
  • Browserstack的Galaxy Tab 2 10.1模拟器(运行Android 4.0)......我看到了QA附加到故障单上的截图,显示了成功再现问题.

这是伟大的,我终于解决了这个特定的错误,但在另一方面,它本来是很容易的第一个两次尝试后放弃,从来没有试过Browserstack.我找到了一种重现它的方法,这是运气不好的一半.我想很少依靠这一点,学会更好(一)确定可能的地方,我可以重现的问题(二)烧烤QA给我我需要的所有细节.

有哪些相关变量?我想的是:

  • Android版本
  • 浏览器版本
  • 也许内核版本?
  • 股票与自定义操作系统(运营商/制造商变体可以发挥多大作用)?
  • 屏幕尺寸/分辨率
  • 其他硬件变化?

但我不太了解这些相互作用或其他可能发生的事情.

提出这个问题的另一种方式 - 如果有人来找我并说"嗨,我在使用Samsum DroidTab浏览时在网站上发现了问题?" (或其他不准确指定的设备)究竟是什么,我需要找出为了找到另一台设备/仿真器上,我可以可靠地重现他们看到了什么?

android cross-browser android-emulator android-browser chrome-for-android

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

如何在SQL查询中分解出重复的表达式?列别名似乎不是故障单

所以,我有一个看起来像这样的查询:

SELECT id, 
    DATE_FORMAT(CONVERT_TZ(callTime,'+0:00','-7:00'),'%b %d %Y') as callDate, 
    DATE_FORMAT(CONVERT_TZ(callTime,'+0:00','-7:00'),'%H:%i') as callTimeOfDay, 
    SEC_TO_TIME(callLength) as callLength
FROM cs_calldata WHERE 
    customerCode='999999-abc-blahblahblah' AND 
    CONVERT_TZ(callTime,'+0:00','-7:00') >= '2010-04-25' AND
    CONVERT_TZ(callTime,'+0:00','-7:00') <= '2010-05-25'
Run Code Online (Sandbox Code Playgroud)

如果你像我一样,你可能会开始认为,如果我没有要求它计算CONVERT_TZ(callTime,'+0:00','-7:00')四次单独的时间,它可能会提高可读性和可能的​​查询性能.

所以我尝试为该表达式创建一个列别名,并用该别名替换进一步的出现:

SELECT id, 
    CONVERT_TZ(callTime,'+0:00','-7:00') as callTimeZoned,
    DATE_FORMAT(callTimeZoned,'%b %d %Y') as callDate, 
    DATE_FORMAT(callTimeZoned,'%H:%i') as callTimeOfDay, 
    SEC_TO_TIME(callLength) as callLength
FROM cs_calldata WHERE 
    customerCode='5999999-abc-blahblahblah' AND 
    callTimeZoned >= '2010-04-25' AND
    callTimeZoned <= '2010-05-25'
Run Code Online (Sandbox Code Playgroud)

这是我学习的时候,引用MySQL手册:

标准SQL不允许在WHERE子句中引用列别名.强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值.

所以,这种方法似乎已经死了.

如何用这样的重复表达式编写查询来处理它?

sql select expression column-alias

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

有没有办法将PHP SimpleXMLElement添加到另一个SimpleXMLElement?

SimpleXMLElement的"addChild"方法似乎应该是正确的选择,但它显然只需要表示新子标记名的字符串.

有一个用于引用树节点并设置它们的对象表示法,例如$ simpleXMLNode-> child = value,但这似乎只适用于简单的文本/数值.如果我尝试以下方法:

$s = new SimpleXMLElement('<root/>');
$t = new SimpleXMLElement('<child/>');
$s->a = $t;
echo $s->asXML()
Run Code Online (Sandbox Code Playgroud)

我明白了:

<?xml version="1.0"?>
<root><a></a></root>
Run Code Online (Sandbox Code Playgroud)

当我希望:

<?xml version="1.0"?>
<root><a><child/></a></root>
Run Code Online (Sandbox Code Playgroud)

我想过将$ t转换为字符串然后添加它(在删除XML声明之后):

$s->a = substr($t->asXML(),22)
Run Code Online (Sandbox Code Playgroud)

但这会产生:

<?xml version="1.0"?>
<root><a>&lt;child/&gt;</a></root>
Run Code Online (Sandbox Code Playgroud)

再一次,不是我所希望的.

有没有一种典型的方法来使用SimpleXML完成这种事情?

php simplexml

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