Мы с Vass записали и выложили вторую серию подкаста «Заметки о Qt».
Сам подкаст на rpod.ru — qt-notes.rpod.ru/273862.html
Читать полностью »
Рубрика «c++» - 261
Подкаст «Заметки о Qt» s01e02
2012-04-21 в 21:21, admin, рубрики: c++, cordova, QML, qt, qt components, qt quick, Qt Software, qt5, Raspberry Pi, подкасты, Программирование, статистика, метки: c++, cordova, QML, Qt, qt components, qt quick, qt5, Raspberry Pi, подкасты, статистикаСамый правильный безопасный printf
2012-04-21 в 11:25, admin, рубрики: c++, c++11, constexpr, static_assert, user-defined literals, variadic templates, метки: c++11, constexpr, static_assert, user-defined literals, variadic templatesПод катом Вас ждет увлекательная история о том, как я сильно расстроился, познакомившись поближе с пользовательскими литералами (с нового стандарта), но при этом в последствии все же реализовал вышеупомянутую функцию, а также разобрался с constexpr, а позже еще и реабилитировал те самые литералы.Читать полностью »
Давайте сделаем паузу. Способ улучшения синхронизации потоков
2012-04-20 в 12:14, admin, рубрики: c++, openmp, VTune Amplifier XE, Блог компании Intel, метки: openmp, VTune Amplifier XE
Пауза — временное молчание, перерыв в звучании музыкального произведения в целом или какой-либо его части или отдельного голоса.
[Википедия]
Удивительно, но иногда так бывает, чтобы что-то сделать вцелом быстрее, надо это делать медленнее или вообще с паузами. Например, при имплементации активного ожидания spin-wait в многопотоковом коде рекомендуется использовать инструкцию pause, которая, как утверждает Intel Instruction Set Reference, делает это ожидание наиболее эффективным. «Какая чушь!» — скажете вы. Как может быть ожидание эффективным? Разработчики микропроцессоров утверждают, что при активном ожидании с инструкцией pause чип потребляет намного меньше энегии еще со времен Pentium 4. В чем еще может быть эффективность ожидания? Поговорим об этом ниже.
Читать полностью »
Что общего у статического анализа и поисковиков? Хороший «top»!
2012-04-18 в 7:48, admin, рубрики: c++, pvs-studio, Программирование, разработка, статический анализ, статический анализ кода, метки: pvs-studio, статический анализ, статический анализ кодаРазработчики поисковиков типа Google/Яндекс и разработчики инструментов статического анализа кода решают в каком-то смысле очень похожую задачу. И те, и другие должны предоставить пользователю некоторую выборку с ресурсами, которые «отвечают» желаниям пользователя. Нет, конечно, в идеале разработчики поисковиков хотели бы ограничиться кнопкой «Мне повезет!» (I'm Feeling Lucky). А разработчики инструментов анализа кода хотят выдавать только список реальных ошибок в коде. Но реальность как всегда накладывает ограничения. Хотите узнать, как мы сражаемся с жестокой реальностью при разработке PVS-Studio?
Записи конференции Lang.NEXT 2012 для тех, кто интересуется языками программирования
2012-04-16 в 10:53, admin, рубрики: .net, bloom, c++, dart, haskell, java, javascript, Julia, roslyn, scale, windows runtime, Блог компании Microsoft, Программирование, разработка, языки программирования, метки: .net, bloom, c++, dart, haskell, java, javascript, roslyn, scale, windows runtime, языки программирования
В начале апреля на базе кампуса Microsoft в Рэдмонде прошла специализированная индустриальная конференция, посвященная языкам программирования — Lang.NEXT 2012. В рамках конференции своими наработками и результатами исследований поделились эксперты известных корпораций (например, Microsoft, Google, Facebook, Oracle) и ведущих университетов (включая MIT, Stanford, Berkeley).
Для всех энтузиастов мира программирования на Channel 9 доступны записи и презентации выступлений.
Читать полностью »
Qt5 alpha увидел свет. В этой статье я опишу одну из фич, над которыми работал — это новый синтаксис сигналов и слотов.
Предыдущий синтаксис
Вот как мы обычно соединяем сигнал и слот:
connect(sender, SIGNAL(valueChanged(QString,QString)),
receiver, SLOT(updateValue(QString)) );
На самом деле макросы SIGNAL
and SLOT
преобразуют свои аргументы в строки. Затем QObject::connect()
сравнит эти строки с данными интроспекции собранными утилитой moc
.
В чем проблема этого синтаксиса?
Не смотря на то, что в целом все работает хорошо, некоторые неудобства все же есть:
Читать полностью »
Не зная брода, не лезь в воду. Часть третья
2012-04-11 в 11:34, admin, рубрики: c plus plus, c++, c++11, pvs-studio, битовые операции, Компиляторы, метки: c plus plus, c++, c++11, pvs-studio, битовые операции
Продолжу рассказы о том, как программисты ходят по краю, даже не подозревая об этом. Поговорим об операциях сдвига <<, >>. Принципы работы операторов сдвига очевидны и многие программисты даже не знают, что их использование согласно стандарту Си/Си++ может приводить к неопределенному или к неуточненному поведению (undefined behaviour/unspecified behavior).
Читать полностью »
Сборка qutIM 0.3 под Windows
2012-04-11 в 9:32, admin, рубрики: c++, open source, Qt Software, qt4, qutIM, метки: open source, qt4, qutIMМногим хабражителям известен замечательный открытый и бесплатный многопротокольный (ICQ, Jabber, Mail.Ru, IRC, VKontakte) клиент обмена мгновенными сообщениями qutIM. Если сборка этого клиента из исходников под Linux не вызывает особых вопросов, то сборка под Windows окутана завесой тайны. На оффициальном сайте по этому поводу написано очень мало и поэтому я решил рассказать, как это сделать.
Кому интересно, прошу под кат.
Читать полностью »
Организация рабочих потоков: управление состоянием движка
2012-04-10 в 6:30, admin, рубрики: c++, GUI, multithreading, WinAPI, Программирование, метки: gui, multithreading, WinAPIДанная статья является продолжением статьи — Организация рабочих потоков: синхронизационный канал. Продолжение родилось как попытка написать пример использования подхода с синхронными сообщениями.
В этой части я хочу на примере показать, как можно организовать управление и отображение состояния движка с рабочим потоком, используя синхронные сообщения между потоками. И показать, как при этом обойти проблему взаимной блокировки потоков при закрытии приложения.
Давайте вернемся к примеру с предыдущей статьи. У нас есть графический интерфейс, отображающий состояние движка с рабочим потоком. Допустим движок можно запустить, остановить, поставить на паузу и соответственно снять с паузы. Для реализации такого поведения проще всего применить что-то подобное шаблонам проектирования конечный автомат и наблюдатель.
Читать полностью »
Парсим Python код с помощью Flex и Bison
2012-04-09 в 14:43, admin, рубрики: bison, c++, flex, parser, python, Программирование, разработка, синтаксический анализ, метки: bison, flex, parser, python, синтаксический анализВступление
Уже около двух лет я участвую в OpenSource проекте Source Analyzer, и вот появилась необходимость написать парсер для языка Python, который должен уметь строить граф вызовов (Call Graph) и граф зависимостей классов (Class Graph Dependency). Если точнее, граф строится с помощью других инструментов, а парсер должен лишь подготовить для этих инструментов данные.
Процесс работы над парсером был довольно занятным и мне бы хотелось поделиться с вами приобретенным опытом, а также поведать о некоторых подводных камнях, которые встретились на этапе разработки.
Читать полностью »