@devops_ru

Страница 1257 из 4568
Alex
02.10.2016
00:16:45
значит надо учитывать где этих данных нет и думать что делать

Ты можешь кастомные блоки обработчики навесить по желанию.

или выбрать только те где есть данные

вот так например vk.group.posts.title.reject(&:nil?)

Google
Alex
02.10.2016
00:18:16
это же от задачи уже зависит. Можешь написать конкретный кейс.

Nikolay
02.10.2016
00:27:39
сложна

Дмитрий
02.10.2016
00:53:18
map(filter(map(...), ... ), ...)
R.pipe( R.map(fn1), R.reject(R.isEmpty), R.map(fn2), ...)

es5, кстати

Alex
02.10.2016
01:06:50
Что за R кстати?

Дмитрий
02.10.2016
01:18:40
Бесточечная композиция функций - кайф)

ramdajs.com

Alex
02.10.2016
01:20:15
> Бесточечная композиция функций just one question, why?

Дмитрий
02.10.2016
01:22:21
> Бесточечная композиция функций just one question, why?
Ну потому что в примере выше можно менять, удалять и добавлять любой из шагов не теряя выразительности и не упоминая данные вообще, это чисто описание пошагового процесса

Alex
02.10.2016
01:22:47
В примере выше те же точки только больше символов

плюс, я могу написать например так

stuff .map .reject() .select() и также менять их местами и редактировать

Google
Alex
02.10.2016
01:23:34
только как правило это не нужно

Дмитрий
02.10.2016
01:23:41
В примере выше те же точки только больше символов
Ты не можешь вставить вместо одного из шагов какую-либо свою фугкцию или целый пайплайн

Alex
02.10.2016
01:24:03
больше похоже на искуственное граничение?

Дмитрий
02.10.2016
01:24:14
Я для одного проекта делал точечную версию рамды, типа писать как у тебя, но это не то

Alex
02.10.2016
01:24:17
в этой рамде ведь принципиально другой подход верно? только я его не понимаю.

Дмитрий
02.10.2016
01:25:25
больше похоже на искуственное граничение?
Это расширение возможностей) Через точку можно вызывать только заранее добавленные в либу вещи, а без точек — что угодно

Плюс мне не нужно упоминать данные вообще

Alex
02.10.2016
01:25:34
А, тоже верно

Дмитрий
02.10.2016
01:25:38
http://fr.umio.us/why-ramda/

Alex
02.10.2016
01:25:40
я как то не подумал об этом.

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

обычно просто кастомный обработчик писал.

Дмитрий
02.10.2016
01:26:24
Ну это и есть кастомный обработчик, только в одну срочку)

Сейчас найду пример)

Alex
02.10.2016
01:26:59
у меня тоже в одну.

т.е я пытаюсь понять преимущества рамды в подходе, кроме того, конечно же что можно lazy назначить заранее (хотя в рубях недавно тоже стало можно)

(вроде)

Дмитрий
02.10.2016
01:29:17
У меня его нет, у меня на выходе функция, его принимающая

Google
Alex
02.10.2016
01:30:04
Да я понял что ты заранее все это назначаешь.

Для JS наверное и неплохая вещь.

Дмитрий
02.10.2016
01:31:42
Во, это один целиковый поток исполнения с кучей опций и обработок, читать снизу вверх https://github.com/zerobias/speak-r/blob/develop/app/core/splitter.js

Правда наверное это не лучший пример, я тут кажется был мощно упорот, потому что я вообще не понимаю происходящего))

Alex
02.10.2016
01:32:26
> потому что я вообще не понимаю происходящего)) Перловые однострочники FTW

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

например мне не нужно лезть к определению.

Дмитрий
02.10.2016
01:33:25
В смысле?)

Alex
02.10.2016
01:33:55
ну всмысле ты сначала создаешь определение где пайпаешь обработчики

Дмитрий
02.10.2016
01:34:04
Ну, это оно и есть

Alex
02.10.2016
01:34:04
а потом уже получившейся функции кормишь данные и она дает тебе результат

Дмитрий
02.10.2016
01:34:08
Да

Alex
02.10.2016
01:34:12
Вот, а у меня не надо лезть к определению.

оно сразу там где юзается.

Дмитрий
02.10.2016
01:34:30
А зачем? Я лучше напишу функцию один раз

Alex
02.10.2016
01:34:43
Потому что эти обработчики редко когда совпадают

Дмитрий
02.10.2016
01:34:56
В плане? А если у тебя пришли не те данные, а ты от них с точкой что то вызываешь?

Alex
02.10.2016
01:35:10
В смысле не те данные?

как у тебя могут прийти не те данные?

Дмитрий
02.10.2016
01:35:32
Вместо массива - число, а ты от него .map делаешь

Google
Alex
02.10.2016
01:35:50
Вместо массива - число, а ты от него .map делаешь
Каким образом оно так получится то? ))

Может у меня еще объект придет?

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

Дмитрий
02.10.2016
01:41:12
Так программа не должна ломаться же) Она может обрабатывать пограничные случаи, предоставляя разные варианты выхода из ситуации

А не fatal error

Alex
02.10.2016
01:41:51
Не может программа не ломаться

У тебя всегда могут быть моменты которые ты не учел

и если программа вместо того чтобы выдать фатал станет unusable - будет хуже

Дмитрий
02.10.2016
01:42:40
Нет, она просто грамотно соберет данные для отладки и всё выведет в нужной форме

Alex
02.10.2016
01:42:49
не знаю точного термина. Когда программа сглотнет те данные которые не должна была и обработает как если бы было все ок.

Admin
ERROR: S client not available

Alex
02.10.2016
01:43:37
Нет, она просто грамотно соберет данные для отладки и всё выведет в нужной форме
Объясни. Представь что АПИ ответило тем способом которым ты не ожидал. А тебе надо пользователю страницу отдать. Что ты предлагаешь делать?

я сваливаюсь в FATAL ERROR потому что апишка не должна так отвечать ни в коем случае.

соотв пользователь видит "произошла ошибка, попробуйте позже".

Дмитрий
02.10.2016
01:44:36
А я спокойно собираю данные, для того, чтобы в ответ отправить важную для разработчиков инфу

Alex
02.10.2016
01:44:40
Всегда есть варианты которые сложно учесть.

разработчики курят логи

в логах все эксепшены есть.

Дмитрий
02.10.2016
01:45:03
А какие логи, если у тебя программа упала?

Google
Alex
02.10.2016
01:45:19
ну, я на рельсах

Дмитрий
02.10.2016
01:45:22
в логах все эксепшены есть.
В логах у юзера, а по упало

Alex
02.10.2016
01:45:34
оу, я про вебсайт говорил все это время ахах.

Извини.

Да, на фронте надо собирать данные для какого нибудь багснета.

Тем не менее представим что фронт сломался. Что ты покажешь пользователю? наверное в конкретном куске напишешь "извините произошла ошибка, попробуйте позже" верно?

по возможности оставив все остальное приложение работать.

Я сейчас в голове представляю react приложение если что.

Дмитрий
02.10.2016
01:47:13
по возможности оставив все остальное приложение работать.
Что значит по возможности, ты же в error выпадаешь?)

Имея Maybe я не могу себе представить, как что-то вообще может идти "не так"

Alex
02.10.2016
01:47:41
запросто. Что то может пойти не так. Не обработанная ситуация.

Допустим никто не обрабатывал момент что этот микросервис отвалился, вариантов тысячи.

Дмитрий
02.10.2016
01:48:47
До тех пор пока не пришел ответ у меня объект имеет значение Maybe Nothing()

Alex
02.10.2016
01:49:58
ты ведь про фронт верно?

Дмитрий
02.10.2016
01:50:17
Ну не обязательно

На ноде это даже лучше работает

Alex
02.10.2016
01:50:33
Ну если про бэк то я просто сваливаюсь в FATAL ERROR

потому что это действительно не обработанная ситуация

и я должен ее быстро увидеть.

просто на фронте и бэке подходы кардинально отличаются.

Дмитрий
02.10.2016
01:52:11
Ну я скорее про сам подход

Если я попытаюсь вызывать у объекта Either.Right(serverResponse) какой то ключ, а его там не будет, то у меня будет объект Left('handler123 recived wrong data'), который автоматически безопасно пройдет через любые обработчики и будет корректно документирован любым способом

Страница 1257 из 4568