小编Ami*_*mir的帖子

在html5浏览器中取消单个图像请求

我正在动态加载(大)图像以绘制到html5画布,如下所示:

var t = new Image();
t.onload = ...
t.src = 'http://myurl';
Run Code Online (Sandbox Code Playgroud)

但每隔一段时间就想完全取消图像请求.

只有这样,我来到了被设置src''.即

t.src = ''
Run Code Online (Sandbox Code Playgroud)

这适用于许多浏览器,但似乎只有Firefox实际上取消了对图像的http请求.

我通过禁用缓存并启用"模拟调制解调器速度"来测试Fiddler2.然后运行小提琴来测试取消图像请求.(我很想听听关于如何测试这个的其他想法)

我知道有办法取消所有请求(如在这个问题中),但我只想取消一个.

有关其他方式(特别是在移动浏览器上)的任何想法吗?

javascript jquery canvas image mobile-safari

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

get_result()是Google App Engine中put_async()的必需调用

随着GAE 1.5.0的新版本,我们现在可以轻松地进行异步数据存储调用.我们是否需要get_result()在调用' put_async ' 后调用?

例如,如果我有一个名为的模型MyLogData,我可以调用:

put_async(MyLogData(text="My Text"))
Run Code Online (Sandbox Code Playgroud)

在我的处理程序返回之前没有调用匹配get_result()?在将结果发送到客户端之前,GAE是否会自动阻止任何待处理的呼叫?

请注意,我并不真正关心错误条件.即我不介意其中一些失败.

python google-app-engine asynchronous google-cloud-datastore

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

如何显示带有Dictionary的TryGetValue的双重检查锁模式不是线程安全的

最近我看到一些C#项目使用双重检查锁定模式Dictionary.像这样的东西:

private static readonly object _lock = new object();
private static volatile IDictionary<string, object> _cache = 
    new Dictionary<string, object>();

public static object Create(string key)
{
    object val;
    if (!_cache.TryGetValue(key, out val))
    {
        lock (_lock)
        {
            if (!_cache.TryGetValue(key, out val))
            {
                val = new object(); // factory construction based on key here.
                _cache.Add(key, val);
            }
        }
    }
    return val;
}
Run Code Online (Sandbox Code Playgroud)

这段代码是不正确的,因为当(在锁外)迭代Dictionary集合时,可以"增长" 集合.在许多情况下这可能是极不可能的,但仍然是错误的._cache.Add()_cache.TryGetValue

是否有一个简单的程序来证明此代码失败了?

将其纳入单元测试是否有意义?如果是这样,怎么样?

.net c# multithreading double-checked-locking

13
推荐指数
3
解决办法
3612
查看次数

何时将样式表添加到document.styleSheets

我试图动态地添加使用javascript CSS样式表规则,类似例子2 这里.

它大部分时间都有效,但似乎有一种竞争条件,有时会导致(至少)Chrome(15.0.874和17.0.933)失败.当缓存为空(或已被清除)时,它很少发生.

这就是我能够将其缩小到的范围.首先,我通过附加一个外部样式表来加载它<head>,然后我创建一个新的样式表(我将添加规则).然后我打印document.styleSheets(立即和1秒后)的长度.

