• Как найти работу со сложными и комплексными проектами если нету опыта работы в таких проектах?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    У большинства программистов первое рабочее место - это унылая маленькая компания с примитивными технологиями и простыми задачами. Следующая работа немного лучше. Следующая ещё лучше. И так пока не заберëшься на максимально доступную тебе высоту. Потолок и скорость развития у всех разные, зависят в основном от того, на сколько сильно стараешься. Некоторые так никогда и не выбираются из эникейщиков и крутильщиков cms'ок. Немало тех, кто выбирается лет десять.
    Ответ написан
    Комментировать
  • Большая очередь Exchange server 2016. Как исправить?

    @NortheR73
    системный инженер
    Ваш Exchange пытается ответить отправителю-спамеру, что получателя не существует - вот и шлет NDR.
    Варианты:
    1. прикрутить хотя бы штатный анти-спам Exchange (пример)
    2. Поставить на Exchange дополнительное ПО, которое будет выполнять антиспам/антивирус задачи (например, Kaspersky Security for Exchange)
    3. поставить перед Exchange дополнительный MTA (postfix, KSMG и т.д.), который будет выполнять антиспам/антивирус задачи
    Ответ написан
    Комментировать
  • Как сделать так, чтобы математический знак + не был функцией?

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


    чтобы переопределить унарный + нужно написать
    MyClass operator+()
    {
      // выполнить действия с this
      return MyClass(value);
    }


    На сколько я знаю твой код (nujno==+) никак нельзя сделать валидным (препроцессор кстати тоже не позволит переопределить поведение +), да и == - бинарный оператор (нет варианта с его одинарным использованием)
    Ответ написан
    Комментировать
  • Как находить лучший способ решение задачи на олимпиадном программировании?

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

    А так - на до сначала построить математическую модель задачи. Понять, на что эта модель похожа. Может, тут граф нарисовать можно? Какие алгоритмы на графы вы вообще знаете? Применимы ли они тут? Или это строка. Какие есть алгоритмы на строки? Смотрите еще ограничения. По ним обчно понятно, что тут нужно что-то за O(n), или за O(n log n) написать. Множество применымых алгоритмов еще больше уменьшается.

    В задачах на оптимальность чего-то помогает рассуждение "рассмотрим ответ. Какие у него можно заметить свойства. Можно ли какой-то ответ немного поменять, не ухудшая его?" Так вы получите какое-то свойство, которое можно уже применять для построения ответа. Например в задачах на жадность так можно понять, что надо отсрортировать что-то.

    Потом, очень частая тема - ДП. Попробуйте параметризировать задачу. Свести ее к подзадачам. Формализуйте ДП (считаем вот такую вот функцию от вот этих вот параметров вот с таким вот физическим смыслом).
    Ответ написан
    Комментировать
  • Как сделать так чтобы бот отвечал на определённое сообщение пользователя?

    fenrir1121
    @fenrir1121
    Начни с документации
    Любой учебник открываете, смотрите раздел условный оператор.
    Конструкция, которую вы написали эквивалентна выражению
    if message.text == 'Профиль' or True, что всегда будет истиной.

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

    @Xiran
    Или так:

    void drawObject(sf::Drawable &out) {
    	out = /* Возвращаемое значение */;
    }
    
    void test() {
    	sf::CircleShape circleShape { /* ... */ };
    	
    	drawObject(circleShape); // circleShape = drawObject();
    	
    	// ...
    }


    Однако ссылку/указатель на локальный (объявленный в функции) объект возвращать нельзя,
    ибо стек функции (там хранятся такие объекты) будет очищен после вызова функции в соответствии
    с конвенцией, которую использует функция (обычно __cdecl, в вызовах нестатических функций-членов - __thiscall).
    Ответ написан
    Комментировать
  • Как вернуть до пяти типов из одной функции?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Надо возвращать указатель на базлвый класс. Ну и, один из 5 экземпляров надо создавать через new.
    Ответ написан
    8 комментариев
  • Данные из буфера не обновляются, что сделать?

    Vindicar
    @Vindicar
    RTFM!
    Сейчас код сначала получает текст, содержащий координаты точек из буфера обмена, потом разбирает и проверяет каждую строку и переспрашивает нужна ли она, а потом уже входит в цикл while True, где он их прокликивает и ожидает нажатия w или q.
    Нужно всю ту часть, где определяются координаты, а также сам код прокликивания внести внутрь ветки w.

    Как именно - спрашивай у того, кто написал код.
    Ответ написан
    Комментировать
  • Как сделать проверку роли у пользователя и выдачи второй роли, если первая роль есть?

    Vindicar
    @Vindicar
    RTFM!
    Программа не работает как именно? Отсутствие реакции? Сообщение об ошибке? Комп встаёт со стола и идёт искать Сару Коннор?
    Далее, ты проверил, on_guild_update() вообще вызывается? Хотя бы временный print() в начало вставь.
    Потому что если почитать документацию, там английским по белому написано:
    This requires Intents.guilds to be enabled.

    Какие интенты ты задаёшь боту?

    Ещё важнее: а причём тут вообще on_guild_update()? Это событие отрабатывает, когда изменяются настройки сервера, а из твоего описания следует, что тебя интересуют роли участников. За это отвечает on_member_update().

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

    Vindicar
    @Vindicar
    RTFM!
    Дополню ответ выше: для print() поведение можно настроить параметром sep. Например:
    print(1, 2, 3)  # 1 2 3
    print(1, 2, 3, sep='')  # 123
    print(1, 2, 3, sep=', ')  # 1, 2, 3

    А еще есть параметр end:
    print(1, 2, 3)  # 1 2 3 с переводом на новую строку
    print(1, 2, 3, end='')  # 1 2 3 без перевода на новую строку
    print(1, 2, 3, end=':')  # 1 2 3: без перевода на новую строку

    Так что строку, выводимую print(*args), можно описать так:
    sep.join(str(arg) for arg in args) + end
    Ответ написан
    1 комментарий
  • Как написать нейросеть способную генерировать текст?

    @rPman
    Ты как будто отсутствовал последний год и пропустил бум ChatGPT. Этот алгоритм нейронных сетей (Generative Pre-trained Transformer) был разработан в 2017-ом 'гуглом' и 'доведен до ума' публично в OpenAI (их chatgpt4 сейчас самый продвинутый универсальный генератор текста, проявляющий признаки интеллекта).

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

    На текущий момент самая крутая из доступных нейронных сетей (доступные предобученные веса сети), которую можно доучивать под свою задачу или даже пользоваться как есть, - это фейсбуковская llama2 (бесплатная, с очень либеральной лицензией, позволяющая коммерческое использование), ее можно запускать на процессоре на десктопной машине с меньше 64гб ram (скорость от 1токен в секунду, слово это 1-7 токенов) с помощью llama.cpp или на машине с GPU, суммарной емкостью vram от 80Gb (я не нашел точные минимальные требования, квантизация 8бит доступна в штатном коде llama а 4-битную тоже можно но я не уверен какие проекты уже поддерживают llama2).

    Так как речь идет не о просто генераторе текста, а о генераторе, который понимает обычную речь (собственно использование gpt и состоит в исследовании способов составления запросов с целью получить наилучший желаемый результат) как инструкции к действию, твоя задача может быть решена вообще без программирования.

    p.s. самостоятельная разработка (сбор обучающих данных и обучение) с нуля подобного проекта невероятно дорогая, слабые версии имеют оценку стоимости обучения (при наличии специалистов, которые уже стали на вес золота) в десятки миллионов баксов только на оборудование (тоже дефицитное, так как используется в основном кластеры на основе оборудования nvidia, которые монополисты в ИИ и рисуют 10х стоимость не моргнув глазом а еще искусственно не расширяют производство чипов при наличии высокого спроса)

    Но если взять уже обученную сетку (веса) собрать небольшой датасет текстов под свою задачу, то тюнинг будет достаточно дешевым, вот еще со старой llama так делали
    Ответ написан
    1 комментарий
  • Что быстрее SQL или Javascript?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мужские мужчины уже ответили на основной вопрос.

    Я добавлю что чем больше данных мы обрабатываем тем дороже становиться цена передчи
    информации из места где оно храниться в блок вычислений. В концепции трехзвенки которая
    описана RDS(Postgres)/NodeJS/Python/Web удобнее всего вычилсять прямо в Postgres. Поскольку
    данные рядом и сетевых расходов на передачу нет. Если Postgres по каким-то причинам не может
    вычислять или не владеет API то в этом случае мы с помощью курсора (SELECT) передаем
    нужный датасет на клиента (в данном случае это Python/Node) и там вычисляем. При этом
    мы должны понимать что это займет время и сетевой канал да еще и результат вычислений
    тоже надо отослать обратно. Тоесть данные будут бегать как рейсовый автобус туда-сюда.

    Для однозначного решения что хорошо и что плохо - надо ставить эскперимент. Но предварительно
    мне и присуствующим уже очевидно что лучше всего вычислять прямо в хранимых процедурах
    Postgres. Единственным доводом против может быть несовершенство языка PL/pgSQL
    но я-бы этот факт тоже проверил. Для реляционных задач его обычно хватало.

    Данная проблема (рейсовый автобус для данных) еще более сильно выражена в BigData. Там стараются
    дизайнить систему так что данные - write-only и после загрузки в хранилище (ETL/ELT) больше никогда
    не изменяются и лежат неподвижно (т.н. Bronze Level информации). И джобы которые бегают
    по ним - запускаются в вычислительном кластере физически рядом с дисковым хранилищем.

    Вот. А на клиента отдаются обычно сводные отчеты и кака-то аналитика. Это то что в 100-10000 раз меньше
    по размеру обычно чем основные данные.
    Ответ написан
    Комментировать
  • Как исправить код? Что я делаю не так?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Всё логично, вы нажали Ctrl+C на клавиатуре, операционная система отправила программе сигнал interrupt, интерпретатор выбросил исключение KeyboardInterrupt - это нормальное поведение. Если не хотите вывода трейсбэка, добавьте обработчик KeyboardInterrupt.
    Ответ написан
    Комментировать
  • Upwork всё, куда переходить?

    @pro100saniok
    на митинг против Путина и войны в Украине!
    Ответ написан
    1 комментарий
  • Часто ли телеграм боты подвергаются атакам и как вы этого избегаете?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    ЭЭЭ видимо так
    https://n0a.pw/telegram-get-remote-ip/
    Ответ написан
    Комментировать
  • Текстура уничтожается?

    У вас тут переменная sf::Texture texture на стеке создается. Соответственно, она уничтожается при выходе за свои границы видимости. Вам надо создавать переменную в куче через new, а затем удалять ее через delete. Ну или использовать умные указатели, навроде std::shared_ptr
    Ответ написан
    1 комментарий
  • Vector не обновляется?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    (Исходя из обсуждения в комментариях)
    Возможно, проблема с параллельным кодом. Какой-то код где-то изменяет вектор. Если не очевидно, где оно все перезаписывается, то помните, что добавление элементов вектор может вызвать увеличение внутреннего буфера и копирование всех элементов. Поэтому даже какой-то код, просто добавляющий новые элементы в вектор, может вызвать наблюдаемый эффект необъяснимой перезаписи объекта в векторе на предыдущее значение. Вообще, надо бы защищать вектор от параллельного доступа разными потоками всякими мютексами и критическими секциями. Ну нет, так поменяйте его хотя бы на list. тогда добавление новых элементов и изменение значений где-то не будут вызывать data race. Но тогда надо алгоритмы менять, ибо обращение по индексу - долгая операция.
    Ответ написан
    Комментировать
  • Как вы боритесь с циклическими импортами в Python?

    Vindicar
    @Vindicar
    RTFM!
    Если речь идёт об импорте только ради type hinting, то typing.TYPE_CHEKING в помощь.
    Ответ написан
    Комментировать
  • Error LNK2019: ссылка на неразрешенный внешний символ public: void __cdecl Window::create(void)?

    @res2001
    Developer, ex-admin
    но window.cpp задумывается как часть библиотеки которую можно потом установить

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