rdvornov

14 декабря 2015, Москва, Россия

# Понедельник 50 твитов

Всем привет! На этой неделе с вами буду я, Роман Дворнов @rdvornov
Работаю в Avito, основной интерес – SPA и смежные задачи

10:13

Еще о себе: исследователь, изобретатель велосипедов, евангелист веб-стандартов, идейный вдохновитель, критик, докладчик.

10:13

Спектр тем для обсуждения достаточно широкий. Плана пока нет :) Сегодня пообщаемся в свободной форме, буду рад ответить на ваши вопросы

10:14
@jsunderhood что критикуешь?

Все что считаю неправильным :) Сюда же относится плохой дизайн, ненадежные или нерасширяемые решения etc

@jsunderhood что критикуешь?

10:20
@jsunderhood зачем веб-стандарты?

Стандарты (спецификации) нужно читать и знать. От незнания появляются плохие решения и продукты

@jsunderhood зачем веб-стандарты?

10:21
@jsunderhood как смотришь на бесконечные js транспилеры (coffee, pure, clojure etc)

А мы покупаем или продаем? Если писать самому - хорошее упражнение. В инфраструктуре - лишнее звено.

@jsunderhood как смотришь на бесконечные js транспилеры (coffee, pure, clojure etc)

10:26
@jsunderhood как смотришь на бесконечные js транспилеры (coffee, pure, clojure etc)

В случае с ES6, траспилер обоснованное усложнение. Но, например, в случае с coffeescript - нет.

@jsunderhood как смотришь на бесконечные js транспилеры (coffee, pure, clojure etc)

10:27
@jsunderhood @s_martynuk зачем так обобщать? Не все нестандартные решения "плохие") Некоторые из них, я думаю, часть прогресса стандартов.

Речь была про не знание возможностей и принципов работы. Из-за делаются более сложные решения, чем могли бы быть...

@jsunderhood @s_martynuk зачем так обобщать? Не все нестандартные решения "плохие") Некоторые из них, я думаю, часть прогресса стандартов.

10:56
@jsunderhood покажь велосипеды

Ну, например, github.com/basisjs/yatra или "всем известный" github.com/basisjs/basisjs :)

@jsunderhood покажь велосипеды

10:59
@jsunderhood какие интересные задачи есть в Авито?

Их много. Одна из самых интересных т.н. Messenger - web sockets, real-time все дела. Скоро появится на сайте.

@jsunderhood какие интересные задачи есть в Авито?

11:05
@jsunderhood какие интересные задачи есть в Авито?

У нас в план закладываются не только продуктовые задачи. На след. год - тестирование, компоненты, шифт в сторону SPA

@jsunderhood какие интересные задачи есть в Авито?

11:07
@_sashashakun @jsunderhood Рома справедливо написал, лишнее звено. Если тошнит от js, можно оставаться на сервере. а ES6 уже и сам хорош
11:11
@mr_mig_by @jsunderhood сегодня ты чему-то научился, а завтра новый день, с чистого листа, каждый раз ищя способы решения или городя костыли

Да, многие, например, до сих пор не знают Flexbox и думают, что он мало где поддерживается.

@mr_mig_by @jsunderhood сегодня ты чему-то научился, а завтра новый день, с чистого листа, каждый раз ищя способы решения или городя костыли

11:17
@mr_mig_by @jsunderhood сегодня ты чему-то научился, а завтра новый день, с чистого листа, каждый раз ищя способы решения или городя костыли
11:17
@raxpost @jsunderhood а что думаете про typescript?

Вполне ок. Пока в JS нет типизации, хорошая альтернатива. Типизация особо важна для enterprise.

@raxpost @jsunderhood а что думаете про typescript?

11:22
@jsunderhood @i_told_ya @raxpost разве мы не обрекаем себя на постоянное использование траспайлеров в погоне за новыми фичами?

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

@jsunderhood @i_told_ya @raxpost разве мы не обрекаем себя на постоянное использование траспайлеров в погоне за новыми фичами?

11:34
@jsunderhood многие из этих многих поневоле поддерживали IE8-9, так что CanIUse их бы не утешил. Но всё изменилось: github.com/10up/flexibili…)
11:35
@jsunderhood насколько интересен в этом плане Dart?

Dart может быть альтернативой, если не пугают "сложности" интеграции с JS и малое сообщество. С архитектурой там ок

@jsunderhood насколько интересен в этом плане Dart?

11:37
@JiLiZART @jsunderhood гугл же похоронил дарт, не?

Насколько понимаю, они отказались от идеи интеграции в браузеры, но продолжают развивать. Надеюсь @mraleph поправит

@JiLiZART @jsunderhood гугл же похоронил дарт, не?

11:43
@_sashashakun @JiLiZART @jsunderhood живее всех живых см github.com/dart-lang/sdk/ и, конечно же, flutter.io
11:49
@twenty @jsunderhood @_sashashakun @JiLiZART и вообще есть люди которые просто используют react + dart github.com/cleandart/reac…
12:05
@jsunderhood Привет, Рома! Вчера на #wstdays так до конца и не раскрыли вопрос зачем вы используете Webpack и Gulp вместе.Можно поподробнее?

Webpack появился вместе с ES6 в начале лета. До этого был gulp. Переделывать все на webpack пока нет смысла

@jsunderhood Привет, Рома! Вчера на #wstdays так до конца и не раскрыли вопрос зачем вы используете Webpack и Gulp вместе.Можно поподробнее?

12:41

Вчера в интервью на WSD задали вопрос: что стоит ожидать выдающегося во фронтенде в следующем году? Ответил ерунду :) А что бы ответили вы?

12:48

Интересно, будут ли ответы оригинальнее "react захватит мир"? ;)

12:49
@jsunderhood Может роста популярности Relay или появление альтернативы?

Популярность Relay будет расти по естественным причинам. Но я бы не назвал это "выдающимся" достижением

@jsunderhood Может роста популярности Relay или появление альтернативы?

13:02
@jsunderhood можешь прокомментировать происходящее на avito.ru при заходе в консоль? баг или фича?

Можно сказать, что "фича". Одна из библиотек обфусцирована и использует своего рода "защиту" – "вешает" devtools

@jsunderhood можешь прокомментировать происходящее на avito.ru при заходе в консоль? баг или фича?

13:24
@jsunderhood webassembly, js сможет делать реально сложные по перформансу штуки юзая wasm модули. habrahabr.ru/post/261205/
13:41
@vkurchatkin @jsunderhood нет. Это уменьшение трафика. Не более. Юзать для защиты, это как цифры при умножении местами поменять))

Обфуская делается ради защиты "имплементации", если не полностью защитить, то сильно усложнить риверс инжинириг

@vkurchatkin @jsunderhood нет. Это уменьшение трафика. Не более. Юзать для защиты, это как цифры при умножении местами поменять))

14:00
@jsunderhood но зачем? гмейл, ютуб и фейсбук этого не делают. это было решение разработчика или менеджера?

Обфускация делается только для одного критического скрипта, принцип работы которого нежелательно раскрывать

@jsunderhood но зачем? гмейл, ютуб и фейсбук этого не делают. это было решение разработчика или менеджера?

17:10
@iSnifer @cssunderhood чем больше stargazers - тем круче код? ))

Это не всегда так. Чтобы оценить крутость кода, нужно на него посмотреть и понять как он работает ;)

@iSnifer @cssunderhood чем больше stargazers - тем круче код? ))

17:17
@jsunderhood ты так говоришь, как будто у корпораций этих скриптов нет

Продуктовый код обычно нет смысла обфусцировать, его много и он типовой

@jsunderhood ты так говоришь, как будто у корпораций этих скриптов нет

17:19
@jsunderhood авито — не продукт?

Продукт. Я же написал, что обфусцируется только один скрипт (то есть библиотека) – все остальное нет

@jsunderhood авито — не продукт?

17:22

Ну что ж, ответов на вопрос "что выдающегося нас ждет в следующем году?" оказалось мало. Поделюсь своими мыслями.

17:46

Во-первых, кажется разработчики браузеров договорятся и везде появится имплементация Shadow DOM, по крайней мере все к этому идет

17:48

А вот Custom Elements могут не случиться в следующем году, там еще много нерешенных вопросов

17:50

Очень вероятно, что во всех браузерах появится WebAssembly, и это может оказать сильное влияние на разработку

17:54

В мире CSS: Grid Layout может получить широкую поддержку в следующем году - это кардинально изменит подход к верстке интерфейсов

17:54
@jsunderhood Сейчас shady DOM вполне себе збс

Текущая имплементация в Blink (v0) это не то, что будет в браузерах через год (v1)

@jsunderhood Сейчас shady DOM вполне себе збс

18:01
@jsunderhood какие юзкейсы Shadow DOM кроме изолированных стилей?

Скрытие особенностей реализации – это не только про CSS. В обсуждаемой спеке многое будет не так как сейчас в Blink

@jsunderhood какие юзкейсы Shadow DOM кроме изолированных стилей?

18:03
@alexeyraspopov @jsunderhood всмысле кроме? Это очень крутой способ создавать компоненты. Пакетом выступакет html В нем и css и js и верстка

Как раз таки HTML Import и Custom Elements очень не факт, что получат широкую поддержку.

@alexeyraspopov @jsunderhood всмысле кроме? Это очень крутой способ создавать компоненты. Пакетом выступакет html В нем и css и js и верстка

18:04
@jsunderhood Не так быстро, как флексы, к сожалению — фолбечиться с гридов куда сложнее. Так что чуть позже. Но будет круто, да :)

Разве есть проблемы с фолбеком, если у нас есть @supports? Или я что-то упускаю?

@jsunderhood Не так быстро, как флексы, к сожалению — фолбечиться с гридов куда сложнее. Так что чуть позже. Но будет круто, да :)

18:09
@jsunderhood больше СервисВоркеров, оффлайна и как следствия CRDT

Не смотря на крутость Service Workers, вряд ли стоит ожидать их скорой адаптации: слишком сложная штука, сырые спеки

@jsunderhood больше СервисВоркеров, оффлайна и как следствия CRDT

18:16
@jsunderhood @alexeyraspopov ну отталкиваясь от опыта с полимером

Polymer не показывает реальную ситуацию с Web Components. Он поменяется с обновлением спек, без обрат. совместимости

@jsunderhood @alexeyraspopov ну отталкиваясь от опыта с полимером

18:58
@jsunderhood внутри сетки все работает только когда находится на одном уровне вложенности. Если добавлять врапперы и подсетки, теряем смысл.

Во Flexbox так же, но это никого не останавливает. Врапперы кажется не нужны, а подсетки должны работать

@jsunderhood внутри сетки все работает только когда находится на одном уровне вложенности. Если добавлять врапперы и подсетки, теряем смысл.

19:03
@jsunderhood почему? ShadyDOM, фолбечится. Вы изучите тему. Там апишкой прикрыто все

Не ShadyDOM, а Shadow DOM. Не фолбечится - можно только закостылять. Тему изучал, API и принцип работы будут другими

@jsunderhood почему? ShadyDOM, фолбечится. Вы изучите тему. Там апишкой прикрыто все

19:06

Ага, нашел habrahabr.ru/post/259187/
Видимо пропустил про ShadyDOM.

19:17
@jsunderhood не врубаюсь в чем прикол ShadowDOM. Есть ли какие-то преимущества перед virtualDOM? Почему ShadowDOM - это круто?

Совершенно разные вещи. VD в коде, для абстрактного описания структуры. SD – в браузере, для инкапсуляции.

