roman01la

11 апреля 2016, Chernihiv

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

Всем привет! На этой неделе вас буду развлекать я, Рома Лютиков @roman01la 🙂 pic.twitter.com/vzdyYHUMnW

10:29

Я JavaScript разработчик из Чернигова. Это где-то на севере Украины.

10:32

Сейчас работаю в испанской компании @redradix

10:33

У нас полный стек на JS, небольшие проекты. В основном стартапы. Сейчас, как и все, болеем реактом.

10:35
@jsunderhood @roman01la круто. В прошлый раз было отлично. pic.twitter.com/l4eixoqgA1
10:36

Кстати да. Я уже вёл этот аккаунт год назад. Так что можно сделать ретроспективу изменений в жизни разработчика за один год.

10:37

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

10:41

Сейчас только добавился React Native. На рынке заметно возросла его доля, особенно среди стартапов.

10:44

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

10:45

Боль потому, что RN очень сырой. Работающие с ним могут прокомментировать, буду ретвитить.

10:48
@jsunderhood можно поподробнее о боли?)

Дайте человеку боли :)

@jsunderhood можно поподробнее о боли?)

10:48

На самом деле я попросился сюда во второй раз, чтобы сделать текстовую трансляцию с @ReactAmsterdam Лайнап на конфе довольно интересный.

10:51

Конференция будет проходить в эту субботу, постараюсь писать о самых интересных докладах.

10:52

Если не ошибаюсь, соорганизоторы конфы @operatino и @PixelsCommander Это был локальный митап, который перерос в полноценную конференцию

10:57
@jsunderhood @jeetiss пусть попробует React Native, Ionic, NativeScript или ещё какой бред.
10:58

У нас, в Чернигове, мы делаем свой небольшой митап @chernihivjs Вначале я был настроен пессимистически, но сейчас все более или менее хорошо

11:01
@jsunderhood RN, NativeScript, Ionic — это неиссякаемый источник отмазок:
— Почему %проблема%?
— Ну а что вы хотели, это ж RN/NS/Ionic
11:02

Если хотите сделать митап в своём городе, но думаете, что затея напрасная, все равно делайте!

11:05

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

11:08
@jsunderhood livescript, та ещё боль
11:08
@jsunderhood Есть проблемы с тем как и зачем ставить нативные модули, но когда это работает это просто охуенно.
11:09
@jsunderhood Можно сколько угодно говорить про сырость, но это настолько лучше нативной разработки, что я готов жрать эту сырость лопатой.
11:09
@twenty @jsunderhood а какие проблемы с ionic?
11:09
@jsunderhood можешь сделать выжимку того, что стало осознаннее и лучше?
11:10

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

11:13

.@23ydobemos договорились о шаблонах в процессах разработки и создали инструменты для более эффективной работы

11:15

.@23ydobemos в общем поставили все это дело на конвейер:)

11:16

.@freiksenet_ru А не хватает ли какого-нибудь Xcode, который даёт UI инструменты?

11:19
@freiksenet_ru @jsunderhood вы что-то имеете против нейтив?

Расскажите нам о преимуществах нативной разработки перед тем же React Native. Правда интересно.

@freiksenet_ru @jsunderhood вы что-то имеете против нейтив?

11:21
@jsunderhood вы щас угорели что ли?
11:25

.@twenty Нет :)

11:26
@jsunderhood @freiksenet_ru чуть в сторону по дизайну нестандартному, анимации, буст по производительности в виде того же Sql оптимизации
11:27

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

11:30

.@twenty Во всяком случае я за здоровую критику :)

11:31
@jsunderhood я подозреваю, что за RN ратуют те, кто нативной разработки не знает. @twenty
11:31
@twenty @jsunderhood я думаю что у ionic сейчас есть своя небольшая ниша, где "тормоза" компенсируются скоростью разработки и тем что 1/2
11:32
@twenty @jsunderhood 2/2 не надо держать/нанимать отдельную команду.
11:32
@jsunderhood а кто умеет программировать под iOS/Android, для того все эти RN/Ionic - это большой шаг назад по тулам и возможностям @twenty
11:32
@jsunderhood у существующих RN компонентов недостаточно широкие возможности/баги => пишешь свои, а чем тогда react?
11:33

Пока здесь решается вопрос нужен ли RN, я отойду. Потом ретвиту самое интересное :)

11:37
@jsunderhood несколько дней назад в чате обсуждали gitter.im/razbor-poletov… в контексте клиента для @gitchat на RN github.com/terrysahaidak/…
12:11
@jsunderhood как iOS разработчик с 5 летним стажем скажу что В RN не хватает профилирования и вообще системной поддержки. Но я верю что 1/2
12:12
@jsunderhood 2/2 что следующее поколение системных фреймворков будет построено на похожей парадигме. Слишком очевидны преимущества React
12:12
@jsunderhood Это не особо причем. Главное моментальный релоад, нормальный язык разработке и декларативный API.
12:12
@jsunderhood не ошибаешься, но помимо нас ещё в организации участвует @MLarchanka и пара других ребят
12:17
@blia @listochkin @jsunderhood @twenty зато лайв релоад, мгновенные релизы, и shared codebase между платформами
12:21
@operatino @blia @listochkin @jsunderhood и это всё — миф для легковерных фронтендеров
12:21
@jsunderhood @operatino Верно, это был AMS React митап который хостит @Sander_Spies уже полтора года. У конфы была хорошая база для старта.
12:22
@jsunderhood @freiksenet_ru мне норм, HMR здорово перекрывает такую необходимость
12:25

.@pomidore @freiksenet_ru но как же всякие сториборды в Xcode и библиотеки компонентов?

12:26

Я правильно понимаю, что в React Native так же, как и в вебе: используют или Flux или Redux или Relay?

12:28
@twenty @operatino @blia @listochkin @jsunderhood Я тоже придерживаюсь мнения - нейтив лучше, но есть барьер и многие его не переступают
12:29

.@pomidore @freiksenet_ru а представь как бы повысилась твоя эффективность, если бы были таки инструменты для веба? :)

12:31
@jsunderhood С Relay это вообще волшебная конфетка, а не фреймворк :)
12:40

.@freiksenet_ru мне предстоит RN + Relay, через год проведу снова неделю здесь и отчитаюсь :)

12:41

Самый распространённый вопрос о Relay: где хранить состояние UI, которое никогда не отправляется на сервер? Например состояние комбобоксов.

12:44

Relay — это ведь только об управлении данными, которые ходят между клиентом и сервером.

12:45
@jsunderhood Либо client-side схема через network layer, либо добавить Redux. В будущем будет нативно, через client-side схему, видимо.
12:46

.@freiksenet_ru видимо это два самых распространённых решения :) Расскажи про схему. О Redux и так все знают.

12:47
@jsunderhood @freiksenet_ru когда тебе надо ждать по две минуты компиляции, ты должен быть уверен, что кнопка стоит правильно
12:48

.@pomidore @freiksenet_ru Верно. Но когда у тебя есть интерфейс для позиционирования этой кнопки, ты уже видишь где она будет размещена.

12:49

.@pomidore @freiksenet_ru Я не против хот релоада, это хорошо и он нужен.

12:51
@jsunderhood Я сам не пробовал так делать, вот блог пост про это. hueypetersen.com/posts/2015/12/…
12:51

Альтернативой Relay может быть реализация в Om.next. Вот здесь её портируют на JS github.com/threepointone/…

13:04

.@RReverser @pomidore @freiksenet_ru Я не делал UI в Xcode, но по словам знакомого, там для адаптивности очень крутые инструменты.

13:05
@glitterOfHyad @blia @listochkin @jsunderhood @twenty А с чего ты взял что перформанс простых прилож страдает с нативным UI из React Native?
13:08
@operatino @blia @listochkin @jsunderhood @twenty Я исключительно под нестандартный UI, коим любят баловаться дизайнеры для ios приложений.
13:08
@DevArtem @twenty @blia @listochkin @jsunderhood нейтив лучше для качетве одного конкретного приложения, а не для бизнеса и продукта
13:08

.@operatino @glitterOfHyad @blia @listochkin @twenty Жаловались на тормоза, когда в JS потоке идёт работа с большим количеством данных.

13:11

.@operatino @glitterOfHyad @blia @listochkin @twenty Особенно на Android.

13:11

