• Как поставить webkit с qt4 на Ubuntu 18?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Ну что-то вроде:
    sudo apt-get install -y libqt4-webkit
    Или libqtwebkit4

    Я просто даже не знаю, как там на Убунте пакеты называются. У меня другая операционная система и вот так пакет называется: libQtWebKit4.
    Ответ написан
  • Exception при добавлении QGraphicsItem на сцену?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    В C++ все указатели надо проверять на null перед использованием. У вас явно какой-то указатель null.
    Вот этот код ещё выглядит подозрительным:
    allObj=new ball(0,this->height(),10);
    gameBoard->scene()->addItem( ballObj->getBall());

    Результат new присваивается одной переменной, а потом используется другая. Допускаю, что это опечатка.
    Как я уже и писал выше, надо проверить результат вызова scene() на null (скорее всего, именно тут ошибка), равно как и сам gameBoard.
    И ещё одно, вы должны понимать, что после вызова метода addItem(ballObj->getBall()), возвращённый объект перейдёт под управление сцены (об этом в документации написано) и может быть удалён в любой момент. При этом, кто должен удалить ballObj в вашем коде не ясно.

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Невозможно ответить однозначно. Время в данном контексте зависит от многих факторов: алгоритма, вашего железа, компилятора, флагов сборки и т.п. То есть, время не говорит читателю вашего вопроса вообще ничего.

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

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Почему программисты идут работать в Яндекс?

    На такой вопрос нельзя дать однозначного ответа. Причины у людей могут быть абсолютно различными.

    Вы перечислил несколько причин, которые, вы, веротяно считаете негативными. Я же их таковыми не считаю.
    1) Один из этапов собеседования всегда связан с алгоритмами (даже несмотря на то, что в работе они использоваться не будут).

    Будучи программистом и даже не будучи им, вы всегда (вообще всегда) имеет дело с алгоритмами. Некоторые навыки тут вообще базовые. Как вы собираетесь работать, если не можете оценить сложность/время работы того, что вы написали, хотя бы примерно? Профнепригодный разработчик не сможет, я думаю.
    И это не подразумевает знание всех стандартных алгоритмов и структур данных. Это просто подразумевает умения пользоваться некоторыми стандартными инструментами в необходимом и достаточном объёме, чтобы не писать совсем уж обезьяний код и корректно выбирать стуктуры данных и уже давно реализованные алгоритмы, в зависимости от решаемых задач.
    Пару лет назад в Яндексе на алгоритмической секции не давали ничего такого, что нельзя было бы решить за час вообще без подготовки. А уж если принять во внимание тот факт, что само решение не так уж и важно, а важен процесс размышления... Ну а дальше уже все от собеседующего зависит, вот тут у Яндекса действительно беда, так как людей для этого специально не готовят и очень часто просят алгоритмические секции проводить абы кого. То есть возможно и первоклассного технического специалиста, но который увы не понимает зачем он сюда пришёл и что от него требуется.

    2) Как правило, собеседование состоит минимум из трех этапов.

    Ну, ничего необычного в этом нет. Вполне себе приемлемая практика для крупных компаний. У них обычно количество откликов на вакансии существенно выше, чем у небольших компаний. Им нужно обрабатывать эти отклики и они могут позволить себе выбирать.

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

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

    4) Заработная плата ниже, чем в среднем по рынку.

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

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Это не самая верная классифкация, я бы сказал. Скорее всего, чьё-то убъективное мнение.

    Язык программирования -- средство решения задач. Какие-то задачи можно решать эффективнее с использованием одного набора технологий, какие-то с использованием другого. Зависит это от многих критериев.

    Как пример, относительно недано в Discord решили переписать часть кода на Rust с Go. Это не значит, что Rust лучше, а Go хуже. Ребята просто померили всё что им было нужно и приняли решение. Это не значит, что в схожей ситуации такое же решение сработает для другого проекта. Если интересно почитать, по вот ссылка.
    Ответ написан
    Комментировать
  • Является ли инженер-системотехники, программистом?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Во-первых, кто такой Мишустин М.В? Ну и во-вторых, формальное образование не делает человека программистом. Это род деятельности. То есть, если он занимается разработкой ПО и его обязанности соотвествуют обязанностям программиста, то он программист, иначе нет. Всё просто.

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    На что укажет line на бит или байт? А может даже килобайт?

    В вашем коде, line -- это даже не указатель. Вот name -- это как раз-таки адрес в памяти, по которому находится объект line типа string.

    На всякий случай, байт -- минимальный адресуемый набор данных. То есть, бит из байта адресовать вы не можете.

    Советую читать что-нибудь по архитектуре и истории компьютеров параллельно или до книг по C++. Что-то по операционным системам тоже не помешает.
    Ответ написан
    2 комментария
  • Что не так с инициализацией массива?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    C++, не С. Хватит страдать, ну не пишут так уже давным давно. Вот, пользуйтесь:
    std::vector<std::vector<double>>  dots = { {0, 0},  {1.5, 2.5},  {2.5, 1.5},  {4, 3}  };

    Это просто работает. Равно как использование std::vector вместо одномерных массивов, или std::array, если размер известен заранее.
    Ответ написан
    Комментировать
  • H1B виза, можно ли получить купленным дипломом?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Для H1B визы нужно подтверждение диплома, если я куплю качественный диплом с приложением , то пройдёт ли он подтверждение, или нужно занести его в реестр?

    Не уверен, что кто-то тут может ответить. Что-то дельное. Вряд ли тут есть люди, знакомые с процедурой проверки изнутри. Даже если у кого-то сработало, то это вообще ничего не значит.

    Я знаю компании, которые перед тем как сделать предложение о работе заказывают полный background check кандидата сторонней компании. Я знаю, что некоторые могут прям позвонить/написать вашему научному руководителю дипломной работы. А уж то что официальные органы перед одобрением визы сделают запросы во всевозможные реестры и сомневаться не стоит.

    Будет что-то подозрительное, внесут вас в "чёрный список" и никогда на визу претендовать больше не сможете. Даже на туристическую.

    PS
    Если вы задаёте такие вопросы с надеждой получить ответ, то шансы на получение работы в IT за границей у вас близки к нулю. Разве что в клининговом сервисе в Польше.
    Советую получить образование, желательно с уклоном в математику. Оно думать учит.
    Ответ написан
  • Как думаете, так можно?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Да. Оператор = возвращает результат операции. Но выражение лучше в скобки возьмите.
    Первый же фрагмент кода не должен компилироваться, так как компилятор не может вывести тип переменной add2.
    Ответ написан
    8 комментариев
  • Тестовое задание с подвохом, что от меня хотят?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Я бы сказал, что задание надо уточнять и уточнять, так как вам оно непонятно. И не у случайных людей, а у компании. Это нормальный процесс. Вы же на реальной работе в угадайку играть не будете (я по крайней мере надеюсь). Уточнение требований -- очень важный навык.
    Ответ написан
    Комментировать
  • Как быстро получить диплом программисту?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Самый честный вариант -- ждать три года и параллельно работать. Так у вас и опыт будет и чистый диплом. Лучше конечно фундаментальное образование получить, то есть реально учиться, но это дело ваше.

    Я бы ещё рекомендовал посмотреть, а будет ли вообще диплом вуза, где вы учитесь, принят Германией за их эквивалент бакалавра. У них есть специальный сайт для этого, и там есть далеко не все вузы. Ну и образование должно быть достаточно близким к IT.

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Есть очень много способов и библиотек. Выбирайте, то что подходит вам для решения задач: https://en.wikipedia.org/wiki/Inter-process_commun... (секция Approaches).
    Ответ написан
    Комментировать
  • Какой язык лучше всего подойдет для олимпиад?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Лучше Python, потому что он объективно проще плюсов и позволит сконцентрироваться на решении задачи, а не на инструменте формализации решения. Это означает, что у вас будет больше времени на освоение типовых алгоритмов и структур данных.

    Не для кого ни секрет, что так называемое спортивное программирование -- это про умение понять к какой категории относится задача, быстро увидеть паттерн и написать какой-то низкокачественный код, чтобы проходило тесты. Вот и всё.

    Касательно скорости не волнуйтесь. В олимпиадных задачах большую роль будет играть сложность алгоритма. Если действительно будет необходимо, то потом почитаете про то как оптимизировать выполнение программы на пайтоне с точки зрения языка программирования.

    С реальным практическими задачами, где C++ будет выгоднее выбрать с точки зрения скорости работы программы и объёма потребления ресурсов, вы, вероятно ближайшие лет 10 не столкнётесь, если столкнётесь вообще.

    В плане DS/ML (и прочих модных штук в этой области), Python однозначно более широко используется, чем C++. Ну всякое вроде R.
    Ответ написан
  • Предметная область для веб-программиста?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    А теперь суть вопроса. Появилась возможность и даже приглашение (не влияет, по сути, ни на что, но послужило поводом) продолжить обучение в магистратуре по профилю фотограмметрия/геоинформационные системы.

    Отклонить и забыть. Можно было бы рассмотреть, если бы это не в России было. Есть инженерное образование -- это прекрасно. Больше уже не так важно для большинства программистов.

    Алгоритмы, структуры данных, паттерны проектирования, понимание архитектуры, опыт разработки ПО и умение общаться с командой - да.

    Всё верно, инвестировать время в эти навыки куда как выгоднее для программиста. Я бы единственное добавил больше социальных навыков, чем просто умение общаться с командой. Ну и английский язык разумеется: чем выше уровень разговорного и письменного английского, тем лучше.
    Ответ написан
    5 комментариев
  • Как оптимально считать матрицу с консоли c++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Если вы хотите оптимизировать программу по времени выполнения, то необходимо задать нужный размер матрицы с самого начала, так как он у вас известен. Например так:
    std::size_t r = 0, c = 0;
    std::cin >> r >> c;
    std::vector<std::vector<int>> matrix(r, std::vector<int>(c));

    Далее, у вас же просто числа, которые можно читать сразу в переменную:
    for (std::size_t i = 0; i < c; ++i)
    	for (std::size_t j = 0; j < r; ++ j)
    		cin >> matrix[j][i];


    Сразу скажу, я это не компилировал, не запускал и не проверял работает или нет. Если возникают какие-то ошибки, то пользуйтесь отладчиком.

    PS
    Первая ошибка в вашем коде заключается в том, что вектор g пустой в момент обращения по индексу. Замените [] на метод at() и получите исключение.
    Ответ написан
    Комментировать
  • Есть ли в С++ метод toString у классов?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Нет. Потому что в C++ действует правило "не плати за то чем не пользуешься" и нет рефлексии на уровне языка.

    Если вы хотите выводить класс в поток, то реализуйте: ostream& operator<< (ostream& os, const Foo &o), где Foo -- это ваш класс. Ну а если вам класс необходимо приводить к строковому представлению, то да, придётся вам реализовать метод руками, или же, что архитектурно более правильно, сделать отдельный класс и/или функцию для преобразования.
    Ответ написан
    3 комментария
  • Оцените реалистичность плана на будущее: Германия vs Чехия vs Москва?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Лучше 3, а потом 1 или 2, если сразу же 1 или 2 не получается. В чём вообще смысл жить в России не в Мск или СПб?
    Ответ написан
  • Как составить условие для программы?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Из условия я вижу, что в коробке может быть только один предмет из списка. Следовательно, вам нужно выбрать 4 псевдо-случных элемента из последовательности. Сделать это можно многими способами. Например, можно просто случайно перемешать массив из всех доступных подарков и предложить пользователю выбрать индекс (номер коробки) от 0 до 3. Ну и вывести название подарка под указанным номером. Что-то вроде такого:
    std::vector<std::string> presents {"паук", "носок", "iPhone 11 Pro", "книга по С++", "футбольный мяч", "флешка", "билет в кино", "наручные часы", "кефир"};
    
    std::random_device rd;
    std::mt19937 g(rd());
     
    std::shuffle(presents.begin(), presents.end(), g);
    
    std::size_t boxNumber = 0;
    std::cin >> boxNumber;
    
    std::cout << presents[boxNumber] << std::endl;

    Тут, понятное дело, надо добавить интерфейсную часть и обработку ошибок ввода...
    Ответ написан
    Комментировать