Сообщения

Сообщения за Декабрь, 2016

Новости госмессенджеров.

«Развитие IT-технологий является приоритетом работы правительства Республики Крым. Наш президент в своём послании Федеральному собранию назвал развитие цифровой экономики вопросом национальной безопасности и технологической независимости России. Глава государства обратил особое внимание на риски, связанные с цифровыми технологиями, и необходимость защиты от киберугроз», — отметил Сергей Аксёнов.
Андрей Назаров уточнил, что свои разработки программисты могут представить на третьем ялтинском форуме в апреле следующего года. Отметим, что Назаров также занимает пост председателя правления Ялтинского международного экономического форума.
Госконтрактом с крымским правительством уже заинтересовались разработчики российского мессенджера Dialog, которые участвуют в конкурсе Института развития интернета на создание государственного мессенджера для федеральных чиновников.

«Мы готовы принять участие и в разработке закрытого безопасного мессенджера для крымских чиновников, в свете чего планируем про…

Новости часа.

К вопросу о моем сообщении про QTcpSocket

Может еще рано радоваться, но тикету присвоили статус "Important".
Надеюсь все же разобраться. Я конечно приготовился делать свой HeartBeat. И даже провел подготовительные работы. Но все же...

Опять про QTcpSocket и disconnected

Казалось бы, все понятно и все ситуации разобраны. Ан нет.
Известная история. Как определить, что tcp-соединение разорвано? Ответ - настройки keepalive.

На стороне сокета, читающего данные все работает нормально.
На стороне сокета пишущего данные опять проявился сюрприз.
Если между фактом разрыва и отработкой попыток KeepAlive в сокет не было записано данных, то все отрабатывается штатно. QTcpSocket выбрасывает disconnected.
НО Если после разрыва в сокет были записаны данные, сигнал о разрыве не выбрасывается. Более того, write фиксирует успех записи данных. bytesToWrite показывает 0, что означает, что данные уже записаны в канал. state сокета показывает QAbstractSocket::ConnectedState.
Не поленился написал тестовый пример для демонстрации описываемого эффекта. voidSocketTransport::onConnected(){
qDebug()<<"OnConnected";
mSocket.setSocketOption(QAbstractSocket::KeepAliveOption,1);
intIdle=2;
intCount=3;
intInterval=2;
if(setsockopt(static_cast<int>(mSocket.socketDescript…

Cmake заметки.

После того как cmake научился для Qt5 автоматически "мокать" необходимые заголовки многие разучились это делать руками. А это иногда нужно.
Вот например, есть у вас в одном проекте класс с одинаковым именем, но в разных пространствах имен (и в разных каталогах, разумеется). И не говорите, что так не бывает. Еще как бывает.
Так вот, стандартная опция
set(CMAKE_AUTOMOC ON) будет генерить файлы с одинаковыми именами в каталоге сборки и обязательно приведет к ошибке.
Что делать? Мокать файлы самому. Для этого.

Установим set(CMAKE_AUTOMOC OFF)Определим переменную header set(header ..... ) в которой перечислим необходимые для moc заголовочные файлы.Скажем qt5_wrap_cpp(moc ${header})В add_library добавим ${moc} После этих манипуляций cmake будет рад в каталоге сборке создать внутренние служебные каталоги с созданными moc-файлами. Конфликтов имен при такой сборке не будет.

Web и мобильные решения.

Технологии Web создавались давно и с совершенно определенной целью. И пошли они в мир и стали популярными. Каждый захотел завести свой сайт и стало их великое множество. Для поиска кусков текста в них люди придумали поисковые машины. Благо все сайты могут быть доступными через одно единственное приложение - браузер. На настольных компах недостатки web-решений были терпимыми, но с приходом мобильных платформ пользователь обнаружил недостатки со всей яркой выпуклостью. И он сделал свой выбор!
90% народа на телефонах и планшетах предпочитает специально созданные приложения их web-версиям. Спираль развития технологий начала свой новый виток и вот уже опять все новые и новые фирмы (и даже отдельные люди) захотели создавать свои собственные приложения для телефонов и работать со своими клиентами именно через них. И это верно и хорошо!
Но мы же не можем поставить на свои телефоны тысячи приложений.
Можно использовать терминальный подход и стримить приложения в телефон. Можно в приложения вс…

QtCreator 4.2_rc1 (Новая версия. Найденные проблемы.)

В QtCreator (с некоторых пор) активно использую clang-режим для фоновой постоянной проверки корректности программы. Средство весьма дорогое.
В 4.2 длительное использование большого числа открытый файлов приводит к захвату значительных объемов памяти. Редко используемые файлы, которые однако же открыты в проекте, не выгружаются. (хотя эта особенность была заявлена) Становится практически нормой держать "в голове" 8-9 гигов для работы clangbackend в активном проекте. Хорошая штука, к которой я очень быстро привык. Очень не хочется с ней расставаться.

В clang-режиме при вводе и редактировании QObject::connect первый аргумент (объект генерирующий сигнал) не автокомплетится. При автокомплете сигналов и слотов в новой нотации выставляются скобки (как и в 4.1)


При редактировании конструктора родительский конструктор не автокомплетится.
Автозакрытие и контроль скобок обрабатывается некорректно. (Дозволяет создавать лишние)

Вроде починили постоянные проблемы в настройке системы сборк…