.@operatino @glitterOfHyad @blia @listochkin @twenty Для оптимизации нужно разбивать обработку на куски, выполнять в next tick.

13:20
@jsunderhood @RReverser @pomidore @freiksenet_ru последний xCode делает лайв-рендеринг для любого девайса и пересобирать ничего не надо
13:20
@jsunderhood @operatino @glitterOfHyad @blia @listochkin @twenty Никто же не говорит что нет проблем. Мы говорим что это будущее.
13:21
@freiksenet_ru @jsunderhood @operatino @blia @listochkin @twenty Ребят, это холивар, закрывайте уже тему.
13:21

Закрыли 😅

13:21
@jsunderhood В то время как Xamarin стал бесплатен, я думаю RN особо не актуален ибо можно писать на F#. По поводу рантайма - он минимален
13:39
@jsunderhood Кто любит Swift также можно уже делать кроссплатформенно elementscompiler.com/elements/silve… (не мне тебе говорить о js ;))
13:39

К предыдущим ретвитам: кто-нибудь пишет/играется с языками компилируемыми в JavaScript?

13:41

BabelScript не считается 😎

13:42
@jsunderhood elm/purescript
13:42
@jsunderhood Да, с Яваскриптом.

:) И суперсеты типа TypeScript тоже отбросим.

@jsunderhood Да, с Яваскриптом.

13:43

На самом деле это тема на завтра, но можно немного начать уже сегодня.

13:46
@jsunderhood Ща заинтересовала комбинаторная логика - основа всего исчисления, довольно интересно тут youtube.com/watch?v=O_rcdi…
13:46
@jsunderhood золотые слова! Именно так и появился @kurskmeetup - ежедвухнедельный IT митап в Курске
13:46
@jsunderhood Вопрос зачем.
13:47

.@freiksenet_ru Хороший вопрос. Наверное когда JS так надоел, что хочется другой язык, пока он тоже не надоест.

13:49

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

13:55
@jsunderhood scala-js няшка
13:55
@jsunderhood elm, но interop какой-то фуфуфу
хочется elm, реализованный поверх ts, с gradual typing
13:56
@jsunderhood @freiksenet_ru приходишь такой к начальству "чет js надоел, давайте писать на %newlangname%", а они тебе "конечно давай!"
13:56
@jsunderhood @freiksenet_ru (на самом деле нет)
13:56
@jsunderhood играюсь с Elm. Очень круто, но в прод пока опасаюсь тащить.
13:56
@jsunderhood а не было желания перейти в другую область? В мобилки те же?
13:57

.@_sashashakun было желание перейти в область затяжного трекинга, но к коду все равно тянет :)

13:59
@_sashashakun @jsunderhood @freiksenet_ru я рискую вбросить, но вакансии на cljs примерно так и появляются
и это неплохо на самом деле
14:00
@_sashashakun @jsunderhood Со мной вот это и случилось, не могу после Objective-C/Swift смотреть на JS.
14:01
@jsunderhood мы как раз в @frontflip_js пытаемся найти тех, кто готов про elm/typescript рассказать. Поможешь? frontflip.me/possible_theme…
14:17
@jsunderhood Это хороший повод. Я лично уже наигрался, я писал за деньги на Common Lisp и Clojure и развлекался Haskell и Agda.
14:18

.@freiksenet_ru И в итоге вернулся к JS, почему?

14:20
@jsunderhood Я не вернулся, а пришёл к нему. На нем (с реактом) кайфовее всего писать приложения и тут самое лучшее комьюнити.
15:33
@freiksenet_ru @jsunderhood ну, кложа/кложурскрипт очень много полезного дала в свое время + мозги прокачала
15:38
@freiksenet_ru @jsunderhood чего не могу сказать о джаваскрипте
15:38

Вброс: Redux простой, но Redux + React много сложнее для понимания, чем Flux + React.

15:42

Такой вывод сделал по количеству затраченного времени на объяснение того и другого.

15:43

Комментарии в стиле «просто ты тупой и все остальные тоже» не принимаются.

15:44

Особенно сложно даётся понимание мидлваров.

15:50
@jsunderhood потому что редакс в контексте реакта пестрит своими абстракциями. В результате оба поднимают порог.
15:50

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

15:54

Диспетчер нужен для того, что бы общаться с модулями, которые делают IO.

15:56
@jsunderhood Так а чего ругать-то, все так и есть на самом деле.
16:00

.@iamboyarskiy я бы выбросил диспетчер, но паб/саб очень простой для понимания

16:01
За столь короткое время (за сегодня), @roman01la превратил @jsunderhood в откровенную выгребную яму. 😒

[не умеешь - не бурись]

Всем не угодишь 🙃

За столь короткое время (за сегодня), @roman01la превратил @jsunderhood в откровенную выгребную яму. 😒

[не умеешь - не бурись]

16:22
@jsunderhood Flux тоже нифига не простой, я со второго раза только понял.
16:49
@jsunderhood Fun fact, наш CEO когда-то написал практически Redux в нашей местной вариации флукса, тоже сторы возвращающие новое состояние.
16:49

.@freiksenet_ru Мы тоже в свое время посмотрели на Om и перетащили много идей из него. Все современные реализации очень похожи.

16:51
@jsunderhood сделать и попробовать свою систему управления состоянием в react после flux - это мастхэв опыт, который я бы даже спец. форсил.
16:59

На сегодня все. Нужно ещё подучить RN. Как бы там ни было, но JS в нейтиве — это клево :)

17:39

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

Всем привет! Этой ночью умер React Router medium.com/@taion/react-r… 😱

7:08
REACT ROUTER MAINTAINER DIDN'T REPLY FOR SIX DAYS. LET'S FORK

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

REACT ROUTER MAINTAINER DIDN'T REPLY FOR SIX DAYS. LET'S FORK

7:14

Я ночью начитался о RN и ничего нового для себя не открыл. Сейчас переписываю на JS todo list приложение, которое делал на ClojureScript.

7:24

Кстати, для RN с ClojureScript хот релоад был сразу :) youtube.com/watch?v=w9aE4D…

7:26

У меня практически сразу возник вопрос: какой роутер использовать? На GitHub их миллион. Он должен быть нативный и с удобным JS API.

7:28
@jsunderhood наоборот, наконец, интересная неделя. @roman01la уже второй год вдохновляет своим бешеным энтузиазмом и разносторонностью 🤓

Эт пока детей еще нету :D

@jsunderhood наоборот, наконец, интересная неделя. @roman01la уже второй год вдохновляет своим бешеным энтузиазмом и разносторонностью 🤓

7:30
@jsunderhood а я уже забюджетировал production проект на Elm!

Круто!

@jsunderhood а я уже забюджетировал production проект на Elm!

7:32

В RN очень круто работают анимации на react-motion github.com/chenglou/react…

8:01
@jsunderhood на cljs какого размера билд выходил?

Огромный. Для RN проект собирается с optimisations: simple

@jsunderhood на cljs какого размера билд выходил?

8:05

Если кому-нибудь интересно сделать RN приложение на ClojureScript, то вот здесь ресурс с полезными ссылками cljsrn.org

8:06

Я делал с помощью инструмента Re-Natal github.com/drapanjanas/re… На Reagent + re-frame

8:07

Говорят, что в iOS можно поднять SQLite на локальном сервере и общаться с базой через REST. Таким образом разгружается JS поток в RN.

8:26

Вот вам к утреннему кофе пост о том, как V8 оптимизирует JS medium.com/@ghaiklor/how-…

8:29

Здесь код приложения на ClojureScript github.com/roman01la/re-t… Скоро опубликую то же самое на JS.

8:34

У меня сейчас процесс погружения в React Native по работе, так что буду много о нем писать.

8:39

В Gitter чатике dev-ua/reactjs можно спрашивать об RN, там есть толковые ребята gitter.im/dev-ua/reactjs

8:40

Вы используете инструменты, которые повышают эффективность разработки с React? Какие?

8:48
@jsunderhood Генератор стайлгадов и верстак для разработки компонентов: github.com/sapegin/react-…

Вот только хотел упомянуть :)

@jsunderhood Генератор стайлгадов и верстак для разработки компонентов: github.com/sapegin/react-…

8:50
@jsunderhood джунов.
8:50

Мы используем CLI для генерирования компонентов из HTML roman01la.github.io/html-to-react-… Это очень экономит время на старте проекта.

8:53

