# Понедельник 77 твитов
Привет! Меня зовут @dan_abramov. Я веду @jsunderhood на этой неделе.
9:59Люди часто думают, что меня зовут Денис. Но я Даниил. Денис — это совсем не я.
10:00Я активно участвую в жизни англоязычного React сообщества. В русскоязычной части индустрии я почти никого не знаю, так что будем знакомы!
10:00На этой неделе я готовлюсь к выступлению на React Europe. Буду рассказывать, как React позволяет писать приложения, не нажимая F5.
10:00До React я какое-то время жил с Backbone/jQuery. До этого делал нативное приложение для iPad на Xamarin iOS. До этого писал под Windows.
10:00В детстве я мечтал собрать радио. Я нарисовал схему и купил детали в «Чип и Дип». Даже паяльник и канифоль купил. Но руки не дошли.
10:00Я пока план тем не составлял, но сегодня пойду стричься и составлю. О чем вы хотите поговорить?
10:00@jsunderhood но не потому, что ты нажимаешь CMD+R, right?10:02
Не захожу… Теперь я только в Reactiflux Slack-e. Рекомендую: reactiflux.com @sudodoki
10:03Застал меня врасплох. Хм. Смотрю сериалы. Люблю вкусно покушать. Полежать на солнышке. В общем, сейчас ничем. @anton_davydov
10:05Для начала в React важно въехать философически. «Что это вообще такое и зачем.» Лонгрид: jlongster.com/Removing-User-… @anton_davydov
10:08В более практичных вопросах здесь очень хорошая подборка: github.com/enaqx/awesome-… @anton_davydov
10:09В идеале React'а не станет, и он растворится в браузере: youtube.com/watch?v=4anAwX… @astralian
10:10I say with confidence as a former UIKit author: React's model for the UI layer is vastly better than UIKit's. React Native is a *huge* deal.
Но пока он не растворился, даже авторы UIKit из iOS считают, что это не пустой хайп: @astralian
I say with confidence as a former UIKit author: React's model for the UI layer is vastly better than UIKit's. React Native is a *huge* deal.
10:11
В React не нужны темплейты. В этом его сила. Если увидишь react-templates, закрой глаза и считай до десяти. @anton_davydov
10:12Есть и более экспериментально-интересные вещи, типа Cycle.js. Но React лидирует в категории «прагматичная инновация». @astralian
10:13Я не делаю TDD, поэтому не могу ответить как следует. Важно, что в React-компонентах не должно быть логики @roman01la
10:14Поэтому даже когда я пишу тесты, я пишу их не для компонентов, а для того, что ими управляет. @roman01la
10:14Если надо тестировать компонент, для меня это знак, что из него надо что-то вынести. @roman01la
10:15Нет. Cycle может, но он слишком сырой пока что. @astralian
10:15Новички часто не понимают, чем силен React. Он силен констрейнтами, которые он налагает. Похожая сила есть в ФП. @astralian
10:16Пользуясь случаем, прошу у @dan_abramov прощения за то, что много месяцев звал его Денисом ¯\_(ツ)_/¯ / @jsunderhood10:17
Любая логика. Если надо тестировать какую-то логику, скорее всего это должна быть функция или внешний объект @RusAlexander @roman01la
10:18Да, это крайний случай, согласен. Для таких компонентов стоит писать тесты. И то я бы скорее вынес логику управления.. @roman01la
10:18Например у тебя может быть объект MaskedInputValue, который имеет acceptChar(char, position) и onChange. @roman01la
10:19Ты можешь в нем описать логику, как маска себя ведет, а компонентом тупо рендерить текущее значение. Тогда логику легко тестить @roman01la
10:20React wouldn't be React without: (1) render() is idempotent, (2) setState is the only way to re-render, (3) components all the way down.
Я немножко про это твитил здесь: @astralian
React wouldn't be React without: (1) render() is idempotent, (2) setState is the only way to re-render, (3) components all the way down.
10:21
Что вас радует и что расстраивает в JS комьюнити?
10:27Моя позиция — хранилища должны быть pure функциями. Поэтому я написал Redux: github.com/gaearon/redux @roman01la
10:31Например, меня расстраивает, что люди всё ещё всерьёз создают новые библиотеки с two way data bindings.
10:33С другой стороны, я знаю людей, которых в принципе расстраивает, что люди создают новые библиотеки, так что всё относительно
10:34Amok пока недостаточно стабилен, чтобы о нем строго судить. Я думаю, его ниша — императивные кодбазы и быстрые прототипы. @somerandstring
10:36Мне кажется это «есть время разбрасывать камни и есть время их собирать». Ищем, находим, ищем, находим. @listochkin
10:37@jsunderhood радует что жсеры все еще самые харизматичные, расстраивает что все больше жавистов лезут в жс со своим самоваром и типами10:39
@jsunderhood меня расстраивает что нету оценки модулей/библиотек кроме рейтинга в гитхабе (т.е. популярности)10:39
@jsunderhood меня расстраивает постоянная тяга людей к уничтожению разнообразия. Все на Хром, все на Реакт, все на Babel - это неверный путь10:39
@listochkin @jsunderhood это нормально в нашем нарциссичном обществе. Идеализация и разочарование - главное активнее. и быстрее и чаще10:40
@jsunderhood радует, что комюнити развивается, огорчает, что пока нет четкой цельности10:41
Напротив, меня расстраивает, что люди уходят в ClojureScript из-за языка и делают там классные штуки. @edjafarov @listochkin
10:43И никто эти штуки не портирует — не потому что никак, а потому что им и так хорошо, а кроме них никто не понимает. @edjafarov @listochkin
10:43Кто знает ClojureScript?
10:48Почему-то только после появления @dan_abramov захотелось зафоловить @jsunderhood. :)10:50
Кто знает кого-нибудь, кто знает ClojureScript?
10:50@jsunderhood все знают Соловьёва же =)10:51
@jsunderhood я буду пробовать кложу из-за @nikitonsky10:52
Меня больше расстраивает сексизм, чем треды про него. @Dmiterko_Roman
10:54@jsunderhood я имел ввиду @asolovyov =) aka "чик-чик и в продакшин"10:55
Расскажите о каком-нибудь одном вашем опен-сорс JS проекте. Не важно, если нету звездочек. «Зачем» и ссылка. Го?
11:04@jsunderhood очень интересует "state management". я пока не въехал в концепт stateless stores. хочется понять весь жизненный цикл состояния.11:05
@jsunderhood Переводы фронтэнд (в том числе и JS) статей с неанглийского на английский frontendbabel.info Чтобы мир узнал о нас.11:07
@iamstarkov @jsunderhood кстати, он проводил лекции по JS, и говорит что язык дает мало, а архитектура много11:12
@jsunderhood PromisePipe-кросс процессные стримы,отделяют логику от взаимодествия между энвми github.com/edjafarov/Prom… pic.twitter.com/skwITTyFeh11:18
@jsunderhood клиент-сайд мокки для superagent, чтобы не ждать бекенд и не добавлять в проект мок-серверы на ноде — github.com/rambler-digita…11:20
@jsunderhood Плагин для eslint чтобы писать js по Крокфорду github.com/idmitriev/esli…11:34
Самая интересная статья / доклад / лекция 2014-2015 года по вашей версии?
11:39Расскажи. Once you go black you never go back? @nikitonsky
11:42@jsunderhood приложение для зацикливания отдельных кусков песни (полезно для начинающих музыкантов)11:42
github.com/wtfil/song-loo…
@jsunderhood @toivonens Конечные поля и кольца на JS molefrog.com/rye/ (чтобы строить красивые картинки 😊 molefrog.com/rye/demo/galoi…)11:44
Моя любимая — вот эта. «База данных шиворот навыворот.» blog.confluent.io/2015/03/04/tur…
11:46@jsunderhood я знаю ClojureScript и знаю тех, кто знает ClojureScript. :-)11:58
@jsunderhood люди всегда важнее всего, имхо, но качество языка вообще % на 60-70 это коммьюнити и экосистема. А так, конечно, комплексно. :)12:05
@dcromster @jsunderhood Social Coding Contract by @searls blog.testdouble.com/posts/2014-12-…12:10
@jsunderhood вот например tonsky.livejournal.com/284511.html12:29
Что используете в основном проекте? ES5? ES6? ES6 + experimental ES7ish extensions?
12:35@jsunderhood Манипуляции со словами после числительных github.com/andrepolischuk…12:43
@asolovyov @jsunderhood мда, хитро) Что на счёт Elm думаете, кстати? Стали бы в тащить в проект, если человек из команды захотел бы?12:43
@jsunderhood12:49
Извлечение свойств md-статей: заголовок, дата, описание, контент.
Чтобы не писать YAML, как в jekyll.
npmjs.com/package/articl…
@jsunderhood Web component для отображение github's gists на Polymer github.com/dmaslov/github…12:58
@lisovskyvlad @jsunderhood попробуй, вдруг взлетит13:33
Кто чем пользуется для отслеживания JS ошибок на проде? Сервисы? Библиотеки?14:03
/сс @jsunderhood
@jsunderhood github.com/sudodoki/copy-… - кнопка-компонент для копирования в буфер. Чтоб без флеша. Для nodeschool github.com/nodeschool/nod…14:03
@jsunderhood gruntO оптимизатор структуры Биллд процесса github.com/aliaksandr-pas…14:03
@jsunderhood babel с es714:04
@jsunderhood @sudodoki по ходу все самые хорошие разработчики не работают. Я вот вышел на работу и не знаю, хорошая ли это идея14:13
Я пойду стричься, подумаю над темами на неделю. Кидайте еще, о чем хотите поговорить. Можно в личку если что-то скользкое.
14:18# Вторник 124 твита
Привет. Я проснулся.
10:41Давайте сегодня поговорим про стили. BEM-именование уже стало мейнстримом, правда? А видели ли вы CSS Modules?
10:44Например, есть мнение, что BEM — конечно, здорово, но это как неймспейсы в ES5 без модулей. А нужны-то модули. medium.com/seek-ui-engine…
10:47Есть еще мнение, что CSS — это просто еще один compile target, а язык описания должен быть один — JS и компоненты. github.com/petehunt/jsxst…
10:48Скажем, @andreysitnik любит CSS. Именно как язык/синтаксис. А @jashkenas считает, что вебу не нужно три языка. youtu.be/DspYurD75Ns?t=…
10:53Что именно в Webpack значит require('./something.css')? Идея в том, что это никак не отличается от require('./something.coffee') и т.п.
11:00Если к проекту не подключить билд-трансформу для *.css, то это не сбилдится. Ведь таргет-язык у нас всё-таки JS.
11:00Но можно подключить трансформу, которая превращает файл стилей в JS-модуль, кладущий эти стили в <style>-тэг.
11:01Теперь require('./something.css') обретает смысл — это значит «этот JS-файл зависит от того, чтобы эти стили были в head». Зависимости FTW!
11:01Причем код не указывает, _как именно_ эти стили соединяются. Может быть, они выделяются при компиляции в отдельный файл. Деталь реализации.
11:02Зато с явными зависимостями не бывает мертвых стилей, файлов, которые боишься убрать, или watch('**/*.css'). Потому что всё явно, как в JS.
11:03Это простейший вариант. Более умная трансформация может возвращать объект вида { attach(), detach() }. @somerandstring
11:04@jsunderhood переписал свой сайт с CSS Modules. Полет отличный.11:08
@jsunderhood webpack postcss local-scope11:08
bem ужасен, по-моему, потому что пытается решать не те проблемы и не теми методами
@jsunderhood БЭМ это не только лишь CSS!11:08
@bem_xxx @jsunderhood БЭМ это обмен файлами. БЭМ это гигабайты свежей информации. БЭМ это общение. БЭМ это рост. БЭМ это свобода. БЭЭЭЭЭЭМ!!11:10
@Sigiller @jsunderhood изоляция на уровне сборки, простые наименования классов, все локальное, sourcemaps можно подрубить.11:16
Конечно, лучшее в CSS Modules — это их лого. github.com/css-modules/cs… pic.twitter.com/7nAR6Fzi69
11:18Конечно, CSS-в-JS еще сыро. Но нельзя отмахнуться, что проблема надуманная. Семь грехов CSS: speakerdeck.com/vjeux/react-cs… pic.twitter.com/QkFGneJL8r
11:22@jsunderhood на мотив css is awesome, надо полагать pic.twitter.com/naWrQfYheo11:25
Как BEM, компоненты и зависимости-в-JS дополняют друг друга: medium.com/seek-ui-engine…. Этот пост — прелюдия к CSS Modules.
11:33@iamstarkov @jsunderhood github.com/MicheleBertoli…12:17
колонка autoprefixer included
@jsunderhood my bad, я отстал от жизни12:27
Создатель postcss-local-scope задепрекейтил его в пользу развития css modules
github.com/markdalgleish/…
Быстрый ответ — после Webpack для меня пропала необходимость в Grunt/Gulp. В Browserify нет Hot Module Replacement :-( @baxxabit
12:29Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
12:29Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
По поводу — только что открыл DM для всех, пишите.
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
12:37
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Анонимно: спб, тимлид/разработчик, энтерпрайз + разработчик кода встраивающегося на сторонние сайты. ~=150к чистыми
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
12:45
@suevalov @jsunderhood а я вот считаю что мы ничего не теряем) мы используем более гибкий язык который частично уже добавляется в css12:46
github.com/petehunt/webpa…, christianalfoni.github.io/react-webpack-… @baxxabit @dzhiriki @suevalov
12:48Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Фронтэнд клиентской админки в немаленькой компании (~200 чел. персонала, посещаемость 1м/мес) на хитром стеке. 110к.
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
12:49
@jsunderhood Уточнение: Москва
12:50Еще есть survivejs.com/webpack_react/ — очень хороший ресурс. @baxxabit @dzhiriki @suevalov
12:51Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Толстый клиент, компания 6 человек в Европе, 90к евро в год, 55% налоги :/
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
12:55
@jsunderhood я сижу на зарплате 800$/мес. мне хватает. но после чата dev-ua/frontend-jobs я понял что это почти плинтус. пишу битуби-битуси12:59
Напоминаю, что сегодня я ретвичу и публикую зарплаты фронтэндеров и фронтэндщиц. Пишите анонимно в DM.
15:49Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
200k рублей. Удаленка, тимлид, фронт+бек.
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
15:49
@jsunderhood Недавно ходил по собеседованиям с Angular+D3 и прочим js. С опытом бэкэнда и аналитики получил предложения 150 и 170 кр15:50
@jsunderhood напоминает «нужна только Java», «нужен только XML». Это не будет работать, так как мы должны оптмизировать язык под задачу.15:51
@andrey_sitnik @jsunderhood почему бы не взять ближайший turing-complete язык (js) для этого15:51
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Питер, джуниор, 60
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
16:00
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Голландия, фронтенд тимлид: 3900€/мес после налогов
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
16:07
@andrey_sitnik @somerandstring @jsunderhood jsx это это internal dsl, против CSS который external DSL. См. gbracha.blogspot.cz/2014/09/a-doma… о разнице16:08
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
начинал с джуниора в 45
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
16:11
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)
16:12@jsunderhood скучаешь без secret?16:13
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Фронт, backbone, западный клиент, удалённо, около 1300-1500 евро брутто, по часам начисляется
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
16:16
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Провинция, тимлид, только фронтенд, опыт бекенд + аналитика, 100К чистыми
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
16:17
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)
Надо и на js уже внедрять тестирование
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)
16:20
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)
Интересно поговорить кто сколько спит и какая при этом производительность труда;)
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)
16:53
@jsunderhood но чем раньше ложусь, тем меньше сплю17:24
Расскажите, как вы организуете управление стейтом в JS-приложении. MVC? Flux? Rx? Что-то новое?
17:25@jsunderhood Flux, но со Swarm.js это начинает выглядеть странно17:28
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Тимлид, фронт, реакт, бекбон, опыт фуллстека, 120.
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
17:29
Уточнение: Москва
17:29Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Питер, front-end тимлид, 3000$/мес
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
17:37
@jsunderhood Нечто flux-подобное на Rx-потоках17:37
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Frontend-архитектор. UX/UI, development management, workflow automation, fullstack, ±devops. 10 лет, Красноярск, 50к
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
17:50
@jsunderhood Винница, Фриланс - верстка + ВП. 100017:51
@jsunderhood Заметил по себе, что норма 8 часов.Если меньше, то после обеда уже зеваю и производительность хромает.17:51
@jsunderhood на React - Flummox, попробовал Redux. На Angular все плохо. По крайней мере так кажется после React :)17:51
@jsunderhood Не верю в рассказы, что можно спать по 4 часа и быть продуктивным)17:51
@jsunderhood ванильный Flux. FTW!17:55
@jsunderhood сплю ~8 часов, по 3 силовых и беговых тренировки в неделю. Работается тоже хорошо :-)18:01
@jsunderhood ractive -> ractive + flummox -> react + flummox18:01
@jsunderhood flux+immutable rx тоже есть но на 99% используется просто как EventEmmiter18:01
@jsunderhood используем React + Reflux18:17
@jsunderhood @andrey_sitnik crdt можно представить как свёртку (reduce) операций ;) gsd.di.uminho.pt/members/cbm/ps… см. там eval(op, state) -> state18:22
К слову об управлении стейтом. Три недели назад я начал писать новую библиотеку. Она называется Redux. github.com/gaearon/redux
18:36Я не люблю изобретать велосипед, но не нашел другого пути. У меня было три цели.
18:36Первая цель: сохранить преимущества Flux. Только экшны могут менять стейт, сторы инкапсулируют управление независимыми областями стейта.
18:36Вторая цель: поменять Flux так, чтобы можно было перезагружать логику сторов на ходу с помощью React Hot Loader и подобных решений.
18:37Третья цель: поменять Flux так, чтобы можно было легко написать devtools для record/replay, time travel, (de)hydration без участия юзера.
18:37Я буду рассказывать про Redux в своем докладе на React Europe в июле. В этом треде готов отвечать на вопросы. )
18:38Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
мск, в трудовой "верстальщик", федеральный ритейл, пилю внутренние системы на ExtJS,100к р/мес на руки с премиями
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
18:39
@jsunderhood Redux клевый по первому опыту. Но крайне жаль, что мейнтейнер Flummox'а отказался его развивать дальше. Из-за выхода Redux.18:40
@jsunderhood Киев, синьор фронтенд-разработчик в аутсорсинге, не тимлид. $5500 чистыми в месяц после налогов.18:49
Они даже не содержат её. То что во Flux хранилища, в Redux — чистые функции. (previousState, action) => nextState @roman01la @alexeyraspopov
18:56@alexeyraspopov @jsunderhood хранилища как data reducers — это очень хорошая штука, имхо18:58
Я взял эту идею из Elm. github.com/evancz/elm-arc… @roman01la @alexeyraspopov
18:58@jsunderhood а тот из Haskell. XMonad по такому же принципу построен. @roman01la @alexeyraspopov19:01
@alexeyraspopov @jsunderhood возможно такие хранилища не стоит называть хранилищами :)19:03
@jsunderhood есть какой-либо roadmap? Примерная дата 1.0?19:09
@jsunderhood @roman01la @alexeyraspopov Я в своих pet-проектах использую rxStream.scan(f) для стейта. Потом подписал на это setProps и вуаля19:10
@jsunderhood @roman01la глупость. Флакс — всего лишь паттерн. Кто мешает написать только имплементацию сторов с нужными возможностями?19:10
@jsunderhood @roman01la github.com/alexeyraspopov… все те же редьюсеры. У стора есть метод, которым можно напихать в него экшнов без диспатчера19:13
@jsunderhood я правильно понимаю, что в redux есть некий global state, содержащий все данные приложения, который используют сторы и вьюхи?19:15
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Senior Frontend Engineer, Киев, 35$/час, в месяц до 6к$
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
19:15
Да. В Redux я это делаю, парадоксально, через «лифтинг» экшнов, higher-order reducer и «анлифтинг» стейта github.com/gaearon/redux/… @roman01la
19:20@jsunderhood @roman01la @alexeyraspopov все ходим вокруг одного (state,action) ->state goo.gl/1kUAf0 demo goo.gl/1kUAf019:21
@jsunderhood @roman01la @alexeyraspopov поправочка демка тут - goo.gl/er5j6y19:21
@jsunderhood как в redux происходит коммуникация с сервером? например во flummox за это отвечают экшены, но меня это интуитивно смущает19:25
@MostovenkoA @jsunderhood @roman01la и вообще весь ваш data flow — пару строчек кода :D pic.twitter.com/RTctU4NokI19:25
Зло — не global state, зло — mutable global state. :-) @smashercosmo
19:26@jsunderhood @MostovenkoA @roman01la слайд взят отсюда (alexeyraspopov.github.io/talks/what-the…), вдруг будет интересным.19:31
Это лучшая пареза про Flux, что я до сих пор видел — by @alexeyraspopov alexeyraspopov.github.io/talks/what-the… pic.twitter.com/L3KIY1QPkW
19:34Читаю @jsunderhood и немного охреневаю от уровня зп у фронтендеров. Давно надо было валить с текущего места.19:35
@jsunderhood @MostovenkoA @roman01la выглядит отлично, нужно поиграться с этим подходом. Спасибо19:41
@safrankov @jsunderhood такие же ощущения, только про технологии. Как будто все уже сменили пару версий всевозможных ***ux-ов в продакшене.19:42
Скорее нет. Смотря что ты имеешь в виду. Экшн — просто данные о том, «что случилось». @smashercosmo
19:43Стор (или редюсер в Redux) никогда не должен сам диспетчить экшны — только реагировать на них. @smashercosmo
19:43С другой стороны, ты можешь сделать функцию, которая диспетчит несколько экшнов. (Например, запрос и ответ сервера.) @smashercosmo
19:44Потому что он не сохраняет преимуществ Flux. Нельзя сделать центральный логгинг, time travel, record/replay @dimchez @alexeyraspopov
19:44@jsunderhood нуб-вопрос: может ли экшен вызвать другой экшен? допускает ли это flux-way или таких коммуникаций лучше избегать?19:44
Я об это пару месяцев голову ломал, трудно в цепочке твитов объяснить. Когда сами тулзы выпущу, будет понятнее. @Chudesnov @roman01la
19:47@jsunderhood а ситуация когда стор ждёт другой стор (waitFor) нормальна или это проблема с архитектурой?19:56
Про это хорошая дискуссия здесь: gist.github.com/gaearon/d77ca8…. Я объясняю почему с редьюсерами это не проблема. @vdv73rus
19:56Если судить по мини-опросу про зарплаты фронтенд-разработчиков в @jsunderhood, то на заработки надо валить не в Европы, а в Киев20:02
В Redux ты сам решаешь, что использовать для моделей. Ему всё равно. ) Хочешь — immutable, хочешь plain objects или что еще. @mbektimirov
20:07@jsunderhood довольно успешно пишу код без Flux на Morearty с иммутабельностью. Почему в redux ты не используешь Immutable.js?20:07
Сигнатура — (state, action) => state. Ты можешь использовать всё что угодно в качестве state в своих редюсерах. @mbektimirov
20:08@jsunderhood тот же time travel отлично ложится на immutable структуры данных20:09
Я согласен. Redux делает ассампшн что, что бы ты ни использовал, оно нигде не мутируется. @mbektimirov
20:09По моему опыту достаточно просто использовать ES7 rest/spread syntax, чтобы не мутировать объекты/массивы. @mbektimirov
20:10@23ydobemos @jsunderhood Уровень жизни ниже. Для того чтобы жить лучше, надо платить: за "элитную" квартиру, за машину, глотающую ямы и т.д.20:13
@smashercosmo Тут холодно и темно!!! Но через 5 лет можно получить паспорт и валить на юг :-)20:23
Чтобы работало, надо { "stage": 1 } в .babelrc @andrey_sitnik @mbektimirov
21:13Можно let { …rest, stuffIDontCareAbout } = stuff; return rest @andrey_sitnik
21:13Завершаю сегодняшний поток добрым видео. Спокойной ночи! vimeo.com/88035957
21:20Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Провинция, front end (angular) - 40к и это еще много.
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
22:38
@jsunderhood а не было желания написать свой роутер для реакта?22:40
Мне нравится React Router. Он еще не совсем классный, но будет классный в 1.0. @justusebrain
22:40Миксины опциональные, ты можешь использовать контекст напрямую. @justusebrain
22:54Роутер 1.0 будет легко "направлять" через Flux полностью, так что состояние может лежать в твоем сторе. @justusebrain
22:55# Среда 40 твитов
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Киев, пусть будет Senior, не лид, Node.js/React, $3.5k - 4%
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
11:55
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
$3200 после налогов, React+Flux приложения для бэкенда ритэйловых сервисов
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
11:56
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)
а можно как нить после митапа пойти не пиво пить, а взорвать косяк, да вообщем можно и до)
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)
11:56
@jsunderhood mvc и модели на основе github.com/share/sharejs, во снах снится что все переписал на flux12:01
@jsunderhood “до 6к” это занятная метрика. Если считать чистые часы на почасовке, то почти всегда будет меньше 130. У многих вообще 100-110.12:01
@jsunderhood зарелизился Nuclide от Facebook nuclide.io12:01
@alexeyraspopov @MostovenkoA @jsunderhood @roman01la (1 github.com/evancz/elm-arc…) (2 github.com/slamdata/pures…) без синтетичних сутностей..12:02
@alexeyraspopov @MostovenkoA @jsunderhood @roman01la типи допомагають зрозуміти що треба 2 стейт машини - для бізнес-логіки, і для view12:03
Асинхронный action creator может вернуть просим, например, чтобы компонент имел к нему доступ. @victor_suzdalev @smashercosmo
13:01Я же ни из кого не вытягиваю клещами. Погугли движение #talkpay. Знать ЗП на рынке — важно. @konenkov
13:03@konenkov @jsunderhood да ну, узнать, чо почём, может, ты мало получаешь для своего стажа/позиции, география - вот это вот все13:03
@jsunderhood every berlinjs I attended, до, во время и после.13:08
@8gene @jsunderhood @alexeyraspopov @MostovenkoA @roman01la боже мой, это же Elm, все в машину! youtube.com/watch?v=Agu6ji…13:08
@sudodoki @jsunderhood @konenkov информация особенно актуальна для большого аутсорса в СНГ, где зп пытаются занизить до минимума.13:09
@sudodoki @konenkov вообще, пока такие данные остаются массово закрытыми, остается простор для злоупотреблений @jsunderhood13:09
@sudodoki @konenkov сплошь и рядом вижу, как девушкам на аналогичной должности не доплачивают, например @jsunderhood13:15
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Кстати, про себя. В российском стартапе получал от $2300 до $2700 в месяц. Сейчас — консалтинг $100/час.
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
13:18
@jsunderhood как ты посоветуешь решать проблему постепенной прорисовки интерфейса при асинхронной загрузке разных блоков данных?13:32
@jsunderhood неготовность данных, спиннеры, пустые области на странице13:32
Специальный компонент типа AsyncProps занимается резолвингом и не рендерит детей, пока они не готовы: github.com/rackt/react-ro… @mbektimirov
13:33@jsunderhood @victor_suzdalev что-то я совсем запутался. мы просто пока на flummox-e, а там же экшены и экшен-криэйтеры по сути объединены?13:35
Вот хорошее объяснение разницы между Actions и Action Creators: github.com/gaearon/redux/… @smashercosmo @victor_suzdalev
13:35Просто надо как-то деньги зарабатывать после ухода из компании. ) @iamstarkov
13:38Я сейчас готовлюсь к конференции React Europe. Посоветуйте, как сделать хорошо флоу рассказа? У меня нет опыта настоящих конференций.
13:43@jsunderhood лайв кодинг решает! Свежайший пример: youtube.com/watch?v=j-kj2q…13:56
Пацаны-ребяты, посоветуйте модульный/компонентный CSS фреймворк, прям список всех что знаете. Нужно для исследований.14:12
RT plz
@jsunderhood а как находил клиентов для консалтинга?17:49
Сами пишут. Потому что много видного опен-сорса. Еще полезно нетворчиться на митапах и читать лекции, ребята подкидывают работу @kojoru
17:50@jsunderhood как в фильмах — вступление, закрутка, плато, раскрутка. Например: о себе, проблема, анализ, решение17:50
@jsunderhood кроме того, старайся добавить сильные цитаты, которые могут уйти в Твиттер17:50
@jsunderhood почитай книгу «Мастерство презентации», очень хорошая.17:50
Мне комфортно два-три часа в (будний) день, чтобы остальное время заниматься опенсорсом. @beshkenadze @paulmillr
18:04React/Flux @justusebrain @kojoru
18:05Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Одесса, фронтенд + Node.js, $2k
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
18:19
Разве Webpack теперь работает не через PostCSS? github.com/webpack/css-lo… @andrey_sitnik @snejink
18:56Я не очень понимаю, о чем ты. Чанки делаются одной строчкой в коде, и ты их получаешь автоматически. @andrey_sitnik @snejink
19:01ExtractTextPlugin — оптимизация. Она не всем нужна. И если хочешь билдить CSS отдельно сам, просто делай это :-) @andrey_sitnik @snejink
19:02То есть, Webpack не заставляет тебя использовать его для CSS. Многие используют его только для JS. @andrey_sitnik @snejink
19:02Странно, как это может быть аргументом в пользу Browserify. @andrey_sitnik @snejink
19:02Для меня поддержка hot reloading достаточный плюс ) @andrey_sitnik @snejink
19:13# Четверг 29 твитов
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
Верстка магазина и других сайтов компании. В основном только HTML/CSS, немного JS, шаблоны на PHP. Беларусь, 1300 $
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.
16:41
@jsunderhood где вы берете заказы, я как начинающий даже за бесплатно не могу найти заказ Python/Django/Bootstrap16:51
.@dmitriyminer @jsunderhood upwork(odesk). если не справился – возвращаешь деньги, и клиент не может оставить отрицательный отзыв. профит!16:58
@jsunderhood Есть билет на React Europe (418€), сделай пожалуйста ретвит, может найдутся желающие.16:58
@cakeinpanic @jsunderhood все хотят портфолио, а врать как-то не хочется17:15
@dmitriyminer @jsunderhood у меня написано "я молодой, но страстно желающий работать падаван". ну и тесты пройдены. нормально все идет17:20
Finally, Atom 1.0!19:142,090 packages, 660 themes, and 155 releases later, Atom 1.0 is now available: blog.atom.io/2015/06/25/ato… pic.twitter.com/RJNpSDlnuA
Извините, что сегодня молчун. Готовлю слайды к React Europe. Дизайнер помогает )
19:29Давайте сегодня такой формат — отвечаю на вопросы про hot reloading JS-кода. От общих до сугубо технических.
19:30Начну с пары инструментов. Есть вот Figwheel. Кажется, он офигенный. Но увы, только ClojureScript. :-( youtube.com/watch?v=j-kj2q…
19:38Есть React Hot Loader. Он только для реакта. Это мой проект. Вот видео, с которым он запустился: vimeo.com/100010922
19:39Есть Amok. В отличие от Figwheel и RHL, он зависит от конкретного браузера (Chrome). amokjs.com
19:39LiveReactload использует тот же движок, что и RHL, но под Browserify: github.com/milankinen/liv…. К сожалению, он re-evaluat-ит все модули.
19:40React Native Webpack Server позволяет использовать живую перезагрузку React Hot Loader внутри React Native: github.com/mjohnston/reac…
19:40@jsunderhood в каких случаях применим hot loader?19:43
Проект должен использовать Webpack. Работает редактирование методов компонентов на ходу + модулей, у которых нет состояния @snejink
19:44@jsunderhood в двух словах: по какому принципу это всё работает? Почему, например тот же flummox не полностью hot reloadable?19:45
Хот релоадинг работает в модулях, у которых нет локального стейта. Поэтому он работает для компонентов и чистых функций. @smashercosmo
19:45В Flummox вторы — классы. Из них трудно «выдирать» стейт, потом переносить в новый инстанс, как-то перерегистрировать их. @smashercosmo
19:46В Redux вместо уторов чистые функции-редюсеры, которые «собираются» композицией в одну. Эта одна функция — всё, что заменяется @smashercosmo
19:47React Hot Loader заменяет функцию render(), и в итоге рут-компонент получает новую чистую функцию в props, и ей пользуется. @smashercosmo
19:50@jsunderhood как думаешь, реально браузерным вендорам договориться о нативном стандарте для перегрузки кода, типа chrome remote debug?19:55
Чем дольше я занимаюсь hot reloading, тем больше я уверен, что это не имеет смысла. Это не дело браузера — это дело бандлера @somerandstring
19:56@jsunderhood мне кажется что произвольный код с сохранением состояния без помощи браузера не перегрузить20:06
Пытаться сохранить локальное состояние — изначально неверный подход. Отсюда проблемы. Надо выносить состояние вне. @somerandstring
20:06@somerandstring FigWheel доказывает обратное. Но… ClojureScript. @jsunderhood20:07
Вынос состояния «вне» имеет другие плюсы — возможность строить крутые тулзы для logging и time travel. @somerandstring
20:07Я думаю, что Webpack Hot Module Replacement + тулзы типа React Hot Loader достойно решают эту проблему. @suxxes @somerandstring
20:08# Пятница 79 твитов
Вы пользуетесь Browserify или Webpack? Почему?
9:33За Browserify: gist.github.com/substack/68f8d…
9:34За Webpack: gist.github.com/substack/68f8d…
9:34Webpack vs Browserify на React Podcast: reactpodcast.com/2015/06/webpac…
9:34Пит Хант называет феномен «modularity shaming» gist.github.com/substack/68f8d…
9:35Джеймс Лоно рефлексирует о том, как модули — контракт нашего взаимодействия как разработчиков. jlongster.com/Modularity
9:37Лонг, Твиттер. Лон. Автокоррект :-/
9:37@jsunderhood Browserify просто потому что у нас нет задач для фич специфичных для Вебпака.9:37
@jsunderhood я "не знаю” чем я пользуюсь, у меня Ember CLI - он как Тефаль думает за меня9:37
@jsunderhood а чем плох подход webpack-dev-server с перезагрузкой приложения во фрейме?9:37
@jsunderhood что есть для JS для таймтрэвела?9:38
Я сам не знаю, буду благодарен за ссылки. Поскольку ничего не нашел — пришлось написать Redux. :-) @marinintim
9:39@jsunderhood @smashercosmo а замена сторов?9:40
В Redux нет уторов, есть редюсеры — чистые функции. Вот корневой редюсер и заменяется. А стейт вне него. @MaxMykhailenko @smashercosmo
9:40Это класс. Реакту не хватает такого. @listochkin
9:42@jsunderhood grunt+browserify на работе, webpack для себя. особой разницы нет, но webpack все же чуточку быстрей и удобней9:46
Я сегодня буду твитить набегами. Пачками из пяти-шести штормотвитов на темы, которые меня волновали последний год.
9:52@jsunderhood webpack шустрее, удобнее, все из коробки, отличная документация, куча лоудеров и плагинов фактически настарте проекта.9:56
@jsunderhood славабогу, а то весь мой тви из монолога :) нужно аккуратнее9:58
@hellbeast92 @jsunderhood насчет отличной документации - это шутка такая?10:17
У вебпака документация ок (все опции на одной странице), но вот интро/гайдов не хватает. @baxxabit @hellbeast92
10:17@jsunderhood browserify, потому что привык к нему. Несколько раз пробовал webpack, но натыкался на странности API и возвращался обратно10:33
That's why styles need to be incapsulated into components ;-) @iamstarkov
10:41@jsunderhood а считается ли антипаттерном писать вместо jsx функции? вообще есть ли разница? jsx же только для ридабилити?11:17
Ты можешь писать createElement вручную, если хочешь. JSX сильно помогает читаемости. Плюс Babel будет его оптимизировать. @rastopyr_ua
11:18@jsunderhood @rastopyr_ua ещё JSX статически фиксирует семантику React элементов, что позволит делать более "сильные" оптимизации.12:05
@andreypopp а где про это можно подробней почитать? документация jsx? @jsunderhood12:18
@jsunderhood покопался с redux, начинаю понимать чем удобен hot reload. Но иногда затыкается rebuild, приходится еще раз делать npm start12:21
@jsunderhood когда в проекте был Browserify, билд был ~30 sec на cmd+s, c Webpack 1-2 sec12:41
Раз сегодня пятница, давайте джаваскриптовый Follow Friday. Кого нужно фолловить в JS-мире?
12:46Вот мой список: medium.com/@dan_abramov/m…
12:46@avevlad @jsunderhood стоило настроить кеширование и инкрементальное обновление.12:48
@jsunderhood начал собирать github.com/talgautb/front… а потом как-то остановился :)12:49
My work of the past week.13:05Inspired by Google's inceptionism art, my colleagues made an interactive visualization of a dreaming convnet. Trippy! twitch.tv/317070
Inceptionism live stream: goo.gl/A9CiGa neural networks dreaming in real time.13:05
. @jsunderhood а мне вот интересно как можно распиарить например свой репозиторий на гитхабе, есть ли какие-то советы/практики ?13:08
Всё просто. Надо для начала найти комьюнити. Например, React/Ember/etc комьюнити. Люди, вокруг которых вертится экосистема. @greybax
13:08Надо фоловить этих людей. Читать, что и почему они используют. Создавать что-то, что им нужно. Решить их проблемы. @greybax
13:09Одному что-то очень сложно сделать, потому что ты не знаешь, что людям нужно. В комьюнити полезное разлетается. @greybax
13:10Для меня решающее значение имеет твиттер. Не было бы твиттера — про мои проекты никто бы и не знал. Это мой рупор и фидбэк. @greybax
13:11Да, паре ребят, которые ты видишь что ретвитят такие ссылки. Конечно, должен быть готов README, должен соблюдаться привычный стиль @greybax
13:15@greybax @jsunderhood главное решать чью-то боль, затем иметь доки и тесты. А потом щепотка маркетинга13:21
Еще помогает писать статьи. Увеличивает доверие к тебе. @iamstarkov @greybax
13:22@iamstarkov @jsunderhood @greybax medium.com/@Shapiro/strip… вот тут @Shapiro рассказывает как пульнуть репозиторий в стратосферу14:14
@greybax @iamstarkov @jsunderhood @Shapiro специально для тебя, без SF hacks.mozilla.org/2014/05/open-s…15:09
@jsunderhood в последней версии ember есть все что есть в react (virtual dom, sane actions etc…) + router :) @kolybasov @listochkin15:22
React — не про virtual DOM. Это просто деталь реализации. React — про декларативные компоненты на JS. @tchak13 @kolybasov @listochkin
15:23Это позволяет делать вещи типа React Native или React Hot Loader. @tchak13 @kolybasov @listochkin
15:23@jsunderhood не поверишь, Эмбер тоже. Я в шоке от того, насколько мой код на Эмбер похож на то, что люди на Реактепишут @tchak13 @kolybasov15:26
The Debate Around “Do We Even Need CSS Anymore?”16:29
css-tricks.com/the-debate-aro…
@avevlad @jsunderhood да. Тоже мучался, потом нашел github.com/gulpjs/gulp/bl…, теперь билды 300 ms максимум.16:41
@jsunderhood можно ли сделать, чтобы при hot reload обновлялись и source maps?17:59
Нужно поставить звездочку в этом issue: code.google.com/p/chromium/iss… @esergeev
17:59@jsunderhood @hellbeast92 раз разрешил всякого рода вопросы, как написать hot loader поверх webpack для не-реакт? видел ответ на SO, но мало17:59
webpack.github.io/docs/hot-modul…, webpack.github.io/docs/hot-modul…, jlongster.com/Backend-Apps-w… @baxxabit @hellbeast92
18:00Еще я подсматривал, как style-loader это делает для CSS github.com/webpack/style-… @baxxabit @hellbeast92
18:01Сегодня большой день для фронтэнд комьюнити. Встречайте NPM 3.0 beta. github.com/npm/npm/releas…
18:11Прощайте, имплиситные peerDependencies. Тем не менее не спешите их удалять — они не УХОДЯТ, они МЕНЯЮТСЯ. Становятся полезнее.
18:13Вам приходили решения проблем программирования во сне?
19:53@jsunderhood я так ООП понял.19:55
@jsunderhood да, переспать проблему мне часто помогало.19:55
У меня пару раз так было (и получались действительно хорошие решения), но есть риск провалиться в «не помню, я сегодня спал или нет вообще?»
19:55@jsunderhood Отдавая столько времени и сил opensource, когда и как успеваешь зарабатывать на жизнь?20:02
Сейчас временный перерыв, немножко осталось накопленных. Потом восполню контрактной работой @icelabaratory
20:03@jsunderhood Частенько. Но скорее в момент засыпания. Тогда или сразу бегу к компу, или записываю на утро. Держу блокнот возле кровати ;)20:08
@jsunderhood requirejs уже не в моде?20:12
Думаю уже давно нет. Он очень медленный в разработке, а в продакшн приходится клеить строго одним файлом. @denysdovhan
20:12И Webpack, и Browserify (со специальными модулями) поддерживают разбивку на чанки. Насколько я знаю, RJS этого не умеет. @denysdovhan
20:13@jsunderhood у меня после бокса хорошо идёт решать проблемы, голова очищается. Если конечно в голову не словил пару раз на тренировке.20:14
@jsunderhood Webpack главным образом за hot-reload, огромное спасибо кстати :-),20:20
плюс с browserify всегда довесок gulp grunt etc
@jsunderhood кучу раз просыпался и искренне удивлялся отсутствию «ночных» коммитов в репозитории21:21
@jsunderhood @denysdovhan, ну, Webpack я пока не пробовал, он более комплексный, чем Brwsfy/RJS, имхо. A сравнение Brwsfy и RJS послушал бы)21:38
@lancedikson @jsunderhood @denysdovhan rjs очень медленный на больших проектах. Нельзя задать кастомный лоадер для js. И это только вершина.21:48
@jsunderhood @lancedikson @denysdovhan сейчас в проекте имеем 140000 значимого кода и ветка с webpack выглядит спасением21:53
@jsunderhood да, однажды во сне приснились строчки моего кода где был баг, который искал неделю.22:29
# Суббота 95 твитов
.@Krivlenia @jsunderhood @denysdovhan читаю про Webpack. Первый вопрос: почему они хотят CSS через JS грузить? webpack.github.io/docs/tutorials…10:58
@lancedikson @jsunderhood @denysdovhan Если ты о том,что делается require('*.css'). То это удобно,ты явно видишь зависимости твоего модуля.10:58
Ты можешь выделять CSS в отдельный файл плагином на этапе компиляции: webpack.github.io/docs/styleshee… @lancedikson @Krivlenia @denysdovhan
11:01Вовсе необязательно *грузить* CSS через JS. Речь о том, чтобы *описывать* зависимости одним языком. @lancedikson @Krivlenia @denysdovhan
11:02Как именно грузится — <style> или выделенным CSS файлом — оптимизация, и может меняться в dev/prod. @lancedikson @Krivlenia @denysdovhan
11:03К примеру, <style> удобнее во время разработки, потому что работает hot reloading для CSS из коробки. @lancedikson @Krivlenia @denysdovhan
11:04@jsunderhood, а как это дальше попадает в DOM? Тоже через JS? А если у тебя min+rev на images? Есть ли manifest? @Krivlenia @denysdovhan11:18
Webpack подразумевает, что всё это делается через него. Там есть встроенная поддержка хешей и тп. @lancedikson @Krivlenia @denysdovhan
11:18Например, вот результат компиляции. В исходном коде имена нормальные. @lancedikson @Krivlenia @denysdovhan pic.twitter.com/xvcSxyCGBu
11:21Всё это полностью настраиваемо. На каждом этапе можно добавить любые дополнительные трансформации. @lancedikson @Krivlenia @denysdovhan
11:21По сути, ты можешь описать любые зависимости. Вебпак не имеет каких-то особых знаний о CSS/картинках @lancedikson @Krivlenia @denysdovhan
11:22Просто есть несколько официально поддерживаемых плагинов для css/files. Вместо них можно свои юзать. @lancedikson @Krivlenia @denysdovhan
11:23@jsunderhood Вопрос по реакту и флаксу. Могут ли компоненты, типа попапов, хранить в себе стейт, или же его тоже лучше выносить в сторы?11:24
Мой rule of thumb простой. Если стейт нигде в аппе больше не понадобится — локально. Если может понадобиться, стор. @YevhenBoyarsky
11:25Вот плагин, который превращает require('xyz') в относительный URL результата @lancedikson @Krivlenia @denysdovhan pic.twitter.com/0TZSwh0WUy
11:28@jsunderhood @YevhenBoyarsky а как в этом случае hot reload отрабатывает? Убивает локальный стейт?11:32
React Hot Loader не убивает локальный стейт компонентов. В этом его фишка. ) Он делает это, проксируя все методы @esergeev @YevhenBoyarsky
11:32@jsunderhood насколько я знаю у тебя как минимум 2 крупных опенсорс проекта (redux, dnd). Как распределяешь свое время между ними?11:35
Еще React Hot Loader. :-) Перемещаю фокус. DnD 1.0 выпущен, я занялся Redux. После конференции выпущу Redux — пересмотрю приоритеты @drzhbe
11:36Заниматься несколькими вещами у меня никогда не получалось. Надо доводить проекты, чтобы они какое-то время могли жить без меня. @drzhbe
11:37@jsunderhood используешь что-нибудь для генерации и валидации форм в React?11:52
Лично я нет, но вопрос интересный, потому что какой-то одной лидирующей либы я не знаю. Подписчики? @limpbrains
11:53В целом, даже если не в сторы, всё равно стейт лучше выносить наверх: medium.com/@dan_abramov/s…
11:54@dmitruksergey @jsunderhood если в умном компоненте несколько попапов, то каждый должен хранить состояние в сторе?12:21
Хороший вопрос. Либо стол знает о разных попапах, и у них есть какие-то ID для разделения состояния. @YevhenBoyarsky @dmitruksergey
12:21Либо ты можешь использовать Redux, в котором это решается композицией редюсеров. gist.github.com/gaearon/d77ca8… @YevhenBoyarsky @dmitruksergey
12:22@jsunderhood @esergeev @YevhenBoyarsky Дэн, а насколько твоя реализация хот лоадера зависит от реакта? Реально ли использовать для knockout?12:44
Webpack предоставляет API, который можно использовать для любой библиотеки. @milk_is_my_life @esergeev @YevhenBoyarsky
12:45Другое дело — насколько Knockout декларативный? Можно ли просто «заменить» функцию render? @milk_is_my_life @esergeev @YevhenBoyarsky
12:45React Hot Loader работает, потому что render() не имеет сайт эффектов, и можно заменить на ходу @milk_is_my_life @esergeev @YevhenBoyarsky
12:46@jsunderhood @limpbrains Недавно исследовал эту тему это github.com/gcanti/tcomb-f… выглядит как единственное что-то еще живое. Но не играл еще12:46
@andreypopp привет! Не хочешь провести неделю @jsunderhood? Было бы чертовски круто!13:04
Мой любимый блог по программированию: prog21.dadgum.com. А ваш?
14:00@jsunderhood Этот github.com/sebmarkbage?ta… каждый раз когда я чувствую что я крут, читаю его комментарии. Крутизна слетает мгновенно.15:10
@jsunderhood Я обожаю @2ality за подробности и технические детали.15:10
Мой второй любимый блог по программированию: johndcook.com/blog/
15:30@jsunderhood твиттер заполняет всю информационную нишу. Чем пользуешься для агрегации блогов?19:22
Раньше Google Docs, сейчас ничем. Просто захожу раз в месяц на те, которые помню. @mbektimirov
19:22@jsunderhood codewars.com - хорошее обучение на практике :)19:22
@jsunderhood Твиттер основной источник + подписки на недельный забугорный дайджест + Хабр чисто для интереса19:32
@jsunderhood да, он милый. Я когда Underhood вел, кидал вот это: steve-yegge.blogspot.com и sites.google.com/site/steveyegg…19:37
@jsunderhood как относишься к github.com/feross/standard ? Меня он немного пугает. Karma на него перевели недавно, напрмер, я очень опечален19:54
Лично я не впечатлен. Использую гораздо более «стандартный» Airbnb-стиль. @silentroach
19:55@silentroach ничего, наши в теме: github.com/Flet/semistand… Я им много месяцев пользуюсь, он ближе к AirBnB, в том числе @jsunderhood19:56
По правде я не вижу смысла в отдельных стайл чекерах, если есть ESLint, и он поддерживает extend-ы конфигов. @listochkin @silentroach
19:56Например меня пару дней назад научили такой мудрости, это всё, что мне нужно. @listochkin @silentroach pic.twitter.com/N1OJY8FBTy
19:57@jsunderhood я зашел к тебе на github.com/gaearon/redux а у тебя там всего 2 баджа. А должно быть ну хотя бы 5, а лучше 15 :) @silentroach20:05
Через полчаса я превращусь в тыкву. Что-нибудь, о чем хотите спросить напоследок?
20:23Хаха. Я уже счет дням недели потерял. Всё из-за конференции этой. ) @iamstarkov
20:24@jsunderhood сегодня только суббота20:24
@jsunderhood почему flux (и аналоги, в том числе твой) такой сложный и расплывчатый? И ни в одном нет примеров с простейшим ajax.20:44
Есть пример с AJAX и Redux: github.com/emmenko/redux-…. Ссылка из README есть. Официальный пример будет позже. @silentroach
20:45Я сейчас усиленно готовлюсь к конференции React Europe, где я покажу, зачем в принципе я делал Redux. @silentroach
20:46Поэтому сейчас он не такой документированный, как мне хотелось бы. Я займусь этим после конфы обязательно. @silentroach
20:46По поводу общего вопроса — поясни, что ты называешь расплывчатостью. Твой вопрос тоже расплывчатый. ) @silentroach
20:47В целом про «о чем Flux» я написал вот эту статью: medium.com/@dan_abramov/t… @silentroach
20:48В целом, для каждого уважающего себя Flux-фреймворка есть пример с AJAX. Просто они обычно в отдельных репах. @silentroach
20:48Согласен, не хватает «лучших практик». В Redux я стараюсь ограничить то, что можно сделать, чтобы таких вопросов было меньше. @silentroach
20:49Вы программируете под музыку? Под какую?
20:56Про себя — в последнее время кручу по кругу по очереди To Pimp a Butterly (Kendrick Lamar) и Born to Die (Lana Del Rey :-)
20:58@jsunderhood конечно. Dead Kennedys, ZZ Top, the rumjacks, judas priest, Beethoven!21:00
@jsunderhood последний месяц только под это, рекомендую soundcloud.com/podval-capella…21:01
Еще меня вот этот микс очень завораживает. soundcloud.com/taras3000/the-…
21:01@jsunderhood Rammstein, мотивирует :)21:06
@jsunderhood есть хороший сервис — mixcloud. Выбираешь тег-жанр и слушаешь миксы по часу и больше21:13
Программирование и вещества. Совместимо? Скучно?
21:15@jsunderhood виски иногда21:15
@jsunderhood Отлично программируется, когда чуть-чуть пьяный. Самую малость.21:17
@jsunderhood как-то писал код пьяным, дома. Утром пришлось всё переписать) если покурить, совсем не хочется писать код21:17
Мне тоже не хочется. А вот подумать про абстракции иногда тянет. Связи и паттерны захватывают @kuksikus
21:20@jsunderhood В добавление к музыке: не могу работать под музыку со словами, особенно если люблю и знаю слова. Сижу и вместо кода подпеваю.21:21
Пока не знаю слова, меня они отвлекают. Когда я их помню, я на автомате напеваю, и они не «занимают» словесный процессор мозга @suxxes
21:22@kuksikus @jsunderhood write drunk, edit sober. Ernest Hemingway pic.twitter.com/bfkFKTkRE321:27
@jsunderhood судьбоносный вопрос: StarTrek смотрел? Кирк или Пиккар? DS9 - торт или говно? Захари Кину - новая надежда или все пропало?21:31
Хаха. Я пока не смотрел толком. Чуть-чуть начинал только. @listochkin
21:31@jsunderhood кофеин, совместимо)21:34
Десктопная картинка тред. pic.twitter.com/KhbCy39TdH
21:34@kuksikus @jsunderhood @justusebrain @SilentImp какой прекрасный субботний вещества-тред21:57
Есть еще интересный лайфхак на эту тему, который мне показал друг. Сейчас расскажу. @justusebrain @iamstarkov @SilentImp @kuksikus
22:03@iamstarkov @kuksikus @SilentImp @jsunderhood ну если MDMA, то митинг растянется на весь день и будет самым успешным в истории компании.22:03
Так вот. Берете приложение vk.com/app2462. Запускаете во вкладках три радиостанции. @iamstarkov @justusebrain @SilentImp @kuksikus
22:10Станции такие: Relax > Nature Sounds, Разное > Детское радио и Электроника > Cliqhop IDM. @iamstarkov @justusebrain @SilentImp @kuksikus
22:11Настраиваете уровни громкости, затягиваетесь и наслаждаетесь. @iamstarkov @justusebrain @SilentImp @kuksikus
22:11Я думаю если свести их и записать, это будет самая модная пластинка @iamstarkov @justusebrain @SilentImp @kuksikus
22:14Думаю его тоже туда можно подмешать.. @SilentImp @iamstarkov @justusebrain @kuksikus
22:16Ме нравится. В духе vimeo.com/88035957 @iamstarkov
22:24@jsunderhood бтв, новую айдентику мтв тоже как будто под веществами делали22:26
creativereview.co.uk/cr-blog/2015/j… pic.twitter.com/KXCSXVVKZ0
@jsunderhood как тебе второй Angular?22:29
Пока не смотрел. По блогам нравится, что есть возможность делать top down data flow и immutable модели. @mbarinov
22:29@jsunderhood Run the Jewels — отличнейший рэп. Лана была прошлым летом :)23:08
@jsunderhood А есть еще разрабы с кератоконусом? Как выживают?23:09
Как не надо писать комментарии на Github: github.com/gaearon/react-…
23:20# Воскресенье 17 твитов
@jsunderhood воскресный вопрос, какие хобби у программистов? Мне кажется что почти все либо музыканты, либо фотографы)10:27
@jsunderhood а кто в очках?10:28
Курт Гёдель, доказавший, что если формальная система достаточно выразительна для арифметики, её консистентность не доказать изнутри @denswor
10:29@soundinyourmind @jsunderhood у меня бег и силовые.10:30
Репетирую доклад. Выходит 50 минут. Надо 25. Как вы выбираете, что выкинуть?
10:37Например, понятно, что демо выигрывает у просто слайдов. Но бросаться из одного демо в другое — может быть недостаточно понятно.
10:38@soundinyourmind @jsunderhood пет-проекты, книги и игры.10:53
@soundinyourmind @jsunderhood кино, лонгборд и бас-гитара :)11:02
@soundinyourmind комиксы, стройка, бег @jsunderhood15:46
@jsunderhood Оставляю то, что складывается в историю. У каждой истории есть главная линия, а также есть ответвления. Руби ветки.15:46
@jsunderhood расскажи о своем пути обучения английскому? может какие-нибудь лайфхаки/советы/сервисы/методики?15:47
@soundinyourmind @jsunderhood практическая стрельба, книги, бег.15:47
@soundinyourmind @jsunderhood банальные книги/музыка/игры, бокс, стрельба, пет-проекты15:47
@_cloudo @jsunderhood курсера, сериалы, skyeng15:56
Прощаюсь с вами, спасибо всем за отличную неделю! Скоро в Париж на React Europe, буду вас вспоминать )
21:44Мой основной аккаунт @dan_abramov, в основном англоязычный, но я отвечаю по-русски, если спросите по-русски. Следите за апдейтами! <3
21:46# Ссылки
github.com
- https://github.com/enaqx/awesome-react
- https://github.com/gaearon/redux
- https://github.com/edjafarov/PromisePipe
- https://github.com/rambler-digital-solutions/superagent-mocker
- https://github.com/idmitriev/eslint-plugin-better
- https://github.com/wtfil/song-looper
- https://github.com/andrepolischuk/numd
- https://github.com/dmaslov/github-gist
- https://github.com/sudodoki/copy-button
- https://github.com/nodeschool/nodeschool.github.io/issues/145
- https://github.com/aliaksandr-pasynkau/grunto
- https://github.com/petehunt/jsxstyle
- https://github.com/css-modules/css-modules
- https://github.com/MicheleBertoli/css-in-js
- https://github.com/markdalgleish/postcss-local-scope-example
- https://github.com/webpack/extract-text-webpack-plugin
- https://github.com/petehunt/webpack-howto
- https://github.com/gaearon/redux/issues/171
- http://github.com/gaearon/redux
- https://github.com/evancz/elm-architecture-tutorial#the-basic-pattern
- https://github.com/gaearon/redux/blob/master/ROADMAP.md
- https://github.com/alexeyraspopov/flux-stateful#immutable-pure-stores
- https://github.com/gaearon/redux/issues/113#issuecomment-114049804
- https://github.com/gaearon/redux/issues/99
- https://github.com/gaearon/redux/blob/master/test/composeStores.spec.js
- https://github.com/gaearon/redux/blob/master/src/utils/composeStores.js
- https://github.com/share/sharejs
- https://github.com/evancz/elm-architecture-tutorial/
- https://github.com/slamdata/purescript-halogen
- https://github.com/rackt/react-router/blob/master/examples/async-data/app.js
- https://github.com/gaearon/redux/pull/140#issuecomment-114756152
- https://github.com/webpack/css-loader/commit/a78e007e206439348bf04d4c0ffd7b0324c75d26
- https://github.com/milankinen/livereactload
- https://github.com/mjohnston/react-native-webpack-server
- https://github.com/facebook/react/issues/3226
- https://github.com/facebook/react/issues/3228
- https://github.com/talgautb/frontender
- https://github.com/AveVlad/russia-it-podcast
- https://github.com/gaearon/redux/issues/99#issuecomment-112212639
- https://github.com/gulpjs/gulp/blob/master/docs/recipes/fast-browserify-builds-with-watchify.md
- https://github.com/webpack/style-loader/blob/2823eb4a5e6eb6594a98fe0ea34454b7f7ffca7d/index.js#L21-L32
- https://github.com/npm/npm/releases/tag/v3.0.0
- https://github.com/gaearon/react-hot-api/pull/17/files
- https://github.com/gcanti/tcomb-form
- https://github.com/webpack/file-loader#filename-templates
- https://github.com/sebmarkbage?tab=activity
- https://github.com/feross/standard
- https://github.com/Flet/semistandard
- http://github.com/emmenko/redux-react-router-async-example
- https://github.com/gaearon/react-dnd/issues/200
medium.com
- https://medium.com/seek-ui-engineering/the-end-of-global-css-90d2a4a06284
- https://medium.com/seek-ui-engineering/block-element-modifying-your-javascript-components-d7f99fcab52b
- https://medium.com/@dan_abramov/my-react-list-862227952a8c
- https://medium.com/@Shapiro/stripe-san-francisco-and-velocity-js-37575e29a51b
- https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0
- https://medium.com/@dan_abramov/the-case-for-flux-379b7d1982c6
webpack.github.io
- http://webpack.github.io/docs/hot-module-replacement-with-webpack.html
- http://webpack.github.io/docs/hot-module-replacement.html
- http://webpack.github.io/docs/code-splitting.html
- http://webpack.github.io/docs/tutorials/getting-started/#first-loader
- http://webpack.github.io/docs/stylesheets.html#separate-css-bundle
other
- http://www.reactiflux.com/
- http://jlongster.com/Removing-User-Interface-Complexity,-or-Why-React-is-Awesome
- http://jlongster.com/Modularity
- http://jlongster.com/Backend-Apps-with-Webpack--Part-III
- http://www.youtube.com/watch?v=4anAwXYqLG8
- http://www.youtube.com/watch?v=Agu6jipKfYw
- http://www.youtube.com/watch?v=j-kj2qwJa_E
- https://facebook.github.io/react/docs/test-utils.html#shallow-rendering
- http://frontendbabel.info/
- http://molefrog.com/rye/
- http://molefrog.com/rye/demo/galois/
- http://blog.confluent.io/2015/03/04/turning-the-database-inside-out-with-apache-samza/
- http://blog.testdouble.com/posts/2014-12-02-the-social-coding-contract.html
- http://tonsky.livejournal.com/284511.html
- https://www.npmjs.com/package/article-data
- https://youtu.be/DspYurD75Ns?t=39m
- https://speakerdeck.com/vjeux/react-css-in-js
- https://christianalfoni.github.io/react-webpack-cookbook/
- http://survivejs.com/webpack_react/
- http://gbracha.blogspot.cz/2014/09/a-domain-of-shadows.html?m=1
- http://gsd.di.uminho.pt/members/cbm/ps/crdtOpsMiddleware.pdf
- https://goo.gl/1kUAf0
- http://goo.gl/er5j6y
- http://goo.gl/A9CiGa
- http://alexeyraspopov.github.io/talks/what-the-flux/
- https://gist.github.com/gaearon/d77ca812015c0356654f
- https://gist.github.com/substack/68f8d502be42d5cd4942
- https://gist.github.com/substack/68f8d502be42d5cd4942#comment-1364980
- https://gist.github.com/substack/68f8d502be42d5cd4942#comment-1365101
- https://vimeo.com/88035957
- http://vimeo.com/100010922
- http://nuclide.io/
- http://www.mann-ivanov-ferber.ru/promo/presentation/
- http://amokjs.com/
- http://reactpodcast.com/2015/06/webpack-vs-browserify/
- https://hacks.mozilla.org/2014/05/open-source-marketing-with-velocityjs/
- https://css-tricks.com/the-debate-around-do-we-even-need-css-anymore/
- https://code.google.com/p/chromium/issues/detail?id=492902
- http://prog21.dadgum.com/
- http://www.johndcook.com/blog/
- http://www.codewars.com/
- http://steve-yegge.blogspot.com/
- https://sites.google.com/site/steveyegge2/blog-rants
- https://soundcloud.com/podval-capella/sets/main
- https://soundcloud.com/taras3000/the-sailing-away
- https://vk.com/app2462
- http://www.creativereview.co.uk/cr-blog/2015/june/mtv