RunAwayFrog

joined 2 years ago
[–] [email protected] 6 points 4 months ago

Blocking work instead of comms.
And being open about it.
How obnoxious!

[–] [email protected] 1 points 5 months ago* (last edited 5 months ago)

We already knew it was from mastoclowns, for mastoclowns.
The details and which "e-celebs" are involved is immaterial.
No one relevant (or merely sane) cared, cares, or will ever care about that scene's rage-circlejerk choice of the day.

[–] [email protected] 4 points 1 year ago

Regarding Cargo.lock, the recommendation always was to include it in version control for application/binary crates, but not library ones. But tendencies changed over time to include it even for libraries. If a rust-toolchain file is tracked by version control, and is pinned to a specific stable release, then Cargo.lock should definitely be tracked too [1][2].

It's strictly more information tracked, so there is no logical reason not to include it. There was this concern about people not being aware of --locked not being the default behaviour of cargo install, giving a false sense of security/reliability/reproducibility. But "false sense" is never a good technical argument in my book.

Anyway, your crate is an application/binary one. And if you were to not change the "*" dependency version requirement, then it is almost guaranteed that building your crate will break in the future without tracking Cargo.lock ;)

[–] [email protected] 8 points 1 year ago (3 children)
  • Don't use "*" dep version requirements.
  • Add Cargo.lock to version control.
  • Why read to string if you're going to base64-encode and use Vec<u8> later anyway?
[–] [email protected] 2 points 1 year ago* (last edited 1 year ago)

Here is an originally random list (using cargo tree --prefix=depth) with some very loose logical grouping. Wide-scoped and well-known crates removed (some remaining are probably still known by most).

mime data-encoding percent-encoding textwrap unescape unicode-width scraper
arrayvec bimap bstr enum-iterator os_str_bytes pretty_assertions paste
clap_complete console indicatif shlex
lz4_flex mpeg2ts roxmltree speedy
aes base64 hex cbc sha1 sha2 rsa
reverse_geocoder trust-dns-resolver
signal-hook signal-hook-tokio
blocking
fs2
semver
snmalloc-rs
[–] [email protected] 4 points 1 year ago (1 children)

My quick notes which are tailored to beginners:

Use Option::ok_or_else() and Result::map_err() instead of let .. else.

  • let .. else didn't always exist. And you might find that some old timers are slightly triggered by it.
  • Functional style is generally preferred, as long as it doesn't effectively become a code obfuscater, like over-using Options as iterators (yes Options are iterators).
  • Familiarize yourself with the ? operator and the Try trait

Type inference and generic params

let headers: HashMap = header_pairs
        .iter()
        .map(|line| line.split_once(":").unwrap())
        .map(|(k, v)| (k.trim().to_string(), v.trim().to_string()))
        .collect();

(Borken sanitization will probably butcher this code, good thing the problem will be gone in Lemmy 0.19)

Three tips here:

  1. You don't need to annotate the type here because it can be inferred since headers will be returned as a struct field, the type of which is already known.
  2. In this pattern, you should know that you can provide the collected type as a generic param to collect() itself. That may prove useful in other scenarios.
  3. You should know that you can collect to a Result/Option if the iterator items are Results/Options. So that .unwrap() is not an ergonomic necessity 😉

Minor point

  • Use .into() or .to_owned() for &amp;str => String conversions.
    • Again, some pre-specialization old timers may get slightly triggered by it.

make good use of the crate echo system

  • It's important to make good use of the crate echo system, and talking to people is important in doing that correctly and efficiently.
    • This post is a good start.
    • More specifically, the http crate is the compatibility layer used HTTP rust implementations. Check it out and maybe incorporate it into your experimental/educational code.

Alright, I will stop myself here.

[–] [email protected] 6 points 2 years ago* (last edited 2 years ago) (1 children)

Because the audiophile is broke, and will have to listen to some music on a lowly device, but the craving for some placebo is still there.

EDIT: btw, the bitrate is missing a k in your command 😉

[–] [email protected] 23 points 2 years ago (9 children)

Not audiophilic enough.

ffmpeg -i in.flac -ar 48000 \
            -af aresample=resampler=soxr:precision=28:cheby=1:dither_method=shibata \
            -c:a libopus -b:a 224k out.opus
[–] [email protected] 1 points 2 years ago

There is no need to talk about an imaginary version of IPFS. GNUnet already exists. You can add that to the list of actually superior technologies that long predates IPFS.

As I mentioned, IPFS is nothing but very basic tech that got overhyped to junior/uninformed developers, and crypto scam victims.

[–] [email protected] 3 points 2 years ago (2 children)

Besides being overhyped basic tech where way more useful and practical solutions existed for decades (Freenet existed since year 2000 btw, and Tahoe-LAFS since 2007), there is nothing private about IPFS. This is a dangerous message to purport.

IPFS is as practically useful as NFTs. No wonder the two crowds connected well!

iroh is an attempt to create a useful and practical IPFS. But none of the bigger practical features is implemented yet. And the design itself doesn't appear to be finalized. I'm willing to give iroh a chance, although the close proximity to the IPFS crowd doesn't fill one with confidence.

 
{"msg":"Error in store"}

Or the longer version:

< HTTP/2 500
< server: nginx
< date: Sat, 15 Jul 2023 06:45:55 GMT
< content-type: application/json
< content-encoding: gzip
< access-control-expose-headers: content-encoding, vary, content-type, date, content-length
< vary: accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers
<
* Connection #0 to host sh.itjust.works left intact
{"msg":"Error in store"}
 

Using this with Stylus:

li .comment-node {
    padding: 0.5ex;
    border: 0.1ex solid #80808060 !important;
    border-radius: 1ex;
}

li li .comment-node {
    border-left: none !important;
    border-top: none !important;
    border-radius: 1ex 1ex 1ex 0 !important;
}

Or for a more lightweight change:

.comment-node {
    border-bottom: 0.1ex solid #80808060 !important;

It's the lack of clearly visible separation between comments that just doesn't look right to me.

view more: next ›