В этом скринкасте показан процесс работы youtube.com/watch?v=Cd8cNL… На выходе готовое дерево компонентов, которое тут же можно отрендерить.

8:55
@jsunderhood можешь немножко попиарить мой гиттер?) может кто-то захочет поконтрибютить + посмотреть на немножко больше чем ту-ду на рн?

Кстати да! Этот парень делает очень крутое приложение на RN — нормальный чат для Gitter github.com/terrysahaidak/…

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

9:14
@jsunderhood недавно ещё написал немного medium.com/@ghaiklor/opti…
9:25

У вас есть проекты, которые вы сделали ради фана, а оказалось, что многие ими пользуются? Еще и ругают вас, что вы не поддерживаете их.

9:28

У меня так было с ботом переводчиком для Slack github.com/roman01la/slac… pic.twitter.com/ucKAF1xbPo

9:29
@jsunderhood Да все опенсорсные в общем-то.
9:29

Бывало прям на почту писали: «у тебя там не работает, быстро сделай, а то я не знаю англ. и из-за тебя потеряю клиента» :D

9:32
@jsunderhood svgo lol

Клевый инструмент для оптимизации SVG, btw github.com/svg/svgo

@jsunderhood svgo lol

9:35
@jsunderhood со всеми вопросами про GitterMobile можно еще в
gitter.im/terrysahaidak/… @c01nd01r
10:14

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

10:16

Имеется в виду нормально структурировать проект. Например модульный подход в ducks github.com/erikras/ducks-…

10:18

По ощущениям в cljs это делается много быстрее с re-frame и кода пишется меньше.

10:21
@jsunderhood это наверное критично только когда делаешь много мелких проектов, не?

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

@jsunderhood это наверное критично только когда делаешь много мелких проектов, не?

10:36

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

10:38
@jsunderhood хороший подход. использую давно и мне нравится. проще даже работать так, все на своих местах. и нет миллиона импортов
10:38
@jsunderhood хммм... значит cljs просто менее вербозный чем js. Я особо не чувствую боли от настройки new project на react+redux

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

@jsunderhood хммм... значит cljs просто менее вербозный чем js. Я особо не чувствую боли от настройки new project на react+redux

10:40

Мы для себя сделали базовое приложение, с которого всегда стартуем новые проекты github.com/redradix/redux…

10:41

Плюс к этому у нас есть так называемые «рецепты» — переиспользуемые реализации разных фич github.com/redradix/redux…

10:45

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

10:46
@jsunderhood я - да. Но я в каждом новом проекте стараюсь пробовать что-то новое. Основное - копирую руками
10:46

Очень хорошо выносятся Redux мидлвары с сервисами, которые они дергают. Например API или DB.

10:48

Если вам захочется в RN делать графику, то советую проект Ejecta. Вот бойлерплейт с Three.js github.com/gilbox/react-t…

10:54

Ejecta — это биндинг к OpenGL реализованный как Canvas 2D и WebGL API. То есть существующие JS библиотеку работают с этой штукой.

10:57

Я тут говорю о Redux и RN, а есть ведь те, кто только начинает знакомится с React. Отправлйте ссылки на учебный материал для новичков :)

11:02

Многим нравится запись воркшопа по React/Flux, который мы проводили в прошлом году. Как раз для новичков youtube.com/playlist?list=…

11:05

К нему прилагается репозиторий с кодом всех упражнений и практическим заданием github.com/roman01la/reac…

11:06

По поводу быстрого старта: генератор приложений на React Native strapmobile.com/customizer/

11:23

А кто тестирует вьюшки в React? Мы практически сразу отказались от этого. Тестируем только редьюсеры, экшены, мидлвары и сервисы.

11:37
@jsunderhood аккуратные propTypes и statless components. Без тестов.
11:40

.@RusAlexander а как же логика управления состоянием?

11:41
@jsunderhood Мы тоже сами компоненты не тестим, больше делаем функциональных тестов всего в целом. Но думаю попробовать тестить контейнеры.
11:41

Я еще не видел Selenium тесты в проектах на React. Есть такие?

11:42

Думаю в этом случае Selenium не нужен. Нет смысла тестировать то, как React обрабатывает DOM события. Это уже протестировано в нем.

11:46

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

11:47
@jsunderhood есть, но не у меня. Обычно характерно для проектов, где есть отдельная команда QA, покрывающая тестами UI на разных технологиях
11:54
@mistadikay с redux писать нужно больше, чем без redux. в процессе много телодвижений приходится делать в разных местах аппа. @jsunderhood
11:56
@jsunderhood мы пишем acceptance, без упорок (а-ля css классы трекать), но чтобы быть уверенными, что всё критичное на месте в браузере
12:24
@jsunderhood про много кода в разных местах React+Redux - соглашусь. Порой хочется взять какой-нибудь Ember с 20 слоями абстракции!
12:44
@jsunderhood Selenium по опыту не очень кул штука, очень уж медленный и хрупкий инструмент. ИМХО Shallow rendering в разы круче.
14:06
@jsunderhood В тему тестов: selenium тестирует всю систему, проверяют много чего, но тяжело определить что же конкретно сломалось.
14:06
@DevArtem @jsunderhood selenium всё ещё хорош для css regression, в том же реакте кроссбраузерно тестировать уже и нечего.
14:12
@jsunderhood к слову, есть karma-jsdom-launcher github.com/badeball/karma…, удобно оставаться в одном тех. стэке для разных тестов и окружений.
14:22

ура, портировал туду лист на JS версию в RN pic.twitter.com/3iZbZLGPMj

14:42

JS версия в ветке javascript, в том же репозитории где и оригинал на cljs github.com/roman01la/re-t…

14:48

По ощущениям процесс идет медленнее. Пишешь так же быстро, но больше. Надежда на Relay.

14:50

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

15:29

Для JS на нейтиве, RN наверное самая безболезненная платформа в плане старта проекта.

15:33

Мне например в Cordova так и не удалось нормально настроить окружение и тот же хот релоад.

15:34
@jsunderhood ionic ?

Я о нем только читал

@jsunderhood ionic ?

15:36

react-native-sqlite-storage — порт Cordova плагина SQLite3 под RN github.com/andpor/react-n…

15:45

Этот плагин полностью реализует API Cordova плагина, а для него у меня есть рецепт (сервис + мидлвар). Вот вам полное переиспользование.

16:02

Удалось поднять SQLite на нейтиве. В качестве query билдера заюзал Knex. Правда его пришлось собрать отдельно.

17:36

Потому, что Knex использует модули из ноды, которые полифилит browserify. В нейтиве этого нету.

17:37
@jsunderhood кстати да. у кого уже есть продакшн с relay + graphql: на чём он? как ощущения?
17:58

Babel мертв, все на Buble gitlab.com/Rich-Harris/bu…

18:28
@jsunderhood почему не realm? realm.io/docs/react-nat…

Потому, что я знаю, как работать с SQLite и он меня устраивает :)

@jsunderhood почему не realm? realm.io/docs/react-nat…

19:25

На сегодня все. Закругляюсь с RN, голова от него уже болит.

20:00

# Среда 83 твита

Всем привет. Сегодня немного поговорим о языках компилируемых в JS.

9:49

Меня в данный момент интересует ClojureScript. Но обсуждать можем любой другой.

9:52

У кого-нибудь есть опыт работы с такими языками? Как ощущения? Потом вернулись в JS или нет?

9:53

У всех них есть общая проблема: небольшая доля на рынке.

9:59

Разработчики очень туго переходят с мейнстримных языков на что-нибудь менее распространённое.

9:59

Наверное потому, что часто думают так: «Я всю жизнь пилил на JS, я здесь крут. Перейду на Elm и буду никем. Нафиг надо.»

10:02

Как будто бы весь ваш опыт разработки улетучивается :)

10:03
@jsunderhood Есть очень плохой опыт работы с коффескриптом. Never again, это самое говно которое только может быть.
10:03
@jsunderhood это наоборот круто. Пробуешь новые языки — перенимаешь хорошие концепции в свой основной — становишься лучше как программист.
10:05

Во-во. Много подходов к разработке SPA перетащили в JS из мира ClojureScript. Например глобальное состояние и курсоры.

10:08
@jsunderhood имхо основная причина "ваш Х никому не нужен. Тут на мегапопулярном Y хрен норм проект найдёшь, а там ваще будешь на сухарях"