@jsunderhood не врубаюсь в чем прикол ShadowDOM. Есть ли какие-то преимущества перед virtualDOM? Почему ShadowDOM - это круто?

20:42
@jsunderhood кто сказал что одинаковые? Для конечного дева, чем shadowDOM лучше,для решения какой задачи?Компоненты грубо говоря и там и там

Одно не может быть лучше другого. Shadow DOM браузерная технология, почитайте спецификацию w3c.github.io/webcomponents/…

@jsunderhood кто сказал что одинаковые? Для конечного дева, чем shadowDOM лучше,для решения какой задачи?Компоненты грубо говоря и там и там

22:00
@lapanoid @jsunderhood не сочтите за саморекламу, но у меня есть кое-что посвежее чем тот анонс на хабре youtube.com/watch?v=eWF_1n…
22:35

# Вторник 91 твит

Прошу прощения, что не пишу 100500 твитов :) но нужно было написать важный комментарий...

0:58

Вчера я выступал на #wstdays про минимизацию CSS, если пропустили вот слайды: slideshare.net/basisjs/csso-c…

0:58

После случился сложный диалог, @andrey_sitnik посчитал, что я ввел аудиторию в заблужение по поводу PostCSS, детали: gist.github.com/ai/65e23d9185c…

0:59

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

1:14
@jsunderhood ты во сколько спать ложишся?

Стараюсь не позже 2х, но последний месяц-два не получается раньше 4х. Хочется успеть сделать больше...

@jsunderhood ты во сколько спать ложишся?

8:56
@jsunderhood К чему идет или стремится frontend-разработка? Разве новые технологии удешевляют процесс?

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

@jsunderhood К чему идет или стремится frontend-разработка? Разве новые технологии удешевляют процесс?

8:58
@jsunderhood и надолго вас хватит с таким режимом? :)

Сомневаюсь. Успокаивает только факт, что скоро новогодние праздники, только бы дотянуть :)

@jsunderhood и надолго вас хватит с таким режимом? :)

9:00
@jsunderhood ну пользовательские ожидания будут расти до тех пор, пока не изобретут ОДНУ кнопку, которую надо нажать. :)

Я немного про другое. Вот лет 10 назад верстали под один форм-фактор. Сегодня под несколько (десктоп, телефон, etc)

@jsunderhood ну пользовательские ожидания будут расти до тех пор, пока не изобретут ОДНУ кнопку, которую надо нажать. :)

9:05

Давайте поговорим про приобретение опыта и обучение. Уделяете ли вы этому время вне рабочего времени?

9:07

Я лично больше склоняюсь к балансу работа-жизнь. Но в нашей сфере сложно развиваться, если делать это только в рабочее время...

9:09

Моя личная проблема – я увлеченный трудоголик. Если меня захватывает идея, не успокоюсь пока ее не реализую. Другая проблема – идей много :)

9:11
@jsunderhood что есть "вне рабочее время"? Вопрос почти без шуток

Предположу, что это время обязательного нахождения в офисе, ну или когда вы что-то должны работодателю :)

@jsunderhood что есть "вне рабочее время"? Вопрос почти без шуток

9:16
@jsunderhood да, потому что ты должен расти не только в рамках
агенства, но и сам.
9:17
@jsunderhood стараюсь по возможности делать то, что не имеет прямого отношения к работе, но даст новый опыт и новые знания
9:17
@jsunderhood получается закончить реализацию прежде чем ты займешься следующей идеей?

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

@jsunderhood получается закончить реализацию прежде чем ты займешься следующей идеей?

9:19
@jsunderhood а ожидания-то не изменились :) кнопку, а лучше без кнопки, хотят и на десктопе и на мобиле.

Я про те ожидания, что можем удовлетворить сегодня. Вот появится технология – будем делать все без кнопок ;)

@jsunderhood а ожидания-то не изменились :) кнопку, а лучше без кнопки, хотят и на десктопе и на мобиле.

9:23
@jsunderhood мне кажется, что без этого в нашей области вообще никак.Все развивается слишком быстро. Нужно бежать, чтобы оставаться на месте

Полностью поддерживаю. Жаль, не все это понимают

@jsunderhood мне кажется, что без этого в нашей области вообще никак.Все развивается слишком быстро. Нужно бежать, чтобы оставаться на месте

9:27
@jsunderhood Я больше учусь чем работаю. Хочу научиться всему :) и попроситься в какую-нибудь крутую студию. Проблема - остановиться не могу

А каким образом проходит обучение? Я к тому, что приобретаемые знания нужно закреплять практикой. Надеюсь это так

@jsunderhood Я больше учусь чем работаю. Хочу научиться всему :) и попроситься в какую-нибудь крутую студию. Проблема - остановиться не могу

9:30
@jsunderhood так уж повелось, что суббота - это день конференций/IT тусовочек. Если ничего нет, тогда это dev day- пробую что-то новое.
9:30
@jsunderhood прошел через это. Это диприсуха, что ты не есть часть всего этого. И просто наблюдаешь, уча новое повторяя за крутыми студиями

Можно начать решать задачу, кот. еще никто не решал. Как минимум будет новый опыт, максимум – не только наблюдение

@jsunderhood прошел через это. Это диприсуха, что ты не есть часть всего этого. И просто наблюдаешь, уча новое повторяя за крутыми студиями

11:11
@jsunderhood А вы думали о будущем, лет так на 10-20 вперед? Будет ли в 40 или 50 у вас fulltime-разработка?

Думал. Сложно сказать. Вероятно в этом возрасте вообще уйду из IT. Но поживем увидим.

@jsunderhood А вы думали о будущем, лет так на 10-20 вперед? Будет ли в 40 или 50 у вас fulltime-разработка?

11:26
@jsunderhood после рабочего дня переползаю на диван и читаю или смотрю видео докладов. (работаю удалённо)
11:34
@jsunderhood уйдешь в бизнес, или вообще в другую профессию?

Бизнес это нервы, а хочется что-то "для души". Это я так мечтаю. Что это будет, пока не знаю, как и получится ли :)

@jsunderhood уйдешь в бизнес, или вообще в другую профессию?

15:18
@jsunderhood сделайте пожалуйста опрос что используют в роли сервера: browserSync/webpack-dev-server/connect+livereload/etc.. ? 🔧

Имелось в виду в качестве dev-сервера?

@jsunderhood сделайте пожалуйста опрос что используют в роли сервера: browserSync/webpack-dev-server/connect+livereload/etc.. ? 🔧

15:20

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

15:22

Результат собеседований в течении года, 8 из 10 кандидатов ничего не читают, ничем не интересуются, не ходят на митапы/конференции etc.

15:25

Очередной вопрос: ваша компания поощряет/мотивирует вас на получение новых знаний и опыта? Каким образом?

15:28
@jsunderhood не поощряет. ни в одной не было такого. А мотивируют все т.к. рыба ищет где глубже...

Не то слово использовал, имел ввиду "способствует". Но так понимаю - это не сильно меняет то, что вы написали...

@jsunderhood не поощряет. ни в одной не было такого. А мотивируют все т.к. рыба ищет где глубже...

15:51
@jsunderhood Ходить на конференции прям-таки обязательно? Не ходит, значит херовый кандидат?

Не обязательно, можно и видео смотреть. По наблюдениям, обычно те кто "не ходит" сильней "отстают от жизни".

@jsunderhood Ходить на конференции прям-таки обязательно? Не ходит, значит херовый кандидат?

15:53
@webholt @jsunderhood ну по крайней мере интересоваться сообществом/меняться опытом. Я спрашиваю какие конфы знаете ?
15:55
@jsunderhood времени в сутках у всех одинаково, если постоянно ходить по собеседованиям, то когда ходить на митапы и читать книжки? ))

Уделять час в день на чтение новостей/статей, ходить раз в месяц-два на митап/конференцию - это не так много времени

@jsunderhood времени в сутках у всех одинаково, если постоянно ходить по собеседованиям, то когда ходить на митапы и читать книжки? ))

15:59
@mktoid @jsunderhood чем выше уровень разработчика тем он меньше по собеседованиям ходит.
15:59
@jsunderhood смысл тогда сидеть в индустрии, которая тебя не интересует, непонятно.. Странные люди
16:05
@jsunderhood Хакатоны проводят часто. На конференции отправляют. Подбирают проекты под желаемые технологии.
16:05
@jsunderhood конференции, курсы, регулярные встречи с небольшими докладами внутри команды, внедрение новых крутых фишек в проекты
16:05
@jsunderhood Не на каждой работе можно выделить время для просмотра видео. А ожидать, что люди будут свободное время тратить - нечестно.

Это как раз про баланс работа/жизнь. Хорошо, если так получается и компания это поддерживает

@jsunderhood Не на каждой работе можно выделить время для просмотра видео. А ожидать, что люди будут свободное время тратить - нечестно.

16:09
@jsunderhood Это огромное количество времени. Особенно для тех, у кого семья и дети.

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

@jsunderhood Это огромное количество времени. Особенно для тех, у кого семья и дети.

16:15
@toivonens @jsunderhood и даже в этом случае, можно находить время, идти на компромиссы ;)
16:15
@KSDaemon @jsunderhood Нельзя. Индустрия должна решать проблему быстрого устаревания знаний, это не личная проблема людей.
16:16
@KSDaemon @jsunderhood Если б нам платили как адвокатам в Америке — можно и по 60 часов работать. А нам платя чуть чуть выше среднего.

Это в Европе. В Москве хорошему IT-шнику платят гораздо выше среднего. З/п редко работает как хороший мотиватор.

@KSDaemon @jsunderhood Если б нам платили как адвокатам в Америке — можно и по 60 часов работать. А нам платя чуть чуть выше среднего.

16:17
@toivonens @jsunderhood у меня семья и ребенок, программирую, провожу время с семьей, самообучаюсь и занимаюсь бизнесом...
16:20
@way2bariton @jsunderhood @KSDaemon Отправлять на конференции в рабочее время, устраивать внутренние хакатоны, делать внутренние доклады.

Это хорошие инициативы со стороны компании. Но всегда есть те, кто и этим не пользуется - не когда, не интересно...

@way2bariton @jsunderhood @KSDaemon Отправлять на конференции в рабочее время, устраивать внутренние хакатоны, делать внутренние доклады.

16:23
@jsunderhood в вашем понимании "отсталость от жизни" это не знание бездумно заученных баззвордов, а это уровень мартышки

В моем понимании отсталось от жизни, например, "flexbox не знаю, но он же нигде не поддерживается"

@jsunderhood в вашем понимании "отсталость от жизни" это не знание бездумно заученных баззвордов, а это уровень мартышки

16:41
@toivonens @jsunderhood у нас девочка-бекендер выучила сама React и мы её перевели во фронт, по её желанию.
18:53
@jsunderhood идеи спонтанны? или возникают на основе своего видения развития технологий? Бывает же так, что люди скачут с одного на другое

По-разному. Часто спонтанны небольшые штуки. А иногда думаешь о проблеме год-два, потом – эврика! – и быстрей кодить

@jsunderhood идеи спонтанны? или возникают на основе своего видения развития технологий? Бывает же так, что люди скачут с одного на другое

18:58
@jsunderhood даже с двумя можно найти немного времени, трансляции, подкасты помогают
18:59
@nanonymoused @jsunderhood не обязательно ходить на все, но посещать регулярно стоит, чтобы синхронизировать свои знания
19:02
@boriscoder @jsunderhood ни на одной не был ни разу ) на работе пытались меня туда затащить, успешно отмазался. вроде как я норм прогер

