Задать вопрос
  • Заражение вирусами в ОЧЕНЬ большой сети?

    saboteur_kiev
    @saboteur_kiev Куратор тега Информационная безопасность
    software engineer
    Какая бы не была организация, не верю что ВСЕМ компам нужно связываться со ВСЕМИ компами.
    Ставите адекватные маршрутизаторы, разбиваете сеть на VLAN-ы, лечите их отдельно.

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

    maaGames
    @maaGames
    Погроммирую программы
    Можно. Но при условии, что вручную будут инстанцированы шаблоны для каждого из используемых типов.
    Ответ написан
    Комментировать
  • Что должен знать Senior C++ Developer?

    @tangro
    Опыт нужен. Хотя бы лет 5. В общем, сеньйор даже не столько должен хорошо уметь писать код, сколько видеть риски и принимать решения, которые точно не повредят проекту. Я думаю, С++ программера можно считать сеньйором, когда он способен принимать решения типа:
    1. Выбор IDE, компилятора, версии языка.
    2. Написать с нуля или взять готовое.
    3. Юзать STL\Boost\MFC\ATL\Qt или нет. Если да — что лучше в данном случае и почему.
    4. Стоит отрефакторить код или нет.
    5. Написать самому\отдать Juniory
    и т.д.

    Ах да, еще важный признак «сеньйорства» — осознание того факта, что для программиста на С++ не должно быть невозможных вещей. Какой-нибудь там Java или .NET программер может сказать что-то типа «это ограничения платформы.», «программа тут не может кушать меньше вот такого количества памяти», «это перехватить нельзя — код в недрах ОС\платформы». C++ сеньйор должен быть способен докопаться, разобрать и отладить всё — вплоть до системных библиотек, драйверов и BIOSа.
    Ответ написан
    3 комментария
  • Переопределение типа class, в чём проблема?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Или это VS гребет?

    Очень вряд ли)

    1. Не нужно инклудить файлы исходного кода (*.cpp). Объединением объектных файлов в один исполняемый занимается линкер, список файлов для него у вас в *.cproj-файле и так есть.
    2. Содержимое хэдеров нужно оборачивать в include guards или в начале писать директиву компилятора #pragma once (это понимают все популярные современные компиляторы). Такое действие не даст несколько раз заинклудить один и тот же хэдер в одной единице трансляции.
    Ответ написан
    5 комментариев
  • Какие архитектурные подходы выбрать для разработки клиент-серверной игры?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    1) Разделите мир на "чанки", т.е. просто на квадраты конкретного размера. В случае 2д это будет очень удобно.
    2) Сервер обрабатывает только те чанки в которых находятся игроки, в случае отсутсвия игрока в нем то он сейвится на винт\бд. На клиенте чанки так же выгружается из памяти если он ушел в новый чанк.
    3) Понадобится система пресказания какой чанк надо подгрузить. Скажем зная направления игрока предполагаем что он попадет в такойто то чанк а значит грузим его заранее.
    4) Игроку при приближении к чанку отправляй его полное состояние а уже после только то что в нем изменяется.
    5) Часть вычислений для линейных(предсказуемых) объектов можно синхронизировать только периодически. К примеру летящий астероид логически обсчитывается и на клиенте и на сервере но только в случае событий(столкновение к примеру) идет синхронизация между клиент-сервером.

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

    @GreatRash
    Вот тут, можно нажать CTRL+U, промотать в самый низ и почитать скрипты.
    Ответ написан
    1 комментарий
  • Стоит ли изучать паттерны проектирования, если ты всю жизнь будешь писать на фреймворках?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Попишите на фреймворках, и не беспокойтесь пока о паттернах. Когда появится необходимость понимания паттернов - разберетесь в паттернах. А такая необходимость появится как только вы захотите изучить фреймворк изнутри. А вы захотите это сделать когда упретесь в ограничения фреймворка. А изучать что-то без практической необходимости - мука. Зачем мучать себя заранее.
    Ответ написан
    4 комментария
  • Сколько примерно "человеко-часов" ушло на разработку GTA 5?

    @ZZahar
    Если решил проблему - нажми "отметить решением"
    1.Заходим на сайт вакансий, смотрим сколько времени работает каждый сотрудник в резюме, т.е его время которое он работает, его профиль(UI, Artist, C++ programer, etc).
    Допустим что у всех одинаковый рабочий день с 10 до 17, т.е 7 часов и все работают по 5 дней в неделю.(Обозначим время работы как как WorkersTime, а дни Days).
    2. Гуглим информацию в интернете про количество сотрудников в компании(например на Хабре такое есть) и например их 1000.(Обозначим количество как workers).
    3. Мы должны понимать, что все люди занимаются одним делом. Например: Sony делает и камеры, и телевизоры, и телефоны. То есть тут мы не знаем кто за что отвечает и посчитать правильно не получится, т.к не 100% гарантии что все сотрудники делают и камеры, и телефоны, и телевизоры вместе, поэтому компания должна заниматься только одним делом. В нашем случае только делать игры(менеджеров, маркетологов и других не программистов считаем).
    4. Ищем официальную информацию сколько делалась игра, например она делалась год (обозначим TimeForCreateGames).
    5. Теперь считаем: WorkersTime * Days * (TimeForCreateGames / 7) * Workers = 5 * 7 * (365 / 7) * 1000 = 35,000 * (365 / 7) = 1,820,000 часов. Пусть погрешность будет 500,00 часов на просмотр Тостера, Хабра, etc и другие нужды.(Грубо говоря 48 часа для одного человека)
    6.!!!
    7.PROFIT
    P.S. В реальности дни, часы, рабочие могут отличаться, но суть вы поняли.
    P.S.S. Комментарий не предоставляет формулу на все случаи жизни.
    U.P.D Забыл вычесть перерывы, нуда ладно пусть рабочий день будет 8 часов, а я уже вычел в формуле xD
    Ответ написан
    Комментировать
  • Почему данный фрагмент выдает ошибку в Visual Studio?

    @MiiNiPaa
    Всё верно. Размер массива с автоматическим временем жизни должен быть известен на этапе компиляции. Clion автоматически подключает нестандартные расширения, которые позволяют VLA (по аналогии с С99). Лечится -pedantic или -pedantic-errors в CLion.
    Ответ написан
    4 комментария
  • Как попасть в game-dev и с чего начать карьеру в этой области если ты веб-разработчик?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Ответы не ищи @ Вопросы пиши
    Куда податься вчерашнему студенту-недопрограммисту, желающему попасть в геймдев?
    Хочу попасть в игровую индустрию. В какую магистратуру поступать?
    Как попасть в game dev?
    Что нужно, чтобы стать разработчиком игр?
    С чего начать путь в Game Dev?

    Самый простой способ продемонстрировать свои способности работодателю - сделать игру. Выбираете любую классическую ретро-игру попроще (змейка, тетрис, арканоид), садитесь и делаете. Когда закончите с геймплеем, сделайте главное меню, выход по кнопке Esc, туториал или хотя бы инструкции - короче говоря, все те мелочи, которые делают игру игрой, а не прототипом. Потом берёте и выкладываете исходники на GitHub, а сборку на GitHub Pages или itch.io. Если игра мобильная, то можете разориться на лицензию разработчика и подзасрать магазин своей поделкой, тут уж как сами хотите.

    Когда всё это сделаете, можете подавать резюме, этого должно быть достаточно на позицию джуна. Будет плюсом, разумеется, если вы сделаете не одну игру, а несколько, желательно разных жанров. Они не обязательно все должны быть магазинного качества, тут уже скорее важно показать, что вы умеете делать игры в общем, а не только тетрисы. Для проверки своих навыков очень рекомендую поучаствовать в геймджемах (Ludum Dare, itch.io), они хорошо учат собранности и вырезанию лишних фичей.

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Комментировать
  • Удаление объекта в C++ без создания его через new, или можно ли удалять объекты взятием адреса (&)?

    @Mercury13
    Программист на «си с крестами» и не только
    > Объект BaseClassObj будет удален только по завершению программы.
    BaseClass baseClassObj;
    Здесь создаётся объект на стеке. Имя — это просто имя объекта. Никаких указателей здесь нет. Как только мы покинем блок (любым образом: штатно выйти, goto, break, выброс аварии — кроме «жёсткого» выхода из программы функциями типа exit), у объекта автоматически исполнится деструктор и прямой вызов не нужен. Блок, то есть подпрограмму BaseClassPresentation.

    BaseClass *BaseClassObjPtr = new BaseClass(2);
    Здесь BaseClassObjPtr это имя указателя (а не указатель на указатель). Объект создаётся в динамической памяти, и его придётся уничтожать вручную. Многое в Си++11 сделали для того, чтобы подобные объекты уничтожались не вручную, а всё теми же автодеструкторами.
    std::unique_ptr<BaseClass> BaseClassObjUp = new BaseClass(2);
    Это уже маленький объект со своим деструктором. А в деструкторе находится delete, и он сработает, как только программа выйдет из своего блока.

    То, что вы хотите, иногда бывает нужно, и я вижу этому две причины.
    1. Объект управляет какими-то сложными и важными ресурсами: большим количеством памяти, файлом, мьютексом… И этот важный ресурс бывает нужно освободить раньше, чем наступит деструктор. Например, у любого файлового потока есть функция close() — она закрывает файл.
    2. У нас сложное и хитрое управление памятью, когда приходится использовать placement new и прямой вызов деструктора. Скажу честно, не использовал никогда. Как и 90% программистов на Си++.
    Ответ написан
    9 комментариев
  • Удаление объекта в C++ без создания его через new, или можно ли удалять объекты взятием адреса (&)?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    BaseClass BaseClassObj;
    Объект создаётся на стеке и будет уничтожен(просто сдвинут указатель на вершину стека по факту) при выходе из области видимости(функции), попытки удалить его через delete будут приводить к UB, т.е. сказать, что произойдёт нельзя, да и незачем.
    Ответ написан
    1 комментарий
  • Как понять, что учить?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Начни делать интересный тебе проект и учи всё, что понадобится по мере его создания.
    Ответ написан
    Комментировать
  • Как записать 256 бит в массив из 16 слов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    for (int i = 0; i < 255; i++) {
      arr[i / 16] = (arr[i / 16] & ~(1 << (i % 16))) | (func(i) << (i % 16));
    }
    Ответ написан
    Комментировать
  • Как реагировать на письмо, которое пришло мобильному разработчику, от некой компании FMFG?

    Astrohas
    @Astrohas
    Python/Django Developer
    Вот официальный ответ от команды разработчиков Google:
    Здравствуй,
    Благодарим за обращение в Google Play.
    Если вы получили подозрительное сообщение с просьбой предоставить личную информацию, такую ​​как пароли или номера кредитных карт, или сообщение, в котором утверждается, что вы нарушаете новый патент EP2378800, вы можете сообщить это сообщение как фишинг. Если вы получили электронное письмо в своей учетной записи Gmail, вы можете выполнить следующие инструкции:
    Sign in to Gmail.
    Open the message you'd like to report.
    At the top-right corner of the message, click the down arrow next to the "Reply" button.
    Select Report Phishing.
    Если у вас нет учетной записи Gmail, но вы получили фишинговое письмо, отправленное пользователем Gmail, вы можете сообщить об этом, используя эту форму. https://support.google.com/mail/contact/abuse
    Вы также можете сообщить о фишинговом веб-сайте (веб-сайт, предназначенный для просмотра другой страницы в попытке украсть личную информацию), используя эту форму. https://www.google.com/safebrowsing/report_phish/
    Когда вы сообщаете сообщение как фишинг, Google исследует сообщение, чтобы расследовать эту проблему.
    Пожалуйста, дайте мне знать, если у вас есть другие вопросы или проблемы.
    Ответ написан
    Комментировать
  • Как реагировать на письмо, которое пришло мобильному разработчику, от некой компании FMFG?

    Домен notificationcommunicationpatent.com зарегистрирован в июне этого года, сайт notificationcommunicationpatent.com безграмотно оформлен включая копирайты, это не может быть сайтом юридической компании.

    Содержание патента не имеет никакого отношения к описанию на сайте. При этом патент скорей всего не имеет к вам никакого отношения к вашему приложению и у него совсем другой представитель:

    Reiser & Partner Patentanwälte mbB
    Weinheimer Straße 102
    69469 Weinheim / DE
    Ответ написан
    Комментировать