@frp_ru

Страница 143 из 420
Дмитрий
31.08.2017
23:51:41
Если ты ощущаешь настойчивое желание распихать блокировок, то что-то идёт не так

Причём даже несколько вариантов)

Но такой стейт внезапно оказывается true private, ненаблюдаемым принципиально, что не всегда здорово

Google
Дмитрий
01.09.2017
00:00:20
Это в принципе относится ко всем длинным стрим-процессам

Vadim
01.09.2017
04:03:26
Тайпинги у рамды неправильные. Не те аргументы у invoker прописаны. Нет плейсхолдера. Нет метода “o”. Это из того, с чем я пока столкнулся

andretshurotshka?❄️кде
01.09.2017
04:03:53
ахахха

Ты на последнюю версию обновись

Вообще умрешь

Vadim
01.09.2017
04:04:44
Это последняя версия )

andretshurotshka?❄️кде
01.09.2017
04:04:54
@types/ramda небось?

Ой

Vadim
01.09.2017
04:05:13
Ага

0.24.8

andretshurotshka?❄️кде
01.09.2017
04:05:28
Я тебя огорчу

Ее не обновляют

Vadim
01.09.2017
04:05:31
Хотя уже вижу что вышла за последние дни 0.24.9

Google
Vadim
01.09.2017
04:05:40
А какая корректная?

Версия тайпингов

andretshurotshka?❄️кде
01.09.2017
04:05:52
Актуальная версия тут https://github.com/types/npm-ramda

Но автор сидит на чем-то

потому что это жесть в последней версии

Vadim
01.09.2017
04:06:30
Ее не обновляют
Как я тебе уже сказал, обновляют

Правда лажа остается

andretshurotshka?❄️кде
01.09.2017
04:07:53
Хммм

Как это обновляют ?

Vadim
01.09.2017
04:09:21
https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ramda

Но все равно пипец!

andretshurotshka?❄️кде
01.09.2017
04:10:25
Но у тебя будет инфаркт от таких плейсхолдеров

Vadim
01.09.2017
04:10:48
Я поиском не нашел

andretshurotshka?❄️кде
01.09.2017
04:10:56
Я поиском не нашел
Ридми посмотри

Gleb
01.09.2017
04:11:05
АА так блин, нет конечно)) я просто отписал что такое на крайняк тоже возможжно, я просто не понял что плохого в том что успевает пролететь апдейт redux

Вот только мьютексов по всему приложению мне и не хватало, я ж для этого именно вводил функциональность и реактивность ?

Vadim
01.09.2017
04:16:13
Вообще пошли все эти тайпинги в жопу! Сейчас добью проектик с тайпскриптом, и больше ни ногой в него! (надеюсь) Огромный минус типизации в js в том, что при использовании энного набора либ в проекте ты постоянно должен править косяки с тайпингами, которые порой внезапно меняются до неузнаваемости, а так же, не поспевают за версиями соответствующих либ, или привносят свои баги. При обновлениях зависимостей мне приходится править проблемы с тайпингами чаще чем что-то связанное с изменением api js-библиотек.

Это хорошо если ты используешь какого-то монолитного монстра, типа ангуляра. Тогда ок. Но если у тебя солянка из разных либ (что обычно и бывает при написании на react), то ts прибавляет грузик к твоим ногам с добавлением каждой либы. В итоге двигаться становится крайне сложно

andretshurotshka?❄️кде
01.09.2017
04:35:39
Ахаххахаза

Google
andretshurotshka?❄️кде
01.09.2017
04:35:52
>огромный минус типизации в жс

это тс минус

А не типизации в жс

Вообще никто не мешает писать типы для своего кода, а на тайпинги забить

Дмитрий
01.09.2017
05:40:18
АА так блин, нет конечно)) я просто отписал что такое на крайняк тоже возможжно, я просто не понял что плохого в том что успевает пролететь апдейт redux
У меня там просто хайтек тот ещё, всё по таймингам)) В идеале вообще хорошо было бы поднять свой эвент луп

Gleb
01.09.2017
05:41:50
У тебя все покрыто тестами?

Дмитрий
01.09.2017
05:42:29
В итоге пока что просто разделил L1 кэш и обычные данные, чтобы тыща апдейтов первого не аффектила второе

У тебя все покрыто тестами?
По поводу тестов — я просто тоже столкнулся с тем что не очень понятно как тестировать стримы без наскальной живописи марбл-тестами

