2008-09-25

РИТ:Высокие нагрузки-2008 (2)

2 День первый

2.1 Что такое нагрузка

Хороший доклад, «еще раз о компьютерной архитектуре от практика-железячника».

  • Диски, память, сеть. Кэш, кэш, кэш.

  • Прочувствуйте «физику» процесса, подивитесь огромному GAPу эффективности диска на последовательном и рандомном доступе.

  • Мимоходом «похоронены» SAS/SCSI диски — их удел только в «кеширующих» машинах с высоковероятным рандом-доступом, а в основном нечего выделываться, берите обычные SATA и используйте правильные алгоритмы, (сортировки дисковых массивов — только слиянием и т. п.).

  • RAIDы вроде тоже заругали (или в другом докладе, не помню) — смысл, что надежность должна обеспечиваться уровнем выше, типа вместо 3 живучих «Тигров» пусть будет 30 Т-34.

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

  • AMD с привязкой памяти к процессорам must die.

2.2 О проектах, отягощенных производительностью

Очень ценный доклад, наиболее профильный для нашей компании. Докладчик сразу отметил, что сейчас есть два самых распространенных полюса систем:

  • общедоступная вебсистема, дофига пользователей, большие объемы, куча транзакций, никакой сложной логики, пофиг на отказы (нажмите Refresh, если что не нравится и т. п.)

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

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

Ну а дальше, докладчик прошелся по всем аспектам разработки таких систем, разрушая мифы, раздавая эпитеты и приговоры различным технологиям:

  • СУБД кроме Oracle, DB2, MySQL и PostgreSQL — ересь,

  • Oracle DBA зажрались и в массе лохи,

  • Java есть современный надежный Cobol, и это есть хорошо.

  • С# сам по себе ничего, но развертывание дороговато, (в основном за виндовс-сервер-лицензии).

  • Python прет (Django?), возможно будущее за Java+Python.

  • Всех (обоих) творцов на Erlangе гнать-избегать,

  • RoR — тормозит,

  • двухзвенка масштабируется отстойно (привет «Oracle и PL/SQL» подходу), по сравнению с трехзвенкой,

потому что кэш СУБД слишком тупой-низкоуровневый.

  • нефиг выделываться с XML-сериализацией — CPU на ветер.

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

  • на инфраструктуру — 10 % прибыли.

  • автоматизация тестирования форм — обязательно (видимо имелись в виду веб-формы).

В общем, наверно самый полезный для нас доклад, надо дождаться видео (я даже запросил DVD-диски, может пришлют), и смотреть всем.

2.3 Как писать высокопроизводительные сервера

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

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

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

Ну еще известна шизофреничная сложность отладки программы с тредами, на что докладчик искренне удивлялся — «зачем отлаживать? не проще ли писать без ошибок?».

Вроде как проверено на крупных яндекс-проектах, типа краулера и верхнего уровня поиска.

Была жесткая дискуссия, требовали доказательств, цифр, корректного эксперимента.

Я лично склонен поверить докладчику.

Причем с корутинами думаю не столкнусь, а то что апач2 с тредами хорош (пусть даже чуть хуже FSM) — это хорошо, возможно альтернативы ему отомрут сами со временем.

2.4 HCS — система хранения данных в Рамблере

Расшифровку аббревиатры забыл — некая библиотека для реализации некоторой алгебры операций (слияния, фильтрация, агрегация,…) над сверхбольшими плоскими файлами. (1011 строк, 10Tb/ 200Gb обновлений в день).

Работает быстро (сравнивали правда с неоптимизированными движками MySQL), но, насколько я понял, это не параллелиться (а ведь есть Hadoop, который вроде как можно было бы применить для этих задач).

Вроде готовится к публикации в опен-сорс.

2.5 Сервис хранения данных на базе SQL Server Data Services

Маркетинговый доклад. Верный признак «чисто маркетинга», когда всякие «архитектурные» картинки рисуются блоками с градиентной заливкой, всякий гламур и анимация на слайдах. По сути некая компиляция whitepaperов разных технологий (SaaS, DaaS, PaaS,… все модные buzzwords, все в кучу).

Интерес (судя по заполненности зала) был слабоват.

2.6 Проблемы работы с большими объемами реляционно слабосвязанных данных в высоконагруженных веб-проектах

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

В общем и новизны нет, и не похоже, что решение оптимально и вообще адекватно задаче.

2.7 Масштабирование системы баннерной рекламы с централизованной базой данных

Примитивная и кривоватая реализация баннероторговли и баннеропубликации на Oracle.

Зачем там Oracle — совершенно непонятно, скорее всего унаследованный код финансовых модулей на PL/SQL, которых лень переписывать, вокруг чего начали воротить все остальное. Ибо надежность там не нужна, транзакционность и немедленность реакции — тоже (грузят апельсины бочками данные SQLLoaderом), вообще как-то все ---. Похоже еще есть момент экономии на лицензиях (другой логики для централизованности СУБД я не вижу).

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

