суббота, апреля 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_, спасибо за ссылку.

четверг, апреля 26, 2007

Статья Джоэла Спольски Recruiting the Top 1 Percent

В статье Recruiting the Top 1 Percent Джоэл Спольски подробно рассказывает о том как им удается нанять лучших разработчиков.
На самом деле он об этом рассказывает уже давно на своем сайте. Но тут все очень удобно собрано в одну статью. Основные мысли такие: нанять лучших уже на этапе обучения в колледже. При найме обращаться с людьми очень-очень вежливо, даже с теми, которые не подходят, и тем самым создать хорошую репутацию компании.
Репутация - большое дело, кстати. Вокруг компаний с плохой репутацией с течением времени создается вакуум, потом HR-менеджеры таких компаний не могут никого нанять и недоумевают "где все?".

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

Перехват Ван Эйка для жидкокристаллических мониторов

В пятницу на NewScientist появилась статья Seeing through walls, в которой рассказывается о том, что Маркусу Куну, исследователю из Кэмбриджского Университета, удалось осуществить перехват Ван Эйка для жидкокристаллических мониторов. Сегодня об этом рассказал Хабр.

На слэшдоте говорят, что это совсем не новость, этот опыт Кун поставил еще в 2004 году. При этом ссылаются на его работу Electromagnetic Eavesdropping Risks of Flat-Panel Displays(.pdf).

Перехват Ван Эйка вещь интересная. В 1985 году Ван Эйк рассказал всем, что изображение с монитора компьютера можно перехватить. Он не просто рассказал, но и продемонстрировал это. Речь, правда, шла об ЭЛТ мониторах. Вроде как об этом знали и раньше всякие разные спецслужбы, но особо никому не рассказывали, а заслуга Ван Эйка в том, что он сумел эту информацию принести в массы.
Я, как и многие, узнала об этом перехвате из книги Криптономикон. Причем в Криптономиконе перехват Ван Эйка отлично работал и для жидкокристаллических мониторов.
То есть кто-то за стеной, возможно, видит то, что у вас мониторе сейчас. Муа-ха-ха.

В заключание куча ссылок.
Security Limits for Compromising Emanations(.pdf) - еще одна работа Куна
A Trial of the Interception of Display Image using Emanation of Electromagnetic Wave - исследования японцев все на ту же тему
Optical Emission Security – Frequently Asked Questions - FAQ все того же Куна
12 вопросов о корректных измерениях побочных электромагнитных излучений - русскоязычная статья о перехвате электромагнитых излучений
van Eck phreaking - страничка в Википедии
Electromagnetic Radiation from Video Display Units: An Eavesdropping Risk? - статья того самого Ван Эйка с красивыми схемами и пояснениями как оно работает

Спасибо Maniac'у за ссылку

среда, апреля 18, 2007

Несколько интервью с идолами параллельного программирования

На блоге Thinking Parallel последнее время пубиковалась серия интервью с людьми, известными в мире параллельного программирования.

Interviewing the Parallel Programming Idols - пост с ссылками на все интервью и список вопросов

Чтобы никуда не ходить, не искать - все интервью списком.

понедельник, апреля 16, 2007

Квантовый компьютер Орион. Что это было?

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

Квантовые компьютеры состоят из кубитов, подробнее об этом можно почитать в Википедии. До настоящего времени были разработки, которые представляли лишь теоретический интерес, но, увы, не удавалось сделать ничего практически полезного. Более-менее удавалось заставить работать системы из 12 кубитов максимум. Построить такую систему - это лишь одна из проблем. Надо уметь квантовый компьютер как-то программировать и считывать информацию. Да, работают квантовые компьютеры при очень низких температурах. Поэтому к нему придется поставлять еще и большой холодильник. Это может расстроить пользователей. Вот здесь есть упоминание о разработках IBM в этой области: P=NP and other trivia.

Тут появляется компания D-Wave, которая говорит, что они построили квантовый компьютер из 16 кубитов, который годится для коммерческого использования. Называется он Орион и умеет решать паззл Судоку. Решение паззла можно лицезреть на YouTube.



Еще, говорят они, у нас все классно масштабируется. И в этом году они представят систему из 512 кубитов. А к концу 2008 из 1024.
Научная общественность до сих пор пребывает в легком шоке после таких заявлений.

Для охлаждения у них используется криогенная установка от Leiden Cryogenics. "У нас таких три штуки". Охлаждается все до 0.005K.


Схема процессора, использовавшегося во время демонстрации Ориона


Кроме видео с решением паззла на YouTube есть еще несколько. Например:
D:Wave's Dr. Geordie Rose
Quantum Computer "Running"

Дальше народ пытается понять, а что это вообще было.

На слэшдоте родились огромные флеймы.
Quantum Computer Demoed, Plays Sudoku
Scientists Dubious of Quantum Computing Claims

Специалист по квантовым компьютерам, а также известный блоггер Скотт Ааронсон публикует The Orion Quantum Computer Anti-Hype FAQ, на который потом часто ссылаются и в прессе, и в Интернете, когда говорят, почему история с Орионом выглядит подозрительно, мягко говоря.
Скотт Ааронсон вообще известен тем, что прямо говорит то, что думает. Например, на его блоге раскрыта тема хм, хм... biting vaginas.

Основные претензии - что они вообще ничего особенного не продемонстрировали. Для решения показанного паззла никаких супертехнологий не требуется, у них там мог быть в кустах спрятан самый обычный компьютер. К тому же выражаются они как-то мутно, что не вызывает к ним доверия. Эту мутность они объясняют тем, что не хотят разглашать свои секреты. Они намекали, что с помощью их компьютера возможно решение NP-полных задач за полиномиальное время. Но теоретические исследования показывают, что квантовый компьютер в принципе не поможет решит NP-полную задачу за полиномиальное время. С квантовым компьютером такие задачи будут решены быстрее, но это уже не так интересно.

9 марта NASA заявляет, что причастно к разработке Ориона, что вызывает новую волну недоумения на слэшдоте.
NASA Backs Quantum Computing Claim

Кроме введение в крайнее недоумения ученых, они получили еще один результат. Они привлекли 45 миллионов долларов инвестиций.
Если это все гон, то непонятно чего они добиваются? Ну да, получат кучу инвестиций и что? Более того, вся их деятельность говорит о том, что они действитель упорно пытаются построить квантовый компьютер. Я сужу по официальному сайту и блогу одного из их топов: rose.blog.

Как они это все пытаются программировать я не нашла. Но я пошла и посмотрела вакансии у них на сайте. Вот список технологий из всех вакансий
COMMON LISP, Linux
J2EE, Spring, or Rails
XML, SOAP, XML-RPC
Python, Ruby, PHP, Groovy
Знание С идет в плюс. С++ не упоминается.

Ну что, ждем конца 2008...

Ссылки по теме:
Q&A: D-Wave's Geordie Rose - статья и интервью в Technology Review

Scientists Dubious of Quantum Claims - статья в International Business Times

NP-complete Problems and Physical Reality (.pdf) - статья Скотта Ааронсона

The Quantum Pontiff - блог специалиста по квантовым вычислениям, который в нескольких постах высказывает свое мнение о D-Wave

среда, апреля 11, 2007

Статья Why C++?

Why C++? - размышления на тему "почему язык C++ так популярен в разработке игр". В первую очередь автор указывает на то, что исторически так сложилось, что С++ использовался для разработки игры, а дальше имеет место некоторая инертность. Также даются сравнения с другими языками (с С в основном), все в пользу С++.
В заключении статьи делается следующий вывод: "С++ для движка, Lua для геймплея".

пятница, апреля 06, 2007

Ролики с Google TechTalks. Second Life и отрисовка графов

Я периодически смотрю доклады с Google TechTalks, вот парочка из них, которые мне больше всего понравились.

Красочный рассказ о вселенной Second Life. На мой взгляд маловато технических подробностей, но для общего представления вполне годится. Посмотреть вечером в пятницу - самое то.




Тамара Мунцнер об отрисовке графов. Отрисовкой графов я интересуюсь давно, потому с удовольствием послушала ее рассказ.
Тамара делает упор на интерактивную работу с графами. Ставить целью разработчика не просто нарисовать красивую картинку, а помочь людям сделать их работу. Во время доклада затрагивается психология восприятия информации.
По поводу восприятия информации. По сслыке с 314159265 нашла любопытную статью. Там секьюрность Apache и IIS сравнивается по их графам системных вызовов. Не надо быть суперэкспертом, чтобы понять какой вывод они сделали из этих графов.

Apache:



IIS:

среда, апреля 04, 2007

Указатели на функцию, коллбэки и функторы

Иногда бывает нужно вызвать функцию по имени, представленном в виде текстовой строки. В URL'е это имя пришло, например. Или из текстового конфига вы его считали. Я долго искала какой-нибудь элегантный способ сделать это на С++, но ничего хорошего не нашла.

В JavaScript'е, например, для этого есть функция eval, которая пытается выполнить текстовую строку. Единственное решение, которое я нашла для C++: создавать некий массив, а лучше map с отображением символьного имени функции на указатель на нее.


void updateInfo()
{
...
}

map <string, void (*)()> mFunctions;
mFunctions["updateInfo"] = updateInfo;
//и так далее для всех функций, что нужно использовать
...
string sFunctionName;
...
//где-то там считали имя функции

mFunctions[sFunctionName]();//выполнили нужную функцию
mFunctions["updateInfo"]();//то же самое

И для каждой вновь появившейся функции придется руками этот массив править и перекомпилировать код.

Updated 11.04.2007
[Сразу несколько человек в комментариях заметили, что есть способ лучше, предложенный Александреску в "Современном проектировании".]

Ну и ладно. Зато появился повод поговорить об указателях на функции.
Указатели на функцию - вещь интересная и полезная. Настолько полезная, что появился отдельный сайт, посвященный исключительно указателям на функции - www.function-pointer.org. Сейчас он редиректит вот сюда: The Function Pointer Tutorials. Также в C++ FAQ Lite есть раздел, посвященный указателям на функции. Я пробегусь по основным моментам, но все равно почитайте эти ссылки там много интересно и полезного.

Указатель на функцию может выглядеть например так:

//объявляется указатель под именем pt2Function
int (*pt2Function)(float, char, char);

Указатель на функцию-член класса может выглядеть так.

//объявляется указатель под именем pt2Member
int (TMyClass::*pt2Member)(float, char, char);

Указатель на константную функцию-член класса может выглядеть так.

//объявляется указатель под именем pt2ConstMember
int (TMyClass::*pt2ConstMember)(float, char, char) const;
(Все примеры из The Function Pointer Tutorials)

И этот указатель на функцию можно всяко-разно использовать. Например, как я использовала в начале поста. Или его передать в функцию. И это получится уже коллбэк (callback).

void sort_ints(int* begin_items, int num_items,
int (*cmpfunc)(int, int) );
(пример из Wikipedia)

Это была объявлена функция сортировки, которая в для операции сравнения использует переданную cmpfunc.

Если вам вдруг нужно в качестве коллбэка передать нестатическую функцию-член класса, то, возможно, вы хотите странного. Но сделать это можно, вот объяснение как это сделать из C++ FAQ Lite, вот объяснение из The Function Pointer Tutorials.

Есть еще такое интересное понятие как функтор (functor, сокращение от function object).
В C++ можно сделать так: объявить класс, в котором переопределен operator(). Работа с таким объектом выглядит как работа с функцией. Но при этом это полноценный объект, возможностей у него больше, чем у функции. Он, например, может хранить состояние. В нем можно опеределить данные, другие функции и с ними работать.

template <class Fun>
void foo(Fun f)
{
//...
f();
//...
}

Обычно под функтором понимается любой объект, с которым можно работать как с функцией, то есть в C++ функтором являются и объекты, с переопределенным operator(), и собственно функции. Но тут я встречала разночтения. Иногда, когда говорят про функторы, обычные функции туда не включают (этот подход мне больше по душе). А иногда еще встречается термин функционоид (functionoid), для функторов, не являющихся обычными функциями.
Сочетание функторов с темплейтами приводит к очень интересным возможностям. Обратите внимание, в приведенном выше примере f может являться как функтором, так и указателем на функцию.

Ссылки:
comp.lang.c++.moderated Newbie question about operator() and functors in general
Функторы очень интенсивно используются в STL, о чем рассказывается здесь: Function Objects.
Очень хорошо, со всякими ссылками о функторах написано в Function object, Wikipedia
Указатели на функции-члены и реализация самых быстрых делегатов на С++
Указатели на функции члены класса