В детстве я неплохо рисовал. На уроке рисования в средней школе я даже умудрился изобразить с натуры кухонный чайник, и получить за свой шедевр годовую оценку "3 с плюсом". Возможно преподавательнице не понравился мой кухонный чайник. Возможно - выбранные мною холст и кисти: в стране в те времена были некоторые проблемы с бумагой и школьными товарами, поэтому чайник я изобразил на кусоке старых обоев фиолетовым фломастером (едва оживленным при помощи одеколона). Не знаю, к счастью ли ценителей искусства, или к горю импрессионистов новой школы, но художника из меня так и не вышло. Зато после рисования я навсегда наладил отношения с физикой и математикой. А тут человек рисует на одном холсте два портрета, причем, обеими руками.
28 июл. 2009 г.
27 июл. 2009 г.
"Встраиваемые шаблоны", или пара слов о "thin templates"
В Symbian C++ есть такое понятие как "thin template". Многие разработчики дословно переводят термин "thin template" как "тонкий шаблон". На самом деле термин "thin template" следует переводить как "встраиваемый шаблон". Объясню почему.
Из описания "Thin templates" становится ясно, что шаблоны используются для тех же целей, что и в других языках программирования: для создания классов-коллекций, и обеспечения безопасности хранимых типов данных.
В то же самое время, использование шаблонов существенно увеличивает объем объектного кода, что является весьма нежелательным явлением в мобильных устройствах. Для снижения объемов объектного кода разработчики Symbian OS придумали идиому встраиваемых шаблонов.
Во-первых, для создания класса со встраиваемыми шаблонами нужен базовый класс, хранящий всю логику и код обработки данных. Базовый класс должен использовать параметры типа TAny, и по возможности содержать весь код обработки данных, так как наследуемые от него классы (как раз использующие шаблоны), будут выполнять лишь функцию внешних интерфейсов к полезному коду базового класса:
В свою очередь, наследующие классы получают возможность использовать шаблоны, и в то же время замещать логику своих методов полезным кодом базового класса:
При этом следует обратить внимание на тот факт, что все методы наследующего класса должны быть встраиваемыми, то есть объявленными через оператор inline. Только в этом случае для наследующего класса не будет создан избыточный объектный код. Таким образом, шаблон "встраивается" в базовый код через наследующий класс, и не позволяет расти объектному коду.
Конечно, словосочетание "тонкий шаблон" может указывать на некую экономичность используемого метода, однако для понятности изложения все же правильнее использовать термин "встраиваемый шаблон".
Из описания "Thin templates" становится ясно, что шаблоны используются для тех же целей, что и в других языках программирования: для создания классов-коллекций, и обеспечения безопасности хранимых типов данных.
В то же самое время, использование шаблонов существенно увеличивает объем объектного кода, что является весьма нежелательным явлением в мобильных устройствах. Для снижения объемов объектного кода разработчики Symbian OS придумали идиому встраиваемых шаблонов.
Во-первых, для создания класса со встраиваемыми шаблонами нужен базовый класс, хранящий всю логику и код обработки данных. Базовый класс должен использовать параметры типа TAny, и по возможности содержать весь код обработки данных, так как наследуемые от него классы (как раз использующие шаблоны), будут выполнять лишь функцию внешних интерфейсов к полезному коду базового класса:
class CArrayFixBase ... { // объявление базового класса
...
IMPORT_C const TAny* At(TInt aIndex) const;
}
В свою очередь, наследующие классы получают возможность использовать шаблоны, и в то же время замещать логику своих методов полезным кодом базового класса:
class CArrayFix: public CArrayFixBase {
...
inline const T& At(TInt aIndex) const
{
return (*((const T *) CArrayFixBase::At(anIndex)));
}
При этом следует обратить внимание на тот факт, что все методы наследующего класса должны быть встраиваемыми, то есть объявленными через оператор inline. Только в этом случае для наследующего класса не будет создан избыточный объектный код. Таким образом, шаблон "встраивается" в базовый код через наследующий класс, и не позволяет расти объектному коду.
Конечно, словосочетание "тонкий шаблон" может указывать на некую экономичность используемого метода, однако для понятности изложения все же правильнее использовать термин "встраиваемый шаблон".
Вернулся из отпуска
Целый месяц практически не прикасался к компьютеру. За четыре недели полного погружения в нормальную (некомпьютерную) человеческую жизнь, удалось окрасить гараж, съездить на свадьбу в Армению, и установить козырную спутниковую антенну фирмы "Triax".
За время моего отсутствия посещаемость моего блога возрасла почти на порядок, правда со знаком минус: вместо привычных десяти человек в день, теперь мой блог посещает всего один человек - я сам. Однако с другой стороны, ни за что бы на свете не променял полученные мной блага и выгоды на посещаемость блога.
Во-первых, под изнуряющим солнцем Финляндии моя рожа приобрела ровный бронзовый загар. Во всяком случае, бабушки в подземных переходах больше не перекрещиваются как раньше, увидев мое программистское бледно-синюшнее лицо с красными глазками.
Во-вторых, я был на армянской свадьбе. Помимо увиденной красоты самого обычая, на свадьбе я еще нехило отожрал настоящего лаваша, шашлыков, домашнего сыра, и еще много каких блюд, чьи названия так и не запомнил. Все вышеупомянутое запивалось отличнейшим коньяком и домашним вином десятилетней выдержки.
Не знаю как там вода в Сан-Франциско, но от водопроводного крана в Ереване меня нельзя было отогнать. Даже будучи весьма привычным к очень чистой воде в Финляндии, воду из обычного ереванского водопровода я считаю лучшей, когда-либо испробованной в моей жизни.
В самой Армении я три замечательных дня жил в райском уголке под названием Цахкадзор. Будут деньги - приедут туда еще раз, но только уже с семьей. Впрочем, количество отелей на квадратный километр этого райского уголка говорит само за себя. Да и наличие бывшей советской спортивной базы в данном районе, тоже говорит об очень многом. Знали советские тренеры, где готовить мировых чемпионов.
В последний день в Армении был на Севане, в коем и искупался. Севан, как не трудно догадаться, это еще один курорт Армении. Волны в Севане - как на море, поэтому без наличия навыков плавания в открытом море я далеко не заплывал. Искупался у берега на растоянии пяти метров, а заплыв на ту сторону Севана оставил на последующие разы.
Из Армении уезжал с большим трудом. Все-таки, армянское гостеприимство - это не пустые слова. По приезду из Армении, начал красить гараж. Красил долго и старательно, и в конце-концов выкрасил. По ходу окраски, спина и брюхо вместо привычного бледно-синего цвета приобрели бронзовый. После окраски гаража в имении была установлена спутниковая антенна для поимки телеканалов с четырех спутников: "Сириуса", "ХотБёрда", "Астры" и "Тора". Конечно, вместо "Тора" планировалось поймать "Амос", но спутник этот поймать мне пока не удалось, так что со спутниковой антенной пока еще не покончено.
Что же касается моей мечты стать миллионером, то, как говорится, таки да! Сегодня исполняется три месяца моему блогу, и если дела моего блога продлятся так и дальше, то миллионером я стану приблизительно через 1.785.714 лет! Спасибо тому посетителю, который возможно спутал рекламу "Гугла" с опцией меню. Впрочем, если кто-то действительно мечтает стать миллионером через свой блог, то дешевой рекламы на сайте должно быть действительно много. Или её должно быть действительно мало, но за большие деньги.
А за сим разрешите откланяться: дела, заботы, куча нечитанной почты и пока еще незаконченный перевод очередной статьи с Symbian Developer Network.
За время моего отсутствия посещаемость моего блога возрасла почти на порядок, правда со знаком минус: вместо привычных десяти человек в день, теперь мой блог посещает всего один человек - я сам. Однако с другой стороны, ни за что бы на свете не променял полученные мной блага и выгоды на посещаемость блога.
Во-первых, под изнуряющим солнцем Финляндии моя рожа приобрела ровный бронзовый загар. Во всяком случае, бабушки в подземных переходах больше не перекрещиваются как раньше, увидев мое программистское бледно-синюшнее лицо с красными глазками.
Во-вторых, я был на армянской свадьбе. Помимо увиденной красоты самого обычая, на свадьбе я еще нехило отожрал настоящего лаваша, шашлыков, домашнего сыра, и еще много каких блюд, чьи названия так и не запомнил. Все вышеупомянутое запивалось отличнейшим коньяком и домашним вином десятилетней выдержки.
Не знаю как там вода в Сан-Франциско, но от водопроводного крана в Ереване меня нельзя было отогнать. Даже будучи весьма привычным к очень чистой воде в Финляндии, воду из обычного ереванского водопровода я считаю лучшей, когда-либо испробованной в моей жизни.
В самой Армении я три замечательных дня жил в райском уголке под названием Цахкадзор. Будут деньги - приедут туда еще раз, но только уже с семьей. Впрочем, количество отелей на квадратный километр этого райского уголка говорит само за себя. Да и наличие бывшей советской спортивной базы в данном районе, тоже говорит об очень многом. Знали советские тренеры, где готовить мировых чемпионов.
В последний день в Армении был на Севане, в коем и искупался. Севан, как не трудно догадаться, это еще один курорт Армении. Волны в Севане - как на море, поэтому без наличия навыков плавания в открытом море я далеко не заплывал. Искупался у берега на растоянии пяти метров, а заплыв на ту сторону Севана оставил на последующие разы.
Из Армении уезжал с большим трудом. Все-таки, армянское гостеприимство - это не пустые слова. По приезду из Армении, начал красить гараж. Красил долго и старательно, и в конце-концов выкрасил. По ходу окраски, спина и брюхо вместо привычного бледно-синего цвета приобрели бронзовый. После окраски гаража в имении была установлена спутниковая антенна для поимки телеканалов с четырех спутников: "Сириуса", "ХотБёрда", "Астры" и "Тора". Конечно, вместо "Тора" планировалось поймать "Амос", но спутник этот поймать мне пока не удалось, так что со спутниковой антенной пока еще не покончено.
Что же касается моей мечты стать миллионером, то, как говорится, таки да! Сегодня исполняется три месяца моему блогу, и если дела моего блога продлятся так и дальше, то миллионером я стану приблизительно через 1.785.714 лет! Спасибо тому посетителю, который возможно спутал рекламу "Гугла" с опцией меню. Впрочем, если кто-то действительно мечтает стать миллионером через свой блог, то дешевой рекламы на сайте должно быть действительно много. Или её должно быть действительно мало, но за большие деньги.
А за сим разрешите откланяться: дела, заботы, куча нечитанной почты и пока еще незаконченный перевод очередной статьи с Symbian Developer Network.
Подписаться на:
Сообщения (Atom)