Метка «С++» - 3

Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming». В этой части второй главы мы поговорим про асинхронное программирование.

Содержание:

  • Глава 1: Приступая к работе с Boost.Asio
  • Глава 2: Основы Boost.Asio
  • Глава 3: Echo Сервер/Клиент
  • Глава 4: Клиент и Сервер
  • Глава 5: Синхронное против асинхронного
  • Глава 6: Boost.Asio – другие особенности
  • Глава 7: Boost.Asio – дополнительные темы

Этот раздел глубоко разбирает некоторые вопросы, с которыми вы столкнетесь при работе с асинхронным программированием. Прочитав один раз, я предлагаю вам вернуться к нему, по мере прохождения книги, чтобы укрепить ваше понимание этих понятий.

Читать полностью »

Добрый день, уважаемые читатели Хабра. Как часто вы смотрите за актуальностью той или иной платформы? Если вы хороший специалист, то, наверное, всегда. Если же нечасто – пожалуй, пора начать это делать. Мы подготовили перевод исследования американского блогера Бена Подгурски (Ben Podgursky), позволяющего понять уровень оплаты программистов, в зависимости от языков программирования. Бен использовал в качестве источника данные пользователей на GitHub. Данный пост набрал большой рейтинг на Hacker News.

image

Стереотипов о разработчиках различных языков очень много, но мне было любопытно, насколько они соответствуют действительности.
Читать полностью »

Снова здравствуйте, читатели!

В предыдущей статье мы сделали обзор web-части Tizen SDK. Сегодня мы сделаем обзор нативной части для тех, кому необходима максимальная производительность и полный доступ к функционалу устройства в своих приложениях.

image

Всех заинтересованных приглашаем под кат.
Читать полностью »

В этой статье на примере реализации механизма обратного вызова будет рассмотрена возможности применения лямбда функций в удобной и быстрой форме.
Читать полностью »

Привет Читатели!
Это мой первый пост, поэтому не судите строго. Я хочу начать вольный перевод книги John Torjo «Boost.Asio C++ Network Programming» вот ссылка на нее.

Содержание:

  • Глава 1: Приступая к работе с Boost.Asio
  • Глава 2: Основы Boost.Asio
  • Глава 3: Echo Сервер/Клиент
  • Глава 4: Клиент и Сервер
  • Глава 5: Синхронное против асинхронного
  • Глава 6: Boost.Asio – другие особенности
  • Глава 7: Boost.Asio – дополнительные темы

Читать полностью »

pointres, gnd

Не так давно, один из сотрудников покинул наш коллектив и присоединился к компании, занимающийся разработкой программного обеспечения, связанного с встраиваемыми системами. Ничего особенного в этом нет, всегда и везде, кто-то уходит, а кто-то приходит. Всё зависит от количества плюшек, удобства и предпочтений. Интересно другое. Человек искренне переживает за состояние кода на новом месте работы, что в результате и вылилось в эту совместную статью. Тяжело, «просто программировать», когда знаешь, что такое статический анализ кода.
Читать полностью »

Введение

В данной статье пойдет речь о методе распознавания рукописного ввода путем математического анализа всех точек плоскости и перебора всех возможных комбинаций с целью отыскать наиболее лучшее наложение контрольных точек на ранее описанные фигуры. Поясню.
Рукописный ввод — это рисование мыслимым «пером» определенной фигуры. Рисование в компьютерных системах — это сохранение в графической памяти информации обо всех пикселях графического контекста. «Точка на плоскости» в математике — понятие абстрактное. В компьютерной же графике за этим понятием скрывается «пиксель». Данный алгоритм распознавания будет анализировать предоставленный ему набор точек( пикселей ) и пытаться в нем отыскать наиболее возможную и похожую фигуру. Фигура, в свою очередь, это каркас, содержащий лишь основные( контрольные ) точки, делающие фигуру уникальной.

Матчасть

