Андрей Попп

Андрей Попп

Темы
Неделя
Jul 13, 2015 → Jul 17, 2015

Архив недели @andreypopp

Понедельник


Привет! На этой неделе с вами @andreypopp. Занимаюсь разработкой на JS/Python. С недавнего времени живу в Санкт-Петербурге.

Давайте поговорим о ФП в разработке интерфейсов. От концептов и языков программирования до библиотек и фрэймворков.

FRP: все о нём говорят, но мне до сих пор непонятна его ценность, хотя очень интересно. Кто-нибудь расскажет?

PureScript интересен тем, что позволяет судить об “эффектах” в приложении. Например: “пусть эта функция не пишет в DOM”, “тут нет I/O"

React: "опиши UI один раз как функцию от данных, не надо описывать миллион способов изменить UI при изменении данных”

Пришел в JS только после появления React.js. Кроме JS и Python применял на практике Erlang и Scala. Пробовал ещё много функциональщины...

Из интересного для меня на эту тему: Immediate mode UI (React, …), стат. типизация (PureScript, OCaml, …), FRP.

К сожалению не знаю такой. Были бы добровольцы перевести офиц. документацию… Перевод на китайский идет полным ходом. twitter.com/pvlpvs/status/…

Разговор про Elm: Да, но у того же PureScript система типов и FFI объективно лучше. Биндинги для React есть. twitter.com/aluuu/status/6…

@jsunderhood организовать перевод, например на github, и подтянутся люди :)
Согласен! Вот, как пример, PR для добавления перевода части документации на китайский. github.com/facebook/react… twitter.com/talgautb/statu…

@jsunderhood @andreypopp какой район Петербурга с твоей точки зрения лучший для жизни?
Однозначно Петроградская сторона, но у меня предвзятое мнение, я закончил ИТМО. twitter.com/listochkin/sta…

@jsunderhood как ты считаешь, откуда весь этот хайп по поводу функциональщины в js?
Не думаю что это хайп, просто функциональный подход работает twitter.com/_cloudo/status…

@jsunderhood чувствую как ФП все больше поглощает фронтэнд. Не подскажешь хорошую литературу? Сейчас сижу над ohaskell.dshevchenko.biz/ru/index.html
Хороший список книг/материалов на русском alexott.net/ru/fp/books/ от @alexott книги Харрисона неплохи twitter.com/bagadim/status…

@jsunderhood Хорошее объяснение тут gist.github.com/staltz/868e7e9… . Еще полезно глянуть этот спич youtube.com/watch?v=DqMFX9…
Действительно интересно почитать. Кстати gist от создателя cycle.js.org @andrestaltz twitter.com/__fro/status/6…

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

Поэтому "FRP как архитектура всего приложения" не очень хорошая идея на мой взгляд. Для анимаций, наверное, самое-то.

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

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

Redux от @dan_abramov реализует управление состоянием лучше чем Flux: вместо изменяющегося состояния есть "рецепт как изменить состояние"

Что, кстати, уже снова близко к FRP, но есть чувство что там это оправдано: где-то время нужно учиывать. Главное делать это контролируемо.

Возможно последний твит это все-же результат моего непонимания FRP (или понимания? :-)

Следующий шаг в управлении изменяющемся состоянии это CRDT структуры данных где порядок операций значения не имеет. Прячет время ещё дальше

🔥Тред (@andreypopp)
Кто ещё не видел есть реализация CRDT на JS (работает конечно же и в браузерах): swarmjs.github.io от @gritzko


У нас тонкая “запускалка” поверх webpack для Jasmine спек: github.com/prometheusrese…

@jsunderhood то есть суть - делать render на каждое валидное состояние
в этом суть React twitter.com/__fro/status/6…

Вторник


@jsunderhood rauchg.com/2015/pure-ui/
Отличная статья: “UI как функция без побочных эффектов” /cc @iSnifer есть примеры к нашей недавней дискуссии twitter.com/AndryRochev/st…

Создатель @babeljs присоединяется к команде FB — хорошо когда за таким полезным проектом целая компания.

Вчера ночью чуть-чуть обсуждали REST API. Интересно, появление GraphQL/Relay и Falcor вытеснит классический REST или нет?

У нас есть своя похожая штука: HTSQL htsql.org/doc/overview.h…, более близка к полноценному языку запросов, но у нас и требования другие

This @domenic's comment just made me depressed as it looks like nothing cool will make it into ES7 :( github.com/babel/babel/is…
Коммент от участника TC39 про то почему ваши любимые фичи @babeljs не попадут в ES2016… twitter.com/RReverser/stat…

I can't do this manually anymore. If you write @reactjs libraries, feel free to use it: github.com/gaearon/librar… pic.twitter.com/HI83ce0K6f
Отличный стартер-кит (React, ESLint, Mocha, Babel, Webpack) от @dan_abramov. Но я бы заменил npm скрипты на Makefile twitter.com/dan_abramov/st…

Кто-нибудь должен сделать фрэймворк для shell скриптов, чтобы подтягивать функции с npm. Я с удовольствием буду его использовать.

"Makefile это JSX командной строки” — пока не попробуешь не поймешь в чем польза

Вот пример тонкого Makefile для JS проекта: github.com/andreypopp/aut… на мой взгляд приятнее чем npm скрипты + директория scripts/

Среда


Поэкспериментировал с темингом для React компонент github.com/andreypopp/ret… Идея: протокол для компонент, которым можно изменять внешний вид

Можно использовать с inline styles, css modules, … Как вам API? Чего не хватает?

Альтернатива: делать теминг на уровне системы модулей, так можно инжектить нужные стили статически (нужен webpack-loader какой-нибудь)

Кто еще не знаком с CSS modules github.com/css-modules/cs… компонентный подход к стилям

Подсказали классную утилиту для демок React компонент github.com/insin/react-he… — heatpack ./WidgetDemo.js

Идея: плагин для webpack который позволяет редактировать props компонент прямо в браузере. Сохраняет обратно в исходники.

Наводишь мышкой на экране на элемент и открываешь диалог с редакторов свойств. Прямо в приложении.

Для этого нужно будет аннотировать все вызовы React.createElement позицией каждого prop в исходниках

Альтернатива Chrome Workspaces от FB twitter.com/RReverser/stat…

Есть мнение что devtools должны быть не в отдельной панели UI, а частью самого приложения. //cc @dan_abramov как эксперта по DX

DX — developer experience, аналог UX.

Сейчас когда интроспекцию можно делать на уровне приложения (React, Redux) можно экспериментировать с новыми видами, интерфейсами devtools

Четверг


ESLint v1.0.0-rc-1 released: eslint.org/blog/2015/07/e… First release candidate for v1.0.0!
В сочетании с Babel-ESLint это просто замечательный инструмент. Появился 1.0-RC twitter.com/geteslint/stat…

Дискуссия про Babel и нестандартные расширения языка (JSX): reddit.com/r/javascript/c…

STAGES OF WORKING FROM HOME - Yay I get to work from home - It would be nice to talk to people - I hope that pigeon sits in the window today
Не люблю работать из дома twitter.com/MarkAgee/statu…

Пятница


var, let, or const? I use const for almost everything. Rarely, I'll use let. Never var. #es6 #JavaScript
Действительно, let, const или var? В es6 я использую let, так меньше набирать да и читается отлично. twitter.com/_ericelliott/s…

Ссылки