Обновить
379.1

C++ *

Типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Marmalade SDK. Интеграция с сервисами рекламы AdMob, Chartboost, Inmobi и Leadbolt на платформах iOS и Android

Время на прочтение18 мин
Охват и читатели3.5K

Подключение расширений в проект


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

При регистрации приложения система присваивает ему некий идентификатор (или пару идентификаторов — как это сделано в Chartboost), которые будут идентифицировать ваши приложения при взаимодействии с сервисами рекламы.

На сегодня я использую Marmalade SDK версии 7.8.0p3 [439542]. Сборка уже содержит в себе следующие интересующие нас расширения:
  • %SDK install folder%/extensions/s3eGoogleAdMob
  • %SDK install folder%/extensions/s3eInMobiAds
  • %SDK install folder%/extensions/s3eChartboost

Читать дальше →

Функциональное тестирование программ на Qt

Время на прочтение7 мин
Охват и читатели20K

Предисловие


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


Учитывая все вышесказанное, а также тот "незначительный" факт, что заказчик в ТЗ прописал необходимость автоматического тестирования указанных в том же ТЗ функциональных требований, при старте очередного проекта стал актуальным вопрос выбора инструмента для автоматизации тестирования GUI. Проект был на Qt, и требовалась кроссплатформенность (Windows, Linux).


Какой в итоге opensource инструмент появился, смотрите по катом.

Подробности

Сотрудники Яндекса будут представлять Россию в комитете по стандартизации C++

Время на прочтение4 мин
Охват и читатели26K


Хочу поделиться с вами радостной новостью: теперь мы можем влиять на развитие C++! Под «мы» я имею в виду всех российских программистов, работающих с C++.

Но обо всем по порядку.
Читать дальше →

Как отслеживать новости в мире C++

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

  1. Вдумчивое чтение — чтение фундаментальных книг, структурированных и информативных. Это требует длительной концентрации, причём нельзя читать в состоянии усталости, поскольку вы попросту уснёте и ничего не запомните. Если у вас ещё нет электронной читалки — обязательно купите.
  2. Лёгкое чтение — чтение менее серьёзной литературы вроде книг о мотивации, продуктивности, Soft Skills. Всё это зря недооценивается некоторыми программистами. Эти книги не требуют большой концентрации внимания. Да, это совершенно не о языке С++, но это о том, как вообще что-то делать и всё-таки сделать. Хорошо читается перед сном.
  3. Подкасты — хорошо идут, когда нужно переключиться с чего-то одного на другое, или во время шоппинга. Помогают взглянуть на что-то неожиданное. Тренируют умение слушать и понимать услышанное, что может быть полезным умением (например, для участия в совещаниях). Если английский язык для вас не родной — вы можете услышать как произносятся термины и имена. Я рекомендую послушать CppCast или Software Engineering Radio — я был приятно удивлён широким охватом их тем. Первый эпизод вышел в 2006-ом году, подкаст наполовину состоит из истории программной инженерии и наполовину из теории (паттерны, проблемы, решения и т.д.)
  4. Видео и лекцииCppCon, CppNow, Meeting C++, ACCU Conference для начала. Там просто ошеломляющее количество интересных докладов. В отличии от подкастов это требует визуального внимания и концентрации, но и выучить в результате можно больше. Я думаю просмотр 2-5 видео в неделю вполне достижимо.
    Совет: увеличивайте скорость аудио/видео — мозг быстро привыкает к этой скорости и вы сможете услышать больше за меньшее время.
  5. Обсуждения, форумы, твиттер — этот канал обмена информацией требует меньше всего концентрации. Вы можете быстренько просмотреть дискуссии, ленту твиттера в поисках чего-то интересного — просто убивая время. Если что-то нашлось — можно добавить это в список для чтения позже. Чем это всё полезно — огромным разнообразием людей, мнений, подходов, задач и решений. Хороший способ разогнать свой мозг весьма случайной информацией.

    Вот, например, мой список Core C++ чтобы следить за значимыми в мире С++ разработчиками. А ещё есть несколько страниц и групп в Facebook и неплохие обзоры от Jens Weller.

    Для дискуссий о С++ есть раздел на Реддите (прим. переводчика: а ещё есть хаб на Хабрахабре). Ну и, конечно, группы комитета по стандартизации C++
  6. Блоги и статьи — обычно занимает 5-10 минут чтобы прочитать среднюю статью. Если встречается более глубокая статья — можно пометить её для чтения «когда я буду сконцентрирован». По моим наблюдениям выходит 5-10 хороших статей в неделю и не так сложно прочесть их все.

