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

help-circle







  • 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.




  • 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.