Если не секрет, почему? Для меня это возможность узнать чужой опыт, пообщаться с интересными людьми,вдохновиться etc

@boriscoder @jsunderhood ни на одной не был ни разу ) на работе пытались меня туда затащить, успешно отмазался. вроде как я норм прогер

19:05
@boriscoder @jsunderhood м, ок. сам я против подхода "ВСЕМ НА КОНФЕРЕНЦИИ!11", и считаю,что мерить людей конференциями и баззвордами - не то

Для меня хождение по конференциям и чтение проф. материалов показатель насколько человек интересуется фронтендом

@boriscoder @jsunderhood м, ок. сам я против подхода "ВСЕМ НА КОНФЕРЕНЦИИ!11", и считаю,что мерить людей конференциями и баззвордами - не то

19:08
@jsunderhood @nanonymoused flexbox поддерживается в браузерах 80% это становится интересным и для бизнеса

Так мне отвечали кандидаты. Узнав про 80-90% – удивлялись. У нас IE11+, можно использовать, если знаешь где и как

@jsunderhood @nanonymoused flexbox поддерживается в браузерах 80% это становится интересным и для бизнеса

19:22
@jsunderhood Вполне возможно, что кандидат ранжирует интересы по значимости для бизнеса и flexbox у него примерно на двухсотом месте.

Ок. ES6 – 7 из 10, не то что не знают, но и _ничего_ не читали о нем. Знают, что есть такое и на этом все...

@jsunderhood Вполне возможно, что кандидат ранжирует интересы по значимости для бизнеса и flexbox у него примерно на двухсотом месте.

19:31

И кстати, бизнесу пофиг технологии, главное чтоб "работало". И откуда кандидат знает значимость, если ничем не интересуется?

19:33

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

19:36
@jsunderhood у большинства конференций очень низкий показатель полезная_информация/затраченное_время. Проще прочесть несколько статей.

Сколько и какие конференции вы посещали за последние 3 года? Если можно в виде двух списков "ок" и "не ок"

@jsunderhood у большинства конференций очень низкий показатель полезная_информация/затраченное_время. Проще прочесть несколько статей.

19:41
@jsunderhood это норм пример,но у меня из знакомых никто его не знает особо и не использует (и я сам). такая "отсталость" - ничего зазорного

Это не норм. Важно знать, что это такое и когда стоит применять. Даже чтобы "нагуглить", нужно знать что "гуглить"

@jsunderhood это норм пример,но у меня из знакомых никто его не знает особо и не использует (и я сам). такая "отсталость" - ничего зазорного

19:46
@mr_mig_by @jsunderhood конечно есть исключения, но большинство приходит "творить" на работу, а не проблемы решать и деньги зарабатывать.

Не уверен, что большинство. Кто горит своим делом–особо ценны. Не уважаю тех, кто выбирает работу чисто из-за денег.

@mr_mig_by @jsunderhood конечно есть исключения, но большинство приходит "творить" на работу, а не проблемы решать и деньги зарабатывать.

19:55
@jsunderhood @dmitryshimkin такие разрабы действительно существуют? О_о

Не могу назвать мою выборку репрезентативной (~30 с момента принятия ES6), но вот так, да...

@jsunderhood @dmitryshimkin такие разрабы действительно существуют? О_о

19:59
@jsunderhood @dmitryshimkin имхо бОльшая польза конференций в афтепати и живом общении с коллегами
19:59
@jsunderhood Чтобы осилить с общих чертах ES6, шарящему в ES5 разработчику нужен день. Один чертов день.

ES5 тоже мало кто толком знает :( А ведь читая хотя бы статью в неделю можно хорошо все изучить за несколько месяцев

@jsunderhood Чтобы осилить с общих чертах ES6, шарящему в ES5 разработчику нужен день. Один чертов день.

20:22
@jsunderhood Для начала вполне хватит вот этой статьи: babeljs.io/docs/learn-es2…, было бы желание не сидеть в пещере.
20:22
@jsunderhood Это все такие вещи, с которыми люди знакомятся, когда у них поддержка нулевая. И сложно поймать момент, когда уже можно.

Твитер, rss фиды, подписки, статьи, конференции – не позволят вам упустить момент. Если читать, конечно

@jsunderhood Это все такие вещи, с которыми люди знакомятся, когда у них поддержка нулевая. И сложно поймать момент, когда уже можно.

20:31
@jsunderhood Роман, скажи, какой уровень знаний должен быть у джуна, чтобы им заинтересовались, например, в Авито? Или джуны вам не нужны?

Пока не берем джуниоров. У нас требуется знания: ES3/5/6, DOM, CSS2/3/4. Плюсы: API, фреймворки, паттерны, алгоритмы

@jsunderhood Роман, скажи, какой уровень знаний должен быть у джуна, чтобы им заинтересовались, например, в Авито? Или джуны вам не нужны?

20:36
@jsunderhood Рома, я придерживаюсь того же мнения, но я уже настолько законсервировался в своих четырёх стенах комнаты...

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

@jsunderhood Рома, я придерживаюсь того же мнения, но я уже настолько законсервировался в своих четырёх стенах комнаты...

20:38

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

20:41
@jsunderhood @vladimore @mr_mig_by гореть делом это круто, но если человек будет еще мотивирован и денежно, то это идеальный работник

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

@jsunderhood @vladimore @mr_mig_by гореть делом это круто, но если человек будет еще мотивирован и денежно, то это идеальный работник

20:53
@jsunderhood..., что у меня нет друзей в реале((( И следовательно ходить мне не с кем, а одному мне как-то боязно( + я тот ещё интроверт)

Когда я первый раз пришел на @moscowjs, то не знал никого. Сейчас, иногда, устаю жать руки :)

@jsunderhood..., что у меня нет друзей в реале((( И следовательно ходить мне не с кем, а одному мне как-то боязно( + я тот ещё интроверт)

20:58
@jsunderhood @aSafort @dmitryshimkin Подтверждаю, все действительно так. Много собеседую людей в аутсорс компанию.
20:58
@jsunderhood И к тому же, на мой взгляд конференции нужно посещать не столько ради докладов, сколько живого общения, развиртуализации:)
20:58
@jsunderhood потому же, почему я не ходил на лекции в универе: подача научно-популярная, слишком быстрая, верхушечная. кому-то такое норм.

Откуда информация, если не был ни на одной конференции? ;)

@jsunderhood потому же, почему я не ходил на лекции в универе: подача научно-популярная, слишком быстрая, верхушечная. кому-то такое норм.

21:01
@jsunderhood Роман, а вы из Авито? Можете пнуть дизайнеров, чтобы они сделали _нормальный_ сайт, а не привет из 90-ых?

Для любого вас он кажется "древним". Но опыты показали, что он лучше работает для не ITшников и старшего поколения

@jsunderhood Роман, а вы из Авито? Можете пнуть дизайнеров, чтобы они сделали _нормальный_ сайт, а не привет из 90-ых?

21:06

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

21:08
@jsunderhood @webholt расскажите пожалуйста подробнее что спрашиваете? Прототипы, замыкания, что ещё?

В тви подробно не расскажешь. Спрашиваю основные вещи по JS, DOM, CSS, программирование в целом, мотивация, кругозор

@jsunderhood @webholt расскажите пожалуйста подробнее что спрашиваете? Прототипы, замыкания, что ещё?

21:19

Чем лучше знания, тем больше шансов устроиться и попасть на более крутой проект и задачи

21:20
@jsunderhood Ну так если человек работает, он все равно читает, даже если сам не замечает этого. Все мы гуглим.

Да, но кто-то гуглит алгоритм максимального паросочетания в двудольном графе, а кто-то сложение с помощью jQuery

@jsunderhood Ну так если человек работает, он все равно читает, даже если сам не замечает этого. Все мы гуглим.

21:25
@jsunderhood Чтобы угодить всем, надо читать литературу, вести блог, ходить на конфы, слушать подкасты, крыть 100% тестами. В сутках 24 часа

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

@jsunderhood Чтобы угодить всем, надо читать литературу, вести блог, ходить на конфы, слушать подкасты, крыть 100% тестами. В сутках 24 часа

22:45

А можно говорить, что в сутках 24 часа и не делать ничего. Выбор за вами

22:46
@webholt @jsunderhood Вот-вот. Я вообще считаю, что если человек больше любит конференции, чем сидеть кодить, то это хреновый фронтенд! :))

Прежде, чем кому-то давать оценку по какому либо поводу, я бы разобрался в причине. Д'Артаньяном быть не сложно

@webholt @jsunderhood Вот-вот. Я вообще считаю, что если человек больше любит конференции, чем сидеть кодить, то это хреновый фронтенд! :))

22:52
@nmatuhin @jsunderhood @nanonymoused а как можно пилить _крутой_ фронтенд при этом не интересуясь им?
22:52
@jsunderhood @webholt Уважаемый, я высказал свое личное мнение, также как вы высказываете свое. И не нам судить друг друга. Д'Артаньян )))

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

@jsunderhood @webholt Уважаемый, я высказал свое личное мнение, также как вы высказываете свое. И не нам судить друг друга. Д'Артаньян )))

23:08

Любить конференции больше чем кодить – это как минимум странно, должна быть причина.

23:12
@jsunderhood @webholt Как руководитель,я предпочел бы интроверта-творца,а не конференционного экстраверта, который больше изучает чем делает

Как руководитель Вы должны знать, что команда из одних интровертов далеко не уедет

@jsunderhood @webholt Как руководитель,я предпочел бы интроверта-творца,а не конференционного экстраверта, который больше изучает чем делает

23:14
@POS_troi @dcromster @jsunderhood а мы покупаем и книжки, и на конфы отправляем, и пивом угощаем :-D

Крутые :)

@POS_troi @dcromster @jsunderhood а мы покупаем и книжки, и на конфы отправляем, и пивом угощаем :-D

23:19
@jsunderhood я согласна. Для конфы надо провести исследование, выудить новое для аудитории, которая тоже что-то знает.

Если правильно понимаю, то речь про выступления. Это level up – несколько другая тема ;)

@jsunderhood я согласна. Для конфы надо провести исследование, выудить новое для аудитории, которая тоже что-то знает.

23:22
@jsunderhood @webholt вы ушли в какую-то глухую оборону... еще раз - я против оценки кого либо по частоте посещения конференций. всё ))

Оценивается не частота, а источники получения новых знаний. Конференции один из таких источников

@jsunderhood @webholt вы ушли в какую-то глухую оборону... еще раз - я против оценки кого либо по частоте посещения конференций. всё ))

23:29
@jsunderhood @zastavnitskiy а что значит в этом деле "переборщить"?

оу, Вы из букинга :) вот где-то слышал, что у вас проходит чуть ли не 1000 (если не больше) A/B тестов параллельно

@jsunderhood @zastavnitskiy а что значит в этом деле "переборщить"?

23:34
@jsunderhood @nanonymoused а мне нравится дизайн Авито, никогда не воспринимал его древним. Может, дело в том, что мне уже 26?
23:35
@jsunderhood @webholt не могу полностью разделить вашу позицию.хождение на конференции никак не характеризует стремление человека к новому.

Смысл был такой, что источником не обязательно должны быть конференции. Твитер, подписки, ленты и т.д. – тоже ок.

@jsunderhood @webholt не могу полностью разделить вашу позицию.хождение на конференции никак не характеризует стремление человека к новому.

23:44

