我正在寻找一种方法,使用标准Net :: HTTP库为每个GET请求使用不同的IP地址.服务器有5个IP地址,并假设某些API在达到每个IP的请求限制时阻止访问.所以,只有这样做 - 使用另一台服务器.我在ruby docs中找不到任何关于它的东西.
例如,curl允许您将其附加到特定的IP地址(在PHP中):
$req = curl_init($url)
curl_setopt($req, CURLOPT_INTERFACE, 'ip.address.goes.here';
$result = curl_exec($req);
Run Code Online (Sandbox Code Playgroud)
有没有办法用Net :: HTTP库做到这一点?作为替代 - CURB(红宝石卷曲绑定).但这将是我将尝试的最后一件事.
建议/想法?
PS使用CURB的解决方案(带有脏测试,ip被替换):
require 'rubygems'
require 'curb'
ip_addresses = [
'1.1.1.1',
'2.2.2.2',
'3.3.3.3',
'4.4.4.4',
'5.5.5.5'
]
ip_addresses.each do |address|
url = 'http://www.ip-adress.com/'
c = Curl::Easy.new(url)
c.interface = address
c.perform
ip = c.body_str.scan(/<h2>My IP address is: ([\d\.]{1,})<\/h2>/).first
puts "for #{address} got response: #{ip}"
end
Run Code Online (Sandbox Code Playgroud) 对于TDD,你必须这样做
有了这种方法,你想要覆盖所有的情况(至少在我脑海中浮现),但我想知道我是否在这里过于严格,如果有可能"提前思考" 一些场景而不是简单发现它们.
例如,我正在处理一个文件,如果它不符合某种格式,我会抛出一个 InvalidFormatException
所以我的第一个测试是:
@Test
void testFormat(){
// empty doesn't do anything nor throw anything
processor.validate("empty.txt");
try {
processor.validate("invalid.txt");
assert false: "Should have thrown InvalidFormatException";
} catch( InvalidFormatException ife ) {
assert "Invalid format".equals( ife.getMessage() );
}
}
Run Code Online (Sandbox Code Playgroud)
我运行它并失败,因为它不会抛出异常.
因此,我想到的下一件事是: "尽可能做最简单的事情",所以我:
public void validate( String fileName ) throws InvalidFormatException {
if(fileName.equals("invalid.txt") {
throw new InvalidFormatException("Invalid format");
}
}
Run Code Online (Sandbox Code Playgroud)
卫生署!(虽然真正的代码有点复杂,我发现自己做了几次这样的事情)
我知道我最终必须添加另一个文件名和其他测试,这会使这种方法变得不切实际,这将迫使我重构一些有意义的东西(如果我理解正确是TDD的重点,发现模式的用法推出)但是:
问:我是否过于字面意思"做最简单的事情......"的事情?
我有一个需要弹出ActiveX对象的div框,但似乎ActiveX对象具有无限高的z-index,即使我将该索引设置为低时也是如此.我的div框继续显示在ActiveX对象下.有任何想法吗?
棘手的部分是每个项目都有一个ContextMenu我仍然想要在右键单击时打开的项目(我只是不希望它选择它).
事实上,如果它让事情变得更容易,我根本不需要任何自动选择,所以如果有某种方式我可以完全禁用它,那就没事了.
我只想切换到一个ItemsControl实际的,只要我可以使用虚拟化和滚动来使用它.
使用Facebook的Graph API,给定用户名xyz(假设他们已经对我的网站进行了身份验证),如何获取用户管理的所有Facebook页面的列表?
是否可以在Safari和/或UIWebView上自动播放youtube视频?我已经在iPhone应用程序中看到了这一点,tableview显示没有Youtube预览图标的单元格(非常确定它是UIWebView虽然),当你点击单元格时,它直接进入视频.
这可以通过在youtube视频上点击一下来完成吗?如果是这样,怎么样?请问getElementById().点击工作?
Tie :: Hash有这些:
sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} }
sub NEXTKEY { each %{$_[0]} }
Run Code Online (Sandbox Code Playgroud)
NEXTKEY有两个参数,其中一个是最后一个键,但arg从未被引用过?
除了perltie之外,各种各样的Tie文档并没有说明这一点:
my $a = keys %{$self->{LIST}}; # reset each() iterator
Run Code Online (Sandbox Code Playgroud)
查看每个文档并不会增加这一点.
这是怎么回事?
鉴于我有一个设置了一些属性的Fruit实例,并且我想将这些属性放入一个新的Pear实例中(因为这个特殊的Fruit恰好具有梨的特性),实现这种效果的最佳方法是什么?
例如,我们不能做的只是简单地将水果浇到梨上,因为不是所有的水果都是梨:
public static class PearGenerator {
public static Pear CreatePear () {
// Make a new generic fruit.
Fruit genericFruit = new Fruit();
// Upcast it to a pear. (Throws exception: Can't cast a Fruit to a Pear.)
Pear pear = (Pear)genericFruit;
// Return freshly grown pear.
return ( pear );
}
}
public class Fruit {
// some code
}
public class Pear : Fruit {
public void PutInPie () {
// some code
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新: …
I set up various global parameters in Global.asax, as such:
Application["PagePolicies"] = "~/Lab/Policies.aspx";
Application["PageShare"] = "/Share.aspx";
Application["FileSearchQueries"] = Server.MapPath("~/Resources/SearchQueries.xml");
...
Run Code Online (Sandbox Code Playgroud)
I have no problem accessing these variables form .ascx.cs or .aspx.cs file -- ie. files that are part of the Web content. However, I can't seem to access 'Application' from basic class objects (ie. standalone .cs files). I read somewhere to use a slight variations in .cs files, as follows, but it always comes throws an exception when in use: …
我想知道NES如何显示其图形肌肉.我已经在线研究过这些东西,并通过它阅读,但我想知道最后一件事:Nametables.
基本上,根据我的阅读,NES名称表中的每个8x8块指向模式表中的一个位置,该位置保存图形内存.此外,名称表还有一个属性表,为每个16x16块设置特定的调色板.他们像这样联系在一起:
(假设16个8x8块)Nametable,ABCD =指向精灵数据的指针:
ABBB
CDCC
DDDD
DDDD
Run Code Online (Sandbox Code Playgroud)
属性表,1 2 3 =指向调色板数据的指针,<左侧引用值,上方^,左侧和上方:
1<2<
^'^'
3<3<
^'^'
Run Code Online (Sandbox Code Playgroud)
因此,在上面的示例中,块将被着色
1A 1B 2B 2B
1C 1D 2C 2C
3D 3D 3D 3D
3D 3D 3D 3D
Run Code Online (Sandbox Code Playgroud)
现在,如果我在固定的屏幕上有这个 - 它很棒!因为NES分辨率是256x240像素.现在,这些表如何调整滚动?
因为Nametable 0可以滚动到Nametable 1,如果你继续滚动Nametable 0将再次回滚.我得到了.但我没有得到的是如何滚动属性表包装.从我在网上看到的情况来看,它分配属性的16x16块会导致屏幕边缘区域的颜色失真(如左右滚动时反映,SMB3反之亦然).
我关心的是我了解如何滚动名称表,但是如何滚动属性表?对于intsance,如果我在屏幕的左侧有一个绿色块,将屏幕向右移动理论上应该使右侧的瓷砖变为绿色,直到它们移动到框架中,然后它们将恢复到他们的正常颜色.
~~~~编辑:我想指出我知道扫描线,X和Y.这个想法刚刚贯穿我的脑海.
假设我的扫描线Y为10.这意味着我正在水平地读取10个值到我的名字表中.这意味着我的第一列不在屏幕上,因为它只有8的像素宽度.但是,颜色属性保持不变,因为它的宽度为16.
假设整个列的颜色属性为绿色,我认为对用户来说是正确的,屏幕左边的前6个像素是绿色,屏幕最右边的10个也应该是绿色的?那么,根据屏幕,左边的假设我是否正确?