РИТ:Высокие нагрузки-2008 (1)

Сводка недоступна. Нажмите эту ссылку, чтобы открыть запись.

2008-06-22

Meet the Experts

Был на вендорской миниконференции «Meet the Experts» — однодневный митинг в Редиссон-SAS-Славянской, бесплатный и с кормежкой.
Вендорами были IBM (толкал железо) и Sybase (толкали Sybase IQ).

В качестве свадебного генерала выписали Билла Инмона, наверное самого известного (наряду с Кимбаллом), идеологом хранилищ данных.

Билл, конечно, не сказал ничего нового, ибо в области хранилищ данных, на уровне концепций (MOLAP/ROLAP/HOLAP, факты/измерения, «витрины», «ETL», …)  ничего нового за последние десять лет не появилось. Но так, понагнетал пафос, рассказал как DW (Datawarehousing) рулил при нефтеосвоении Мексиканского Залива, что объемы серьезных хранилищ меряются петабайтами и петабаксами, и что у всех телекоммуникационным провайдеров и финансовых банков, DW должно быть, ибо иначе некруто. Местами он продолжал полемику с Кимбаллом (у меня в блокноте пометка «агрегация только в витринах» — это явно оттуда), а вообще смешной дядька, напоминал комика времени немого кино (типа Чаплина — застенчиво улыбающийся человек в фраке с усиками, и вроде даже в котелке).

Кстати, о смешных персонажах — из начальства Sybase выступала-модерировала интересная девушка. Мало того, что у нее была IT-шная фамилия Еникеева (Anykey ), так она еще выглядела точь-в-точь, как Alice — персонаж IT-шного суперкомикса Dilbert. Нарытая пара фоток недостаточно передает сходство, но живьем оно было почти стопроцентным (особенно по прическе):

Ну, пересказывать технические поинты рекламируемых продуктов (Sybase IQ, Sybase Industry Warehouse Studio) — наверное неинтересно.

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

Из интересного — было несколько выступающих от российских пользователей Sybase (торговые сети, финансы). Что в целом интересно, из приводимых ими данных — то, что объемы, пока, достаточно копеечны — считанные терабайты, и несколько гигов ежедневного инкремента. В общем, далеко еще до петабаксового клуба. Ибо потом выступали западные пользователи — Vodafone, налоговики, и т.п. — у них объемы уже да, соответствовали мировым стандартам.

2008-06-20

мой монитор

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

Судя по некоторым обзорам и тому же ixbt, среди 24"-х лучший был NEC 2407. S-IPSная матрица, качество NEC, все дела.  Мешала только одна небольшая проблема — в России его не продавали. Сделал стойку на Samsung 245T — но всплыли кучи жалоб владельцев, среди которых были нетривиальные, не терпимые для меня — такие как свист. Альтернатива — сначала 2407, затем 2408 Dell.  Дождаться исправленной ревизии A01 Dell 2408  не удалось (тянуть до июля, ну нафиг), взял самую первую «бета» версию A00.  В коробке даже не было сетевого шнура.  Взял в слепую, без всяких проверок на битые пиксели субпиксели, но не потому, что повелся на маркетинговую акцию Dell по бесплатной замене мониторов с битыми субпикселями, а потому, что ждать и выбирать уже надоело. А насчет бесплатной замены, то я поразился хитрозамаскированному цинизму Dell — на самом деле, заявлено следующее:

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

Обеспечивается замена не для битых субпикселей или даже целых пикселей, а только для мертвых светящихся пикселей.

Это очень мудро, ибо мертвых светящихся пикселей на PVA матрицах почти никогда не бывает (по крайней мере, так писал Олег Артамонов, эксперт по мониторам и не только ) — мертвые пиксели на PVA-матрицах черные, а светящимися они бывают на TN матрицах.

Дополнительно, думаю русским покупателям на гарантию Dell вовсе не стоит обращать внимания, по крайней мере до того момента, когда у Dell появится в России свой гарантийный центр. Его нет, есть только представительство, которое, если вы окончательно достанете своим нудением, может заставить поменять монитор продавшего вам дистрибьютера — это информация по результам личного общения с продавцом.

Сейчас экспериментирую с монитором, в основном, на тему, какую яркость на мониторе выставить (на видеокарте конечно яркость выкручена в ноль) — выше 40% уже ощутим поток тепла (сидишь, как у камина), ниже — виден веер в «веерном тесте» на мерцание. Пока поставил 32%.

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

мой компьютер

