Работа с Boost и CMake под Windows

Работа с Boost и CMake под Windows

Приветствую! Составил небольшую заметку по настройке и статической линковке библиотеки Boost с помощью CMake под Windows. Boost представляет собой набор библиотек на языке C++ с широким функционалом и является в некотором роде полигоном для апробирования некоторых идей, которые затем попадают в новые стандарты языка С++. Для установки и настройки CMake проекта прошу под кат!

Читать далее

Многопоточность в Qt через наследование QThread

Многопоточность в Qt через наследование QThread

В одной из прошлых статей “О Многопоточности в Qt и как создать поток” рассмотрены различные способы выполнения кода в отдельном потоке при использовании фреймворка Qt. Один из способов: наследование от класса QThread и переопределение метода run() который только ленивый уже не обругал и не заклеймил. Также поступил и я но поразмыслив решил взять свои слова обратно и подробнее рассказать об этом способе и его особенностях.

Читать далее

“Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих” обзор книги

Книга Адитьи Бхаргавы “Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих” издательства “Питер”.

Приветствую! Последнее время я много читаю для развития в профессиональном плане, для закрытия пробелов в знаниях, для расширения кругозора и предметной области, для повторения забытого материала. Моя книжная полка содержит литературу, связанную с разработкой программного обеспечения, архитектурой, языком программирования Си++ и другие книги на схожую тематику. Чтобы материал лучше усваивался полезно периодически повторять и вспоминать, поэтому я решил запустить новую рубрику с обзорами книг. Это позволит мне ещё раз вспомнить и прокрутить в голове содержание книги и поделиться мнением о книге, стоит ли её приобретать или это информационный мусор с некачественным переводом, ляпами, опечатками и ужасным оформлением, выпущенная горе-издателем с целью лишь бы что-то продать. Профессиональная литература стоит не дешево, но качество выпускаемых книг очень разное, поэтому если вы думаете стоит ли приобретать и изучать ту или иную книгу или нет, то эта рубрика будет кстати. Я и сам часто читаю отзывы на книгу перед покупкой и буду рад, если вы поделитесь отзывом на другие книги схожей тематики. 

Первой книгой для обзора стала книга Адитьи Бхаргавы “Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих” издательства “Питер”. 

Читать далее

Отлов событий в Qt с помощью фильтров событий

Простой способ отлова событий в Qt с помощью фильтров событий

Исполнение компьютерных программ происходит последовательно, выполняя одну инструкцию за другой. Иногда в программе требуется дождаться некоторого события и отреагировать на него. Ждать этого события в бесконечном цикле расточительно и для обработки таких событий придуманы библиотеки и системные функции, позволяющие вызывать пользовательские функции в тот момент когда происходит событие. В Qt имеется собственная система событий. Очевидный и топорный способ реакции на возникшее событие — переопределение методов базового класса, но этот же способ является и самым громоздким, а также может приводить к нарушению принципов DRY (don’t repeat yourself) т. е. дублированию кода. В этой статье вы познакомитесь со способом вынесения пользовательских обработчиков событий в отдельный класс с возможностью повторного использования.

Читать далее

Краткий справочник по умным указателям С++

Указатели

Умные указатели появились в стандарте С++11 и являются фундаментальной основой для написания безопасного кода с точки зрения утечек памяти в современном С++. Благодаря идиоме RAII (Resource Acquisition Is Initialization – получение ресурса есть инициализация), используемой в умных указателях, они позволяют эффективно работать с указателями на динамически выделенные области памяти. В этой статье вы узнаете об основных моментах при работе с этими полезными типами.

Читать далее

Синхронизация потоков и безопасная работа с общими данными в многопоточной среде на C++ и Qt

Синхронизация потоков и безопасная работа с общими данными в многопоточной среде на C++ и Qt

Представьте, что вы с другом пишете реферат и у вас один учебник на двоих. Вы сели писать реферат, написали несколько страниц, оставили учебник открытым с намерением дописать его позже и ушли по своим делам. В это время ваш друг, который живет с вами в одной комнате, вернулся домой, увидел, что у вас что-то написано на листах, а рядом лежит учебник и решил, что вы закончили свой реферат. Он начинает листать учебник, выкидывая все ваши закладки, находит нужный ему материал и пишет свой реферат. Спустя несколько часов вы возвращаетесь домой, ваш друг уже спит, и вы решаете дописать реферат. Садитесь за письменный стол и «о, ужас!» все ваши закладки сбиты и вы не можете найти то место, где остановились. Неприятная ситуация? А ведь такая же может возникнуть в многопоточной среде, когда одни и те же внешние данные используются несколькими потоками. О том, как с этим жить, я расскажу в этой статье.

Читать далее

О Многопоточности в Qt и как создать поток

Многопоточность в Qt и C++

Многопоточность — свойство платформы выполнять код внутри одного процесса может выполнятся “параллельно” без предписанного порядка во времени. Такой подход полезен когда отделить ресурсоёмкую задачу от остального кода. Например, читать с диска в память большой файл и не «заморозить» графический интерфейс программы. В этой статье поговорим о многопоточности в C++ и о том, как это работает во фреймворке Qt. На примере покажу как запустить в отдельном потоке только один метод объекта, оставив остальные методы «снаружи», обсудим плюсы и минусы такого подхода и как поступить в такой ситуации!

Читать далее

Как работает Git? Одно из частых заблуждений начинающих

Как часто при изучении чего-то нового вы пребывали в состоянии неопределённости, неясности синтаксиса и внутреннего устройства предмета изучения? Мозг буквально “скрипит и закипает” при попытке усвоить и уяснить материал. Однако, со временем эти процессы утихают по мере того, как вы погружаетесь в соответствующий материал. Тем не менее, существует важное заблуждение о работе Git, которое часто встречается среди большинства новичков. Вот что, вероятно, они думают:

Читать далее

Чему я научился за годы программирования: 12 советов разработчикам

Помню тот далекий день, примерно в 2005-2006 году, когда я будучи школьником, методом “проб и ошибок” пытался заставить работать свой первый скрипт. В конце-концов мне это удалось и я ощутил приятную радость и воодушевление. Так начинался мой путь разработчика. Весь этот путь я прошел практически один, у меня не было наставника или учителя, многое приходилось постигать самому, ошибаясь, осознавая это и возвращаясь обратно, пробуя пойти другим путём. Глядя на этот путь, я сформулировал некоторые важные вехи на этом пути и хочу поделиться ими.

Читать далее

Менеджер контекста with в Python

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

Читать далее