То есть должен быть регулярно обновляемый источник новой информации

23:47
@jsunderhood Интересные книжки в офисе, на конфы отправляют (больше как докладчиков), поощряют много экспериментировать на работе.
23:47
@RReverser @jsunderhood @nanonymoused тут стоит сказать, что дизайн букинга я терпеть не могу,серьезно. Ничего, работаем,улучшаем,стараемся.

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

@RReverser @jsunderhood @nanonymoused тут стоит сказать, что дизайн букинга я терпеть не могу,серьезно. Ничего, работаем,улучшаем,стараемся.

23:57

Потому на таких больших проектах изменения делаются осторожно, маленькими шажками.

23:59

# Среда 79 твитов

@jsunderhood @zastavnitskiy ну, не настолько, но очень много, да. Мне просто стало интересно, в плане чего переборщить можно.

В количестве. Я просто слушал как то доклад про A/B тестирование в букинге, масштабы поражали, очень круто.

@jsunderhood @zastavnitskiy ну, не настолько, но очень много, да. Мне просто стало интересно, в плане чего переборщить можно.

0:01
@jsunderhood да, это правда. Но в этом проблема локального максимума, маленькие шаги не дадут выхода на новый уровень. Надо иногда рисковать
0:11
@jsunderhood но бизнес к этому не готов, рисковать. Вот и красим иконки, а люди жалуются на дейтпикер, который больше всего денег приносит.
0:11
@jsunderhood @moscowjs Рома, а ты же из Москвы, так ведь? И в Москве ты не пропускаешь (ну стараешься, в смысле) ни одну конфу?:)

Да, хожу по возможности, и выступаю тоже. И не только в Москве, в других городах тоже есть хорошие конференции

@jsunderhood @moscowjs Рома, а ты же из Москвы, так ведь? И в Москве ты не пропускаешь (ну стараешься, в смысле) ни одну конфу?:)

9:48
@jsunderhood если дело любимое, какая мотивация нужна? я просто покупаю книги и билеты на мероприятия. ждать мотивацию от кого-то... пффф
9:49
@jsunderhood Ну да, я к этому и вёл, что работодатель должен удовлетворять эту потребность,что бы разработчик не задумывался и не отвлекался
10:12
@jsunderhood @nanonymoused @boriscoder из Сибири на moscowjs ехать так себе удовольствие :)

Можно смотреть трансляцию или записи докладов youtube.com/user/moscowjs

@jsunderhood @nanonymoused @boriscoder из Сибири на moscowjs ехать так себе удовольствие :)

10:17

Возможно в вашем городе есть свой митап: github.com/web-standards-…
Если нет, то всегда можно организовать.

10:22

Не ожидал, что будет такая оживленная дискуссия по поводу самообразования. Хотя, как оказалось, она не первая - все уже было до нас :)

10:57

Небольшое резюме. Считаю важным постоянно развиваться. Когда это делать и каким способом - личное дело каждого. Но нельзя стоять на месте.

10:58

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

10:58

Правильно, когда компания жертвует частью рабочего времени на обучение. Если подходить с умом - это окупится. Расскажу немного как у нас.

11:00

В Avito оплачиваются две конференции в год, оплачивается сертификация, библиотека (можно заказывать книги), каждую пятницу 2ч dev-митап

11:01

Проводятся и открытые митапы. По фронтенду в этом году их было 2:
github.com/lahmatiy/mosco…
github.com/lahmatiy/mobil…

11:02

В следующем году, надеюсь, будет больше. Так же думаем над дополнительными инициативами направленные на развитие и повышение квалификации

11:05
@jsunderhood а перелет и проживание оплачивают тоже или все, кроме билета на конференцию за свой счет?

Если конференция в другом городе, то это командировка: покрываются билеты, гостиница + суточные

@jsunderhood а перелет и проживание оплачивают тоже или все, кроме билета на конференцию за свой счет?

11:08
@jsunderhood Компания инвестирует в удержание сотрудника, а не в его самообучение. Нужно удерживать - плюшки будут, нет - не будет.

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

@jsunderhood Компания инвестирует в удержание сотрудника, а не в его самообучение. Нужно удерживать - плюшки будут, нет - не будет.

11:14
@jsunderhood Книги оплачиваются личные или общая библиотека?

Общая библиотека. Есть бумажные книги, читалки и электронная библиотека (можно читать в любом браузере)

@jsunderhood Книги оплачиваются личные или общая библиотека?

11:30
@jsunderhood Конференции в других странах или только локальные?

В основном локальные. Зарубежные пока в ограниченном количестве.

@jsunderhood Конференции в других странах или только локальные?

11:35
@jsunderhood А если я хочу на больше конференций, есть какое то софинансирование?

Если докладчиком, то ограничений нет. Если слушателем, то отпускают без проблем, но пока только за свой счет.

@jsunderhood А если я хочу на больше конференций, есть какое то софинансирование?

11:42
@kotfalya @jsunderhood не соглашусь - все зависит от модели компании, мы вот студентов обучаем = страховка от рисков и увеличение дохода
11:44
@jsunderhood и как пистолет? Бросил? Почему? КМС есть? @psyw

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

@jsunderhood и как пистолет? Бросил? Почему? КМС есть? @psyw

12:38
@jsunderhood лол, да за докладчиковость даже доплачивать можно: это самый норм пеар конторы, после которого норм соискатели сами придут

У нас это прекрасно понимают. Поэтому несколько месяцев назад ввели премию за выступление.

@jsunderhood лол, да за докладчиковость даже доплачивать можно: это самый норм пеар конторы, после которого норм соискатели сами придут

14:57
Говорить о JS в рамках @cssunderhood было бы неправильно и я это опустил. Чтобы наверстать, на след неделе веду @jsunderhood во всю Силу ;)
20:05

Давайте поговорим про open source. А именно вносите ли вы свой вклад в общее дело (проекты) или нет? Если нет, то что вас останавливает?

20:07

Сам стараюсь это делать не только в рамках своих проектов. Если наталкиваюсь на баг в том, что использую, стараюсь его поправить и делаю PR

20:09

Контрибьютить можно не только "кодом". Зарепорченный баг, feature request, помощь с документацией и т.д. все это очень помогает проектам

20:12
@jsunderhood вношу, останавливает то, что не всегда можно понять что вносить нужно :)

Для этого обычно есть issues, заходим и выбираем ;)

@jsunderhood вношу, останавливает то, что не всегда можно понять что вносить нужно :)

20:14
@jsunderhood Вчера уже писал. Тот факт, что люди им пользуются, это уже их вклад.

Раскройте свою мысль, какой это вклад? Просто пользоваться чем то – это потребительство.

@jsunderhood Вчера уже писал. Тот факт, что люди им пользуются, это уже их вклад.

20:18
@jsunderhood я участвовал в разработке charybdis, с небольшими изменениями его freenode использует как IRC-сервер, считай вложился в историю
20:20
@jsunderhood но тут как и в любом проекте важен интерес и вера в то, что ты делаешь что-то полезное
20:20
@jsunderhood останавливают сомнения в собственной квалификации

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

@jsunderhood останавливают сомнения в собственной квалификации

20:21
@jsunderhood только вчера приняли первый PR в абсолютно чужой проект, до этого только фиксит typo и отправлял тестовые)

Правда, это крутые ощущения? ;) Не останавливайтесь на достигнутом

@jsunderhood только вчера приняли первый PR в абсолютно чужой проект, до этого только фиксит typo и отправлял тестовые)

20:22
@jsunderhood ещё есть roadmap-ы

Верно. Поэтому если хотите, чтобы вашему проекту помогли, делайте roadmap'ы и открывай issue с тем, что надо сделать

@jsunderhood ещё есть roadmap-ы

20:25

Сам это понял не так давно, до этого не уделял этом внимания. Планирую исправиться :)

20:26
@jsunderhood не всегда там есть что выбирать ;)
github.com/lotus/utils/is…

Это же не единственный проект. Еще можно создать тикет – "чем я могу помочь вашему проекту?" или написать автору ;)

@jsunderhood не всегда там есть что выбирать ;)
github.com/lotus/utils/is…

20:28
@jsunderhood ещё один из способов, это завотчить репу и помогать решать проблемы обращающимся в issues
20:29
@jsunderhood ага, это code consumers
20:29
@jsunderhood Это распространение, это невольное тестирование. И все это рано или поздно может обернуться в более ощутимый вклад.

Распространение – рассказать другим или написать статью, тестирование – зарепортить проблему/баг. Вот это вклад

@jsunderhood Это распространение, это невольное тестирование. И все это рано или поздно может обернуться в более ощутимый вклад.

20:38
@jsunderhood если баг ты нашёл сам, то лучше его зарепортить, обсудить своё решение с мейнтейнером, и только потом присылать пр

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

@jsunderhood если баг ты нашёл сам, то лучше его зарепортить, обсудить своё решение с мейнтейнером, и только потом присылать пр

20:44
@jsunderhood мне не нравится мысль в том, что компании пользуются oss, но не считают нужным вкладываться в него

Я вот лишь недавно узнал, что Авито контрибьютит в oss и спонсирует ряд проектов (бекенд, БД), но не афиширует это

@jsunderhood мне не нравится мысль в том, что компании пользуются oss, но не считают нужным вкладываться в него

20:55

Упс, кажись "спалил лавочку" :)

20:55
@jsunderhood поэтому правильно, репортить баги использования и присылать пр на проблемы
20:56
@jsunderhood да, ощущения крутые, конечно буду продолжать;)
20:56
@jsunderhood в последнее время появился тренд у oss-проектов создавать ишью для новичков

Хорошая практика! Делать PR не так просто по началу. Будет на чем учиться, будет больше контрибьютеров

@jsunderhood в последнее время появился тренд у oss-проектов создавать ишью для новичков

21:00
@jsunderhood плюс у больших проектов, как @geteslint или @PostCSS всегда есть ишью на любой вкус и уровень
21:00
@jsunderhood а я все, что делаю делаю как open source, и за деньги и нет
21:01
@jsunderhood Бывает проще починить (и послать пулреквест), чем объяснять, что не работает.

Бывает на один исправленный символ пишется несколько предложений в комите. Важно учиться объяснять,хоть это и сложно

@jsunderhood Бывает проще починить (и послать пулреквест), чем объяснять, что не работает.

21:04
@iamstarkov Это вообще самое крутое и полезное (как автор опенсорсных проектов говорю :–) @jsunderhood
21:04

А как насчет велосипедов? Пишите ли свои или используете все готовое? Какая у вас мотивация? Знаю, часто здесь полярные мнения

21:30

Я пишу и не мало. Причин много: от "лучше разобраться в теме" (редко) до "сделать иначе чем обычно" (часто). Не все получается, но это опыт

21:34

А с опытом приходит виденье нестандартных решений. Так, потерпев ряд неудач, получается сделать что-то интересно и крутое

21:36

Или собрать что-то сложное, как например получилось с Component Inspector github.com/lahmatiy/compo… – с чистого листа такое непросто сделать

21:41
@jsunderhood Когда очень мало места, приходится писать, потому что готовые решения зачастую громоздкие.
21:44
@jsunderhood Бывает, пишу что-то своё узкоцелевое (например, код рисования графика) вместо того, чтобы подключать объемную библиотеку.
21:44
@jsunderhood люблю повилосипедить;) мотивация - изучение нативного DOM API, к примеру. Не готовые либы, а как оно под капотом устроено.
21:44
@jsunderhood часто пишу велосипеды чтобы разобраться в механизме работы той или иной вещи. Потому что signalvnoise.com/posts/3594-wha…
21:46
@jsunderhood @iamstarkov в англоязычном коммьюнити встречал отзывы когда якобы мейнтейнер обвинял новичка в трате его времени 1/2