Теперь слегка опишу текущую рабочую (домашнюю) машинку. Вопрос смены компьютера назрел давно, ибо современная разработка и софтовые эксперименты на машине 2002 года, с Athlon XP 1800, уже стали невозможны. Но я так привязан к старым, добротным и отлаженным вещам, что запланированная смена откладывалась в течении пары лет. Но все же процесс пошел.

Выбор деталей я начал с корпуса. Прошерстив весь рунет, особенно жуткую тусовку перфекционистов — forum.ixbt.com, понял, что при всем богатстве выбора, альтернативы Antec P182 нет. К тому же, этот корпус идеально влезал в нишу в тумбочке моего рабочего стола, сделанного по авторскому проекту за два года до. Тогда я заложил размеры под системный блок на глаз, а потом обнаружил, что более-менее крутой корпус, который как правило, miditower (типа Coolermaster Stacker), туда и не лезет. В общем, то что Антек чудом (в упор, после снятия некоторых декоративных элементов) подошел к этой нише, я воспринял как знак свыше. Проблемой правда оставалось то, что в РФ его не продавали — и я рискнул тащить его из немецкого интернет-магазина, вместе с блоком питания (Antec Fanless Fantom 500) по почте. К сожалению, дурацкий интернет-магазин высылал только UPSом, и в результате я попал под таможню, пришлось геморроиться с оформлением и тратить дополнительные деньги на таможенных брокеров (с обычной почтой покупка на такую сумму прошла бы без растаможки). Ездить на таможню правда не пришлось, переписка, заполнение форм и т.п. — по email.

Остальные детали купил в 128.ру, собрал и тестировал в офисе. Да, это очень похоже на серию из Dilberta  в которой Дилберт покупает в онлайн магазине COMP-U-COMP (похоже на мой  computeruniverse.net ), компьютер, и тащит его в офис для произведения вящего впечатления на коллег.

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

Состав с краткими, обосновывающими выбор, комментариями:

  • мат. плата s.775 ASUS P5E WS PRO (iX38 4DDR2 SATA2 RAID 2xPCI-E 2xGbitLAN 1394 USB2.0) — брал самый навороченный АСУС для ДДР2 памяти, что без WiFi, но побольше USB разьемов.
  • процессор INTEL Core 2 Duo E8400 (3GHz 6Mb 1.3GHz EM64T) — Рад, что дождался «45 нанометровых» процессоров, еще более холодные и мощные чем шеститысячная серия, причем за те же деньги
  • кулер Scythe Mugen SCINF-1000 — судя по форум.иксбт.ру — стыдно быть не должно. Хотя еле удалось посадить на процессор, и похоже, фиг его снимешь теперь с матплаты, если ее не разбирать и не вытаскивать.
  • память 2Gb x2 DDR2 SDRAM Corsair XMS2 TWIN2X4096-6400C4DHX G (PC6400 800MHz CL4) — Да, я знаю, что под домашним WinXP больше 3Gb памяти не бывает, но не жалко. Зато есть и запас по памяти, и запас по разьемам, если таки буду дома переходить на Линукс или что-то 64 битное (может через пару-тройку лет).
  • видеокарта PCI-E 256Mb ASUS EN8600GTS Silent/HTDP (GeForce 8600 GTS. DDR3. 2xDVI. TV) — самое навороченное от АСУС с пассивным охлаждением.
  • HDD 150Gb SATA Western Digital Raptor WD1500ADFD 10000rpm. — единственный мирный (SATA, а не SCSI/SAS), десятитысячник. Очень боялся шума, который порушит мою идиллию с тихим компьютером в спальне — но ничего, практически не слышно, иногда легкий, не разражающий стрекот. Зато из гибернации система выходит мигом, слизывая в раз три гига памяти с диска.
  • HDD 500Gb SATA2 Seagate Barracuda 7200.11 ST3500320AS 7200rpm — размер 500 давал в тот момент самый дешевый гигабайт, а сама модель вроде самая тихая среди пятисотников.
  • DVDRW ASUS DRW-2014L1T SATA — взял первый попавшийся
  • Logitech Internet 1500 Laser Cordless Desktop беспроводная черная + лаз. мышь беспров.USB — раскладка такая же, как у моей офисной логитеховской клавиатуры, только беспроводное.
Сильно заморачиваться по поводу абсолютной тишины — подвеска винчестеров на леску, урезания питания вентиляторам до 500-700 оборотов и т.п., перенос их в нештатные места — не стал. Спать вроде можно, жену не напрягает (разве что мое печатание).

2008-06-19

ASUS WL-500g Premium

Решил зафиксировать краткий обзор своего домашнего компьютерного зоопарка.

Итак, мой выбор роутера — ASUS WL-500g Premium. Когда выбирал, ожидал множество проблем — от юридических (по договору с провайдером роутеры на безлимитных тарифах запрещены), до технических — в домашней сети PPPoE, и сможет ли он договорится с центральным железом, или будут какие траблы — было неизвестно.

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

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

