Задать вопрос
  • Есть ли типовые архитектуры системы диспечерезации?

    NeiroNx
    @NeiroNx
    Программист
    То что вы описываете все называют SCADA. Их уже полно всяких и отечественных: MasterSCADA, ЭНТЕК-Scada, СК-11.
    Самому изобретать такой велосипед всегда полезно:
    Структурная схема типовая:

    Протокольный драйвер => Шина данных (потоки опроса устройств)
    Шина данных => Визуализация (поток выдачи текущих значений)
    Шина данных => События (поток обработки событий)
    Шина данных => База данных (поток записи в базу)
    События => База данных (поток обработки событий)
    События => Уведомления (поток обработки событий)
    События => Визуализация (поток обработки событий)
    База данных => Тренды (поток доступа к историческим данным)
    База данных => Отчеты (поток доступа к историческим данным)

    Описание:
    Визуализация - это некоторый интерфейс, возможно веб или нативное приложение - отображает схемы, и события на них.
    Все остальное это бэкэнд возможно потоки одного процесса либо разные процессы.
    Шина данных - среда обмена данными возможно MQTT или RabbitMQ или что-то похожее.
    События - поток обработки данных - вышло ли значение за установленный предел.
    Уведомления - поток рассылки уведомлений о событиях во внешние системы(Email,Telegramm,SMS).
    Отчеты - сервис обработки исторических данных и генерации отчетов по шаблонам.
    Тренды - поток собирает данные и строит графики.
    База данных - организованное хранение, в виде файлов, таблиц.
    Ответ написан
    Комментировать
  • При печати этикеток в 1С не корректно прописываются данные?

    @efcadu
    Системный администратор
    Скорей всего дата на этикетке берется не из ЧЗ, а из карточки товара в 1с. Попробуйте ввести дату в карточке и проверить.
    В самом коде маркировки дата не хранится, она есть только в ЧЗ и, вряд-ли при печати этикеток, 1с делает запрос в ЧЗ, чтобы узнать дату производства.
    Ответ написан
    Комментировать
  • Почему callback_query_handler в telebot не работает?

    Vindicar
    @Vindicar
    RTFM!
    Потому что от того, что ты написал message: Message, у тебя в обработчике волшебным образом доступ к объекту message из совсем другой (и уже отработавшей) функции не появится.
    Лучше разберись, что ещё лежит в объекте callback - там вполне достаточно информации для отправки ответа.
    Ответ написан
    Комментировать
  • Почему callback_query_handler в telebot не работает?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Вот смотри:

    message: Message

    Чему равно message после такой инструкции? Как по-твоему оно должно работать? Попробуй его напечатать.

    Программировать нужно не методом тыка, а понимая язык, на котором пишешь.
    Ответ написан
    Комментировать
  • С чего начать, чтобы разбираться в Telegram MiniApp и чётко ставить задачи разработчикам?

    @Refguser
    Решения для бизнеса: корп.сайты, ИМ, боты и пр.
    1. Сколько сейчас по рынку стоит создание качественного, продвинутого MiniApp (не базового, а с интерфейсом, авторизацией, интеграциями и т.д.)?


    MiniApp - это по сути сайт. Стоимость от бесплатно до миллионов. Всё зависит от ТЗ и бюджета.

    2. Можно ли за пару месяцев разобраться в базовых принципах MiniApp-разработки, чтобы понимать архитектуру, этапы и грамотно ставить задачи?

    Заказчику не нужно разбираться в принципах разработки. Ему нужно грамотно составить ТЗ. Своими словами, но так чтобы его понял исполнитель (если употребляются термины - они должны быть объяснены).
    И помнить - всё, что не указано в ТЗ будет не сделано или сделано на усмотрение разработчика.
    И конечно определится с бюджетом

    Эти моменты мы проговаривали устно, и разработчик .. в итоге он их не сделал.

    Вот поэтому я против устной болтовни. Всё важное только письменно. И желательно по электропочте.
    Устно можно обговорить мелкие детали, дать/получить объяснения непонятного. Но по итогу всё должно быть зафиксировано письменно. Даже если это не будет в ТЗ - будет в переписке и не потеряется.
    Ответ написан
    Комментировать
  • Какие есть простые легковесные LLM для локального использования?

    @rPman
    Настоятельно рекомендую не ждать ответа от сообщества и не гадать, а установить что то типа lmstudio или ollama и используя их интерфейс по перебирать модели, подходящие под ваши требования на своих задачах (можно заранее собрать тестовый набор и попросить ИИ написать код для его проверки автоматически), эти утилиты поднимают llama.cpp сервер, c совместимым с openai api.

    Легковестными и терпимыми кодогенераторами являются либо специализированные модели (в название code) либо что-нибудь от топов - google gemma, microsoft phi4, openai oss (лично не пробовал но говорят что даже 20b терпимая, и почти наверняка ее можно использовать как ускоритель для 200b) и может быть qwen3 30b a3b.

    p.s. готовь 64гб ram минимум (лучше 128гб в идеале 196гб, тогда можно потрогать топовые типа deepseek), мало хранить веса, нужно еще контекстное окно обслуживать. Есть алгоритмы, позволяющие неплохо ускорять MoE модели, не влезающие в gpu, только малым их количеством (например на 196гб ram + 24gb vram запускают deepseek с несколько токенов в секунду).

    денег, которые ты потратишь на апгрейд железа хватит на месяцы и годы на использование облачных api, это при использовании топовых моделей, а если брать дешевые слабые (сравнимые с opensource) то и подавно.

    И главное, сносное качество открытые модели дают в режиме рассуждения, которое кратно увеличивает время до получения ответа (десяток минут), стоит ли оно того?
    Ответ написан
    Комментировать
  • Апгрейда разраба с помощью нейросетки, с чего начать в 2025 году?

    Kentavr16
    @Kentavr16
    long cold winter
    Дополню ответы и комменты к ним.

    В вопросе правильно указано различие между скоростью и качеством работы программиста. По состоянию на сейчас разумнее всего рассматривать нейронки как коллегу , который супербыстро гуглит. Соответственно прокачка скорости работы - практически моментальная (при условии платного решения, присоединяюсь к ответу fkk и также рекомендую сонет интегрированый в IDE) Для меня прирост именно скорости написания составил минимум процентов 30 - почти полностью удалось делегировать написание тестов (особенно полезно), первичный рефакторинг/мелкое разбиение кода и тд.

    По улучшению качества работы все более размыто. ИИ отлично показывает себя как тренер для уровня интерна. при этом чем выше уровень, тем бесполезнее ИИ. Тут я на 90 процентов уверен что начиная с уровня мидл+ роль ИИ в обучении сводится у роли навороченной песочницы. Растить спеца ИМХО придется через практический опыт и толстые книги.

    П.С. - не ведитесь на маркетинг вокруг ИИ. Я считаю что у нейронок огромный потенциал, но судя по всему они еще минимум лет 5-7 будут вторичны. Это не программист и не учитель. Это крутое автодополнение которое помогает мясной прокладке между стулом и монитором.
    Ответ написан
    Комментировать
  • Как и чем осуществлять контроль за сотрудниками от обхода компании?

    @Drno
    Ну вот встретятся они с заказчиком для обсуждения \ подписей...
    и там договорятся
    как Вы это предотвратите?)
    Ответ написан
    Комментировать
  • Что можно улучшить или оптимизировать в коде, чтобы он не был таким длинным?

    @Everything_is_bad
    Надоел каждый раз прибегать с такими вопросами (проблема что наша помощь не помогает, ты не учишься, каждый раз подобный треш выдаешь, либо опять тут проблема не в питоне, а в алгоритмах), сходи уже к LLM, они нормально могут предложить вариант, даже на такой кривой код как у тебя.
    Ответ написан
    Комментировать
  • Как получить из URL имя страницы?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Если исходить из условия, то вам достаточно:
    url = 'test.com/dir1/dir2/dir3/page.html'
    page_name = url.split('/')[-1]
    print(page_name)
    >>>page.html

    И зачем нужен остальной код непонятно.
    Ответ написан
    2 комментария
  • Дашборд. Какую методу сбора данных и платформу выбрать для разработки?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Автоматизируя хаос, вы получите хаос, только автоматизированный.
    У вас должна быть единая система, агрегирующая данные из разных источников, и позволяющяя их отобразить в нужном вам виде.
    1С позволяет это сделать, причем все, и сбор данных из разных источников, и их хранение, и визуализацию через Web, и настройку прав доступа с авторизацией. Если у вас есть специалисты по 1С, делайте в 1С.
    Эксель тоже позволяет это сделать, результат вы получите быстрее чем с 1С, но это будет куча костылей, которые нужно будет постоянно подвязывать.
    Написать собственное решение или использовать еще какое-либо готовое, тоже нормальный вариант.
    Вам нужно сейчас четко разложить по полочкам, какие у вас есть данные, какие нужно строить отчеты (вплоть до формул расчета конкретных показателей), проверить, что данных для этих отчетов достаточно.
    Затем оглянуться какие у вас есть специалисты, или оценить бюджет, и тогда принимать решение о конкретной реализации.
    Ответ написан
    1 комментарий
  • Как получить названия прав с Журнала Регистрации в 1с?

    @Dementor
    программист, архитектор, аналитик
    В журнале регистрации по событию "Отказа доступа" такое не регистрирует, он не показывает названия прав, лишь роли.

    Все с точностью до наоборот. Журнал регистрации абсолютно ничего не знает про роли, которых могут быть сотни в конфигурациях на базе БСП и в которых права часто дублируются. В журнале фиксируются отсутствие именно прав на чтение, добавление, изменения и так далее.

    По факту отсутствия конкретных прав на объекты администратор должен проанализировать профиль пользователя и добавить в него роли, в которых данные права указаны.
    Ответ написан
    Комментировать
  • DevOps риски, фабрика или скам?

    Maksim_64
    @Maksim_64
    ML Engineer
    Сомневаешься не делай, делаешь не сомневайся.

    Ты не сможешь развиваться, работать, и т.д., если ты заведомо сильно сомневаешься в работодателе.

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

    @rPman
    Это разные названия действий/команд, применяемых в разных ситуациях, не в каждом языке есть каждый из описанных.
    * Оператор (и действие, которое он вызывает - операция) - это пришедшие из математики действия, классические +, -, /, *, символ присвоения = (в разных языка по разному, например pascal :=) или сравнения == (соответственно = в pascal) или логические операции (и/или/не/..),..

    Синтаксически выделяют их как что то записанное рядом с операндами (то с чем производится операция), например слева/справа - ++i, !i, -1, i++, или между двумя i+y, или теранрная операция в c++ - условие?если_истина:если_ложь из трех операндов.

    В некоторых языках может быть переопределена программистом (например в c++) для своих типов

    * функция, процедура - это действия, определяемые программистом, по имени и иногда (в c/c++) по типам их аргументов (то над чем производится действие), это так же пришло из математики, функция возвращает результат а процедура нет (больше они ничем не отличаются).

    Синтаксически обычно это имя ( аргументы через запятую) но встречаются выверты типа lisp (имя аргументы через пробел) и кстати операция + там тоже функция (собственно кроме этих скобок там ничего нет)

    * есть еще методы классов, в языках с объектно ориентированным уклоном (но не обязательно, например в c так тоже можно похоже, с определенными усилиями, но это совпадение), когда добавляется 'синтаксический сахар' для указания одного (условно главного) параметра функции/процедуры по другому, групируя место описания этих методов в одном месте и добавляя различные методы наследования и самоограничений доступа.

    Синтаксически это выглядит как экземпляр_объекта -> метод (аргументы,..) (вместо -> может быть '.', '->', '::' (в cpp и аналогах обращение к статическому методу класса а не к объекту) ну и всякие синтаксические извращения javascript по имени obj["method"](args)

    p.s. настоятельно рекомендую, воспользуйся современными инструментами работы с документацией, особенно подходящие для новичков (с оговорками про галлюцинации, т.е. держи в голове что факты нужно перепроверять) - ИИ, хоть бесплатными штатным майкрософтовским copilot.microsoft.com (он так же встроен в edge и в windows 11 но требует vpn в россии, с ним можно голосом поговорить, добавив при старте что ты хочешь что бы он тебе помогал в обучении и наводящими вопросами после объяснения проверял, верно ли ты все понял) хоть платным (рекомендую) от chatgpt.com/deppseek/xai/.. еще лучше воспользуйся агрегатором типа openrouter
    Ответ написан
    4 комментария
  • Как получить список прав в 1с программно?

    fosihas
    @fosihas
    Автоматизации учета на 1С.
    Обратиться к метаданным 1С
    Для каждого Роль Из Метаданные.Роли Цикл

    все придумали до нас)))
    https://github.com/VorozhbitDM/Access-control-1C
    Ответ написан
    Комментировать
  • Где искать фриланс вакансии без портфолио (Кроме фриланс бирж)?

    @Taras_Phu
    Первые заказы часто можно получить из записной книжки. Открываем телефон, листаем и ищем того кто готов купить услугу. Работает в любой нише, в любое время.
    Ответ написан
    Комментировать
  • Как хранить и показывать локальные файлы в CRM (frontend + backend)?

    Adamos
    @Adamos
    Хранить файлы в БД - это либо очень узкий кейс с файлами меньше 4 кб, либо некомпетентность.
    В БД хранится информация о файлах.
    Сами файлы складываются в папочку storage под хэшированным именем, а в БД хранится:
    - их настоящее имя и расширение (возможно, тип)
    - доступ (публичный или через скрипт после авторизации)
    - принадлежность (не автор, а объект в бизнес-логике, которому этот файл принадлежит)
    - ну, и та техническая информация, которая требуется (вот тут автор, время, правки etc.)
    Соответственно, для фронта бэком генерируются ссылки на нужные файлы, публичные - прямые, непубличные - на роутер, который их обработает.
    Ответ написан
    9 комментариев
  • Как сделать отправку файла боту от клиента на python telebot?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    import telebot
    
    TOKEN = 'YOUR_BOT_TOKEN'  # Замени на токен своего бота
    bot = telebot.TeleBot(TOKEN)
    
    # Обработка входящего документа (файла)
    @bot.message_handler(content_types=['document'])
    def handle_document(message):
        file_info = bot.get_file(message.document.file_id)
        downloaded_file = bot.download_file(file_info.file_path)
    
        # Сохраняем файл локально
        with open(message.document.file_name, 'wb') as new_file:
            new_file.write(downloaded_file)
    
        bot.reply_to(message, f"Файл '{message.document.file_name}' успешно получен и сохранен!")
    
    # Обработка команды /start
    @bot.message_handler(commands=['start'])
    def start_message(message):
        bot.send_message(message.chat.id, "Привет! Отправь мне файл, и я его сохраню.")
    
    bot.polling()


    'document' — для файлов (PDF, DOCX, TXT и т.д.)

    'photo' — для изображений
    'audio' — для аудио
    'video' — для видео
    'voice' — для голосовых сообщений
    Ответ написан
    4 комментария
  • Бот долго отвечает сообщением, где фото+текст. Как исправить?

    @twistfire92
    Python backend developer
    По-хорошему нужно фото на сервер загрузить один раз и сохранить его file_id. И все дальнейшие ответы с этим фото реализовывать через этот file_id, а не загружая каждый раз одно и то же фото. Вполне возможно это ускорит ответ.

    Как и где хранить этот file_id для фото нужного товара - тема отдельного вопроса. Обычно используется БД для подобных вещей, но у вас уже есть какой-то словарь products со словарями внутри. Предлагаю каждый элемент этого словаря расширить ключом file_id.
    Далее логика следующая:

    Когда нужно отправить фото товара, смотрите сначала на значение в file_id.
    - Если оно пустое - отправляете по-старому сценарию, только сначала дождитесь ответа от метода message.answer_photo(). Результатом этого метода будет объект Message, в котором можно найти file_id для вашего загруженного файла (поиски возложу на вас). Просто прописываете его в ваш словарь products[product_id][file_id].

    - Если значение file_id заполнено, то делаете все то же самое, что и сейчас, только в методе message.answer_photo() в параметре photo передаете file_id.

    получается, что сам файл будет загружен на сервер только один раз, а все остальные разы будет браться только с сервера. Кстати в документации Bot API так и сказано, что предпочтительнее использовать file_id, нежели каждый раз загружать файлы на сервера телеги.
    Ответ написан
    1 комментарий
  • Какие импорты лучше использовать в Python?

    @Everything_is_bad
    Лучше абсолютные, даже в pep8 это упоминается https://peps.python.org/pep-0008/#imports

    И не нужно сюда прибегать с подобными вопросами, ответ давно находится через гугл, а если ты так не осилил гугл, сходи сначала в чатпгпт и подобные.
    ЗЫ единственная польза вопроса, для hr, сразу смело можно отказывать ТС.
    Ответ написан
    2 комментария