100500% это нормально

@jsunderhood имхо основная причина "ваш Х никому не нужен. Тут на мегапопулярном Y хрен норм проект найдёшь, а там ваще будешь на сухарях"

10:10
Chrome Canary gets 99% ES6 support. It fails only on `no assignments allowed in for-in head` compat-table test. GJ pic.twitter.com/auXu7WvdHT

TCO уже сделали?

Chrome Canary gets 99% ES6 support. It fails only on `no assignments allowed in for-in head` compat-table test. GJ pic.twitter.com/auXu7WvdHT

10:14
@jsunderhood Пробовал кофе, очень понравилось, но практически не развивается. Очень верю в TypeScript, хотим использовать в новом проекте
10:15

Длинный список всевозможных диалектов и языков компилируемых в JS github.com/jashkenas/coff…

10:15
@jsunderhood ага, еще пример — Redux был написан под вдохновением от архитектуры Elm.
10:22

Elm сейчас довольно популярен. Можно судить хотя бы по количеству статей на Medium.

10:33

Он подкупает крутым компилятором elm-lang.org/blog/compiler-… pic.twitter.com/aQ7SmizWuy

10:36

Если вы за статическую типизацию, то вам стоит попробовать Elm.

10:39
@jsunderhood Я не вижу повода, у языка нет бенефитов особенных, бенефиты идут от комьюнити, опыта и тд.
10:40
@jsunderhood а лучше scala.js или ghcjs! Они хотя бы пригодятся вне веба!
10:44
@jsunderhood Это миф что типизацию что-то реально дает. Нужны хорошие программисты, у них будет хороший код на том что они хорошо пишут.
10:50
@jsunderhood В JS сейчас есть достойный статический анализ через eslint. Приходит Flow дающий постепенную типизацию. Надо это юзать.
10:50
@jsunderhood а у кого-нибудь есть опыт с purescript? говорят, что из haskell like он круче чем elm, но я сам не пробовал.
10:50

Интересно, что все популярные компилируемые языки (Elm, Kotlin, ClojureScript и т.д.) — это функциональщина. Как мы до такого докатились?

11:13
@jsunderhood WOK, JAVASCRIPT ТОЖЕ ФУНКЦИОНАЛЬЩИНА

map/filter/reduce это конечно круто, но JS скорее просто не ограничивает тебя писать так, как ты хочешь

@jsunderhood WOK, JAVASCRIPT ТОЖЕ ФУНКЦИОНАЛЬЩИНА

11:19
@jsunderhood просто всем надоели циклы
11:19

Самое популярное решение в мире ООП — это GWT gwtproject.org

11:22

Точнее в мире Java. Страшная штука, но видимо в своё время в ней был смысл.

11:23
Я хочу написать блог пост(ы) про Relay, рассказать чем он крут и как на нем делать разные вещи. Чтобы вы хотели чтобы я покрыл? @jsunderhood
11:23

Для интересующихся Clojure: сегодня в Киеве будет митап, на котором @asolovyov расскажет как рендерить React без JS meetup.com/Kiev-Clojure-U…

11:31

А я записываю видеоуроки по ClojureScript для JS разработчиков. От синтаксиса и до создания полноценного SPA youtube.com/playlist?list=…

11:36

Так же поддерживаю ресурс о cljs на русском языке. Там есть справочник по языку и интерактивные упражнения clojurescript.ru

11:42

Попробовать кложескрипт можно там же, в онлайн REPL clojurescript.ru/repl/

11:47

Недавно делал доклад, в котором за полчаса попытался рассказать о cljs youtu.be/2Kvs2NrZrK0

11:53

Немного больше расскажу 21 мая на @KharkivJS kharkivjs.org Обязательно посетите эту конфу, в прошлом году были крутые доклады.

11:57
@jsunderhood @KharkivJS только это не конфа будет, а митап. Большая конфа осенью

Так что можно аж два раза посетить :)

@jsunderhood @KharkivJS только это не конфа будет, а митап. Большая конфа осенью

12:00
@jsunderhood TypeScript популярнее и совсем не функциональный.
12:01
@jsunderhood Kotlin Компилируемый????

уже давно вроде как blog.jetbrains.com/kotlin/2013/10…

@jsunderhood Kotlin Компилируемый????

12:08

Погружению в лисп хорошо способствуют лекции по структуре и интерпретации программ (SICP). Для общего развития тоже youtube.com/playlist?list=…

12:16
@jsunderhood "An idiosyncratic tour of SICP in Clojure" sicpdistilled.com :)
12:31

Да. Точнее сказать будет: «Как рендерить React-совместимую разметку без React и JS» t.co/aANmAuqNpn

12:34

Как раз в этом случае очень хорошо проявляются преимущества DSL на структурах данных.

12:40

У @niquola есть интересный доклад о Data DSL в Clojure youtube.com/watch?v=urQ5o7…

12:42
@jsunderhood купил себе бумажную версию, там ещё упражнениями можно подкачаться

Книга тоже крутая, но мне лекции лучше заходят.

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

12:43
@jsunderhood это ты про что?

Например вместо JSX писать структурами данных JS. Это не нужно парсить.

@jsunderhood это ты про что?

12:48

В JS тоже так делают, но за счет более выразительных структур данных в Clojure это нормально читаемо.

12:50
@jsunderhood по сути нужен только один reduce

У меня есть прекрасная адаптированная под JS статья о трансдьюсерах medium.com/@roman01la/und…

@jsunderhood по сути нужен только один reduce

12:52

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

12:52
@jsunderhood популярен в смысле поиграть или есть работа на нем ? Интересно, сколько людей/компаний выбрало бы Elm для след. проекта.

Я могу на пальцах пересчитать компании использующие Elm в проде. Может есть где-нибудь статистика?

@jsunderhood популярен в смысле поиграть или есть работа на нем ? Интересно, сколько людей/компаний выбрало бы Elm для след. проекта.

13:04
@jsunderhood я знаю о ней) она есть тут github.com/xgrommx/awesom…
13:08

Как вы думаете, что имеет смысл тащить в JS из мира функциональщины?

13:11
@jsunderhood в том же котлине прекрасная возможность писать любой DSL который душе угодно kotlinlang.org/docs/reference… github.com/Kotlin/anko
13:11

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

13:15

Там где все об этом знают и комфортно себя чувствуют.

13:15
@jsunderhood там уже пайп тащат с f# и ему подобных

ES7 Proposal: The Pipeline Operator github.com/mindeavor/es-p…

@jsunderhood там уже пайп тащат с f# и ему подобных

13:17
@jsunderhood Только изредка, когда это оправдано.
А вот когда это оправдано — интересный вопрос.

аминь 🙏

@jsunderhood Только изредка, когда это оправдано.
А вот когда это оправдано — интересный вопрос.

13:20

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

13:22

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

13:23

Или вот тащат в язык `do`, потому, что JS statement-based ponyfoo.com/articles/propo…

13:28
@jsunderhood еще интересная штука - это метопрограммирование jetbrains.com/mps/?fromMenu
13:37
@jsunderhood что угодно можно сделать на любом языке кроме изменения синтаксиса

Лисп в этом плане всех сделал

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

13:37
@jsunderhood тут еще вон новый зверь - асинхронный генератор github.com/tc39/proposal-…
13:37
@jsunderhood compose

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

@jsunderhood compose

13:39
@jsunderhood А не смущает, что иммутабельность может взрывать память и замедлять время выполнения?

Медленнее конечно, но в разработке UI от иммутабельности больше пользы, чем вреда. Это доказано.

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

13:43

Память не разрастается благодаря structural sharing. Так реализованы данные в Clojure и в Immutable.js youtube.com/watch?v=I7IdS-…

13:46
@jsunderhood Мне кажется в 100% случаев чище написать (x) => foo(bar(x)), в кложе кстати тоже.

Наверное только в Haskell приятно использовать композицию. Там это через точку или $, если не ошибаюсь.

@jsunderhood Мне кажется в 100% случаев чище написать (x) => foo(bar(x)), в кложе кстати тоже.

13:48
@jsunderhood Копирование будет медленнее, если на огромных обьемах.

Я бы сказал, что это зависит от глубины структуры. Если это список из 100000000 элементов, то ничего не изменится.

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

13:50

.@freiksenet_ru ну если есть structural sharing, то все данные не копируются, только измененные и путь к ним вглубь, остальное по ссылке.