Вообще говоря, сердце алгоритма — всем известная со времен школы Теорема Косинусов, являющаяся обобщенной теоремой Пифагора. Зная координаты трех точек плоскости и их порядок «появления» на ней, мы можем с легкостью определить угол, описанный этими точками( Вершина угла — вторая по счету точка ):

image

A( x1;y1 )
B( x2;y2 )
C( x3;y3 )

расстояния между точками находятся по теореме Пифагора

a^ = b^ + c^ — 2*b*c*cos(ALPHA)
cos(BETA) = (b^+c^-a^) / 2*b*c

Зная косинус, величину угла легко можно вычислить.

Среди набора точек, которые подаются на вход алгоритма, необходимо «подставить» точки во всевозможные каркасы фигур( о них выше ) и выбрать наилучшее решение среди найденных. Делается это следующим образом:

  1. Мы берем первую и последнюю точки каркасов фигур. Уже две есть, осталось отыскать третью ( для нахождения величины угла ).
  2. Поиск третьей осуществляется перебором все последующих точек после первой. Решение включать точку в предполагаемый каркас фигуры принимается на основе двух анализов:
    • Попытка подставить точку в угол( в качестве третьей, заключительной ) и проверить его на соответствие величине того же угла в каркасе реальной фигуры.
    • Проверить отношение сторон получившегося угла с тем же отношением сторон угла в каркасе реальной фигуры.

Если эти два условия выполняются, то алгоритм принимает решение о включении точки из набора точек в мыслимый каркас( при этом увеличиваем величину похожести на текущую анализируемую фигуру ).

Если, допустим, у нас есть несколько анализируемых каркасов, например, «8» и «6». И результат алгоритма распознавания: «8»-80%, «6» — 90%, то решение принимается в пользу той фигуры, в каркасе которой присутствует больше контрольных точек, т.е в пользу восьмерки.

Процент сходства набора точек с точками в каркасе высчитывается просто: суммируются все точки, которые сошлись с теми же точками в каркасе и находится отношение. Допустим, если в каркасе N контрольных точек, а у нас сошлось M, то процент сходства — M / N * 100

Читать полностью »

Вступление

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

Юнит. Что это такое?

Unit testing принято переводить на русский язык как модульное тестирование. Однако слово «модуль» имеет несколько другой смысловой оттенок, ассоциирующийся со схемой развертывания. Поэтому во избежание ненужных ассоциаций будем использовать англицизм «юнит». Еще раз вспомним, что такое юнит в рамках терминологии юнит тестирования:

Юнит – это фрагмент кода, дающий в данном окружении при определенных входных данных определенные выходные данные.

определение юнита
Заметим, что кроме самого юнита остальные все компоненты этого определения могут быть вырождены в пустое множество, однако чем больше пустых участников в этой заварухе, тем меньше смысла (семантики) содержится в юните.
Читать полностью »

Здравствуйте, уважаемые Хабарюзеры.
Как известно, фотографии со спутника «Электро-Л» выкладываются на FTP в двух форматах.
Один — общеизвестный jpg, который нам не интересен.
Второй, как писал Zelenyikot

«секретный» формат доступный только метеорологам. В сети нет ПО, которое позволяет его открыть и посмотреть. Правда меня заверили, что с точки зрения картинки, там то же самое, что и на JPEG, а дополнительная информация только текстом – всякие там, высоты, температуры, скорости…

Вот его мы и попытается прочитать.
Дополнительную информацию у меня прочитать не получилось, зато картинка вполне читаема, и она несколько отличается от той, что в JPG, по количеству бит на единственный канал. Если в JPG их 8 (256 оттенков серого), то в L15 их 10 (1024 оттенка серого).
Читать полностью »

Я помню, была неделя-две тематики морского боя, я к сожалению не успел опубликовать свою версию этой замечательной игры на С++.
Моя версия Морского боя под катом!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js