• Что происходит на рынке труда в айти?

    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
    //COPY01 EXEC PGM=IEBGENER
    - Жениться
    - Взять ипотеку
    - Родить парочку детей
    (вовсе не обязательно в такой последовательности :) )
    После всего оного мотивации будет - выше крыши! :)
    Ответ написан
  • Где учится созданию ботов на 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 комментария
  • Как скомпилировать jar в exe без возможности открыть файл как архив?

    vabka
    @vabka
    Токсичный шарпист
    graalvm?
    https://www.graalvm.org/
    Конечно, всё равно при глубоком рассмотрении можно будет понять, что приложение сделано на жаве, но декомпилировать будет сложно
    Ответ написан
    2 комментария
  • Как получить образование самостоятельно?

    @mkone112
    Начинающий питонист.
    Как получить образование самостоятельно?

    Его только так и получают.
    Кратко: открываешь книгу, читаешь, закрываешь книгу.
    Мне 24 года. Я - человек, по своей глупости не получивший образование.

    Не волнуйся - почти все люди такие.
    Через длительное время и обдумывание личного положения и ситуации в целом, пришёл конечно же к тому, что образование мне жизненно важно и я просто на просто чувствую себя плохо, постоянно понимая что я про*бался...

    Смотри-ка - ты уже лучше большинства!
    Я, конечно же взялся за обучение, но всё время прихожу к тому, что ничего не выходит.

    И сколько лет ты на это потратил? Сколько тысяч часов ты например учил математику?
    хочу сразу сказать, считаю что, не умею учиться, потому как собственно этого толком целенаправленно не делал, от того и такие вопросы. Хотелось бы просто это изменить

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

    Как-бы классика не изменилась - книги актуальные 20 лет назад, даже 50 лет - все еще актуальны, по крайней мере в сфере школьной программы.
    Советы простые - возьми учебник по математике - и читай пока не дойдешь до конца. Главное читай, а не листай. Переворачивая страницу ты должен быть полностью уверен что понял все что на ней написано. Сначала будет идти хреново - не факт что ты сможешь осиливать даже одну страницу в день, но постепенно разгонишься. Веди конспекты. Когда мозги слегка разомнутся - можешь задуматься о найме репетитора. Физику начинай трогать только после ознакомления с математикой, до этого - забудь про ее существование.
    P.S. рекомендую mathprofi.ru - там все разжевано для совсем тупых, хорошего учебника вообще не заменит но для въезжания - мне в свое время помогло.
    Ответ написан
    3 комментария
  • Нужно ли знать +- ассемблер, чтобы изучать C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Всем программистам стоит пройти хотя бы ознакомительный курс ассемблера. Особенно тем, кто пишет на отсносительно близких к железу языках, вроде Си.

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

    Adamos
    @Adamos
    В айтишном резюме курсы - это не плюс, а минус: соискатель не умеет учиться самостоятельно.
    А трудоустройство после IT-курсов примерно так же вероятно, как прибыль после форекс-тренинга.
    Ответ написан
    3 комментария
  • С чего начать изучать C питонисту?

    vabka
    @vabka
    Токсичный шарпист
    Лучше всё-таки взять книгу, где всё объясняется с нуля, тк принципиальных различий между питоном и Си целая гора.
    Очевидные или неинтересные моменты всегда можно пропустить.
    Ответ написан
    1 комментарий