Читать дальше →

C++ User Group, встреча в Казани 28 мая 2016

Время на прочтение2 мин
Охват и читатели2.4K

Всем привет!

У нас отличные новости для С++ разработчиков Татарстана: 28 мая в Иннополисе пройдет встреча российского сообщества C++ User Group Russia

Мы давно мечтали провести встречу в Казани и надеемся, что это встреча будет первая и не последняя. Как всегда, мы надеемся, что это будет замечательный повод для разработчиков из других городов посетить Казань.

Кто следит и участвует в жизни сообщества хорошо знают, что мы всегда стремимся формировать программу докладами разработчиков из разных городов России. Под катом кратко про докладчиков и доклады.
Читать дальше →

У вас не найдется минутки чтобы поговорить о C++?

Время на прочтение2 мин
Охват и читатели17K
Как вы, вероятно, догадываетесь, изрядная часть нашей работы связана с программированием. Ну просто потому, что это самый простой из известных нам методов создания программного обеспечения. Основная разработка ведется на С++, и так уж совпало что у нас работают довольно сильные С++ программисты. Товарищи они общительные и периодически желают поговорить с умными людьми. Казалось бы, у нас их немало, могли бы и друг с другом поговорить. Но нет. Им интересно общение и с другими программистами. Поэтому мы решили собрать большую встречу, на которой С++ разработчики могли бы пообщаться друг с другом, послушать пару интересных докладов, поделиться опытом.

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

Читать дальше →

Разработка приложения для разгадывания филиппинских кроссвордов на C++ в среде Marmalade SDK

Время на прочтение15 мин
Охват и читатели7.8K

Marmalade SDK и кроссплатформенность


Marmalade SDK как среда для разработки кроссплатформенных мобильных (и не только) приложений предоставляет разработчику C++ API. По сути, это набор расширений (Extensions), каждое из которых внутри себя содержит конкретную реализацию функционала (работа с графикой, файловой системой, сетью, UI, внутриигровые покупки, работа с аудио-видео и т. д.) под каждую отдельную платформу (Android, iOS, WinPhone и множество других платформ).

Поэтому разработчику в процессе написания практически нет необходимости завязываться на особенности той или иной платформы, за исключением некоторых случаев (возможно список неполный):
— некий функционал может не поддерживаться в определенной ОС;
— разработчик сам решил реализовать логику приложения по-разному в зависимости ОС.

Но вот в случае, если разработчику потребуется функционал, который отсутствует в стандартном дистрибутиве Marmalade SDK, ему может потребоваться самому собрать свой Extension со своей реализацией под каждую платформу — а значит писать платформозависимый код.

Лично мне для реализации данного приложения хватило стандартного набора расширений, поэтому платформозависимого кода у меня нет. Большая часть тестирования и отладки (примерно 90%) была произведена на винде на симуляторе (остальные 10% — это отладка масштабирования на устройстве — так как для этого нужны zoom-жесты двумя пальцами). Билды под Android и iOS также собираются на винде (для этого нужно поставить соответствующие инструменты, описанные в доке мармелада). Мак нужен только для заливки ipa-файла в консоль iTunesConnect через эппловский ApplicationLoader.
Читать дальше →

Предупреждения компилятора в С++: принять нельзя отказать

Время на прочтение7 мин
Охват и читатели14K

