Илья Заяц

Илья Заяц

Темы
Неделя
Aug 10, 2015 → Aug 16, 2015

Архив недели @23ydobemos

Понедельник


Привет, эту неделю c вами проведу я — @23ydobemos. Жители Петербурга могут знать меня как соорганизатора @spb_frontend и, когда-то, @spbruby

Жители же других городов могут знать меня как одного из ведущих @frontflip_js

Последние недели, читая @jsunderhood, я все больше печалился по двум причинам

Первая — вести аккаунт с каждой неделей должно становиться все сложнее…

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

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

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

Отсюда тема сегодняшнего дня: как привносить новые идеи, подходы и технологии в компанию, команду? Особенно, если проекту уже не первый год

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

Про переписывание никто и не говорит, это как раз крайняя мера, которая очень редко оказывается оправданной @svenyurgensson

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

ведь зачем выходить из зоны комфорта, если и сейчас все вроде как работает

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

и проявления у этого могут быть разные: свобода попробовать что-то новое без «подписи» начальства, доклады в компании, Cleaning Fridays

И как уже упоминалось, внутренние мини-проекты. Потому что вы можете 100 раз всем рассказать о крутости хотрелоада…

… но демонстрация изменения поведения приложения со сложным состоянием без перезагрузки рождает в разы больше блестящих от вдохновения глаз

🔥Тред (Илья Заяц)
И чтобы неделя не была полна только философии, то попробую устроить реалити-шоу…

… буду перетаскивать большой кусок marionette-приложения на react + redux и делиться впечатлениями

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

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

сделали прототип: перенесли 80% логики на реакт за день, выкинув около 2к loc, провели мини-презентацию и показали, что с реактом все проще

и разработчики, и product team вдохновились, поэтому теперь перетаскиваем уже полноценно

«ну уж в этот раз мы все сделаем правильно!» @yuritkachenko

🔥Тред (Илья Заяц)
расскажешь как внедряешь? @vladimore

🔥Тред (Илья Заяц)
Некоторым могло показаться, что этот канал временно перехватил @vladimore. Спасибо ему за эту интересную историю из жизни

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

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

Первые результаты реалити-шоу «мигрируем на реакт c бекбона»

создали bridge views, основная задача которых — прикидываться обычными collection/item views, но в методе render тайно вызывать React

При этом они же и оборачивают React-компоненты в <Provider> для связи с redux-store

На все изменения backbone-коллекций они вызывают dispatch, который и изменяет стор. При этом прокидывают все эти экшены в сам компонент

В итоге получается, что просто часть обязанностей смарт-компонента эти bridge views берут на себя, в остальном никаких изменений

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

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

🔥Тред (Илья Заяц)
Переключимся от обновления кода на «обновление» себя. Есть ли у вас правила по поводу расчистки покета/заметок/подкастов, что накопились?

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

Тут даже проблема не в прокрастинации, а в том что информации просто становится больше с каждым днем #банальность

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

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

Хотя, может это старость, и через пару лет захочется написать манифест типа Stop pushing the web forward quirksmode.org/blog/archives/…

Да, если у кого-то этот доклад лежит в покете, то сегодня именно тот день, когда нужно его посмотреть

Так а чем рассылки лучше? @_sashashakun

Вторник


Так, давайте сегодня поговорим про universal javascript. И под этим я подразумеваю не только перенос рендеринга на сервер

Но и, например, десктопные приложения. Пробовали уже делать что-то на nw.js/electron?

А может уже во всю работаете над чем-то с использованием React Native? Или вообще роботов/дома на js программируете? Расскажите про опыт

а что именно делал? @gladkih_m @nedudi

можешь немного рассказать про стек и механику? @filipovskii

и какие у тебя впечатления от него? @mistadikay

🔥Тред (Илья Заяц)
Я сам последние пару месяцев пытаюсь обернуть приложение в electron, и впечатления правда смешанные.

С одной стороны хорошо, что он вообще есть. С другой — документация очень скудная и часто неверная

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

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

🔥Тред (Илья Заяц)
я не говорю, что это невозможно. Просто первоначально казалось, что все будет сильно проще. «Это же гитхаб!»

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

Starter Kit, который выдрали из атома. Дает структуру и очень полезный набор грант-тасков github.com/atom-archive/e…

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

Дальше идет grunt-electron-installer, который, хоть и является частью starter kit, заслуживает отдельного твита github.com/atom/grunt-ele…

Удобно через него создавать one-click-installer для windows + это уже обертка вокруг squirrel, так что получаете autoupdate почти бесплатно

«Почти» потому что, autoupdate для windows до сих пор не в ядре электрона. Приходится воротить нечто подобное: github.com/atom/electron/…

Не совсем электрон, но удобный таск для создания dmg-образов из вашего приложения github.com/rakuten-fronte…

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

Есть еще список Awesome Electron, где постоянно появляется что-то новое, так что может вам повезет больше github.com/sindresorhus/a…

🔥Тред (Илья Заяц)
Кто поможет советом? twitter.com/Seleckis/statu…

Сегодня днем хотел уже было написать, что реалити-шоу «переводим бекбон-приложение на реакт и redux» можно закрывать...

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

