radarsat1

joined 4 years ago
[–] radarsat1@lemmy.ml 3 points 1 year ago* (last edited 1 year ago) (1 children)

I was using Jerboa because i was used to Sync for reddit. But, I got a bit tired of how rough around the edges it is, so I switched to just installing my Lemmy instance front page as Firefox "app" on my phone and realized it's not that bad as a UI, so sticking with it for now.

I'll probably try apps again in the future but I feel more open to "installing" good web apps now. Incidentally I tried the same trick with Reddit's mobile interface after Sync stopped working and realized it's also not so awful as I remembered. I did prefer Sync but I'll see how it goes with this method. So it's mobile web interfaces on Android for me for now.

Having said that, in both cases I think I'd prefer a more "simple HTML" type experience like old reddit over these dynamic SPA things they both have going.

 

Let's say I have a context manager that provides a resource that then mutates on exit:

from contextlib import contextmanager

@contextmanager
def context():
    x = ['hi']
    yield x
    x[0] = 'there'

I found that if I want to make another context class that uses this, such that the context (before mutation) is valid, I have to pass it in:

class Example1:
    def __init__(self, obj):
        self.obj = obj
    def use_obj(self):
        print(self.obj)
    def __enter__(self):
        print("start")
        return self
    def __exit__(self, *exc):
        print("end")

with context() as x:
    with Example1(x) as y:
        y.use_obj()

prints:

start
['hi']
end

However, what I don't like is, let's say that obj is an internal detail of my class. I don't want the user to have to define it beforehand and pass it in.

The only way I can figure how to do this is by calling the context manager's __enter__() explicitly:

class Example2:
    def use_obj(self):
        print(self.obj)
    def __enter__(self):
        print("start")
        self.ctx = context()
        self.obj = self.ctx.__enter__()
        return self
    def __exit__(self, *exc):
        print("end")
        self.ctx.__exit__(None, None, None)

with Example2() as y:
    y.use_obj()

which also prints,

start
['hi']
end

For comparison, just as some other random attempt, the following doesn't work because the context ends when self.obj is created:

class Example3:
    def use_obj(self):
        print(self.obj)
    def __enter__(self):
        print("start")
        with context() as x:
            self.obj = x
        return self
    def __exit__(self, *exc):
        print("end")

with Example3() as y:
    y.use_obj()

which prints,

start
['there']
end

Okay, so my point is that Example2 is the right solution here. But, it's really ugly. So my question is, is there a better way to write Example2?

[–] radarsat1@lemmy.ml 1 points 1 year ago

Nice, only 3 days old too. Great minds think alike :P

Thanks for pointing that out to me.

 

An idea that just occurred to me. I was looking for communities on machine learning to join, so I searched https://browse.feddit.de/ and found a bunch. They don't have much content but together they have at least 4 or 5 posts each, which adds up to a few posts, so I subscribed to all of them.

However, now I have no way of "grouping" them so that I can view posts of all communities in my feed related to the topic of machine learning.

I was wondering if some concept of "super communities" could be interesting for Lemmy, similar to "multireddits". People could curate their collection of favourite communities around a topic, over multiple instances, and users could easily subscribe and browse the whole bunch of them.

[–] radarsat1@lemmy.ml 14 points 1 year ago (6 children)

I would be happy to use another instance but my account is on this one. Is there a way to migrate an account, or perhaps "link" accounts on multiple instances somehow?

[–] radarsat1@lemmy.ml 0 points 1 year ago (1 children)

Is it good? The description sounds a lot like the plot of Source Code.

[–] radarsat1@lemmy.ml 1 points 1 year ago

If you're pickling that much data you should definitely consider using a more appropriate data format. Maybe a database or HDF5?