Всем хабрапривет!
Как-то понадобилось мне в Qt 5.1.1 для WinXP в VS2009 реализовать многопоточное приложение с интенсивным обменом сигналами. Взял я Шлее, вычитал у него, что нужно унаследовать класс от QThread и — вуаля, велком в многопоточность! На всякий случай заглянул в документацию Qt — там никто не возражал против наследования от QThread своего класса. Ну что же — порядок, сделано! Запускаю — вроде как работает, но как-то не так… Начинаю в режиме отладки отслеживать — а там творится черт знает что! То сигналы не выходят, то выходят, но как-то криво и из другого потока. Одним словом, полный бардак! Пришлось основательно по-google-ить и разобраться в теме (мне помогли статьи тут, здесь и там). В итоге я сделал шаблон класса на С++ (вернее, целую иерархию оных), что мне позволило в итоге писать (относительно) небольшой код класса, живущего в другом потоке, который работает правильно и стабильно.
Читать полностью »
Метка «c++» - 22
Qt: шаблон для корректной работы с потоками
2013-11-18 в 12:34, admin, рубрики: c++, qt, Qt Software, QThread, Алгоритмы, многозадачность, метки: c++, Qt, QThread, многозадачностьWindows Phone 8: Создаем приложение. Матрица. Часть 3. MVVM
2013-11-18 в 9:45, admin, рубрики: .net, mvvm, windows phone 8, XAML, разработка под windows phone, разработка приложений, метки: c++, mvvm, windows phone 8, XAML, разработка под windows phone, разработка приложенийИ так, как и обещал, третья часть приложения Матрица для платформы WP8 с использованием паттерна MVVM. Для самых нетерпеливых можно сразу скачать с Github, а так же опробовать у себя на смартфоне, скачав с Windows Phone Store.
Поддерживаются расширения экранов HD720P (720x1280), WVGA (480x800), WXGA (768x1280). Есть маленький минус: при использовании расширения отличного от 480x800, нужно перезапустить приложения после установки, так как не нашел как получить высоту и ширину элемента Grid до загрузки модели вида. А теперь по порядку.
Windows Phone 8: Создаем приложение. Матрица. Часть 1
Windows Phone 8: Создаем приложение. Матрица. Часть 2
Windows Phone 8: Создаем приложение. Матрица. Часть 3. MVVM
Развернутый вид всего приложения на экране WVGA (480x800)
Преимущества C++ как первого языка для обучения программированию
2013-11-17 в 17:46, admin, рубрики: c++, учебный процесс, Учебный процесс в IT, метки: c++, учебный процессВсем доброго времени суток!
Это статья о том, почему же все-таки стоит выбрать C++ в качестве первого языка программирования для обучения студентов, и немного о проблемах преподавания в ВУЗах. Часть суждения, касающегося процесса обучения, основывается на личном опыте преподавания (три года, во время учёбы в аспирантуре), а также на общении с преподавателями и студентами.
Рассматриваются преимущества языка программирования C++ именно для обучения и с точки зрения лучшего понимания основных концепций. Остальные кандидаты на роль первого языка (Pascal/Python/C#/Java) не рассматриваются, дабы не разжигать холивар. Еще раз отмечу: не для промышленной разработки и не с точки зрения такого субъективного критерия, как удобство.
Написано под впечатлением откровенно рекламного поста «Delphi XE5 как основа для обучения программированию» (на момент написания, доступна только версия «от гугла»).
Генерация P/Invoke сигнатур в C#. Нецелевое использование Interface Definition Language и OLE Automation Type Libraries
2013-11-15 в 13:40, admin, рубрики: .net, interop, PInvoke, WinAPI, кодогенерация, ненормальное программирование, метки: .com, .net, c++, interop, PInvoke, WinAPI, кодогенерация, ненормальное программированиеЭто НЕ очередная статья о том что такое P/Invoke.
Итак, допустим в сферическом C# проекте необходимо использовать какую-либо технологию, отсутствующую в .NET, и все что у нас есть это Windows SDK 8.1 в котором имеется лишь набор заголовочных файлов для C/С++. Придется объявлять кучу типов, проверять корректность выравнивания структур и писать различные обертки. Это большое количество рутинной работы, и риск допустить ошибку. Можно конечно написать парсер заголовочных файлов… Тут просто и понятно все кроме количества требуемых на это человекочасов. Поэтому этот вариант отбрасываем и постараемся как либо иначе свести к минимуму количество необходимых действий для взаимодействия с unmanaged кодом.
Кроме того, полученный в результате код не будет зависеть от разрядности процесса, будет сохранена строгая типизация, будет применено автоматическое тестирование.
Читать полностью »
Продолжение проверки Geant4
2013-11-14 в 11:35, admin, рубрики: bugs, c++, CERN, copy-paste, pvs-studio, Блог компании PVS-Studio, ошибки в коде, Совершенный код, статический анализ кода, метки: bugs, c++, CERN, copy-paste, pvs-studio, ошибки в коде, Си, статический анализ кодаНаписал правильную статья про проверку проекта Geant4. Напомню предысторию. Недавно была проверена старая версия библиотеки Geant4 и написана статья "Copy-Paste и мюоны". Почему была проверена старая версия? Люди не совершенны. Суть оплошности можно узнать в предыдущей статье. Теперь же вашему вниманию предлагается краткий отчет о проверке Geant4 версии 10.0-beta.
Эмулятор Chip-8 для GTK+ на практике
2013-11-14 в 8:02, admin, рубрики: Программирование, разработка, эмулятор, метки: c++, эмулятор Когда был в школе и работал/играл с советскими клонами Sinclair 48К, мечтал о соседском 8086.
Когда появился 486DX66, мечтал снова о Z80. Так и пронес свою любовь к ретрокомпьютерам в настоящее. И хотя сейчас пытаюсь в железе воплотить себя как “конструктора ПК”, и даже обладая некоторой коллекцией раритетных и не очень ЦПУ, всегда хотел сделать виртуальную версию сам. Но то знаний не хватало, то ещё чего-нибудь; чаще всего — времени. В итоге решил попробовать. Мечтой был запуск СВМ для ЕС ЭВМ, да и Elite снова увидеть на чем-то, сделанном самим. Но так как дом строят с фундамента, решил начать с начала.
Читать полностью »
Разработка Windows 8.1 приложений на XAML/С#. Часть 1. Делаем основной экран приложения на основе Hub
2013-11-14 в 5:36, admin, рубрики: vs2013, windows apps, windows store, XAML, Блог компании Microsoft, метки: c++, vs2013, windows apps, windows store, XAML
Этой статьей мы открываем серию материалов, посвященных новым возможностям разработки приложений для Windows 8.1 на XAML/C#. Мы планируем последовательно пройти путь от пустого шаблона до работающего приложения «Каталог товаров».
Первая статья посвящена созданию простой версии приложения на базе стандартного шаблона проекта Hub App в Visual Studio 2013. В ней мы научимся реализовывать удобные и разнообразные стартовые экраны для ваших приложений.
The art of Generics
2013-11-13 в 13:27, admin, рубрики: .net, generics, Программирование, метки: .net, c++, genericsУниверсальные шаблоны – они же generics, являются одним из мощнейших инструментов разработки.
CLR поддерживает их на уровне MSIL, и всего рантайма, что позволяет нам совершать некоторые трюки с типобезопасностью.
Если Вы знакомы с шаблонами C++, но хотели бы провернуть, если не вычисления на этапе компиляции, то по изяществу ничем не уступающие операции на C#, то эта статья поможет в этом.
Читать полностью »
Паттерн «VIP слушатель»
2013-11-12 в 19:31, admin, рубрики: паттерны проектирования, Проектирование и рефакторинг, метки: c++, паттерны проектирования Признаюсь честно, описание этого паттерна мне не встречалось, соответственно его название я выдумал. Если у кого есть информация о правильном названии, буду очень рад услышать. Паттерн не привязан к языку но в данной статье я буду использовать C#
.
Картинка для привлечения внимания:
Асинхронность: назад в будущее
2013-11-12 в 8:09, admin, рубрики: c++, асинхронность, многопоточность, назад в будущее, метки: c++, асинхронность, многопоточность, назад в будущееАсинхронность… Услышав это слово, у программистов начинают блестеть глаза, дыхание становится поверхностным, руки начинают трястись, голос — заикаться, мозг начинает рисовать многочисленные уровни абстракции… У менеджеров округляются глаза, звуки становятся нечленораздельными, руки сжимаются в кулаки, а голос переходит на обертона… Единственное, что их объединяет — это учащенный пульс. Только причины этого различны: программисты рвутся в бой, а менеджеры пытаются заглянуть в хрустальный шар и осознать риски, начинают судорожно придумывать причины увеличения сроков в разы… И уже потом, когда большая часть кода написана, программисты начинают осознавать и познавать всю горечь асинхронности, проводя бесконечные ночи в дебаггере, отчаянно пытаясь понять, что же все-таки происходит…
Именно такую картину рисует мое воспаленное воображение при слове “асинхронность”. Конечно, все это слишком эмоционально и не всегда правда. Ведь так?.. Возможны варианты. Некоторые скажут, что “при правильном подходе все будет работать хорошо”. Однако это можно сказать всегда и везде при всяком удобном и не удобном случае. Но лучше от этого не становится, баги не исправляются, а бессонница не проходит.
Так что же такое асинхронность? Почему она так привлекательна? А главное: что с ней не так?
Читать полностью »