Который ни реакта, ни флакса/редакса до этого не видел. По ошалелым глазам поняли, что немного (всего чуть-чуть!) все усложнили

Поэтому завтра с утра попробую описать как получилось это все немного упростить

Но урок выучили. К новым технологиям/подходам надо относиться как к продуктам: сделал mvp и быстрее показывай пользователям и получай фидбек

🔥Тред (Илья Заяц)
Рано или поздно уж придется, но пока сами не видим необходимости

Так что хорошего всем вечера, увидимся завтра

Среда


События прошедшей ночи: io.js ушел в node, вышел Relay, в FB все на Babel.
Доброе утро, обсудим свежие новости? twitter.com/roman01la/stat…

Поэтому завтра с утра попробую описать как получилось это все немного упростить
Вчера пообещал, что расскажу про новый виток архитектуры в нашем шоу «переводим бекбон-приложение на реакт+redux» twitter.com/jsunderhood/st…

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

Выходило, что чтобы перевести какой-то кусок приложения на реакт, надо было создавать bridge, прокидывать action creators и писать редьюсеры

И в action creator’aх дергать модели бекбона + возвращать экшены для optimistic save

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

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

Бриджи теперь не делают ничего, кроме как рендерят компоненты. Компоненты же теперь канонически делятся на умных и не очень

Умные подписываются на стор и прокидывают детям interactions — просто функции, которые изменяют модели бекбона.

В итоге разработчикам не надо сразу знакомиться с редьюсерами, они продолжают менять модели, как было раньше

Стор же меняется через «большое ухо» — объект, который следит за всеми моделями и коллекциями и уже сам вызывает action creators

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

🔥Тред (Илья Заяц)
Я тут методом тыка написал array wrap на es2015, но теперь не могу понять, почему оно работает и можно ли упростить
notion image

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

Ребят, я понимаю, что можно смотреть код, что генерит babel. Мне больше интересно, почему, например, это происходит
notion image

@jsunderhood пс, работал с GMaps API? twitter.com/d3head/status/… twitter.com/d3head/status/…
Кто подскажет по гугл-мапс? twitter.com/d3head/status/…

Четверг


Давайте сегодня поговорим о проблемах code review

Есть две вещи, которые могут превратить любой код ревью в поле ненависти: комментарии по поводу код-стайла и фразы «а почему не …?»

Первое злит, потому что люди не видят сути самого кода. Решается добавлением линтера в билд на CI или подключением hound’a

Фразы же «а почему не …?» автоматически вызывают у людей защитную реакцию, и вместо трезвого обсуждения вариантов, все начинают огрызаться

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

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

Это всегда проблема кода, а не программиста. Но отвечать «я ничего не понял, хрень какая-то» тоже не надо, как мне кажется @naorunaoru

Можно попробовать понять, что же вообще хотел сделать наш герой и предложить путь проще. Обычно соглашаются @naorunaoru

из моей практики и первая агрессию вызывала.Небольшое изменение на «а ты не думал насчет…» обычно кардинально меняет картину @from_anywhere

Потому что «а почему не» === «это же очевидно, дебил»


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

Вариант, но это если все репозитории на js @iamstarkov

Попробую разъяснить еще раз позицию относительно комментариев к коду

Мне кажется, что многие из ответов, что «обижаются» только в плохих коллективах основывались на том, что вы сидите в одном офисе…

… и хорошо знаете человека, чей код ревьюете. Тогда даже на фразу «что это за говно?» никто не обидится, и все лишь посмеются

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

… то тут уже даже «а почему не» может задеть. Потому что вашу интонацию и мимику комменты на гитхабе передать не могут, увы

🔥Тред (Илья Заяц)
Не понимают, потому что не хотят понять или просто не видят объективных преимуществ?@_yukkat

🔥Тред (Илья Заяц)

Пятница


Раз уж такой вопрос подняли с утра, и многие из фолловеров/ведущих живут и работают вне России, то можем сегодня обсудить тему релокации

Хотели бы вы пожить в другой стране? В какой? Какие вопросы/страхи останавливают?

Или уже живете? С какими основными проблемами столкнулись? «Советы новичкам?»

что именно поразило больше в разнице менталитетов? @freiksenet_ru

Если сравнивать с северными, то он удивляет, да. Но надо не забывать, что Испания просто одна из самых дешевых стран Европы @toivonens

поэтому и на жизнь уходит сильно меньше. Еда, например, дешевле даже, чем в РФ @toivonens

Неужели Испания так не понравилась? @ilya_belsky

🔥Тред (Илья Заяц)

Воскресенье


Обычно в конце выпусков @frontflip_js мы просим всех участников поделиться ссылкой на то, что очень их удивило/порадовало за последнее время

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

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

Начну с себя: программа + методология ведения бюджета YNAB: youneedabudget.com Первая из подобных, что действительно помогает

Согласен, но радует, что оно совсем уж опциональное @tonyganch

🔥Тред (Илья Заяц)
В общем, пришла пора прощаться. Спасибо всем за эту неделю! С вами ее провел @23ydobemos

Приходите в гости в новые выпуски @frontflip_js и, если вы из/будете в Петербурге, то заглядывайте на встречи @spb_frontend

Ссылки