Size: a a a

ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)

2020 June 02

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Dima
для чего такие абстракции?
по сути это такая суперкомбинация StateT, ReaderT, EitherT и Free
сейчас я переписываю код, который будет работать как симуляция конкаренси
там очень важно, чтобы код выполнялся пошагово, чтобы с одной стороны можно было бы симулировать неопределённость выполнения
т.е. переключаться в любой момент с шага в одной симуляции треда на другой
а с другой стороны важно, чтобы эта "неопределённость" была полностью контролируема, т.е. поймав один раз мерцающий баг - ты бы мог запустить код и он отработал бы в точно таком же порядке
а потом добавить трассировок -и он всё равно продолжил бы выполняться в таком порядке
поэтому мне нужно сочетание Free, EitherT и StateT, если это всё наслаивать друг на друга - получается очень плохо воспринимаемый и отлаживаемый код
а если сделать сразу толстую штуку, отвязанную от области применения. хорошо её независимо оттестить, я буду относительно уверен, что баги в моей реализации не будут от того, как я делаю цикл обхода
разделяю на ортогональные концепты

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

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

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
ну почему кога обсуждаем что-то нормальное, приходит опять какой-то чел с какой-то политотой
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
да шутка была
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
чо ты
источник

P

Pavel in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
я прочитал твое сообщение выше и мне стыдно стало
источник

P

Pavel in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
источник

D

Dima in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
по сути это такая суперкомбинация StateT, ReaderT, EitherT и Free
сейчас я переписываю код, который будет работать как симуляция конкаренси
там очень важно, чтобы код выполнялся пошагово, чтобы с одной стороны можно было бы симулировать неопределённость выполнения
т.е. переключаться в любой момент с шага в одной симуляции треда на другой
а с другой стороны важно, чтобы эта "неопределённость" была полностью контролируема, т.е. поймав один раз мерцающий баг - ты бы мог запустить код и он отработал бы в точно таком же порядке
а потом добавить трассировок -и он всё равно продолжил бы выполняться в таком порядке
поэтому мне нужно сочетание Free, EitherT и StateT, если это всё наслаивать друг на друга - получается очень плохо воспринимаемый и отлаживаемый код
а если сделать сразу толстую штуку, отвязанную от области применения. хорошо её независимо оттестить, я буду относительно уверен, что баги в моей реализации не будут от того, как я делаю цикл обхода
разделяю на ортогональные концепты

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

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

D

Deλ✨ in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
источник

GP

Grigory Pomadchin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
конкаренси
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Dima
короче, ты пилишь ништяки для хай-левел конкарренси
ну это тоже, в итоге это просто будет удобный тип для тестов
источник

AT

Aλeksei Tereχin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
источник

ZM

ZLoyer Matveev in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
по сути это такая суперкомбинация StateT, ReaderT, EitherT и Free
сейчас я переписываю код, который будет работать как симуляция конкаренси
там очень важно, чтобы код выполнялся пошагово, чтобы с одной стороны можно было бы симулировать неопределённость выполнения
т.е. переключаться в любой момент с шага в одной симуляции треда на другой
а с другой стороны важно, чтобы эта "неопределённость" была полностью контролируема, т.е. поймав один раз мерцающий баг - ты бы мог запустить код и он отработал бы в точно таком же порядке
а потом добавить трассировок -и он всё равно продолжил бы выполняться в таком порядке
поэтому мне нужно сочетание Free, EitherT и StateT, если это всё наслаивать друг на друга - получается очень плохо воспринимаемый и отлаживаемый код
а если сделать сразу толстую штуку, отвязанную от области применения. хорошо её независимо оттестить, я буду относительно уверен, что баги в моей реализации не будут от того, как я делаю цикл обхода
разделяю на ортогональные концепты

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

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

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
и симуляций
источник

D

Dima in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
ну это тоже, в итоге это просто будет удобный тип для тестов
не думал больше такого добавить в доки/ридми своей либы?
источник

ZM

ZLoyer Matveev in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Dima
не думал больше такого добавить в доки/ридми своей либы?
это же еще не готово
источник

D

Dima in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
show cases/use cases
источник

D

Dima in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
ZLoyer Matveev
это же еще не готово
ну когда будет
источник

D

Dima in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
блин
источник

D

Dima in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
очень хочу такого
источник

ZM

ZLoyer Matveev in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
ну комунити потихоньку контрибутит в доку
источник