• 4 Posts
  • 42 Comments
Joined 1 year ago
cake
Cake day: July 5th, 2023

help-circle
  • That advertisement would be interpreted as Node C’s advertisement.

    The plan is to treat public keys as node’s identity and trust mechanism similar to OpenPGP (e.g. include any node key signed by a master key as a cluster member)

    Right now, none of the encryption part is done and it is not a priority right now. I need to first implement transitive node detection, actually forward packets between nodes, some way to store and manage routes, and then trust and encryption mechanisms before I’d dare to test this stuff on a real network.




  • I didn’t know the answer either, but usually you can compose solution from solutions of smaller problems.

    solution(0): There are no disks. Nothing to do. solution(n): Let’s see if I can use solution(n-1) here. I’ll use solution(n-1) to move all but last disk A->B, just need to rename the pins. Then move the largest disk A->C. Then use solution(n-1) to move disks B->C by renaming the pins. There we go, we have a stack based solution running in exponential time.

    It’s one of the easiest problem in algorithm design, but running the solution by hand would give you a PTSD.





  • I was thinking along the lines of

    Plenty of libraries can build the XML using structs/classes. e.g. with serde:

    //Data type for row
    #[derive(serde::Serialize)]
    pub struct Foo {
    	pub status: String,
    	pub name: String,
    }
    
    //Example row
    let ent = Foo {
        status: "paid".into(),
        name: "bob".into(),
    }
    
    //Example execution
    sqlx::query(&serde_xml_rs::to_string(&InsertStmt{
    	table: "foo".into(),
    	value: &ent,
    })?).execute(&conn)?;
    

    Or with jackson-dataformat-xml:

    //Data type for row
    public class Foo {
        public string status;
        public string name;
    }
    
    //Example row
    Foo ent = new Foo();
    foo.status = "paid";
    foo.value = "bob";
    
    //Example execution
    XmlMapper xmlMapper = new XmlMapper();
    String xml = xmlMapper.writeValueAsString(new InsertStmt("foo", ent));
    try (Statement stmt = conn.createStatement()) {
        stmt.executeUpdate(xml)
    }
    

    I don’t do JS (yet) but maybe JSX could also do similar things with XML queries.

    No more matching $1, $2, … (or ? for mysql) with individual columns, I could dump entire structs/objects into a query and it would work.


  • Better than parameterized queries. Yes, we have stuff like query("INSERT INTO table(status, name) VALUES ($1, $2);").bind(ent.status).bind(ent.name).execute..., but that’s kind of awful isn’t it? With XML queries, we could use any of the XML libraries we have to create and manipulate XML queries without risking ‘XML injection’. e.g we could convert ordinary structs/classes into column values automatically without having to use any ORM.





  • Thank you… I had to learn kubernetes for work and it was around 2 weeks of time investment and then I figured out I could use it to fix my docker-compose pains at home.

    If you run a lot of services, I can attest that kubernetes is definitely not overkill, it is a good tool for managing complexity. I have 8 services on a single-node kubernetes and I like how I can manage configuration for each service independent of each other and also the underlying infrastructure.




  • If one service needs to connect to another service then I have to add a shared network between them. In that case, the services essentially shared a common namespace regarding DNS. DNS resolution would routinely leak from one service to another and cause outages, e.g if I connect Gitlab container and Redmine container with OpenLDAP container then sometimes Redmine’s nginx container would access Gitlab container instead of Redmine container and Gitlab container would access Redmine’s DB instead of its own DB.

    I maintained some workarounds, like starting Gitlab after starting Redmine would work fine but starting them other way round would have this issue. But switching to Kubernetes and replacing the cross-service connections with network policies solved the issue for me.



  • akash_rawal@lemmy.worldtoSelfhosted@lemmy.worldShould I move to Docker?
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    2
    ·
    7 months ago

    As someone who is operating kubernetes for 2 years in my home server, using containers is much more maintainable compared to installing everything directly on the server.

    I tried using docker-compose first to manage my services. It works well for 2-3 services, but as the number of services grew they started to interfere with each other, at that point I switched to kubernetes.




  • You have rust.

    You get a horse and arrive at the castle within seconds but the horse is too old and doesn’t work with the castle.

    You remove the horse, destructure the castle and rescue the princess within seconds, but now you have no horse.

    While you’re finding a compatible horse and thinking whether you should write your own horse, Bowser recaptures the princess and moves her to another castle.