ABOUT US

Our development agency is committed to providing you the best service.

OUR TEAM

The awesome people behind our brand ... and their life motto.

  • Neila Jovan

    Head Hunter

    I long for the raised voice, the howl of rage or love.

  • Mathew McNalis

    Marketing CEO

    Contented with little, yet wishing for much more.

  • Michael Duo

    Developer

    If anything is worth doing, it's worth overdoing.

OUR SKILLS

We pride ourselves with strong, flexible and top notch skills.

Marketing

Development 90%
Design 80%
Marketing 70%

Websites

Development 90%
Design 80%
Marketing 70%

PR

Development 90%
Design 80%
Marketing 70%

ACHIEVEMENTS

We help our clients integrate, analyze, and use their data to improve their business.

150

GREAT PROJECTS

300

HAPPY CLIENTS

650

COFFEES DRUNK

1568

FACEBOOK LIKES

STRATEGY & CREATIVITY

Phasellus iaculis dolor nec urna nullam. Vivamus mattis blandit porttitor nullam.

PORTFOLIO

We pride ourselves on bringing a fresh perspective and effective marketing to each project.

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

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


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

    «Мы готовы принять участие и в разработке закрытого безопасного мессенджера для крымских чиновников, в свете чего планируем проведение масштабной презентации корпоративного мессенджера Dialog в дни прохождения ялтинского форума в апреле 2017 года», — заявил Андрей Кузнецов, директор по информационным технологиям мессенджера Dialog.



    https://russian.rt.com/russia/article/341179-chinovniki-krym-messendzher
  • Новости часа.

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

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

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

    Опять про QTcpSocket и disconnected

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

    На стороне сокета, читающего данные все работает нормально.
    На стороне сокета пишущего данные опять проявился сюрприз.
    Если между фактом разрыва и отработкой попыток KeepAlive в сокет не было записано данных, то все отрабатывается штатно. QTcpSocket выбрасывает disconnected.
    НО
    Если после разрыва в сокет были записаны данные, сигнал о разрыве не выбрасывается. Более того, write фиксирует успех записи данных. bytesToWrite показывает 0, что означает, что данные уже записаны в канал. state сокета показывает QAbstractSocket::ConnectedState.

    Не поленился написал тестовый пример для демонстрации описываемого эффекта.

    void SocketTransport::onConnected()
    {
    qDebug()<<"OnConnected";
    mSocket.setSocketOption(QAbstractSocket::KeepAliveOption, 1);
    int Idle=2;
    int Count=3;
    int Interval=2;
    if(setsockopt(static_cast<int>(mSocket.socketDescriptor()), IPPROTO_TCP, TCP_KEEPIDLE,
    &Idle, sizeof(Idle))<0)
    qDebug()<<"Error setsockopt IPPROTO_TCP, TCP_KEEPIDLE";
    if(setsockopt(static_cast<int>(mSocket.socketDescriptor()),IPPROTO_TCP, TCP_KEEPCNT,
    &Count, sizeof(Count))<0)
    qDebug()<<"Error setsockopt IPPROTO_TCP, TCP_KEEPCNT";
    if(setsockopt(static_cast<int>(mSocket.socketDescriptor()), IPPROTO_TCP, TCP_KEEPINTVL,
    &Interval, sizeof(Interval))<0)
    qDebug()<<"Error setsockopt IPPROTO_TCP, TCP_KEEPINTVL";
    mTimer.start(100);
    }


    void SocketTransport::writeData()
    {
    qDebug()<<"BYTES to write"<<mSocket.bytesToWrite()<<mSocket.state();
    if(mSocket.state()==QAbstractSocket::UnconnectedState)
    {
    qDebug()<<"Unconnected state";
    QCoreApplication::processEvents();
    return;
    }
    QUuid id=QUuid::createUuid();
    QByteArray data=id.toByteArray();
    qDebug()<<id<<data.size();
    qDebug()<<mSocket.write(data, data.size());
    //qDebug()<
    //QCoreApplication::processEvents();
    }

    https://drive.google.com/open?id=0B1NCPMWs3oAFVjk3ZVJSNUZIWTg
    Определяем параметры KeepAlive и по таймеру пишем в сокет данные. Выдергиваем кабель и получаем описываемый эффект. (по ссылке архив с полным примером). Все тестировалось в Linux c Qt5.7 и Qt5.8

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

    Если я не прав, очень прошу наставить на путь истинный.

  • Cmake заметки.

    Cmake заметки.

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

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


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

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

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

    И мы говорим фирмам.
    Вы же все равно собираетесь заказывать мобильные приложения. Давайте поиграем в новую игру. В новую проактивную экосистему где ваши услуги будут доступны пользователю сразу и по запросу. Не надо создавать отдельное приложение. Мы создадим вашу фрагмент мозаики и добавим его целое произведение.
    Кому нужна эта глупая реклама и "продвижение" в поисковых запросах.

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

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

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

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


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

    Вроде починили постоянные проблемы в настройке системы сборки cmake+makefile+codeblocks. Раньше все норовил переключиться на сmake+ninja+codeblocks.

    И конечно особо мерзкий баг - неверно выставляемые #define при создании нового класса. Всегда в дефайнах указывалась полная нотация пространства имен.

    Указать эти ошибки в баг-репортах или сами увидят?

  • Поиск по этому блогу

    Copyright (c) Oleg Shall. Технологии Blogger.

    WHAT WE DO

    We've been developing corporate tailored services for clients for 30 years.

    CONTACT US

    For enquiries you can contact us in several different ways. Contact details are below.

    Oleg_old

    • Street :Road Street 00
    • Person :Person
    • Phone :+045 123 755 755
    • Country :POLAND
    • Email :contact@heaven.com

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.