Считаю это не правильным, никому от этого лучше не станет

@jsunderhood @iamstarkov в англоязычном коммьюнити встречал отзывы когда якобы мейнтейнер обвинял новичка в трате его времени 1/2

21:48
@jsunderhood Рома, я раньше тоже писал велосипеды ради изучения предмета. Это очень-очень помогает, и всем советую!
21:48
@jsunderhood Еще вариант: плохо искал, не нашел. Написал своё. А потом нашлось. И уже поздно менять.

Это еще одна из причин, почему нужно мониторить медиа, конфы etc Появляется проблема – вспоминаешь какое-то решение

@jsunderhood Еще вариант: плохо искал, не нашел. Написал своё. А потом нашлось. И уже поздно менять.

21:54
@jsunderhood Зачастую, на ровне с ленью, нехватка времени также приводит к невозможности делать что-то вне рабочее время, а это печалька:(

Тут мне (не)повезло, я увлеченный. Иногда идеи настолько навязчивы,что един. вариант от них избавиться – воплотить:)

@jsunderhood Зачастую, на ровне с ленью, нехватка времени также приводит к невозможности делать что-то вне рабочее время, а это печалька:(

22:00
@iamakulov_ @jsunderhood это на мелких так, а на крупных проектах заманаешся писать целевое, квери полюбому подключиш, и пользуешся

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

@iamakulov_ @jsunderhood это на мелких так, а на крупных проектах заманаешся писать целевое, квери полюбому подключиш, и пользуешся

22:12
@jsunderhood @iamakulov_ какое значение? ресурсы умов, время, деньги на изобретение велосипедов?

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

@jsunderhood @iamakulov_ какое значение? ресурсы умов, время, деньги на изобретение велосипедов?

22:20

На собеседованиях мне показывали свои проекты, где на одной странице пара фреймворков, пяток либ (вроде jq) и это не считая либ компонент.

22:23
@jsunderhood @That_ka @iamakulov_ почему решили избавиться от jquery?

Перестали поддерживать старые браузеры (у нас IE11+) и использовалась малая часть jq (заменили небольшими либами)

@jsunderhood @That_ka @iamakulov_ почему решили избавиться от jquery?

22:30
@jsunderhood @iamakulov_ аякс сюда еще от нее в копилку, очень удобен, да и синтаксис ее не сравним с чистым жс, она создана облегчать труд

Уже есть fetch, можно использовать его + полифил. По крайней мере у нас такие планы

@jsunderhood @iamakulov_ аякс сюда еще от нее в копилку, очень удобен, да и синтаксис ее не сравним с чистым жс, она создана облегчать труд

22:37
@jsunderhood Это тебе повезло :) В одной из прошлых компаний у нас был проект с ~8 версиями jquery, ~4 версиями Knockout и т.д.

Ого! Но это не мне так повезло, рассказывали кандидаты про свои текущие проекты, с безграничной болью в глазах...

@jsunderhood Это тебе повезло :) В одной из прошлых компаний у нас был проект с ~8 версиями jquery, ~4 версиями Knockout и т.д.

22:39
@jsunderhood В плане некоторые зависимости как-то ломались от новых версий, поэтому просто держали в /js/ по несколько версий каждой либы.

Это еще одна проблема – поддержка зависимостей. Потому давно уже лимитируется и контролируется добавление новых либ

@jsunderhood В плане некоторые зависимости как-то ломались от новых версий, поэтому просто держали в /js/ по несколько версий каждой либы.

22:41
@jsunderhood мне очень близка вот эта идея github.com/sindresorhus/a…

Читал этот тредик. Согласен с частью тезисов. Но не разделяю такой подход. Все хорошо, пока не наступите на грабли

@jsunderhood мне очень близка вот эта идея github.com/sindresorhus/a…

22:54

Был у нас случай. Катим в прод – сломалась сборка. Локально все ок, на сервере не собирается. Делаем чистую установку локально – не работает

23:08

Все зависимости запинены. В чем дело? У одной из либ одна из зависимостей на 5м уровне вложенности версия зависимости была задача как "*"...

23:09

И эта зависимость обновилась без обратной совместимости. Итог: ключевая либа не работает, сборка не работает, поменять ничего нельзя...

23:09

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

23:10

Так и жили ~месяц пока вся цепочка пакетов не обновилась. Итог: пол дня коту под хвост, задержанный релиз, нервы, костыль...

23:11

И ладно это был плановая выкатка. А что если срочный критикал багфикс надо было выкатить? (такое бывает очень редко, конечно, но бывает)

23:13
@RReverser @jsunderhood в ентерпрайзе очень часто встречается по несколько jQuery. «это фиксит баг», — говорили они.
23:15
@jsunderhood @iamakulov_ загрузчики навесы мультитапсов на импуты и тучи других плагинов как это реализовывать без квери в срок

Если компонентный подход – без проблем. Большие проекты рано или поздно приходят к собственной реализации компонент

@jsunderhood @iamakulov_ загрузчики навесы мультитапсов на импуты и тучи других плагинов как это реализовывать без квери в срок

23:22
@jsunderhood аборт запросов ещё не утверждён

Да, это одна из причин, почему не торопимся с fetch

@jsunderhood аборт запросов ещё не утверждён

23:24
@jsunderhood а как же shrinkwrap?

Век живи, век учись. Не знал про такую штуку. Спасибо!
Тебе приходилось ей пользоваться?

@jsunderhood а как же shrinkwrap?

23:32

# Четверг 54 твита

@jsunderhood @iamstarkov деплоить без shrinkwrap'а это игра в русскую рулетку
9:57
@jsunderhood поэтому всем советую читать полную документацию по @npmjs docs.npmjs.com/all
9:57
@jsunderhood @iamakulov_ тю добрый день :) странно что кто то еще пишет в профИТ наитивом?) Из этого вы напишете свою тип jq, личную? Зачем?

Почему странно? Мы стараемся максимально использовать браузерное API + хелперы по наши задачи.

@jsunderhood @iamakulov_ тю добрый день :) странно что кто то еще пишет в профИТ наитивом?) Из этого вы напишете свою тип jq, личную? Зачем?

10:04
@That_ka @jsunderhood Я пишу нейтивом. Идея в том, чтобы не тянуть в проект крупную библиотеку, если код, напис. без неё, не сильно сложнее.
10:04
@That_ka @jsunderhood Например, если из jQuery используется только DOM и AJAX, их можно заменить на querySelector и fetch и выбросить 100 Кб
10:05
@jsunderhood нужен совет сообщества. Если мне кажется что в коде коллеги есть недостатки, как лучше на это указать?

Для этого у нас введено обязательное код-ревью. Код не будет замержен, пока не будет апрува от всех ревьюверов.

@jsunderhood нужен совет сообщества. Если мне кажется что в коде коллеги есть недостатки, как лучше на это указать?

10:07
@jsunderhood Не понмю, где взял ссылку, может и здесь)). Но вот youtube.com/watch?v=xPFRUM…. Тоже имеет право на существование.
10:10
@jsunderhood А гонка за технологиями не всем приносит счастья, меня, например, это утомляет. И смена деятельности нужна обязательно.

В том то и дело, не нужно гнаться за "модными фреймворками", а изучать основы: структуры данных, паттерны, алгоритмы

@jsunderhood А гонка за технологиями не всем приносит счастья, меня, например, это утомляет. И смена деятельности нужна обязательно.

10:19
@jsunderhood А каков штат frontend в avito? Есть разработчики удаленные из других городов?

Удаленных разработчиков нет и не планируется. Сейчас 15 фронтендеров и продолжаем искать

@jsunderhood А каков штат frontend в avito? Есть разработчики удаленные из других городов?

10:23
@jsunderhood я не руководитель, поэтому повлиять "административно" не могу

Влиять "административно" не лучшая идея. Старайтесь договариваться и вводить практики: code review, стандарты etc

@jsunderhood я не руководитель, поэтому повлиять "административно" не могу

10:39
@jsunderhood хорошая практика. У моего вопроса есть еще вторая часть , RT plz:

@jsunderhood и как себя вести, если коллега говорит "ок", разворачивается и делает то же самое?

10:40
@chicoxyzzy @lapanoid @jsunderhood напомнили старый доклад destroyallsoftware.com/talks/the-birt…

Спасибо, что напомнили про него. Клевый доклад с хорошим юмором :)

@chicoxyzzy @lapanoid @jsunderhood напомнили старый доклад destroyallsoftware.com/talks/the-birt…

10:43
@jsunderhood теорию категорий, квантовую физику, бихевиоризм

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

@jsunderhood теорию категорий, квантовую физику, бихевиоризм

10:56

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

10:58
@That_ka @jsunderhood @iamakulov_ с развитием браузеров и ES6, постепенно пропадает необходимость в сторонних библиотеках
11:35
@jsunderhood стараемся не отставать от жизни, но последние книжки в офисную библиотекудля ребят, которые купил - это СИКП и Совершенный код
11:35
@jsunderhood Посоветуй с чего начать изучение паттернов, алгоритмов? Может хорошую литературу какую-нибудь или лекции?

В качестве отправной точки подойдет вот эта статья: habrahabr.ru/company/mindbo…

@jsunderhood Посоветуй с чего начать изучение паттернов, алгоритмов? Может хорошую литературу какую-нибудь или лекции?

12:05
@YevhenBoyarsky @jsunderhood Stoyan Stefanov - JavaScript Patterns. Не про алгоритмы, но читается легко и довольно полезная.
12:05
@jsunderhood а бэкендом сколько человек занимается?

Точной цифры не скажу, но побольше + еще отдельно DBA, DevOps, BI и т.д.

@jsunderhood а бэкендом сколько человек занимается?

12:31
@jsunderhood @_sashashakun @That_ka @iamakulov_ это в авито ие11+? Неплохо, разве такой низкий процент ие9-10?

Да, по нашей статистике доля IE9 и IE10 в сумме меньше чем доля IE8.

@jsunderhood @_sashashakun @That_ka @iamakulov_ это в авито ие11+? Неплохо, разве такой низкий процент ие9-10?

13:29
@jsunderhood сейчас еще и туториалы практически все плохие. В стиле "повторяй шаг за шагом", вообще не объясняя, зачем и почему это делается

Я бы не стал так обобщать. Да, многие учат пользоваться и не объясняют как работает. На старте это ок...

@jsunderhood сейчас еще и туториалы практически все плохие. В стиле "повторяй шаг за шагом", вообще не объясняя, зачем и почему это делается

13:38

Главное научившись делать что-то простое, начать копать вглубь и разобраться в принципах работы

13:39

У меня были кандидаты, которые "писали" на React полгода-год, но не могли написать как создать компонент, то есть React.createClass({ ... })

13:44

Или разрабатывали на Backbone, но не могли _перечислить_ все 4 класса. Хотя если понимать какие концепции он несет, это проще простого

13:47
@jsunderhood паттерны это из идеального мира. 90% кода написано в стиле "хуяк-хуяк и в продакшн".

Потому в топку патерны, доведем количество такого кода до 100%? ;)

@jsunderhood паттерны это из идеального мира. 90% кода написано в стиле "хуяк-хуяк и в продакшн".

13:51

На самом деле, даже не зная патернов, люди, сами того не зная, их реализуют. Коряво, конечно, но все же.

