Size: a a a

2019 October 28

ŹR

Źmićer Rubinštejn in ErlangRus
А функция, которая их по очереди вызывает называется согласно бизнес кейсу а не реализации)
источник

EM

Evgeny M. in ErlangRus
короче на русском читать и писать яснее. на английском привычнее и проще, за счет малого словарного запаса.
источник

DF

Denis Fakhrtdinov in ErlangRus
А можно пример такого кода?
источник

EM

Evgeny M. in ErlangRus
можно, но позже, я с телефона
источник

EM

Evgeny M. in ErlangRus
а хотя нет, есть файлы на телефоне, сейчас скину
источник

EM

Evgeny M. in ErlangRus
'посчитать_итератором'(It, {error, _}, Acc) ->
 erocksdb:iterator_close(It),
 Acc;

'посчитать_итератором'(It, _, Acc) ->
 'посчитать_итератором'(It, erocksdb:iterator_move(It, next), Acc + 1).




'разослать_задания'([], _Itr, ItrRec, _Config, _PoolName) ->
 {[], ItrRec};


'разослать_задания'(FreeWorkers, _Itr, {error, _} = ItrRec, _Config, _PoolName) ->
 {FreeWorkers, ItrRec};


'разослать_задания'([W | FreeWorkers], Itr, {ok, Url, _BinV} = _ItrRec, Config, PoolName) ->
 gen_server:cast(whereis(W), {url, Url, self(), PoolName}),
 'разослать_задания'(FreeWorkers, Itr, erocksdb:iterator_move(Itr, next), Config, PoolName).

'ошибочные обратно в очередь'(DB, CFErr, CFUrls) ->
 {ok, [It]} = erocksdb:iterators(DB, [CFErr], []),
 Initial = erocksdb:iterator_move(It, first),
 'ошибочные обратно в очередь'(DB, It, Initial, CFErr, CFUrls).


'ошибочные обратно в очередь'(_DB, It, {error, _}, _CFErr, _CFUrls) ->
 erocksdb:iterator_close(It);

'ошибочные обратно в очередь'(DB, It, {ok, Url, _BinV}, CFErr, CFUrls) ->
 erocksdb:put(DB, CFUrls, Url, <<>>, []),
 erocksdb:delete(DB, CFErr, Url, []),
 'ошибочные обратно в очередь'(DB, It, erocksdb:iterator_move(It, next), CFErr, CFUrls).
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Чет вспомнился опердень...
источник

V

Vasilii Demidenok in ErlangRus
после 1C я смотрю сложно переучиваться?
источник

DF

Denis Fakhrtdinov in ErlangRus
Ну что ж, могу только порекомендовать переименовать 'посчитать_итератором' в 'посчитать_повторятором'.
источник

DF

Denis Fakhrtdinov in ErlangRus
Иначе неканонично.
источник

EM

Evgeny M. in ErlangRus
англицизмы в качестве профессионального сленга ок
источник

EM

Evgeny M. in ErlangRus
1с - ну на 1с я что-то писал один раз в жизни, но в принципе их подход мне понравился
источник

ŹR

Źmićer Rubinštejn in ErlangRus
А в эрланге принято писать самому рекурсии, или это конкретно код такой? Двигать ручками крусор в итераторе выглядит максимально итеративно. Вроде такое не принято в ФП, не?
источник

EM

Evgeny M. in ErlangRus
хз, мне так нравится
источник

EM

Evgeny M. in ErlangRus
по любому тут фолд не сделать, это итераторы
источник

EM

Evgeny M. in ErlangRus
итератор тут идет из nif-а для работы с rocksdb, от него сложно избавиться
источник

ML

Maksim Lapshin in ErlangRus
Evgeny M.
'посчитать_итератором'(It, {error, _}, Acc) ->
 erocksdb:iterator_close(It),
 Acc;

'посчитать_итератором'(It, _, Acc) ->
 'посчитать_итератором'(It, erocksdb:iterator_move(It, next), Acc + 1).




'разослать_задания'([], _Itr, ItrRec, _Config, _PoolName) ->
 {[], ItrRec};


'разослать_задания'(FreeWorkers, _Itr, {error, _} = ItrRec, _Config, _PoolName) ->
 {FreeWorkers, ItrRec};


'разослать_задания'([W | FreeWorkers], Itr, {ok, Url, _BinV} = _ItrRec, Config, PoolName) ->
 gen_server:cast(whereis(W), {url, Url, self(), PoolName}),
 'разослать_задания'(FreeWorkers, Itr, erocksdb:iterator_move(Itr, next), Config, PoolName).

'ошибочные обратно в очередь'(DB, CFErr, CFUrls) ->
 {ok, [It]} = erocksdb:iterators(DB, [CFErr], []),
 Initial = erocksdb:iterator_move(It, first),
 'ошибочные обратно в очередь'(DB, It, Initial, CFErr, CFUrls).


'ошибочные обратно в очередь'(_DB, It, {error, _}, _CFErr, _CFUrls) ->
 erocksdb:iterator_close(It);

'ошибочные обратно в очередь'(DB, It, {ok, Url, _BinV}, CFErr, CFUrls) ->
 erocksdb:put(DB, CFUrls, Url, <<>>, []),
 erocksdb:delete(DB, CFErr, Url, []),
 'ошибочные обратно в очередь'(DB, It, erocksdb:iterator_move(It, next), CFErr, CFUrls).
Я бы такое выбросил не читая
источник

VS

Vladimir Sekisov in ErlangRus
Źmićer Rubinštejn
А в эрланге принято писать самому рекурсии, или это конкретно код такой? Двигать ручками крусор в итераторе выглядит максимально итеративно. Вроде такое не принято в ФП, не?
по идее, в отсутствие ленивости, лучше обернуть
- в генератор с продолжением-функцией
- вывернуть зависимость и сделать traverse/fold
- сделать поток на процессах
тут все гвоздями прибито, что не возбраняется -
кому как нравится
источник

AB

Alex Bubnov in ErlangRus
Źmićer Rubinštejn
А в эрланге принято писать самому рекурсии, или это конкретно код такой? Двигать ручками крусор в итераторе выглядит максимально итеративно. Вроде такое не принято в ФП, не?
это голый интерфейс рокса такой, ничего не поделать
а вот необернутые gen_server:cast - это уже попахивает
источник

AB

Alexander Bogosyan in ErlangRus
А вот у нас народ любит макросить например так : -define(s, State#state). Или  -define(d, State#state.data). Типа чтобы было меньше писать при доступе к полям record в каком нибудь genserver, мне это не очень нравится, хочу узнать среди тру-эрлангистов такое норм?
источник