Зашел у нас как-то в Cloud4Y разговор о программировании в облаке и о том, какой язык программирования можно по праву считать самым «облачным». Долго ли котротко ли, дошли до обсуждения ошибок копмиляторов — о их двоякой натуре: и проигнорировать все нельзя, и обращать внимание на каждый — умом тронуться недолго. Сегодня мы представим вам небольшой сценарий обращения с предупреждениями компилятора, который позволит не пропустить грубую ошибку и сохранит нервную систему в порядке.


image
Читать дальше

Сжатие и передача потокового видео по TCP с помощью OpenCV

Время на прочтение3 мин
Охват и читатели17K
По работе я занимаюсь разработкой алгоритмов обработки изображений и в частности алгоритмами автоматического слежения за объектами на видео для специального применения. Недавно понадобилось сделать модель алгоритма, управляемую с удаленного компьютера для отладки логики работы в сложной системе. Раньше такая задача не стояла, т.к. все алгоритмы реализовывались в итоге на FPGA. Давно работаю с OpenCV и, потерев руки, подошел к написанию программы. Но энтузиазм быстро погас, когда столкнулся непосредственно с передачей видео по сети.

Задача заключалась в следующем:

1. Написать программу сервер, которая загружает видео из файла, сжимает в JPEG и передает по протоколу TCP программе клиенту.
2. Написать программу клиент, которая принимает видео по TCP, декодирует и отображает.
Читать дальше →

Передача видео с глубоководного робота

Время на прочтение28 мин
Охват и читатели16K
Хочу поделиться с сообществом опытом разработки программного обеспечения для просмотра и записи видео-сигнала передаваемого с глубоководного робота Moby Dick. Разработка проводилась по заказу лаборатории подводной робототехники The Whale. Проект был призван обеспечить:
— работу с любыми IP-камерами поддерживающими протокол RTSP;
— просмотр и запись видео от нескольких IP-камер;
— просмотр и запись стерео-видео от двух выделенных IP-камер;
— запись видео с экрана;
— комфортный просмотр видео при кратковременном падении скорости передачи данных.


Глубоководный робот Moby Dick проекта 1-0-1 десантированый с борта трансрейдера ВКС России «Лунная радуга» исследует океан Европы (в представлении художника, коллаж)

Если вас не пугают мегатонны кода добро пожаловать под кат.

Читать дальше →

Японские кроссворды на QtQuick

Время на прочтение7 мин
Охват и читатели9.9K

Череп и кости, КДПВ


Люблю в свободное время что-нибудь прототипировать. Это позволяет поизучать что-то новое. Данный прототип является клиентом для ресурса http://www.nonograms.ru/, разработчиком которого является Чугунный К.А/ KyberPrizrak /. Весь код доступен на GiHub. На стороне C++ работа с HTML, модель галереи. На стороне QtQuick визуализация.


В этот раз решил поковырять:


  • Q_GADGET и его использование в Qml;
  • есть ли жизнь без Qt WebKit;
  • поковырять Qt Labs Controls.


    Что сделано:


  • галерея кроссвордов;
  • разгадывание кроссворда.

Под катом будет рассмотрено:


  • скриншоты;
  • как получить HTML без Qt WebKit;
  • как сделать кроссворд без Canvas.
Читать дальше →

Добавление в Unreal Engine поддержки dxf формата

Время на прочтение7 мин
Охват и читатели8.6K
image

Здравствуйте меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Сегодня расскажу как добавить поддержку dxf файлов в Unreal Engine. (Исходники как всегда в конце статьи).

DXF — это открытый формат векторной графики, разработанный компанией Autodesk. В силу своей открытости этот формат поддерживается огромным количеством редакторов векторной графики.

Читать дальше →

Vulkan API (glNext) от Khronos Group

