Size: a a a

2020 May 17

GI

Gleb Ivanov in pro.elixir
Nikita Babushkin
Если я ничего не путаю, то это из эрланга приехало, а не выдумалось для эликсира. Я про map size
Так в эрланге есть и maps:size, зачем депрекейтить-то 🤷‍♂️
источник

V

V in pro.elixir
Котаны, есть какой-нибудь способ автоматического создания ecto-миграции на основе сравнения эликсир-схемы с текущей структурой бд? Пример как это делается в других фреймвоках: пхпшная Doctrine (migrations:diff).
источник

LL

Lama Lover in pro.elixir
V
Котаны, есть какой-нибудь способ автоматического создания ecto-миграции на основе сравнения эликсир-схемы с текущей структурой бд? Пример как это делается в других фреймвоках: пхпшная Doctrine (migrations:diff).
Вроде нет, звучит как хорошая идея для опенсорса
источник

BB

Boris Beginin in pro.elixir
Lama Lover
Вроде нет, звучит как хорошая идея для опенсорса
+
источник

МБ

Максим Барулин... in pro.elixir
V
Котаны, есть какой-нибудь способ автоматического создания ecto-миграции на основе сравнения эликсир-схемы с текущей структурой бд? Пример как это делается в других фреймвоках: пхпшная Doctrine (migrations:diff).
Я искал, не нашёл
источник

DA

Denis Afonin in pro.elixir
А кто-нибудь с :ssh.daemon работал, точнее с тамошним уникодом?

В инете полно инструкций, и все сводятся к одному: :io.setopts Process.group_leader, binary: true, encoding: :unicode. Вот только оно не работает, совсем. Кодировка latin1? как у shell-процесса, так и у его "лидера".

Покопавшись в исходниках (OTP 23.0-rc0), я нашёл там:

handle_msg({Group, set_unicode_state, _Arg}, State) ->
   Group ! {self(), set_unicode_state, false},
   {ok, State};


И далее:

 handle_ssh_msg({ssh_cm, _ConnectionHandler,
   {data, _ChannelId, _Type, Data}},
       #state{group = Group} = State) ->
   List = binary_to_list(Data),
      to_group(List, Group),
   {ok, State};
 # …
 to_group([], _Group) ->
     ok;
 to_group([$\^C | Tail], Group) ->
     exit(Group, interrupt),
     to_group(Tail, Group);
 to_group(Data, Group) ->
     Func = fun(C) -> C /= $\^C end,
     Tail = case lists:splitwith(Func, Data) of
         {[], Right} ->
             Right;
         {Left, Right} ->
             Group ! {self(), {data, Left}},
             Right
     end,
     to_group(Tail, Group).


То есть, уникод наглухо и безальтернативно режется :erlang.binary_to_list/1.

Я написал хак, обходящий это вероятное безобразие, но всё же смущает - может, в этом есть какой-то смысл, который мне не ясен?
источник

Е

Евгений in pro.elixir
Господа, что за говно?
Так уж получилось, полез сегодня смотреть как реализован в эликисире протокол Enumerable для Map и как-то жестко прихуел:
Enumerable.List.reduce(:maps.to_list(map), acc, fun)
https://github.com/elixir-lang/elixir/blob/c592d1300d3dba34bf8005cb9e124c9004ac45ea/lib/elixir/lib/enum.ex#L3779
Что это за херня? Они превращают мапу в список??? А если в мапе миллион записей?
Полез в эрланг, а там оказывается итераторы есть, чтобы бегать по мапе.
По-моему - это эпик фейл, нет?
Или это я тупой?
источник

LL

Lama Lover in pro.elixir
Евгений
Господа, что за говно?
Так уж получилось, полез сегодня смотреть как реализован в эликисире протокол Enumerable для Map и как-то жестко прихуел:
Enumerable.List.reduce(:maps.to_list(map), acc, fun)
https://github.com/elixir-lang/elixir/blob/c592d1300d3dba34bf8005cb9e124c9004ac45ea/lib/elixir/lib/enum.ex#L3779
Что это за херня? Они превращают мапу в список??? А если в мапе миллион записей?
Полез в эрланг, а там оказывается итераторы есть, чтобы бегать по мапе.
По-моему - это эпик фейл, нет?
Или это я тупой?
Да, это не совсем эффективно, но всем плевать
источник

Е

Евгений in pro.elixir
Мне не плевать, у меня в приложухе есть большие мапы, я был уверен, что оно лениво ходит, а оно оказывается адские списки генерит
источник

LL

Lama Lover in pro.elixir
Евгений
Господа, что за говно?
Так уж получилось, полез сегодня смотреть как реализован в эликисире протокол Enumerable для Map и как-то жестко прихуел:
Enumerable.List.reduce(:maps.to_list(map), acc, fun)
https://github.com/elixir-lang/elixir/blob/c592d1300d3dba34bf8005cb9e124c9004ac45ea/lib/elixir/lib/enum.ex#L3779
Что это за херня? Они превращают мапу в список??? А если в мапе миллион записей?
Полез в эрланг, а там оказывается итераторы есть, чтобы бегать по мапе.
По-моему - это эпик фейл, нет?
Или это я тупой?
Например, map для списка тоже реализована не максимально эффективно. Даже в эрланге
источник

LL

Lama Lover in pro.elixir
Евгений
Мне не плевать, у меня в приложухе есть большие мапы, я был уверен, что оно лениво ходит, а оно оказывается адские списки генерит
Вообще иметь большие мапы - это не весело. Если слишком большие - то пожалуйста :ets
источник

Е

Евгений in pro.elixir
Lama Lover
Например, map для списка тоже реализована не максимально эффективно. Даже в эрланге
Да о какой максимальности речь? Тут даже минимально не эффективно
источник

Е

Евгений in pro.elixir
Lama Lover
Вообще иметь большие мапы - это не весело. Если слишком большие - то пожалуйста :ets
:ets каждый элемент гоняет между процессами, а мапа, если внутри одного процесса - максимально эффективно.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Евгений
Господа, что за говно?
Так уж получилось, полез сегодня смотреть как реализован в эликисире протокол Enumerable для Map и как-то жестко прихуел:
Enumerable.List.reduce(:maps.to_list(map), acc, fun)
https://github.com/elixir-lang/elixir/blob/c592d1300d3dba34bf8005cb9e124c9004ac45ea/lib/elixir/lib/enum.ex#L3779
Что это за херня? Они превращают мапу в список??? А если в мапе миллион записей?
Полез в эрланг, а там оказывается итераторы есть, чтобы бегать по мапе.
По-моему - это эпик фейл, нет?
Или это я тупой?
А как оно по твоему должно работать?
источник

LL

Lama Lover in pro.elixir
Евгений
Да о какой максимальности речь? Тут даже минимально не эффективно
Оооо, тогда предлагаю тебе заценить Stream. Вот там вот очень весело
источник

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
А как оно по твоему должно работать?
Через :maps.iterator видимо
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
А как оно по твоему должно работать?
через итераторы, нет?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Евгений
через итераторы, нет?
Нет, с чего бы это
источник

LL

Lama Lover in pro.elixir
Ну я могу от лица нашего чатика засабмиттить PR и мы посмотрим что нам ответят
источник

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
Нет, с чего бы это
Ну, тогда не придётся конвертить мапу в список
источник