• С чего начать и продолжить изучать Assembler?

    @poslannikD
    Java/C/C++ Programmer
    Могу посоветовать книгу "РАЗРАБОТКА ОКОННЫХ ПРИЛОЖЕНИЙ НА FASMе" Норсеев Сергей, мне в свое время помогла с ассемблером, на 50% состоит из практики. FASM берем отсюда - https://flatassembler.net/
    + к данной книге могу еще посоветовать курс Рикардо Нарвахо по OllyDbg, основная цель курса это реверсинг, но первые глав 20, помогут вам разобраться с ассемблером, да и отладка в отладчике намного удобней чем гадание по кофейной гуще в исходниках.
    По ос есть вот такая штука https://subscribe.ru/catalog/comp.soft.myosdev, ее автор по моему был даже на хабре, можно с ним пообщаться. Плюс нужна теория - Таненбаум, современные операционные системы/архитектура компьютера.
    Ответ написан
  • Что можно почитать по парсингу синатксических конструкций?

    @poslannikD
    Java/C/C++ Programmer
    В принципе для начала можно посмотреть этот курс https://www.youtube.com/watch?v=ot-IMy_4ENg&list=P... на его основе у меня получилось построить полноценный парсер для Java/Rust подобного языка. А также там абсолютно нет всяких грамматик и прочей ереси, зато есть все что надо чтобы заинтересовать новичка.
    Ответ написан
  • Насколько перспективна смена профессии на разработчика С++?

    @poslannikD
    Java/C/C++ Programmer
    С разработкой знаком только поверхностно, небольшой опыт матлаба.
    Посему решил человек сменить профессиональную деятельность и занялся изучением C++.

    Худшее решение которое можно было предпринять, говорю как физик по образованию ушедший в С++. Во первых С++ страшно костыльный и сложный язык, выучить который ни за 1 год, ни за 10 невозможно(при условии что есть семья и другие заботы), хотя если нон-стопом ботать, то лет за 15 можно. Но знание языка не основное, нужно еще знать паттерны, системы контроля версий, всякие стили разработки(фп, ооп) и предметную область. Так как это С++ то нужно знать еще и stl, boost либо Qt. Вакансий по чистому с++ нет.

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

    В общем вопрос - как вы думаете - куда лучше податься и почему?
    Java - после С++ покажется раем(в плане языка). На постсоветском пространстве оплачивается хорошо, вакансий много. Осваиваете Spring, Hibernate по курсам и вперед на Junior-а, через 3-4 года зп будет выше чем у 70% с++ девелоперов.
    Ответ написан
  • С чего начать изучение дизассемблирования и реверс-инжиниринга?

    @poslannikD
    Java/C/C++ Programmer
    Добавочка к ответу @longclaps
    Асемблер
    + устройство операционных систем в общем и целом
    + устройство конкретно той под которую написан комплекс
    + если комплекс юзает драйвера, навыки написания и реверса драйверов
    + умение пользоваться специальными прогами типа Olly, IDA, Gidra и тд(соответственно нужны знания из всех предыдущих пунктов)
    + знание какого-нибудь Python для автоматизации
    Иногда что бы восстановить алгоритм нужно знать как компиляторы переваривают исходники. Т.к. то что пишет программист и то что потом получается на выходе не всегда одно и тоже :)

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

    @poslannikD
    Java/C/C++ Programmer
    Если без издевок, то нет такого ресурса по с++.
    Есть куча сайтов на которых можно порешать задачи с проверкой на с++, но там нет теории. Есть сайты с теорией но нет практики.
    Типичный путь в плюсах был описан в одном комменте на хабре, достаточно правдаподобно.
    Путь любого плюсера:
    — Должен начинаться с чего-то простого и понятного. Например книжки Кернигана и Риччи по С. Или же C++ By Dissection by Ira Pohl — великолепная книга, где все простенько и со вкусом.
    — Можно продолжить пробежавшись по глазам по книге одного из универсалов (Шилдта к примеру). И очень часто консультироватся с талмудом Страуструпа.
    — А уж потом, Майерс, Саттер, Александреску, которые давным давно объяснили всю эту уличную магию и разложили по полочкам.
    — А еще профи плюсеры любят читать Dr. Dobbs Journal


    Из онлайн справочников я бы добавил https://ravesli.com/uroki-cpp/ там можно подсмотреть какую либо тему если в вышеобозначенных книгах она непонятна расписана.
    Ответ написан
  • Как в PyQt разместить элемент сразу в нескольких вкладках?

    @poslannikD
    Java/C/C++ Programmer
    Сделать виджет который включает в себя GroupBox, TextLabel, QPushBtn, QCheckBox и так далее. И уже этот виджет размещать в разных окнах
    Ответ написан
  • Операционная система?

    @poslannikD
    Java/C/C++ Programmer
    Парень начни с прокуривания книг по теме:
    https://www.ozon.ru/context/detail/id/31649356/ - там в конце книги ссылок свыше 50. Как минимум одна ссылка на дополнительный источник по любой освещенной в книге теме.

    Можно ли написать OC на FASM?

    можно
    https://kolibrios.org/ru/index
    Ответ написан
  • Как создать нестандартное окно?

    @poslannikD
    Java/C/C++ Programmer
    Как написал Vitaly это либо widget + qss либо QtQuick. Если приведете примеры можно будет подсказать что-то конкретное. А так по опыту использования:
    Widget:
    Множество стандартных виджетов на любой вкус и цвет которые возможно кастомизировать с помощью qss, выполняется легко и быстро. Множество документации и примеров.
    Наследуя свой класс от стандартных виджетов можно малой кровью добавить нестандартное поведение. К примеру при наведении мышки на определенный виджет с жатой клавишей shift меняется qss у программы :)
    Если вам совсем совсем что-то кастомное нужно, можно рисовать руками. Долго-муторно но при этом у вас будет максимальная свобода. Виджеты в таком случае могут быть нестандартной формы круглые, элипсовидные и тд. Но блин это реально долго. Так же в этом случае возможно использование qss.
    QtQuick:
    Вся эта технология изначально направленна на планшеты и мобилы, это нужно учитывать это рас. С примерами для чайников, тутотриалами щас напряг это два. В будущем когда обучающей литры будет больше писать станет легче, щас не сильно проще чем виджеты.
    Ответ написан
  • Вопрос по синтаксису Qt?

    @poslannikD
    Java/C/C++ Programmer
    Это вопрос по синтаксису с++ )
    QLabel *label = new QLabel("Привет");
    label-> show();

    давайте разберем построчно
    1) QLabel("Привет"); - создали экзепмляр класса QLabel
    2) new QLabel("Привет") - оператор new выделяет память в куче, размещает там объект
    QLabel("Привет")
    и возвращает указатель на адрес в куче. По этому адресу расположен наш объект
    3) = new QLabel("Привет"); - оператор = выполняет присваивание(или инициализацию в зависимости от контекста). Присваивание(инициализация) чего ? Присваивание(инициализация) правого операнда. Присваивание(инициализация) чему? Присваивание(инициализация) левому операнду.
    4) QLabel *label - объявили указатель, который может указывать на объекты класса QLabel.
    5) QLabel *label = new QLabel("Привет"); -читаем с Права на лево создали объект, разместили его в куче, адрес объекта передали указателю типа QLabel который расположен слева от знака =
    Я так понимаю что [*label] это указатель на адрес объектов которых в дальнейшем будет много наверное

    Это указатель на адресс ОБЪЕКТА, этот указатель в один момент времени указывает только на ОДИН объект. так как отсутствует ключевое слово const то, да он может указывать на разные объекты. Но в конкретный момент времени он указывает только на один объект или вникуда

    label-> show();
    - обращаемся к объекту через УКАЗАТЕЛЬ на этот объект

    SomeClass a; //тут создается объект на основе класса
    SomeClass *p = &a; //это указатель на адрес объекта чтобы через него // вызывать методы класса

    1) SomeClass a; - объект создается на СТЕКЕ, не рекомендуется создавать тяжеловесные объекты на стеке, а легковесные можно.
    2)SomeClass *p = &a; - указатель указывает на объект на стеке все норм :)

    Различие между
    SomeClass a;
    и
    new QLabel("Привет");
    в том что объект а существует на стеке, а QLabel("Привет"); в куче
    Ответ написан
  • Что использовать throw + try/catch или if + return?

    @poslannikD
    Java/C/C++ Programmer
    Решать вам :)
    1) try/catch - не рекомендуется использовать в цикле так как данная конструкция снижает производительность.
    2) if/else - гораздо быстрее
    НО
    У вас в программе нет циклов на 1_000_000 итераций в которых используется try/catch, а значит лично для вашей приложухи это будет незаметно.
    Что лично для вас как разработчика удобнее то и используйте.
    Ответ написан
  • Свобода выбора или работа программистом в НИИ - что для вас лучше?

    @poslannikD
    Java/C/C++ Programmer
    Первый вариант однозначно. У второго слишком много минусов, да и денег на второй вариант уйдет больше(жизнь в москве дорога, а если еще и общага не достанется)
    Ответ написан
  • Как работает прослушка пользователя смартфоном?

    @poslannikD
    Java/C/C++ Programmer
    Острая тема. Дам ссылку на сайт в котором кое-что написано без технических деталей и с упором на параноиков, многого нет но зато хоть какое-то системное описание. Если заинтересуетесь в дальнейшем можно капнуть глубже
    https://book.cyberyozh.com/ru/kibershpionazh-chere...
    Ответ написан
  • Выбор между C и C++, и вообще стоит ли?

    @poslannikD
    Java/C/C++ Programmer
    языки уже ничего не стоят. Давным давно нужно знать целый стек технологий + обзорно те штуки которые используются в смежных областях.
    типичный набор знаний для джуна
    1) язык
    2) базы данных
    3) часто используемые библиотеки и фреймворки в выбранной области
    4) знание систем контроля версий
    5) знание основных инструментов разработки(ide, редакторы и все что облегчает жизнь программистам работающим с каким-то конкретным стеком)
    6) общий кругозор в айти
    7) знание короля айти - гугла. реально крутая вещь, попробуй хоть раз использовать. можно нагуглить все те вопросы которые ты задал
    UDP:прочитал комент о том что автор слепой, и стало немного стыдно за столь резкий ответ. Но это не изменит некоторых вещей:
    Людям с нарушением зрения будет очень трудно. Приходится часто искать информацию и если вам трудно это делать в больших объемах лучше остановиться.
    Ответ написан
  • Какая специальность наиболее близка к IoT?

    @poslannikD
    Java/C/C++ Programmer
    IoT и заочка не совместимые вещи, так как в этой области электроники(и знаний связанных с ней) намного больше чем программухи
    Ответ написан
  • Как поместить все файлы в один exe?

    @poslannikD
    Java/C/C++ Programmer
    картинку можно запихнуть как строку, массив, структуру которые хранят цвет пикселей, прозрачность.
    Звук скорее всего можно запихать аналогично.
    Но лучше просто ложить ресурсы рядом с exe и не париться. Сделайте папку звук, папку картинки и загружайте их в программу по мере необходимости, это легче чем тащить все в один экзешник.
    Ответ написан
  • Перспективы начинающего разработчика с++?

    @poslannikD
    Java/C/C++ Programmer
    1) Ходи по собеседованиям
    2) После каждого собеседования проводи работу над ошибками, что не знаешь подучи
    3) Поработай с бд(sqLite в свой же чит встрой, ради опыта)

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

    @poslannikD
    Java/C/C++ Programmer
    Как лучше организовать загрузку информации в виде описания, файлов: несколько фотографий, документа расширения docx, pdf с помощью БД или в лоб писать в коде?

    Несколько вариантов:
    Первый : завести файл с конфигурацией
    типа
    zifrZifrAiLyLy=123
    {
    //document and foto list
    doc 123
    foto 123_1
    foto123_2
    и тд
    }
    При загрузке бота парсить этот файл с конфигурацией. Конфиг может быть в json, txt(с разделителями), xml или любом другом удобном формате. Выбор конкретного формата хранения зависит от количества данных их структуры и тд.
    Если заполнение файла зависит не от программиста, а от других лиц вариант идеален. На одном проекте нужно было сделать что-то похожее. Чел заполнял таблицу в Exel и сохранял как txt(разделитель м/у ячеек символ табуляции). Я парсил файл в проге, после написания и отладки кода возвращаться к проекту не нужно :) А если это захардкодить то на каждый чих придеться править код а ето не гуд.
    Вариант два : через бд. - Ну если данных миллионы строк или те кто заполняют бд делают это через какой-либо веб интерфейс. Иначе вариант честно говоря слабый.

    Как это можно организовать: с помощью условий или цикла?
    - главный цикл обрабатывающий ввод от пользователя + условия
    Ответ написан
  • С чем связанно такое поведение программы?

    @poslannikD Автор вопроса
    Java/C/C++ Programmer
    В коде были глупые описки типа
    byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);

    а надо было
    byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte2 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte3 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte4 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);

    соответственно в корневой layout добавлялся указатель указывающий не на что :(
    + один слот не был объявлен и определен, но была попытка использовать к нему коннект
    После исправления всех глупых ошибок код заработал :(
    Ответ написан
  • Как найти работу начинающему Embedded developer/Программисту C без опыта работы?

    @poslannikD
    Java/C/C++ Programmer
    Руки в ноги и ходим по
    1) гос конторам связанным с разработкой электроники и электронных механизмов
    2) предприятиям автомобильной/сельскохозяйственной/авиационной промышленности
    3) и другим шарашкам у которых есть хоть малый намек на использование микроэлектроники.
    Но не только ходим по отделам кадров, но и пытаемся выйти на руководителей соотвествующих подразделений/секторов. Конкретно по вашей специальности вас будут интересовать отделы "Автоматики"
    Как подать заявку, найти компанию, где нужен начинающий разработчик?
    - только хардкор/только ногами по предприятиям(это наиболее эффективно) + поймете что не знаете.
    Ответ написан