Свойства (properties) для C++

Но зачем?

Иногда программисту, который помимо С++ работает с другими языками, очень не хватает свойств объектов.

Казалось бы, языки вроде Java и C++ обходятся без свойств объектов, таких например как в Ruby, Python, JavaScript или
Читать дальше →

Пишем простой генератор паролей

Однажды у меня в голове всплыла идея: почему бы не написать простой генератор паролей? Причин на то много: все пароли, придуманные человеком (многие любят ставить qwerty и 123123123), уязвими к бруту. Мы же сделаем такой генератор, который никогда не смогут подобрать. Мы будем использовать rand(), vector (можно конечно без него, но я не люблю использовать массивы), string.


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

Кое-что об исключениях в C++

Эта статья рассчитана прежде всего на начинаюцих программистов, но и профессионалам не мешало бы освежить свою память.
Итак,

вступление.

При работе программ возникают так называемые исключительные ситуации, когда дальнейшее нормальное выполнение приложения становится невозможным. Причиной исключительных ситуаций могут быть как ошибки в программе, так и неправильные действия пользователя, неверные данные и т.д.
Обычные конструкции, необходимые для проверки данных, делают более-менее серьезную программу сложночитабельной. Более того, программисту очень сложно отледить все исключительные ситуации.

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

Идиома RAII — захват ресурса есть инициализация

RAII – идиома, получившая широкое распространение благодаря создателю С++ Бьярну Страуструпу, и расшифровывается как “Resource Acquisition is Initialization” – захват ресурса есть инициализация.

Идиома очень простая и кратко описывается следующим образом: в конструкторе объект получает доступ к какому либо ресурсу (например, открывается файл или устанавливается соединение по сети к базе данных) и сохраняет описатель ресурса в закрытый члена класса, а при вызове деструктура этот ресурс освобождается (закрывается файл или соединение к БД). При объявлении объекта данного класса на стеке происходит и его инициализация с вызовом конструктора, захватывающий ресурс. При выходе из области видимости объект выталкивается из стека, но перед этим вызывается деструктор объекта, который и освобождает захваченный ресурс.

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

Сертификация Nokia Qt: новый уровень



Сегодня пришло письмо из Нокии о том, что скоро будет доступен новый уровень сертификации для Qt-разработчиков — Nokia Certified Qt Specialist.

Напомню, что программа сертификации по Qt была впервые представлена в октябре 2009 года, первый и единственный ее уровень назывался Nokia Certified Qt Developer, а экзамен — Qt Essentials, то бишь основы Qt. Могу сказать, что для практикующих Qt-программистов экзамен этот достаточно легкий, многие (в т.ч. ваш покорный слуга) проходят его, не готовясь практически вообще.

Новый уровень сертификации (Нокия называет уровни certification schemes) будет представлен на конференции Qt Developer Days 2010, которая скоро пройдет в Мюнхене и Сан-Франциско. Посетителям конференции будет предоставлена возможность попробовать сдать бета-версии новых экзаменов бесплатно.

Почему «экзаменов», а не «экзамена»? Потому что новых экзаменов сразу два: Advanced Widget UI и Qualified in C++ with Qt. Оба они являются продвинутыми экзаменами, в противовес старому обычному Qt Essentials.

Экзамен Advanced Widget UI


Разработка UI с помощью виджетов является одной из старейших фич Qt. Также это одна из наиболее часто запрашиваемых тем-кандидатов для продвинутых экзаменов. Qt Essentials покрывает лишь основы, которые надо знать для того, чтобы начать разработку GUI с помощью виджетов. Более сложные, но необходимые для сколь-нибудь сложных программ темы, такие как Model/View Framework, кастомные виждеты и многопоточность, сейчас включены в этот новый экзамен.

Рекомендации от составителей:
Для успешного прохождения экзамена вам следует иметь хотя бы полтора года опыта фуллтайм-разработки с Qt, включая разработку GUI, логику сложных и мультипоточных программных систем с кастомными UI-элементами и стилями.

Учебный план экзамена состоит из следующих тем:
  • Model/View
  • Multithreaded programming in Qt
  • Rich text processing
  • Manage Qt Projects (Develop / Unit Test / Port / License)
  • Creating plugins
  • Drag/Drop and Clipboard access
  • Custom Widgets
  • Styling widgets
  • Making Applications scriptable
  • Writing code for efficient Internationalization
  • Using the Undo Framework
С полным списком, состоящим из 71 подтемы, можно ознакомиться здесь: Advanced Widget UI Curriculum.

Экзамен Qualified in C++ with Qt


Qt известна своим достаточно низким порогом вхождения в том плане, что не надо быть С++-гуру, чтобы начать писать Qt-приложения. Qt Essentials охватывал основные аспекты С++/Qt-разработки, позволяющие делать относительно простые программы. Экзамен Qualified in C++ with Qt призван выявить наличие более продвинутых знаний в C++/Qt, которые нужны для разработки сложных программ.

Рекомендации от составителей:
Для успешного прохождения экзамена вам следует иметь хотя бы три года опыта парт-тайм разработки на C++ плюс один год разработки с использованием Qt.

Учебный план экзамена состоит всего из четырех тем:
  • Types, Declarations and Definitions
  • Classes
  • Inheritance and Polymorphism
  • Miscellaneous Topics

Более информативных список с подтемами лежит тут: Qualified in C++ with Qt Curriculum.

При сдаче каждого из экзаменов вам будет предложено ответить на 30 вопросов за 60 минут. Плюс дополнительное время на комментарии и, наверняка, еще добавят хотя бы по 15 минут тем, для кого английский язык не родной.

Дополнительные ссылки по теме:
«А зачем мне эта сертификация вообще нужна?»
Qt Certification Start Page
Топик про Qt-сертификацию на форуме prog.org.ru, личный опыт сдававших экзамены.