我正在使用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
陈述之前运行而我不知道为什么.
我用的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)
这是一个可行的选择吗?我已经看到人们处理这个问题的方法很多,但我还没有看到这个.
当我运行git命令时,git commit
或者git log --shortstat
部分输出如下:
2 files changed, 3 insertions(+), 11 deletions(-)
Run Code Online (Sandbox Code Playgroud)
插入或删除的含义是什么?
在ASP.NET站点中使用会话时,几乎在同一时间加载多个请求时会导致严重的延迟(500毫秒的倍数).
我们的网站专门为其SessionId使用会话.我们使用此密钥来查找具有用户信息等的db表.这似乎是一个很好的设计,因为它存储了最少的会话数据.不幸的是,如果你在会话中没有任何东西,SessionId会改变,所以我们存储Session["KeepId"] = 1;
.这足以说服SessionId不要改变.
在一个看似无关的说明中,该网站通过控制器操作提供定制的产品图像.如果需要,此操作会生成图像,然后重定向到缓存的图像.这意味着一个网页可能包含图像或其他资源,通过ASP.NET管道发送数十个请求.
无论出于何种原因,当您(a)同时发送多个请求并且(b)以任何方式涉及会话时,您将最终获得大约1/2时间的随机500ms延迟.在某些情况下,这些延迟将是1000毫秒或更长,总是以~500毫秒的间隔增加.更多请求意味着更长的等待时间 对于某些图像,我们包含数十张图像的页面可能需要等待10秒以上.
创建一个空的控制器动作:
public class HomeController : Controller
{
public ActionResult Test()
{
return new EmptyResult();
}
}
Run Code Online (Sandbox Code Playgroud)创建一个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)运行页面并观察firebug中的快速加载时间:
执行以下操作之一(两者都具有相同的结果):
向Global.asax.cs添加一个空的Session_Start处理程序
public void Session_Start() { }
Run Code Online (Sandbox Code Playgroud)把东西放在会议中
public class HomeController : Controller
{
public ActionResult Test()
{
HttpContext.Current.Session["Test"] = 1;
return new EmptyResult();
}
}
Run Code Online (Sandbox Code Playgroud)再次运行该页面并注意响应中的偶然/随机延迟.
我正在尝试在我的设备上运行的应用程序上运行XCode的时间分析器,但符号名称显示为0x2fe26643
代替[MyClass myMethod]
.我意识到我需要重新设计应用程序,但我不知道如何.
像这样的一些答案,这说按"重新符号",在列表中找到你的二进制文件,然后按"定位"手动查找dSYM.我的应用程序不在名为的列表中dSYM Locations
:
如何才能将我的结果象征化?
更新:我发布了一个YouTube剪辑,说明我尝试重新符号化时的样子:http://www.youtube.com/watch?v = CcLGRNkmako
是否有一个超轻量级的文件服务器,我可以在我的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 - 无需外部连接.
我正在构建一个需要向自己(正在运行的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
不是处理生产网站最强大的方法.
我正在从文本文件中将大量数据加载到SQL Server中.目前,每个记录都在一个单独的事务中插入(或更新),但如果记录失败,则会使DB处于错误状态.
我想把它全部放在一个大交易中.在我的情况下,我正在查看~250,000个插入或更新,可能还有~1,000,000个查询.文本文件大约是60MB.
将整个操作整合到一个交易中是不合理的吗?限制因素是什么?
当应用程序在后台并且没有录制时,我无法将红色"录制"状态栏隐藏在我的应用程序中.
我碰巧使用了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) 关于这个主题有几个问题,但没有一个问题可以解决.
我正在使用带有redis-store的Socket.IO,而我正在为流量增加做准备.我的托管公司说,"你需要使用Engine.IO而不是Socket.IO,因为它的效率更高",所以我很想弄明白这意味着什么.
像这样的问题似乎有相互矛盾的答案:
所以我看待它的方式:
但随后Engine.IO称其"负载平衡器友好",但对redis一无所知.它必须有某种外店,对吧?但如果它有多个传输和商店,那么Socket.IO有什么意义呢?
然后,我看到Socket.IO 可能被抛弃和高调的公司正在向博智.
如何扩展Engine.IO?我自己要写店吗?
objective-c ×3
ios ×2
javascript ×2
node.js ×2
asp.net-mvc ×1
audio ×1
casperjs ×1
express ×1
fileserver ×1
git ×1
httpsession ×1
macos ×1
nstimer ×1
retain-cycle ×1
session ×1
socket.io ×1
sql-server ×1
terminal ×1
transactions ×1
webforms ×1
xcode ×1