Pull to refresh
3
Karma
0
Rating
Игорь Алексеенко @iamo0

User

Оптимизация производительности фронтенда

Привет.

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

По поводу производительности вопрос спорный, canvas полностью перерисовывается достаточно быстро и, что важно, он делает это полностью на видеокарте, никак не затрагивая основной процессор, потому что он не является частью DOM, поэтому даже полная перерисовка всего графика будет быстрой, в примере с земным шаром это видно. Другое дело, что канвас это просто низкоуровневая графика и описывать интерактивное взаимодействие будет действительно непросто, потому что все ховеры, клики и прочее, что в SVG работает из коробки, нужно будет описывать руками: вычислять координаты, делать вывод, какой из элементов был нажат, обновлять соответствующие объекты и перерисовывать графику.

Оптимизация производительности фронтенда

Всё верно, я действительно перепутал. На деле сервис-воркеры это частный случай веб-воркеров, предназначенный для проксирования запросов, но я рассказывал про них как про сами веб-воркеры. Спасибо за внимательность.

Оптимизация производительности фронтенда

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

Неизвестный Smalltalk

Очень непривычно видеть код набранный не моноширинным шрифтом.

Rosetta приблизится к комете Чурюмова Герасименко на расстояние 10 километров

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

Google I/O 2014. День первый

Android Extension что, простите?)

image

Новый 2ГИС

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

Новый 2ГИС

Опоздал, да.

Новый 2ГИС

Посмотрел, у меня 1.7+. Почему-то я думал что он обновляется автоматически)

Новый 2ГИС

Отлично сделано — симпатично, удобно, и что важно шустро.
Только странно что не работает в Я.Браузере.

Новый свободный шрифт Fira

Courier бессмертен)

Новый свободный шрифт Fira

Такая проблема есть, кстати, не только в Consolas для windows. На маке почти у всех моноширинных шрифтов на нечетных значениях слетает кернинг. Я думаю, что проблема в сглаживании.

Новый свободный шрифт Fira

Ну они для разных задач создавались — перед PT Sans по умолчанию стоит задача сделать универсальный шрифт, который везде хорошо работает, а вот у Фиры очень узкая направленность — она должна хорошо выглядеть на девайсах с Firefox OS и я думаю, что с этой-то задачей они прекрасно справятся (не говорю справились, потому что не видел воочию).

И в случае таких шрифтов другим системам может повезти, а может и нет. Вот, Droid Sans тот же прекрасно работает где угодно, а с фирой получается что не повезло.

Новый свободный шрифт Fira

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

Поэтому я для себя остановился на старых добрых проверенных шрифтах которые используются везде и стараюсь не экспериментировать)

Новый свободный шрифт Fira

Fira Sans Mono очень симпатичный, но не понравилось, что у него гигантский интерлиньяж.
image

Проблемы CSS. Часть 2

что бы → чтобы.

Даты в JavaScript: количество дней в месяце и некоторые особенности Safari

Может быть всему виной мое плохое знание английского или что-то другое, но я совершенно не могу понять почему добавление новых методов в прототип объекта не считается манки-патчингом и не попадает под определение: extend or modify the run-time code of dynamic languages.

И еще, я не могу понять откуда у взялось конкретное определение манки-патча как только изменение методов уже существующих классов-интерфейсов. Может быть виной всему то, что я вырываю куски из контекста и никогда не читаю ничего до конца, но вот я вырвал из статьи в вики кусок, в котором говорится «Monkey patching is used to… apply a patch at runtime to the objects in memory, instead of the source code on disk». Если я в прототипе Date объявлю дополнительное свойство, то оно появится у всех инстансов класса Date.

var myDate = new Date();
Date.prototype.isMonkeyPatched = true;
myDate.isMonkeyPatched; // true

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

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

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

Даты в JavaScript: количество дней в месяце и некоторые особенности Safari

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

> A monkey patch is a way to extend or modify the run-time code of dynamic languages without altering the original source code.

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

Даты в JavaScript: количество дней в месяце и некоторые особенности Safari

Хочется сказать не про сам способ, а про то, как вы предлагаете его применять:

> Используя прекрассную возможность прототипирования в JavaScript можно расширить встроенный объект языка Date собственным методом

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

Уж лучше написать старую добрую простую функцию или если вам так нравится идея работать с классами, вы можете отнаследовать новый класс от стандартного Date, назвав его, например, ImprovedDate и работать с ним. Тогда, в его прототип вы сможете добавлять какие угодно методы и перекрывать любые стандартные уже объявленные.

Information

Rating
Does not participate
Location
Иркутская обл., Россия
Date of birth
Registered
Activity