omribahumi
It could help you replace the TUN with something more cross platform, and possibly with less overhead. You can pass in the hostname using %h, so you can even have virtual DNS.
My first "programming" experience was with mIRC scripts. I even wrote an IRC client using mIRC sockets at some point, and a dummy webserver / SMTP client. When you do things the wrong way, you pick up a lot of new skills. I learned to "reverse engineer" (my implementations were trivial, not fully fledged) protocols with a proxy/sniffer pretty early :)
From there, the first use case I had for every new language I wanted to learn was write an IRC bot. I had written one in VB6, VB.NET, Python and even C/C++ at some point.
It's funny to see this comment on HN, as this has been my mantra for a while now. On top of string manipulation and networking, another important piece it teaches you about a language is using data structures and manipulating data. IRC client is super stateful. For example, it needs to maintain the list of channels you're in, the list of users in those channels, their op/voice status, etc.
Highly recommended as a project for picking up a new language.
Thanks!
Much like yield vs await in Python3 asyncio.
In the Python 2.7 days, people used generator functions to implement async in Python. When Python3 first came out, you couldn’t do both generator and async in the same function. I assume it’s because they used the same mechanism internally.
I think it was Python 3.5 which added support for async generators.
From quick googling of what CSS Grid Layout is, seems to be like we’re back to using tables, we just offload it to the style sheet.
I guess you can fine tune how complex you want this to be by changing the number of zeros you require.
A friend suggested something else - make the client bruteforce a short RSA key (of say, 100 bits)
How about make the login process more resource intensive on the browser side, by running some intensive javascript code before sending it to the server?
The trick would be to make this much more intensive on the client side (say 1s of CPU time), while keeping this relatively easy for the server (say 1ms). We're trying to waste their resources, not ours.
One way I can think of:
1. server sends a random seed to the client
2. client calculates 1000 hashes based an random numbers generated from the seed, something like hash(rand() + password) and sends them to the server
3. server picks a one of those and validates it. In case the hash isn't valid, you'll respond with an invalid password, so the client won't be able to distinguish between a failed authentication because of hash validation or because of a wrong password.
But even the integration is impressive.
I find it very satisfying to understand a problem so well, up to the point you can find a simple and elegant solution to it. It makes the solution easier to reason about with other team members, and easier for the team to maintain it later. I see this as making your domain expertise available as a framework for the other team members.
This is my idea of sophistication in the software development world.
Could be a cool feature for the privacy concerned crowd.
https://omri.org.il/2014/08/08/hacking-asymmetric-and-symmet...
Spinning up a new process to handle each request is probably costly.
It makes sense to list the filename last IMHO.
Is what you're saying here documented anywhere?
For example, I remember using qemu to emulate RPi with ARM software emulation on my x86 machine.
I wonder what's the reach of that bug.
[0] http://wiki.squid-cache.org/Features/BumpSslServerFirst
[1] http://wiki.squid-cache.org/Features/SslPeekAndSplice
edit: reference peek-and-slice too
Thanks!