Gleb
01.09.2017
05:47:12
Ага и в итоге марблс тетсируешь? Там просто есть типа хака Что ли для rx5 шедулера от rx4

next добавляет

И еще что то

Не пробовал?

Vadim
01.09.2017
05:52:11
Вообще никто не мешает писать типы для своего кода, а на тайпинги забить
Никто не мешает забить на тайпинги вообще. А вместо этого сконцентрироваться на тестах

Ну это если думать о скорости разработки, а не об идеальном решении в идеальном мире

Дмитрий
01.09.2017
05:54:31
Не пробовал?
У меня не rx, у меня изначально есть next Решил короче что лучше буду юзать функциональность которую предоставляет jest Spy

Gleb
01.09.2017
05:55:35
А можешь пример скинуть пожалуйста

может так действительно удобней

Gleb
01.09.2017
05:56:29
то есть ты на toHaveBeenCalled проверяешь например

Google
Gleb
01.09.2017
05:57:18
А на возвращаемый результат просто подписываешься?

andretshurotshka?❄️кде
01.09.2017
05:58:18
А что не так с марбл?

Gleb
01.09.2017
05:58:22
Я подменял кстати с помощью вот этого прокси от es6 в jest который прям некоторые методы в Observable, например delay или ajax, чтобы код синхронным был и можно было подписаться, это ок?

Vadim
01.09.2017
06:00:33
Видел эту картинку ) Но это для идеального мира )

Или когда сроки не горят

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

Admin
ERROR: S client not available

andretshurotshka?❄️кде
01.09.2017
06:02:14
Флоу выведет типы

Можно не типизировать все)

Vadim
01.09.2017
06:02:58
Может доберусь еще до флоу

andretshurotshka?❄️кде
01.09.2017
06:03:00
https://arxiv.org/pdf/1708.08021.pdf пейпер про флоу

Vadim
01.09.2017
06:03:06
Пока у меня мнения о нем нет

andretshurotshka?❄️кде
01.09.2017
06:03:34


Мемы от курчаткина

Vadim
01.09.2017
06:06:31
Еще у меня утренние мысли по поводу “жесткого” фп в js. За последние дни, экспериментируя, переписал кучу кода на своем пет-проджекте в функциональном стиле на ramda. Например, избавившись от всех констант-значений, сделав константами только функции. А теперь свежими глазами смотрю на это, и понимаю, что в портфолио я это не выложу ) Ибо мало какой работодатель захочет в команду инопланетянина, пишущего на непонятном всем языке ) К тому же в общей массе код стал даже более многословным. Убедить стороннего читателя в преимуществах данного стиля задача нетривиальная (да и себя тоже) ) Было: const duration = moment.duration({ seconds: durationSeconds }); return { hours: Math.floor(duration.asHours()), minutes: Math.floor(duration.minutes()) }; Стало: const floorTime = R.useWith(R.compose(R.apply(R.compose), R.flip(R.prepend)([Math.floor])), [(R.invoker as any)(0)]); return R.applySpec({ hours: floorTime('asHours'), minutes: floorTime('minutes') })(moment.duration({ seconds: durationSeconds }));

andretshurotshka?❄️кде
01.09.2017
06:08:17
тайлор как всегда упорот

https://github.com/motorcyclets/react-dom

Дмитрий
01.09.2017
06:20:04
Google
Дмитрий
01.09.2017
06:21:30
Еще у меня утренние мысли по поводу “жесткого” фп в js. За последние дни, экспериментируя, переписал кучу кода на своем пет-проджекте в функциональном стиле на ramda. Например, избавившись от всех констант-значений, сделав константами только функции. А теперь свежими глазами смотрю на это, и понимаю, что в портфолио я это не выложу ) Ибо мало какой работодатель захочет в команду инопланетянина, пишущего на непонятном всем языке ) К тому же в общей массе код стал даже более многословным. Убедить стороннего читателя в преимуществах данного стиля задача нетривиальная (да и себя тоже) ) Было: const duration = moment.duration({ seconds: durationSeconds }); return { hours: Math.floor(duration.asHours()), minutes: Math.floor(duration.minutes()) }; Стало: const floorTime = R.useWith(R.compose(R.apply(R.compose), R.flip(R.prepend)([Math.floor])), [(R.invoker as any)(0)]); return R.applySpec({ hours: floorTime('asHours'), minutes: floorTime('minutes') })(moment.duration({ seconds: durationSeconds }));
Рамда — это не совсем полноценный функциональный стиль)

Я про это уже писал как-то

andretshurotshka?❄️кде
01.09.2017
06:23:33
?

Дмитрий
01.09.2017
06:23:47
Кстати, рамда, судя по их кукбуку https://github.com/ramda/ramda/wiki/Cookbook пропагандирует строго "функциональный подход" на счет того что б не сохранять в константах промежуточные данные. Во всех примерах они оперируют ТОЛЬКО ФУНКЦИЯМИ. Это, на мой взгляд, уменьшает читабельность кода (хотя может я это говорю с непривычки). Есть ли преимущество у такого подхода? Я полюбил рамду из-за возможностей разного рода пайпов/компосов и прочего. Но в своем коде я обычно по преждему использовал константы с промежуточными значениями. А есть ли преимущества от отказа от сохранения промежуточных значений, и манипулирования только лишь функциями?

Отказ от переменных ради отказа от переменных не нужен, если проще написать с ними — пиши, это ок) Стиль рамды позволяет абстрагироваться от конкретных объектов и описывать операции в общем виде, в универсальной и краткой форме

Большую часть времени в обычном жс рамда выступает в качестве эффективного средства для функций - однострочников) Никаких упоротых «композ через композ», просто какие - то атомарные операции в три-четыре последовательных действия

Потом начинаешь замечать, что всё большая и большая часть задач оказывается атомарной да и вообще повторяется

А попытаться сразу писать point-free-everything — это прямой путь к fp fatigue, сколько раз уже наблюдал подобное ?

Тебе кстати и писал, как видишь ?

andretshurotshka?❄️кде
01.09.2017
06:25:01
gcanti fatigue

Gleb
01.09.2017
06:25:10
А почему по функциям все это не разносите? Я сколько смотрю компоуз компоузом поганяет

именованные функции композировать то выразительней

andretshurotshka?❄️кде
01.09.2017
06:25:59
именованные функции композировать то выразительней
эм, а кто сказал что никто не выносит в функции?

Vadim
01.09.2017
06:27:59
А почему по функциям все это не разносите? Я сколько смотрю компоуз компоузом поганяет
Выше представлен код человека, который обычно не пишет в фп. Потому и не очень изящный ) А так да, согласен, надо разбивать

andretshurotshka?❄️кде
01.09.2017
06:28:46
Еще у меня утренние мысли по поводу “жесткого” фп в js. За последние дни, экспериментируя, переписал кучу кода на своем пет-проджекте в функциональном стиле на ramda. Например, избавившись от всех констант-значений, сделав константами только функции. А теперь свежими глазами смотрю на это, и понимаю, что в портфолио я это не выложу ) Ибо мало какой работодатель захочет в команду инопланетянина, пишущего на непонятном всем языке ) К тому же в общей массе код стал даже более многословным. Убедить стороннего читателя в преимуществах данного стиля задача нетривиальная (да и себя тоже) ) Было: const duration = moment.duration({ seconds: durationSeconds }); return { hours: Math.floor(duration.asHours()), minutes: Math.floor(duration.minutes()) }; Стало: const floorTime = R.useWith(R.compose(R.apply(R.compose), R.flip(R.prepend)([Math.floor])), [(R.invoker as any)(0)]); return R.applySpec({ hours: floorTime('asHours'), minutes: floorTime('minutes') })(moment.duration({ seconds: durationSeconds }));
Было лучше)

Vadim
01.09.2017
06:28:53
Согласен )

Gleb
01.09.2017
06:29:36
Не не я ж не обобщаю, просто частенько вижу R(R(R(R(R)))) в этот вот все)

andretshurotshka?❄️кде
01.09.2017
06:29:51
Rrrrrr

Gleb
01.09.2017
06:30:01
Хотя ,гоню, я просто завидую, у меня lodash/fp и там useWith вот такой штуки или ap нету

Vadim
01.09.2017
06:30:10
Было лучше)
А если фп-код разбить на более атомарные функции, то этот исходный короткий императивный код в итоге разрастется в размере в несколько раз

Gleb
01.09.2017
06:30:14
а тянуть рамбду уже поздновато

Страница 143 из 420