Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)MA
Posts
1
Comments
59
Joined
8 mo. ago

  • It was a Google Play feature (a hack built around modular apps that used App Bundles instead of APKs for distribution) that later got added into Android itself in Android 15. F-Droid supports it, you just have to have Android 15 or 16.

    Edit:

  • Apparently not according to the other comments here, but I absolutely love Material You now that a lot of apps support it. Not having every app have its own color scheme just feels comfortable and IMHO makes a lot of sense together with the system-wide dark mode.

    Also, the app drawer always has unthemed icons, the themed ones are only for the home screen where I like to keep the few apps that I use often, so not having a colorful mess for a home screen is a bigger plus for me than losing the ability to recognize them at a glance, because I know exactly where on the home screen they are anyway.

  • it's incorrect bc it destroys multibyte characters

    It doesn't. As the poster two levels up said, all bytes that don't represent an ASCII character have the high bit set, even the follow-up bytes in multibyte sequences. So the condition b >= 32 will match and preserve them.

  • Maybe htop? It's pretty configurable and has decent bars for various resources.

    Also if your reason for choosing pure TUI is just resource usage (and not the aesthetics of it / cool feeling / whatever else), then you could maybe look into running something like Sway or Xorg+i3 - those are very lightweight, well suited for single window usage, and open up a lot of possibilities for lightweight GUI apps.

  • The "correct" way to handle "static" addresses with dynamic prefix is using tokenized network interfaces (which is pretty much just the lower 64 bits of the IPv6 address). That will then be used for SLAAC in addition to the randomly generated address. The support for dynamic prefixes in firewalls on Linux and Mikrotik is however still pretty dire (obviously, as it's not an enterprise feature). No clue about BSDs/pfSense

  • The question asks for "the best" way to do it (making it opinion based) and forbids a potential solution without explaining why (it's clearly some kind of assignment, but that doesn't matter here). And it has plenty of answers both using Boost and in pure C++, so I'm not sure why that wasn't enough for you. Just because it's closed doesn't mean the answers already provided are bad.

  • That's weird, it works for me on Android 15 and I could swear it was always the case for me.

    A simple way to disable the sound is to press a volume button, tap the small button at the top and pick silent or vibrate there. Does that really not work for you? Btw the screenshot sound is linked to ring volume, not notifications.

  • But ChatGPT doesn't have a way of "knowing" that there is no such Flatpak - it's unlikely that its training data includes someone explicitly saying that. But it's fair to "assume" that a Linux file manager is available as a Flatpak.

    (...), so it's definitely making up stuff.

    Yes, it's an LLM

  • Honestly, this is not really technobabble. If you imagine a user with a poor grasp of namespaces following a few different poorly written guides, then this question seems plausible and makes sense.

    The situation would be something like this: the user wants to look at the container's "root" filesystem (maybe they even want to change files in the container by mounting the image and navigating there with a file manager, not realizing that this won't work). So they follow a guide to mount a container image into the current namespace, and successfully mount the image.

    For the file explorer, they use pcmanfm, and for some reason decided to install it through Flatpak - maybe they use an immutable distro (containers on Steam Deck?). They gave it full filesystem access (with user privileges, of course), because that makes sense for a file explorer. But they started it before mounting the container image, so it won't see new mounts created after it was started.

    So now they have the container image mounted, have successfully navigated to the directory into which they mounted it, and pcmanfm shows an empty folder. Add a slight confusion about the purpose of xdg-open (it does sound like something that opens files, right?), and you get the question you made up.

  • Google Pixel @lemmy.world

    Extended Repair Program for Pixel 7a - Pixel Phone Help

  • Maybe a good option for projects that you don't want anyone else to contribute to, but then why make them open source in the first place?

    Because, at least to some people, open source is more about user freedom (to modify the software and share the modifications with anyone they wish) and less about collaboration.

    For example every time I publish some simple utility that I wrote for myself and decided could be useful for other people, I release it under a reasonable open source license and pretty much forget about it - I'm not going to be accepting merge requests, I don't have time to maintain random tiny projects. If I ever need to use the utility for something it doesn't quite do, I'll check if any of the forks seem to have implemented it. If not, I'll just implement it in my repo.

    The reason I'm publishing the code is because I know how much it sucks when you find some proprietary freeware utility that almost does what you need, but you can't fix it for your usecase on account of it being proprietary for no reason (well, author's choice is the reason, and I respect it, but it's still annoying)

  • Virtual memory isn't swap, it is a mechanism that allows the operating system to give processes a view of memory that is almost completely decoupled from real physical memory and other processes. For example some programs require their code and data to be placed at exact memory locations in order to work - virtual memory allows you to run as many of these programs as you wish, because one process's address 0x1000 has nothing to do with another one's 0x1000, unless they set it up as shared memory (but even the same chunk of shared memory might be mapped to different addresses in the processes that share it).

    Swapping is a cool trick that you can do with virtual memory, though. Basically you store a piece of memory somewhere outside the physical memory, and then make the address invalid in virtual memory. When the process tries to access it, it will crash. The OS will be notified of the crash, see that it was due to the process trying to access swapped out memory, load the chunk back from disk (maybe to a different physical location), update the virtual memory to correctly point to this chunk, and restart the crashed process from the instruction that caused the crash. So from the point of view of the process, nothing went wrong at all, except that one instruction took a very long time to execute.

    Also, isn't it harmful to SSDs?

    Swapping doesn't do enough writes to matter, unless your system is running really low on RAM.

  • All right, I had some spare time today, so I went and installed this thing.

    My setup is a bit more complex than the minimum necessary, but that's because I'm using an already existing Postgres database instead of installing a new one on my computer. It is as follows: Postgres running on a mini PC on my local network (192.168.2.199:5432), a browser running on my main computer, and a Debian VM for DBgate with two NICs - one is the default NAT interface (I'm too lazy to configure proper bridging / routing) and the second is a virtual bridge, testbr. On testbr, the host OS is 192.168.123.1/24, and the guest is 192.168.123.2/24.

    I installed DBgate on the VM using NPM - npm install -g dbgate-serve, as specified in the documentation. Then I ran it using simply dbgate-serve, then connected to it from a browser running on my host OS as http://192.168.123.2:3000/. That works fine.

    Then I added my Postgres DB through the web interface (to be verbose, I entered 192.168.2.199 as the IP address), created a table and inserted some dummy data. Then I wanted to do the next step, which is to block outgoing connections to port 5432 from the VM, but I noticed something very strange, given that DBgate obviously doesn't use the server as a backend to do the actual DB connection: this was in the server log

     
        
    {"pid":7012,"caller":"databaseConnections","conid":"24d95082-ca6a-4dac-aa28-f3121bfc508d","database":"dbgate","sql":"INSERT INTO \"public\".\"dbgate_test\" (\"text\") VALUES ('haha');\nINSERT INTO \"public\".\"dbgate_test\" (\"text\") VALUES ('hehe');\n","level":30,"msg":"Processing script","time":1744395411096}
    
      

    But it would be ridiculous to even suggest that the connection is relayed through the server, so it is probably some kind of telemetry. Makes sense.

    Anyway, I went ahead and added the rules on the VM nft add table ip filter, nft 'add chain ip filter output { type filter hook output priority 0; tcp dport 5432 drop; }', and you wouldn't believe what happened next... The DBgate tab can no longer load data from the database. I can reload DBgate itself without any issues, and I can connect to the database from the same computer using psql and DataGrip just fine, but for some reason it seems to be affected by the fact that its server (which is only serving the HTML/JS files and doing nothing else, as you said) cannot connect to Postgres.

    Weird how that works, huh?

  • Node.js is a web server. It doesn't run in a browser, therefore doesn't deal with the browser sandbox. That should answer your first dig.

    For the second part, WebRTC is a standard that allows two WebRTC peers to communicate. You can't use WebRTC to open an arbitrary TCP or UDP stream to for example a database, unless said database decides to implement a WebRTC peer support.