小编Dav*_*Eyk的帖子

iTunes无法将RSS Feed附件识别为有效的播客剧集?

iTunes未将我们的RSS Feed中的附件识别为播客专题节目.我们使用Feedburner将特定于iTunes的标签添加到Feed中,但iTunes也存在原始Feed的问题.

这是我们原来的RSS提要:

http://www.esvbible.org/devotions/rss/chronological/
Run Code Online (Sandbox Code Playgroud)

这是我们的Feedburnerized饲料:

http://feeds.feedburner.com/ESV-Chronological
Run Code Online (Sandbox Code Playgroud)

这是Apple网站上的播客页面:

http://itunes.apple.com/us/podcast/esv-chronological/id301024126
Run Code Online (Sandbox Code Playgroud)

外壳仍然存在,具有适当的类型.Feedburner已将外壳的长度从空字符串更改为"0",在检查规格后技术上是正确的.我错过了什么?

podcast rss itunes feedburner

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

浏览器和Nginx之间HTTP POST的神秘〜1分钟延迟

从客户端javascript发送到我们的服务器时,我们最近经历了一个非常奇怪但非常一致的延迟.

这是我们的技术堆栈,从前到后:

  1. 自定义javascript客户端代码
  2. Backbone.js的
  3. 自定义Backbone.sync()实现
  4. jQuery.ajax()(1.7.2)
  5. 的XmlHttpRequest
  6. 浏览器(在Firefox和Chrome上都经过验证)
  7. 互联网
  8. Nginx前端
  9. 内联网(通过Nginx http://上游)
  10. Nginx后端
  11. Gunicorn(通过Nginx unix://上游插座)
  12. Django 1.4
  13. Django的tastypie

(旁注:您是否曾对网络开发的复杂程度感到敬畏?)

这是事件的时间表:

  1. 客户端代码调用.save()新创建的Backbone APIModel.
  2. 我们的自定义.sync()风向client.send()调度新创建的对象的方式$.ajax().
  3. 生成的XmlHttpRequest POST.该请求显示在浏览器开发工具的网络窗格中,标记为待定.
  4. HTTP请求到达Nginx,后者将其路由到django-tastypie后端.
  5. Tastypie及时,完美地处理请求,创建资源,并返回201 CREATED响应,Location标题指向新资源.
  6. Nginx记录请求并(表面上)发送响应.
  7. 1.1分钟过去了,在此期间,请求仍在"网络"窗格中标记为待处理.
  8. 请求在浏览器的"网络"窗格中标记为已完成.
  9. jQuery xhr触发成功处理程序
  10. 我们的自定义API客户端的成功处理程序检测到201响应代码并触发对该位置的后续GET请求.
  11. 通常的事情发生了,GET迅速响应,最外面的$.Deferred()对象解析,触发任何相关的客户端代码成功处理程序.

其他需要考虑的细节:

  1. 同一堆栈中的GET请求和PUT请求立即解决.
  2. 当通过专用HTTP客户端直接与最外层的Nginx交互时,POST请求与请求中的请求相同,并立即解决.
  3. 删除特殊情况201处理程序和后续GET对该错误没有影响.
  4. 延迟总是 1.1分钟.我曾经console.time()确定延迟在65,000ms范围内变化.
  5. 延迟仅出现在此配置中.它不会出现在我们的开发设置中,它们稍微简单一些.

我正在做的未经证实的假设:

  1. 一旦Nginx记录了一个请求,响应就会被鞠躬并用手写的感谢信发送给客户端.
  2. 这不是浏览器或jQuery中的错误.

请原谅详细的细节,但我已尽力消除变量,目前,我觉得这个问题是以下之一:

  1. 宇宙物理结构的缺陷
  2. 我们头脑中感性模型的缺陷
  3. 我们尚未考虑的其他事情

我希望#3.有任何想法吗?

javascript nginx xmlhttprequest backbone.js tastypie

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

在Python中将简单的Web服务器集成到自定义主循环中?

我在python中有一个带有自定义主循环的应用程序(我不相信细节很重要).我想将一个简单的非阻塞Web服务器集成到应用程序中,该应用程序可以内省应用程序对象,并可能提供一个操作它们的接口.最好的方法是什么?

我想避免任何使用线程的东西.理想的解决方案是具有"步进"功能的服务器,可以从我的主循环调用,执行它的操作,然后返回程序控制直到下一个循环.

解决方案越高级越好(尽管像Django一样整体可能有点矫枉过正).

理想情况下,解决方案将如下所示:

def main():
    """My main loop."""
    http_server = SomeCoolHttpServer(port=8888)

    while True:
        # Do my stuff here...
        # ...

        http_server.next() # Server gets it's turn.

        # Do more of my stuff here...
        # ...
Run Code Online (Sandbox Code Playgroud)

python loops

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

如何阻止PHP输出缓冲吃掉错误消息?

好吧,既然我已经进一步了解它,我意识到这是一个愚蠢的问题,而且是错误的.事实证明,我维护的遗留代码的作者正在使用php_init语句将错误日志添加到不同的文件中.hi-jacking在输出缓冲打开的同时发生,使得看起来好像输出缓冲丢失了我的错误消息.

所以,主持人,随便删除这个.感谢那些善意回答的人.


给出以下PHP脚本:

<?php 
error_log('test'); 

ob_start();

error_log('test2');

ob_end_flush();
?>
Run Code Online (Sandbox Code Playgroud)

我得到以下错误日志输出:

[04-Feb-2010 11:30:38] test
Run Code Online (Sandbox Code Playgroud)

为什么输出缓冲会吃掉我的错误消息?我怎么能让它停下来?

或者,是否有另一种方法可以将消息从输出缓冲区中走私出来,还是只是一个黑洞?

(使用PHP 5.2.4-2ubuntu5.10)

php logging error-reporting output-buffering

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

书签中的XmlHttpRequest在GET上返回空的responseText?

我正在尝试为http://esv.to建立的特殊URL缩短服务构建一个javascript bookmarklet,用于缩短经文引用(即"Matthew 5"变为" http://esv.to/Mt5 ".小书签应该对http://api.esv.to/Matthew+5做一个GET请求,返回text/plain响应http://esv.to/Mt5.

bookmarklet本身的代码如下所示(为了便于阅读而扩展):

var body = document.getElementsByTagName('body')[0], script = document.createElement('script');     
script.type = 'text/javascript';
script.src = 'http://esv.to/media/js/bookmarklet.js';
body.appendChild(script);
void(0);
Run Code Online (Sandbox Code Playgroud)

代码http://esv.to/media/js/bookmarklet.js看起来像这样:

(function() {

    function shorten(ref, callback) {
      var url = "http://esv.to/api/" + escape(ref);
      var req = new XMLHttpRequest(); 
      req.onreadystatechange = function shortenIt() {
        if ( this.readyState == 4 && this.status == 200 ) {
          callback(req.responseText);
        };
      };
      req.open( "GET", url );
      req.send();
    };

    function doBookmarklet() {
      var ref = …
Run Code Online (Sandbox Code Playgroud)

javascript bookmarklet xmlhttprequest

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

将任意键/值对与Postgres DB中的表行相关联的最佳方法?

对于Postgres 8.4 DB,我有一个非常完美的关系数据模式,但是我需要能够将任意键/值对与我的几个表相关联,分配的键按行变化.键/值对是用户生成的,因此我无法提前预测它们或纠缠有序的架构更改.

我有以下要求:

  • 键/值对将经常被读取,偶尔写入.读取必须相当快.
  • 否(当前)需要查询键或值.(但有一天它可能会派上用场.)

我看到以下可能的解决方案:

  1. 实体-属性-值 模式/反模式.烦人,但烦恼一般会被我的ORM所抵消.
  2. 将键/值对存储为文本列上的序列化JSON数据.一个简单的解决方案,ORM再次派上用场,但我可以亲吻未来自己对查询的需求再见.
  3. 在其他NoSQL数据库中存储键/值对 - 可能是键/值或文档存储.ORM在这里没有帮助.我自己必须管理单独的查询(以及迫在眉睫的数据完整性问题?).

我担心查询性能,因为我希望有一天会有很多这些.我也关心程序员的表现,因为我必须构建,维护和使用这些东西.这里有明显的最佳方法吗?或者我错过了什么?

postgresql performance database-design key-value entity-attribute-value

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

如何在Mako运行时环境中优雅地处理NameError和AttributeError?

我发现尝试在Mako模板中访问一个未定义的变量会引发一个NameError,而且逻辑上也是如此.然而,在某些应用程序中,希望更优雅地失败,或许在这些错误上替换空字符串(AttributeError是另一个候选者).这是Django模板语言中的默认行为.有没有办法在Mako中获得这种行为?

python templates template-engine mako

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

如何配置Nginx在404处理之前尝试两个上游?

给定一个大致像这样的Nginx配置:

upstream A {
    server aa:8080;
}

upstream B {
    server bb:8080;
}

server {
  listen 80;

  location @backendA {
    proxy_pass http://A/;
  }

  location @backendB {
    proxy_pass http://B/;
  }

  location / {
    # This doesn't work. :)
    try_files @backendA @backendB =404;
  }
}
Run Code Online (Sandbox Code Playgroud)

基本上,我希望Nginx尝试上游A,如果A返回404,则尝试上游B,如果失败,则将404返回给客户端。try_files对文件系统位置执行此操作,然后可以回退到命名位置,但不适用于多个命名位置。有什么起作用的吗?

背景:我有一个Django Web应用程序(A上游)和一个Apache / Wordpress实例(B上游),我想在同一URL命名空间中共存,以获得更简单的Wordpress URL:mysite.com/hello-world/而不是mysite.com/blog/hello-world/

可以在Nginx位置复制我的Django URL,并使用wordpress作为一个包罗万象的东西:

location /something-django-handles/ {
  proxy_pass http://A/;
}

location /something-else-django-handles/ {
  proxy_pass http://A/;
}

location / {
  proxy_pass http://B/;
} …
Run Code Online (Sandbox Code Playgroud)

configuration reverse-proxy nginx

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

是否有可能创建一个上下文敏感的python上下文管理器来保存,修改和恢复状态?

我有一对python函数,目前在两个值之间翻转一个全局变量.我想把它们变成上下文管理器,所以我可以将它们用作with块,在块内设置变量,但之后恢复它.这是所需的行为:

>>> MODE
'user'
>>> mode_sudo()  # Sets MODE to 'sudo'...
>>> MODE
'sudo'
>>> mode_user()  # Sets MODE to 'user'...
>>> MODE
'user'
>>> with mode_sudo():
...    print MODE
'sudo'
>>> MODE
'user'
Run Code Online (Sandbox Code Playgroud)

这样的嵌合体可能吗?

更新:为了清楚起见,这里是仅限上下文管理器的实现:

from contextlib import contextmanager

@contextmanager
def mode_sudo():
    global MODE
    old_mode = MODE
    MODE = 'sudo'
    yield
    MODE = old_mode

@contextmanager
def mode_user():
    global MODE
    old_mode = MODE
    MODE = 'user'
    yield
    MODE = old_mode
Run Code Online (Sandbox Code Playgroud)

用关键字调用这些w/oa会返回一个生成器.有没有办法通过普通香草函数调用和巧克力上下文管理器获得模式翻转行为?

python state stateful contextmanager

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

Python doctest在0.0!= -0.0上失败 - 是什么给出的?

给出以下代码:

def slope(x1, y1, x2, y2):
    """
      >>> slope(5, 3, 4, 2)
      1.0
      >>> slope(1, 2, 3, 2)
      0.0
      >>> slope(1, 2, 3, 3)
      0.5
      >>> slope(2, 4, 1, 2)
      2.0
    """
    xa = float (x1)
    xb = float (x2)
    ya = float (y1)
    yb = float (y2)
    return (ya-yb)/(xa-xb)

if name_ == '__main__':
    import doctest
    doctest.testmod()
Run Code Online (Sandbox Code Playgroud)

第二个doctest失败了:

Failed example:
    slope(1, 2, 3, 2)
Expected:
    0.0
Got:
    -0.0
Run Code Online (Sandbox Code Playgroud)

但是,我们都知道-0.0 == 0.0.doctest是否正在进行字符串比较以检查结果?为什么第二次测试失败?

python

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

如何使大型python数据结构更高效地进行unpickle?

我有一个约170万个"令牌"对象的列表,以及一个约130,000个"结构"对象的列表,这些对象引用令牌对象并将它们分组到结构中.在美好的一天,它的内存占用量约为800MB.

我正在使用__slots__以减少我的内存占用,所以我__getstate__返回一个可序列化值的元组,这些值会__setstate__重新回到原位.我也没有挑选所有的实例数据,只有5个令牌,7-9个结构,所有字符串或整数.

当然,我正在使用cPickle和HIGHEST_PROTOCOL,它恰好是2(python 2.6).生成的pickle文件大约为120MB.

在我的开发机器上,需要约2分钟来取出泡菜.我想更快地做到这一点.除了更快的硬件和我已经在做的事情之外,我可以使用哪些方法?

python performance serialization pickle

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

将块状序列划分为偶数包裹?

我有一个"块状"项目序列,我想分成一定数量的大致相等大小的宗地,同时保持宗地内容(和宗地本身)的排序顺序.由于在阳光下没什么新东西,我猜我只是缺少问题的正确名称.我的最终目标是算法的python实现,但我至少需要朝着正确的方向推进.

问题是我有一个文本,分为不同长度的部分,我想把它分成一系列公平的读数.当然,读数的顺序必须保持不变.

对于某些细节,我有2,519个部分.最长的是1,876个单词,最短的是7个单词.平均长度为305个字,中位数长度为242.

python algorithm

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

什么是避免对象命名空间冲突的javascript哈希表实现?

首先:我使用了一个相当模糊的javascript嵌入式实现作为Adobe InDesign CS3的脚本引擎.这种实现有时偏离"标准"javascript,因此我的问题.

我正在使用John Resig的jsdiff库(源于此处)来比较两个文档之间的文本选择.jsdiff使用vanilla对象作为关联数组,将文本中的单词映射到另一个对象.(参见第129行附近的jsdiff.js中的"ns"和"os"变量.)

当文本中出现"反映"这个词时,我的头痛开始了."reflect"是所有对象的默认只读属性.当jsdiff尝试将关联数组的值分配给ns ['reflect']时,一切都会爆炸.

我的问题:这有什么方法吗?有没有办法在不使用明显的vanilla对象的情况下在javascript中执行哈希表?

基本规则:切换脚本引擎不是一种选择.:)

javascript hash diff adobe-indesign

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