Evil Engineering
IPTables: Blocking your favorite Brute Force Attacker
If you happen to detect a bruteforce attack on your self-hosted WP instance, this would be the IPTables syntax to block it:
iptables -A INPUT -s 119.81.130.34 -j DROP
Whenever you miss the attacker, and you’re ready to unblock, you may just type:
iptables -D INPUT -s 119.81.130.34 -j DROP
Hope this helps!
ARC: weakSelf Caveats
Here’s an interesting ARC scenario. Consider the following snippet:
int64_t delay = (int64_t)(0.1 * NSEC_PER_SEC);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), ^{
[weakSelf doSomething];
});
Whenever the block gets executed… weakSelf might have a valid reference, or not. Right?.
Now, what happens with the following snippet?
int64_t delay = (int64_t)(0.1 * NSEC_PER_SEC);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), ^{
[weakSelf doSomething];
[weakSelf doSomethingElse];
});
This is where it gets interesting!. There’s a possibility that doSomething might get executed, while doSomethingElse might not.
If you need to prevent such scenario, a possible workaround is:
int64_t delay = (int64_t)(0.1 * NSEC_PER_SEC);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), ^{
__typeof(self) strongSelf = weakSelf;
[strongSelf doSomething];
[strongSelf doSomethingElse];
});
This snippet warrantees that: if (at the moment of the block’s execution) weakSelf is not nil, it won’t be for the rest of the snippet.
Another interesting note (for future reference) is: self is considered strong, and it may not get invalidated at the middle of a method execution. Okay?
P.s.: Thanks to this Blog Post
Network Link Conditioner
We’ve all known, for quite some time, about the existance of the NLC tool: it’s used during iOS App Testing, under bad network conditions.
However… i’ve (recently.. cough… cough…) realized that this tool can also help you cap OS X bandwith.
This is specially useful when downloading the latest Xcode, and you don’t wanna kill the entire connection, just with that.
You can find the Network Link Conditioner in Apple’s Developers Portal, inside the Hardware IO Tools for Xcode package.