Andrew
у меня на девайсе постоянно берет старый, какой-то сохраненный
Andrew
никак нагуглить не могу
Nikita
У когонибудь есть опыт/мнение по поводу использования RxJs?
Nikita
https://www.youtube.com/watch?v=AslncyG8whg
Andrew
сейчас сработало, другая бага походу была
Nikita
Нуже, неужели никто даже не пробовал?)
Nikita
У когонибудь есть опыт/мнение по поводу использования RxJs?
Oleg
Реакт и так реактивный
Владимир
он не реактивный:)
Nikita
Зачем?
чел в видео поясняет минусы редукса и фетча,
Владимир
без мобикса по крайней мере
Владимир
но плюсану про "зачем"
Владимир
я использовал когда-то бекон с обычным реактом
Владимир
не могу сказать, что это была технология мечты
Alex
имхо rxjs сильно усложняет
Aleksei
в общем я ресерчил в прошлом году про frp и вот это все. в итоге оказалось что модель redux+selectors/re-frame/mobx(может? не пробовал если честно) это самая нормальная модель frp. это так реактивность как в экселе, у тебя есть какие то данные и цепочка зависимых от них вычислений, которые срабатывают при изменении исходных величин. pull based frp. rxjs это все же немного о другом, это о streams, это когда уходишь от скалярных величин к векторным. это удобно в некоторых кейсах наверно
Владимир
Почему же?
потому что он никак не реагирует на внешнюю среду. по сути ререндер в реакте всегда вызывается ручками
Oleg
А как же смена пропсов и ререндер?
Владимир
собственно что мобикс что редукс и затыкают эту дыру - говорят реакту, когда перерендериться
Владимир
ты не можешь сменить пропсы. можешь сменить стейт, но это все равно, что сказать: this.state = newState; this.forceUpdate();
Владимир
то есть опять же ручками говорить, что хочешь перерендерить
Oleg
собственно что мобикс что редукс и затыкают эту дыру - говорят реакту, когда перерендериться
Они привязывают данные к пропсам в реакте, но не вызывают ререндер, реакт сам это делает. Так что, чисто формально, он реактивен. Готов подискутировать
Aleksei
не понял про вектор и скаляр
ну вот смотри, есть у тебя fetch, в обычном режиме ты принимаешь какое то значение (скалярное) и обрабатываешь его, с rx.js ты можешь это представить как вектор всех когда либо выполнившихся fetch (скалярных едениц) и работать уже как с вектором (массивом) этих единиц, например как то трансформировать (map), отсекать (filter) или объединять с другими векторами (flatMap)
Oleg
Кстати. Любое усложнение проекта это очень нехорошо, поэтому добавление frp должно быть обосновано
Владимир
самый ад - это потом читать эти штуки
Oleg
@savelichalex, можешь рассказать случай, в котором frp сильно помогает, снимает сложность проекта?
Aleksei
@savelichalex, можешь рассказать случай, в котором frp сильно помогает, снимает сложность проекта?
конечно, те же селекторы считают абстрагируют структуру стэйта от представления, соответсвенно легче менять сам стор и вообщем можно рассматривать всю бизнес логику как отдельное приложение, где к нему есть только интерфейсы через экшены на вход и селекторы на выход
Oleg
CSS селекторы?
Aleksei
https://github.com/reactjs/reselect или https://github.com/Day8/re-frame/blob/master/docs/Subscribing-To-External-Data.md
Oleg
Ясно )
Oleg
Спасибо что напомнил про reselect, попробую в сл его проекте
Oleg
Пока что сложность поддержки frp, лично для меня, сильно перекрывает преимущества, которые пока не очень явны
Aleksei
ща попозже расскажу в чем профит)
Oleg
Давай, ага, интересно
Oleg
Я в свое время так наелся в функциональным программированием, пока это еще не стало трендом. Поддержка такого проекта это очень тяжело
Aleksei
Да. Я согласен что можно свои селекторы писать и это тоже нормальный подход, я так и делаю например в прилаге на редуксе, просто в mapStateToProps обрабатываю стэйт и все. Но даже уже это значит что ты пользуешься FRP 😉так как стэйт это Behaviour в терминах FRP классического и ты подписан на его изменение. Но у селекторов (мне если честно тоже не оч нравится это название, но будет называть так) тоже есть свои преимущества. Я дальше не буду рассматривать именно reselect библиотеку, а скорее сам подход. В таких селекторах используется другая механика, которая позволяет тебе обработать данные из стэйта прежде чем они попадут в представление, причем зачастую более оптимальным образом. Так как у тебя выстраивается граф зависимостей, то ты можешь оптимальней проводить расчеты, так как часть значений кэшируются и не требуют перерасчета. Так же эти зависимости можно собирать сборщиком мусора. Классный пример это либо https://github.com/ds300/derivablejs. То есть там не просто вычисляется результат если что то изменилось (это push подход), а делается pull, когда приходит новое значение спришвается у подписчика нужно ли ему это значение и только тогда идет расчет, а если не надо то ничего и не вычисляется. И там также garbage collection реализован через mark-and-sweep.
Aleksei
я наверно немного сумбурно объяснил)
Aleksei
Я в свое время так наелся в функциональным программированием, пока это еще не стало трендом. Поддержка такого проекта это очень тяжело
а что не так с фп если не секрет?) я просто к фп более прагматично отношусь, если что то можно легче сделать, то я выбираю более легкий вариант и для меня делать абстракции на функциях легче чем городить кучу классов в ооп 😄
Aleksei
наверно зависит еще от языка) я вот на своем пэт прожекте на 2 месяц выпал из разработки и вроде щас норм все понял) cljs
Oleg
Я очень люблю Go, за то что он такой примитивный. Его всегда однозначно можно понять. Вхождение даже в легаси очень мягкое и приятное.
Aleksei
Не, 2 месяца это не срок )
может быть 😄 но главное по мне все же писать программу просто, не мудрить особо с абстракциями и тогда довольно просто все будет вспомнить))
Oleg
Вот этого же я хочу от js.
Aleksei
ну тогда тебе cljs понравился бы, есть же знаменитый толк Рича Хики "Simple Made Easy", он как раз сторонник более простых решений и соотв-о язык такой же)
Aleksei
там не как в хаскеле - все чистое и никак по-другому) захотел императивно написать - пиши)
Oleg
Но пока сложно поверить что он прост как go, например
Oleg
Я много писал на livescript, это надмножество coffescript, только от хаскеля очень многое взято
Oleg
И больше не хочу )
Anonymous
Друзья, собрал в одном месте 132 чата для программистов - @Chats_Developers. Пользуйтесь на здоровье.
Andrey
Есть вопрос. Из android/react-native-maps тянеться dependencies compile "com.google.android.gms:play-services-maps:9.8.0 В поекте версия сервисов уже 10.0.2 . => При сборке возникает конфликт. exclude не помогает. compile(project(':react-native-maps')) { transitive = true; exclude group: 'com.google.android.gms', module: 'play-services-base' exclude group: 'com.google.android.gms', module: 'play-services-maps' } Алсо, на машине CI с необновленными build-tools и support repository всё собралось отлично. Не сталкивались с таким?
Aleksei
Reselect это не frp, т.к. в нем pull стейта , а не push.
и? как это показывает что не frp?
John
посоветуйте легкий в освоении back-end (node, php, python) для real-time приложения react-native.
Aleksei
John
firebase не подойдет :)
John
Ничего сложного, 4-5 таблиц в базе и синхронизация в реальном времени и желательно обновление после потери связи.
John
Думаю над meteor
Denis
Django :)
John
Flask (py), express js
Спасибо, посмотрю flask
Denis
Спасибо, посмотрю flask
Тогда еще посмотрите cookiecutter, там много вещнй уже сделано вроде авторизации по токену
Ilya
если бд будет mongo, то проще метеор взять
Aleksei
firebase не подойдет :)
а че не подойдет то) есть еще же rethink-db и couchbase)
John
а че не подойдет то) есть еще же rethink-db и couchbase)
потом нужно будет эти данные обрабатывать (графики и т.п.), ну и данные нужно хранить на своем сервере.
Oleg
Спасибо, посмотрю flask
А разве flask умеет асинхронность и crdt?
Oleg
Realm
Aleksei
А разве flask умеет асинхронность и crdt?
че то мне кажется человеку не до crdt щас))
Aleksei
Realm
realm синкатся умеет?