• Какую версию стандарта учить/использовать в 2021 году?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Начиная с 11, потому что в сравнении с прошлым стандартом это практически другой язык. Всё что выше, на данный момент, просто удобные фичи. Ну кроме сопрограмм и модулей -- это не просто фичи, но это отдельная тема. А всё что ниже 11 стандарта, уже очень старо и неудобно.
    Ответ написан
  • Как попасть на стажировку в Яндекс?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Если очень коротко, то надо научиться проходить собеседования. Это особый навык, который нужен с той частотой, с которой вы меняете работу. К сожалению, к решению повседневных задач разработчика отношения не имеет.

    Так-то материала в сети много, даже ролики есть на ютубе с записями прохождения интервью. Ссылок у меня нет, если что. Но умение искать информацию -- один из основных навыков в любом случае.
    Ответ написан
  • Как вернуть разные типы из std::function?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Как вернуть разные типы из std::function?

    variant, any, void*

    Но в вашем примере просто надо явно указать тип лямбды и/или приводить все возвращаемые значения к одному типу, раз уж предполагается что одно всё равно копируется в другое.

    Можно подумать о возвращении указателя на динамически созданные объекты ковариантных типов. Но я не уверен, насколько вам это подойдёт архитектурно.
    Ответ написан
  • Стоит ли идти на курсы от GeekBrains?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Я бы посоветовал JetBrains Academy уж если сильно хотите что-то вроде курсов. Там и интерактивности хватает и автоматическая проверка заданий есть, и интеграция с IDE, и теоретического материала хватает, и карту обучения построить можно. Смежные темы тоже покрыты помимо непосредственно ЯП. Сами-то по себе ЯП составляют малую толику знаний и навыков программиста (если вы компиляторы и/или инструменты не разрабатываете).

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

    PS
    Касательно отъезда за границу, рассмотрите учёбу непосредственно в США/Европе. Может где-то и получится, и даже со стипендией. Чем раньше уедите, тем лучше.
    Образование конечно же лучше где-нибудь получить, причём хорошее и фундаментальное.
    Ответ написан
  • Как войти в сферу и переехать (не знаю, что делать и сильно отчаялся)?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Я бы не рекомендовал Норвегию для начала карьеры, если у вас нет диплома одного из профильных вузов Скандинавии или Европы. Помимо этого, в Норвегии относительно небольшой рынок труда, в силу того что популяция небольшая и крупных IT компаний практически нет, если сравнивать с соседями. Лучше Швецию рассмотрите.

    Касательно высшего образования, это хороший вариант. В Норвегии оно ещё пока для всех бесплатно, правда там есть свои тонкости. Например, если у вас уже есть высшее образования, и вы хотите перезачесть баллы для поступления, то требования для вас будут выше, чем для людей без степени. Язык необходимо сдать опять же, если на бакалавра планируете, на уровне не ниже B2 (для большинства вузов). Из положительного, есть небольшие стипендии, гранты и выплаты за успешно сданные сессии (но опять же по не самым простым схемам); относительно дешевые общежития и льготы на проезд.
    Но в любом случае, страна дорогая. Просто для примера: часовой проездной на все виды транспорта в первой зоне стоит 37 крон (около 3,5 евро), на месяц 770 крон и на год 7700 крон. В общем, numbeo.com в помощь.

    PS
    Можно переехать и с российским образованием, но надо что-то показать на собеседовании (намного больше к слову, чем в случае с норвежским/европейским). Можно переехать просто с опытом работы. Важно уметь решать задачи и/или иметь потенциал.
    Ответ написан
  • Резюме в .doc или .pdf?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Тут всё довольно очевидно: linkedin (+ github). Покрывают процентов 90 всех случаев, когда нужно резюме.

    В остальных случаях, у вас должен быть редактируемый файл (doc, допустим), и которого вы экспортируете в pdf для рассылки. То есть, рассылаете PDF по-умолчанию, если кто-то просит исходник, спрашиваете зачем, если вас ответ устраивает, то отсылаете исходник. При этом, ещё раз, формат исходника должен быть удобен именно вам.
    Ответ написан
  • Устройство на компанию. Дизайнер UI/UX. Что я делаю не так?

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    1. Зачем знак взятия адреса ставят сразу после типа данных а не в начале названия переменной?

    В данном случае, это не знак взятия адреса. Это просто передача параметра по неизменяемой ссылке. Почему такой синтаксис -- это уже другой вопрос. Скорее всего, по историческим причинам.

    2. В принципе использование адресации тут обусловлено пристрастием программиста к адресам или тут есть еще что-то(типа правил хорошего тона C++)?

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

    Не лучше ли сделать так?

    Зависит от реализации функции на самом деле. Так сделать можно, если, например строка будет сохранена для дальнейшего использования. Тогда можно передать по значению и сделать move.
    Ещё стоит учесть, что строки в Qt implicitly shared. То есть, даже при передаче по значению она копироваться не будет, но произойдёт увеличение атомарного счётчика на 1.

    db.addNote("A");

    На самом деле, если у вас тут просто литерал, то лучше обернуть его в QStringLiteral.

    Вам уже написали выше много полезного, повторяться не буду. Могу посоветовать почитать: https://github.com/isocpp/CppCoreGuidelines .
    Ответ написан
  • Можно ли стать синьором купив один курс по программированию?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Разумеется нельзя. Это просто маркетинг.

    Навыки перечислены какие-то странные, равно как и умения. Социальные навыки вообще не затронуты. Зарплата опять же не старшего программиста: слишком маленькая для того, кто решает задачи соответствующего уровня.

    Чтобы стать старшим программистом (не по названию должности), нужно лет 5-7 усиленно работать над сложными вещами, посвящать свободное время саморазвитию, много читать и программировать. Ну и разумеется развивать социальные навыки.
    Если просто 5-7 лет делать одно и тоже, простое и уже изученное, то дальше начинающего вы не продвинитесь.

    Насколько вам это надо - другой вопрос :)
    Ответ написан
  • IT образование. Выбор ВУЗА: ПМИ (ВШЭ) или Computational Engineering Science (Технический Университет Ахена, Германия)?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Выбор, на мой взгляд, очевиден: Технический Университет Ахена. Из плюсов:
    1) Европейское образование (даже по чисто формальным критериям это плюс, безотносительно качества образования)
    2) Язык (английский + немецкий)
    3) Проще будет устроиться на работу и интегрироваться в общество
    4) Покинете Россию относительно легко и на хороших условиях (актуально уже довольно давно, но с недавних пор... в общем, сами понимаете)

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

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Кто же знает... Напишите в налоговую, спросите у них :)

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

    Зачем вам даже потенциальные проблемы с законом, когда можно сделать всё легально?

    Так-то налоги надо платить по закону если у вас есть доход. Ваш КО. В РФ конечно не всем надо, но это уже другая история.
    Ответ написан
  • Так ли востребованы сейчас программисты?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Да, востребованы. Но только те, кто много инвестировал и инвестирует в самообразование и может решать задачи бизнеса.

    И начинающие нужны. Я там в одном коммент выше ответил при каких условиях.
    Ответ написан
  • Хакер на Винде? + Как стать хакером?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Одну неделю -- это очень и очень мало.

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

    Если очень кратко: чтобы что-то "взломать" надо понимать как это работает.

    Придётся много всего понять, в том числе и фундаментального. По каждой теме есть много материала, но тут уже предметно надо искать.

    Это собственно и ответ на ваш основной вопрос. Хакер, изначально означало (да и до сих пор означает) не то, что показывают в сериалах вроде Mr. Robot.
    Ответ написан
  • Какой ЯП (профессию) выбрать?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Сам по себе язык программирования -- дело для программиста вообще десятое, как бы это странно не звучало. Есть куда как более важные вещи в плане знаний, умений и навыков. Так что ЯП вообще можно любой выбирать какой вам нравится.
    Ответ написан
  • Насколько влияет высшее образование при продвижении внутри компании?

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Есть довольно обширный набор инструментов ffmpeg. Советую использовать его, а уж UI делать на чём угодно. В любом случае, желаю удачи, так как видео редактор -- штука сложная.
    Ответ написан
  • Как поставить 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к рублей в месяц больше или бесплатную парковку как бенефит. Некоторые умеют планировать дальше, чем на месяц и понимают как и какую можно извлечь выгоду из работы в такой компании как Яндекс в зависимости от целей. Некоторые (сюрприз-сюрприз!) просто любят над чем-то конкретным работать. Я тут не пытаюсь кого-то осуждать или что-то советовать, просто хочу сказать, что высокий уровень зарплаты это ещё далеко не всё.
    Ответ написан