Aode (He/They)

doing some rust dev

  • 6 Posts
  • 38 Comments
Joined 2Y ago
cake
Cake day: Jun 29, 2020

help-circle
rss

I’ve just published the stable version of pict-rs 0.3, and included a short write-up in the release description. Not much has changed since I posted about the betas, but check out the release anyway! …


what I noticed personally is that my pict-rs server had eaten 1,200MB of RAM, which is the limit I allowed that container. it was still working and it automatically restarted on crash so I didn’t notice it oops

after I fixed the problem, my pict-rs server has been running at about 29MB for the last 12 hours. Significant improvement I’d say



Problem:

I gave tokio-console a buffer way too big

Fix:

Update pict-rs to at least v0.3.0-rc.7, which doesn’t enable console by default


how long does it take for pict-rs to use up this memory?


Hey all! Just wanted to share a little fun side project I’ve been working on recently. It’s an ecosystem similar to smol for writing async rust code, but the internals make no use of unsafe at all …



If you don’t know what OpenTelemetry is but you’re having OpenTelemetry errors in your logs, it likely means that you have an opentelemetry_url set in your config when you shouldn’t. You can get rid of the error by deleting that line, which will disable opentelemetry exports


Lemmy and pict-rs support optionally exporting opentelemetry spans, and setting up Jaeger to capture those is a nice way to manage traces without shipping data to third parties


Plugin is likely lewis6991/gitsigns.nvim



i might try

let res = collection.into_iter().map(|item| item.fallible_operation()).fold(Ok(Vec::new()), |acc, res| {
    match (acc, res) {
        (Ok(mut vec), Ok(item)) => {
            vec.push(item);
            Ok(vec)
        }
        (Err(mut vec), Err(error)) => {
            vec.push(error);
            Err(vec)
        }
        (Ok(_), Err(error)) => Err(vec![error]),
        (acc, _) => acc,
    }
});

Maybe expand it with

pub trait Evert<T, E> {
    fn evert(self) -> Result<Vec<T>, Vec<E>>;
}

impl<I, T, E> Evert<T, E> for I
where
    I: IntoIterator<Item = Result<T, E>>,
{
    fn evert(self) -> Result<Vec<T>, Vec<E>> {
        self.into_iter().fold(/* implementation from above */)
    }
}

fn main() {
    let result = vec![Ok(1), Err(3), Ok(4), Err(8)].evert();
    assert_eq!(result, Err(vec![3, 8]));
}


With these examples I think the correlation is a little loose. Dr Lutchmedial died two weeks after his third shot. Claiming the vaccine was a direct cause when the only available evidence is a two week timespan is weak.

The other example provided doesn’t demonstrate harm caused by a vaccine. It sucks that a deadly virus is deadly, and it sucks that the vaccine didn’t help in this case. It’s not a good argument against getting a vaccine.


I’m a sponsor on github for spacejam (github user) and elementary OS, and I’m a patron of Hector Martin on patreon.


First, it doesn’t take an array as input, it takes a slice as input. You can turn a Vec<&str> into a slice &[&str] by borrowing it.

Second, the human-sort crate’s api is bad, because rarely to people have Vec<&str> or &[str] and there’s no way to produce a Vec<&str> from a Vec<String> without creating a new vector that borrows from the first.

let mut strs = Vec::new();

for s in strings.iter() {
    strs.push(s);
}

human_sort::sort(&mut strs);

What human-sort should have done was accept &[T] where T: Deref<Target = str> which would allow passing a Vec of String or a Vec of &str.

Feel free to open a PR against human-sort, but it looks like it hasn’t been updated in a couple years so it might not be maintained anymore


Pawoo is a mastodon server run by the same company that owns pixiv. They’re using the default mastodon description but have also deliberately added tracking because they’re a company that doesn’t care about privacy.

I dont really know what point this post is trying to make. There are other mastodon servers you can join that wont track your activity.


specifically my pict-rs development looks like:

$ sudo docker run --rm -it -p 8080:8080 -v "$(pwd):/mnt" archlinux:latest /bin/sh
# pacman -Syu --noconfirm imagemagick perl-image-exiftool ffmpeg
# PATH=$PATH:/usr/bin/vendor_perl ./mnt/target/debug/pict-rs -p /mnt/data

:D I kinda do this when working on pict-rs. I have a container with the proper runtime dependencies, and then I cargo build on my host

I definitely recommend it over re-building a container for each change


It also has .flush() and .flush_async() to flush inline with your application if you need that


Sled is my go-to key value store in Rust. It flushes to disk every 500ms by default iirc


I love writing rust and I’ve done all my personal projects for the last 4 or 5 years in it, but I dont think it’s a good idea for other existing languages to adopt more of Rust’s features.

Languages like Elixir or Lisp are so different it doesn’t make any sense to adopt Rust semantics or syntax, and anything with a garbage collector, Go included, doesn’t need to care about ownership, borrowing, or lifetimes (besides the usual passing references being cheaper than passing whole objects).

Languages like C or C++ can definitely be replaced in many cases with Rust, but I dont think making them more like rust is a wise decision. Adopting something like a borrow checker in c or c++ completely changes the language in a way thats not only backwards incompatible, but also probably not welcome by developers already working in those languages.

All this to say: I’d prefer more people to work in rust than to alter other languages to be more like rust, but I also think there are a number of other languages worth learning and working in. To a large extent, choosing a language is about taste.


pict-rs 0.3 betas rolling out

Hey all! I’m the developer of pict-rs, the image host API used by lemmy. I’m here to officially announce the availability of the pict-rs 0.3 beta releases. As I type this, v0.3.0-beta.3 is currently building and should be published to dockerhub shortly. Here’s what’s new …


I just upgraded a bunch of stuff to actix-web 4.0.0-beta.3

And it went really well. So far the only changes I noticed were the web::block error api (due the the use of tokio’s spawn_blocking now instead of actix-threadpool), the move of Service’s Request from being an associated type to a generic, the move to insert_header and append_header, and the i…


Oops! I lost my postgres

I’m writing this to hopefully get the attention of @dessalines@lemmy.ml or @nutomic@lemmy.ml to let them know that I lost my database today, which means my gitea (where pict-rs is hosted) is down until I get a new database in place and u…


Anyone use Sway on a pinebook pro?

I’ve had mixed results trying to use Sway on my pinebook pro. Before I reflashed manjaro recently, Sway seemed to run alright, but now I get a perpetual black screen when trying to log into Sway. If I launch it from within my MATE environment it works fine…