13:53

Патерны не что-то космическое. Это подходы к решению задач. Легче объяснить другим, возможность читать код фрагментами, а не построчно.

13:55
@YevhenBoyarsky @jsunderhood начни с классики - Design Patterns: Elements of Reusable Object-Oriented Software (GOF)
13:55

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

14:15
@jsunderhood мне кажется, что наоборот. На старте нужно пояснять каждый шаг, чтобы потом изучающий мог написать не только тоже самое :)

Детали могут отпугнуть начинающего, так как нужна экспертиза для их понимания, а она есть далеко не у всех

@jsunderhood мне кажется, что наоборот. На старте нужно пояснять каждый шаг, чтобы потом изучающий мог написать не только тоже самое :)

14:21
@jsunderhood + не забывайте что сами MS хотят прекратить поддержку IE8, IE9, IE10 начиная с 12 января 2016 microsoft.com/en-us/WindowsF…

Да, этот факт значительно повлиял на решение отказа от IE8. А доля IE9 + IE10 крайне не значительная.

@jsunderhood + не забывайте что сами MS хотят прекратить поддержку IE8, IE9, IE10 начиная с 12 января 2016 microsoft.com/en-us/WindowsF…

14:24
@jsunderhood а спрашиваете ли, зачем ли они используют реакт? И если спрашиваете, многие ли отвечают обоснованно, а не "модно" и т.п.?

Спрашиваю, и не только про React. Обоснованных не помню. Но я в целом встречал мало людей, кто мог обосновать выбор.

@jsunderhood а спрашиваете ли, зачем ли они используют реакт? И если спрашиваете, многие ли отвечают обоснованно, а не "модно" и т.п.?

14:29
@jsunderhood
:)

О глядите видеоурок по пластической хирургии :) pic.twitter.com/zCnvK2GWgA

14:30
@jsunderhood Есть ли действительно дельные туториалы по React? Пока ничего нормального не нашел

Не знаю. Но может читатели подскажут?
Я читал доки и все подряд, ковырял код. Хз,что лучше помогло и в каком вопросе

@jsunderhood Есть ли действительно дельные туториалы по React? Пока ничего нормального не нашел

14:58
Я когда знакомился с патернами, был приятно удивлен, что я до многого дошел сам. twitter.com/jsunderhood/st…

У меня было так же. Но можно долго идти к решению, а можно почитать об этом и выбрать подходящее. Вопрос времени

Я когда знакомился с патернами, был приятно удивлен, что я до многого дошел сам. twitter.com/jsunderhood/st…

15:00
@jsunderhood так, может, кого отпугнет — то и фиг с ними? Зато уж кто продерется через трудности и поймет, из тех и вырастут эксперты?

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

@jsunderhood так, может, кого отпугнет — то и фиг с ними? Зато уж кто продерется через трудности и поймет, из тех и вырастут эксперты?

15:09
@jsunderhood Рома,как ты относишься вот к: habrahabr.ru/company/ua-hos…. Ты видишь пользу в наставнике? Или он отучит искать инфу самостоятельно?

Всегда мечтал, но у меня не было. По идее наставник направляет, вдохновляет, помогает. Можно быстрее стать профи

@jsunderhood Рома,как ты относишься вот к: habrahabr.ru/company/ua-hos…. Ты видишь пользу в наставнике? Или он отучит искать инфу самостоятельно?

15:29

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

15:29
@jsunderhood @timurKarshiev всегда отправляю людей смотреть доклад @mokevnin youtube.com/watch?v=SduoWE…
15:34
@jsunderhood Согласен с тобой полностью, но к сожалению не все так считают: htmlforum.ru/index.php?show… Но имхо, они что-то путают:(

Путают. Ментор не делает за кого-то его работу, но помогает делать свою работу лучше

@jsunderhood Согласен с тобой полностью, но к сожалению не все так считают: htmlforum.ru/index.php?show… Но имхо, они что-то путают:(

15:51
@jsunderhood @timurKarshiev да че там реакт, сразу по хардкору egghead.io/series/getting…

Ден крутой и туториал отличный. Его стоит изучить даже, если вы не используете (и не планируете) React/Reduх

@jsunderhood @timurKarshiev да че там реакт, сразу по хардкору egghead.io/series/getting…

20:11
@jsunderhood когда я читал книгу GoF по паттернам, то у меня часто появлялась в голове мысль "о! а у этого есть название!"
20:39
@jsunderhood паттерн это эмпирическая сущность. Банда их ведь не с потолка взяла, а посмотрела, что люди делают и описала.
20:39
@jsunderhood gang of 4, авторы этой книги amazon.com/Design-Pattern…
20:40
@jsunderhood а сейчас не мечтаешь? у меня вот те же эмоции насчет наставника :)

Спустя 15 лет ожидания, я уже как-то отчаялся :)

@jsunderhood а сейчас не мечтаешь? у меня вот те же эмоции насчет наставника :)

20:42
@jsunderhood @limarc на недавнем #webstandardsdays сказал что вы переходите с php на nodejs - кто будет писать, те кто раньше писал на php?

Не совсем так. PHP никуда не денется. Но одну из задач, а именно рендеринг HTML, думаем перенести на node.js, да

@jsunderhood @limarc на недавнем #webstandardsdays сказал что вы переходите с php на nodejs - кто будет писать, те кто раньше писал на php?

20:46

Сейчас ведутся эксперименты. Если все получится, писать будут специалисты по node.js. Таких у нас очень мало. Ищем

20:49
@jsunderhood Если человек стал экспертом, через какое время он станет знания терять и когда настанет критический момент, если не кодить?

Все зависит от области. Во фронтенде практически сразу. За год-два можно скатиться в юниоры

@jsunderhood Если человек стал экспертом, через какое время он станет знания терять и когда настанет критический момент, если не кодить?

20:55
@jsunderhood многие постоянно говорят о плюсах Реакта. Можешь рассказать о минусах? На какие грабли вы натыкались делая Авито?

React используется с сентября, пока делаются встраиваемые приложения. Скоро планируется стартовать новые SPA на нем

@jsunderhood многие постоянно говорят о плюсах Реакта. Можешь рассказать о минусах? На какие грабли вы натыкались делая Авито?

20:59

На вопрос отвечает Александр @limarc :)

21:01
Несмотря на пропаганду в @jsunderhood про самообучение, у меня совсем другая проблема: как НЕ программировать вечером :-)
21:03
@jsunderhood поэтому нужно больше внимания при самообразовании уделять CS и теории в целом, чем новым фреймворкам

Да, это мой основной посыл. Но проблема не во фреймворках,а бурное развие платформы,без ее знания не стать экспертом

@jsunderhood поэтому нужно больше внимания при самообразовании уделять CS и теории в целом, чем новым фреймворкам

21:16
Может быть потому что они изначально юниоры, если судить по фундаментальным знаниям? twitter.com/jsunderhood/st…

Нет, плаформа слишком быстро развивается. Только за этот год столько всего появилось

Может быть потому что они изначально юниоры, если судить по фундаментальным знаниям? twitter.com/jsunderhood/st…

21:20

И речь ведь про экспертные знания. А это ежедневная работа: новости, статьи, спеки, конференции, общение, практика...

21:24

# Пятница 14 твитов

Сегодня был вопрос про менторство, были неоднозначные мнения. Решил не засорять эфир и написал заметку "Ментор": lahmatiy.tumblr.com/post/135414592…

1:41
@jsunderhood глянте в сторону Go

На Go смотрим, и даже какие-то штуки уже на нем. Но шаблонизация на Go кажется сомнительной идеей ;)

@jsunderhood глянте в сторону Go

9:24
@jsunderhood нет, т.к. я не знаю как начать и еще, мой английский оставляет желать лучшего

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

@jsunderhood нет, т.к. я не знаю как начать и еще, мой английский оставляет желать лучшего

9:27
@jsunderhood поиски решения позволяют набить шишек, и как раз после этого можно обоснованно утверждать, что именно такой подход эффективней

Личный опыт бесценен. Но нужно не забывать "учиться на чужих ошибках"

@jsunderhood поиски решения позволяют набить шишек, и как раз после этого можно обоснованно утверждать, что именно такой подход эффективней

9:29
Читаю Рому @rdvornov в роли ведущего @jsunderhood и каждый раз улыбаюсь, как у нас совпадают взгляды. Готов подписаться под каждым твитом!
9:30

Советую почитать, можно уже сказать, классику: Джоель Спольски про разработку ПО из личного опыта russian.joelonsoftware.com (переводы)

10:15

Когда то читал взахлеп, на меня сильно повлияли его посты. Надо бы перечитать, кстати :) Интересно, как поменялось восприятие спустя 10 лет

10:19

Как совпало, сегодня у нас на dev-митапе как рассказывают про Go :)

12:16

Каждый год в течении декабря ежедневно публикуются статьи по производительности (сетевой в основном) calendar.perfplanet.com/2015/ - рекомендую

13:31

Можно так же подписаться на их твитер @perfplanet

13:32
@sergey_panay @jsunderhood I am sure that @kentcdodds articles on @Medium can help you take first step in OSS
13:55

А вот вопрос, как вы узнаете что у вас все работает быстро и с памятью хорошо? Как ищете проблемы? В браузерах и node.js

14:00

# Суббота 68 твитов

Судя по всему у большинства была веселая пятница :) Ответов на мой вопрос про производительность почти не было...

14:48

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

14:49

Но специфика фронтенда такова, что одним "неловким движением" можно сделать все медленным. Важно такой момент заметить, что бывает не всегда

14:50

Так же в зоне риска проекты, которые делаются длительное время. Если все время забивать на производтельность, то в итоге не выйдет "быстро"

14:53

Еще иногда нам достаются в наследство проекты не в лучшем состоянии. Можно, все переписать, но не всегда в этом есть смысл, да и ресурсы

14:57
@jsunderhood у нас на ноде сервис в zabbix шлет много метрик в тч по памяти. Они мониторятся.

Мониторинг – это отлично. А как выясняете причину, если видите, что течет или много CPU?

@jsunderhood у нас на ноде сервис в zabbix шлет много метрик в тч по памяти. Они мониторятся.

15:06
@jsunderhood в браузере Chrome Devtools - profiler, live alloc tracking. Node - heapdump по сигналу и анализ в devtools.
17:26
@jsunderhood еще смотрим на метрики вокруг, зная специфику можем понять причину по другим метрикам (различные кэши, след бэкэнд, redis, ...)
17:26
@jsunderhood ну и для 4-5 ноды тоже можно live alloc tracking смотреть онлайн
17:26

Сегодня практически во всех браузерах есть инструменты Timeline и профилировщики. Лучше всего с этим в Chrome

18:00

Timeline позволяет понять, что делает браузер и на что тратит ресурсы. Если есть проблемы начинать стоит с него developers.google.com/web/tools/chro…

18:02

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

18:05

Профилировщики позволяют не гадать и дают детальные отчеты: на что конкретно тратится время и память, есть ли утечки pic.twitter.com/ldjKWlBEFg

18:13

Крайне рекомендую освоить эти инструменты, если еще этого не сделали. Однажды они вам обязательно пригодятся

18:17

Иногда инструменты не могут помочь. Например,если вам нужно оценить производительность разных частей функции или код выполняется под node.js

18:22

Тогда можно использовать старый "дедовский" метод:
var time = Date.now();
// оцениваемый код
console.log(Date.now() - time);

18:35

Но стоит знать, что дискретность Date.now() (как и new Date()) колеблется и может быть равна 16ms (зависит от движка и ОС)