$(function() {
    // it doesn't happen if this line is missing.
    $("head").append('<link rel="stylesheet" type="text/css"'+
                     'href="/css/normalize.css" />');

    var stylesheet = document.createElement("style");
    stylesheet.setAttribute("type", "text/css");
    document.getElementsByTagName('head')[0].appendChild(stylesheet);

    var b = $('body');
    b.append(document.styleSheets.length).append('<br/>');
    setTimeout(function() {
        b.append(document.styleSheets.length).append('<br/>');
    }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

(在http://jsfiddle.net/amirshim/gAYzY/13/上播放)

当缓存是明确的,有时打印2,然后4(的jsfiddle增加了它自己的2个css文件),这意味着它不会添加样式表或者document.styleSheets立即...但也许等待外部文件加载.

这是预期的吗?

如果是这样,MDN上的示例2(以及其他许多其他内容)是否已损坏?从第27行开始:

var s = document.styleSheets[document.styleSheets.length - 1];
Run Code Online (Sandbox Code Playgroud)

可能会评估 document.styleSheets.length == 0

请注意,当我不首先加载外部CSS文件时,不会发生这种情况.

javascript css jquery google-chrome stylesheet

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

Flash:在全屏模式下使用鼠标滚轮事件(Windows和Mac)

虽然Flash有一个鼠标滚轮事件(MouseEvent.MOUSE_WHEEL),但它有很多问题.

首先,Mac上尚不支持该事件.所以有一堆解决方案,所有这些(基本上)都在javascript中捕获mousewheel(或DOMMouseScroll)事件并将其传递给flash应用程序.幸运的是,在我测试过的所有Mac浏览器中,当闪光灯处于全屏模式时,这也适用.

问题2是flash忽略具有小"增量"的鼠标滚轮事件.例如,Microsoft的IntelliPoint Mice带有"Smooth Scroll"会导致此问题.解决方案与mac的解决方案相同...即在浏览器中捕获javascript鼠标滚轮事件并将其传递给应用程序.问题是我测试的Windows浏览器(firefox,即safari和chrome),当闪存处于全屏模式时,它们似乎无法捕获此事件.有谁知道为什么或如何解决这个问题?

我目前有一个混合解决方案,总是从javascript(非全屏或全屏模式)中获取事件,除非它在Windows上处于全屏模式(此时它从闪光鼠标轮事件中获取它们).所以它失败的唯一时间是Windows上的全屏模式,鼠标具有小的增量.有人有完整的解决方案?还是只是一个更好的?

javascript flash fullscreen actionscript-3 mousewheel

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

"/ /"在javascript正则表达式中有效吗?

以下代码是否有效?

function test() {
  return /\//.exec("\/");
}
alert(test());
Run Code Online (Sandbox Code Playgroud)

似乎许多javascript minifiers(包括http://jscompress.com/上的 jsmin )认为第二行的"//"是评论的开头.我认为这是"简单"实现的缩小器中的一个错误,因为我试过的所有浏览器实现都运行它没有问题.在jsfiddle上尝试一下.

javascript regex parsing comments minify

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

为什么在python中的空函数调用对于动态编译的python代码来说要慢15%左右

这是非常糟糕的微优化,但我只是好奇.它通常不会对"真实"世界产生影响.

所以我正在编译一个函数(什么都不做),compile()然后调用exec该代码并获取对我编译的函数的引用.然后我执行了几百万次计时.然后用本地函数重复它.为什么动态编译的函数只需要调用约15%(在python 2.7.2上)?

import datetime
def getCompiledFunc():
  cc = compile("def aa():pass", '<string>', 'exec')
  dd = {}
  exec cc in dd
  return dd.get('aa')

compiledFunc = getCompiledFunc()  
def localFunc():pass


def testCall(f):
  st = datetime.datetime.now()
  for x in xrange(10000000): f()
  et = datetime.datetime.now()
  return (et-st).total_seconds()

for x in xrange(10):
  lt = testCall(localFunc)
  ct = testCall(compiledFunc)
  print "%s %s %s%% slower" % (lt, ct, int(100.0*(ct-lt)/lt))
Run Code Online (Sandbox Code Playgroud)

我得到的输出是这样的:

1.139 1.319 15% slower
Run Code Online (Sandbox Code Playgroud)

python optimization dynamic micro-optimization python-2.7

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

JavaScript中的清洁(嵌套)闭包与jQuery的each()

我想知道是否有更清晰(更简洁)的方法来执行每个()在遵循JavaScript代码时所做的事情.

$(".moreinfodialog")
    .before('<a href="#">Click for more info.</a>')
    .each(function() {
        var temp = this;
        $(this).prev("a").click(function() {
            $(temp).dialog("open");
            return false;
        });
    })
    .dialog({ autoOpen: false, modal: true });
Run Code Online (Sandbox Code Playgroud)

请注意,最后一次调用会重新排序dom元素,因此".moreinfodialog"类不再位于hrefs旁边.

顺便说一句:这个源使用jquery/jquery-ui对话框用".moreinfodialog"类隐藏div中的任何文本,并将其替换为"Click for more info".文本.单击该文本时,将显示包含原始div内文本的对话框.

javascript jquery closures jquery-ui

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

System.Web.Routing.RouteCollection.GetRouteData中的异常

我在iis7上运行的asp.net mvc代码中随机获得了两个异常:

Exception type: InvalidOperationException 
Exception message: Collection was modified; enumeration operation may not execute. 
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List'1.Enumerator.MoveNextRare()
   at System.Collections.Generic.List'1.Enumerator.MoveNext()
   at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)
   at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context)
   at System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)

Exception type: NullReferenceException 
Exception message: Object reference not set to an instance of an object. 
   at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)
   at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context)
   at System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)

它不是一贯可重复的,但我认为它是改变(或腐败)的东西RouteTable.Routes.我RouteTable.Routes在项目中访问的唯一地方是Global.asax.cs …

c# asp.net-mvc iis-7 iis-6 asp.net-mvc-routing

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

图像在加载到iframe后不从缓存加载

我正在iframe中加载图像,然后(一旦加载了iframe)在页面上加载图像.但大多数浏览器似乎都在加载图像两次.为什么img标签不是从缓存中加载的?

像这样的东西:

var loader = $('<iframe />').appendTo('body')[0];
loader.onload = function() {
    $('body').append('<img src="' + imgsrc + '" />');
};
loader.src = imgsrc;
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/amirshim/na3UA/

我正在使用fiddler2来查看网络流量.

如果您想知道我为什么要这样做,请查看此问题

javascript iframe jquery caching image

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

用于并行加载依赖数据源的Coffeescript/Javascript设计模式

我有两个(缓慢加载)数据源.我可以在加载后立即开始处理数据源2,但是需要来自1和2的数据来处理来自源1的数据.所以我有一些代码如下:

$.get 'url2', (data2) ->
    $.get 'url1', (data1) ->
        # do stuff with data1 and data2
    # do stuff with data2
Run Code Online (Sandbox Code Playgroud)

但是,我想并行加载它们,而不是顺序加载它们(即我不想在开始加载数据源1之前等待数据源2加载).

有没有很好的设计模式呢?

javascript jquery design-patterns asynchronous coffeescript

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

Google App Engine上的交叉点

当用户Facebook连接到我的网站时,我想将用户的Facebook好友列表范围缩小到那些已经注册我网站的用户.

所以我有两个清单

  • 用户的Facebook好友代码列表(约1000)
  • 已注册我网站的所有FB用户的GAE表(约1000)

最有效的方法是对所有已注册的FB用户的UID执行单个查询并在代码中执行交集吗?

如果有更多像10,000名FB用户注册的话,那么最有效的方法是在30秒内无法通过查询检索到这些用户?

google-app-engine facebook google-cloud-datastore

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