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

2008-03-25

INTUIT: Введение в информатику

Прошел курс «Введение в информатику».

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

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

Из конструктива — как можно относительно быстро несколько улучшить курс — выкинуть из него все привязки к софту, ибо это устаревает гораздо быстрее, чем все остальное, и сейчас упоминание AIDSTESTа Лозинского вызывает смех, а через год уже и в поисковиках ничего нельзя будет найти. Все «по софту» нужно отсаживать в отдельные курсы типа «ПК для пользователя».

В общем, наверно не рекомендую, хотя если вы философ — попробуйте…

Идеальная коробка для винчестера

Вообще я давно интересовался технологиями переноса и мобильного хранения информации. А именно — винчестерами, с возможностью их переноса и быстрого подключения.

Ноутбуки меня никогда не привлекали — работу с компьютером я понимаю только как работу в подготовленных (мебель, обстановка) для этого местах, с нормальной клавиатурой и нормальным монитором. Таковые места всегда есть — офисы, институт, дом, и единственная проблема состояла в переносе артефактов.

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

Кроме мобильности, винчестеры удобны для коллекционирования любого контента — ибо в отличие от CD/DVD/…-дисков, с хранением которых неизбежно рано или поздно начнется бардак, винчестеры удобны для инкрементального добавления контента, а также его каталогизации. Это сейчас особенно актуально, с начавшейся компанией против контента в домашних сетях. Не говоря уже о бэкапах.

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

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

В свое время, лет десять назад, я возил просто винчестер и отвертку — с помощью которой в две-три секунды разбирал корпус и подключал винчестер к IDE-шлейфу (запасной IDE-шлейф с двойным разьемом возил с собой). Геморрой — выставление перемычек, возня с BIOSом, да и мода на полуразобранные корпуса, в которых на трехтомнике Кнута лежит привезенный винчестер — прошла.

Следующий заход — мобильные раки/салазки (mobile racks). С ними тоже наелся по уши — сжег пару винчестеров, изуродовал морды пары компьютеров, мерзкий шум лишних вентиляторов и вибрация, практически ни один не обеспечивал нормальный hot plug/unplug — требовалась перезагрузка. Это тоже все было не то.

Наконец началась эра мобильных коробок (внешних карманов для HDD) для винчестеров с USB-подключением. Это уже было почти правильно.

В частности, я считаю идеальным мобильным хранилищем для ноутбуков — экономичный (низкооборотистый — ≈4200 оборотов, или просто экономичный — нужно смотреть на тесты, особенно на потребление тока в момент старта) 2.5" винчестер в простом дешевом кармане, компактный и способный питаться и передавать данные используя только один USB-разъем (основной ресурс) ноутбука. Например мне весьма понравились дешевые Tsunami Artek Ultra 2500 (не путать с Tsunami Artek Speed — эти у меня глючили 100% — два из двух).

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

Соответственно я стал искать идеальный карман для 3.5" винчестера. С этим было хуже.

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

Отдельная песня — дополнительное питание 3.5" карманов — то что оно занимает немало места, это еще туда-сюда, но то. что его приходится возить вместе с коробкой, увеличивая вес и габариты, так что вся конструкция карман+БП+винчестер будет больше винчестера раза в три, — это уже никуда не годится. И наконец я нашел идеальную коробку для мобильного винчестера-хранилища. Все гениальное просто. Идеальная коробка для винчестера должна быть без корпуса. AgeStar FUBCP — адаптер-переходник подключает через USB все типы IDE/EIDE/SATA девайсов, по габаритам — как блок питания от 3.5" карманов + USB-кабель, т.е. даже возить уже не жалко. Но проблема с мобильностью и решается еще более эффективно — в местах наиболее частого появления (дом, офис) в компутеры можно воткнуть эти девайсы (по пятьсот руб за штуку, не жалко), а возить только винчестеры, любых видов, типов (IDE, SATA) и размеров (2.5/3.5, стандартная или половинная ширина). Охлаждение оптимально — настоящая конвекция. Число винчестеров с контентом можно наращить не прикупая более этих коробок, и совершенно не задумываясь более надо согласованием типов коробок и дисков. Вообще я думаю, это устройство — киллер для HDD-карманов. Посмотрим. Первые впечатления более чем положительные — все работает, я освобождаю и раздариваю предыдущие HDD-карманы. Единственное чего не хватает — кожаных, или на худой конец нейлоновых чехлов-обложек для 3.5" винчестеров — если вы знаете, что такое есть, как оно называется или где купить — пожалуйста, сообщите мне.

INTUIT: Введение в математику

Прошел курс « Введение в математику».

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

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

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

2008-03-11

INTUIT: Основы программирования

Прошел курс «Основы программирования».

Курс полезный, фундаментальный — покрывает процентов 70 того, что проверяется GRE (Graduate Record Examination) по Computer Science. Конечно, некоторым темам уделено совершенно несправедливо много места — индуктивным функциям или инвариантам в циклах. Это незаслуживающие внимания частности.

Понравилось использование PostScript (не стали откапывать Форт) для иллюстрации польской инверсной записи.