18:35

Почти во всех браузерах есть более точный метод performace.now() developer.mozilla.org/en-US/docs/Web…

18:39

В node.js немного сложнее, но тоже можно - делается с помощью process.hrtime()

18:44

Делается так:
var time = process.hrtime();
// код
var tdiff = process.hrtime(time);
console.log(parseInt(tdiff[0] * 1e3 + tdiff[1] / 1e6));

18:44
@raxpost @jsunderhood свежий node-inspector имеет тот же функционал и умеет снимать это с живого процесса ноды До 4 у меня не получалось так
18:46
@jsunderhood а почему не console.time/timeEnd?

Да, тоже можно использовать. Но не везде доступно (например, в воркерах) и не всегда нужно выводить в консоль

@jsunderhood а почему не console.time/timeEnd?

18:53
@jsunderhood можно из кода запускать профилирование и выгружать в файлы: github.com/node-inspector…

Круто, не знал. Спасибо за наводку

@jsunderhood можно из кода запускать профилирование и выгружать в файлы: github.com/node-inspector…

18:56
@jsunderhood а известна хорошая понятная статья как разбирать дампы? Куда смотреть, как интерпретировать, что значат цифры и т.п.

Статей не припомню, но в документации все не плохо расписано
developer.chrome.com/devtools/docs/…
developer.chrome.com/devtools/docs/…

@jsunderhood а известна хорошая понятная статья как разбирать дампы? Куда смотреть, как интерпретировать, что значат цифры и т.п.

19:02

Для сетевой активности в браузерах можно использовать Navigation Timing (w3.org/TR/navigation-…)и Resource Timing (w3.org/TR/resource-ti…)

19:15

Для памяти пока можно получить только грубые цифры: в браузере в объекте performance.memory, в node.js через process.memoryUsage()

19:21

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

20:01

Пока это делается не так удобно. Нужно запускать браузер (такая возможность есть у Chrome и м.б. Opera) или ноду с определенными флагами

20:05

Для node.js это делается так (целиком не умещается в один твит, потому картинкой) pic.twitter.com/L8Dpoh42CS

20:10

Будет сгенерировано два файла: code.asm и hydrogen-[чтото].cfg
Файлы можно изучать с помощью IRHydra2 от @mraleph mrale.ph/irhydra/2/

20:15

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

20:17

Вот пример, казалось бы, что тут не так? (str всегда не пустая строка)
function isComment(str){
return str[0] === '/' && str[1] === '*';
}

20:24

Функция деоптимизировалась из-за второго условия. Так как если строка меньше двух символов, то происходит выход за пределы строки

20:27

Чтобы не было деоптимизации нужно сделать так:
function isComment(str){
return str.length >= 2 && str[0] === '/' && str[1] === '*';
}

20:29
@jsunderhood по ссылкам оттуда еще находится хорошая презентация: slides.com/gruizdevilla/m…
20:39

И в коде было еще несколько мест, где был выход за пределы массива, которые приводили к деоптимизации.

21:06
@jsunderhood А в профайлере было видно или только в IRHydra? (профайлер же тоже маркирует деоптимизированные функции)

Да, профайлер помечает функции желтым треугольником, но не показывает проблемное место в коде – сложнее разобраться

@jsunderhood А в профайлере было видно или только в IRHydra? (профайлер же тоже маркирует деоптимизированные функции)

21:08
@jsunderhood Это не оптимизация а мудрое решение, если об этом не думать то и до дыр недалеко :)
В общем секюрность.

Не оптимизация, но исключение препятствий для нее. В JS выход за пределы не фатальная ошибка -> об этом не думают

@jsunderhood Это не оптимизация а мудрое решение, если об этом не думать то и до дыр недалеко :)
В общем секюрность.

21:13
@jsunderhood опимально сначала str[0] && потом проверка длины && потом str[1]. Почему так - почитайте как выполняются несколько && в if

Во-первых, это был пример того, что деоптимизации могут возникать в неочевидных (если не знать) местах

@jsunderhood опимально сначала str[0] && потом проверка длины && потом str[1]. Почему так - почитайте как выполняются несколько && в if

21:20

Во-вторых, сравнение строк дороже, чем проверить длину. И это упрощенный код, функция на самом деле выглядит так github.com/lahmatiy/css-p…

21:24
@jsunderhood рад, что irhydra помогла!

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

@jsunderhood рад, что irhydra помогла!

21:25

Еще пример, функция не оптимизировалась из-за этого if'а
if (ch === '\n' || (ch === '\r' && next !== '\n') || ch === '\f') { .. }

21:43

Все потому, что в строке не было \r и условие с next не срабатывало -> не было информации о типах для next и это блокировало оптимизацию

21:44

Стоило поменять местами проверки:
if (ch === '\n' || (next !== '\n' && ch === '\r') || ch === '\f') { .. }
и функция стала оптимизироваться

21:47

Хотя, казалось бы, стало хуже – чаще 4 проверки вместо трех. Но функция стала работать быстрее, потому что стала оптимизироваться

21:51

Это к тому, что нужно использовать инструменты, чтобы увидеть как код выполняется на самом деле. Вы можете заблуждаться насчет оптимальности

21:55
@jsunderhood а не помнишь как профайлер называл причину деоптимизации там?

Хотел по-быстрому воспроизвести и заскриншотить, но не получилось. Что-то вроде out of bounds

@jsunderhood а не помнишь как профайлер называл причину деоптимизации там?

21:57

Наконец-то посмотрел рекомендованный доклад Андрея @listochkin youtube.com/watch?v=xPFRUM… – отличное выступление

22:01
@jsunderhood а тут было что-нибудь про insufficient type feedback да?

Да, если не ошибаюсь, оно и было :)

@jsunderhood а тут было что-нибудь про insufficient type feedback да?

22:02
@jsunderhood Оффтоп, но если не секрет - для чего писал новый CSS парсер? У них вроде не так много фишек, почему не взять существующий?

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

@jsunderhood Оффтоп, но если не секрет - для чего писал новый CSS парсер? У них вроде не так много фишек, почему не взять существующий?

22:05

Подробнее об этом я рассказывал в докладе в прошлое воскресенье youtube.com/watch?v=qfEAt3…

22:09
@stewardtz @jsunderhood оптимальность не совсем очевидна, потому что внутри str[0] скрыта проверка длины
22:12
@stewardtz @jsunderhood ... если проверить вначале, то велика вероятность, что array-bounds-check-removal оставит только одну
22:12
@stewardtz @jsunderhood ... хотя в V8 он сейчас отключен, кажется.
22:12
@stewardtz @jsunderhood оптимальность не совсем очевидна, потому что внутри str[0] скрыта проверка длины

.@stewardtz Да, вот пруф того, что внутри str[0] проверяется длина строки //cc @mraleph
pic.twitter.com/UVZPwjRc5c

@stewardtz @jsunderhood оптимальность не совсем очевидна, потому что внутри str[0] скрыта проверка длины

22:21
@jsunderhood Но именно из-за того что там нет чистого парсера, который бы возвращал AST без потерь и с локациями, его добавить не смог.

"Чистый" есть парсер, посмотри как реализована функция minify github.com/css/csso/blob/… А вот локаций нет, это да

@jsunderhood Но именно из-за того что там нет чистого парсера, который бы возвращал AST без потерь и с локациями, его добавить не смог.

22:26
@jsunderhood Задача парсера - вернуть дерево которое по возможности без потерь описывает исходный код.

Это так. Но все сильно упрощается, если в AST уже все разложено по полочкам. На самом деле экспериментирую

@jsunderhood Задача парсера - вернуть дерево которое по возможности без потерь описывает исходный код.

22:42
@jsunderhood Если эти этапы разделены в отдельные тулзы, то архитектура очень упрощается, а возможности строить новое - возрастают.

По сути парсер не монолит, а состоит из грубого парсера + набор специализ. парсеров. Метод "прогрессивного jpeg" :)

@jsunderhood Если эти этапы разделены в отдельные тулзы, то архитектура очень упрощается, а возможности строить новое - возрастают.

22:44

И это должно идти из коробки. Вот Babel тоже модульный, все трансформации – плагины. Но многие включены в поставку и используются по дефолту

22:46
@jsunderhood Тогда ответ про "нет хорошего парсера" не совсем понятен - чем ваш чисто парсер отличается от существующих чисто парсеров?

Речь про "хороший детальный". PostCSS хороший парсер, но не детальный. В CSSO (gonzales) детальный, но не так хорош

@jsunderhood Тогда ответ про "нет хорошего парсера" не совсем понятен - чем ваш чисто парсер отличается от существующих чисто парсеров?

22:49
@jsunderhood есть ещё статья об оптимизации frontender.info/optimization-k…
22:50
@jsunderhood Тогда ответ про "нет хорошего парсера" не совсем понятен - чем ваш чисто парсер отличается от существующих чисто парсеров?

Пока он не закончен, нет смысла сравнивать. Но не только мне хочется парсер с детальным AST из коробки

@jsunderhood Тогда ответ про "нет хорошего парсера" не совсем понятен - чем ваш чисто парсер отличается от существующих чисто парсеров?

23:08
@jsunderhood Мы о разном. Я о том, что вот парсер, минификатор и линтер вполне могут жить как независимые друг от друга модули.

Да видно недопонимание. Я согласен, что все названое должно быть отдельными инструментами (пакетами).

@jsunderhood Мы о разном. Я о том, что вот парсер, минификатор и линтер вполне могут жить как независимые друг от друга модули.

23:12
@jsunderhood Ну и сам csso который из обьединяет. Тогда бы даже парсер не пришлось переизобретать - только модифицировать существующий AST.

Я не знаю почему парсер был вшит в csso. Но он будет вынесен. И нужно новое AST – потому и новый парсер

@jsunderhood Ну и сам csso который из обьединяет. Тогда бы даже парсер не пришлось переизобретать - только модифицировать существующий AST.

23:18
@jsunderhood Что в данном случае "детальный"? Чего именно не хватало?

Структура селекторов, @-правил, значений по спекам. Особо не хватает: что значат разные части композитных значений

@jsunderhood Что в данном случае "детальный"? Чего именно не хватало?

23:25
@jsunderhood Да, уже понял с предыдущих реплаев. Хотя кажется, что это решается опять-таки композицией существующих + своих модулей.

Можно и так. Но хочется еще и быстрый парсер :) Например, чтобы допарсить, нужно заново токенайзить строки – оверхед

@jsunderhood Да, уже понял с предыдущих реплаев. Хотя кажется, что это решается опять-таки композицией существующих + своих модулей.

23:35
@jsunderhood Да нет, заново же ничего не надо, так как предыдущий раз толком токенайзинга и не было.

Был, чтобы разметить границы фрагментов (селектор, декларация etc) с учетом строк, комментариев, баланса скобок и тд

@jsunderhood Да нет, заново же ничего не надо, так как предыдущий раз толком токенайзинга и не было.

23:44
@jsunderhood Просто найти конец строки - это же еще не токенизация, ничего не выделяется, проход быстрый.

Большинство парсеров токенизируют прежде чем собирать AST, не важно насколько оно детальное, так проще

@jsunderhood Просто найти конец строки - это же еще не токенизация, ничего не выделяется, проход быстрый.

23:54

# Воскресенье 74 твита

@jsunderhood Круто как. А только для CSS или для других синтаксисов тоже?

Только для CSS. У других синтаксисов своя специфика и другое AST.

