Size: a a a

2021 January 19

AH

Ayrat Hudaygulov in pro.net
Ilya Chernoudov
короче, хуй его знает где у тебя тут IO, но ридер твой синхронный
я знаю что он синхронный.
источник

AH

Ayrat Hudaygulov in pro.net
я его превращаю в асинхронный дедовским методом.
источник

AH

Ayrat Hudaygulov in pro.net
и не через треды!
источник

AH

Ayrat Hudaygulov in pro.net
а через магию стейт машин
источник

AH

Ayrat Hudaygulov in pro.net
как бы корутины и асинк идут рука об руку
источник

IC

Ilya Chernoudov in pro.net
дрочево ты какое устраиваешь, честно говоря
источник

AH

Ayrat Hudaygulov in pro.net
Ilya Chernoudov
дрочево ты какое устраиваешь, честно говоря
предложи другое.
источник

IC

Ilya Chernoudov in pro.net
Ayrat Hudaygulov
предложи другое.
работаю над этим
источник

IC

Ilya Chernoudov in pro.net
но кодить на F# у тебя получается лучше!
источник

AH

Ayrat Hudaygulov in pro.net
Ilya Chernoudov
но кодить на F# у тебя получается лучше!
покажи где в моем сишурпе ошибка!
источник

I

IdiocyAcceptance in pro.net
Ayrat Hudaygulov
ну вот гопак просто ебашит сотни тыщ и в ус не дует.
Даёшь Azure.Hopac!
источник

I

IdiocyAcceptance in pro.net
Ayrat Hudaygulov
@ilchert заведешь трилл, с меня гинесс
Кстати, завести трилл сложнее, чем гопак? Я в гопаке дальше ридми не дошёл
источник

AH

Ayrat Hudaygulov in pro.net
IdiocyAcceptance
Кстати, завести трилл сложнее, чем гопак? Я в гопаке дальше ридми не дошёл
я в трилле пытался хелоуворлд завести и нишмагла
источник

AH

Ayrat Hudaygulov in pro.net
я даже на датафлоу шмагла
источник

AH

Ayrat Hudaygulov in pro.net
let private linkOptions = DataflowLinkOptions (PropagateCompletion = true)

let private getLogsBlock(cluster, kustoClient) =
   TransformBlock<DateTime * DateTime,
                  string * DateTime * string[]>(fun (start, finish) -> task {
   let! logEntries = logsBetween kustoClient start finish
   let allLines = [| for log in logEntries -> log.ToString() |]
   return (cluster, start, allLines)
}, ExecutionDataflowBlockOptions(MaxDegreeOfParallelism = 1))

let writeToFileBlock = ActionBlock<string*DateTime*string[]>(fun (cluster, start, allLines) -> unitTask {
   do! afterTask(cluster, start, allLines)
}, ExecutionDataflowBlockOptions(MaxDegreeOfParallelism = 1))

let impl(): Task<unit> = task {
   do! kustoClients
       |> Seq.map(fun (cluster, kustoClient) -> unitTask {
           let logs = getLogsBlock (cluster, kustoClient)
           logs.LinkTo(writeToFileBlock, linkOptions) |> ignore
           for _, start, finish in dateQuants do
               let! _ = logs.SendAsync((start, finish))
               ()
       })
       |> Task.WhenAll
}
источник

AH

Ayrat Hudaygulov in pro.net
выглядит конечно уебищно местами, но вот такое там апи да
источник

AH

Ayrat Hudaygulov in pro.net
работает (в отличие от ченел стримов), но медленно
источник

I

IdiocyAcceptance in pro.net
А тюплы на структурки хотя бы не думал сделать? Или не актуально?
источник

IC

Ilya Chernoudov in pro.net
Ayrat Hudaygulov
выглядит конечно уебищно местами, но вот такое там апи да
DateQuants бесконечные?
источник

S

Sky Dreams in pro.net
Ayrat Hudaygulov
let private linkOptions = DataflowLinkOptions (PropagateCompletion = true)

let private getLogsBlock(cluster, kustoClient) =
   TransformBlock<DateTime * DateTime,
                  string * DateTime * string[]>(fun (start, finish) -> task {
   let! logEntries = logsBetween kustoClient start finish
   let allLines = [| for log in logEntries -> log.ToString() |]
   return (cluster, start, allLines)
}, ExecutionDataflowBlockOptions(MaxDegreeOfParallelism = 1))

let writeToFileBlock = ActionBlock<string*DateTime*string[]>(fun (cluster, start, allLines) -> unitTask {
   do! afterTask(cluster, start, allLines)
}, ExecutionDataflowBlockOptions(MaxDegreeOfParallelism = 1))

let impl(): Task<unit> = task {
   do! kustoClients
       |> Seq.map(fun (cluster, kustoClient) -> unitTask {
           let logs = getLogsBlock (cluster, kustoClient)
           logs.LinkTo(writeToFileBlock, linkOptions) |> ignore
           for _, start, finish in dateQuants do
               let! _ = logs.SendAsync((start, finish))
               ()
       })
       |> Task.WhenAll
}
источник