Pull to refresh
-1
11.7
Евгений Мышкин@myshkin_does_it

Python-энтузиаст

Send message

спасибо за разбор, я бы добавил в статью пример декоратора, который сам принимает аргументы

например

from functools import wraps
from typing import Callable, TypeVar, ParamSpec
from loguru import logger

P = ParamSpec("P")
R = TypeVar("R")

def decorator_with_args(param: int, *, enabled: bool = True) -> Callable[[Callable[P, R]], Callable[P, R]]:
    """Фабрика декоратора — принимает параметры и возвращает декоратор."""
    def decorator(func: Callable[P, R]) -> Callable[P, R]:
        @wraps(func)
        def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
            logger.info(f"decorator param={param}, enabled={enabled}, func={func.__name__}")
            if not enabled:
                return func(*args, **kwargs)
            # Пример доп. логики до вызова
            result = func(*args, **kwargs)
            # Пример доп. логики после вызова
            logger.debug(f"{func.__name__} -> {result!r}")
            return result
        return wrapper
    return decorator

а в чем преимущества? у нас и так есть хранилка, где лежит входящий файл. просто лишний шаг добавляем

спасибо за кейс!

как устроен скрипт питона с индексацией с точки зрения разных ОС на нодах? у вас маппинг какой то для линукс, мак, винды в config.ini? или фабрика в коде?

как устроены списки кредов с доступами?

прямо из поиска пользователь получает прямой доступ к файлам на разных хостах с помощью каких-то открывающихся ssh-соединений? или вы просто пути до файлов подсказывает, а дальше пользак сам идет за файлом?

есть какие то ограничения с точки зрения ИБ кому что можно искать и что можно так идексировать?

подход понятен, имеет место быть

Думаю он и в питоне похоже может выглядеть (пример ниже) но, вероятно будет медленнее. Ошибки строк обрабатываются до попытки вставки в БД через схемы, поэтому сырые данные в БД не попадают.

# Логика валидации
def foo() -> bar:
  ...

with SessionLocal() as db, db.begin():
  try:
    with db.begin_nested(): # Создаем savepoint для отката
      stmt = insert(model).values(bar)
      db.execute(bar)
  except SQLALchemyError as e:
    ...

ну кстати, вполне себе аргумент, в статью добавлю

полностью согласен! я его обошел и как-то сразу в сторону батчевой вставки ушел, но это как раз подтверждает идею: для каждой реализации есть свои кейсы

Ну душная задача и душная работа — это все таки разные вещи. Нет ничего постоянного, кроме временного :)

хороший тейк. ну я его как понятную аналогию использую

соглы, с другой стороны, «если идея взлетает» – это очень крутой показатель, что польза есть даже от того, что есть

Чем именно напрягает? В работе или в контенте?

В тг канале Кирилла Мокевнина тоже была мысль, что помимо CLI с агентами, он держит окно с чатгпт открытым, чтобы просто обсудить верхнеуровнево домен и какие-то бест-практики. Мне это близко.

Про тесты согласен, хороший поинт. Тут агенты бесспорно выигрывают.

А все навыки без повторения теряешь, даже не умственные. Космонавты вот из космоса возвращаются без мышц-стабилизаторов, еле ходят. Хотя качаются на орбите каждый день.

да, кстати. тоже натыкался, спасибо

да, отладчик вещь! каждый день использую

мощно, как выглядели технические собесы 20 лет назад?

а специальность у тебя какая?

1

Information

Rating
556-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Инженер по автоматизации тестирования, Инженер по ручному тестированию
Ведущий
From 400,000 ₽
Python
Git
Docker