Size: a a a

2021 June 21

V

V in pro.elixir
спасибо конечно, но я просил не это
источник
2021 June 22

a

atanych in pro.elixir
привет, подскажи пжл, вот я год назад нарезал файл на чанки+манифест, но я сейчас просто подкинул в  <video> файл mp4 (около 100мб), и он отдается с 206 Partial Content и без проблем перематывается на любое время без полной загрузки файла

Это чтото новое в html появилась, или это фишка сервака отдать чанками?

В обоих случаях в чем сейчас смысл m3u8 если файл нормально отдается без  доп разрезки?
источник

IN

Ildar Nasyrov in pro.elixir
подскажите по GenServer: handle_cast используется для асинхронного изменения состояния, handle_call - для синхронного получения состояния. Есть ли какой-то механизм, контроллирующий, что все асинхронные изменения завершились и handle_call вернет данные только после завершения всех handle_cast - то есть самое актуальное состояние
источник

A ß in pro.elixir
скорее всего вы хотите странного
источник

A ß in pro.elixir
проще будет рассказать задачу, чем спрашивать про механизм
источник

IN

Ildar Nasyrov in pro.elixir
щас сделаю вторую попытку. конечно, я не исключаю, что я делаю что-то не то.

1. Есть GenServer, который я планирую использовать для хранения истории выстрелов
2. в init этого GenServer вызываю Phoenix.PubSub.Subscribe, который получает через broadcast результат выстрела (попадание/промах)
3. в handle_info обрабатываю события - вызываю GenServer.cast - чтобы добавить в массив вновь пришедший результат
4. есть метод-интерфейс - get_all, который через GenServer.call получает массив результатов

И вот вопрос: есть ли гарантия, что get_all вернет состояние только после обработки всех cast
источник

A ß in pro.elixir
нет, гарантии надо обеспечивать самому
источник

IN

Ildar Nasyrov in pro.elixir
хм, и как же
источник

A ß in pro.elixir
количество выстрелов заранее известно?
источник

IN

Ildar Nasyrov in pro.elixir
да - один выстрел. просто на этот же broadcast еще liveview подписан. и нужно там убедиться, что я получил в результате вызова get_all последнее состояние
источник

IN

Ildar Nasyrov in pro.elixir
то есть нужно обновить на страничке историю выстрелов сразу после выстрела - и я в liveview вызываю для этого get_all, но не уверен, что это будет всегда работать
источник

A ß in pro.elixir
get_all сделать кастом, при получении записывать пид отправителя в состояние и когда все выстрелы сделаны отправлять всем, кто посылал get_all, текущее состояние
источник

IN

Ildar Nasyrov in pro.elixir
благодарю. нужно теперь переварить
источник

IM

Ivan Mironov in pro.elixir
а вы в шаге 3 cast другого какого-то генсервера вызываете?
источник

IN

Ildar Nasyrov in pro.elixir
этого же самого. здесь я опять не уверен, что это правильно
источник

IN

Ildar Nasyrov in pro.elixir
но вроде не ругается на это
источник

IM

Ivan Mironov in pro.elixir
если того же самого, то это лишнее, в handle_info коллбэке стейт тоже доступен
источник

IM

Ivan Mironov in pro.elixir
по поводу гарантий обработки, надо понимать, что call и cast это суть посылка сообщения, процессу генсервера и обрабатывать сообщения из очереди он будет гарантированно последовательно
источник

IN

Ildar Nasyrov in pro.elixir
думал об этом тоже. пробовал там call делать кстати - получил (EXIT) process attempted to call itself
источник

IN

Ildar Nasyrov in pro.elixir
то есть я могу изменить state прямо в handle_info и не делать cast лишний?
источник