Size: a a a

2020 January 09

ŹR

Źmićer Rubinštejn in ErlangRus
Была бы операция "атомарно-удалить-старую-етс-и-переименовать-другую-етс-чтобы-она-называлась-как-удаленная"
источник

AB

Alexander Beniaminov in ErlangRus
создаешь сразу два ets t1 t2 и в стейте генсервера указываешь какой актуальный
источник

SP

Sergey Prokhorov in ErlangRus
ну смотри.. diff не так сложно сделать (если конечно там не миллионы строк):
update(Replacement) ->
Current = ets:tab2list(..),
CurKeys = sets:from_list(keys(Current)),
NewKeys = sets:from_list(keys(Replacement)),
ToDeleteKeys = sets:subtract(CurKeys, NewKeys),
ets:insert(.., Replacement),
[ets:delete(.., Key) || Key <- sets:to_list(ToDeleteKeys)].
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Alexander Beniaminov
создаешь сразу два ets t1 t2 и в стейте генсервера указываешь какой актуальный
Так "боттлнека" в виде генсервера и пытаюсь избежать
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Так придется ходить сперва в gs а потом в ets
источник

PG

Pïg Grëënëst in ErlangRus
пихни её в persistent_term
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Pïg Grëënëst
пихни её в persistent_term
Да, крутая тема но эрланг 20 пока что...
источник

AB

Alexander Beniaminov in ErlangRus
за все приходится платить :)  но  отдать текущую ets  это очень быстро
источник

PG

Pïg Grëënëst in ErlangRus
тогда fast_global? я не знаю поддерживает он двадцатый эрланг или нет
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Pïg Grëënëst
тогда fast_global? я не знаю поддерживает он двадцатый эрланг или нет
Может реально ее взять...
источник

SP

Sergey Prokhorov in ErlangRus
Sergey Prokhorov
ну смотри.. diff не так сложно сделать (если конечно там не миллионы строк):
update(Replacement) ->
Current = ets:tab2list(..),
CurKeys = sets:from_list(keys(Current)),
NewKeys = sets:from_list(keys(Replacement)),
ToDeleteKeys = sets:subtract(CurKeys, NewKeys),
ets:insert(.., Replacement),
[ets:delete(.., Key) || Key <- sets:to_list(ToDeleteKeys)].
с небольшой доработкой можно сделать чтоб оно не перезаписывало ключи у которых не изменились значения, но насколько это оправданно наверное зависит от того какой % ключей обновляется при апгрейдах
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Sergey Prokhorov
с небольшой доработкой можно сделать чтоб оно не перезаписывало ключи у которых не изменились значения, но насколько это оправданно наверное зависит от того какой % ключей обновляется при апгрейдах
В общем это тоже подходит получается...
источник

ŹR

Źmićer Rubinštejn in ErlangRus
И даже не жалко ресурсов на перезапись все по той же причине, что на скорость обновления в данном случае плевать
источник

SP

Sergey Prokhorov in ErlangRus
ну я так делал для продакшна на очень загруженной таблице (Yuri возможно видел - кеш id валют / неймспейсов / консьюмеров в WGM; может уже выпилили с тех пор, но работало норм)
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Но возможно реально лучше просто вкомпиливать этот кеш
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Fast global потом легко меняется на persistent term
источник

ŹR

Źmićer Rubinštejn in ErlangRus
А это выглядит максимально стабильно на чтение, и все ещё пофик на запись
источник

RA

R A in ErlangRus
Кто-нибудь скрещивал https://github.com/davisp/erlang-native-compiler и cmake? Хочу понять, есть ли смысл заморачиваться, или проще сделать руками.
источник

PG

Pïg Grëënëst in ErlangRus
а если есть pre_hooks и post_hooks, То почему нельзя звать make или cmake прямо из них?
источник

RA

R A in ErlangRus
Можно, вопрос в том, стоит ли тащить зависимость. Или проще написать в ридми "запусти такой-то скрипт" и не возиться.
источник