Время на прочтение10 мин
Охват и читатели57K
Относительно недавно вышел новый Vulkan API — можно сказать, наследник OpenGL, хотя основан Vulkan на API Mantle от AMD.
Конечно, развитие и поддержка OpenGL не прекратилось, а также в свет вышел и DirectX 12. Что там с DirectX 12 и почему его поставили только на Windows 10 — я, к сожалению (а может и к счастью) не знаю. Но вот кроссплатформенный Vulkan меня заинтересовал. В чём же особенности Vulkan и как правильно его использовать я постараюсь рассказать вам в этой статье.

Vulkan Logo


Итак, для чего нужен Vulkan и где он может быть использован? В играх и приложениях, работающие с графикой? Конечно! Вычислять, как это делает CUDA или OpenCL? Без проблем. Обязательно ли для этого нам нужно окно или дисплей? Конечно нет, вы можете сами указать, куда транслировать ваш результат или не транслировать его вообще. Но обо всём по порядку.
Читать дальше →

Ближайшие события

Давайте знакомиться: компания Align Technology

Время на прочтение12 мин
Охват и читатели40K
Представьте себе компанию, будничный рабочий процесс которой включает лазерные резаки, трехмерные принтеры и трехмерные сканеры, рентгеновские томографы, CAD, композитные материалы, автоматические станки с ЧПУ, оптическую и биохимическую лабораторию и даже собственную сборку специализированных железячных девайсов. Здесь широко реализуется поточная обработка данных в реальном масштабе времени, используется 3D печать, занимаются биоинжинерией и программируют FPGA, есть сети хранящие терабайты данных, датамайнинг и даже немножко искусственного интеллекта. Представили? А теперь попробуйте угадать чем эта компания может заниматься. Сразу скажу, что это не космос, не авиация и даже не автомобилестроение.


Заинтересовались?..

Приводим данные и код в порядок: данные и разметка, часть 2

Время на прочтение12 мин
Охват и читатели15K


В этой серии из двух статей о производительности и памяти описываются базовые принципы и приводятся советы для разработчиков по повышению производительности программного обеспечения. Эти статьи затрагивают, в частности, работу памяти и компоновку. В первой части было рассказано об использовании регистров и о применении алгоритмов блокирования для повышения многократного использования данных. В этой части статьи сначала описывается компоновка данных для обычного распараллеливания — программирования для общей памяти с потоками, а затем распределенные вычисления по сетям MPI. В статье описываются понятия, связанные с распараллеливанием: векторизация (инструкции SIMD) и работа с общей памятью (многопоточная архитектура), а также вычисления с распределенной памятью. И наконец, в этой статье сравниваются компоновки данных «массив структур» (AOS) и «структура массивов» (SOA).
Читать дальше →

SDK для внедрения поддержки электронных книг в формате FB2

Время на прочтение10 мин
Охват и читатели18K


Вы знаете, что «нобелевку» по научной фантастике получил китайский автор Лю Цысинь (Liu Cixin, 劉慈欣) с произведением The Three-Body Problem ( 三體). На эту книгу обратили внимание Барак Обама (пруф) и Марк Цукерберг (пруф).

image
Ольга Браатхен по своей инициативе перевела книгу на русский (вот тут можно качнуть fb2), за что ей большое спасибо.

Еще один кандидат на «нобелевку» в 2016 — это Нил Стивенсон (написавший «Лавину» и «Криптономикон») с произведением Seveneves (качнуть на английском можно тут, жаль, что на русский никто не взялся переводить).

Разработчики компании EDISON создали программу Управления доступом к электронным документам, о чем я писал пару лет назад, а сегодня речь пойдет об SDK для внедрения поддержки электронных книг в формате FB2.

Читать дальше →

Microsoft избавится от телеметрии в Visual C++ в Update 3

Время на прочтение2 мин
Охват и читатели17K
image

Месяц назад Евгений Гречников grechnik опубликовал пост «Стандартная библиотека Visual Studio 2015 и телеметрия», в котором рассказал об интересной находке: оказалось, что в любом бинарнике, скомпилированном VS2015 из программы на C или C++, есть код, который может писать логи — и выглядело это всё слегка подозрительно, особенно в силу отсутствия исходников telemetry.cpp.

