Size: a a a

Эликсир и Вунш

2019 September 14

SS

Sergey Samokhvalov in Эликсир и Вунш
вот здесь https://github.com/bochsdbg/hlcup2_ex/blob/master/lib/hl_cup.ex#L8 должен быть акутальный тюпл с 12тью или 13ю элементами
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
IO.inspect item
источник
2019 September 15

SS

Sergey Samokhvalov in Эликсир и Вунш
Alexey Bolshakov
сей много, я не осилил )
такс, сегодня вот руки дошли — сделал
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
{:dict_sizes,
[
  city: 609,
  country: 70,
  fname: 108,
  sname: 1638,
  email_domain: 13,
  interest: 90
]}
{129, :time, 290797, :mem_current, 2.5888671875, :mem_total, 371.8291015625}
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
общее время на распаковку и добавление в базу — около 45 секунд, база 370 метров
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
еще можно сэкономить, сделав поля has_primary, has_phone и другие необязательные, где 1 бит на поле has_* даст какой-то выйгрыш. ну и interests можно кодировать поплотнее, при желании (не по 8 бит на интерес, а по 7)
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
ну или для бОльшей производительности, наоборот, добавить побольше битности, посмотреть по выравниванию (заодно можно из бинаря считывать будет по индексам бОльшую часть полей)
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
правда, без упаковки в бинарь все же не получилось — похоже, там действительно немного криво указаны размеры, занимаемые составными структурами, ну или я криво посчитал
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
где-то там по 60 метров на файл выходило, что слишком много. но все же в бинарь удобнее упаковывать и распаковывать его, чем в длинные числа)
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
да, и интересы, насколько я помню, там особо не нужны, на самом деле (насколько я помню, там нет запросов вида get_interests_by_account_id). там нужен индекс (типа gin) interest -> account_id, лайки кстати тоже. но по лайкам приходится строить прямой и обратный индекс для некоторых запросов. думаю, что могут влезть и лайки, если списки [id1, id2, id3, ...] хранить в виде «id1 :: 24, id2 :: 24, id3 :: 24, ...», по три байта на id там должно хватать.
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
ну а вообще, сама база-то фигня, вся сложность — это именно индексы представлять. и делать пересечения по этим индексам. и вот тут как раз оверхед ets даст о себе знать: если в плюсах можно в теории один индекс сохранить в 1300000*4 — где-то в 5 метрах, то в эрланге к этому как минимум добавится 6 байт на запись. в итоге в память поместится гораздо меньше индексов, ну и пересечения считаться будут, разумеется, заметно медленнее. и именно в этом сложность решения этой задачи на эрланге/эликсире.
источник
2019 September 18

VM

Valik Mogish in Эликсир и Вунш
Привет, друзья!
Кто может подсказать, хочу использовать Mox для тестирования запросов, теструю я модульно, иногда тест пишется на какой нибудь отдельный flow, и call к созданому mock’у происходит внутри флоу.
Вопрос, могу ли я получить список этих вызовов? В идеале я бы видел что то подобное`HttpMock.list_calls()` .
В документации информации об этом не вижу, заранее спасибо
источник

SM

Sergei Maximov in Эликсир и Вунш
А *какую* информацию о вызове ты хочешь увидеть? Переданные аргументы? caller?
источник

SM

Sergei Maximov in Эликсир и Вунш
Sergei Maximov
А *какую* информацию о вызове ты хочешь увидеть? Переданные аргументы? caller?
В API такой функции нету, но в зависимости от хотелок, можно попробовать реализовать самому
источник

VM

Valik Mogish in Эликсир и Вунш
Переданные аргументы, верно
источник

SM

Sergei Maximov in Эликсир и Вунш
Valik Mogish
Переданные аргументы, верно
Если не трогать исходники Mox, то самое простое — это внутри expectation самому руками сохранять информацию о вызовах в ets/GenServer/Agent.
источник

T

Tharin in Эликсир и Вунш
Sergei Maximov
Если не трогать исходники Mox, то самое простое — это внутри expectation самому руками сохранять информацию о вызовах в ets/GenServer/Agent.
+
источник

T

Tharin in Эликсир и Вунш
запустить GenServer и хранить в нем стейт
источник

SM

Sergei Maximov in Эликсир и Вунш
Sergei Maximov
Если не трогать исходники Mox, то самое простое — это внутри expectation самому руками сохранять информацию о вызовах в ets/GenServer/Agent.
Если трогать исходники Mox, то всё доступно внутри функции __dispatch__
источник

SM

Sergei Maximov in Эликсир и Вунш
Sergei Maximov
Если не трогать исходники Mox, то самое простое — это внутри expectation самому руками сохранять информацию о вызовах в ets/GenServer/Agent.
Можно делать это не руками, а через трассировку вызовов, тогда expectation менять не придётся
источник