13:53

В JS можно тоже привносить свой синтаксис, без Babel. Sweet.js сейчас активно переписывается sweetjs.org

13:55

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

13:58

Бездумно выдумывать синтаксис — усложнять жизнь другим разработчикам.

13:59
@jsunderhood Вот кстати тоже довольно крутая статейка про лень filimanjaro.com/blog/2014/intr…
14:15

Пример того, когда вам может понадобиться мемоизации в React medium.com/@roman01la/avo…

14:24

Трансляция митапа о кложе youtu.be/Fh529ExAtjI

16:02
@jsunderhood Кстати любителям clojurescript есть реактивная библиотека inspired by Rx github.com/funcool/beicon
17:28
@jsunderhood React Native for Windows 10 and Samsung Smart TV.
18:25
@jsunderhood F8 app built with React, React Native, Redux, Relay, GraphQL. makeitopen.com
18:25
@freiksenet_ru @jsunderhood TypeScript много раз спасал от дебага в рантайме своими предупреждениями на этапе компиляции! Типизация нужна.
18:25

React Native победил

18:28
@jsunderhood, недавно на ДАМП слушал доклад про React Native. Понял что приложения надо писать на нативных языках платформ и не извращаться
18:45

Ко всему этому добру еще есть react-native-desktop React Native for OS X github.com/ptmt/react-nat…

19:55

Отключаюсь. Увидимся завтра pic.twitter.com/9UQ5ruTb3O

20:03

# Четверг 20 твитов

Оптимизация хвостового вызова все же работает в Canary, в strict моде. Всем рекурсия пацаны! pic.twitter.com/2Mm9REnVGq
7:01
Safari Tech Preview 2 fixes 10 ES2015 test cases from @kangax's test suite (over STP1). Only 17 tests left to go for 100% score! #webkit
7:01

Исходники приложения F8 на React Native, Redux, Relay, GraphQL github.com/fbsamples/f8app

8:45

Тем временем продолжается работа над нативной поддержкой JS модулей в браузерах blog.whatwg.org/js-modules

12:38

Когда реализуют модули в браузерах, можно будет разрабатывать без бандлера.

12:43

На @rollingscopes чувак из Google об этом рассказывал и адово пиарил Chrome youtu.be/g3UeAsiW88U

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

И процессинг в сервис-воркере :)

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

13:38
@jsunderhood запустили продажу билетов, должно быть очень круто kharkivjs.org
14:29

Сервис-воркер с Babel внутри для транспиляции загружаемого JS github.com/bahmutov/babel…

15:05

А у вас есть сервис-воркеры в проде?

15:06

У нас в блоге есть сервис-воркер для кэширования статей blog.redradix.com

15:47

Achieving point-free JavaScript with R.converge / _.over medium.com/@nicoespeon/ac…

16:02
@jsunderhood есть популярный Wordpress-плагин, который использует SW для отправки нотификаций о новых постах. Он много у кого на проде.
16:02
@jsunderhood у меня были, сейчас занимаюсь активным пиаром
16:03
@jsunderhood я думаю при http2 бандлеро хайп поутихнет и люди перестанут добавлять их в резюме

Где-то проводили исследование, что http2 не сильно поможет в этом плане

@jsunderhood я думаю при http2 бандлеро хайп поутихнет и люди перестанут добавлять их в резюме

16:56
@jsunderhood Нет. Будут те же проблемы, что с Require.js - в нем уже можно без бандлера, а что толку.
17:00
@jsunderhood это обсудили в webpack team AMA hashnode.com/ama/with-webpa…
17:07
@jsunderhood @Blackrabbit99 HTTP2 это как web assembly, все думают что он магически их спасёт.
18:02

React Component Development Kit voice.kadira.io/say-hello-to-r… Какой-то новый CLI для разработки на React.

19:45
@jsunderhood Хорошая тема, всегда такой хотел сделать. Для команды конечно нужно общее решение, но направление очень верное.

Ember ехидно улыбается :)

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

19:52

# Пятница 93 твита

JSCS объединяется с ESLint eslint.org/blog/2016/04/w… Последняя версия JSCS будет 3.0.0

8:06

Кто-нибудь еще использует JSCS?

8:15
@jsunderhood да. А не надо? eslint все дела?

ну теперь уже точно ESLint

@jsunderhood да. А не надо? eslint все дела?

8:17
@jsunderhood вчера заменили на eslint)

👏

@jsunderhood вчера заменили на eslint)

8:17
@jsunderhood @bayevn видел, что их вместе используют. Jscs фисит больше ошибок?

Про JSCS не знаю, но например в ESLint никогда не использовал эту функцию.

@jsunderhood @bayevn видел, что их вместе используют. Jscs фисит больше ошибок?

8:23
@jsunderhood Давно уже перешёл на Еслинт.
8:23

А у вас есть стайлгайды по JS? Например через .eslintrc

8:24

Мы форкнули стайлгайд airbnb и подогнали под себя github.com/redradix/javas…

8:27
день, когда мир узнал, что был ещё какой-то JSCS.
8:28

Как вы форсите использование стайлгайда в команде?

8:29

У нас кто-то сидит на Atom, кто-то на ST, а другие на Vim. За всеми не уследишь.

8:30
@jsunderhood двоечкой в eslintrc с препуш хуком

Кстати да, у нас пре-коммит хук для этого часто используется.

@jsunderhood двоечкой в eslintrc с препуш хуком

8:31
@jsunderhood @github оу, а почему предпочли форк оверлоаду нужных правил?

Мы были согласны с большинством правил, а остальные подогнали через голосование

@jsunderhood @github оу, а почему предпочли форк оверлоаду нужных правил?

8:33
@jsunderhood Пока что словесными пинками и падающим CI.
8:33
@jsunderhood пока код не отлинтован нормально (legacy?) - пинками на ревью
отлинтовали большую часть - вешаем 2 на хук
8:35

Заметил, что самые неаккуратные — пользователи Vim. Ну или у нас в команде так совпало просто.

8:37
@jsunderhood неаккуратные в плане чего?

В плане соблюдения стайлгайда

@jsunderhood неаккуратные в плане чего?

8:41
@jsunderhood ахахаха, это потому что syntastic (линтогонялка) тормозит и recheck on save
Говорят, что в neomake всё ок, но я не проверял
8:41
@jsunderhood использую стайл airbnb
8:42

Давайте поговорим об организации процесса разработки с React. У вас верстка отдельно или на этапе создания компонентов?

8:44
@jsunderhood У нас Реакт Бутстрап, но у нас админка.
8:45

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

8:46

Верстка сама по себе уже компонентная, оформлена в виде гайда по проекту. Что-то типа @SourceJS от @operatino, только на middleman

8:47

Для ускорения процесса создания компонентов React из верстки я и написал html2react github.com/roman01la/html…

8:49
@jsunderhood outsource чистой версткой через html-to-react
in-house сразу компонентами со всем-всем-всем
8:50
@jsunderhood прогеры на vim... Я наверно что то упустил в этой жизни. Неужели удобно?

emacs тоже удобно, дело привычки

@jsunderhood прогеры на vim... Я наверно что то упустил в этой жизни. Неужели удобно?

8:50
@jsunderhood объясни им как выйти из vi. Может они не могут, а им просто нужен редактор попроще?

😂

@jsunderhood объясни им как выйти из vi. Может они не могут, а им просто нужен редактор попроще?

8:51
Шутка про "дизайнер никому ничего не должен"
Многие даже во фреймере сами анимацию колбасят и это очень круто twitter.com/jsunderhood/st…

У нас была попытка использования инструментов для прототипирования в связке со Sketch, но чёт не прижилось

Шутка про "дизайнер никому ничего не должен"
Многие даже во фреймере сами анимацию колбасят и это очень круто twitter.com/jsunderhood/st…

8:53
@jsunderhood а чё там щас верстать, ляп-ляп флексом, автопрефиксер и готово bfolder.ru/_ph/41/4389794…

У нас большинство проектов IE10+, но флексбокс видимо ещё не заходит верстальщикам

@jsunderhood а чё там щас верстать, ляп-ляп флексом, автопрефиксер и готово bfolder.ru/_ph/41/4389794…

9:05
@jsunderhood я пока для некритичных фич использую. Думаете пора в лаяуты?

С этим вопросом в @cssunderhood