@jsunderhood Круто как. А только для CSS или для других синтаксисов тоже?

0:07

Как то незаметно перешли на тему парсеров :) Кстати, работая с AST обнаружил, что собирать его из объектов гораздо лучше, чем из массивов

0:19

Если сохранять AST в строку (json), то массивы, конечно, компактнее. Но массивы требуют больше памяти и операции с ними медленней

0:22

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

0:28
@jsunderhood кстати интересный вопрос, как ты оцениваешь DevTools в Firefox? или используешь исключительно Chrome?

В основном Chrome, да. DevTools в Firefox сильно отстают по фичам, медленно работают, но иногда использовать можно

@jsunderhood кстати интересный вопрос, как ты оцениваешь DevTools в Firefox? или используешь исключительно Chrome?

0:39

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

0:44

Генерация AST получилась быстрее и дешевле по памяти. Но читаемость (JSON) стала хуже. Вот не знаю, что важнее :) экспериментирую дальше

0:49

Кстати, списки и операции над ними одна из первых тем о структурах данных. Но во фронтенде практически никто их не использует

1:20

Между тем списки могут помочь сэкономить память и ускорить определенные решения, например, там где не нужно обращение к элементу по индексу

1:21

К примеру, большинство имплементаций event listener'а хранят подписки как карта-массив-дескриптор,но можно хранить и как список карт событий

1:22

Как выбор структуры данных влияет на память и время я рассказывал в докладе в прошлом году slideshare.net/basisjs/ss-323… slideshare.net/basisjs/ss-323…

1:22

Более того, в случае с event listener'ом списки и более надежное решение, нежели массивы

1:23

Если при обходе массива он мутирует (добав./удал. обработчик), то возможна ситуация, что обработчик или не отработает, или отработает дважды

1:23
@jsunderhood хочу увидеть обсуждение редакторов кода. Тема, конечно, холиварная, но все-же)))

А что их обсуждать? На вкус и цвет, как говорится...

@jsunderhood хочу увидеть обсуждение редакторов кода. Тема, конечно, холиварная, но все-же)))

1:25
@oelifantiev @jsunderhood посмотри серию supercharged на youtube: Supercharged: youtube.com/playlist?list=…
11:16
@jsunderhood Event listener такая вещь, которая обычно вешается один раз при старте и дальше часто используется. А чтение массива быстрее.

Зависит от многого. Часто навешивается больше, чем срабатывает. Когда я делал на списках, сравнивал, было ~так же.

@jsunderhood Event listener такая вещь, которая обычно вешается один раз при старте и дальше часто используется. А чтение массива быстрее.

13:28
@jsunderhood А банальный /^\/\*/.test(str) не пробовал? В идеале должно быть проще и короче.

Проще и короче. Но куда медленнее. И я так же использовал str.charCodeAt(N) вместо str[N] jsperf.com/check-string-v…

@jsunderhood А банальный /^\/\*/.test(str) не пробовал? В идеале должно быть проще и короче.

13:57

Не знаю делаются ли вообще оптимизации для RegExp. Кажется это невозможно (или оч сложно), т.к. они имеют side effect. Призываю @mraleph :)

14:00
@jsunderhood @mraleph Позор, что регулярки не оптимизируются. Интересно, что в IE разница гораздо меньше.

В IE исторически самая быстрая реализация RegExp, еще со времен IE5.5. Потому что ее писали дяди с бородами :)

@jsunderhood @mraleph Позор, что регулярки не оптимизируются. Интересно, что в IE разница гораздо меньше.

14:46
@jsunderhood btw, V8 не любит неявное преобразование boolean->number.

Ого! Не подумал бы, что настолько не любит, разница 8-10 раз. Спасибо, будем знать

@jsunderhood btw, V8 не любит неявное преобразование boolean->number.

15:11
@ruGreLI @jsunderhood регулярки оптимизируются, конечно, причем еще с древних времен blog.chromium.org/2009/02/irrege…
15:12
@ruGreLI @jsunderhood но проблема в том, что они не инлайнятся в caller'а и для таких маленьких регекспов стоимость вызова слишком большая
15:12
@ruGreLI @jsunderhood поэтому регулярки быстрее, когда они сложнее (в них в самих появляются "циклы")
15:12
@ruGreLI @jsunderhood а тут по сути дела сравнение первых пары символов - поэтому overhead получается сильно большой
15:12
@jsunderhood @mraleph Нетрудно заметить что в изначальной форме /^\/\*/.test(str) всякие RegExp.$1 заведомо не используются.

Вам может быть очевидно, но оптимизатору – нет. Проблема в том, что RegExp.$1 может использоваться вне функции.

@jsunderhood @mraleph Нетрудно заметить что в изначальной форме /^\/\*/.test(str) всякие RegExp.$1 заведомо не используются.

15:31
@jsunderhood @mraleph не может, потому что регулярка нигде не сохранена.

Я возможно вас удивлю, но это не нужно
(function(s){ /\d/.test(s) })('asd123');
console.log(RegExp.lastMatch) // 1

@jsunderhood @mraleph не может, потому что регулярка нигде не сохранена.

15:44

RegExp.$1..$9, RegExp.lastMatch и остальные – статические readonly свойства класса RegExp developer.mozilla.org/en-US/docs/Web…

15:47
@ruGreLI @jsunderhood RegExp.$1 это свойство на объекте RegExp - сохранена или нет регулярка - не имеет значения.
15:52
@jsunderhood работу нестандарщины никто не гарантирует. А не стандартизировали это, наверняка, именно чтобы не гарантировать поддержку.

Это часть платформы, есть в любом браузере со времен как минимум IE5.5. Не гарантировать - значит сломать Web.

@jsunderhood работу нестандарщины никто не гарантирует. А не стандартизировали это, наверняка, именно чтобы не гарантировать поддержку.

16:00

Итак, скоро заканчивается мое время в качестве ведущего, потому финальная история с философским, надеюсь, финалом :)

16:10

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

16:11

Например, DOM узлы имеют childNodes. Но дети так же представляют собой двунаправленный список, "связаны" по previousSibling/nextSibling

16:11

Не смотря на то, что childNodes ведет похоже на массив, обычно это интерфейс к двусвязному списку + индекс (кеш) по необходимости

16:12

Дизайн DOM таков, что браузеру нет нужды обращаться к произвольному ребенку ноды, потому не создаются лишние структуры -> экономия ресурсов

16:13

Построение индекса для ноды иницируется только нашим с вами кодом. Он строится при первом обращении к childNodes, путем обхода всего списка

16:14

Инвалидация кеша происходит при мутации списка, т.е. добавлении, удалении или перемещении дочернего узла

16:15

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

16:15

Так что, даже если единожды делается childNodes[N], то браузер вынужден обойти весь список, построить индекс и только тогда вернуть N-ю ноду

16:16

И вот кажется, что можно было бы избежать построение индекса, раз запрашивается лишь одна нода (оптимизация), но обычно это нельзя сделать

16:18

Причина в том, что обычно JS и DOM разные компоненты, работают через биндинги, не имеют общих данных и оптимизатора

16:19

Сделано так для лучшей модульности. Но может вести к performance bottleneck или утечкам памяти (напр. часть цикла в JS,часть в DOM)

16:20

Насколько знаю, пока только в MS решились на объединение JS c DOM, случилось это еще в IE9
blogs.msdn.microsoft.com/ie/2010/09/02/…
blogs.msdn.microsoft.com/ie/2010/08/04/…

16:22

Это помогло улучшить IE, но не сильно. Т.к. имплементация DOM старая (20 лет), очень медленная и никогда серьезно не рефакторилась

16:24

Но они начали работать над этим, и в некотором будущем появится в Edge blogs.windows.com/msedgedev/2015…

16:27

Когда закончат, у нас будет ответ – насколько эффективным может быть DOM и бенефиты от тесной его интеграции с JS

16:29

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

16:32

Если в результате DOM ускорят в 1,5-3 раза, появится новый класс оптимизаций основанный на структуре DOM и его использования в JS...

16:38

... то это может изменить наш подход к решениям. Например, концепции вроде Virtual DOM потеряют смысл в плане ускорения (останется удобство)

16:41

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

17:00

Можно не знать всего этого, говорить что DOM медленный, лучше React ничего не будет, алгоритмы не нужны и на изучение нового нет времени...

17:00

А можно не верить на слово, изучать, копать и делать эффективно большие сложные штуки, с заделом на будущее, или то, что еше никто не делал

17:00

Все зависит только от вас, это личное дело каждого. Выбор за вами.

17:01

Все, больше монологов не будет :) В оставшееся время буду рад ответить на вопросы, если они у вас остались

17:10
@jsunderhood Про DOM было интересно. Также интересно, и откуда инфа. Какие источники/исходники копались для ее получения?

Регулярное чтение блогов, статей, спек, работа с профилировщиками, эксперименты, изучение исходников браузеров etc

@jsunderhood Про DOM было интересно. Также интересно, и откуда инфа. Какие источники/исходники копались для ее получения?

17:34

Если хотите начать разбираться как работают браузеры, начните со статьи Tali Garsiel html5rocks.com/en/tutorials/i… (руск. html5rocks.com/ru/tutorials/i…)

17:42
@jsunderhood Просто такие «подкапотные» вещи обычно мало где услышишь.

Где-то 5 лет назад в Chrome, мы словили ошибку memory access violation, что в принципе нереально во фронтенде...

@jsunderhood Просто такие «подкапотные» вещи обычно мало где услышишь.

17:46

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

17:48

Оказалось, в webkit делали оптимизацию DOM и сломали инвалидацию кеша для getElementsByTagName(), когда мутирует поддерево ноды

17:50

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

17:55

Был еще крутой блог peter.sh – пока не перестал обновляться в 2013. Там были подробности комитов в Blink/v8 каждую неделю

17:57

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

18:03

Хорошие статьи вроде таких
webkit.org/blog/3362/intr…
blogs.msdn.microsoft.com/ie/2014/10/09/…

18:15
@jsunderhood сделает ли Servo революцию? Вроде обещают крутой многопоточный рендеринг. Будет ли x10 более быстрая работа с DOM?

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

@jsunderhood сделает ли Servo революцию? Вроде обещают крутой многопоточный рендеринг. Будет ли x10 более быстрая работа с DOM?

19:21

Конференции, которые стоит посетить в России
WSD wsd.events
CodeFest codefest.ru
FrontTalks fronttalks.ru

20:20

Хороший фид ежедневных новостей @webstandards_ru Наверняка уже читаете, но все же :)

20:24

Пара хороших подкастов:
radiojs.ru – про фронтенд (участвовал пару раз)
sdcast.ksdaemon.ru – не только про фронтенд :)

20:49

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

20:51

Закрепляйте знания практикой, экспериментируйте, участвуйте в проектах. Если нет своего проекта – найдите подходящее вам в open source

20:51

Свои знания и опыт я вкладываю в SPA фреймворк basis.js (github.com/basisjs/basisjs), и различные инструменты (github.com/lahmatiy)

20:51

Basis.js не хватает документации, туториалов и всякого такого. Если у вас есть желание и возможность помочь – напишите мне :)

20:52

Если у вас остались вопросы, хотите что-то обсудить – не стесняйте, пишите. Еще меня можно встретить на конференциях и митапах

20:52

С вами был я, Роман Дворнов. Мой твитер @rdvornov
Спасибо, что были со мной эту неделю!
Архив недели: jsunderhood.ru/rdvornov/

20:54

github.com

www.youtube.com

other


@2j2e