Открытость стандарта подразумевает то, что он написан с привлечением разных заинтересованных сторон.
Не улавливаю логики этого высказывания. Открытость подразумевает, то что полное описание стандарта можно найти в свободном доступе, не больше и не меньше.
Название метода это часть URL запроса, но да это тоже входит в HTTP2 заголовок. И да это HPACK для моего сервиса с аутентификацией запросов(включает собственные заголовки авторизации).
Ответ очевиден, что это HTTP2 заголовок, который вы сами формируете + размер передаваемых данных(5 байт)
Но если вспомнить про то, что HTTP2 поддерживает gzip сжатие данных, думаю HTTP2 становится чуть привлекательнее чем raw protobuf payload.
Одна из самых неудобных частей серверного C++ API это uni-/bidirect стриминговые методы. Нет достаточно хорошего примера, как например обмениваться сообщениями между двумя и более клиентами. Я попытался реализовать нечто подобное в примерах для qtprotobuf, но по прежнему не до конца понятно как правильно осуществлять жонглирование контекстами и очередями сообщений. Думал будет немного освещено в статье, но к сожалению не увидел. В целом куда удобнее пользоваться Go lang серверным API.
Генерация qmldir как мне кажется не совсем верное решение задачи проектирования QML библиотеки. Наверное для простеньких программ подходит такое решение. Но изначально в qmldir нужно записывать только публичные интерфейсы библиотеки. Думаю вам стоит учесть это и добавить выборку файлов которые должны быть добавлены в qmldir.
Так же позволю себе несколько замечаний по коду:
Не используйте import Qt.labs.platform 1.1, темболее для FileDialog которые уже устаканились и есть в освном дереве
Не храните в репозитории .pro.user*, добавьте исключения в .gitignore, на гитхабе есть примеры для Qt
Не используйте кириллицу в коде. Не весь мир пользуется сгенерированными кириллическими кодировками.
.qm файлы это результат генерации из .ts файлов, хранить их в репозитории ни к чему
Рабочий ноутбук Т450, до этого был T420, у коллег были T410.
Впечатление ото всех моделей одинаковое:
— отвратительная матрица диспелея
— избыточные — рудиментарные устройства ввода
— недостаточная износостойкость
— неадекватная цена
В общем история чем-то напоминает историю фанатов «маков», где переплату во многом можно оправдать инфраструктурой apple. Но тут lenovo не предлагает ничего кроме бренда созданого IBM.
Отличный хинт. Если опишите такое же для mysql и postgre я думаю многие скажут вам большое спасибо.
Есть небольшой комментарий:
Я не видел конкретной реализации функции которая вызывает «profile», но есть вероятность что в userData вам может прийти чужой указатель (например ваша библиотека/плагин одна/один из многих использующих sqlite с профилированием в приложении), и слепой static_cast может тут немного попортить нервы. Наверно я бы сделал profile статическим методом синглтона Log и добавил проверку на равенство userData. Есть подозрение что по userData реализовали разделение профилируемых запросов на стороне «клиента» (может быть я ошибаюсь не очень представляю схему по которой реализованы подключения в sqlite из одного процесса.). Просто неоднократно сталкивался с подобным дизайном в C API.
Я бы на месте программистов написал универсальный интерфейс для приема режимов извне согласно требованиям создал/сгенерировал «шаблоны» необходимых режимов. Далее если бы мне сказали, что при поступлении сигнала X должен применяться режим X' я бы даже не стал задумываться зачем так нужно. Все есть в требованиях. Я же инженер программист, а не инженер-эколог, инженер-проектировщик ДВС. Откуда мне знать как будет меняться выхлоп если, например, в газовую смесь добавить 2мг дизельного топлива? У меня просто есть шаблон который делает это в системе по команде от ECU. Так в чем же моя вина? В том что я не разбираюсь помимо программирования в экологии и ДВС на достаточном для анализа уровне?
В списке ваших вопросов/утверждений, явно не хватает:
Они не понимали, что они делали, потому что это вне их компетенции.
Трэвис сдулся. Статья не актуальна.
В данном случае поменялся интерфейс и порядок функций в vtable. PIMPL к сожалению про другое.
Не улавливаю логики этого высказывания. Открытость подразумевает, то что полное описание стандарта можно найти в свободном доступе, не больше и не меньше.
Ждал этого вопроса, но это не обработка исключения в классическом C++/Java. Нет типов исключений, это скорее не recover а supres.
Формально panic нельзя обработать
Есть готовое решение https://doc.qt.io/qt-5/qtconcurrent-index.html
В принципе если не считать примеры на Go, то статья "6 рекомендаций по разработке безопасных <подставьте свое>-приложений"
Название метода это часть URL запроса, но да это тоже входит в HTTP2 заголовок. И да это HPACK для моего сервиса с аутентификацией запросов(включает собственные заголовки авторизации).
100 байт
Ответ очевиден, что это HTTP2 заголовок, который вы сами формируете + размер передаваемых данных(5 байт)
Но если вспомнить про то, что HTTP2 поддерживает gzip сжатие данных, думаю HTTP2 становится чуть привлекательнее чем raw protobuf payload.
Одна из самых неудобных частей серверного C++ API это uni-/bidirect стриминговые методы. Нет достаточно хорошего примера, как например обмениваться сообщениями между двумя и более клиентами. Я попытался реализовать нечто подобное в примерах для qtprotobuf, но по прежнему не до конца понятно как правильно осуществлять жонглирование контекстами и очередями сообщений. Думал будет немного освещено в статье, но к сожалению не увидел. В целом куда удобнее пользоваться Go lang серверным API.
UPD: Речь выше о WithAsyncMethod* серверах
Именно
Генерация qmldir как мне кажется не совсем верное решение задачи проектирования QML библиотеки. Наверное для простеньких программ подходит такое решение. Но изначально в qmldir нужно записывать только публичные интерфейсы библиотеки. Думаю вам стоит учесть это и добавить выборку файлов которые должны быть добавлены в qmldir.
Так же позволю себе несколько замечаний по коду:
Впечатление ото всех моделей одинаковое:
— отвратительная матрица диспелея
— избыточные — рудиментарные устройства ввода
— недостаточная износостойкость
— неадекватная цена
В общем история чем-то напоминает историю фанатов «маков», где переплату во многом можно оправдать инфраструктурой apple. Но тут lenovo не предлагает ничего кроме бренда созданого IBM.
Есть небольшой комментарий:
Я не видел конкретной реализации функции которая вызывает «profile», но есть вероятность что в userData вам может прийти чужой указатель (например ваша библиотека/плагин одна/один из многих использующих sqlite с профилированием в приложении), и слепой static_cast может тут немного попортить нервы. Наверно я бы сделал profile статическим методом синглтона Log и добавил проверку на равенство userData. Есть подозрение что по userData реализовали разделение профилируемых запросов на стороне «клиента» (может быть я ошибаюсь не очень представляю схему по которой реализованы подключения в sqlite из одного процесса.). Просто неоднократно сталкивался с подобным дизайном в C API.
В списке ваших вопросов/утверждений, явно не хватает:
Они не понимали, что они делали, потому что это вне их компетенции.
Почему-то все забыли об этом слове