What is it you’re struggling to understand? Like is there a concept or command or something that just isn’t clicking?
Formerly /u/neoKushan on reddit
What is it you’re struggling to understand? Like is there a concept or command or something that just isn’t clicking?
I know it’s not helpful or what you’re asking for but honestly, just learn docker and all of these kinds of problems just go away.
Once you learn to spin up one docker container, you can spin up nearly any of them (there’s a couple of extra steps if you need GPU acceleration, things like that).
You’ll be kicking yourself that you didn’t hadn’t the jump earlier. Sounds like you’re already using Linux too, so it’s really not that big a leap.
Am I correct in saying that you’re used to languages that aren’t type safe? Or at least not as strict about it.
Everything you’re describing sounds more like you’re struggling with type safety in general and I wouldn’t say any of those packages are at fault, in fact I’d even go further and say they’re like that by design.
The reason you don’t actually want any of those separate packages to be more interoperable out of the box is because that would couple them together. That would mean dependencies on those packages, it would mean if it wanted to use something else then you’d be a bit stuck.
Like I’d question using a uuid as a salt, like it’s fine and I get why they’re suggesting it, but you can use anything as a salt so why couple yourself to a specific uuid library? Why couple yourself to uuids at all.
Side note: I’m guessing the reason the crate expects you to supply your own salt is because you need to also store the salt next to the password hash, if it generated the salt for you there’s a chance you might ignore the salt and suddenly not be able to validate passwords.
Anyway…
The only way you could make these separate packages work dramatically together and without coupling them would be to use a universal type - probably a byte array - and at that point you lose most of the benefits of a strong type system. What are currently compile errors become runtime errors, which are much worse and harder to diagnose.
My suggestion to you would be to reframe your thinking a little, think less about how you can make different crates speak to each other and more about how you convert from one type to another - once you crack that, all of these integration problems will go away.
Rust is completely correct to be a dick about it as well. Type safety is there for a reason.
Yup I also use ntfy and it’s brilliant, easy to send notification events to it from almost anything and the android app is very responsive.
Another vote for restic, best backup software I’ve ever used.
There’s the nanokvm, similar idea but cheaper. I have one and it’s okay but a bit sore, I’m hoping the jet is faster
The point is that Firefox market share isn’t indicative of anything useful.
A better comparison would be something like revenue - if Mozilla makes more money, the CEO can earn more.
Mozilla does a lot more than just Firefox and I’m fact increasing revenue from other sources should have been a priority anyway
I fully expect Nintendo to flip the switch 2 into switch 1 mode for that backwards compatibility, then charge extra for switch 2 enhanced titles.
It’s just the low effort anti-user kind of bullshit I expect from them now.
In addendum, they also operate a browser extension that puts the same pricing info directly into steam itself, as well as other enhancements:
Well worth having installed, that way you can browse steam (via your browser) as normal and know if a good deal is actually good.
I wish people would just stop assuming that we know what every single piece of software is.
This is a privacy oriented and deblobbed web browser based on Mozilla technology. It enables many features upstreamed by the Tor uplift project using preferences from the arkenfox-user.js project. It is compiled from source and proprietary blobs are removed using scripts by Relan from here.
I find jiras search to be decent enough, you might get better results using a filter on sprint name with your current sprint in it.
Honestly 95% of Jira complaints are because people have crap workflows configured. Out of the box Jira is pretty terrible but it’s very customisable and you need to adjust it to suit your needs - and they have to be your needs and workflows.
That being said, there’s that last 5% that Jira just gets in the way. If anyone has ever had multiple teams working on a single product, Jira is very prescribed about how you’re supposed to structure that and If you don’t, it’s a pain.
James Earl Jones
:(
Stagnation is Mozilla’s MO. Fuck, go look at Thunderbird and be transported back to the 90’s.
Even Microsoft is updating outlook - fucking outlook is innovating, Outlook being the cancer on email that’s held it back for decades, is being updated.
This is the way to do it - actual valid certs, with actual working TLS.
OP’s issue is they don’t understand how SSL works and fighting Firefox, which is actually trying to protect them and steer they e in the right direction.
Wait, What’s this about corned beef? I am Irish (as in actually from Ireland) and I have no idea what that has to do with St Patrick’s day?
C# is also here
If the game is good I’ll buy it, if it’s shit I won’t. I don’t see how these NPC’s will make the game good and I haven’t personally bought an Ubisoft game in several years.
Okay, so I think I can help with this a little.
The “secret sauce” of Docker / containers is that they’re very good at essentially lying to the contents of the container and making it think it has a whole machine to itself. By that I mean the processes running in a container will write to say
/config
and be quite content to write to that directory but docker is secretly redirecting that write to somewhere else. Where that “somewhere else” is, is known as a “volume” in docker terminology and you can tell it exactly where you want that volume to be. When you see a command with-v
in it, that’s a volume map - so if you see something like-v /mnt/some/directory:/config
in there - that’s telling docker "when this container tries to write to/config
, redirect it to/mnt/some/directory
instead.That way you can have 10 containers all thinking they’re each writing to their own special
/config
folder but actually they can all be writing to somewhere unique that you specify. That’s how you get the container to read and write to files in specific locations you care about, that you can backup and access. That’s how you get persistence.There’s other ways of specifying “volumes”, like named volumes and such but don’t worry too much about those, the good ol’ host path mapping is all you need in 99% of cases.
If you don’t specify a volume, docker will create one for you so the data can be written somewhere but do not rely on this - that’s how you lose data, because you’ll invariably run some docker clean command to recover space and delete an unused unnamed volume that had some important data in it.
It’s exactly the same way docker does networking, around port mapping - you can map any port on your host to the port the container cares about. So a container can be listening on port 80 but actually it’s being silently redirected by the docker engine to port 8123 on your host using the
-p 8123:80
argument.Now, as for updates - once you’ve got your volumes mapped (and the number and location of them will depend on the container itself - but they’re usually very well documented), the application running in the container will be writing whatever persistence data it needs to those folders. To update the application, you just need to pull a newer version of the docker container, then stop the old one and start it again - it’ll start up using the “new” container. How well updates work really depends on the application itself at this point, it’s not really something docker has any control over but the same would be if you were running via LXC or apt-get or whatever - the application will start up, read the files and hopefully handle whatever migrations and updates it needs to do.
It’s worth knowing that with docker containers, they usually have labels and tags that let you specify a specific version if you don’t want it updating. The default is an implied
:latest
tag but for something like postgress which has a slightly more involved update process you will want to use a specific tag likepostgres:14.3
or whatever.Hope that helps!