@jsunderhood я пока для некритичных фич использую. Думаете пора в лаяуты?

9:17
@jsunderhood Начали верстать статические прототипы на реактовых компонентах. Билдим html/css/js. Потом этот код компонент используем в прод.
9:17
@jsunderhood у нас в команде его юзаем, но никогда ничего полезного он не ловил. слава богу оно растворится в eslint.
9:18
@jsunderhood Если в проде от компоненты нужны только стили, то js отрезается бабелом. Бонусом получили трекинг зависимостей.
9:18
@jsunderhood В общем случае в проде может и не быть реакта, но весь пототип будет на нём. Из минусов: всем (и дизайнерам) понимать реакт.
9:19
@jsunderhood ну вот не надо вот. Ты пытаешься разделить неделимое. @cssunderhood

ладно) у кого флексбокс в проде?

@jsunderhood ну вот не надо вот. Ты пытаешься разделить неделимое. @cssunderhood

9:21
@jsunderhood @SilentImp @cssunderhood у нас. И как я раньше без него жил :-)
9:26

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

9:36

Верстка уже забывается :(

9:37

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

9:38
@jsunderhood, флексбоксы уже устарели, надо начинать готовиться к Гридам.

Когда-то пробовал грид лейаут, прикольная штука

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

9:51
@jsunderhood – куда там float: left? тут? а здесь обнулять? или так? v1.std3.ru/54/96/14607086…
9:51
@jsunderhood надо же … сейчас окажется, что люди на проде уже и grid пробуют >_<
9:52
@jsunderhood есть ещё eslint-loader для вебпака который все ошибки линтинга сразу в консоли браузерной показывает.
9:52
@SilentImp @jsunderhood ну так по недавнему опросу на сайтпойнте в его употреблении признались... аж 36%! sitepoint.com/results-ultima… :)
10:06
@jsunderhood есть офигенная либа для postcss github.com/peterramsing/l…
10:06
@jsunderhood @Bizi есть отличная статья о том, чем отличаются флексы от грида, легко гуглиться. У них разные задачи
10:06

Тем временем в Амстердаме пасмурно и прохладно pic.twitter.com/sgQYds0pTN

10:57
KharkivJS №6 21 мая: Node.js под нагрузкой, ClojureScript, RxJS, асинхронность, архитектура kharkivjs.org pic.twitter.com/EQ2PZ8QpsL
11:01

5 июня в Питере будет конфа HolyJS. Все темы докладов крутые holyjs.ru

12:11
@jsunderhood я в пути. Может вечером какой-нибудь движ?

Устроим пре-пати? :) /сс @operatino

@jsunderhood я в пути. Может вечером какой-нибудь движ?

13:18
касается многих хипстеров-разработчиков

John Lennon pic.twitter.com/xIvRrCxL4V

13:55
@jsunderhood Мы на speakers dinner в Loetje aan ’t IJ", Werfkade 14, 1033 RA Amsterdam с 18:00.
14:25
@jsunderhood что бы полезного почитать про рендер реакта на сервере? Сейчас в ноде renderToString у меня чудовищно медленно работает.
14:29
@Dmiterko_Roman @jsunderhood посмотреть youtube.com/watch?v=PnpfGy…

Толковый доклад про оптимизацию серверного рендеринга в React

@Dmiterko_Roman @jsunderhood посмотреть youtube.com/watch?v=PnpfGy…

14:31

Матерые разработчики бекенда ругают Node.js и говорят, что никогда на этом писать не будут. Почему?

14:37
@jsunderhood Потому что они настолько матёрые, что переключиться на новую технологию им сложно. Проще её ругать, чем осилить.
14:42
@jsunderhood Понты и история наивности в самом начале истории ноды. Все стало лучше, а стереотипы остались.
14:42

Ещё вопрос про ноду: как правильно использовать кластер и все, что связанно с распараллеливанием задач? Наверное это мало кто использует.

14:44
.@operatino @jsunderhood здесь всё достаточно субъективно. У кого-то здесь, например, частично переносится нелюбовь к js в принципе.
14:46
.@operatino @jsunderhood кому-то не нравится node'овская экосистема, кто-то просто не рассматривает всерьёз ноду как серьёзный инструмент.
14:48
@jsunderhood не хранить стейт в оперативной памяти, а вообще смотря для чего.
14:53
@jsunderhood думаю это вопрос не конкретно про ноду – у нас решение на основе докера и кубернетес, крутят ноду и го
14:53

Для чего вы используете ноду? CLI, API сервера, может кто-нибудь AI делает?

14:55

В основном нода хорошо идёт на API. Быстро обрабатывает запросы.

14:56
@jsunderhood Вот пишу на ноде CLI который генерирует для меня нужный C-код :)
14:56
Скажу вам больше, его даже во фронтэнде использовать стремновато.
@redmoonstudio @jsunderhood

@webholt @jsunderhood Просто стремновато JS в бэкэнде использовать.

14:57
@jsunderhood стоит упомянуть pm2 github.com/Unitech/pm2

Да, клеевая штука. Раньше его место занимали upstart и forever.

@jsunderhood стоит упомянуть pm2 github.com/Unitech/pm2

14:57
@jsunderhood cli, api, daemons
14:58
@jsunderhood Для сборки фронта. В качестве дебаг-сервера.
14:58

Никогда не видел, что бы делали долгоиграющие процессы на ноже.

14:59

*ноде 😅

15:00
@jsunderhood оп, фраерок, процессы на ноже

На ноже обычно все решается быстро, процессы не нужны 😂

@jsunderhood оп, фраерок, процессы на ноже

15:04

Уже появились билеты на Reactive Conf 2016 reactiveconf.com/#tickets Судя по докладчикам, будет сильно

15:13
@jsunderhood там же нет статической типизации, а без нее никак не пишется: видимо, матерые разработчики всегда ошибаются именно в типах
15:40
@jsunderhood потому что на бекенде богатый выбор
15:40
@jsunderhood pm2 или нативный кластер, который по round robin отдает реквесты подпроцессам
15:41
@jsunderhood API прекрасно идет: Mongo+Swagger, или вот щас GrpaphQL пойдет
15:41
@jsunderhood небольшие и быстрые (иногда даже низкоуровневые) сервисы, они же микро по модному
15:42
@jsunderhood у меня в основном CLI для тулзов, ибо С - излишне сложно, а Bash - очень извращенно
17:01

А кто работает удаленно? Что вы делаете, чтобы поддерживать чувство «team member»? Это проблема, на самом деле.

17:24
@jsunderhood общий чат. Классный шеф :)
17:30
@jsunderhood раз в неделю пишем «летопись», как прошла неделька. общаемся при возможности, изредка встречаемся все вместе
17:30

Мы ведем активную переписку в Slack, обсуждаем новые технологии. Делаем воркшопы в хенгаутах.

17:43
@jsunderhood воркшопы? в хенгаутах?? круто, че

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

@jsunderhood воркшопы? в хенгаутах?? круто, че

18:09
@jsunderhood skype звонки. Особенно хорошо: обсуждение проблемы на которую взгляды по решению расходятся
18:23
@jsunderhood один из элементов: канал в слаке для фоток #a-photo-a-day
18:23
@jsunderhood daily fucking scrum fucking morning fucking meetings
18:27
@jsunderhood встречаемся вместе и проводим демо и ретро в конце каждого спринта 😉
18:28
The F8 App we shipped in the Windows Store is now available on @github github.com/ReactWindows/f…. Let us know if you have issues!
18:32

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

@jsunderhood 4 раза в год летаю в США к сотрудникам
6:22
@jsunderhood на самом деле митинги очень хорошо помогают, плюс обсуждения голосом насущных проблем по задачам.
6:22

Мы скоро начинаем #reactamsterdam pic.twitter.com/WU8VrCsqcO

7:49
Весь этот фронтэнд — какой-то Амстердам. Все укуренные и со своими велосипедами.

Мы скоро начинаем #reactamsterdam pic.twitter.com/WU8VrCsqcO

8:05
. @jsunderhood Все ваши ретвиты с тегом #reactamsterdam попадут на твит куб в Амстердаме, да :trollface: pic.twitter.com/R1SFun1Hal
8:14

Первый доклад о миграции больших проектов на React pic.twitter.com/7sTp0U5XT7

8:15

Рассказывает как переходить на React частями, по одному компоненту. Например можно заменить роутер pic.twitter.com/CHkMnaVrVQ

