小编ben*_*ree的帖子

"然后"在CasperJS中真正意味着什么

我正在使用CasperJS通过网站自动执行一系列点击,完成表单,解析数据等.

Casper似乎被组织成一个then语句形式的预设步骤列表(参见他们的例子:http://casperjs.org/quickstart.html)但是不清楚是什么触发了实际运行的下一个语句.

例如,是否then等待所有待处理的请求完成?是否被injectJS视为待处理请求?如果我有一个then嵌套的语句 - 链接到open语句的末尾会发生什么?

casper.thenOpen('http://example.com/list', function(){
    casper.page.injectJs('/libs/jquery.js');
    casper.evaluate(function(){
        var id = jQuery("span:contains('"+itemName+"')").closest("tr").find("input:first").val();
        casper.open("http://example.com/show/"+id); //what if 'then' was added here?
    });
});

casper.then(function(){
    //parse the 'show' page
});
Run Code Online (Sandbox Code Playgroud)

我正在寻找CasperJS中流程如何工作的技术解释.我的具体问题是我的上一个then陈述(上图)在我的casper.open陈述之前运行而我不知道为什么.

javascript casperjs

97
推荐指数
2
解决办法
3万
查看次数

对NSTimer目标的弱参考以防止保留周期

我用的NSTimer是这样的:

timer = [NSTimer scheduledTimerWithTimeInterval:30.0f target:self selector:@selector(tick) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)

当然,NSTimer保留了创建保留周期的目标.此外,self不是一个UIViewController所以我没有任何东西viewDidUnload,我可以无效的计时器来打破循环.所以我想知道我是否可以使用弱引用:

__weak id weakSelf = self;
timer = [NSTimer scheduledTimerWithTimeInterval:30.0f target:weakSelf selector:@selector(tick) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)

我听说计时器必须无效(我想从运行循环中释放它).但我们可以在我们的dealloc中做到这一点,对吗?

- (void) dealloc {
    [timer invalidate];
}
Run Code Online (Sandbox Code Playgroud)

这是一个可行的选择吗?我已经看到人们处理这个问题的方法很多,但我还没有看到这个.

objective-c nstimer automatic-ref-counting retain-cycle

52
推荐指数
5
解决办法
2万
查看次数

Git中的插入和删除是什么?

当我运行git命令时,git commit或者git log --shortstat部分输出如下:

2 files changed, 3 insertions(+), 11 deletions(-)
Run Code Online (Sandbox Code Playgroud)

插入删除的含义是什么?

git

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

在ASP.NET会话中存储任何内容会导致500毫秒延迟

问题:

在ASP.NET站点中使用会话时,几乎在同一时间加载多个请求时会导致严重的延迟(500毫秒的倍数).

更具体地说,我的问题

我们的网站专门为其SessionId使用会话.我们使用此密钥来查找具有用户信息等的db表.这似乎是一个很好的设计,因为它存储了最少的会话数据.不幸的是,如果你在会话中没有任何东西,SessionId会改变,所以我们存储Session["KeepId"] = 1;.这足以说服SessionId不要改变.

在一个看似无关的说明中,该网站通过控制器操作提供定制的产品图像.如果需要,此操作会生成图像,然后重定向到缓存的图像.这意味着一个网页可能包含图像或其他资源,通过ASP.NET管道发送数十个请求.

无论出于何种原因,当您(a)同时发送多个请求并且(b)以任何方式涉及会话时,您将最终获得大约1/2时间的随机500ms延迟.在某些情况下,这些延迟将是1000毫秒或更长,总是以~500毫秒的间隔增加.更多请求意味着更长的等待时间 对于某些图像,我们包含数十张图像的页面可能需要等待10秒以上.

如何重现问题:

  1. 创建一个空的ASP.NET MVC Web应用程序
  2. 创建一个空的控制器动作:

    public class HomeController : Controller
    {
      public ActionResult Test()
      {
        return new EmptyResult();
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建一个test.html页面,其中包含一些符合该操作的img标记:

    <img src="Home/Test?1" />
    <img src="Home/Test?2" />
    <img src="Home/Test?3" />
    <img src="Home/Test?4" />
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行页面并观察firebug中的快速加载时间:

    每张图片加载速度都相当快

  5. 执行以下操作之一(两者都具有相同的结果):

  6. 再次运行该页面并注意响应中的偶然/随机延迟.

    有些请求会遇到长时间延迟

我所知道的

  • 它发生在MVC 2&3和WebForms中
  • 它适用于任何浏览器(我们尝试过FF,Chrome,IE,Safari)
  • 无论是否附加调试器,都会发生这种情况 …

asp.net-mvc session webforms httpsession

34
推荐指数
2
解决办法
7597
查看次数

在XCode Profiler中注册应用程序以进行符号化

我正在尝试在我的设备上运行的应用程序上运行XCode的时间分析器,但符号名称显示为0x2fe26643代替[MyClass myMethod].我意识到我需要重新设计应用程序,但我不知道如何.

像这样的一些答案,说按"重新符号",在列表中找到你的二进制文件,然后按"定位"手动查找dSYM.我的应用程序不在名为的列表中dSYM Locations:

在此输入图像描述

如何才能将我的结果象征化?

更新:我发布了一个YouTube剪辑,说明我尝试重新符号化时的样子:http://www.youtube.com/watch?v = CcLGRNkmako

xcode objective-c ios

20
推荐指数
3
解决办法
5470
查看次数

适用于Mac的轻量级Localhost文件服务器

是否有一个超轻量级的文件服务器,我可以在我的Mac上用于开发?

我想象的是:

> cd somefolder
> run server
  ...running static file server at http://0.0.0.0:2343...
Run Code Online (Sandbox Code Playgroud)

它仅用于开发静态html/css/js/images - 无需外部连接.

macos terminal fileserver

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

在NodeJS/ExpressJS中向自己发出HTTP请求

我正在构建一个需要向自己(正在运行的Web服务器)发出HTTP请求的NPM模块.例如:

var url = "http://127.0.0.1:" + (process.env.PORT || 3000) + path;
request(url, function(error, response, body){ 
  ...
});
Run Code Online (Sandbox Code Playgroud)

有没有办法通过NodeJS管道处理请求而不实际执行HTTP请求?

或者有更好的方法来形成URL?我很紧张,这127.0.0.1不是处理生产网站最强大的方法.

javascript node.js express

20
推荐指数
2
解决办法
7713
查看次数

SQL Server中的事务大小限制

我正在从文本文件中将大量数据加载到SQL Server中.目前,每个记录都在一个单独的事务中插入(或更新),但如果记录失败,则会使DB处于错误状态.

我想把它全部放在一个大交易中.在我的情况下,我正在查看~250,000个插入或更新,可能还有~1,000,000个查询.文本文件大约是60MB.

将整个操作整合到一个交易中是不合理的吗?限制因素是什么?

sql-server transactions

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

不录制时在iOS应用程序中隐藏红色录制状态栏

当应用程序在后台并且没有录制时,我无法将红色"录制"状态栏隐藏在我的应用程序中.

在此输入图像描述

我碰巧使用了The Amazing Audio Engine,但我认为这个问题可以解决这个库的问题.它设置如下:

audioController = [[AEAudioController alloc] initWithAudioDescription:desc inputEnabled:YES];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
Run Code Online (Sandbox Code Playgroud)

当用户想要录制时,我打开麦克风就像这样:

[audioController addInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_PlayAndRecord;
Run Code Online (Sandbox Code Playgroud)

当用户想要停止录制时,我将其关闭:

[audioController removeInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
Run Code Online (Sandbox Code Playgroud)

问题是,当应用程序未录制且用户离开应用程序时,红色的"录制"状态栏仍会显示.我无法停止/处置audioController,因为应用程序可能仍在播放音频.

如果我没有录制,我不希望红色录制状态栏显示.任何想法如何做到这一点?

更新

我设置了以下代码块,在我的应用程序中每2秒运行一次.

audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError* error = nil;
[audioSession setActive:NO error: &error];
NSLog(@"error: %@", error);
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
Run Code Online (Sandbox Code Playgroud)

这个日志:

TAAE: Setting audio session category to MediaPlayback
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput)    result 2003329396 77686174 what
Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)" …
Run Code Online (Sandbox Code Playgroud)

audio objective-c ios avaudiosession

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

使用Redis商店扩展Engine.IO(与Socket.IO对比)

关于这个主题有几个问题,但没有一个问题可以解决.

我正在使用带有redis-store的Socket.IO,而我正在为流量增加做准备.我的托管公司说,"你需要使用Engine.IO而不是Socket.IO,因为它的效率更高",所以我很想弄明白这意味着什么.

像这样的问题似乎有相互矛盾的答案:

所以我看待它的方式:

  • Socket.IO 0.9降级
  • Engine.IO增强了
  • Socket.IO 1.0将使用Engine.IO
  • 如果要在多个实例上运行Engine.IO,则必须自己编写redis存储

但随后Engine.IO称其"负载平衡器友好",但对redis一无所知.它必须有某种外店,对吧?但如果它有多个传输和商店,那么Socket.IO有什么意义呢?

然后,我看到Socket.IO 可能被抛弃高调的公司正在博智.

如何扩展Engine.IO?我自己要写店吗?

node.js socket.io

13
推荐指数
2
解决办法
6150
查看次数