Nikolay
Но спасибо
Vagif
Если страшно, то можно засунуть в отдельный актор (или просто extract method)
Nikolay
Вот эта штука смущает let db = AkkaDbUtils.getAkkaDbContext (), ну и в целом сам запрос в акторе, я бы наверное его всё же в отдельную функцию вынес, а вот что сделать с getAkkaDbContext не знаю
Vagif
getAkkaDbContext - это вспомогательная функция, строящая DbContext для SQLProvider (F# type provider)
Vagif
Согласен, уместно такой запрос выносить в отдельную функцию
Vagif
Но это к общему принципу отношения не имеет 😊
Vagif
Вот пример другого актора, который выглядит не так страшно and awaiting_files pendingMessage rights programFiles ack = actor { let! (message : obj) = mailbox.Receive() return! match message with | :? PsPrepareArchiveResult as message -> logDebugWithAckf mailbox ack "%A" message match handlePrepareArchiveResult message rights.PiProgId ack with | ProcessingFailed -> idle () | WaitForFiles -> awaiting_files pendingMessage rights programFiles ack | :? PsArchiveLookupResult as message -> logDebugWithAckf mailbox ack "%A" message handleLookupResult message pendingMessage ack rights programFiles idle () | :? Message<PsChangeMessage> -> mailbox.Stash () awaiting_files pendingMessage rights programFiles ack | :? ReceiveTimeout -> handleReceiveTimeout mailbox | LifecycleEvent e -> handleLifecycle mailbox e | _ -> UnhandledMessage }
Vagif
Там результат из БД получается по сообщению PsArchiveLookupResult и обрабатывается обращением к функции handleLookupResult
Vagif
Но, имхо, простые и быстрые обращения к БД не обязательно заслуживают async или отдельного актора. По крайней мере если вызывающий актор довольно простой
Nikolay
let scheduleMessage db cmd = query { for row in db.Dbo.ScheduledMessages do where (row.MessageReference = cmd.Id && row.Triggered = false && row.Cancelled = false) select row } |> Seq.iter (fun row -> row.Cancelled <- true) db.Dbo.ScheduledMessages.``Create(Cancelled, Message, MessageReference, MessageVersion, TriggerTime, Triggered)``( false, cmd.Message |> serializeObject, cmd.Version, cmd.TriggerDateTime, false) |> ignore db.SubmitUpdatesAsync () let scheduleMessagesActor (mailbox : Actor<_>) = let rec loop () = actor { let! (msg : obj) = mailbox.Receive() let db = AkkaDbUtils.getAkkaDbContext () return! match msg with | :? ScheduleMessageCommand as cmd -> scheduleMessage db cmd |> Async.pipeTo (retype mailbox.Self) (fun result -> { Command = cmd; Result = result }) loop() | :? ScheduleMessageResult as result -> let cmd = result.Command match result.Result with | Result.Ok _ -> sendAck mailbox cmd.Ack <| sprintf "Scheduled message for %s on %A" cmd.Id cmd.TriggerDateTime | Result.Error exn -> db.ClearUpdates() |> ignore logErrorWithExnAckf mailbox exn cmd.Ack "Could not schedule message for %s" cmd.Id sendNack mailbox cmd.Ack <| sprintf "Could not schedule message for %s" cmd.Id loop() | _ -> UnhandledMessage } loop ()
Nikolay
Мне вот так это видится
Nikolay
Только db нужно бы правильно заинжектить. В Akka.Net вроде можно это через DI сделать, а тут не понятно как 🤔
Nikolay
Через параметр создания актора
Это получается функция должна быть?
Vasily
Ну можно и функцией
Vasily
Можно в отдельном акторе хранить конфиги
Vasily
И из него по запросу брать
Vagif
Через параметр создания актора
Да, именно так. Мы общим DI не пользуемся, просто через пропс акторов передаем то, что надо из конфигурации
Vasily
А можно и через пропс, кстати
Vasily
Млин, хочу в Норвегию, там крутые скалолазные районы
Vasily
Но там безумно дорого, конечно
Roman
А температурное ограничение какое на скалолазание? В Норвегии ж холодно большую часть года
Vladislav
Повисеть на языке тролля?)
Там же вроде нельзя? Только на него встать и уйти
Roman
Там же вроде нельзя? Только на него встать и уйти
Звучит разумно. Но всегда можно наплевать и потом штраф оплатить
Vladislav
Ну либо с Брейвиком в тюрячке посидеть)
Ayrat
Ну либо с Брейвиком в тюрячке посидеть)
ток ему двадцатничек за сотку трупов нарисовали, а Васе десяточку за штраф нарисуют
Ayrat
будет обидно
Vasily
будет обидно
Значит, шобы не было обидно, нужна сотня трупов еще
Vagif
ток ему двадцатничек за сотку трупов нарисовали, а Васе десяточку за штраф нарисуют
Брейвика и после 21 не выпустять. Там есть clause соответствующий
Klei
будет обидно
Ну ты сравнил. Брейвик план разрабатывал, бомбы делал и т.д. А Василий всего лишь на стенку залезет.
Ayrat
Я просто думал что в Норвегии срок ограничен и пожизненного нет
Vasily
Ну ты сравнил. Брейвик план разрабатывал, бомбы делал и т.д. А Василий всего лишь на стенку залезет.
По слухам, в Норвегии такие стенки, что хрен даже 6А залезешь (это примерно уровень месяцев двух лазания)
Vagif
для него особый сделали?
Нет, там особые не делают (и гордятся, что ради одного маньяка не будут ничего менять), но есть условие, по которому после пребывания в заключении (по крайней мере за тяжкие преступления) должна комиссия выносить решение о возможности возвращения в общество. Это всегда было формальностью до Брейвика. Но он ни в чем не раскаивается, его комиссия не выпустит. Вроде бы ежегодно такая комиссия дает заключение, если человека оставляют
Vagif
А так в Норвегии максимум - 21 год.
Klei
По слухам, в Норвегии такие стенки, что хрен даже 6А залезешь (это примерно уровень месяцев двух лазания)
Чет быстро. Я думал что скалолазанье куда более требовательное. Я даже жир свой не сброшу за это время.
Vagif
Вообще-то сроки очень маленькие дают, и стараются без заключения. Приятель сына подрался, и ему грозит около месяца тюрьмы. Который в Норвегии обычно заменяется электронным браслетом, так что даже на работу можно ходить. “Представляешь, какой ужас, - говорит сын, - только дома и на работу, больше никуда."
Vladislav
Вместо задержания
Крылатый
Вместо задержания
Задержание это не то
Крылатый
Ты имел ввиду заключения.
Vladislav
Ага
Vasily
И 6А это легко обычно
Aleksandr
Варгу вроде тоже 21 год дали, а отсидел 15
Vasily
Вот для 7А/7В я уже толстоват :(
Vladislav
Варгу вроде тоже 21 год дали, а отсидел 15
Это который церковь поджег?
Aleksandr
Да, и Евронимуса убил
Klei
Вот для 7А/7В я уже толстоват :(
Я понял так, что 6А уже максимум. Пойду гуглить.
Aleksandr
Это который церковь поджег?
Кстати, сейчас он успешный блогер
Vasily
Vasily
Но эту категорию лезет 20 человек в мире
Vasily
Да и то по паре лет насасывают
Klei
Только какая связь?
Vasily
Там скалодромов вроде нет
Vasily
Точнее, я о них ничего не знаю :)
Klei
Хз. Рекламы фитнесов с этим видел. Без понятия, как оно.
Klei
Сам вряд ли полезу.
Vasily
Скажу так - это лучше, чем фитнес
Vasily
Опять же, девчонки красивые
Klei
Фитнесом я тоже не занимаюсь.
Vladislav
А травмоопасность какая?
Klei
К тому же эти ваши скалы - бессмысленный риск.
Крылатый
Опять же, девчонки красивые
А в фитнессе некрасивые?
Vasily
А травмоопасность какая?
Если соблюдать тб, очень низкая
Vasily
Ну и лезть посильные категории, не на пределе возможностей тела
Vasily
Точнее, он не выше, чем вероятность сбития тебя машиной на регулируемом переходе
Ayrat
Там нет риска
мне кажется это не соответствует действительности
Ayrat
Читай ниже
ниже тоже похоже на преувеличение
Roman
мне кажется это не соответствует действительности
ну там страховками обмазываются как следует. Если херней не страдать и делать по уму — не расшибешься