8:32
@squid__xd @jsunderhood А вот этому похоже уже хватит Реакта на сегодня. pic.twitter.com/uw80izqcfv
8:32
@jsunderhood ивент стримится?

Нет :(

@jsunderhood ивент стримится?

8:36

В Backbone сложно следить за состоянием, а в Redux можно использовать redux-logger и увидеть каждое изменение.

8:37

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

8:42

Второй доклад о том, как делать продукт на React и радовать пользователей pic.twitter.com/MxorwuQ0cV

8:45

Изолированные компоненты — это хорошо! Разработка в изоляции поможет с этим.

8:48

Такие компоненты проще поддерживать и переиспользовать.

8:49

Такие компоненты хорошо комбинировать создавая более сложные компоненты.

8:51

Как достичь этого? Разрабатывайте компоненты, а не страницы.

8:52

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

8:59
@jsunderhood а зачем на них мигрировать?
8:59

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

9:00

Используйте «чистые» компоненты, а когда вам нужно состояние или методы жизненного цикла — классы.

9:04

Над чем нужно поработать в React? Анимации, жесты и система лейаута. pic.twitter.com/TSkiaFojTf

9:10

Следующий доклад @oleg008 о CSS в JS pic.twitter.com/yLYxJmk354

9:13

Проблема CSS в глобальном неймспейсе, точнее в селекторах.

9:19

.@oleg008 сделал решение — JSS github.com/jsstyles/jss

9:20

Проблема в специфичности селекторов pic.twitter.com/AImB9bKDXe

9:22

И в сложных селекторах. Используя пре-процессоры вы все равно получаете CSS. Вложенности и вот это все раздувает стили.

9:24

Что такое JSS? pic.twitter.com/TQ4ZinLPMJ

9:26

Так записываются медиа запросы pic.twitter.com/todF8EAEzS

9:31

JSS не привязан к React, расширяем плагинами и генерирует только необходимый CSS pic.twitter.com/mPniw6Bhms

9:35

Следующий доклад о серверном рендеринге в React pic.twitter.com/BJQJs4OO5r

10:17

PHP — протохипстер серверного рендеринга pic.twitter.com/ZXb9hGVdpy

10:21

С северным рендерингом все счастливы: поисковики, пользователи и ваш менеджер.

10:26

Страх и ненависть на конфе по React pic.twitter.com/casPKlhnvP

10:33

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

10:35

Можно стримить рендер с помощью github.com/aickin/react-d…

10:36

Ссылки на ресурсы о серверном рендеринге pic.twitter.com/6JpQV0oDwW

10:38

Следующий доклад о внутренностях React Native от чувака из Facebook pic.twitter.com/jCOIY3eDrl

10:44

В RN работает три потока: для нейтивa, для JS, и для работы с лейаутом.

10:50

Также каждый нативный модуль работает в отдельном потоке.

10:51

Когда приложение стартует, сначала загружается JS, потом нативные модули.

10:52

После загрузки модули регистрируют себя в системе. И параллельно стартует JS VM.

10:54

После этого загружается конфигурация в JSON и начинается выполнение JS.

10:55

Так работает VM pic.twitter.com/FwdSzJHDX1

10:56

Потом создаются shadow views для компонентов с информацией о лейауте и представление рендерится в нативных компонентах.

10:59

Все взаимодействия с интерфейсом проходят через мост между JS и нативными модулями. Этот мост что-то вроде роутера.

11:01

На iOS нельзя использовать JIT, а в Android можно. Но ведроид все равно тормозит 😅

11:08

Следующий доклад о реактивных приложениях с GraphQL на платформе Apollo. Чувак из Meteor pic.twitter.com/nemIr5q49c

11:15
@jsunderhood Apollo ещё делают, а Reindex давно есть. reindex.io :)
11:17

Работа с данными в Meteor. Все изоморфно (универсально). pic.twitter.com/9HLK8l39B9

11:19

Отличия от REST pic.twitter.com/awAEYRYiVL

11:20

Один стек для всех платформ и языков pic.twitter.com/uAmGIAcwor

11:22

Один сервер, много клиентов pic.twitter.com/tyt0jo4LmF

11:23

Блог Apollo medium.com/apollo-stack

11:33

На сервере упрощенная работа с GraphQL, на клиенте подобие Relay поверх Redux. Много уделяют DX.

11:35

У них есть реактивные GraphQL запросы. Полная синхронизация, в обе стороны.

11:40

У нас обед pic.twitter.com/2joLCwYCXo

12:11

Следующий доклад о разработке игр с React

12:45

ШОК! React — это Doom 3 pic.twitter.com/Rc67BYP4rO

12:49

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

12:59

Компонентный подход позволяет компоновать сущности и создавать юниты в играх. Создавать комбинируемые модификаторы pic.twitter.com/pNfYzaMO4m

13:02

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

13:06

Можно делать кроссплатформенные игры на RN с почти 100% переиспользованием кода потому, что в играх не нужен UI специфичный для платформы.

13:11

Следующий доклад о создании библиотеки WebGL компонентов на React pic.twitter.com/Nv7M9n3gPX

13:16

Библиотека компонентов нужна для того, чтобы продует выглядел консистентно на всех клиента/платформах. React отлично подходит для этого.

13:19

*продукт

13:20

Спойлер: Ангуляр был обманут, но Реакт переубедил его. pic.twitter.com/zI4VAPmB6c

13:22

Для разработки библиотеки компонентов отлично подходит разработка в изоляции.

13:23

Библиотека ReactLiberty рендерит в DOM, Canvas, WebGL, native или ещё что-нибудь github.com/LibertyGlobal/…

13:34

Таким образом UI можно портировать на разные платформы.

13:35

Сэттоп боксы очень медленные, DOM тоже медленный, поэтому UI на WebGL.

13:37

Один код, разные рендеры для React. Переход между DOM и WebGL в один клик.

13:45

Следующий доклад о тестировании в React pic.twitter.com/O2y1rWb1i3

13:46

Кто сказал PostCSS? pic.twitter.com/S8yddb6xQn

13:52

Выносите логику за компоненты, это проще тестировать pic.twitter.com/rEXVXSs9Is

13:53
My lightning talk on approaching React Component Libraries. Exclusively for #reactamsterdam speakerdeck.com/operatino/the-… pic.twitter.com/fUDvUzDUAa
13:56

React Test Utils + Shallow Rendering вполне подходит для тестирования компонентов и поведения

13:57

Не тестируйте состояние компонента. Состояние инкапсулировано в компоненте. Тестируйте то, что есть на выходе. pic.twitter.com/US2kP4OGQZ

14:02

Используйте Sinon или аналоги для тестирования вызова функций/обработчиков событий.

14:05

TestUtils писали джависты, Enzyme лучше. Используйте Enzyme github.com/airbnb/enzyme

14:11
@jsunderhood джависты? не похоже на фейсбук

Это шутка. Посмотри на имена методов в этой библиотеке :)

@jsunderhood джависты? не похоже на фейсбук

14:15

Следующий доклад об опыте интеграции React в компании pic.twitter.com/YxvZ8b1Oc5

14:49

framework vs UI library pic.twitter.com/p21kE1HPsQ

14:50

Что, правда? pic.twitter.com/aVpA6nfsF4

14:53
@jsunderhood Enzyme имеет проблемы при тестировании в браузере. Интересно какие еще есть варианты.
14:53

React — jQuery сегодняшнего дня. Он дал нам возможность так же легко создавать приложения, как jQuery работать с DOM.

14:57

Изучая React, фокусируйтесь на чем-то одном, не распыляйтесь. И не расстраивайтесь, когда что-то не получается :) pic.twitter.com/GENl3yJn0G

14:59

Этот слайд отлично показывает, почему проекты на JS невозможно поднять через полгода после установки зависимостей pic.twitter.com/3NrTWpX5Wp

15:07
@jsunderhood Шринкврап же.

Да. Кстати, говорят он не во всех случаях спасает.

@jsunderhood Шринкврап же.

15:11
@jsunderhood не понятно, зачем DOM заменять webgl'ом, т.е. даже не канвасом?

WebGL hardware accelerated, а Canvas 2D нет, сс @PixelsCommander

@jsunderhood не понятно, зачем DOM заменять webgl'ом, т.е. даже не канвасом?

15:12

