• Почему скрипт python со временем замедляется?

    trapwalker
    @trapwalker Куратор тега Python
    Прислоните одну руку к монитору, а вторую к голове и громко мычите. Тогда все здесь присутствующие экстрасенсы почувствуют все ошибки в вашем коде, смогут его прочитать через астрал и сразу ответят на все ваши вопросы. Хором!
  • Как получить неуникальные элементы списка после преобразования его set()'ом?

    trapwalker
    @trapwalker Куратор тега Python
    TemaKam, смотрите. У этого алгоритма сложность порядка O(N). Там фактически два прохода по всем эkементам в худшем случае, но O(const*N) читается эквивалентным O(N).
    Почему так? Потому что Counter построен на основе словаря (Hash Map). За счет оптимизаций и математической магии с хешированием амортизированная сложность вставки в такую структуру данных будет порядка O(1). Очевидно, что это нужно проделать N раз. Потом ещё в худшем случае N раз, чтобы перебрать все неповторяющиеся элементы.
    Это не проблема.

    Если бы у вас список был изначально отсортированным, то его можно очистить от лишних вам элементов тоже за O(N), да за один проход. Если список не сортированный, то придётся его сперва осортировать, что займёт у вас в среднем O(N*lnog(N)) и это хуже, чем вариант выше.

    Короче, не морочьте голову.
    Кстати, вы можете и за один проход выдать все дублирующиеся элементы:

    def filterdup(items):
        c = Counter()
        for item in items:
            if c[item] == 1:
                yield item
            c[item] += 1

    Но фактически вы этим ничего не выиграете. Думаю этот вариант даже медленнее будет.
  • Как имитировать линию для старого телефонного аппарата (с поддержкой звонка)?

    trapwalker
    @trapwalker Автор вопроса
    при чем тут может быть роутер? Форум, спасибо, ляну.
  • Как имитировать линию для старого телефонного аппарата (с поддержкой звонка)?

    trapwalker
    @trapwalker Автор вопроса
    Codebaker, полезненько! Я наивно рассчитывал, что не придётся копаться и кромсать более сложную, чем надо схему, но чего уж...
    Спасибо. Засуньте, пожалуйста, ссылку в ответ и я его помечу как таковой.
  • Как имитировать линию для старого телефонного аппарата (с поддержкой звонка)?

    trapwalker
    @trapwalker Автор вопроса
    Дмитрий Александров, Ну это уж совсем из пушки по воробьям...
    Для меня сейчас основной вопрос в формировании высоковольтного сигнала для имитации вызова.
    Остальное я более-менее представляю как сделать на ардуинке и копеечых модулях с алиэкспресса вроде mp3-плеера с управлением через ISP. Даже записывать слинии, вроде как, можно с помощью штатного АЦП на контроллере без всяких кодеков в PCM.
    Надеялся, что олды придут и ткнут в схему их моделиста-конструктора двадцатилетней давности=)
  • Как имитировать линию для старого телефонного аппарата (с поддержкой звонка)?

    trapwalker
    @trapwalker Автор вопроса
    Спасибо за конструктивное замечание по сути вопроса.

    Да, параметры сигнала в линии я, конечно же, нагуглил давно, а вот готовую схему для имитации линии с поддержкой зонка не нашел, хотя за столько лет актуальности проводной телефонии наверняка в каком-нибудь Моделисте-Конструкторе, ном Технике или журнале Радио кто-то публиковал более-менее простую схему с имитацией тривиальной АТС или чем-то в этом роде.

    Вопрос откорректировал. Электроника - не мой профиль. Если подключить ардуинку или расчитать резистор для светодиода - это для меня не сложно, то в такой вот задаче хотелось бы действовать наверняка и не тратить много времени на непрофильные эксперименты.

    Я вижу несколько путей: 1) DC-DC повышает напряжение до 54 вольт, заряжает конденсатор. Мосфет затвором висит через подтягивающий резистор на ноге контроллера и подключает по сигналу конденсаторв линию.
    Вопрос, достаточно ли такого "меандра" для натурального звучания звонка?
    2) подаём меандр также через мосфет на вход трансформатора,а уже его подклчаем в линию. Но там низкая частота, как расчитать трансформатор, будет ли он эффективен? Особенно учитывая однополярность входного сигнала.
    3) использовать мостовую схему на двух транзисторах или готовый драйвер коллекторного двигателя с реверосм, чтобы подавать напряжание с DC-DC преобразователя напрямую.
  • Как имитировать линию для старого телефонного аппарата (с поддержкой звонка)?

    trapwalker
    @trapwalker Автор вопроса
    Нужна именно имитация линии, чтобы можно было оставить сам аппарат в оригинальном немодифицированном виде.

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

    trapwalker
    @trapwalker Куратор тега Python
    А сообщение об ошибке показать нормально не приходило в голову?
  • Нужно ли ООП в python?

    trapwalker
    @trapwalker
    Adamos, это масло масляное. Читать-то зачем программы? Чтобы дописать что-то или чтобы ошибки найти и исправить. А если программа не дописана или в ней есть ошибки, то программу нужно дописывать, а значит весь процесс можно обобщить.
    Не чтением единым, так сказать.
    Вообще, нужно стараться, чтобы программы были несложными в любом случае, даже если функциональность, которую он обеспечивают очень непростая. Вот чтобы распределеять сложность, выносить её за пределы слишком сложных участков, и нужно ООП, хотя не только ООП.

    Но в целом признаю. В моём случае следует заменить слово !писать! на слово "разрабатывать"
  • Как удалить профили пользователя с доменной машины с помощью python 3?

    trapwalker
    @trapwalker Куратор тега Python
    BegliyTapok, ну это смотря как подвесить, вообще-то...
    Специализированных либ, кстати. не знаю для этого. Наверно есть биндинги для повершелл какие-то.
    Я давно уже не работаю с виндой.
  • Как передать команду наружу из Docker контейнера?

    trapwalker
    @trapwalker
    так-то мысль звучит довольно здраво, чтобы панель управления в отдельном контейнере разместить.
    Даже не знаю как правильно поступить. А вдруг придётся помимо докера ещё что-то на хосте делать? Может по ssh всё же лучше? Но в плане безопасност такое выглядит, коненчо, так себе. Уроборос, эдакий.
  • Как детектить собаку на кровати?

    trapwalker
    @trapwalker Автор вопроса
    Прикольно. Не знал о такой железке, спасибо!
  • Как детектить собаку на кровати?

    trapwalker
    @trapwalker Автор вопроса
    geopunk, это отчасти личные заморочки, а отчасти нет. Кошка не имеет никакого запаха, от собаки есть неприятный запах, даже сразу после купания. Кошка (моя по крайней мере) не принесёт и не закопает вам в кровать кусочек сыра, или пельмень, или недоеденную котлету, или косточку, а собака делает это с некоторой регулярностью.
  • AttributeError: 'int' object has no attribute 'replace' как исправить?

    trapwalker
    @trapwalker Куратор тега Python
    samperirrrrr, ну так начните с чтения учебника или просмотра хорошего бесплатного курса с вполнением упражнений.
    Метод replace есть у строк, он возвращает новую строку с замененными подстроками, идентичными первому аргументу на значения фторого аргумента. Само собой, что число не может быть подстрокой строки. Подстрока - это строка. Число - это не строка. Числа задаются одними литералами (числовыми), а строки строковми литералами (символами в кавычках).
    Однако это всё ерунда. Тот факт, что вы не понимаете концепию присвоения и ссылок в питоне, говорит о том, что вам нужно начать с азов и вопольоваться учебником, а не пытаться писать код методом тыка и с помощью вопросов и ответов. Предтавьте, что кто-то бы так аппендицит учился вырезать. Пусть даже на кошечках а не на людях.
  • AttributeError: 'int' object has no attribute 'replace' как исправить?

    trapwalker
    @trapwalker Куратор тега Python
    sswwssww, походу писалось наощупь без знания языка
  • Как выбрать активную цену и предыдущую?

    trapwalker
    @trapwalker
    Андрей Мохов,

    в виде хранимой процедуры со стеком


    мало подходит такое решение, т.к. нужно на лету считать и быстро, а данных много

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

    Кстати, есть еще вариант. Сделать дополнительную таблицу, где хранить "раскрытые скобки", то есть непересекающиеся упрощенные интервалы. Так вы перенесёте вычислительную сложность из чтения (которое часто) на запись (которая сравнительно редко).
    При модифиуации вашей сложно-интервальной таблицы удаляете и пересчитываете упрощенные плоские интервалы в кэше. Там же можно и предыдущие значения цен хранить готовенькими.
    Денормализация и некоторая избыточность, зато на чтение будет просто реактивной и в любой момент можно перестроить плоскую таблицу.
  • Как выбрать активную цену и предыдущую?

    trapwalker
    @trapwalker
    Андрей Мохов, а если предыдущую цену брать отдельным вложенным селектом?
  • Как выбрать активную цену и предыдущую?

    trapwalker
    @trapwalker
    Андрей Мохов, добавьте, пожалуйста, в текст вопроса шаблон SQL с таблицей тестовых данных. Такие задачки народ с бОльшим удовольсивем берётся решать, когда нужно лишь поиграться с SQL.
    Если бы вы приложили еще и ссылочку на онлайн REPL постгреса, чтобы не поднимать локальную базу для попробовать, вообще было бы круто
  • Как выбрать активную цену и предыдущую?

    trapwalker
    @trapwalker
    Андрей Мохов, так, без паники. Я. действительно, не обратил внимания, что интервалы пересекаются.
    Странно. То есть более поздний интрвал имеет бОльший приоритет, чем более ранний?
    Мне кажется стоило отдельно упомянуть. что интервалы могут пересекаться и включать друг-друга, но приоритет по дате открытия интервала. Однако, согласен, это моя невнимательность.

    Вы попытались решить задачу оконной функцией и это, действительно, довольно проблематично в данных обстоятельствах.
    Тут бы подошло решение в виде храниой процедуры со стеком.
    "Скобочная" вложенность этих интервалов может быть очень большой и чистый SQL лохо приспособлен для таких контекстно зависимых задач.