Конечно, сейчас можно считаться программистом («банковским программистом» или «программистом СУБД»), не имея ни малейшего понятия о хранении элементарных типов данных в памяти, и будучи не в состоянии прочесть даже элементарный миниблок на ASSEMBLERе, но гордиться такой ситуацией нечего.

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

2008-03-01

WinDV

Кстати, если кого интересует, мое представление о самой правильной софтине для захвата DV (capturing DV) реализует хоть и старинная (Latest version: 2003-05-29), но не потерявшая актуальности софтина WinDV.

Я обнаружил, что основные сценарии работы с видео у меня следующие:

Техническое видео

Всякие сьемки семинаров-лекций и т.п. Нужна только оцифровка, после чего перегон с помощью Virtual Dub из DV в MPEG4/XVID. Корректируется размер видео (если снимал в 16:9 режиме), например 720x576 → 720x404, разрешение стараюсь держать максимальным (чтобы можно было читать текст с проекторного экрана и т.п.), уменьшается FPS (количество кадров в сек.) с 25 до 15, далее подбирается битрейт, чтобы влезло на одну дешевую однослойную DVD-болванку (для облегченного распространения)

Нетленка

То, от чего не хотелось бы потерять и бита, и что хотелось бы пересматривать лет через 20 в максимальном качестве — съемки ребенка например. Это надо все перегонять (без упаковок и трансформаций) с кассет на DVD-диски, и так как ничего дешевле на единицу емкости обычных DVD сейчас нет — желательно сразу резать файлы на размер который полезет на диски без проблем, да и сохранять в именах файлов информацию о датах/времени съемки. Дальше конечно можно сверстать из отрывков фильм, для пересылки друзьям/родственникам, однако сие необязательно. Для такого контента достаточно и двух зрителей - нас с Наташей.

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

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

Рекомендую использовать следующие настройки WinDV:

AVI Type
type-2 AVI (vids+auds). Иначе не все плейеры играют получившийся AVIшник.
Discontinuity treshhold
3600. Будет разбрасывать по отдельным файлам отрывки снятые с интервалом в час. (например утро и вечер или разные дни съемки лягут в отдельные файлы).
MAX AVI size
31000. Чтобы каждый файл был не больше отдельного однослойного DVD-диска.

INTUIT: Основы XML

Прошел курс «Основы XML».

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

Разумно комбинировать изучение этого курса с курсом «Языки информационного обмена», хотя у того курса тоже есть свои проблемы.

INTUIT:Языки информационного обмена

Прошел курс «Языки информационного обмена».

Плюсы: достаточно компактный курс (короткие лекции), т.е. стиль скорее «Ничего обо всем», и дает понятие о смысле десятков трех-пяти буквенных аббревиатур связанных с XML. За счет этого все лекции в принципе сохраняют на данный момент свою актуальность.

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

Минусы: неудачные вопросы. Буквоедские формулировки — сложно ответить или вообще понять о чем речь, не найдя текстовый блок, к которому сформулирован вопрос в тексте лекции. Злоупотребление тестами с множественным выбором вариантов (местами вариантов порядка десятка). Неотлаженность тестов — часто встречались (на февраль 2008) тесты с неправильными ответами.

2008-02-29

INTUIT: Спецификация языка HTML

Прошел курс «Спецификация языка HTML».

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

Я был бы рад другим курсам-переводам спецификаций W3C, например спецификации XSLT. У автора курса этот перевод даже заявлен http://pyramidin.narod.ru/, но страничка с ним почему-то недоступна. Есть еще переводы стандартов здесь — http://w3.hotbox.ru/, может кто-то сделает курсы на основе этих переводов …

2008-02-23

Основы работы с XHTML и CSS

Прошел курс «Основы работы с XHTML и CSS».

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

Что не понравилось — взята тема Стандартов и Переносимости, однако куча места (несколько лекций), потрачено на явную ересь, с уклоном в микрософтовский продукт плейсмент — лекция о фильтрах для изображений (нестандартные расширения CSS для IE), или лекция как засунуть MediaPlayer на страничку (с кучей тестов-вопросов по параметрам его вызова, хорошо хоть classid не спрашивали). Это лучше убрать из курса — курсу будет только лучше. Также можно выкинуть раздел про фреймы и DHTML — изложено все равно не очень, темы курсу достаточно перпендикулярные, да и на это есть отдельные курсы. Отдельный луч ненависти — вопросам про «веб-устойчивые цвета», понятие не только не определенное в этом курсе, так и вовсе неизвестное в рунете за исключением пары страничек. Т.е. такие небольшие и перпендикулярные куски мешают советовать курс основной целевой аудитории — авторам статей, техническим писателям, т.е. всем тем, кто должен поставлять для веба (или техдокументации), семантически корректно размеченный контент. А цветами и стилями должны заниматься специалисты по верстке и дизайну, это вполне отдельная тема.

Но в целом впечатление очень приятное, спасибо авторам курса, буду рекомендовать сотрудникам.

2008-02-19

Вечер корейского милитари-кино.

