Recent comments in /f/programming

musou OP wrote

Reply to comment by flabberghaster in ORMs are weird sometimes by musou

yeah most of the ones i have used do have the ability to execute raw SQL queries, which is how i solved the problem i had the other day. but you lose a lot of the benefit of using the ORM in the first place, you usually have to handle query pagination, input sanitization, and casting the response (which usually comes back as a 2D list of primitives) to the appropriate data structures yourself.

and just as bad, the code now has inconsistency in it. i never feel good about doing the same thing two different and incompatible ways.

2

flabberghaster wrote

I'm kind of surprised they're that hard to work with. I've never used one, just hasn't come up in any of the projects i've been on; But i'd expect them to have some escape hatch. Something where you'd be able to just give it an SQL query you want to run, as a prepared statement or something, tell it some variables to put in, maybe tell it what types it would return, depending on the language, and just have it run it.

Do they not? Or is it just impractical to use somehow?

2

lainproliant wrote

I actually run into these types of circular reference loops often in JS, especially when I want to serialize arbitrary objects to JSON. Some other formats such as YAML provide reference semantics and are thusly able to deal with circular references, but JSON does not.

2

lainproliant wrote

What you're actually doing in Python when you put a list into itself is to put a reference to the list into itself.

L = []
L.append(L)
L[0] is L # True

Python and Ruby arrays are heterogenous, unlike in C++, where strong typing forces us to define a common type for objects contained in the same collection. There's no way to do this with the STL <vector>, but you could do this with an object system, for example Qt, where all "Q" objects derive from QObject:

QVector<QObject*> objectVector;
objectVector.append(&objectVector);
2

lainproliant wrote

Does the author offer any sort of arXiv or other link to a research paper about this? So far, it's just them saying "hey I found this thing!" and gives a very basic and non-rigorous explanation of the "innovative" solution. Snake oil until proven otherwise.

3

flabberghaster wrote

I think that it's basically a special case of how in those languages it's easy to assign a reference to things. Adding a list to itself is not really that different than assigning a reference to an object as a member of itself. For instance in python you can do:

class Node:
    __init__(self, value, next=None):
        self.value = value
        self.next = next

def main():
    head = Node("last")
    tail = head
    for i in range(10): head = Node(i, head)
    tail.next = head

And this creates a cyclic linked list. You could just as easily assign a = Node(9); a.next = a and have the graph have only one vertex. It's the same principle with adding a list to itself: you're not actually adding the list to itself; rather you're putting a reference to the container, inside the container. Like writing down the location of a bank on a slip of paper, then putting that slip of paper inside a safe deposit box stored inside the same bank.

3

musou OP wrote

it's cool to know that python can do it too. i guess i should make a list of which languages can and can't do it.

it's super fun to think about, but i still can't come up with any way in which i could exploit it to do something fun or useful in order to make straightlaced programmers care about it

3

flabberghaster wrote

Turns out python can too. I was trying to think of how to get c++ to do it, but i could only think if how to do it using void pointers since to add something to a container that container would have to be a container of its own type which I can't think how to do off the top of my head.

Interesting problem.

3

lainproliant wrote

https://github.com/lainproliant/lost-levels

Run submodules.sh to pull down the submodules, then make to build. Requires sdl2 and sdl2-image.

There's two demos: quadtree that shows the breakdown of a quadtree that would be used for collision detection, and simple that I use as a benchmarking tool to see how many sprites I can get on the screen before framerate starts to suffer.

2

eep wrote

aaa it’s been ages but I’ll try! it was half fun and half frustrating mostly cause none of us had programming backgrounds. we had an instructor who taught programming, but he did not have a design background so it’s a bunch of misunderstandings lol

the basic idea was to ‘grow’ a city using cellular automata but also avoiding specific areas like historical buildings, places of culture (this didn’t work because our general lack of skills, which resulted to rigidity) there’s also the lack of connectivity (since cells in cellular automata ‘die’ and don’t physically connect while they are alive) so there was the introduction of other systems like lindenmeyer system to permit branching

the result was somewhat similar to the cards bouncing around and intertwining when you finish a game in solitaire

3