понедельник, мая 07, 2007

Пост "Золотой век русского программиста"

Пост на блоге Сергея Розовика - Золотой век русского программиста. Интересный взгляд на российский IT сектор.

Вообще очень советую этот блог почитать, меня особенно раздел "Архитектура" радует. Вот этот пост мне очень нравится: Complexity Fighting.

пятница, мая 04, 2007

Делаю категории

В новой версии Блоггера появились категории и, как вы, возможно, уже заметили я начала ими пользоваться. В русской версии Блоггера они почему-то называются "ярлыками", но суть та же.

Итак, я хочу сделать минимальное количество максимально полезных категорий.
Буду делать это очень аккуратно, буду смотреть как это влияет на синдикацию в ЖЖ. Очень не хотелось бы опять весь блог туда вывалить ненароком. После некоторых раздумий я решила сделать следующие категории:
cpp - посты про С++
programming - посты по программированию, но не по С++. Я раздумывала на тем, не использовать ли два тега для С++ постов - cpp и programming. Уже несколько таких двойных постов прошло. Но затем я подумала, что это будет очень неудобно людям, которые хотят почитать о программировании, но C++ им не интересен.
fun - сюда попадает все несерьезное типа непростой жизни тараканов и кулинарных заметок
robots - редкие посты про роботов
gamedev - посты о разработке игр. Сюда же попадут посты про DirectX
books - посты о книгах
me - редкие заметки непосредственно обо мне и об этом блоге

После расстановки этих "ярлыков", я опубликую линки на фиды по каждой из категорий.

Идеи были следующие: если вы программируете на С++ и юморить вам особо некогда - подписывайтесь на cpp и, опционально, на programming.
Если вас интересует программирование, но не на C++ - тег programming ваш.
Если вам программирования и так хватает, то тег fun.
Возможны варианты вплоть до таких экзотических как: вы занимаетесь закупкой книг по программированию - тег books.

Замечания, предложения приветствуются!
Если вы читаете только какую-то определенную часть постов, которая ни в какую из перечисленных категорий не попадает - напишите об этом. Я постараюсь категории перетрясти. Я только начала навешивать категории на старые посты еще не поздно все исправить.

После категорий буду разбираться с фидами комментариев.

четверг, мая 03, 2007

Мультиметоды

Что такое мультиметод обычно объясняется на одном классическом примере. Вот у нас есть иерархия неких фигур.

struct  Shape            {...};
struct Square : Shape {...};
struct Triangle : Shape {...};

И надо уметь строить их пересечение.
bool    overlap( Square& a, Triangle& b) {...}
bool overlap( Triangle& a, Square& b) {...}
bool overlap( Shape& a, Square& b) {...}
bool overlap( Square& b, Shape& a) {...}

И хочется, чтобы можно было определить функцию вроде
bool    overlap( virtual Shape& a, virtual Shape& b);

При вызове которой автомагически бы выбирался нужный из вариантов overlap.
Формальное определение этого всего: "механизм мультиметодов - механизм вызова виртуальных функций на базе более чем одного объекта".

В своей книге "Дизайн и Эволюция С++" (13.8) Страуструп рассказывает, что очень хотел бы, чтобы мультиметоды были в С++, но вот как-то не сложилось. И в С++09 тоже не сложится, похоже. Предложения по мультиметодам они задвинули куда-то далеко. Вот официальные бумаги по этим предложениям раз и два. (все примеры кода взяты оттуда, кстати)

Мультиметоды можно сделать с использованием RTTI и dynamic_cast'ов. Например вот так: Multiple Dispatch. A new approach using templates and RTTI. Там не все так просто, потому что хочется, чтобы не нужно было делать двойную работу и чтобы не нужно было переписывать куски кода в случае появления новых фигур.

Можно обойтись без RTTI и dynamic_cast'ов. Например как здесь: MultiMethods in C++: Finding a complete solution. Код получается довольно тяжелый. По мне так лучше с RTTI.

Про мультиметоды много и загрузочно можно почитать у Александреску в "Современном проектирование на С++". Глава 11. Она так и называется "Мультиметоды".

Ссылки по теме:
Multiple dispatch - статья в Википедии

суббота, апреля 28, 2007

Fotowoosh - трехмерное изображение по фотографии

Статья A New Dimension for Your Photos. Web service Fotowoosh wants to be the Flickr of 3-D рассказывает о новом веб-сервисе Fotowoosh. Этот веб-сервис есть результат исследований, проводившихся в университете Карнеги Мэллон (Carnegie Mellon University). Народ там научился генерировать трехмерные изображения по фотографии. Нужна только одна фотография, обратите внимание. С мая месяца обещают запустить бета-версию, на сайте есть подписка для желающих. Пока же можно посмотреть ролик с демонстрацией возможностей и получить готовые модели с их тестовых фотографий. Ролик есть на основной странице, но у меня он глючил и притормаживал, поэтому я скачивала авишки вот отсюда.






Результат выдают в формате VRML, хотят еще и флэш сделать. Они туда еще собираются анимацию добавить. Ну чтобы пешеходы бегали, машины ездили.

Детальные рассказы о том как это работает можно найти здесь.

Я где-то в ЖЖ читала историю про пользователя, который пытался обнаженную девушку на фотографии развернуть лицом к себе с помощью Фотошопа. Так вот, мечты сбываются.

Sergey_, спасибо за ссылку.