Под настроение устроил себе вечер милитаристкого корейского кино.

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

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

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

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

Хотя надо отметить, что никаких юридических проблем убийство штатского солдатам не принесло, никаких тебе дел Буданова-Ульмана-Аракчеева, медаль и внеочередной отпуск. Так что тут — «все болезни — исключительно от нервов плюс сифилис от удовольствия»: в части нарастал бардак, который перерос в полное Бл*дство (подруга двинулась окончательно, старательно копируя Офелию), которое породило Последствия, с которыми неудачно боролись …

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

Или это мессадж Северной Корее? — «видите, какие мы никакие, давайте мириться» (в конечных титрах стандартная молитва за воссоединение).

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

Это очень добротное батальное кино — пиротехники, костюмов, оружия и массовки тут не жалели. Прекрасно иллюстрирует некоторые тезисы из «Десяти мифов Второй Мировой» Исаева:

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

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

Но в целом все очень политкорректно, обе стороны показаны с худших сторон по очереди, да и герои (главные и не очень), наблюдались по обе стороны баррикад. Пафосу конечно много, но фильм заслуженно выбивает слезу. Даже как-то неудобно перед корейцами за тот тренировочный полигон, который СССР с Китаем и США, устроили больше полусотни лет назад. Оно конечно хотели как лучше, да вышло как всегда. Вот острова Японии отдать желания нет, а тут вина наследственная как-то ощущается.

Отдельные моменты. В корейской армии (как 50ых годов, так и современной) в казарме или палатке спят головой к проходу. Я этого в упор не понимаю (идеально ведь для тихо убить всех).

Прекрасный урок также насколько вредно даже не участвовать, а просто светиться в политике, если не готов жизнь положить за эти ценности. Ну там митинг за плошку риса, или путевку на озеро Селигер. Когда «Другие Придут К Власти» разбираться никто не будет, будут только «массовые расстрелы», а ведь тогда учет был никакой, а сейчас однозначно найдется все.

Кстати, если кого-то заинтересует актуальная русскоязычная информация (инсайдерские новости, аналитика) по Южной и Северным Кореям, то им сюда. В частности, там обьяснят, почему несмотря на полвека объединительной риторики, Кореи не объединяются. Там же можно найти хорошие исторические обзоры.

2007-11-23

INTUIT: История информационных технологий

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

2007-11-02

Интеграция Open Source-систем для управления разработкой ПО

Статья в виде PDF-файла.

(Можно также посмотреть PDF-презентацию).

А обсуждать или просто комментировать можно здесь или в вики-системе.

2007-11-01

SECR-2007: Мой доклад.

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

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

Итак, посетил сегодня конференцию, побродил по докладам, для оценки докладчиков и слушателей время ещё не пришло, разбор полётов будет возможно дальше. Но что меня убило, это то, что в выданных материалах (на флешках) не было по сути никакого контента — только суммарный PDF-сборник, где по большинству докладов были только краткие аннотации. Никаких полных версий докладов или хотя бы презентаций. Совершенно непонятно, зачем я не спал две ночи, подготавливая презентацию (а потом и полный текст доклада), получив письмо «пришлите полный текст доклада, завтра в 12 мы должны записать диск». В том, что на выданных флешках (на 1GB, при суммарном объеме записанных файлов в 20Mb) были записаны полные материалы, был уверен не только я, но и большинство докладчиков (мотив «более детально этот слайд вы сможете рассмотреть дома» звучал неоднократно). Возможно это недоразумение завтра будет исправлено, однако на своем докладе (он будет завтра, 2 ноября) мне уже нельзя будет опираться на то, что электронная версия роздана.

Поэтому, прямо сейчас, я публикую печатный текст доклада в виде PDF:
«Интеграция Open Source-систем для управления разработкой ПО».

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

2007-10-30

INTUIT: Введение в технологию программирования

Прошел курс «Введение в технологию программирования»

Очень хороший курс от матерого «зубра» (теоретика-методолога и практика): практически советский аналог Книги Брукса. В первых пяти лекциях кратко, причем с шутками-прибаутками-историями из практики, изложен весь необходимый «культурный бэкграунд» для командного разработчика, будь он тим-лидом, или рядовым «ведущим программистом». Очень рекомендую студентам и начинающим разработчикам, очень кратко и без лишнего пиетета рассказывается о «культовых» понятиях («диаграммы Ганта», «ISO 9000», «CMMI», «MSF» и т. п.), опущены разве что последние модности: («Agile», «XP», «Scrum»).

Немало рекламы команды (плюс мемуары), но в разумных пределах.

Некоторые сомнения вызывает уклон последних лекций в детальности систем реального времени и особенно телефонии. Оно конечно понятно, что автор (и его команда) на них «крокодила съели, собакой закусили», но вероятность, что с этим столкнется читатель, мне кажется весьма мала. Да, мне приходилось сталкиваться с SDL для реинжениринга телефонии, но в РФ наверное всего пара мест (ЛГУ, ИСПРАН), где это может встретиться, и наверно лучше было бы рассмотреть технологии программирования на базе «обычной информационной системы».