
В этот раз прорабатывались следующие большие темы:
- std::hive
- Constexpr, ещё больше constexpr
- Безопасность, контракты, hardening, профили, UB и std::launder
- Relocate
- #embed
На днях в Праге прошла встреча международного комитета по стандартизации C++. И-и-и-и…
C++20 готов! Осталось поставить штампик от ISO, но это чисто формальный шаг, с которым не должно быть проблем.
Поздравляю всех с этим замечательным событием! Concepts, Coroutines, Modules, Ranges, std::format, constexpr new и constexpr алгоритмы+vector+string, datetime, jthread, span, bit_cast и многие другие мелкие и большие нововведения.
Что успели добавить и поправить в последний момент, что предложили разломать и что все хотят видеть в C++23 — обо всём этом под катом.
Читать полностью »
Всё больше и больше проектов и команд используют TypeScript. Однако просто применять TypeScript и выжимать из него максимум пользы — это очень разные вещи.
Представляю вам список высокоуровневых передовых практик использования TypeScript, которые помогут получить максимум преимуществ от применения этого языка.
В С++20 появилось контрактное программирование. На текущий момент ни один компилятор ещё не реализовал поддержку этой возможности.
Но есть способ уже сейчас попробовать использовать контракты из C++20, так как это описано в стандарте.
В последнее время все чаще встречаются упоминания о некоем волшебном средстве — тестировании на основе свойств (property based testing, если надо погуглить англоязычную литературу). Большинство статей на эту тему рассказывают о том, какой это классный подход, затем на элементарном примере показывают как написать такой тест используя какой-то конкретный фреймворк, в лучшем случае подсказывают несколько часто встречающихся свойств, и… на этом все заканчивается. Дальше изумленный и воодушевленный читатель пытается применить все это на практике, и упирается в то, что свойства как-то не придумываются. И к большому сожалению часто на этом сдается. В этой статье я постараюсь расставить приоритеты немного по другому. Начну все-таки с более-менее конкретного примера, чтобы объяснить что это за зверь такой. Но пример, надеюсь, не совсем типичный для подобного рода статей. Затем попробую разобрать некоторые проблемы, связанные с этим подходом, и как их можно решить. А вот дальше — свойства, свойства и только свойства, с примерами куда их можно приткнуть. Интересно?
Читать полностью »
Привет!
Есть несколько способов проверять аргументы на правильность. Например, для проверки на null можно использовать:
В статье я рассмотрю только третий вариант (все примеры кода — для C#, однако некоторые из них будут полезны и в Java).
Заранее приношу извинения за желтизну заголовка, но что поделать, если он полностью соотвествует действительности?
В связи с качественноным шагом в сторону более профессионального подхода к разработке, а так же финансирования, мы теперь наконец можем объявить о том, что готовы нанять за деньги толковых людей к нам в команду.
Специально ко дню тестировщика мы запустили профессиональную среду сопровождения процесса разработки. На смену старой-доброй BugZilla пришла продвинутая-навороченная JIRA.
JIRA можно рассматривать как следующий этап в развитии Багзиллы, и ставшую стандартом де-факто систему отслеживания ошибок, которая используется в крупнейших компаниях — и цены на сайте Atlassian как-бы намекают. Но, для открытых проектов пользоваться системой можно абсолютно бесплатно и без ограничений, за что им отдельное спасибо. Для ReactOS очень важным является то, что Bugzilla — это «bugtracker», в то время, как JIRA — это issue tracker. Отличие состоит в том, что с помощью JIRA можно заниматься не просто отслеживанием ошибок, но и планированием задач, отслеживанием хода разработки и создания плана разработки (roadmap).Читать полностью »
В Windows 8 в метро-приложениях появилась возможность передачи данных (Sharing) между приложениями. В дальнейшем для простоты в статье буду употреблять термин «шаринг».
В целях безопасности передачей данных управляет сам пользователь и вызывается с боковой панели соответствующей чудо-кнопкой Share
или сочетанием клавиш Win + H.
В качестве примера можно привести возможность передачи своего местоположения с карт или понравившуюся фотографию в почтовое приложение или твиттер.
Реализация контракта «шаринг» может стать очень мощным маркетинговым инструментом. Вы можете предоставить возможность поделиться своими достижениями в игре или приложении с друзьями, что может способствовать увеличению популярности вашего приложения.
Здесь я буду употреблять термины приложение-поставщик для приложения которое «расшаривает» данные. И приложение-приемник для приложения который может принять расшаренные данные.
Читать полностью »
Если вы интересовались разработкой приложений в metro-стиле под Windows 8, вы, наверное, уже знаете, что жизненный цикл этих приложений ближе к жизненному циклу приложений на Windows Phone. Это означает, что приложение, фактически не исполняется, когда пользователь его не видит. Таким образом, возникает вопрос, как приложения могут взаимодействовать друг с другом и системой.
В Windows 8 для приложений в metro-стиле для взаимодействия приложений друг с другом используются контракты, а для взаимодействия с системой – расширения.
Разнообразных контрактов и расширений достаточно много. Написать пост про то, какие контракты и расширения доступны разработчику, меня натолкнула статья Windows 8. Контракт «поиск» в деталях, после которой я решил систематизировать свои знания и собрать в одном месте краткие, буквально в несколько строчек, «how to» по большинству контрактов и расширений, с примерами из Windows SDK Samples.Читать полностью »