Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
dnovikoff

Дмитрий

  • 11
    вклад
  • 1
    вопрос
  • 21
    ответ
  • 19%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Почему float округляет?

    dnovikoff
    Дмитрий @dnovikoff
    float(informatics+algorithmization+algorithm)/3;

    В вашем примере сначала вычисляется int (округляется), а потом переводится в float.
    Нужно перед делением перевести сумму в float
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как организовать вложенные сообщения в protobuf?

    dnovikoff
    Дмитрий @dnovikoff
    Использовать google.protobuf.Any, если тип не известен
    или использовать oneof, если типов ограниченное количество и они известны
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Стоит ли браться полному новичку за язык Go?

    dnovikoff
    Дмитрий @dnovikoff
    Go точно хорошо осваивается теми, кто знаком с другими языками. Программист на Java или C++ может начать писать код на Go за неделю. Стоит ли брать его как первый язык - это вопрос. Столкнувшись с другими языками вы можете начать искать аналогии из Го, которых в других языках нет. Впрочем как один из первых языков - кажется вполне. Попробуйте. Первичное ознакомление больше недели занять не должно.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему не работает оператор сравнения?

    dnovikoff
    Дмитрий @dnovikoff
    У вас не инициализируется члены класса в конструкторе. Нужно

    Points:Points():x(0), y(0) {
    }

    Points:Points(int x, int y):x(x), y(y) {
    }
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему появилась мода на новый синтаксис?

    dnovikoff
    Дмитрий @dnovikoff
    Вот пример из документации Го:
    blog.golang.org/gos-declaration-syntax

    У них две главных причины:
    1. Удобство чтения
    Не "Типа T переменная A", а "Переменная A типа T"
    2. Удобство описания указателей на функции
    Cишный "int (*T)(int)" против нового "T func(int)int"

    Лично на мой вкус это к реальным проблемам программирования отношения никакого не имеет и 90% объяснения почему "так лучше" высосаны из пальца. В каком порядке - без разницы.
    Единственный здравый аргумент - это то, что некоторые аспекты парсинга кода компилятором могут оказаться проще благодаря такому подходу.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • В чем разница между [тип] const * и const [тип] const *?

    dnovikoff
    Дмитрий @dnovikoff
    Очень странный пример.
    Между const [type] и [type] const вообще нет никакой разницы - оба раза const применяется к типу
    const [type] const - это двойное применение const к типу, что вызовет ошибку компиляции.

    В случае если const стоит после звездочки, то оператор const применяется к указателю
    То есть [type] * const

    Так же возможны равнозанчные варианты
    [type] const * const
    и
    const [type] * const
    где const применен и к типу и к указателю

    Говоря простыми словами:
    1. Если const относится к типу (до звездочки), то данные по указателю менять нельзя
    2. Если const относится к указателю (после звездочки), то нельзя менять менять сам указатель
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Можно ли заменить if в данном случае?

    dnovikoff
    Дмитрий @dnovikoff
    Тернарный оператор может быть применен, если выражения имеют одинаковый результирующий тип.

    Я не вижу какого типа у вас z, но предположу, что не const char*
    В случае, если это const char*, то условие как минимум странное.

    Для данного примера тернарный оператор применен быть не может.

    Для такого примера его применить можно:
    cout << (z < 0 ? "Error" : "Ok") << endl;
    Не забывайте, что оператор << имеет больший приоритет, чем оператор меньше

    Update:
    Коллега в предидущем ответе предложил достаточно оригинальный способ
    ((z<0)?(std::cout << "Error"):(std::cout << z)) << std::endl;

    Работать это будет, т.к. у обоих выражений будет одинаковый результирующий тип - std::ostream
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Не удаляет int в векторе через итератор, как исправить?

    dnovikoff
    Дмитрий @dnovikoff
    Ну прежде всего erase возвращает итератор на елемент, следующий за удаленным
    it = hmn->friends.erase(it);
    Вариант с --it не валиден.

    Во вторых лаконичнее будет воспользоваться erase-remove идиомой https://en.wikipedia.org/wiki/Erase–remove_idiom
    там есть пример на ваш случай
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Кто знает игры, которые использую только черно-белые цвета в дизайне?

    dnovikoff
    Дмитрий @dnovikoff
    Canabalt
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Множственное наследование?

    dnovikoff
    Дмитрий @dnovikoff
    Ответ - оба метода.
    Обращаться к ним можно будет как Base1::foo() и Base2::foo()

    При обращении возникнет ошибка неоднозначности выбора метода, если не указать явно класс.

    П.С.
    ; ставится после определения класса, а после определения метода ее ставить не нужно.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Каков необходимый минимум знаний для junior'а/стажера (с++) и где найти работу студенту?

    dnovikoff
    Дмитрий @dnovikoff
    Давайте рассуждать логически. Вы студент без опыта работы. Работодатель это знает. Что он может с вас потребовать в качестве знаний? Базовое знание языка, понимание алгоритмов в рамках учебной программы и знание рахных технических дисциплин в рамках курса. Вот и получается, что единственное, чем вы можете заинтересовать работодателя "оставляет желать лучшего". Вы могли бы попробывать заинтересовать работодателя тем, что вы "быстро учитесь", но судя по оценкам и это не так. Так что мой вам совет - проявите усердие в учебе. Если вы хотите стать качественным программистом, то пробелы в математике и других технических дисциплинах все-равно придется зачищать. Но после универа это придется делать в свое свободное время.

    И кстати раньше третьего курса лучше не работать. На третьем курсе вероятность вылететь сильно меньше чем на втором. С другой стороны, если устроится на 4-ом курсе, то к выпуску может не хватить стажа. Выпустится из универа без опыта работы - это вообще немного фейл.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Предподчтительные средства разработки под C++?

    dnovikoff
    Дмитрий @dnovikoff
    В чем разрабатывать - это дело десятое и даже двадацатое. На первом месте знание языка, технологий, наличие опыта в разработке. Если вы все это хорошо знаете, то работодатель не будет вам отказывать из-за того, что вы MS VS не знаете. Надо будет - научитесь - дело наживное. Конечно им бы хотелось, чтобы вы знали как работать с принятыми на их проекте инструментами, но если выбор будет стоят между тем, кто не знает нормально языка, но умеет работать с Visual Studio и тем кто знает язык, то поверьте, выбор будет сделан однозначно в пользу последнего. Конечно работодатели пишут много разных "хотелок", но практика показывает, что среди этих хотелок очень много того, на что они легко готовы забить.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как передать аргумент в поток C++ Thread?

    dnovikoff
    Дмитрий @dnovikoff
    Тред можно создать и так

    std::thread([] {
    // your code here
    });

    И даже так

    std::thread([param] { // захват по значению
    foo(param);
    });
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Многопоточность в C++ vs C# для сети. Что лучше?

    dnovikoff
    Дмитрий @dnovikoff
    Для приложения на С++ с boost::asio 500+ соединений - это вообще ни о чем. Выдержит намного больше.
    Для любителей можно навернуть и на libev/libuv. Но асио хватит.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Проблемы с точностью?

    dnovikoff
    Дмитрий @dnovikoff
    Найдите бухгалтера, который объяснит вам как правильно считать в данной ситуации.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как перекодировать файл .xml из UTF-8 в cp1251 c помощью php?

    dnovikoff
    Дмитрий @dnovikoff
    iconv
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Как создавать фильтры в wireshark?

    dnovikoff
    Дмитрий @dnovikoff
    Я не силен, но может так?
    ip.addr < 192.168.1.1 || ip.addr > 192.168.255.255
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Какие есть методы оптимизации размера программы (исполняемого кода)?

    dnovikoff
    Дмитрий @dnovikoff
    Дополню коллег. Если речь идет про C/C++(судя по тегам так). Смотрите на опции вашего компилятора. Приведу аналогии: компилятор gcc/clang, использует ключ компиляции -Os (s от слова size. То есть оптимизация по размеру). Для студии это будет /O1.

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

    dnovikoff
    Дмитрий @dnovikoff
    Вы получаете ошибку этапа компоновки (linking), а не ошибку этапа компиляции (compile).

    Смысл ошибки в том, что отсутсвует определение конструктора для класса Node<ros_johnny5::servoMsgArray, ros_johnny5::robotState> (да - именно так. с кнонкретными параметрами). Его нет в заголовочном файле и он не прилинкован из другого объектного файла/библиотеки.

    Принято для шаблонов совмещать объявление и опредление функций. То есть в том месте, где у вас есть объявление, должно быть и тело конструктора.

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

    dnovikoff
    Дмитрий @dnovikoff
    ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%81%D1%...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • Drno
    • 15 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 5 ответов
    • 1 вопрос
  • низкомолекулярный макрос
    • 5 ответов
    • 1 вопрос
  • sergey-kuznetsov
    Сергей Кузнецов
    • 6 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 5 ответов
    • 0 вопросов
  • mordo445
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации