О Лукаше Подольски и об одной проблеме роста

0 коммент. | добавить комментарий
С момента моего рождения и до определенного золотого возраста я ощущал себя самым маленьким, самым-самым крошечным во Вселенной. Даже ровесники казались мне тогда намного больше, старше и опытнее. "Вот вырасту", - говорил себе я - "и буду кем только захочу". Космонавтом не хотелось, а вот каким-нибудь спортсменом, капитаном, директором заводов-газет-пароходов, или даже врачом - это запросто. В то время, если в моем кругу и появлялся кто-то еще младше меня, я таких просто не замечал по причине их крайней незначительности (если уж я сам - крошечный, то они тогда - какие?) Старшие же из моего окружения зачастую казались мне неудачниками (уж я-то, когда вырасту, буду гораздо круче, чем они). "Все у тебя еще впереди", - говорил я себе.

Но время шло и, не помню точно, когда, я ощутил, что у меня-таки не все впереди - кое-что уже осталось за бортом, неосвоенное и неохваченное.




Может, это случилось тогда, когда мой хороший знакомый и ровесник женился и завел ребенка, а я еще продолжал блядовать, не помышляя о продолжении рода?Или когда одноклассник - вечный конкурент - показал мне свое первое творение на Си, в то время как я еще только разгребался с Паскалем?Или когда бывший одногруппник и одногодка вдруг оказался моим начальником?


Я не знаю. Знаю только, что вчера, когда я смотрел матч Германия-Португалия за 3 место ЧМ-2006, я опять почувствовал это. Ну, Лукаш Подольски, ну как же так?! Ты - и по телевизору, и пасы, и по воротам, и комментатор в восторге, и Мондиаль, и поклонницы, и деньги, и слава, и гимн. А я - на диване, и пиво, и духота, и мухи, и Жигули, и эта сука прожужжала все уши!

А, между прочим, я старше тебя на целый год.

Разэдак тебя и разтак, Лукаш Подольски!

Вести с поисковых полей

0 коммент. | добавить комментарий
В Mac OS 10.4, среди прочих новшеств, была внедрена технология поиска Spotlight, включающая индексирование и поиск по именам файлов, а также индексирование и поиск по метаданным. Для меня это значит примерно следующее: поскольку наш проект использует свой формат документов, представляя их в виде Mac OS bundles (т.е. документ представляет собой папку, в которой содержится описание структуры документа, а также хранятся использованные текстуры, материалы, 3D-объекты, представления и пр.), то автоматически Spotlight'овый поиск по нашим документам работать не будет. Чтобы справиться с этой проблемой, мне вчера довелось написать плагин для системы Spotlight - т.н. Spotlight Importer, который предоставляет данной системе метаданные наших документов в требуемом ей формате.

Об этом и речь. Для быстрого поиска информации в системе можно, как Microsoft, долго разрабатывать WinFS, и впоследствии отказаться от внедрения ее в новой версии Windows, а можно придумать Spotlight, поддержать поиск по стандартным форматам данных, и обязать разработчиков писать плагины для поиска по нестандартным форматам. Отличие в том, что второй подход уже реально работает на протяжении более чем полугода, а первый - нет, и неизвестно, когда WinFS будет-таки выпущена в свободное плавание.

Итак, Spotlight Importer. Его разработка сводится к реализации функции Boolean GetMetadataForFile(void* thisInterface, CFMutableDictionaryRef attributes, CFStringRef contentTypeUTI, CFStringRef pathToFile), которая принимает имя документа, созданного в нашем приложении, а возвращает ссылку на словарь метаданных attributes. Очевидно, что данная функция должна открыть документ, прочитать из него то, что может быть проиндексировано, и запихнуть это все в словарь attributes. Я уложился в набор стандартных ключей, используя:

  • kMDItemTitle - имя документа
  • kMDItemAuthors - массив, состоящий из имен авторов документа (у наших документов м.б. только 1 автор)
  • kMDItemDescription - описание документа

Нет, ну ведь правда здорово? Немедленно создаем документ spiralka и заполняем поля автор/копирайт/описание (кому не видно - имя автора "Zaycheg"):



Итак, что мы теперь найдем в Spotlight по запросу "zaycheg"? Конечно же, документ spiralka:



Не просто, а очень просто! Напоследок самое вкусное: как связать разработанный плагин с форматом документов. Иными словами - как сказать Spotlight'у, что для индексирования наших документов необходимо запустить наш плагин. Для этого в файл Info.plist приложения (содержит метаданные о приложении) необходимо указать тип (расширение) наших документов в формате UTI (Uniform Type Identifier). После первого запуска приложения Mac OS проанализирует его файл Info.plist, а затем всегда будет искать плагин для индексирования данного UTI в bundle приложения, и в системных папках Library. А плагин декларирует множество поддерживаемых UTI, и имеет собственный GUID, что гарантирует его уникальность в системе.

Ну красота ведь! До сих пор не нарадуюсь :)
А Microsoft пускай еще WinFS попишет.