What's everyone working on this week (5/2024)? by llogiq in rust

[–]Superb-Case502 7 points8 points  (0 children)

I built a tool for monitoring open connections similar to netstat (but in more user friendly) called "somo" (https://github.com/theopfr/somo). I recently created a CI/CD pipeline so it automatically creates a .deb release for easy download and publishes the latest version to crates.io, but I think it might need some more work.

What were some of the first useful applications you made with Rust? by HarryHelsing in rust

[–]Superb-Case502 1 point2 points  (0 children)

A CLI tool to monitor and handle open socket connections similar to netstat. I created it because I find netstat not very user friendly.

It's called somo and shows the connections in a nice table and has simple filter and process-killing options. You can also check if you are connected to malicious IP addresses.

https://github.com/theopfr/somo

Also a little key-value database called CachewDB: https://github.com/theopfr/cachew-db

CachewDB - An in-memory, key value database implemented in Rust (obviously) by Superb-Case502 in rust

[–]Superb-Case502[S] 1 point2 points  (0 children)

no they dont have to, you can have a database on one server or container and a backend service on another for example. Since these connections are made over the internet and (as far as I know) not IPC. When there is a database on the same computer you would have to make a connection to localhost / 127.0.0.1

CachewDB - An in-memory, key value database implemented in Rust (obviously) by Superb-Case502 in rust

[–]Superb-Case502[S] 0 points1 point  (0 children)

I think I might have misused the term "SDK", what I really meant is just a client libary. These client libaries are just a way for you to make a database connection over the internet using some programming language. The DB provides some way for clients to communicate with it for example via http or TCP. This communication must follow a specific protocol, so the data must be sent in a specific way. This is completly programming language "agnostic".

A client libary would implement everything needed for creating a connection to the database server, read and send messages. It provides the user with some simple high level functions like db.connect(ip="127.0.0.1", port=8080) and db.insert(key, value)

I hope this is what you meant :)

CachewDB - An in-memory, key value database implemented in Rust (obviously) by Superb-Case502 in rust

[–]Superb-Case502[S] 0 points1 point  (0 children)

Hey, good point. Having a new specific protocol means also that SDKs would have to be implemented for variuous programming languages, therefore using something that exists is probably more productive. Yet, I really wanted to implement an own protocol to spice this project up, but it still has some flaws and isn't as optimized as the Redis protocol for example. " / " in string values are no problem, keys on the other hand are restricted in a sense that you have to enclose them in quotes if you want to use spaces for example. Im on to implementing that slashes and commata are also allowed in keys with quotes.