Monthly Archive for September, 2009

Распечатать и приклеить на лоб.

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

as3optimization

Похожая со свойствами TweenLite висит у меня в офисе. Новичкам будет уж точно очень полезно.

Много об оптимизации

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

И вот сегодня Grant Skinner публикует отличнейший материал. Многого не знал. Рекомендую всем AS3 разработчикам!

Скорость vs OOP

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

Довелось мне посидеть оптимизировать небольшую библиотечку, на которой стоят все мои остальные. В ней происходит разбор XML, да через e4x, но все же разбор и создание некоторых объектов на основе этого XML. При этом, проходят некоторые проверки функциями isЧто-то(XML), которые представляют собой всего 1-3 строчки. Вызываются такие функции для каждого элемента, то есть часто.

А теперь смотрим тест.

var t: int;
var v: int = 5;
var w: int = 6;

for ( var i: int = 0; i < 5; i++ )
{
  t = getTimer();
  for ( var j: int = 0; j < 1000000; j++ )
  {
    var k: Boolean = func( v, w );
    //var k: Boolean = v > w;
  }
  trace( getTimer() - t );
}

private function func( v: int, w: int ): Boolean
{
  return v > w;
}

Выполняется у меня под 400ms.

Если раскомментировать вторую строку и закомментировать первую, то время падает до 90-100ms. В 4 раза. Полмиллисекунды тут, полмиллисекунды там и уже набираются десятки. Вспомним, что при 30fps на 1 кадры выделяется 33 миллисекунды. А ведь еще столько кода нужно выполнить.

Более того,

var t: int;
for ( var i: int = 0; i < 5; i++ )
{
  t = getTimer();
  for ( var j: int = 0; j < 1000000; j++ )
  {
    var k: int = value;
    //var k: int = _value;
  }
  trace( getTimer() - t );
}

public function get value(): int
{
  return _value;
}

та же фигня. Геттер по сути та же функция с теми же проблемами.

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

Неправильные данные.

Как по-вашему должен работать флэш компонент с неправильными входными данными? Неправильно он должен работать, мать вашу, неправильно! Тут спрашивают “А как же защита от дурака?”, данные подаются моими соратниками по работе. Наверно, все они дураки а мне пора увольняться. Я еще должен тратить столько же времени на то, чтобы сделать дуракоустойчивость от своих же напарников?

Приходит мне гневное письмо, что мол BUFFERING ISSUE. Чозанах? Висит плеер на buffering, то есть метедата не получено еще от видео файла. И так оно висит минуту пока файл не загрузился до конца, потому что метадата В КОНЦЕ. Кто-то додумался пихнуть такое видео и не проверить. В итоге я виноват, что клиент ничего не увидел, потому что минуту не ждал, пока загрузится.

И подобная фигня постоянно и везде.

Это не дизайн, а PSD документ.

Мне, как флэш разработчику, часто приходится “оживлять” во флэш сайты задумки разных дизайнеров. Если дизайн убог, у меня нет мотивации делать из него флэш конфетку, о чем я сразу говорю заказчику/начальнику (не то, что мне лень делать хороший сайт, а то что дизайн УГ и сайт получится соответственно еще большим УГ). И вот мне прислали дизайн, который вроде бы красивый, все ссутся от радости, но что-то в нем не то…

Это не дизайн, это PSD документ. Какой-то компот из двумерных слоев с тенями, большинство из которых в природе впринципе быть не может. Почему такие тени? Где источник света? Включенная лампочка такие тени точно не отбрасывает. Этот холодильник 3 дюйма в глубину? Почему все объекты параллельны камере? Некоторые элементы просто отражения одного и того же. Бутылка приклеена к стене? Такие провода тупо быть не могут.

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

Это я зануда, да?

О пользе времени, проведенного за RSS ридером

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

Так все же, RSS это вселенское зло? Не совсем, из своего личного опыта, напишу почему.

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

Помните, в детстве родители заставляли читать книжки? Воображение там развивает и все дела. Всё, детство кончилось, книжки остались только издательства O’Reilly, а читают сейчас блоги. Какой практический смысл в книжках? Книги — это пища для ума, не иначе. Известно, что при многократном повторении некоторых действий, эти действия «записываются» в мозге и достаются из памяти легче, быстрее и часто автоматически. При однократном действии, например прочтении книги, вы вряд ли через какое-то время сможете вспомнить некоторые детали, но идеи, которые автор пытался до вас донести, останутся в памяти на долго, и очень вероятно будут использованы позже в творческой деятельности. Вот где развитие воображения.

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

Блоги — это источник информации на любую тему, 98% которой вам прямо сейчас не нужна. А чтение ненужной информации вполне выглядит как ненужное действие. Но, позвольте привести несколько примеров из жизни. Я на своем опыте убедился, что от этой вроде бы не нужной информации вполне есть ощутимая польза в ближайшем будущем.

* С человеком с разносторонними интересами приятно найти общие темы для разговора, сколько раз меня выручало от тупого неуютного молчания то, что несколько дней назад я читал вроде бы ненужную статью по той или иной теме.
* Порой только зная, что что-то теоретически существует, можно сильно облегчить себе жизнь. Примеров масса, в основном в IT. Вы не представляете как часто приходится кидаться линками на блог посты в особо ярых велосипедоизобретателей.
* Чужой опыт может понадобиться тебе. Например, столкнувшись с очередным косяком IDE по работе, я вспомнил, что что-то такое я где-то видел уже. И да, нужная статья с рецептом решения проблемы была быстренько найдена.
* Чужой негативный (порой с фатальным исходом) опыт тоже всплывет в памяти, чтобы предостеречь как чего-то делать не стОит. Пример был только недавно, когда я чуть не попался на развод, о котором где-то читал в контексте многочисленных убийств некой бандой.
* Наконец, даже баянами с башорга можно развлечь не особо активных интернет юзеров.

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

И да, сейчас у меня перерыв и я пишу эту статью.

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

Мск

Двудневная деловая поездка в Москву прошла весьма удачно. Было выполнено 6 задач из запланированных 7ми. Поставлены некоторые чекпоинты и дедлайны моей дальнейшей профессиональной деятельностью.

Ну и, хорошо посидели конечно, хоть и не так долго.

msk

OOP

Вот оно настоящее OOP.

2009_09_11_11_31_pictureisunrelated_com_wp_content_uploads_2009_08_MartinK_mustunplug