Задать вопрос
Профиль пользователя заблокирован сроком с 1 апреля 2025 г. и навсегда по причине: подозрительная активность
  • Текст не выводится в нужном формате. Почему?

    @twistfire92
    Python backend developer
    Вот предлагаю поиграться с этим кодом. Накидал что первое в голову пришло, но без всяких индексов i j в которых можно легко запутаться
    s = 'Вот какая-то длинная строка, ниже я установил лимит. Строка разбивается на подстроки по длине не превосходящей этот лимит.'
    limit = 20
    
    
    def foo(s, limit):
        rows=[]
        current_row=[]
        length=0
        lst = s.split()
        for word in lst:
            if limit <= (length + len(word) + 1):
                rows.append(' '.join(current_row))
                current_row=[word]
                length = len(word)+1
            else:
                length += len(word)+1
                current_row.append(word)
        rows.append(' '.join(current_row))
    
        return('\n'.join(rows))
    
    print(foo(s, limit))
    Ответ написан
    1 комментарий
  • Как уменьшить количество таблиц-справочников с тремя-четырьмя строками?

    Для коротких списков есть тип данных: ENUM.
    Поддерживается, например, в MySQL, Postgres.

    Идеально подойдёт для:

    1. Статусы заказа (открыт/выпущен/закрыт и т. п.)
    2. Статусы сборки заказа (ожидает сборки, сборка начата, сборка проверена, сборка завершена)
    3. Формула оплаты заказа (тут много вариантов)
    4. Фонд оплаты (собственные средства, федеральный бюджет, территориальный и т. п.))
    5. Внутренний клиент (одно из возможных внутренних ООО)
    6. Ответственный сотрудник
    7. Территориальный сектор
    8. Направление

    Ответ написан
    1 комментарий
  • Как уменьшить количество таблиц-справочников с тремя-четырьмя строками?

    @rPman
    тут несколько подходов, я трогал каждый из них и все они имеют право на существования
    1. оставь как есть, я рекомендую, пусть будет 100500 таблиц справочников (если проблем с именами нет ну и отлично), fk-индексы все это свяжут а инструменты анализа базы данных помогут с этим работать (автоматические query builder с мышевозекательным интерфейсом) и база будет сама следить за тем что идентификаторы справочников не противоречивы
    недостатков я не могу придумать, кроме может быть сильно разросшейся структуры, когда то давно я слышал что некоторые базы данных при увеличении количества таблиц начинают хуже работать но как я понимаю это если их будет десятки тысяч а не десятки и сотни.. может быть резервное копирование такой базы или ее репликация будет проходить чуть медленнее или еще хуже, организационно репликация может быть настроена на не рассылку ddl модификаций, в этом случае создание нового справочника будет задавать работу еще и админам, что нежелательно.

    2. противоположный, использование одной таблицы key-value для нескольких разнородных справочников (id, value, table_name), в 99% случаев можно использовать один сиквенс (одну последовательность идентификаторов), вам же не обязательно чтобы разные справочники начинали счет своих строк с одного и того же числа 1.
    Недостаток - база данных теперь не сможет контролировать что вы используете непротиворечивый идентификатор (можно в запись одного справочника указать номер из другого), хотя несуществующий так же нельзя будет указать (и будут работать delete cascade), так же удобной автогенерации sql не будет. Структура будет проще, так же интерфейс редактирования таких справочников может быть один вместо кучи форм и добавлять новые справочники будет сильно проще (хотя с точки зрения разработки нет особой разницы, один insert ты написал или create table перед этим)

    3. не хранить справочники в базе данных вообще, т.е. за значение справочников отвечает бакэнд (хранятся в статичных файлах или в коде) самый дибильный подход, редактировать такие справочники скорее всего только руками в конфигах/исходниках. Недостатки - база данных совсем не будет знать ничего о значениях и не сможет ни проконтролировать ни помочь с запросами
    Но это позволит снять немного нагрузки с базы данных, сделает структуру проще и позволит перенести управление значениями справочников на откуп ide редактора (если хранить значения справочников в коде, можно дать значениям имена переменных, так как в коде часто их так или иначе заводить придется)

    Лично я третьим подходом в чистом виде не пользовался, но у меня был набор скриптов, которые из справочников в базе данных формировали код с инициализацией констант и их именами для приложения (сами справочники приложением редактироваться не могли) и был соблазн перевести эту часть базы из 'оперативной' в 'для разработчика', так как справочник это что то - отвечающее за отображение информации, но не за бизнеспроцессы (ну примерно как языковые файлы для приложения, не хранить же переводы строк интерфейса тоже в базе, ну так и справочники смогут работать как часть этого интерйфейса и тоже может требовать перевода).
    Ответ написан
    4 комментария
  • Детектор движения на Python?

    Vindicar
    @Vindicar
    RTFM!
    Выбирать область, в которой может быть сдвиг?

    Формируете маску игнорируемых областей, по этой маске заливаете "ненужные" пиксели одним цветом, а потом уже обрабатываете. В залитых пикселях движения точно не будет. =)

    Задача- у статичной студии выявлять не двинул ли ведущий декорации,

    Т.е. нужно обнаружить сам факт движения, а не выделить область, где оно произошло?
    Я бы прошелся небольшим blur'ом по эталонному кадру и по текущему, а потом попиксельно вычел. Остаток прогнать через пороговое преобразование, если есть заметное смещение - значит, что-то не так.
    Но будет работать только если освещение не меняется, а в анализируемую зону не падает тень от ведущего.
    Если декорации цветные, то это можно отчасти нивелировать, работая в системе цветности HSV по каналу Hue (оттенок), игнорируя Saturation (насыщенность) и Value (яркость).
    Ответ написан
    2 комментария
  • Traceback (most recent call last): File 'tbot.py' line 111 in bot.polling()?

    @twistfire92
    Python backend developer
    трейсбеки читайте снизу вверх.
    Ошибка у вас
    File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\random.py", line 378, in choice
        return seq[self._randbelow(len(seq))]
    IndexError: list index out of range

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

    @AVKor
    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="icon_label"]"}
    Ответ написан
    Комментировать
  • Почему не работают прокси и как их настроить?

    DevMan
    @DevMan
    найти рабочие прокси.
    Ответ написан
    Комментировать
  • Как совместить работу aiogram и pillow?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Программирование - это не про поиск готовых решений. Если в теории понимаете, то воплощайте на практике. Если не можете, то не понимаете, перечитывайте документацию.
    Ответ написан
    Комментировать
  • Почему появляется ошибка: AttributeError: 'VkBotMessageEvent' object has no attribute 'message_id'?

    WolfInChains
    @WolfInChains
    message_ids=event.object.conversation_message_id

    Для группы удаление сообщений происходит через conversation_message_id

    Запринтите event чтобы увидеть что в нем приходит.
    Ответ написан
    Комментировать
  • Что делать с тупыми ответами на Тостере?

    karaboz
    @karaboz
    Директор продуктов в Хабре.
    Мне кажется, для заявленной вами проблемы как раз подходит пункт жалобы «Это какая-то реплика, а не ответ». И не стоит искать другой формулировки, нам нельзя их слишком много плодить, иначе жалобами невозможно будет пользоваться.

    Как можно улучшить качество ответов? Вот что у нас как разработчиков на уме на этот счет.
    Сразу скажу, что я не очень верю в рекомендации и всякого рода теоретические курсы, обучающие качеству текстов. Скорее нужно показывать, как писать хорошо, а как нехорошо, сразу на практике. Также я не особо верю в сильно закрытую систему. Пускать нужно всех, но нужно и улучшать инструменты группового контроля.

    1. Самое простое, что можно сделать — привлечь в уже существующую систему жалоб больше участников. Для этого можно высылать уведомления всем, кто жаловался, что ответ был удалён. Плюс выдавать награды тем, чьи жалобы чаще всего удовлетворяются. Система наград у нас на подходе, кстати.

    2. Можно вместо удаления сделать сокрытие в неуместное, чтобы автор ответа и все вокруг видели, что ответ был заминусован сообществом по определённым причинам. И пусть автор сам удаляет свой ответ, если не хочет выглядеть неприглядно. А заодно лишний раз поучится, как писать в сообществе не принято.

    3. На днях мы выкатим возможность коллективного редактирования вопросов. Когда обкатаем этот функционал и увидим, что он работает, что сообщество может модерировать само себя, сразу же перенесем этот же принцип коллективного редактирования на ответы. Активные и отвественные участники смогут показать менее радивым, как стоит оформлять свои тексты и свои мысли. По идее, это сильно должно улучшить качество ответов.
    Ответ написан
    38 комментариев
  • Как зарабатывать и одновременно учиться начинающему пользователю?

    @elektrovenick
    Бубочка
    Открой ворк.юа/телеграм-чаты, найди любую доступную работу (куда возьмут), речь не только об айти
    Кушай, спи, играй в кс
    В свободное время учись
    Попозже найдёшь себя и работу, но в процессе поиска с голоду не помрёшь
    Ответ написан
    Комментировать
  • Определение по картинке?

    @FCKJesus
    По поводу сравнения картинок
    from skimage.metrics import structural_similarity
    import cv2
    
    def orb_sim(img1, img2):
      orb = cv2.ORB_create()
      kp_a, desc_a = orb.detectAndCompute(img1, None)
      kp_b, desc_b = orb.detectAndCompute(img2, None)
      bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
    
      matches = bf.match(desc_a, desc_b)
      similar_regions = [i for i in matches if i.distance < 50]  
      if len(matches) == 0:
        return 0
      return len(similar_regions) / len(matches)
    
    
    img1 = cv2.imread('test_img1.jpg', 0)
    img2 = cv2.imread('test_img2.jpg', 0)
    orb_similarity = orb_sim(img1, img2)
    print(f"Фото схожи на:  {orb_similarity}")

    Код достаточно хорошо работает с необработанными изображениями.
    И по поводу распознавания текста, конечно можно, полно уже готовых решений, OpenCV и Гугл в помощь
    Ответ написан
    Комментировать
  • Как создать gitignore файл на маке при выгрузке проекта на gitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Файл .gitignore создают не при отправке готовой работы во внешний репозиторий, а задолго до того. Желательно даже вообще до создания первого локального коммита. Это обычный текстовый файл и он создаётся как и любой другой файл с кодом. Мак тут ничем не отличается от винды или линукса. Разве что Finder не показывает имена начинающиеся с точки. Если нажать command + shift + ., то увидишь скрытые файлы. Но мы всё равно создаём файлы в текстовом редакторе или в IDE, а не в проводнике. И редактор и Git этот файл видят в любом случае.
    Ответ написан
    2 комментария
  • Как создать gitignore файл на маке при выгрузке проекта на gitHub?

    Просто создаёшь файл с именем .gitignore, записываешь в него всё что надо заигнорить, коммитишь в репу. Всё
    Но от этого уже закоммиченые файлы, которые игнорятся, не исчезнут - их придётся удалить отдельно.
    Ответ написан
    Комментировать
  • Как собрать новый массив из массивов в цикле по совпадению "ключ" - "значение"?

    0xD34F
    @0xD34F
    $result = [];
    
    foreach ($arr as $key => $val) {
      foreach ($val as $n) {
        $result[$key][$n['PRODUCT_ID']][] = $n;
      }
    }
    
    $result = array_map(fn($n) => array_map(fn($m) => array_merge(...$m), array_values($n)), $result);
    Ответ написан
    Комментировать
  • Как собрать новый массив из массивов в цикле по совпадению "ключ" - "значение"?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    можно через промежуточную структуру,
    где ключ город+product_id, а значения – массив с остальными полями.
    Ответ написан
    Комментировать
  • Как просуммировать значения из списка типа "1+1"?

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    побезобразничаем ...
    t = '4+5+3+2+3'
    print(sum(int(i) for x, i in enumerate(t) if not x % 2))

    #17

    или
    t = '4+5+3+2+3'
    print(sum(int(i) for i in list(t)[::2]))

    #17
    Ответ написан
    1 комментарий
  • Как просуммировать значения из списка типа "1+1"?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Если только суммирование в инпуте:
    sum(map(int, "4+5+3+2+3".split('+')))
    # 17


    с sympy:
    from sympy import sympify
    sympify("4+5+3+2+3")
    # 17
    Ответ написан
    Комментировать
  • Как сделать выполнение функции после app.start()?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Она не выполняется, потому что внутри метода app.run() бесконечный цикл
    После этого вызова кода быть не должно
    Ответ написан
    Комментировать
  • Кто-нибудь может подсказать хороший материал и roadmap по Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Сначала "Изучаем Python" Марка Лутца, потом руководство Django. И конечно, желательно понимать принципы работы сетей в целом и протокола HTTP в частности, знать SQL и понимать принципы работы с реляционными базами данных.
    Ответ написан
    Комментировать