воскресенье, 11 декабря 2011 г.

Запрет на создание не константных объектов


В процессе обдумывания одной безумной идеи, про которую я пока никому не расскажу, появилась интересная задачка. Необходимо запретить пользователю класса создавать не константные объекты.  Зачем? Надо. Ради спортивного интереса.
Решений тут есть несколько. Я опишу один из ненормальных, но теоретически интересных.


суббота, 6 августа 2011 г.

Qt Виджет выбора цвета (ColorPicker)

Виджет выбора цвета, ColorPicker
В процессе написания простого редактора картинок понадобилось написать виджет выбора цвета из палитры. Дизайнер нарисовал вот такую штуку:

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

суббота, 25 июня 2011 г.

Property C++: Upgrade

Как я и думал, публикация идей на хабре – хорошая штука. В комментариях к предыдущей статье я нашёл несколько очень важных замечаний.
Первое, самое очевидное – никак не проверяется вызов init в конструкторе. То есть если программист забыл проинициализировать свойства, то компилятор ничего не скажет, а падение в рантаме в коде класса Property – весьма непонятная для дебага ошибка.

Property C++

Наверное, все любители языка C++, которые использовали другие языки, такие как C#, удивляются: почему же в плюсах нет property. Ведь это действительно удобное средство, позволяющее полностью контролировать доступ к членам класса. В общем и я недавно заинтересовался данным вопросом. Подумав, полистав Страуструпа и наконец, погуглив, я пришёл к выводу, что property можно реализовать средствами языка. Думаю многие уже видели разнообразные реализации, например, от microsoft, но для кого-то, надеюсь, это будет интересным открытием.

Быстрая сортировка на AS 3.0

У большинства людей на слово «flash» появляется две главные ассоциации:
  1. Надоедливые баннеры, часто непристойного содержания.
  2. Меееедленно и тормозит.
И то и другое по большей части, правда, но только с поправкой «в большинстве своём». Действительно большая часть flash-контента это баннеры. Да они сильно тормозят, но виновата в этом не технология flash и не компания Adobe. Большинство тормозящих flash-приложений просто написаны так (криворукими) ленивыми программистами. Так уж повелось, что flash стал платформой для быстрой «красивой» интерактивной рекламы, но ведь это далеко не всё, на что он способен. Достаточно популярны flash-игры, которые часто содержат не только вычислительно сложную физику, но часто и не менее сложную игровую логику. Поэтому раз в сто лет появляется человек, которому нужно написать флешку, которая должна работать быстро. И вот тут и появляется проблема – flash действительно небыстрая платформа. Что делать если тормозит нормально написанный, с алгоритмической точки зрения код? Когда алгоритмы уже отточены, нужно оптимизировать код.

Предложу, наверное, самый извращённый выход из ситуации – шейдеры.

среда, 15 июня 2011 г.

Проверка связи

Если вы это читаете, то вы необычайно редкий человек - вероятность попасть сюда случайно равно нулю. Проверка связи. Ping.