Pull to refresh
5
0

Программист

Send message

Как раз работаю сейчас с этими тремя протоколами для диагностики: can tp, hsfz и doip. Было интересно почитать, спасибо.

Тоже из Беларуси. Соотношение зарплаты (айтишной) к затратам не позволяет мне отсюда уехать, хоть и хочется. По белорусским меркам можно очень комфортно жить с такой зп.
Однозначно… читаешь и только расстраиваешься :(
В настройках приложения есть редактор хранимых процедур. Там же можно запускать процедуру с нужными аргументами, чтобы увидеть какой результат она вернёт.
Спасибо большое. Статься очень помогла.
Спасибо за статью. Узнал много нового о своём любимом языке программирования.

Изначально, дружественными (friend) могли быть только классы. Общей идеей концепции является помещение ряда сущностей в один домен безопасности, члены которого равны между собой в правах (а не нарушение инкапсуляции, как многие считают).

А вот это можно отнести к «священным войнам».
Заблудились в двух собственных методах? Печально.

Сарказмщик. Сформулирую инчае — я думал, речь идёт об одном методе, а не о двух.

с тремя вложенными QEventLoop в программе с тремя классами.

По вашей логике, вызов QDialog::exec — не самая лучшая идея, так как фактически получается цикл обработки в цикле обработке, то есть два цикла вложенные друг в друга.
Почему извращение? Обработка событий, на то и обработка событий, чтобы события обрабатывались… Если вы сразу этого не поняли, значит не до конца понимаете как устроены события в Qt.

З.Ы. Насчёт msleep — я думал мы с товарищем midday рассматривали метод sendRequest. Если говорить о sendWhileSuccess — соглашусь, не совсем корректно его (msleep) тут использовать. Лучше заменить его на… QEventLoop.
Какой sleep? Никакой sleep не вызывается. Я ещё раз говорю, что не фризится гуи. Соберите и проверьте сами.

QNetworkAccessManager простой как кирпич.

Но не всегда удобный. Чтобы отправить один запрос, создавать QNetworkAccessManager, соединять сигналы со слотами (ещё и слот создавать), потом заботится об удалении QNetworkReply… Слишком много «движений» для отправки одного запроса. А мой класс всё это скрывает.
Давайте еще микроконтроллеры вспомним, ага. У нас ведь главный поток отвечает за отрисовку интерфейса пользователя, и если он спит пока идет запрос (максимум 2*n секунд) — UI не отвечает на внешние раздражители.

Никаких фризов не происходит, интерфейс отрисовывается и реагирует на все события. Благодаря использованию QEventLoop::exec.
RequestError имеет всего два состояния, хватило бы возвращать bool. Хотя по сути ошибок может быть значительно больше

Да, именно потому, что ошибок может быть больше, не возвращается bool. Для моих целей мне, пока что, хватило этих двух состояний. Однако, было бы неплохо обрабатывать и другие случаи.
заставлять текущий (возможно главный) поток спать в бесконечном цикле, опять же без сигналов/слотов — быдлокод, и т.д.

А какую реализацию предложите для «избавления» от асинхронности QNetworkAccessManager? Не сказал бы «спал», скорее ожидание события. Если бы вы использовали другую библиотеку, которая работает не асинхронно, то у вас и там главный поток «спал», пока не придёт ответ. Я пока ничего лучшего кроме как связки с QEventLoop-ом не придумал.
Асинхронные. Одна из задач класса RequestSender — скрыть эту асинхронность.
Не соглашусь с использованием одного QNetworkAccessManager-а на всё приложение. Бывают случаи, когда нужно отправлять запросы через прокси, причём прокси не один, а несколько. Тогда я создаю несколько RequestSender-ов и отправляю запросы с использованием прокси в разных потоках.

Information

Rating
Does not participate
Location
Беларусь
Registered
Activity