Следующий доклад о реактивном программировании и управлении состоянием pic.twitter.com/cuh0XUFef0

15:15

У нас тут адепт Штальца: Redux — это велосипед, с кучей мешков на нем. pic.twitter.com/BIvBKzUp43

15:16
@jsunderhood коллеги мобильщики во всю пишут первое приложение на react native. Надо бы тоже пощупать, взглянуть под капот...
15:16
@jsunderhood хехе, когда ждать движение "you don't need react for this"?

Спроси у Штальца :)

@jsunderhood хехе, когда ждать движение "you don't need react for this"?

15:23
@jsunderhood ну, справедливости ради, Дэн действительно любитель метаабстракций.
15:26

Чувак рассказывает о MobX в связке с React pic.twitter.com/NxTEzk8Nxz

15:31
@jsunderhood, надо всегда начинать с 1.0.0

Спорное утверждение

@jsunderhood, надо всегда начинать с 1.0.0

15:32
@jsunderhood, хотел начать дискуссию и услышать разные аргументы)
15:34

Юзкейс для реактивных библиотек pic.twitter.com/a5koKkWd02

15:35
@ilnurkhalilov @jsunderhood 1.0.0 должен быть production ready, а 0.x.x специально для того, чтобы десять раз отрефакторить и изменить API.
15:41

Следующий доклад об инструментах разработчика в React Native. Проблемы и их решения. pic.twitter.com/Qz3owaY9Zd

15:43
@jsunderhood видео докладов будет надеюсь? Текстовые доклады конечно здорово, но хотелось бы большего :-)

Будет. сс @operatino

@jsunderhood видео докладов будет надеюсь? Текстовые доклады конечно здорово, но хотелось бы большего :-)

15:53

Чтобы не было такого, когда подключаете модуль с нативным кодом или ассетами используйте rnpm github.com/rnpm/rnpm

15:56

Чтобы не было вот такого pic.twitter.com/osxWwDHMVq

15:57
@lalakalka @jsunderhood все записано, вместе с экраном спикеров, выложим как @MLarchanka закончит монтировать
15:57

В общем весь доклад посвящён rnpm.

15:59

Неофициальный маскот конфы. pic.twitter.com/Aj3sJ374wt

16:02

rnpm будет частью RN CLI

16:09

Последний доклад о React Native Playground pic.twitter.com/7sBaNkdVGD

16:15

RN playground как jsfiddle, только для приложений rnplay.org

16:19

RN playground будет интегрирован в сайт с документаций по RN, чтобы сразу видеть работающие примеры кода.

16:24

Изнутри это эмуляторы, которые стримят видео с работой вашего кода.

16:25

Приватный плейграунд с полезными фичами для комманд и ревью reploy.io

16:35

У нас все. Всем спасибо. pic.twitter.com/dWXkDQdhxR

16:37
@lalakalka @jsunderhood не понятно зачем вообще так делать, ведь значительная часть реакт это виртуал дом, который в WebGL совсем не нужен?

Декларативный UI

@lalakalka @jsunderhood не понятно зачем вообще так делать, ведь значительная часть реакт это виртуал дом, который в WebGL совсем не нужен?

17:00
@jsunderhood @PixelsCommander @lalakalka писать 2D интерфейсы на WebGL затратно, OpenGL есть давно, но никто на нём так не делает

Подозреваю, что WebGL более высокоуровневый. Ну и в сравнении с DOM он даёт огромный прирост производительности

@jsunderhood @PixelsCommander @lalakalka писать 2D интерфейсы на WebGL затратно, OpenGL есть давно, но никто на нём так не делает

17:03
@jsunderhood а посоветуй прокладку между React и material? Что-то я в material-ui разочаровываюсь...
17:04

.@Trufid @lalakalka ну и @PixelsCommander говорил, что графика кушает меньше памяти, чем DOM. Для сеттоп боксов это критично.

17:05
@jsunderhood Написан на основе reindex.io

Кстати да. Докладчик упоминал. Так что не ругайте его :)

@jsunderhood Написан на основе reindex.io

17:06
#reactamsterdam is a wrap! What a cool day thanks all for coming & making it a smashing success! pic.twitter.com/MkAIuvcXbz
17:08
@jsunderhood @lalakalka @PixelsCommander интересно, что из этого получится, ведь по сути это повторение работы браузера, свой DOM

Думаю уже получилось. Если я правильно понял, то все это уже работает на устройствах пользователей.

@jsunderhood @lalakalka @PixelsCommander интересно, что из этого получится, ведь по сути это повторение работы браузера, свой DOM

17:13
@jsunderhood @ALF_er @freiksenet_ru одна из этих проблем: github.com/npm/npm/labels… (git || peer daps) + shrinkwrap = issues
20:13
Awesome layout grid with React, Angular, etc golden-layout.com Really nice work!
21:05
Blog Post: How I Structure Elm Apps.

blog.jenkster.com/2016/04/how-i-…

A project layout recipe that @elmlang-wranglers may find useful. :-)

21:42

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

Created a new @babeljs preset for optimizing @reactjs code: github.com/thejameskyle/b… (lots more to come)
7:36

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

8:10
@jsunderhood @podcastcode подкаст про идеи в программировании. Последний выпуск про Event Loop и корутины soundcloud.com/podcastcode/3-…
8:39
@jsunderhood "был в сети 15 минут назад" github.com/halt-hammerzei…
8:40
@jsunderhood webpack плагины в бабеле github.com/istarkov/babel… написал в НГ ночью, сильно навеселе :-)
8:41

А что сегодня интересного на #fwdays в Киеве?

8:43
@jsunderhood еще один логгер без х*рни github.com/btd/huzzah
8:43
@jsunderhood написал свой таск раннер github.com/start-runner/s… получилось даже круче и любопытнее, чем изначально хотелось. везде используем.
8:45
@jsunderhood у Pony Foo не так давно появилась еженедельная рассылка ponyfoo.com/weekly
8:58
@jsunderhood Интерактивный воркшоп по markdown github.com/denysdovhan/ho…
8:58
@jsunderhood и еще интерактивный туториал по bash: github.com/denysdovhan/le…
8:58
@jsunderhood подружил bem с react: github.com/agudulin/dumb-…
8:58
Elm-StartApp and PureScript-Pux example side by side. Super excited where Pux is going.

alexmingoia.com/purescript-pux/ pic.twitter.com/FbeYd8NFxU

9:43
@jsunderhood рантайм типизация js на основе haskell function definitions github.com/yarax/duckless
10:44
"Awesome list of GraphQL & Relay" github.com/chentsulin/awe…
11:23
@jsunderhood cистема прототипирования со смешанным окружением github.com/theprotein/pro… под капотом electron и react
11:35
@jsunderhood честный #b_ в React github.com/awinogradov/re… #CSS, @bemxjst, уровни переопределения. Описание работы github.com/bem/bem-forum-… ;)
11:39

Кто-нибудь уже сделал полезного чат-бота? Сейчас дикий хайп вокруг этого.

11:40

Мессенджер Luka с множеством AI ботов medium.com/p/69219eb478d9

11:44
@jsunderhood лет 10 назад писал чат-ботов для ирц на перле и не знал что такое хайп :)
11:45
@jsunderhood PostHTML github.com/posthtml/posth…@PostCSS для HTML с кучей плагинов и интеграций со всеми возможными инструментами ;)
11:56

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

12:05
@jsunderhood offline, real-time движок с crdt, mongo запросами и интеграцией с react amelisajs.com
13:21

Procedural vs Object Oriented vs Functional Programming funkyjavascript.com/procedural-vs-…

15:37
Trees of Promises in ES6
2ality.com/2016/04/promis…
16:18

Доклад о системе диагностики на борту Boeing 737 MAX написанной на Clojure m.youtube.com/watch?v=iUC7no…

16:22

В мобильном клиенте Твиттер появилась возможность создавать описание изображений для обеспечения лучшей доступности pic.twitter.com/Uj9VpfWuFq

17:43

Запись о новой возможности в блоге Твиттер blog.twitter.com/2016/accessibl…

17:44

Скриншоты показывающие, как это включить и использовать pic.twitter.com/hpEvZ8FxYy

17:46

Отключаюсь. Всем спасибо. С вами был Рома @roman01la pic.twitter.com/uZitAiMcqu

19:56

github.com

www.youtube.com

medium.com

other