Задать вопрос
  • Как понять свой проект на python, построенный по принципам чистой архитектуры, начинающему?

    master_z
    @master_z
    Программист
    Я бы начал вообще с мысли, что для обучения существуют учебники и хорошие курсы. Они как раз создаются для того, чтобы новичку не приходилось самому ломать голову над тем, с чего начать и в какой последовательности изучать материал.
    Поэтому на старте я бы не пытался самостоятельно выстроить идеальный маршрут из ООП, SOLID, паттернов и архитектуры. Гораздо разумнее взять хороший учебник по Python, пройти его последовательно и параллельно писать код руками.
    А дальше уже идти от простого к сложному:
    Python → функции и процедуры → модули → классы → ООП → несколько небольших проектов → SOLID и паттерны → архитектура
    После этого уже появляется собственный опыт и реальные проблемы. Классы могут становиться слишком большими, модули — сильно зависеть друг от друга, код становится трудно менять. И тогда SOLID и архитектурные решения воспринимаются не как набор непонятных правил, а как способы решения конкретных проблем.
    При разборе больших проектов я бы тоже не пытался сразу понять всю архитектуру. Лучше взять один сценарий и проследить его выполнение
    То есть я бы строил обучение по принципу:

    сначала учимся писать → сталкиваемся с проблемой → узнаём способ её решения → применяем → понимаем, зачем он нужен.

    А не наоборот: сначала учим архитектуру, а потом пытаемся понять, какую проблему она вообще решает.
    Ответ написан
    4 комментария
  • Можете помочь получить примеры вывода команды `tree` в кодировках, отличных от CP866 и UTF-8, для тестирования парсера на Python?

    opium
    @opium
    Просто люблю качественно работать
    вывод с чужих машин тебе не особо и нужен — сгенерируй эталонное дерево в utf-8, лучше с ASCII-ветвями (`tree /a` в Windows, `tree --charset=ascii` в Linux — так меньше риск что рамка не влезет в целевую кодировку), и перекодируй сам под нужные:

    text = open('tree-utf8.txt', encoding='utf-8').read()
    for enc in ('cp1251', 'koi8-r', 'cp932', 'gbk', 'big5'):
        try:
            data = text.encode(enc)
        except UnicodeEncodeError as e:
            print(enc, 'не влезло:', e)
            continue
        open(f'tree-{enc}.txt', 'wb').write(data)


    получишь воспроизводимые тестовые файлы, не завися от того, кто что пришлёт на pastebin.
    Ответ написан
    2 комментария
  • Почему не появляется сообщение при неправильной авторизации?

    opium
    @opium
    Просто люблю качественно работать
    забыл скобки: в else у тебя page.update без вызова — это просто ссылка на метод, страница не обновляется и снекбар не всплывает. Нужно page.update().

    заодно поправь SQL — логин и пароль сейчас летят в запрос через f-строку, это готовая SQL-инъекция. Возьми параметризованный запрос:
    cur.execute("SELECT * FROM users WHERE login=? AND pass=?", (us_log.value, us_pass.value))
    Ответ написан
    2 комментария