2008-04-19

РИТ-2008: Доклады: День второй

3 День второй

3.1 Инфраструктура Facebook - особенности крупных социальных приложений

Автор (http://moskalyuk.name) удачно рекламировал свое детище (http://www.facebook.com/), с позиции уверенного превосходства («Мы первые среди …», «Вторые по …», «тут меряли криво, но так и быть мы третьи по …»). Забавный момент был в комментах ответах на вопросы — на вопрос «у вас бесплатный MySQL или Entreprise версия», докладчик ответил «не знаю, но так как Brian Aker из MySQL постоянно у нас ошивается — наверно платная». Т.е. чисто анекдот «не знаю кто в машине, но шофер у него — сам Путин». Ну также «у нас работают разработчики ключевых технологий вебдваноля: Firebird, Firefox, Memcached».

Ключевой момент — заманивают разработчиков для разработки Facebook-приложений. Утверждается, что возможности для этих приложений (API и т.п.) не слабее, чем возможности стрежневых модулей Facebook, которые архитектурно равнозначны приложениям сторонних разработчиков (одинаковые интерфейсы и т.п.).

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

Не удержался и зарегистрировался и на facebook.com. Однако быстро заскучал — русских там как-то вообще нет (в отличие от badoo.com), и забросил.

3.2 Кэширование в nginx

Удачные шутки автора — «все упоминали платиного спонсора — микрософт, и я сейчас это сделаю: я буду как Микрософт, говорить о том, чего еще нет», «Microsoft любит интерактив — давайте тоже устроим детский сад». В отличие от аудитории, мы пользователями nginx'а не являемся, разве посмотрели на «виновника» знаменитых ошибок «502 Bad Gateway Timeout».

Рассказывал о новых возможностях кеширования — теперь nginx запущенный перед тормозящей вебсистемой, может полностью скрыть не только ее торможение, но и полную неработоспособность — т.е. система может месяц как полностью сдохнуть, а кеш будет возвращать пользователю «свет давно умершей звезды».

3.3 Новый PostgreSQL 8.3: превосходя ожидания

Тема, представленная одними из самых крутых экспертов по Постгрессу в России (http://postgresmen.ru/), о ключевых преимуществах именно версии 8.3.

Т.е. если вы судите о PostgresQL по предыдущим версиям — то вы не в теме, если вы помните, что «PostgresQL — это что-то про слонов, и видимо такое же медленное» — то это больше не так.

Автор привел прекрасный аргумент — графики падения раза в три процессорной загрузки, и уменьшение где-то на порядок дисковой активности, после апгрейда PostgresQL баз для хоть стартапной, но уже достаточно здоровой социальной сети (http://mirtesen.ru) с версии 8.2 до 8.3. Причем апгрейд сделан между рабочими днями, и график транзакционной загрузки показывает, что дело не в вымирании (или какой-либо другой флуктуации) пользователей. Реально хочется верить в хорошее, и есть желание портировать какой-либо здоровый учетный проект с Oracle на PG, заодно проделав нагрузочное тестирование.

Минус докладчика — презентация почти по методу Такахаши (см. «Как сделать презентацию за час до доклада?» ниже), т.е. крупные блоки текста — и докладчик слово в слово зачитывал их. Так никогда делать нельзя! У людей параллельно работают и визуальный и аудиоканалы, и если им одновременно грузить ровно одно и то же, происходит интерференция и теряется внимание! Т.е. если на экране текст — говорите другими словами, а еще лучше — визуально только картинки, символы, ключевые слова и цифры — остальное хорошим устным текстом.

3.4 PostgreSQL. Лучшая СУБД для Web 2.0

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

Автор (http://samokhvalov.livejournal.com/), являясь не только Postgres-экспертом, но и состоявшимся веб-дваноль разработчиком (1 (http://moikrug.ru), 2 (http://mirtesen.ru)), делился некоторыми рецептами простого решения (с перекладыванием основной работы на PG) стандартных вебдванольных задач (структурирование контента тегами и каталогами, построение индексов по нетривиальным типам aka геокоординаты, «быстрый и суггестивный поиск» а-ля подсказки Google).

Насколько вебразработчики повелись на это — для меня непонятно. Оптимальность по скорости им скорее не так важна, надежность прохождения каждой тразакции — тоже (подумаешь страничка упала ― перегрузят или перезальют). Целостность всегда разменивается на скорость. Им важно, чтобы данные не терялись уж совсем, и все было максимально беспроблемно — было много инструментов для всевозможных задач, база широко распространена — можно найти дешевого специалиста из ПТУ на поддержку, любая проблема типа «как сделать бла-бла-бла» сто раз обсуждена в форумах и гуглится на раз.

Мне же интересно, насколько PG может атаковать позиции Oracle, причем в заказных разработках (финансы, учет), где нельзя терять (ни задержать) ни одной транзакции. Да, мне нравится идея, вместо того, чтобы искать по перегретому рынку дорогих (и редко вменяемых Oracle DBA), плюс бухать огромные деньги за лицензии с совершенно никакой поддержкой, платить за техподдержку баз парням, которые разбираются у СУБД внутри.

Мы в принципе собираемся портировать наш супер фреймворк для PostgresQL (сейчас поддерживается Oracle и MySQL), но, когда решение о выборе СУБД принимает заказчик, то даже в идеальном и «безоткатном» случае, нужны очень серьезные и разные аргументы (бенчмарки, графики надежности, прецеденты, знающий персонал), чтобы убедить заказчика рискнуть.

Поэтому сейчас очень интересны первопроходцы в учетных-финансовых системах. 1C уже начали ставить на Postgres, и это хорошо.

Возможно действительно, мы присутствуем при историческом моменте — начале конца гегемонии Оракла на рынке СУБД.

3.5 Там, где не поможет база данных. Узкие места баз в веб-окружении. Задачи, которые не решаются пока никак

Разочаровался. Думал будут рассказывать о преимуществах нереляционных систем хранения — иерархических, файловых (­≈PyTables/HDF5), кубов и прочих денормализованных кешей, а докладчик достаточно уныло и протяжно перечислял места, где действительно, реляционные СУБД не очень. Так как за полдоклада от проблем к решениям он так и не перешел, я с доклада ушел.

3.6 Кризисы роста в ИТ-компании

Известный гуру IT-маркетинга пояснил, что основная причина проблем в растущей IT-компании — ее старые сотрудники. Переход от специалистов знающих «ничего обо всем», и полезных для стартапов и небольших команд, к специалистам «все о ничем», рулящим в больших компаниях неизбежен, и первые в большой компании будут минимум бесполезны и морально разлагающи для остальных, максимум — вредны. Приводились рецепты, что делать — от эвтаназии увольнения, до гуманных методов — дайте им пенсию, творческий отпуск на несколько лет, долю в компании (на худой конец — опционы).

Ну раз доктор сказал «в морг!», значит мне туда. Но я требую гуманного отношения — да, пенсию, или хотя бы ренту плюс творческий отпуск.

3.7 Бизнес и Agile: оптимизация процесса компании

Ну глупо наверно пересказывать известного SCRUM/Agile-тренера от ведущей российской Agile-организации http://agilerussia.ru.

Пара наблюдений.

1. В отличие от SECR-2007, где все было как-бы под знаком CMMI, и еще более безумных тяжелых практик (типа Six Sigma) и Agile-практики выглядели как некоторое освобождение порабощенного и затраханного разработчика от всяких регламентов, бизнес-процессов и метрик, то в этой анархической вольнице веб-разработчиков, SCRUM выглядел наоборот — какие то ограничения, регламенты и странные практики, когда в «партизанской банде» веб-разработчиков ваще полная свобода (по результатам общения в кулуарах с одним из веб-разработчиков).

2. SCRUM уже стал некоторым buzz-word, даже последние комиксы Dilbert стали проходится по ежедневным скрам-митингам (верный признак потери «очарования молодости»):

Поэтому уже недостаточно позиционироваться как «альтернатива пути CMMI», или просто кивать на запад — нужно показывать работающие примеры, успешные примеры компаний и проектов, говорить о реальных проблемах и путях решения.

Собственно об этом и был следующий доклад.

3.8 Практика внедрения Scrum: трудности и пути их преодоления

Докладчик (mailto:andrew@custis.ru) неторопливо и методично, с минимумом buzz-words разобрался тонкости внедрения SCRUM в реальных проектах. Очень качественные слайды, но вместо «кокаинового возбуждения» свойственного сейлзам или «технологическим евангелиствам», имел место быть стиль типа «медленно, медленно мы спустимся с горы и…».

Показателем интереса аудитории может служить тот факт, что зал был забит чуть более чем полностью, плюс презентация с вопросами заняла на полчаса больше — но никто не думал прерывать шоу (что обычно проделывали с другими докладчиками — тупо выгоняли «обсуждать в кулуары») или расходится.

Вопросов было много, часть из них в духе «Доктор, смогу ли я после удаления аппендицита играть на скрипке?…», часть к смежным темам («системы материальной мотивации» и т.п.) да и после того, как совесть заставила докладчика и вопрошающих освободить зал под следующий доклад, общение продолжилось в этих самых кулуарах до самого окончания конференции.

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

РИТ-2008: Доклады: Блиц-доклады

2.11 Блиц-доклады

Опишу только те доклады, которые запомнил. Было несколько неудачных, но слава формату — пять минут на попытку реально не жалко.

2.11.1 Browser Persistence

Веб-приложения заползают все больше и больше в персональный компутер. От Cookies и серверного хранения всего связанного с пользовательской сессией переходят к хранению жирных кусков данных на клиенте. Пока это реализуется извращенно — например, под видом дизайнерских баннеров держат флеш-объекты, а в них (есть такая возможность) и держать мегабайт-другой данных. Мне это напоминает программирование в кодах для БК-0010, у которой было 15К обычной памяти (1К под стек и прочую фигню), и 16К видеопамяти, и, т.к. памяти всегда не хватало, достаточной стандартным подходом было использовать кусок видеопамяти под код, замаскировав тот «мусор», который видит удивленный пользователь на экране, под что-то дизайнерское — землю там, или стены лабиринта и т.п.

Есть специализированные кросс-платформы (надо специально ставить) — Google Gears (http://ru.wikipedia.org/wiki/Google_Gears)

Но возможно, с введением HTML 5 все это можно будет делать стандартным способом (да, browser persistence поддерживается стандартом).

С другой стороны, если раньше вирусы и злоумышленники могли максимум вытащить список паролей хранимых в броузере и слабополезный набор кук — то теперь из броузера пользователя наверно можно будет вытрясти жирные куски конфиденциальной информации.

2.11.2 FreeBSD – серверная ОС Рунета

«Слава FreeBSD!» от контрибъютора оной. Очень ярко, почти на уровне сейлзов микрософта. Молодец.

2.11.3 Activity Streams

Объяснили, что тот кошмар в новых социальных сетях, когда на тебя вываливают каждый чих и пук от друзей, друзей друзей, друзей друзей друзей, или чего-то в радиусе десяти километров от любого места где ты когда-то побывал, и от этого ни куда не спастись — все это называется Active Streams и сие есть очень модная фишка. Я же считаю, что это очередной шаг по превращению Интернета в Телевизор, и от этого мне грустно.

2.11.4 Как сделать презентацию за час до доклада?

Автор (http://quappa.livejournal.com/) раскрыл терзавший меня секрет — почему куча презентаций с западных конференций стала выглядеть, как смесь бегущей строки рекламы в постперестроечном телевидении и тупых лозунгов с первомайских демонстраций («МИР», «ТРУД», «МАЙ»).

Это противоречило моему пониманию, что эффектная доставка мессаджа происходит только когда то, что говорят, не дублируется текстом на слайдах (иначе, если тупо читать — возникает «интерференция каналов восприятия» и люди засыпают).

Оказалось, это не просто так, это мода, это метод, это софт:

Боюсь это даст эпидемию таких минималистических докладов (т.е. докладчики обленятся в конец). Все поняли название «Как сделать презентацию за час до доклада» не как варнинг «воспользуйтесь этим в крайнем случае», а как руководство к действию.

Понравились шутки автора (тонкие однако), например : «Программисты получат опционы» (http://kapranoff.ru/talks/rit2008/takahashi-ru.xul?data=taka.taka#page52)

Тема/TODO: надо делать плагин к Mediawiki, для поддержки таких презентаций. Mediawiki даст хранение и коллаборативное редактирование плоских текстов, а также хранение картинок.


2.11.5 Perl и POE в повседневном обслуживании систем

Запомнилось фразой типа «Я программист и я парсю логи», отсылающей к мему «Мне 20 и я бородат (http://lurkmore.ru/%D0%9C%D0%BD%D0%B5_20_%D0%B8_%D1%8F_%D0%B1%D0%BE%D1%80%D0%BE%D0%B4%D0%B0%D1%82)» и заставляющей представить, как автор парсит логи вручную (с помощью ножниц, линеек, карандашей, …).

Смысл — для админских задач Perl лучше чем дрессировка зоопарка grep/sed/awk через shell-скрипты. Ну да, для этого его и сделали. Но я бы для и для этого взял Python — скорости особой тут не нужно, зато следующему разгребателю логов будет легче.

Было еще описание архитектуры классов и deployment'а, я не вникал, но вроде что-то разумное.

2.11.6 Сервис кроссдоменной авторизации One-Face

Ребята изобрели велосипед OpenID, который еще при этом использует browser persistence (см #Browser Persistence) на flash. Возможно он чем-то лучше, но никаких перспектив у этого я сходу не вижу, а разбираться лень.

2.11.7 Bucardo – мультимастер репликация для PostgreSQL

Насколько я понял, несколько «левая» (написана на Perl) система репликации. Лично не заинтересовался — так как у нас пока нет активного использования Postgres, а когда будет, думаю уже будет версия 8.4. с собственной репликацией.

2.11.8 PostgreSQL 8.4

Видимо, пример ошибки с выбором целевой аудитории — один из мощных системщиков/PostgresQL-контрибьютеров пытался донести детали реализации ожидаемой версии PostgreSQL, но целевой аудиторией должны были быть тоже разработчики PG, только более прикладные, а собравшиеся явно это не осилили, особенно расслабленные предыдущими блицами.

Метафорически это выглядело, как если бы в бальный зал какого-нибудь «Титаника» на верхней палубе вышел чумазый инженер-кочегар, и стал радостно пытаться объяснить публике, что наконец-то причистили котлы 4 и 17, откачали воду в отсеке 21 и потушили пожар у угольном бункере 12.

На самом деле, тут нужно было делать полноценный доклад (или серию), и в секцию «Алгоритмы».

РИТ-2008: Доклады: День первый

2 День первый

2.1 Инфраструктура крупного географически распределенного проекта

Рассматривалась задача обеспечения (в основном железом), глобальной вебдваноль соц.сети.

Упирая на необходимость доступности 24x7 и дороговизне использования инженеров в датацентрах, докладчик обосновал, что выбирая между стратегиями:

  • Много дешевого железа и алгоритмы дублирования (я так понимаю, это подход Google);
  • Самое брендовые железяки и софт (платная оптимизированная файловая система) и т.п;

они выбрали вторую.

Докладчик перечислял список разных умных девайсов CISCO, аппаратно умеющих и юзеров адаптивно, балансируя загрузку, разбрасывать по кластерам (BGP, GeoIP), и DDOS-атаки отражать, и вышивать крестиком и т.п.

Другие мысли:

  1. Глобализация — коннективити стало хорошее, можно делать несколько датацентров по миру, вместо одного.
  2. Канал у датацентров не покупать — будут обвешивать.


Кстати, проект — это сеть http://badoo.com — я даже зарегистрировался, осмотрелся — очень оптимизирована под знакомства. Контент текстовый не надо, все грузят фотки, описывают себя кучей атрибутов (рост, вес, секс-атрибуты) — на это способен и абсолютный тинейджер — и поехали — оптимальный сайт знакомств. Работает шустро, интерфейс приятный, рекламы не заметно. Думаю, будет иметь успех.

2.2 Content Delivery Network

Продолжение темы #Инфраструктура крупного географически распределенного проекта, теперь софтверная часть. Эвристики для разгона, многоуровневая оборона кеширующими прокси (nginx) против запросов пользователя, в общем одно только слово твердил — «ЛимпопоКеш, кеш, кеш». Т.е. вся структурная сложность архитектуры систем в результате сводится к примитивной термодинамике/сантехнике котельной: «Объем горячего кеша», «Горячий/теплый/холодный» кеш, выравнивание объемов кеш-резервуаров (шлюзование?), «Не ошибитесь с объемами, иначе вам грозит глобальное потепление контента!». Стимпанк какой-то — IT-инженеры видятся чумазыми кочегарами, крутящими вентили («стравить давление», «заполнить цистерну») в серверных.

Такая вот специфика — скорость взамен целостности. Я пару минут побродил по описываемой сети http://badoo.com, встретил и падение страницы, и случай, когда после поиска ссылки на двух разных пользователей вывели на один и тот же профайл. Интернет-развлекальщикам конечно так делать можно, но у нас, в учетных приложениях, такие подходы не нужны.

Говорилось также что-то на тему, как ввести ограничения на доступ к фото кругам авторизованных друзей, когда всю эту социальную метаинформацию нельзя довести до уровня простых кеширующих nginxов.


Не могу сказать, что понял докладчика. Во-первых, никакой функциональности типа «фото для друзей», на badoo.com я не обнаружил (правда я только зарегистрировался и «друзей» там у меня нет — но все равно, обычно такая функциональность всплывает сразу).

Докладчик говорил что-то про «цифровые сертификаты», насколько я понял, это подстроки в URL (см. параметр «cc» в нижеприведенном урле с моей фотографии на этом ресурсе).

Без этого (или с неправильным) параметром действительно не отдает («403 FORBIDDEN, NGINX/0.6.26»), но как это мешает доступу неавторизованных пользователей — непонятно — прекрасно по этому URL отдает кому угодно (даже REFERER не проверяется) — можете впрочем проверить. Основная защита видимо в JavaScript+CSS на странице просмотра фоток, которые не дает тупому пользователю сделать правой кнопкой на фотке «Copy Image» и посмотреть URL картинки. Наверно это да, правильно.

P.S. Кажется нашел защищенный контент — там есть фотоблоги («События пользователя») и они могут быть защищены паролем (или только для «друзей»). Возможно тут как раз эти «сертификаты» и вычисляются как что-то одностороннее от пароля или id-а пользователя.

2.3 Хостинг 2.0 и S+S

Типичный добротный сейлз-доклад от Микрософт: «Микрософт любит вас!», «Партнеры это наше все» и т.п.

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

2.4 Технология индексирования и поиска изображений в Интернет

Автор более-менее пояснял алгоритм работы (причем есть сервис, с которым можно поэкспериментировать — http://www.photodate.ru )

Насколько я раньше экспериментировал с подобными сервисами (типа http://myheritage.com), там все было как-то фантасктически тупо — т. е. грузишь фотку где «нос поднят» — тебе возвращают фото «звезд-мужчин», — «опустил нос и потупил глазки» — женщин.

Ну здесь тоже вроде пока все туманно — с чего бы первой фотке блондинки на кресле (http://www.loyl.ru/venga666/) быть похожей на этого урода (http://stas-fomin.narod.ru/photos/bib_marriage.jpg) (это вернулось мне в первом же поиске).

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

Может для изображений (типа отличить колесо от забора) или например для схожих пейзажей (море снизу, горы сверху) очень даже хорошо, но для распознавания лиц наверно надо ждать «визуального бертильонажа» — распознать глаза-нос-рот, замерить отношение размеров и по этим отношениям индексировать и искать.

Но я не в теме совсем, это просто мои фантазии, а автору респект, за попытку решения нерешаемого.

2.5 Поиск слов в аудио

Приятный «негрузящий» доклад, в основном о рынке для распознавания аудио, а не о самом алгоритме.

Насколько я понял это очередной стартап физтехов:

Очень похоже, что ребята работают также на силовиков, ибо в отличие от мирных алгоритмов, распознающих там лекции и т. п., как скромно сообщили авторы: «наш алгоритм оптимизирован на GSM-контент».

Просто дежавю какое-то, сразу вспомнил Солженицын «В круге первом» (http://www.lib.ru/PROZA/SOLZHENICYN/vkp1.txt), где в 50-x, ученые из «шарашки» занимались распознаванием записанной телефонных записей.

Дежавю усилилось в момент демонстрации. Вызвали первого попавшегося («итак, где у нас первый попавшийся»), после чего попросили его «прочтите именно эти слова». А-а-а! Не могу не процитировать урезанное описание аналогичной сцены демонстрации из Солженицына:


Рубин шепнул:

— Если — ты, и фраза твоя, скажи: «Звуковиды разрешают глухим говорить по телефону.»

Стоя в одном шаге от замминистра, Нержин уставился в него нахальным лагерным взглядом:

— Фразу — вы придумаете? — спросил он строго.

— Нет, нет, — отводя глаза, вежливо ответил Селивановский, — вы что-нибудь там сами сочините.

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

«Звуковиды разрешают глухим говорить по телефону.» — И это действительно так? — удивился Селивановский.

— Да.

— Читайте, пожалуйста.

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

— Вот видите, некоторые звуки не составляет ни малейшего труда отгадать, например, ударные гласные или сонорные. Во втором слове отчетливо видно — два раза «р». В первом слове ударный звук «и» и перед ним смягченный «в» — здесь твердого быть и не может. Еще ранее — форманта «а», но следует помнить, что в первом предударном слоге как «а» произносится так же и «о». Зато «у» сохраняет своеобразие даже и вдали от ударения, у него вот здесь характерная полоска низкой частоты. Третий звук первого слова безусловно «у». А за ним глухой взрывной, скорей всего «к», итак имеем: «укови» или «укави». А вот твердое «в», оно заметно отличается от мягкого, нет в нем полоски свыше двух тысяч трехсот герц. «Вукови…» Затем новый звонкий твердый взрывок, на конце же — редуцированный гласный, это я могу принять за «ды». Итак, «вуковиды». Остается разгадать первый звук,он смазан, я мог бы принять его за «с», если бы смысл не подсказывал мне,что здесь — «з». Итак, первое слово — «звуковиды»! Пойдем дальше. Во втором слове, как я уже сказал, два «р» и, пожалуй, стандартное глагольное окончание «ает», а раз множественное число, значит, «ают». Очевидно, «разрывают», «разрешают»… сейчас уточню, сейчас… Антонина Валерьяновна, не вы ли у меня взяли лупу? Нельзя ли попросить на минутку?

Лупа была ему абсолютно не нужна, так как ВИР давал записи самые разляпистые, но делалось это, по лагерному выражению, для понта, и Нержин внутренне хохотал, рассеянно поглаживая и без того приглаженные волосы. Рубин мимолетно посмотрел на него и взял принесенную ему лупу. Общее напряжение возрастало, тем более, что никто не знал, верно ли отгадывает Рубин.

Селивановский пораженно шептал:

— Это удивительно… это удивительно…


2.6 Sphinx, или как обыскать терабайт

Ну я несколько уже выпал из темы опенсорсовых полнотекстовых поисковиков, был уверен что основной мейнстрим — это Lucene (например внутрикомпании мы используем OmniFind), оказалось таки сделанное руками на C++ всегда забъет Java-библиотеку по скорости и портируемости (Java-библиотеки всегда плохо прикручивались к скриптовым фреймворкам). Так что при случае, надо присмотреться к http://www.sphinxsearch.com/

2.7 Коллаборативная фильтрация, как считать рекомендации

В общем, для тех потребителей (продуктов культуры и матценностей), кто не способен (или не желает тратить время) породить даже простой отзыв — представляется универсальная система быстрого сбора отзывов обо всем.

Это выглядит как измерение квантовых величин — непредсказуемое и бесконечно сложное состояние Божественного Творения (Человека) — проекцируют на базис из огромного (но конечного) числа измерений (объектов культуры и товарного рынка), и в результате, под видом того, что человек измеряет эти объекты («Человек есть мера всех вещей…» ©), на самом деле, происходит измерение самого человека, и через некоторое время сама система начинает подсказывать оценки, потом рекомендовать объекты для потребления, потом рекомендовать человеку других людей (для потребления или так…).

В общем, жуткая штука — типичная «Matrix has you».

Чтобы не быть голословным, завелся на http://belonesox.imhonet.ru/. К сожалению, десять раз делал попытку заполнить профиль — десять раз получал «Изменения в данных Вашего профиля успешно сохранены», и черта с два там что сохранилось. А так живенько все, хотя там трудно добиться целостности информации о контенте. Совет разработчикам (если читают) — попробуйте подключится к крупным «каталогам культуры с отзывами», типа http://world-art.ru/. Было бы интересно. И еще — хотелось бы возможность отключить показ средней оценки, пока не поставил свою. Реально «мнение толпы» сбивает.

2.8 Лингвистический процессор

Не понравилось. Материалы не подготовлены — слайдов нет, на проекторе крутили технический PDF из Ворда, с очень невнятными внутренними кодами словоформ — смысл которых, с апломбом жреца доводил до публики докладчик. Внешний вид докладчика (http://linguist.nm.ru/) (особенно одежда) был за гранью добра и зла — несмотря на общий неформализм IT-отрасли, какие-то границы должны быть. Доклад затянут - информации там максимум на блиц-формат, остальное время занимали странные шутки (а-ля «хохлохаризма») и прочий оффтопик. Суть алгоритмов практически не разьяснена, только упоминания, что все это «запатентовано». Получил только раздражение. Впрочем, в зале слышал часто смех, возможно это исключительно мое субъективное восприятие.

2.9 Исправление опечаток в Яндексе

Ну наверно самый подходящий к секции «Алгоритмы» доклад. Т.е. поставили задачу, действительно есть алгоритм и он примерно описан (а не просто слова «а внутри у ей неонка»), добротная презентация, и к тому же это явно работает на общедоступном сервисе.

Алгоритм состоял из нескольких эвристик, типа определения кодировки/транслита, и дальше, насколько я понял, типичной дерандомизации вероятностного алгоритма.

Т.е. опираясь на аксиому, что правильные слова встречаются в контенте чаще, и имея статистику употребления одно- и многословных сочетаний (собирают из индексов) вычисляются условные вероятности употребления близких словосочетаний в запросе — что именно имел в виду пользователь, при гипотезе, что вероятностное распределение слов в его запросах, даже если он абсолютно неграмотный, совпадает с таковым распределением в контенте.

Алгоритм конечно работает, приведенный для расшифровки пример «скчать кодык игре» я лично дешифровал (и ошибся) как «скачать кодак игра», оказалось (и так разобрал алгоритм) — «скачать коды к игре» (ну да, я не игрок).

Но по производительности у меня возникли некоторые вопросы — максимизация функционала «вероятность правильного запроса» там всплывает несколько раз — при «борьбе с опечатками», при «переразбиении слов», может как-то еще — в любом случае, алгоритм расчета там не шибко эффективный — применяется динамическое программирование, т.е. там всплывает экспонента по количеству близких словоформ и экспонента по числу слов в запросе. Борются с этим различными упрощениями модели (только двухсловные сочетания и т.п.), и все равно, грузят они неслабо — только исправлением этих опечаток занято 15 серверов. Причем (я не уверен, но вроде так), это исправление опечаток тормозит обработку запроса пользователя т.е. не совсем в параллель работает, (ну приводится же оценка числа результатов для запросов замен — значит поиск после вычисления запросов дополнительно дергается… ).

А мысль у меня возникла сразу такая — вместо того, чтобы использовать дерандомизацию вероятностного алгоритма, вычисляя условные вероятности сложных комбинаций, просто использовать вероятностный алгоритм (возможно с аппаратным датчиком случайных чисел). Ну типа если вероятность «скучать» ≈80%, а вероятность «скачать» ≈20% — тупо взять случайное число равномерного [0;1] интервала и выбрать первый вариант, если будет меньше 0.8. И все — сложность одной итерации будет линейная, для улучшения работы алгоритм можно будет гонять в цикле пока идет (параллельно) поиск, и отобрать наиболее часто встреченные варианты. Единственный минус — пользователям иногда будут выпадать маловероятные подсказки, но иногда и они будут правильные, а когда нет — они просто доставят людям фана, типа как «мультиканальный → мультик анальный». После презентации сообщил автору эту немудреную мысль, может пригодится, если ее поняли.

Еще один эвристический момент алгоритма — используют для анализа последовательность запросов пользователя, считая, что пользователь постепенно исправляет запрос, выбирая наиболее правильный. Тут видится мне возможность для атаки: т.е. куча запущенных ботов могут эмулировать пользовательские сессии, меняя корректные запросы на некорректные, и сбивая статистику. Да и без ботов, с падением грамотности населения — интернет протянут в глухие регионы, в РуНет пойдут пользователи из южных респубки СССР, скажем забывшие русский язык — такая ситуация может случится. Ну впрочем Гугл уже это проходил, когда (несмотря на то, что obscene-лексика блокируется), он долгое время рекомендовал по поводу и без «Может вы имели в виду gjhyj?».

Ну и еще риторически-моралистичное замечание — наличие такого сервиса полностью расслабляет пользователя, атрофируются последние стимулы писать грамотно хотя бы запросы — так что вебдванольный контент он тоже не сможет писать грамотно. А зря. Пусть бы мир (хотя бы виртуально-контентный), где живут продавцы и покупатели «уютных катеджей» (пример из доклада: Продажа катеджей, уютный катедж… (http://kotage.ru/)) просто не пересекался бы с моим…

2.10 Мастер-класс «Опыт быстрого масштабирования LAMP систем»

Автор (http://ymik.livejournal.com/) высказал с одной стороны достаточно много банальных вещей, с другой — имхо, немало очень спорных:

  • «Думать надо максимум на год вперед».
  • «Отказ от декларативных SQL SELECTов с JOIN в пользу хранимых процедур»
  • сомнительная кластеризация (поделить пользователей по БД в зависимости от первого символа в логине), после чего держать соединения со всеми этими БД.

Но так как реально с этой областью (масштабные LAMP) я не сталкивался, допускаю, что именно я неправ во всем. Автор же консультант («Ему виднее, он же китовед» ©Futurama). По крайней мере, он единственный из докладчиков, которых я слушал, употребил аббревиатуру «REST (http://en.wikipedia.org/wiki/REST)» (я ждал, что это будет в майнстриме обсуждений).

РИТ-2008: Доклады: Содержание

Общие замечания про РИТ-2008 я уже изложил, теперь кратко опишу посещенные мной доклады. Разумеется это весьма неполные рецензии, ибо я, как и любой другой участник мог посетить (полностью) никак не больше 25% докладов, но в целом, они некоторый интерес представляют.

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

Текст разобью на три поста — первый день без блиц-докладов, блиц-доклады и второй день.

2008-04-16

РИТ-2008: общие замечания

Был на РИТ-2008. Оба дня, просто участником. Попробую по свежему следу зафиксировать основные впечатления. Сначала, отдельным постом, общие хозяйственно-организационные вопросы — чтобы потом к ним не возвращаться. Потом планирую обзор посещенных докладов, потом отдельно лирику и риторику.

1. Выбор места (Крокус-экспо) наверно не очень удачен. Добираться таки тяжко. От нас был только один коллега на машине, и он опоздал. И если для участников это в общем еще терпимо — ну типа сам виноват, надо было думать, ведь вполне можно было надежно добраться с использованием долгой новострогинской ветки метро, плюс автобус/маршрутка до пешеходного перехода через МКАД, плюс минут десять пешком, то приглашенных зарубежных гуру так не погоняешь, а с автобусом до непосредственно Крокуса от м. Тушинская опоздание практически гарантировано, что и произошло, например, с выступавшим первым Алексом Москалюком (меня поправили) с многими во второй день.

Боюсь, я не предложу, где найти большую экспоплощадку такого размера по сходной цене и с шаговой доступностью скажем от метро, поэтому самое дешевое решение, как это запатчить — пустить первыми небрендовых докладчиков (и пусть как добраться голова болит у них), либо, что более гуманно, поставить первыми большие «разогревочные» блоки пятиминутных блиц-докладов. Сим убивается пачка зайцев — живые и «негрузящие» блиц-доклады прекрасно «разогреют» непроснувшуюся аудиторию, плюс маловероятно, что опоздают все авторы блицев, поэтому при опоздании первых, можно изменить порядок блиц-докладов и не потерять время (не допустить сдвигов и т.п.).

2. Косяки с «массовым обслуживанием». То, что они будут, я понял почти сразу как приехал в первый день — в гардеробе кончались вешалки, а ведь известно, что театр начинается именно с них. Был опасный стрем с кормежкой в первый день — кроме очередей, и микропорций, добил агрессивный персонал состоящий из южных гастрарбайтеров — у одного знакомого они аж вырвали и унесли недопитый стакан сока, после обвинений, в том что он взял два стакана, вместо нормы (а-а-а! они нападают на людей!! 11111!!!). Справедливости ради, скажу, что во второй день с этим вроде стало нормально, похоже выводы были сделаны.

3. «Видео-канал». В залах где были проекторы, экраны были дублированы и достаточные по размеру (что хорошо), но толи это свойство технологии проекции с обратной стороны экрана, толи проблемы конкретных проекторов/кабелей или техники, или софта осуществляющего морфинг — но все цвета убивались в абсолютный ноль (желтый-оранжевый на белом — неразличим абсолютно), плюс траблы с четкостью — разобрать детали даже достаточно крупных скриншотов было абсолютно невозможно. Т.е. ощущение что эффективное разрешение не дотягивало до 800x600. Поэтому в залах с проекторами, те, кто старался сделать добротную презентацию с иллюстрациями-скришотами-диаграммами проиграли тем, кто делал презентацию «по методу Такахаси» — т.е. ограничился банальными ключевыми фразами крупным черным сансерифом по белому. Хорошо, что один зал был оборудован альтернативно — четыремя большими широкоформатными телевизорами, и хорошо, что моему товарищу-коллеге, делавшему доклад, попался именно этот зал.

4. Сборник тезисов не получился, даром, что верстали в TeX/LaTeX (судя по шрифтам Computer Modern Roman). Ни вменяемого оглавления или указателя по докладам, по части докладов нет вообще ни слова (кроме заголовка), по части — многостраничная водянистая статья. От нас например высылалась полная статья, а вошел от нее урезанный и неполный абстракт — т.е. были бы нормальные требования по обьему в знаках/словах или еще чем — не вопрос, мы бы сделали. А когда произвольно отрывают начальный кусок — такое это уже недостойно даже автореферирующих поисковых роботов.

5. Раздаточные материалы — неплохо было бы кроме бумажного спама, чтобы раздавали полноценные IT-журналы (ну как на SECRе раздавали линейку журналов от Открытых Систем и др.). Вроде бы это не очень дорого.

Сразу правда отмечу, что Микрософт, видимо, несколько замучали муки совести после прошлого «жесткого» года, когда демонстративно «съели» Поносова, а после взмыленное бизнес-сообщество усиленно легализовывалось, доставая последние деньги и выстраиваясь в очередь к дилерам Microsoft за случайными числами ключами к продуктам, так что на РИТе была раздача официальных (вроде не трайл и без ограничений) коробок с 2005 студией плюс новой линейкой дизайнерского софта (атака на позиции Adobe). Сам правда постараюсь не оскоромится и не пользоваться сим (впрочем не зарекаюсь), но сейчас каждая честная студия в корпоративном хозяйстве наперечет, думаю, обязательно кому-нибудь пригодится.

6. Нужны тестировать минимальных требований к докладчику и его материалам. Конечно, нельзя гарантировать, раскроет ли докладчик тему или не осилит, зажжет ли или запуганно будет бубнить написанное на слайдах — но элементарные вещи быть должны. Например, слайды. Должны быть. В любом формате: PPT/OpenOffice/PDF, да хоть XUL-JS. Но именно слайды, т.е. дискретный набор кадров в портретном (landscape) формате. А когда скроллируют обычный (portret-A4) документ PDF сделанный из Worda, да еще набитый полным мусором — это уже издевательство над здравым смыслом и зрителями.

7. В догонку об уважении к зрителям — обнаружил странную моду — докладчики в рубашках (а не простых IT-футболках), но супержеванных. Даже не представляю, как такого эффекта добились, чем свои рубашки жевали — наверно это специальная мнуще/жующая машина, а я просто не в теме. Но мне это как-то не.

8. Надо тьюнить план/schedule — с выбранным форматом, как-то получалось, что либо темы скучные, либо не раскрывались. А решение есть — нужно с одной стороны увеличить количество пятиминутных блиц-докладов — тогда автор будет вынужден без жевания соплей кратко изложить задачу и свои достижения — и либо он это осилит и сорвет овации, либо недопрыгнет — ну как бывает на прыжках в высоту — прыгун разбегается, бежит, но что-то срывается и не прыгает — и тоже сорвет апплодисмент за то, что убил об стену себя, а не мучал долго сотню зрителей. А блиц-доклады оптимизировать — чтобы смена докладчиков происходила секунд за 10 (аки эстафета), а не полторы минуты как было — жалко «накладных расходов на переключение контекста» — а решение есть — по одному ноуту докладывают, другой ноут готовят к. Переключение свитчем или просто руками — все равно быстрей, чем лазить-искать файлы («извините за торможения, у нас тут виста»).

С другой стороны, для оставшихся докладов нужно добавить времени на вопросы — ситуация, когда докладчиков подгоняли, и не давали задать ни одного вопроса под туманным лозунгом «пообщаться вы можете в кулуарах» — совершенно бестолковая, идею личного присутствия убивает вообще (ну и сидели бы все по домам, смотрели слайды, слушали аудиозапись, было бы только лучше). В программе было что-то невнятно заявленное как «круглый стол докладчиков», но что это — выяснить не удалось, в назначенное время никого не было.

9. Стоит ли конференция своих (я записывался по еще 7тыр, опоздавшие по 9тыр) денег? За свои я бы не стал, но думаю, тут все осваивали корпоративные маркетинговые или HR-ные бюджеты — а так оно конечно стоит. Обычно деньги из этих бюджетов тратят на сильно более бессмысленные вещи.