Три дня назад этот вопрос был снова поднят на Reddit, где время от времени в комментариях появляются разработчики Visual Studio — и вот сегодня общественности наконец-то удалось получить вполне себе официальный ответ от представителя Microsoft.

Самое важное: телеметрия будет убрана из статических библиотек в обновлении Update 3.
Читать дальше →

Вы не знаете Node: краткий обзор основных возможностей

Время на прочтение20 мин
Охват и читатели88K


Ремарка от автора
Это статья новая, но она не о новых возможностях. Она о core, то есть о платформе и о том что многие кто просто используют grunt, или webpack могут не подозревать, так скзать about fundamentals.

Более подробно читайте:

комментарии rumkin:
habrahabr.ru/company/mailru/blog/283228/#comment_8890604

комментарии Aiditz:
habrahabr.ru/company/mailru/blog/283228/#comment_8890476

комментарии Suvitruf:
habrahabr.ru/company/mailru/blog/283228/#comment_8890430


Идея этой публикации была навеяна серией книг Кайла Симпсона «Вы не знаете JavaScript». Они являются хорошим началом для изучения основ этого языка. А Node — это практически тот же JavaScript, за исключением небольших отличий, о которых я расскажу в этой статье. Весь код, приведённый ниже, вы можете скачать из репозитория, из папки code.

Зачем вообще переживать насчёт Node? Node — это JavaScript, а JavaScript используется почти везде! Мир был бы лучше, если бы большинство разработчиков в совершенстве владели Node. Чем лучше приложения, тем лучше жизнь!

Эта статья представляет собой реалистичный взгляд на наиболее интересные основные возможности Node. Ключевые моменты статьи:

  1. Цикл событий: освежаем ключевую концепцию, позволяющую реализовать неблокирующие операции ввода/вывода.
  2. Глобальный объект и процесс: как получить больше информации.
  3. Эмиттеры событий: интенсивное введение в событийную модель (event-based pattern)
  4. Stream’ы и буферы: эффективный способ работы с данными
  5. Кластеры: форкай процессы как профессионал
  6. Обработка асинхронный ошибок: AsyncWrap, Domain и uncaughtException
  7. Аддоны на C++: внесение своих наработок в ядро и написание собственных аддонов на С++
Читать дальше →

Приводим данные и код в порядок: оптимизация и память, часть 1

Время на прочтение10 мин
Охват и читатели28K
В этой серии из двух статей говорится о том, как структура данных и памяти влияет на производительность. Предлагаются определенные действия для повышения производительности программного обеспечения. Даже простейшие действия, показанные в этих статьях, позволят добиться существенного прироста производительности. Многие статьи, посвященные оптимизации производительности программ, рассматривают распараллеливание нагрузки в следующих областях: распределенная память (например, MPI), общая память или набор команд SIMD (векторизация), но на самом деле распараллеливание необходимо применять во всех трех областях. Эти элементы очень важны, но память также важна, а про нее часто забывают. Изменения архитектуры программ и применение параллельной обработки влияют на память и на производительность.

Читать дальше →

Очередная Reflection Library и ORM для C++

Время на прочтение8 мин
Охват и читатели20K


Сразу же предупрежу о велосипедности выдаемого здесь на обозрение. Если прочтение заголовка вызывает лишь с трудом подавляемый возглас «Твою мать, только не новый таксон ORM!», то лучше наверное воздержаться от дальнейшего чтения, дабы не повышать уровень агрессии в космологическом бульоне, в котором мы плаваем. Виной появлению данной статьи явилось то, что в кои-то веки выдался у меня отпуск, в течение которого решил я попробовать себя на поприще написания блогопостов по околохабровской тематике, и предлагаемая тема мне показалась вполне для этого подходящей. Кроме того, здесь я надесь получить конструктивную критику, и возможно понять чего же еще с этим можно сделать этакого интересного. В конце будет ссылка на github-репозиторий, в котором можно посмотреть код.
Читать дальше →