Nikolay
Не всё потеряно
Vladislav
ну он красивый так-то
Romɑn
Вы умеете поддержать )
Éminence grise
CSharp API кстати нормальная идея)
Сам знаешь, какой г. работать с канселлейшенами.
Klei
Оставить поддержку. @neftedollar Включай деприсняк, запрись в комнате и пиши статью по SAFE.
Nikolay
Не надо
Nikolay
Жизнь портить человеку
Klei
Жизнь портить человеку
Жизнь одного против блага каждого? Мир будет много лучше, если JS умрет и все будут писать на F#.
Nikolay
Так что js не умрёт
Éminence grise
Пока нам не завезут макросы, нам не светит 😊
Éminence grise
Все смотрели, как человек на расте типизированный JSX напилил?
Ayrat
Вот кстати, если кто захочет переписать шедулер акки на гопак. Надо написать свой ExecutorService. В текущем дефолтном не долго думая делают так: https://github.com/akkadotnet/akka.net/blob/41c116d2a3d280481e584401608ec848dc147632/src/core/Akka/Dispatch/Dispatchers.cs#L124 Затем намазать фабрику для его создания (запахло ООПешечкой по краю) https://github.com/akkadotnet/akka.net/blob/41c116d2a3d280481e584401608ec848dc147632/src/core/Akka/Dispatch/CurrentSynchronizationContextDispatcher.cs#L31 добавить кейс для выбора из конфиги https://github.com/akkadotnet/akka.net/blob/3c6115eb99960cf496a4ec56e565a0d34f0c991b/src/core/Akka/Dispatch/Dispatchers.cs#L417 И самое главное заменить дефолтного диспетчера актора (написан от души): https://github.com/akkadotnet/akka.net/blob/41c116d2a3d280481e584401608ec848dc147632/src/core/Akka/Dispatch/ActorTaskScheduler.cs#L61 через него всё в акторах и запускается в основном По первой ссылке можно сказать что люди вообще не заморачивались когда акку диспетчер писали
Éminence grise
Вот кстати, если кто захочет переписать шедулер акки на гопак. Надо написать свой ExecutorService. В текущем дефолтном не долго думая делают так: https://github.com/akkadotnet/akka.net/blob/41c116d2a3d280481e584401608ec848dc147632/src/core/Akka/Dispatch/Dispatchers.cs#L124 Затем намазать фабрику для его создания (запахло ООПешечкой по краю) https://github.com/akkadotnet/akka.net/blob/41c116d2a3d280481e584401608ec848dc147632/src/core/Akka/Dispatch/CurrentSynchronizationContextDispatcher.cs#L31 добавить кейс для выбора из конфиги https://github.com/akkadotnet/akka.net/blob/3c6115eb99960cf496a4ec56e565a0d34f0c991b/src/core/Akka/Dispatch/Dispatchers.cs#L417 И самое главное заменить дефолтного диспетчера актора (написан от души): https://github.com/akkadotnet/akka.net/blob/41c116d2a3d280481e584401608ec848dc147632/src/core/Akka/Dispatch/ActorTaskScheduler.cs#L61 через него всё в акторах и запускается в основном По первой ссылке можно сказать что люди вообще не заморачивались когда акку диспетчер писали
Да честно говоря, перспективы не вижу. УДобства эрланга нет. Порт с жабы со всеми ее (жаба машины) костылями. Ужасающая убогая сериализация. Невнятный кластер. Как то не по современному. Хороши только стримы.
Ayrat
Собсно UntypedActor намекает что тут что-то нечисто)))
Ayrat
Но как система - вполне рабочая. Просто когда начинаешь код акки смотреть, волосы встают дыбом. Надо ж было так наговнокодить
Éminence grise
Ayrat
Кстати по этим докам можно понять насколько важны диспетчеры: /// <summary> /// TBD /// </summary>
Éminence grise
Ну в кишках акка набор ядерных костылей, да
Кстати, ProtoActors заметно лучше написан, хотя пока сыроват и автор распыляется сильно.
Éminence grise
Там три протоактора - на C#, Go и Kotlin. Их в одном кластере можно запускать.
Éminence grise
Вот то один попилит, то другой.
Klei
И все это опять без F#...
Éminence grise
Ну это как водится. Но ведь никто не мешает на F# реализацию сделать.
Éminence grise
С гопаком и шл-ми
Klei
Ограниченность срока жизни мешает.
Éminence grise
Да ну. Там кода немного.
Éminence grise
Это не акку перелопатить
Klei
Это если понимаешь, что надо делать.
Klei
Приобретение понимания большую часть времени и съест.
Éminence grise
Ну и поймешь по ходу. Тот же орлеанс не очень сложный то же. Там просто до фига кодогенерации и магии при компиляции, в ней разобраться сложно.
Nikolay
Блин, сейчас пишу на акке, и понимаю, что круто и правильно сделал Funogram :3
Nikolay
Nikolay
@neftedollar'a звать?
Éminence grise
Да не вроде рано, она с хайринг группы
Romɑn
Не, ее я позвал
Romɑn
Его
Éminence grise
А, это глазастый парень 😊
Nikolay
Так, я туплю, или как? Есть функция, принимающая два аргумента, нужно эти два аргумента как-то через пайп оператор передать
Nikolay
Чёт не пойму как
Nikolay
Кортеж не вариант
Éminence grise
||>
Nikolay
Nikolay
Вот код
Nikolay
Из processState в memberHandler надо передать state и context
Éminence grise
У тебя процесс стате извини unit возвращает
Klei
Из processState в memberHandler надо передать state и context
memberJoin возвращает новый стейт?
Nikolay
Не пойму, что он должен возвращать
Nikolay
Nikolay
Стейт и option запрос
Éminence grise
Может прау (state, context)? тогда будет ||>
Nikolay
Nikolay
Может прау (state, context)? тогда будет ||>
Да так ок, насколько это правильно?
Éminence grise
А зачем тогда ||>
Klei
tee оператор можно заюзать. Но контекст только явно передавать.
Nikolay
https://gist.github.com/Dolfik1/d99799b4a11a099aa2731722aa23e9a6
Nikolay
Вот такой код
Nikolay
получается
Éminence grise
let processState (context: Actor<'a>) (state, req) = match req with | Some req -> select context.System Global.RequestProcessor <! req | None -> () state let rec memberHandler state (context: Actor<Message>) = function | Message.Join -> memberJoin state |> processState context |> memberHandler context |> become | Message.SolveCaptcha captcha -> memberHandler state context |> become
Éminence grise
Так не проще?
Klei
По моему здесь лучше было бы разбить тупл и обработать явно. Какое-то все взаимозависимое.
Éminence grise
Хотя бы я наверно Member join рызбил на две части и писал бы: let rec memberHandler state (context: Actor<Message>) = function | Message.Join when state.IsCaptchaSolved ->
Éminence grise
| Message.Join when state.IsCaptchaSolved ->
Éminence grise
код будет беp option
Klei
Там кстати req создается только вместе с изменением стейта. Признак того, что всей конструкции лушче возвращать общий option.
Éminence grise
Как тот так https://gist.github.com/ijsgaus/ac7660e3d9b95767d07169000721b039
x
кто-нить пытался накатить fira code на райдер? у меня он выглядит и пахнет как говно после этого
x
я пытался всё исправить по этой доке https://intellij-support.jetbrains.com/hc/en-us/articles/115001260010-Troubleshooting-IDE-scaling-DPI-issues-on-Windows
x
не помогает :(
Éminence grise
Так ты ему похоже как фонт IDE Fira поставил. Достаточно только в редакторе
x
так в редакторе и проблема