That was pretty hard! It took me a bit over 2 hours. It took me a long time to get started, it felt impossible.
But I found a lot of satisfying "ah ah!" moments that kept me going.
Really well done, but now I don't ever want to do one of these again.
I made a very simple chrome extension that automatically redirects you to your preferred music service when visiting another service. In my case I have it set to YouTube Music, so if I click a Spotify (or other) link in Slack, I'll be redirected to YouTube Music.
More likely millions per hour. But even then it's not like all those sales will be lost. Most people will probably just come back later to make their purchase.
Having played both, my opinion is that they are very different games. Satisfactory is much simpler in its mechanics.
Factorio is built on a custom engine and heavily optimized. I doubt you can build a factorio-style mega base in satisfactory and keep things performant.
Factorio has procedural map generation, enemies that build bases and attack you, blueprints, construction and logistics robots, logic circuits, incredible mod support, and you can play with dozens of people in multiplayer and things stay performant and enjoyable.
In the the two games chose a very different development cycle. Factorio released early and often and listened to their community by adding and changing what players were asking for. Satisfactory first released a game that was pretty close to finished, and released, so far, very few updates.
I will say that I enjoy both games, but for different reasons.
Actually, I'm pretty sure those are generated by a neural net. There are clear artifacts on the images that give it away. Maybe the author experimented with different source material before going for abstract paintings.
That's one definition. Another valid definition of a framework would be something that is a fundamental part of your project, or something you build upon, whereas a library would be something that you use to enhance a particular part of a project.
Bootstrap would seem to fit that definition in most cases.
I have had a similar experience when first using a 144hz display. I was amazed how responsive the mouse was. How "in control" I felt.
Then, going back to a 60hz display, I couldn't NOT see the gaps left by the cursor's movement. I had never before seen this as a problem, but seeing something better ruined 60hz for me.
I'm French Canadian and I usually avoid the space before those characters because they have a tendency to wrap on a new line by themselves.
You are supposed to use non breaking spaces but most tools won't do it automatically, and they are not trivial to type.
Since the refresh-token is single-use, the user will be logged out when trying to refresh their own token, and will presumably then login again, which should invalidate the attacker's refresh token.
But I agree it's not a perfect system. This is meant to specifically address the problems of long-lived tokens, since JWTs are hard to revoke without checking a blacklist on the server-side.
The main problem is that localStorage is more vulnerable to some classes of attacks than secure, http-only cookies.
In our app the JWTs have a 5m lifetime. When a JWT is generated we also generate a single-use refresh token.
When a client tries to use an expired JWT the request fails, and the client will then exchange the refresh token for a new JWT/refresh token pair, and finally retry the request with the new token.
The refresh operation can reject the request if the user has been deactivated (it's basically a new login request, using the expired JWT as the username and the single-use token as the password).
Windows Server (Standard and Datacenter editions) licenses include permissions to run unlimited windows containers on top of them. So you would only need to pay for the licenses of your hosts.
A passphrase can easily exceed 20 characters and be memorable. They are usually considered a good security practice for people not familiar with (or not willing to use) password managers.
Really well done, but now I don't ever want to do one of these again.