@frp_ru

Страница 199 из 420
Kelin
01.10.2017
20:13:58
ну серьезно

хочешь писать красиво, ищешь способы упростить, тебе говорят, что ты все делаешь не так и мапа достаточно

Dmitry
01.10.2017
20:16:01
Ты уверен что ты упрощаешь, когда добавляешь еще одну функцию которую надо гуглить ?

Denis
01.10.2017
20:16:24
и втирал, что редьюса достаточно
https://glebbahmutov.com/blog/reduce-reigns-supreme/

Google
Kelin
01.10.2017
20:16:48
и что?

Ты уверен что ты упрощаешь, когда добавляешь еще одну функцию которую надо гуглить ?
для сложных функций по-другому не катит - будет лапшекод

а функции эти легко запоминаются

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

Dmitry
01.10.2017
20:19:18
Как бы да, но потом твой код дают джуну который пытается вникнуть во все это и надо сидеть день два что бы во всем разобраться

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

Ну с другой стороны если ты сам в проекте, то пофиг

Kelin
01.10.2017
20:21:31
ну, я это не делаю в местах, которые будет ковырять джун

Dmitry
01.10.2017
20:21:51
хмм

Denis
01.10.2017
20:22:01
что тут не понятно?) const fromObjToKVList = compose(map(compose(merge({type: "str"}), zipObj(['key', 'value']))), toPairs) const fromKVListToObj = compose(mergeAll, map(compose(apply(objOf), values, pick(['key', 'value']))))

Denis
01.10.2017
20:22:39
ту и так 2 функции

нечего разносить

Google
Dmitry
01.10.2017
20:22:59
тут еще норм т.к вполне стандартные функции

но всякие juxt converge и тд

с рамды

project это не совсем стандартные штуки и они усложняют код

Denis
01.10.2017
20:24:17
ну и тут тоже // dataTransformer :: [[String]] -> [{String: String}] const dataTransformer = converge((h, t) => map(zipObj(h), t), [compose(map(toLower), head), tail])

Kelin
01.10.2017
20:25:04


Я сначала пишу как есть, а потом выношу

так красивее, имхо

Дмитрий
01.10.2017
20:25:50
project это не совсем стандартные штуки и они усложняют код
Ну project кстати норм, если бы он нормально типизировался -- был бы вообще огонь

Dmitry
01.10.2017
20:26:24
А у вас нету проблем с перформансом ? А то я как-то боюсь это все юзать

из-за того что куча лишних функций создается

Kelin
01.10.2017
20:26:48
Здесь нет работы с миллиардом данных в секунду, посему можно забить

Дмитрий
01.10.2017
20:26:56
У меня есть, лол))

Dmitry
01.10.2017
20:27:03
у меня тоже

Котяй Негодяй
01.10.2017
20:27:04
Ну, первая строка — это прям изподвыподверта.

Kelin
01.10.2017
20:27:05
де факто фп сосет в перфомансе

kana
01.10.2017
20:27:12
при работе с таким железно нужно какой препак

Котяй Негодяй
01.10.2017
20:27:19
Я б не поленился сделать отдельными строками.

kana
01.10.2017
20:27:22
чтобы в нормальную заголовочную форму приводить

Google
illiatshurotshka❄️
01.10.2017
20:27:28
purescript же будет работать быстрее чем чистый жс + рамда?

Kelin
01.10.2017
20:27:30
kana
01.10.2017
20:27:34
но он еще не готов

Kelin
01.10.2017
20:27:36
ахахахахах

как там препак поживает

Dmitry
01.10.2017
20:27:57
lodash+ пара ифов работает железно быстро ))

kana
01.10.2017
20:28:03
а, вообще да, там меньше магии

Kelin
01.10.2017
20:28:13
никто не рисковал юзать препак?

Дмитрий
01.10.2017
20:28:15
из-за того что куча лишних функций создается
V8 оптимизирует это. Рамда - не самя быстрая либа, но из за point free движку даётся большой простор для действий

Dmitry
01.10.2017
20:28:55
V8 оптимизирует это. Рамда - не самя быстрая либа, но из за point free движку даётся большой простор для действий
да в8 хорошо работает, но все же когда каждая функция врапается автокарингом, а потом еще и имутабельность

Дмитрий
01.10.2017
20:29:02
В реальных проектах - rollup или closure compiler (if you mad)

Kelin
01.10.2017
20:29:17
а че вебпак

Дмитрий
01.10.2017
20:29:37
Препак в реальных проектах не айс, но вообще я ток сегодня попробовал оптимизировать код на пурсе и офигел от того, что теперь умеет препак)) Как доделают - будет вообще огонь!

illiatshurotshka❄️
01.10.2017
20:29:40
Dmitry
01.10.2017
20:29:57
А когда на каждый чих надо бежать по большому дереву и мутировать его или считать какие-то значения с сабдерева и их мутировать, то хз как это быстро все работать бдет

illiatshurotshka❄️
01.10.2017
20:30:10
rewrite it in purescript

Dmitry
01.10.2017
20:30:30
Просто тот код где нету нагрузки на него, то пускай там и говнокод, но он работает и его смысла нету переписывать

Google
Дмитрий
01.10.2017
20:30:39
О ЩИ~~

Короче решил чёт посмотреть, как prepack справляется с компилированным purescript

Ладно то что он ответ сразу вывел уже не удивляет



Но от другого его финта я просто офигел) В общем в файле так же был json от вызова getDialogs, ну, на котором я тестирую парсер, так препак умудрился классифицировать его структуру и создать что-то типа классов 0_o



То есть $_G — это типа конструктор объекта "чат", а $_H — сразу его упрощённая версия, ну, чтоб два раза не вставать. То есть он даже определил что все чаты имеют флаги creator и deactivated



И это всё из обычного json ?? https://github.com/zerobias/telegram-mtproto/blob/feature/mtproto3/packages/mtproto-classify/src/Main.js#L13

Dmitry
01.10.2017
20:30:47
перформанс

принуждает

Котяй Негодяй
01.10.2017
20:31:01
НЕ мутировать. Пардон.

Котяй Негодяй
01.10.2017
20:31:12
Просто нужно знать, что ты делаешь.

Если мутишь, мути тихо.

=)

Дмитрий
01.10.2017
20:31:36
принуждает
Я кстати сомневаюсь что у тебя может повлиять именно рамда)

Kelin
01.10.2017
20:32:15
рамда же вообще ничего не мутирует

разве нет?

Google
Котяй Негодяй
01.10.2017
20:32:24
Просто убедись, что от создания сущности, до её возврата её никто не чекает.

Dmitry
01.10.2017
20:32:31
Я про то, что оно в императивном стиле не оч быстро, а хочется переписать что бы было красиво

Котяй Негодяй
01.10.2017
20:32:33
И мутируй её на здоровье.

Dmitry
01.10.2017
20:32:41
но переписывать на рамду нету смысла, только хуже станет

Дмитрий
01.10.2017
20:32:46
Реально, не на графиках и не говнокодя, я упёрся в её производительность только однажды, и этот код вызывался тысячи и десятки тысяч раз в секунду, генерируя 2 мегабайта форматированных логов в секунду

Dmitry
01.10.2017
20:32:50
даже если и красивей

Kelin
01.10.2017
20:33:04
не

Котяй Негодяй
01.10.2017
20:33:35
Вообще да. Я считаю, это преждевременная оптимизация.

Kelin
01.10.2017
20:33:38
у меня всего лишь либа для декларации вызовов к апишке там нет таких зверски требовательных действий она по сути большую часть кода отрабатывает один раз

Котяй Негодяй
01.10.2017
20:33:41
Пиши так, как понятно.

Дмитрий
01.10.2017
20:33:46
Если у тебя проблемы с перфомансом в проекте, то я могу на спор найти в нём десятки мест, которые бы аффектили перфоманс в разы сильнее иммутабельности из рамды

Я просто не раз в этом убеждался

Котяй Негодяй
01.10.2017
20:34:22
Когда возникнут реальные кейсы, то ты, по крайней мере, удешь видеть реальную проблему, а не гипотетическую. Это, согласись, очень сужает выборку.

Дмитрий
01.10.2017
20:34:26
А поподробнее?)

Dmitry
01.10.2017
20:34:49
Ну я делал ресайзы для сетки в сайтбилдере

там есть такая штука как мин сайз елемента

illiatshurotshka❄️
01.10.2017
20:34:58
го учить раст

Котяй Негодяй
01.10.2017
20:35:12
Либо ты превентишь все возможные кейсы и трахаешь себе мозги оптимизациями. При этом реализуется только процентов 10% этих кейсов... Стоит ли оно того?

Dmitry
01.10.2017
20:35:16
и из-за этого мин сайза надо считать мин сайз контейнера

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