Задать вопрос
  • Существуют ли коммутаторы с возможностью изляции отдельных портов друг от друга?

    Да. Эта фича называется vlan.
    Должна быть во всех управляемых коммутаторах.
    Но как конкретно это реализовать - не подскажу.
    Ответ написан
  • Как сделать uptime, чтобы типа таймер шёл после запуска скрипта бота и показывал сколько времени работал бот discord py?

    Vindicar
    @Vindicar
    RTFM!
    Делать постоянно тикающий счётчик неэффективно и неудобно.
    Лучше просто при запуске бота сохрани текущее время в переменную.
    Когда у тебя запрашивают аптайм (т.е. в обработчике команды !uptime), вычти из текущего времени сохраненное в переменной - получишь интервал времени между ними. Это и будет аптайм. Останется только его отформатировать красиво.
    За подробностями смотри модуль datetime, типы данных datetime и timedelta.
    Ответ написан
    Комментировать
  • SyntaxError, как исправить?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Ну, во-первых в куске кода, который вы приложили, этой ошибки нет.
    Во-вторых, async - зарезервированное слово, не стоит его использовать не по назначению
    Ответ написан
    6 комментариев
  • Что происходит на рынке труда в айти?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    В программировании очень большой процент самостоятельной творческой работы и умению работать над собой, чтобы повышать свою квалификацию.
    Это требует определенных привычек, возможно склада ума. И проблема в том, что эти привычки к тому возрасту когда начинаешь работать обычно уже сформированы. Бесповоротно.
    Поэтому курсы могут дать какие-то знания, но если ты не тот человек, осилить профессию и адекватную работу будет крайне сложно. Разговоры о выгорании - 90% это когда человек не расположенный к профессии поиздевался над собой сперва на курсах, потом на какой-то работе, а потом надоело. Потому что душа к такому образу жизни не лежит. Да, конечно есть когда человек работает на износ, но опять же адекватный человек вовремя должен обратить на это внимание.

    А насчет легкости - нет, это совсем не легко. И если 10 лет назад было гораздо проще, сейчас стало в 10 раз сложнее. Требования повысились, конкуренция среди джуниоров повысилась.

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

    Vindicar
    @Vindicar
    RTFM!
    Это многопроцессность, а не многопоточность. Разница ОЧЕНЬ значительная, так как у разных процессов разные адресные пространства, и данные между ними приходится пересылать с сериализацией через pickle.

    Так что функции, которые выполняются в другом процессе, должны по возможности работать только с примитивами Питона, а также списками и словарями. Я не уверен, как оно работает с вложенными функциями...
    Ответ написан
    Комментировать
  • Что происходит на рынке труда в айти?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Часто собеседую людей. Действительно толковых - единицы...
    Найти хоть более-менее разбирающегося в вопросе очень тяжело - и это я не лезу в высокие материи типа тонкостей использования семафоров в ядре линукс (как когда-то меня самого спрашивали при собеседовании на позицию разработчика python %) ), а спрашиваю про самые базовые понятия, с учетом того что если человек толковый и понимает то что сам говорит - то в остальном сам разберется...
    После курсов не помню никого кто бы смог пройти собеседование и заинтересовать.
    Так что про легкость входа в IT - это обычный маркетинг.
    Ответ написан
    3 комментария
  • Что происходит на рынке труда в айти?

    Zoominger
    @Zoominger
    System Integrator
    Существует ли реальная проблема нагруженности рынка труда людьми с курсов?

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

    Vindicar
    @Vindicar
    RTFM!
    Что за ерунда у тебя в коде творится? Поучи азы Питона сначала, потом уже бросайся помощников писать...

    say_message("Здравствуйте, хозяин!" and "Рад снова вас видеть!")
    Как по твоему, что вот этот and должен значить? На самом деле, у тебя ВСЕГДА будет произноситься только второе выражение. and - это логический оператор в первую очередь. Его поведение для не-логических значений весьма специфическое.

    say_message("Как пожелаете"+str(right_mouse_control()))
    Оставляя за кадром вопрос "зачем", что возвращает функция right_mouse_control()? Она должна возвращать какой-то текст для произношения? Если должна, она явно этого не делает. Если не должна, то зачем ты засовываешь её возвращаемое значение в строку? Почему просто её не вызвать, вне рамок say_message()?
    То же самое для остальных вариантов ниже.

    Ну и простыня elif как вишенка на торте, да.

    EDIT: покажу, как можно это улучшить. Код сложный, но зато легко расширяется.
    Сделаем класс, который будет рулить списком известных команд и сопоставленными им фразами.
    Чтобы не пришлось повторяться, сделаем так, чтобы для добавления новой команды достаточно было
    написать функцию и задекорировать её. Пример будет ниже.
    class VoiceCommandList: #класс управляет списком голосовых команд
      def __init__(self):
        self.actions = list() #список известных классу команд
      
      def on(self, condition): #декоратор, подписывает функцию на голосовую команду
        if isinstance(condition, str):
          condition = condition.lower()
          predicate = lambda text: condition in text #если условие - строка, она должна входить в текст
        elif callable(condition):
          predicate = condition #если условие - функция, она должна вернуть истину для текста
        else: #ни то ни другое - ошибка
          raise TypeError('Condition must be either string or function!')
        #эта функция - декоратор, она будет помечать функции-команды.
        #она описана именно внутри метода on()!
        def decorator(command_func):
          self.actions.append( (predicate, command_func) )
          return command_func
        return decorator
      
      def run_command(self, text): #функция получает строку, определяет и вызывает соотв. её команду
        text = text.lower()
        for predicate, command in self.actions:
          if predicate(text): #текст соответствует известной команде
            try:
              response = command(text) #пытаемся выполнить команду
              if response is None: #если команда не сообщила нам, что ответить
                response = "Команда выполнена" 
            except Exception as err: #не получилось
              response = "Ошибка при выполнении команды"
              print(err)
            if response: #если есть какой-то ответ
              say_message(response) #то произносим его
            break #выполняем не более одной команды за раз
        else: #этот else относится к for, не к if! Если не нашли ни одной похожей команды
          say_message("Неизвестная команда")

    А теперь примеры использования класса. Мы можем добавлять команды, описав функции. Нет нужды править длинную простыню if-elif-else
    vcl = VoiceCommandList() #экземпляр списка команд
    
    #опишем реакцию на простую строку типа "привет".
    @vcl.on('привет') #если передаём в декоратор строку - это означает, что строка должна содержаться в тексте
    def hello(text): #функция-команда принимает аргумент - сказанный пользователем текст
      return "Доброе время суток" #она должна вернуть текст, который скажет бот
    
    @vcl.on('открой оперу')
    def start_opera(text):
      operaopen() #выполняем действие
      return "Браузер запущен" #возвращаем текст ответа
    
    @vcl.on('напиши')
    def write_message(text):
      print(text)
      #если ничего не вернём, будет отклик по умолчанию
    
    @vcl.on(lambda text: ('влево' in text) and ('вправо' in text)) #можно делать сложные условия!
    def what(text):
      return "Так влево или вправо?"

    Ну а чтобы скормить боту распознанную строку:
    vcl.run_command('привет') #сюда можно подставить выхлоп распознавателя речи
    Ответ написан
    8 комментариев
  • Как преодолевается потеря мотивации в ИТ?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    - Жениться
    - Взять ипотеку
    - Родить парочку детей
    (вовсе не обязательно в такой последовательности :) )
    После всего оного мотивации будет - выше крыши! :)
    Ответ написан
  • Где учится созданию ботов на python?

    Zoominger
    @Zoominger Куратор тега Python
    System Integrator
    Нигде. Читаете книжку по Пистону, читаете модуль для Telegram. Пишете.
    Ответ написан
    Комментировать
  • Нужно ли 40-летнему джуну уметь максимально много?

    @Neonoviiwolf
    Flutter developer
    До скок не учи, без опыта работы вы всегда будете джуном. Да и как ток спросят чуть сложнее основ, вы сразу завалитесь по любой выбранной вами теме
    Ответ написан
    Комментировать
  • Почему вызов функции вызывает ошибку?

    Vindicar
    @Vindicar
    RTFM!
    > on_press = BoxOneP()
    Ты присваиваешь параметр on_press результат вызова функции BoxOneP. Которая возвращает None.

    Может, всё-таки имелось ввиду просто "on_press=BoxOneP"?

    И да, что значит "ломает приложение"? Текст ошибки со стектрейсом с студию.
    Ответ написан
    2 комментария
  • Почему не работает цикл?

    @dmshar
    А что вы хотели сказать фразой (y*y < a) <= (y <= 8) ?? Тут слева проверяется менше-ли квадрат y значения а , и значение в скобках принимает ЛОГИЧЕСКОЕ значение True или False. Аналогично проверяется левая скобка. В результате получается загадочное выражение типа True<=False. Что-бы это означало?
    А со второй скобкой - еще интереснее. Результат аналогичного выражения - по итогу ЛОГИЧЕСКОЕ значение - сравнивается с 0, по сути со значением False. Это для чего?
    Ответ написан
    2 комментария
  • Почему код бота не работает на сервере?

    Vindicar
    @Vindicar
    RTFM!
    > ImageFont.truetype('arial.ttf', size=20)
    А файл со шрифтом присутствует и доступен боту?
    > f'{path}\\user_card.png'
    os.path.join() и pathlib для кого придумали? Под линуксом разделитель каталогов не \ а /.
    Ответ написан
    5 комментариев
  • Почему request.user равен AnonymousUser?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Если посмотрите у себя в settings.MIDDLEWARE,
    то увидите к примеру django.contrib.sessions.middleware.SessionMiddleware
    которая берет из кук сессионную куку, и добавляет данные сессии к запросу:

    session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME)
            request.session = self.SessionStore(session_key)


    а затем там же django.contrib.auth.middleware.AuthenticationMiddleware, в котором если покопаться - то можно найти как получается пользователь из сессии, которую мы добавили к запросу в предыдущем middleware. Я просто не буду перечислять все шаги - иначе это будет тема отдельного длинного поста.
    Просто походите по MIDDLEWARE и AUTHENTICATION_BACKENDS - да посмотрите что откуда берется. У вас может быть некий свой набор...
    Поэтому если у вас в куке не прилетел параметр сессионной куки - тупо в request.COOKIES нет параметра settings.SESSION_COOKIE_NAME который по дефолту называется sessionid- то и пользователю взяться неоткуда.
    Поэтому копайте точнее что там вам прилетает. Если возможности сохранять сессионную куку нет - то можно к примеру в урл редиректа добавлять некий хеш, по которому можно получать пользователя, написав свой middleware если требуется...
    Ответ написан
    5 комментариев
  • Выбор языка для развития в ИБ из админа?

    Protos
    @Protos
    Спрашивай - отвечу
    В ИБ раз вам интересно программирование можно автоматизировать:
    - реакцию на инциденты - автоматизировать ответные действия системы защиты на инцидент (передать IP на блокировку, передать хэш на блокировку), автоматизировать развертывание средств защиты и их настроек - SOAR.
    - взаимодействие компонентов SOC - нужно уметь получить индикатор компрометации, передать его в SIEM, по найденным событиям кинуть запросы в разные системы, чтобы собрать данных и обогатить ими сам инцидент
    - автоматизация аудита- сбор и обработка данных: конфиги сетевых устройств, серверов, параметры настроек и политик, дальнейшая сверка их со стандартом конфигурации и генерация вердикта (требование выполняется или есть нарушение), с выдачей рекомендации по исправлению
    - автоматизация управление доступом - ты запросил доступ, а прога должна сходить в целевую систему и выдать доступ что был согласован, попутно проверить, а нет ли несогласованных доступов и пересечений ролей - IDM
    - автоматизация согласования доступов за безопасника
    - и т.д.
    Я думаю опубликуете вакансию и в миг найдете работу.
    Ответ написан
    Комментировать
  • Как сделать подключение python программы к серверу?

    Vindicar
    @Vindicar
    RTFM!
    Ответ написан
    Комментировать
  • Как стать веб-программистом, а не кодировщиком?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Практический опыт и постоянное самообразование.
    Ответ написан
    3 комментария