Оказалось все прекрасно и так. Маленькая коробочка, висит на стене, слегка греется и мерцает красным — эдакий микрокамин, заработала без перепрошивок сходу, поддерживает и несколько кабельных розеток, и WiFi для ноута, также подключил к нему свой старый струйный HP Deskjet 5150, так что можно считать, что у меня сетевой принтер.

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

2008-05-06

Ответ Николаю об Activity Streams

Ну мое мнение о ценностях в Интернете скорее всего массовой аудиторией не разделяется.

Но вкратце, мысли у меня сумбурные, но следующие. Основная ценность (для разумного человека в моем понимании) «N»-нольных интернет сервисов заключается не в предоставлении сюеминутного удовольствия от некоторого информационного потока («заценил креатифф», «посмеялся/ROTF», «спасибо, подрочил») — это все телевизор чистой воды. Тот же заппинг, хоть и с сильно большим числом каналов, и Activity Streams струят в туже струю.

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

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

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

Да, Activity Stream в текущем состоянии (фейсбук, миртесен) — совершенно такой же тупой поток информации, рулящий пользователем, т.е. пользователь опять становится «субъектом номер два по Пелевину» («Generation P»). Это конечно выгодно и удобно в коммерческом плане — пользователь, подстегиваемый социализирующими игрищами («оценки фотографий», «мой рейтинг», «мои гости»…) становится тупым и манипулируемым, и конечно более пригодным для «монетизации» любого рода.

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

Некоторые частные случаи таких сервисов уже начали реализовываться — продвинутые интернет-магазины завели «wish-list'ы» товаров, после чего продвинутые поисковые системы завели собственные классификации товаров и магазинов (целостные отображение реальных объектов и центров услуг в сетевые) и привязали виш-листы и системы рейтингов и отзывов к ним (Яндекс.Маркет). Есть привязки отзывов и рейтингов к URL'ам (эксперименты Google). Есть заходы со стороны нишевых сервисов (imhonet и т.п.).

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

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

Какие решения (околонаучная фантастика тоже, конечно) я был бы рад видеть:

  • Разрыв шаблона «места где я был≈интересующие меня места». Интересующие меня места я готов указывать напрямую, геометрическим выбором (меня интересует «ровно этот дом», «этот лесопарк», судьба этого стадиона и этого гаражного кооператива). Или «весь район, кроме этого дома алкоголиков». И т.п. Никакого отношения, жил я там или нет, быть не должно (ну может максимум информация по дому из последнего указанного места жительства, да и то, чтобы было отключаемо).
  • Разрыв шаблонов «публично объявленные друзья≈интересующие меня источники информации» и «публично объявленные друзья≈доверенные получатели моей информации». Т.е. я был бы рад иметь возможность подписки на определенные события от совершенно произвольного участника, а также предоставлять доступ к некоторым уровням своей информации участникам, которых я не желаю подставлять/публично обьявлять как-то с собой связанными.
  • Возможность подписки на избранный контент пользователя — возможно только на крупные события (женился, сменил место жительства, сменил пол), возможно только тексты с определенной меткой (или все тексты кроме определенных категорий — типа хорошо девушка про жизнь пишет, но регулярно ее пробивает публиковать художественную порнографию и т.п).
  • Ведение личных (не публичных) рейтингов/заметок по пользователям (и возможно другим источниками информации, если таковые в соцсети появятся). Пользователей-источников в уже стало нереально много, пытаться запоминать ники-урлы-аватары-юзерпики и соответственно свое отношение к качеству предоставляемой ими информации уже стало нереально, а ведь это при активном дата-текст-майнинге необходимо. Тут бы мог помочь на худой конец простой одномерный рейтинг («+/-» баллов) — тогда поставив десятый минус за два года, неспешно можно придти к выводу, что лучше этот источник информации игнорировать всегда и применить twit-функцию (которую я уже выпрашивал у вас тут). Или наоборот, поставив в очередной раз плюс, обнаружить, что делаешь это уже раз десятый, и собственно к этому автору нужно присмотрется, и возможно подписаться на определенный какой-либо информационный поток от оного. В идеале, рейтинги можно сделать N-мерными, измеряя отдельно художественную ценность текстов, отдельно их доистоверность, отдельно личные симпатии, плюс возможность собственных текстовых заметок-напоминаний («никогда больше не давать ей пить на свидании»). Напомню еще раз — это исключительно личные, «не видимые снаружи» оценки, только тогда их можно зафиксировать адекватно, и собственно они будут представлять ценность как «искусственная память».
В целом, подобных фантазий много, но идея, думаю, в целом ясна.

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

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

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-ные бюджеты — а так оно конечно стоит. Обычно деньги из этих бюджетов тратят на сильно более бессмысленные вещи.