Задать вопрос
  • Какой софт посоветуете для планирования и комментирования (личных) проектов?

    Я сингулярити для такого использую.
    Всякие "вопросы" - это подзадачи типа "измерить X", "узнать из чего делается Y", и так далее.

    Ещё можно для проектов всякие диаграммы гантта использовать, типа ganttpro или ms project.
    Удобно сразу сроки определять и взаимные зависимости.
    Ответ написан
    1 комментарий
  • Как найти удалённую работу с 20+ лет опыта в разработке?

    TrueBers
    @TrueBers
    Гуглю за еду
    Что я делаю не так?
    Например, всё.
    Уехать из России и искать работу на hh... ну, это очень непонятное решение, мягко говоря. Банковские карты поменял, место жизни поменял, а hh-помойку и мышление не поменял.

    Пробовал освоить Linkedin, но я устал от ботов и спама, забил на них. Выхлопа ноль.
    С ресурса, где 90% всех вакансий мира нет выхлопа? Очень странный вывод. Звучит как оправдание не искать работу. На LinkedIn есть всё. И блоги, и эйчары, и компании, и такие же соискатели. Можно общаться, буквально с любым сотрудником любой компании, достучаться хоть до CEO при желании.
    Про ботов вообще первый раз слышу. Ни разу не писали боты за 15+ лет аккаунта.
    hh по сравнению с LinkedIn просто земля и небо.

    Вижу 2 решения: либо вернуться в РФ и продолжать по накатанной как привык. Либо поменять мышление, избавившись от СНГшных принципов поиска работы. Создать нормальный аккаунт на LinkedIn, заняться откликами плотно, законнектиться с сетью единомышленников, подписаться на фиды интересующие. И будут сами писать по несколько эйчаров в неделю минимум.
    А уж получить минимальный оффер, в несколько раз превышающий по сумме СНГшный — дело пары недель.
    Ответ написан
    5 комментариев
  • Почему сигнал ReadyRead() вызывается только один раз?

    vxblog
    @vxblog
    Инженер-программист
    Что ж, с вашего позволения, устрою небольшое code review.

    Установка параметров порта.
    Да, метод setPortName не возвращает ничего. Но, вызовы QSerialPort::setBaudRate, QSerialPort::setDataBits, QSerialPort::setParity, QSerialPort::setStopBits и QSerialPort::setFlowControl могут вернуть false. Пытаться открыть после этого порт явно не стоит. Лучше вызвать QSerialPort:error, чтобы обработать ошибку.

    Сигналы и слоты.
    1. Cоединить сигнал QSerialPort::readyRead со слотом ComPort::HandleReadyRead можно сразу после создания экземпляра QSerialPort. До установки параметров порта и его открытия.
    2. Однозначно, необходимо подключить сигнал QSerialPort::errorOccurred и реализовать обработку ошибок. Ну хотя бы их вывод в консоль во время отладки.
    3. Пожалуйста, не используйте макросы SIGNAL и SLOT. Переходите на функторы.


    QObject::connect (com_port_, &QSerialPort::readyRead, this, &ComPort::handleReadyRead);
    QObject::connect (com_port_, &QSerialPort::errorOccurred, this, &ComPort::handleError);


    Открытие порта.
    Метод QSerialPort::open следует вызывать только после успешной установки параметров порта (см. выше). И даже после этого он может вернуть false. В этом случае ничего не остаётся, как вызвать QSerialPort:error, чтобы отреагировать на ошибку. Кстати, это рекомендации из официальной документации.

    Чтение данных.
    Во-первых, метод чтения данных QSerialPort::read может вернуть -1 в случае ошибки. А метод QSerialPort::readAll в случае ошибки вернёт пустой QByteArray. Что нужно делать в этом случае? Правильно! Вызвать QSerialPort:error, чтобы отреагировать на ошибку.

    Во-вторых, я бы не стал полагаться на каждое срабатывание сигнала QSerialPort::readyRead, а использовал бы цикл с методом QIODevice::bytesAvailable, в котором считываются и обрабатываются все данные, о приходе которых стало известно по упомянутому выше сигналу.
    void ComPort::HandleReadyRead()
    {
      while (serial_->bytesAvailable () > 0) {
    
        // Чтение данных
        QByteArray data = serial_->readAll ();
        if (data.isEmpty ()) {
          handleError ();
          return;
        }
    
        read_buffer_.append (data);
    
        // Здесь ещё пристуствует логика обработки сообщения, я ищу символ конца
        // сообщения, и если его нахожу, то эмитирую сигнал, для вызова слота парсинга сообщения.
      }
    }


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

    Обработка ошибок.
    Простите, но у вас она отсутствует как класс. Реализуйте, например, предлагаемый мною ComPort::handleError.
    void ComPort::handleError (QSerialPort::SerialPortError error)
    {
      qDebug () << __LINE__ << __FUNCTION__ << error;
    }


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

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Универсального решения и списка конкретных пунктов не существует. По сути всё сводится к документации самого проекта. Если она достаточно хорошая - то разработчик получив все необходимые доступы (к репозиторию, CRM, тикетам и прочему) сможет локально развернуть проект и начать выполнять задачи. Но такие идеальные ситуации достаточно большая редкость и всегда находится какой-то нюанс или несколько. Поэтому, я бы предложил вот такой базовый список пунктов:
    1. Доступы: к сервису документации - вики и т.п., репозиторию, менеджеру задач, тестовым/отладочным серверам, коммуникационные ресурсы - чаты, созвоны, веб-доски и т.п., а так же дополнительным внутренним ресурсам - файловый сервер, офисные и другие веб-приложения.
    2. Документация: установка и настройка средств разработки, получение, запуск и локальное развёртывание проекта и его зависимостей, процесс доставки проекта на тестовый, стейж и продакшен серверы, процесс отката изменений на предыдущую версию, получение и размещение ключей доступа/АПИ и других секретов.
    3. Общая документация проекта: описание проекта и его задач, описание всех задействованных бизнес-процессов проекта - внешние процессы, внутренние процессы, зависимые процессы, описание рабочих процессов пользователей и их взаимодействия с проектом, описание рабочих процессов службы сопровождения проекта - модераторы, администраторы, веб-мастера и прочие внутренние пользователи проекта.
    4. Рабочий процесс в команде/проекте: где и куда копать надо, где и какие ресурсы размещены, организация к ним доступов, структура команды - должности и контакты коллег, кто за что отвечает, процессы работы над задачами.

    Ну и далее - специфика каждого конкретного проекта.
    Ответ написан
    3 комментария
  • Как убрать скроллбар внутри QVideoWidget?

    maaGames
    @maaGames Автор вопроса
    Погроммирую программы
    Причину различного поведения я так и не понял, но решение смог найти:
    ScrollBarPolicy - выключают скроллбары, даже если они контролу зачем-то захотелись быть нужными
    setStyleSheet - откличает однопиксельную рамку виджета. Видео масштабируется под размер виджета, поэтому наличие-отстствие этой рамки не должно влиять на определение размера вьюпорта и на появление скроллбаров. Убрал из эстетических соображений, мне не нужна была обводка.

    QGraphicsView* view = new QGraphicsView( this );
    	view->setScene( scene );
    	view->setStyleSheet( "border-width: 0px; border-style: solid" );
    	view->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
    	view->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
    	view->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Ignored );
    	view->show();
    Ответ написан
    Комментировать
  • Как установить Qt?

    @kaka888
    C, C++, Qt, Python, Flask, aiogram, MySQL, Redis..
    Вот ссылка на скачивание последней на сегодняшний день версии IDE QtCreator для MacOS (dmg-файл):
    ТЫК

    Ссылки на репозиторий и последний релиз:
    https://github.com/qt-creator/qt-creator
    https://github.com/qt-creator/qt-creator/releases/...

    Загрузка с GitHub работает без VPN!
    Ответ написан
    Комментировать
  • Нужен ли клиенту private key?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Вы бы уточнили вопрос, что именно вы хотите сделать.

    Клиентский сертификат вообще не обязателен для ssl, шифрование и так будет работать.

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

    Но мне кажется, что вы не совсем понимаете как и что у вас вообще работает, потому что формулирование вопроса туманно
    Ответ написан
    8 комментариев
  • Почему не идёт событие mousePressEvent в Qt?

    Потому что создается объект QWidget, а должен MyWidget;
    auto widget = new MyWidget(this);
    Ответ написан
    1 комментарий
  • Как сделать, чтобы дочерняя форма помнила свое состояние при повторном открытие?

    chuikoalex
    @chuikoalex
    Викторович
    Ну если понудеть, то сразу вопрос какие аргументы у состояния? Размер, положение, текст по умолчанию в LineEdit.
    1. Простой выход: создай словарь "состояний", в котором по ключу - названию диалогового окна, можно будет хранить данные о его состоянии (этот вариант если программа простая, и хранить состояние нужно только на время работы приложения).
    2. Если программа большая, то Евгений говорит правильно создай класс который наследуется от QDialog и при создании его экземпляров (диалоговых окон) каждое из них будет хранить состояние в себе (тоже только на время работы приложения ибо при перезапуске состояния будут дефолтными).
    3. Если прям нужно для сохранения перезапуска, то тут будет правильным создать конфигурационный файл .ini .yaml - кто что любит :)) Ну или словарь из п.1. можно просто сохранить с помощью модуля pickle.
    Ответ написан
    Комментировать
  • Как заполнить форму налогоплательщика?

    an-tar
    @an-tar
    Full stack web developer
    Если тезисно, то важно учесть, в какой стране вы налоговый резидент (сколько в Венгрии находитесь, где были до этого), плюс возможные местные особенности(в частности для студентов), возможно есть какие-то межправительственные соглашения РФ-Венгрия.
    Как верно было подмечено лучше в этом разбираются местные бухгалтеры или тамошние Upwork фрилансеры, можно на форуме спросить, простым поиском находятся много интересных ответов: https://community.upwork.com/t5/forums/searchpage/...
    65d362a9e1940474221228.png
    Ответ написан
    1 комментарий
  • Как соответствовать LGPL для Qt?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Да, лицензия LGPL для того и придумана, чтобы можно было линковать закрытый код с открытым, при этом изменения в сам этот открытый код необходимо публиковать.
    Ответ написан
    Комментировать
  • Сколько ставить майлстоунзов?

    an-tar
    @an-tar
    Full stack web developer
    Майлстоуны на ваше усмотрение при непротиворечивости клиента. Этапы лучше предложить самому, но 10 кажется избыточно, я бы предложил 2-3. Особенно полезно с малознакомым клиентом - первый майлстоун может полезно показать, платежеспособен и договороспособен ли контрагент. Распределяйте задачу по майлстоунам разумно.
    Ответ написан
    Комментировать
  • QT. Почему resizeEvent реагирует на изменение подвиджетов и что с этим делать?

    kkmspb
    @kkmspb
    хобби C++, Qt, десктоп, микроконтроллеры STM32
    В обработчике событий resizeEvent не надо устанавливать размеров виджетов.
    Если хотите изменить размер виджета сделайте ему setMinimumSize или setFixedSize. Потом надо вызвать updateGeometry.
    Ответ написан
    Комментировать
  • В каких IT профессиях джуну можно работать на удалёнке или фрилансе?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    В каких IT профессиях джуну


    Дело не в профессии, а в компании. Какие-то компании всем дают удаленки, какие-то никому, какие-то по определнным условиям. От позиции и профессии это зависит гораздо меньше, чем от конкретной компании.
    Ответ написан
    Комментировать
  • QSS. Как изменить верхнюю панель?

    xzripper
    @xzripper
    0xC0000005
    Это невозможно, либо отказаться от такой идеи, либо сделать окно вообще без границ и верхней панели (QtCore.Qt.FramelessWindowHint), и сделать свою верхнюю панель.
    Ответ написан
    Комментировать
  • Что быстрее SQL или Javascript?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В общем, чтобы не издеваться над девушкой, объясним на пальцах.

    Во-первых, заголовок у вопроса чудовищно некорректный. Это все равно что спросить, "что быстрее - пылесос или стиральная машина?"
    Во-вторых, ответ на вопрос "производить ли обработку данных в БД или же запросить все данные в клиентское приложение и обрабатывать там" совершенно очевиден: обработку данных следует производить в общем случае только в БД. Она для этого и придумана. Чтобы обрабатывать значительные объемы данных.

    Да, js тоже "может" обрабатывать большие объемы данных.
    Но чтобы значительный объем данных обработать, его сначала надо передать, полностью забив канал между сайтом и базой
    Чтобы значительный объем данных обработать, его надо сначала проиндексировать. Причем делать это каждый раз, а не использовать уже имеющийся набор индексов
    Чтобы значительный объем данных обработать, надо иметь значительный объем памяти или упасть из-за её недостатка
    Чтобы значительный объем данных обработать в многопоточном режиме (а сайт как раз является многопоточной системой), все вышеперечисленное надо умножить на количество посетителей сайта - при каждом запросе перегонять весь массив данных, выделять память, индексировать, считать. Если же вы оставляете все данные в памяти приложения, то их тогда надо как-то синхронизировать с БД. То есть вы себе собираете кучу проблем на пустом месте.

    Несомненно, из любого правила есть исключения. И бывают ситуации, когда приходится считать в приложении.
    Но на вопрос в общем виде ответ будет совершенно однозначный. Не "может так, может сяк", а только в БД.
    Ответ написан
    9 комментариев
  • Какая есть бесплатная библиотека на C# для воспроизведения и записи аудио на Linux+Windows?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Дык VLC же есть, прям первая ссылка в гугле на биндинг: https://github.com/videolan/libvlcsharp
    Да даже если не можете найти конкретно либу или вот VLC биндинг завести, то что мешает тупо в командной строке запускать любой бесплатный плеер для воспроизведения/записи?
    Ответ написан
  • Qt: как сделать, чтобы пункт меню и горячая клавиша делали чуть разное?

    @Mercury13 Автор вопроса
    Программист на «си с крестами» и не только
    Всё оказалось просто. Создаём QAction и QShortcut с одной кнопкой. В ситуации, когда QAction недоступен, QShortcut делаем доступным, и наоборот.
    Ответ написан
    Комментировать
  • Как передать картинку по socket Java client -> Qt server?

    @MrDlop Автор вопроса
    I love C++
    QByteArray messageData;
            while (socket->bytesAvailable(  )) {
                QString qq = socket->readLine();
                qq.remove(qq.size()-2, 2);
                qint32 s = (qq).toInt();
                QByteArray data = QByteArray::number(s, 16);
                qDebug() << data;
                messageData.append(s);
            }

    Понял свой недочёт, я работал со строкой, а надо было нормально перейти к числам. Большое спасибо всем за помощь
    Ответ написан
    Комментировать
  • C++ qt, как исправить no declaration matches '...'?

    @dima20155
    you don't choose c++. It chooses you
    Ошибка означает, что в заголовочном файле у вас нет объявления метода void on_Dds_button_clicked() класса MainWindow.
    Наверное, у вас есть объявление только void on_Ds_button_clicked().
    Вот похожий вопрос на stackoverflow.

    P.S. Не испытывайте судьбу - не пиши длинные названия функций, которые отличаются только 1 буквой.
    Ответ написан
    Комментировать