Show more
m0xEE boosted
m0xEE boosted

It's Wednesday, my dudes! 🐸

According to some sources today also happens to be Capybara Appreciation Day — according to others it's in October.

Stay tuned for interesting developments…

m0xEE boosted
m0xEE boosted

FBI, cyber-cops zap 968 AI-fueled Russian Twitter bots

'Farming is a beloved pastime for millions of Russians' says RT News after it's accused of social nyet-work The FBI and cybersecurity agencies in Canada and the Netherlands have taken down an almost 1,000-strong Twitter bot farm allegedly set up by Russian state-run RT News that used generative AI to spread disinformation to Americans and o…
#theregister #IT
go.theregister.com/feed/www.th

m0xEE boosted
m0xEE boosted

just making sure you're working and not looking at cat videos. carry on.

#Caturday

In Go this wouldn't have been a problem as HTTP client in the standard library honors the environment variables for proxies, but in Rust standard library is very limited — there are plenty of widely used and good crates to make up for it. ureq, which is used in this project, doesn't do it, to me it looks a very similar to Python's great requests module, in which you have to construct the session object (Agent in ureq) and to configure it to use proxies and which is then used to execute requests.

Show thread

Now I have to figure out how to make ureq in this RSS reader use the proxy set with environmental variables. It looks trivial to accomplish: a matter of implementing the Default trait, which is now derived, for the structure (which would be an object in classic object oriented language) that is used as HTTP client.

Show thread

Some problems arise from software relying on atomics (thread-safe types) from the standard library, which aren't portable — luckily, there is portable-atomic crate: github.com/taiki-e/portable-at
Replacing atomics from standard library with the ones from portable-atomic IS straightforward, but in my case it was a dependency of a dependency using it, so building the RSS reader involved adding a [patch.crates-io] section to Cargo.toml to use a local patched version of crate.

Show thread

In case some of the crates use C code and build something themselves, like ring crate does, you have to point cargo to the right tools using the environment variables, but in a lot of cases it figures everything out on its own.
Also rust crate version 0.16 didn't support 32-bit PowerPC properly so to port TUI RSS reader here github.com/veeso/tuifeed I had to update a few dependencies to use newer ring 0.17

Show thread

It appears that cross-compiling with Rust is rather straightforward: just install the target you're… hmm, targeting with "rutsup target add <target>", and use "cargo build --target <target> --release" — not much harder than it is with Go.
Considering that your target is available via rustup — mine, PowerPC MUSL system wasn't and I had to build natively, I'll figure out how to add my own targets later. But building for my old ARM machine went without a hitch — and, surprisingly, the binary works😂

I have sussexfully updated rust (and cargo) to 1.79 on my PowerPC MUSL machine running Void.
xbps-src makes cross-building software so easy, in absolute most cases you only have to specify the target architecture and here we go — although it fails to produce a working dynamically-linked Python for PowerPC, but it looks like a bug in libffi. In any case you only have to worry about platform-specific workarounds, most of other stuff is done for you — and it just works!

m0xEE boosted

@nina_kali_nina @kirtai Wow, MicroWeb makes DOS look like quite the limited OS! Yet they got something working, despite needing to implement the whole networking stack themselves!

@ajroach42 you might be interested? github.com/jhhoward/MicroWeb

Why the fuck does crates.io require JS and refuses to show any content at all without it?
Requiring a full browser with JS support just to view info on modules is even worse than Go giving you URLs in help messages — it was bad enough, but this… is simply unacceptable! 😩

m0xEE boosted
m0xEE boosted
m0xEE boosted
@Cocoa @p Alright, tested the process out on a VM with rebased that has like one user and three posts. I'm gonna assume you followed instructions on https://soapbox.pub/install/ during initial installation (which for whatever reason make you use some third-party package manager for Erlang/Elixir, which I think should work with base Pleroma). If not, you should already know whether something should be adjusted.
1. Stop pleromer (`systemctl stop pleroma` or whatever other init system you use)
2. Log in as pleroma user (`sudo -Hu pleroma bash`) and enter /opt/pleroma
3. Rollback vegan-specific migrations by executing following commands in that order:
MIX_ENV=prod mix pleroma.database rollback 20221207235104
MIX_ENV=prod mix pleroma.database rollback 20221029171353
MIX_ENV=prod mix pleroma.database rollback 20220927220033
MIX_ENV=prod mix pleroma.database rollback 20220819171321
MIX_ENV=prod mix pleroma.database rollback 20220624104914
MIX_ENV=prod mix pleroma.database rollback 20220225164000
MIX_ENV=prod mix pleroma.database rollback 20210612185407
4. Exit pleroma user (`exit`) and drop the column that can't be rolled back with mix: `sudo -Hu postgres psql pleroma -c "alter table users drop column location;"`
5. Go back to /opt, rename /opt/pleroma into something else (e.g. `mv /opt/pleroma /opt/glussy`), then clone upstream repo (`git clone https://git.pleroma.social/pleroma/pleroma`)
6. Copy config/prod.secret.exs from old directory to new.
7. Log back in as pleroma user, go to /opt/pleroma and run the following to compile the new version and migrate the DB
mix local.hex --force
mix local.rebar --force
mix deps.get
MIX_ENV=prod mix compile
MIX_ENV=prod mix ecto.migrate
8. After all that's done, log out and restart pleromer (`systemctl start pleroma`). If there are no invalid config entries, it should work out of box. If not, stop pleromer and try running it manually (`sudo -Hu pleroma MIX_ENV=prod mix phx.server`) then tell me what the error is. Worst case scenario, you'd have to remove DB configs (`TRUNCATE TABLE config`) and reconfigure it manually.
m0xEE boosted
Show more
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml