@Fsharp_chat

Страница 714 из 772
Arseniy
14.09.2018
21:43:59
Давай играем. Плюс цена разработки.
я уже в это играл. только с лямбдами амазона

Ivan
14.09.2018
21:44:13
Я б вообще только на расте писал, если б не стоимость

Arseniy
14.09.2018
21:45:09
ну я бы скорее на хаскеле писал, чем на расте

Google
Ayrat
14.09.2018
21:45:21
мой пойнт, что на твоих нагрузках ты бы не видел разницы ни в памяти ни в производительности от инфраструктуры языка, какую бы ты не выбрал
Ну вот смотри, мне надо затянуть 50 кусков говна по 2мб каждый. Из каждого куска выцепить по 50 сущностей и ещё раз затянуть но уже по 5мб каждый. Почти полтора гига сырых данных. Далее мап редьюс и залить ответ. Парсинг накладывает сверху. Границы - уложиться в 128мб оперативы (нижняя граница прайсинга ажурных функций) и 5мин работы (а лучше 10 сек)

Можно написать на тасках? Конечно.

Но проще в пару строчек на гопаке

https://gist.github.com/Szer/8293c05de445911d616b451b006eac11

Ivan
14.09.2018
21:46:45
Основной рабочий фрагмент какокго размера Айрат?

Ayrat
14.09.2018
21:47:48
Основной рабочий фрагмент какокго размера Айрат?
Результат там сотни килобайт, херня. Но перемолотить надо гигабайты как правило

Ivan
14.09.2018
21:48:12
Результат там сотни килобайт, херня. Но перемолотить надо гигабайты как правило
Выборка потоковая? То есть по входящему потоку можно лишнее отбрасывать?

Ayrat
14.09.2018
21:49:43
ну я бы скорее на хаскеле писал, чем на расте
Хаскель далек от промышленной разработки

Выборка потоковая? То есть по входящему потоку можно лишнее отбрасывать?
Да, это ж стрим. Очевидно надо загрузить и проверить)

Фильтры, чузы (для опшнов) все на лету делается

Потому в памяти не оседает

Ivan
14.09.2018
21:51:14
Хаскель далек от промышленной разработки
Да не совсем. Последний компилер дает офигенную оптимизацию. Но по сложности - тв прав

Google
Ivan
14.09.2018
21:51:56
Тогда можно попробовать.

Ayrat
14.09.2018
21:52:03
Да не совсем. Последний компилер дает офигенную оптимизацию. Но по сложности - тв прав
Я имел в виду тулинг, суппорт от облачных вендоров, ide, либы, интеграции, вот это вот все

Ivan
14.09.2018
21:53:30
Ну и что тебе не нравится? Библиотеки пока д... Но перспектива офигенная. А тулинг - на уровне фшарп, если не лучше.

Ayrat
14.09.2018
21:54:03
Студия тоже норм, она меня тормозами бесит только

Ivan
14.09.2018
21:54:38
https://intellij-rust.github.io/

Ayrat
14.09.2018
21:55:02
https://intellij-rust.github.io/
Ты про хаскель вроде?

(я-то точно про хаскель)

Ivan
14.09.2018
21:55:46
Не - я хаскель люблю. Но это всеж не для промышленного применеия.

Bonart
14.09.2018
21:55:55
Эт да, только надо уточнить что аудитория данного доклада будет крайне мала!
Не гони! Аудитория будет, ты уже широко известен в узком кругу.

Ayrat
14.09.2018
21:56:34
Arseniy
14.09.2018
21:57:28
есть один вопрос с тем, как ставятся задачи

Ivan
14.09.2018
21:57:42
"Узкий круг ограниченных людей!"
Айрат, ну за что ты нас так ?

Bonart
14.09.2018
21:57:45
> надо сильно в себе культивировать один единственный правильный стиль и всегда его предерживаться, что контпродуктивно А вот здесь мы вас и поправим!

Bonart
14.09.2018
21:58:18
Айрат, ну за что ты нас так ?
Его сишарписты слушали, развесив уши

Arseniy
14.09.2018
21:58:39
Ayrat Stream.mapParallelJob 24 dataLake.DownloadString — эта штука прсто на пачки бьет или более умная?

Google
Ivan
14.09.2018
21:58:59
И себя не любют. А вот мы его очень. Как так?

Ayrat
14.09.2018
21:59:18
Это кастомная приблуда

Bonart
14.09.2018
21:59:19
Ayrat
14.09.2018
21:59:38
Но в гопаке есть похожая. Ща

Arseniy
14.09.2018
21:59:39
тут один вопрос, как всегда. если одна задача завершается, оно протолкнет на выполение следующую или будет ждать всю пачку?

Ivan
14.09.2018
22:00:01
Где?

Arseniy
14.09.2018
22:00:14
ну так и давай одно слово

Ivan
14.09.2018
22:01:04
В хопаке, скорее всего, вообще нить переключаться не будет. В асинках и тасках - как получится.

Roman
14.09.2018
22:01:30
Хехехе. Если одним словом
Кароче, backpressure есть?)

Arseniy
14.09.2018
22:01:35
при чем тут нить. тут вопрос в том, как ты задачки накидываешь

Ivan
14.09.2018
22:02:13
Кароче, backpressure есть?)
Это не те стримы. Не реактивные.

Ayrat
14.09.2018
22:02:40
Это не те стримы. Не реактивные.
не, эти как раз с бекпрешуром https://gist.github.com/Szer/535909c37cdf5b92777c15d00ad25456

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

Ivan
14.09.2018
22:04:18
Вот, хотя пример. В доке нет не фига. А я уже его гениальнвй код (без шуток) устаю читать на каждый чих (ну старый)

Ayrat
14.09.2018
22:04:21
при чем тут нить. тут вопрос в том, как ты задачки накидываешь
если в гист посмотришь, то там очень умный пул который будет перемалывать с постоянной загрузкой N воркеров. При этом можно даже динамически изменять это самое N

Arseniy
14.09.2018
22:06:31
принцип работы это всего какой?

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

Ayrat
14.09.2018
22:07:10
принцип работы это всего какой?
евентлуп проверяет альтернативы - есть чо в канале про degree? есть чо в канале done? есть чо в канале input и т.д.

Google
Arseniy
14.09.2018
22:07:59
то есть, ты суешь 100500 задача в очередь и дальше гребешь их с заполненным окном в 24?

я просто не вижу картину в целом. суть в том, что надо понять, что задачка кончилась. надо взять новую.

Кароче, backpressure есть?)

Ayrat
14.09.2018
22:09:27
то есть, ты суешь 100500 задача в очередь и дальше гребешь их с заполненным окном в 24?
нет. Я создаю намерение скачать 100500 говна. Когда пул незаполнен работой он тянет себе работу (бек прешур) если даунстрим не готов принять результат то новые работы из апстрима браться не будут

Кароче, backpressure есть?)
Там кода на 50 строк с пустыми.

а логика на 10 строк

Arseniy
14.09.2018
22:11:34
и?

Ayrat
14.09.2018
22:12:13
и?
и ничего. Я ответил на твои вопросы?

Arseniy
14.09.2018
22:13:29
нет. либо я не понял

у меня нет студии, чтобы понять твои операторы.

Ayrat
14.09.2018
22:13:55
Тогда повторюсь. Это с бекпрешуром.

Arseniy
14.09.2018
22:15:46
ну то есть как это работает

ты засосал задачи, направил на исполнение, дальше смотришь, кто завершился или где https://gist.github.com/Szer/535909c37cdf5b92777c15d00ad25456#file-streams-fs-L12

и где новые забираются?

Ayrat
14.09.2018
22:20:12
работает на альтернативах евентлуп опрашивает есть что в канале degree? если да, то меняем стейт евентлупа с новым уровнем degree если нет, идём дальше. спрашиваем у канала done? если там есть что (какая-то ранее выполненная работа), то пытаемся отдать её в даунстрим ченел и после этого меняем стейт евентлупа с меньшим уровнем загрузки. если нет, идём дальше, если уровень текущей загрузки позволяет взять ещё работки сверху, то пытаемся прочитать канал input и поработать с ним (в свежесозданной джобе, нам на неё насрать, мы её не тречим. обмазав try catch). результат засылаем во внутренний канал done и возвращаем новый стейт евентлупа с большим уровнем загрузки. если у нас всё занято, то висим на alt.never (т.е. ничего не делаем и ожидаем хотя бы одну предудыщую альтернативу)

и где новые забираются?
вот здесь inputCh ^=> (worker

Arseniy
14.09.2018
22:22:26
да

я в глаза долблюсь.

норм, славлю КЛАСС

идея ясна, может быть уже в понедельник я еще раз это всё прогляжу.

Google
Vladimir
14.09.2018
23:31:09
если более развернуто. я когда работал писателем наскале, видел как человек на ревью зарубает за if(a == false), с мотивацией, мол надо писать if(!a), потому что это "читается как думается", а в случае a == false, надо распознать сравнение и тд и тп. далее, я знаю, что многие аналитики, в sql запросе предложение where начинают с 1 = 1, потому что дальше они через and будут писать условия, которые будут комментироваться и расскомментироваться по 100 раз. даллее, я знаю людей, которые не любят тернарный оператор в C#, потому что он якобы мешает им думать и там легко совершить ошибку. но по факту, на фоне всего объяма кода , если вникаешь в суть, заметить эти нюансы просто невозможно. для этого надо сильно в себе культивировать один единственный правильный стиль и всегда его предерживаться, что контпродуктивно. то есть if от match я не отличу. а если там будет поднято вычисление в монаду ради якобы больше "парадигмальности", то конечно будет фи.
Я тоже пишу 1=1 в SQL чтобы условия удобно было через AND добавлять)

Arseniy
14.09.2018
23:38:33
Я тоже пишу 1=1 в SQL чтобы условия удобно было через AND добавлять)
нормальная практика, которая никому ничего читать не мешает,

Roman
15.09.2018
05:38:58
Но по результату не отличаются
Нет. Sin(sqr(2)) это не композиция, это пайпинг. F(x)=sin(sqr(x)) это композиция

Не сбивайте человека в начале пути )))

Evgeniy
15.09.2018
07:16:35
https://twitter.com/k_cieslak/status/1040700427405279233

Artemy
15.09.2018
08:39:02
Я думаю, то был просто пример эквивалентных выражений

Roman
15.09.2018
08:40:42
Выражений да. Не совсем понял наверное.

Ivan
15.09.2018
08:45:31
https://twitter.com/k_cieslak/status/1040700427405279233
Чуть чуть осталось до метапрограммирования

Roman
15.09.2018
16:51:14
https://www.nuget.org/packages/Fable.Semantic/0.5.0 Я пакет выложил

Ставьте зведы, делайте пулл реквесты, форкайте своим друзьям https://github.com/fsharplang-ru/Fable.SemanticUI/

Страница 714 из 772