• Как подать питание на камеру через витую пару?

    paran0id
    @paran0id
    Умный, но ленивый
    PoE.

    Покупаете камеру с поддержкой PoE и PoE-инжектор. Подключаете инжектор между микротом и камерой.

    Может и без инжектора обойдется, если у микротика есть порты с PoE (не знаю всего ассортимента, но вроде были такие).
    Ответ написан
    1 комментарий
  • Как сократить данный код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Тут много путей уменьшить код.
    Можно начать с того, что у вас многократно повторяется.
    К примеру,
    if message.text == '26.01':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            bt1 = types.KeyboardButton('8:00')
            bt2 = types.KeyboardButton('9:00')
            bt3 = types.KeyboardButton('10:00')
            bt4 = types.KeyboardButton('11:00')
            bt5 = types.KeyboardButton('12:00')
            bt6 = types.KeyboardButton('13:00')
            bt7 = types.KeyboardButton('14:00')
            bt8 = types.KeyboardButton('15:00')
            bt9 = types.KeyboardButton('16:00')
            bt10 = types.KeyboardButton('17:00')
            bt11 = types.KeyboardButton('18:00')
            bt12 = types.KeyboardButton('19:00')
            bt13 = types.KeyboardButton('20:00')
            bt14 = types.KeyboardButton('21:00')
            back11 = types.KeyboardButton('Назад')
            markup.add(bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9, bt10, bt11, bt12, bt13, bt14, back11)
            bot.send_message(message.chat.id, text='Выберите удобную вам дату для записи', reply_markup = markup)

    повторяется несколько раз. Значит, этот фрагмент можно записать один раз и затем многократно вызывать, подставляя только меняющиеся элементы.

    Но и внутри видно многократное повторение нумерованной переменной, это явный признак плохого кода.
    Эту проблему можно решить разными способами. В данном случае, когда значения идут равномерно (час за часом), можно их просто сгенерировать, рассчитать, и поместить в список.
    Например:
    first_hour = 8
    last_hour = first_hour + 14
    buttons = [f'{current}:00' for current in range(first_hour, last_hour)]
    print(buttons)
    print(buttons[0])

    И этот список и передавать в нужное место вместо bt1, bt2, bt3, bt4, bt5, …

    И не надо его всякий раз генерировать, один раз достаточно, потом в нужных случаях вызывать.

    Следует отметить, что вам пока рано заниматься ботами. Сделайте что-то попроще, калькулятор например, игру «быки-коровы»… я не шучу.
    Ответ написан
    Комментировать
  • Можно ли через nginx разделить трафик в зависимости от ip подсети?

    iMedved2009
    @iMedved2009
    Не люблю людей
    geo $client  {
        default third;
        10.50.0.0/16 second;
        178.50.0.0/16 first;
    }
    
    server{
    location / {
      try_files $uri.$client $uri = 404;
    }
    }


    в зависимости от ип будет одавать страницу с добавлением "first", "second" или "third"
    Ответ написан
    1 комментарий
  • При попытке написать /start ошибка, в чем дело?

    @igor6130
    Видать из-за этого
    chatId = message.chat.Id
    id в message должно быть с маленькой буквы.

    А в самой функции start_message у вас должно быть
    message.chat.id
    вместо
    message.chat.chatId

    Использованы неверные атрибуты. Собственно, об этом и ошибка.
    Ответ написан
    7 комментариев
  • У меня проблема какаята,где?

    @rPman
    Проверь наличие записи с искомым id в json и как то это обрабатывай, по уму подумай а есть ли .json файл вообще, проверяй ошибки записи и т.п.

    А еще ты обманываешь пользователей :) ты сначала им говоришь что ранг увеличил и только потом его увеличиваешь, а если в этот момент что то произойдет?

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

    Еще совет, сохраняй все не в один огромный файл а в много маленьких (отдельный каталог для них), заводи на каждого user_id свой файл, где этот идентификатор в имени файла. В этом случае твой код не будет тормозить при большом количестве пользователей и работать с такой "базой" гораздо удобнее (файловая система это типичная key-value база данных)

    p.s. ну конечно лучше пользоваться готовыми базами данных, нет нужды изобретать паровоз, посмотри sqlite - это sql база данных на основе файла, нет никаких серверов и все просто и удобно
    Ответ написан
    6 комментариев
  • Как сделать рассылку картинок с помощью pyTelegramBotAPI?

    @TKDBOT
    Учу python. Готов к конструктивной критике.
    Картинка отправляется методом send_photo. Так же там есть параметр caption - он является описанием т.е. текст к картинке. А форматирование указываете в параметре parse_mod.
    Ответ написан
    2 комментария
  • Сайт с доступом только по https. Плюсы и минусы?

    Текущая общепринятая практика это редирект в https на 80м порту и HSTS на 443м. Использование HSTS приводит к тому, что клиент никогда не будет использовать HTTP с сайтом, даже если явно указать http в URL. Дополнительно, можно отправить домен в список HSTS preload В США практика официально закреплена в документе The HTTPS-Only Standard, обязательном для правительственных агентств, в нем есть отдельное упоминание что:

    Allowing HTTP connections for the sole purpose of redirecting clients to HTTPS connections is acceptable and encouraged. HSTS headers must specify a max-age of at least 1 year.
    .

    т.е. разрешать подключения к 80му порту с целью редиректа не толко допустимо, но и желательно.

    Закрытие 80го порта не обеспечивает более высокой защиты чем редирект + HSTS, т.к. в случае MitM атаки атакующий может перехватить запрос к 80му и подменить ответ независимо от того открыт он или нет на сервере назначения. Т.е. закрытие 80го порта приводит к нежелательным эффектам без какого-либо повышения уровня защищенности.
    Ответ написан
    Комментировать
  • Система управления майниг - ЦОДом, такое вообще существует?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Zabbix + redmine + умные розетки на каждый асик.
    Розетки ищите в серверном оборудовании вот прям счас не помню но есть такие девайсы.
    Вам нужна именно серверная версия с snmp.
    Дальше просто настраиваете заббикс, пусть будут графики и триггеры на превышение.
    В триггерах создаете задачу в редмайне и по желанию уведомление для клиента.
    Ответ написан
    Комментировать
  • Какой простой консольный файл-менеджер есть в Mac Os и как его установить?

    @tuwkan
    brew install mc
    Ответ написан
    Комментировать
  • Можно ли установить операционку на которой работает MacBook на обычный офисный ноут ASUS?

    @Voland69
    На обычный офисный пробовал, все закончилось покупкой подуставшего макбука на авито - так ИМХО гораздо проще и сразу все работает.
    Не имея готового мануала конкретно под Вашу модель ноута установка хакинтоша превращается в бег по граблям в темноте.
    ИМХО в целях повышения грамотности можно поиграть, если задача работать то лучше оригинальное железо.
    Ответ написан
    Комментировать
  • Как создавать новый image в dockerfile и нужно ли?

    @vitaly_il1
    DevOps Consulting
    Во-первых, присоединяюсь к комментариям shurshur.
    Во-вторых, советую прочитать пару статей по основам Докера, потом ""Docker best practices, плюс с примером контейниризации full-stack апликации.
    Ответ написан
    Комментировать
  • Как реализовать проброс видеокарты под множество виртуальных машин?

    @rPman
    Такое возможно только с серверами и видеокартами nvidia серверными типа a100
    Вот полистай, вот настройка vgpu у vmware
    Ответ написан
    3 комментария
  • Как захостить сайт на NodeJS на Windows сервере?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    "Всякие Linux и CentOS" - это "лучше день потерять, потом за пять минут долететь". Виртуалки же на винде - путь в никуда. Одумайтесь.
    Ответ написан
    1 комментарий
  • Как сделать так чтобы после убийства врагов начиналася другая сцена в Unity?

    Denkuwus
    @Denkuwus
    15 y.o
    Можно использовать функцию SceneManager.LoadScene():

    Надо создать сценарий, который будет обрабатывать логику перехода к следующей сцене. Можго прикрепить этот скрипт к пустому игровому объекту в сцене:

    using UnityEngine;
    using UnityEngine.SceneManagement;
    
    public class SceneTransition : MonoBehaviour
    {
        // Имя следующей сцены для загрузки
        public string nextScene;
    
        // Обновление вызывается один раз за кадр
        void Update()
        {
            // Проверить, все ли враги убиты
            if (EnemiesKilled())
            {
                // Загрузить следующую сцену
                SceneManager.LoadScene(nextScene);
            }
        }
    
        // Возвращает true, если все враги убиты, иначе false
        bool EnemiesKilled()
        {
            // Реализуй эту функцию, чтобы проверить, все ли враги были убиты.
            return true;
        }
    }


    В редакторе Unity нужно поставить значение переменной nextScene на имя сцены, которую надо загрузить после убийства врагов.

    В функции EnemiesKilled() реализуй логику проверки того, все ли враги убиты. Можно использовать счетчик, чтобы отслеживать количество убитых врагов, или можное использовать логический флаг, чтобы указать, все ли враги были уничтожены.

    Когда все враги будут убиты, будет вызвана функция SceneManager.LoadScene() и будет загружена следующая сцена.
    Ответ написан
    Комментировать
  • Работать в IT или продолжить учебу?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    То есть подождите...
    Вы - РОДИТЕЛИ РЕБЕНКА - спрашиваете на форуме (где даже не всегда можно получить ответ на простейшие вопросы), о векторе развития жизни вашего собственного ребенка?
    Ну допустим получите вы ответ, а потом у вашего сына не получится. Он придет к вам и спросит: "Как так вышло, что вы мне насоветовали тогда в далеком 2022". А вы ему что? Извини, сынок, это не мы, это Петя Пупкин с форума так сказал, а мы уже настояли на этом?
    Ответ написан
    6 комментариев
  • После metro exodus всё пошло по "наклонной" или как я так облажался?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    По наклонной всё пошло после третьих Героев и второго Фаллаута. Остальное уже последствия.
    Ответ написан
    1 комментарий
  • Как автоматизировать установку приложений в Ubuntu (vps)?

    deepblack
    @deepblack
    В самый раз освоить Ansible

    Ansible is a radically simple IT automation system. It handles configuration management, application deployment, cloud provisioning, ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex changes like zero-downtime rolling updates with load balancers easy.
    Ответ написан
    Комментировать
  • Почему не определяется хост в /etc/hosts?

    mikes
    @mikes
    Потому что в браузере включён прокси. В таком случае ваш hosts не имеет значения.

    Уберите прокси или расширения которые его включают
    Ответ написан
    Комментировать