Тонкости создания анимации в jQuery

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

А суть вот в чем: если навешивать на некое событие анимационные эффекты типа slideDown/slideUp или fadeIn/fadeOut, то отработки анимации последовательно выстраиваются в очередь и выполняются пока очередь не закончится. При этом, если событие происходит с большой частотой, так что анимация не успевает отработать, можно получить нежелательные артефакты в виде долгого дерганья и мигания для slide* и fade* функций соответственно.
Пример 1: http://jsfiddle.net/hrF9k/. Попробуйте быстро поводить мышью над серым квадратом.

Чтобы прервать исполнение очереди вызовов анимации, можно использовать функцию stop(). Но тут возникает неприятный эффект, про который я так и не понял баг это или фича. Значение CSS свойств в момент вызова stop() запоминаются и в последствии используются как максимальные.
Пример 2: http://jsfiddle.net/zGc4w/.

Раньше это ставило меня в тупик, и мне приходилось искать обходные пути реализации задачи. А секрет оказался прост: функция stop() принимает два логических параметра, отвечающих за очистку очереди и переход к предельному значению анимации соответственно.
Пример 3: http://jsfiddle.net/SRAsT/3/

Обновление PyCharm и значки запуска в Ubuntu Unity

В PyCharm на данный момент не реализовано автоматическое обновление. Обновится IDE предлагает, просто скачав очередную версию с сайта разработчиков.
Если при обновлении PyCharm захотелось распаковать дистрибутив в директорию не соответствующую текущей директории установки, то обновить значок запуска Unity можно, отредактировав файл ~/.local/share/applications/jetbrains-pycharm.desktop.
Выходу PyCharm 2.0.2 посвящается.

Событие change элемента select в Jquery

На часах 5 утра. Только что потерял около часа на такой вот хитрушке в Jquery. Есть на странице элемент select, и написал я к нему обработчик события change. И все отлично работало, но понадобилось мне устанавливать значение select-а после загрузки страницы.
То есть что-то типа:


$(function(){
    $('#select_id').val('foo');
});

Да вот незадача — не происходит чендж после этого и все тут.
Решение простое:


$(function(){
    $('#select_id').val('foo').change();
});

Т.е. после смены значения элемента, необходимо вызвать событие change вручную.

А теперь спать.

Structure Synth — Discovery

Structure Synth — это пакет, предназначенный для легкой генерации трехмерных структур. SS позволяет работать с несколькими геометрическими примитивами, располагая их в пространстве с помощью встроенного скриптового языка EisenScript. Также, есть возможность генерировать последовательности структур, меняя какие-либо параметры с помощью JavaScript API. Рендер можно использовать как внутренний, так и внешние, например SunFlow. Для генерации видео из полученной коллекции изображений я использовал Mencoder по совету, данному в этом посте.
Ну, а результат моих экспериментов, собственно, вот :)

Отдельный респект хочется заслать в город-герой Калининград ребятам из The Q’s и поздравить их с выходом первого альбома.

Я.Субботник в Санкт-Петербурге, 3 декабря

Я.Субботник в Санкт-Петербурге пройдет 3 декабря в офисе Яндекса.

Регистрация на мероприятие начнется 23 ноября. Количество мест ограничено.

Для тех, кто не попадёт в число участников или не сможет лично присутствовать на Я.Субботнике, будет организована онлайн-трансляция.

Подробную информацию о мероприятии читайте здесь.

Автономная навигация БПЛА в помещении

Бродя по youtube в поисках роликов с квадрокоптерами, я наткнулся на примечательное видео. Исследователи университета Пенсильвании создали БПЛА (MAV) с автономными вычислительными ресурсами, способный осуществлять навигацию в помещениях. Сбор данных с датчиков об окружающем пространстве и их обработка производятся роботом самостоятельно. Оператору достаточно делать только глобальное целеуказание. Все вычисления производятся установленным на борту процессором Atom 1.6 Ghz под управлением Robot Operating System. Читать далее Автономная навигация БПЛА в помещении

Алгоритмы для визуального дизайна

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

Сейчас читаю «Алгоритмы для визуального дизайна с использованием языка Processing» Костаса Терзидиса.

Содержание:

  • Элементы языка
  • Точки, линии и фигуры
  • Структура фигур
  • Основы графических пользовательских интерфейсов
  • Обработка изображений
  • Движение
  • Прогрессивные графические алгоритмы
  • Трехмерное пространство
  • Твердотельная геометрия
  • Запись/чтение файлов
  • Физические вычисления

Книга написана для дизайнеров и медиа-художников простым языком, так что читать её в оригинале, с моим средним знанием английского, вполне комфортно.