Alex
26.05.2018
21:45:56
Dmitry
26.05.2018
22:33:59
Тут только macro - потому что внутри map - поля не гарантируют порядок.
Map.keys(%Foo{}) -- [:__struct__] - выдаст в алфавитном порядке, но это может от версии к версии runtime-а менятся, т.е. не гарантировано, что будет всегда работать
Raman
27.05.2018
14:33:44
Check out @reachfh’s Tweet: https://twitter.com/reachfh/status/1000571675610497024?s=09
Google
Александр
27.05.2018
19:23:26
Alex
27.05.2018
19:26:25
Никита
27.05.2018
19:33:56
Map.keys
Alex
27.05.2018
19:34:48
Никита
27.05.2018
19:35:08
да, уж прочитал выше. никак, да ,ибо не гарантировано
есть еще defrecord
Alex
27.05.2018
19:51:49
Но является хорошим примером макроса, генерящего макросы
Fey
27.05.2018
20:21:14
defmodule Foo do
@fields [:foo, :bar]
defstruct @fields
def fields(%__MODULE__{} = foo) do
for field <- @fields, do: {field, Map.fetch!(foo, field)}
end
end
defmodule Example do
def run() do
%Foo{foo: 1, bar: 2} |> Foo.fields() |> IO.inspect()
end
end
Example.run()
Dmitry
27.05.2018
20:30:23
@feymartynov Либо вот так:
defmodule EnhancedStruct do
defmacro __using__(_opts) do
quote do
import Kernel, except: [defstruct: 1]
import EnhancedStruct
end
end
defmacro defstruct(fields) do
quote do
defstruct unquote(fields)
def fields(), do: unquote(fields)
def fields(%__MODULE__{} = data) do
for field <- unquote(fields), do: {field, Map.fetch!(data, field)}
end
end
end
end
defmodule Foo do
use EnhancedStruct
defstruct [:foo, :bar]
end
Мне такое решение нравится немного больше, тот же struct - можно потом использовать для своих структур везде, если уж такая функциональность нужна.
data = %Foo{foo: 1, bar: 2}
IO.inspect(Foo.fields())
data |> Foo.fields() |> IO.inspect()
Fey
27.05.2018
20:37:27
зачем только это нужно
Google
MrFlorius
27.05.2018
20:37:46
Это уже другой вопрос)
Максим
28.05.2018
08:39:29
Всем привет! Есть где-то свежий репозиторий с эликсиром под ценотсь?
В офф показывает какую-то древность
как альтернатива компилить, но это на последок оставлю
никак не могу нагуглить что-то нормальное
везде под бубунту
Alex
28.05.2018
08:43:30
быстрее скомпилишь чем будешь искать
Alexander
28.05.2018
08:46:35
Максим
28.05.2018
08:46:58
здесь нет проблемы
erlang я поставил
а вот версия elixir в репке 0,12
Alexander
28.05.2018
08:47:36
Вопрос был по репу, ответ тоже про репу. Там довольно свежий эликсир, в репе
Максим
28.05.2018
08:48:06
хм, может кэш, сейчас перегенерю
репозиторий от packages.erlang-solutions.com
Alexander
28.05.2018
09:02:11
чот я накосячил
проверил 10 раз, нету. А уверен что был. Хз откуда я тогда ставил.
тогда рекомендация kiex или asdf :)
а, вот же вообще https://elixir-lang.org/install.html#precompiled-package
наверное я в итоге без репы, прекомпайлд взял…
Google
Максим
28.05.2018
09:30:54
скомпилил в итоге... хотя странно блин
почему нет нормального пакета под центось
Артем
28.05.2018
09:33:26
надо использовать asdf
все остальные варианты приводят к страданиям
Максим
28.05.2018
09:33:53
нет нормальной инструкции под центос
надо руками искать и ставить пакеты
Артем
28.05.2018
09:34:40
жизнь - боль
но без asdf совсем тлен
недавно поймал баг с ssl известный
потратил пару часов в итоге надо то, чтобы сделать всё по-людски
Evgeny
28.05.2018
10:58:16
asdf пока лучший вариант под центось
Максим
28.05.2018
11:41:20
Артем
28.05.2018
11:43:09
с правами на порты ниже 1024
Максим
28.05.2018
11:43:30
блин, а под судо не видит mix
Артем
28.05.2018
11:44:29
обычно nginx на 80, феникс на 4000
судо идея так себе
Максим
28.05.2018
11:45:14
т.е всегда через проксю?
Dmitriy
28.05.2018
13:23:57
Добрый день! В феникс-приложение (чат) нужно добавить upload файлов через channel. Какие подходы, библиотеки для этого используются?
Google
Dmitriy
28.05.2018
13:24:35
в рельсах это тривиальная задача, на пару-тройку строк кода(при использовании гемов конечно). А в фениксе куда копать?
как понимаю, нужно передавать файл в виде base64. На стороне феникса, нужно декодировать base64 в файл. И сохранять. Нашел подходящую библиотеку arc (аналог carierwave на руби), которая связывает модель и файл
Максим
28.05.2018
13:39:47
эм, а куда шрифты пропали?
поставил свежий феникс
а там нет шрифтов
причём цсс они прописаны
Admin
Максим
28.05.2018
13:40:39
это как так?
Raman
28.05.2018
13:45:35
Я бы начал с проверки в разных браузерах и очистки кешей. :)
Максим
28.05.2018
13:48:21
так нет вообще даже папки такой в проекте
Dmitry
28.05.2018
14:26:20
И это 2 стоики кода?
Egor
28.05.2018
14:27:25
Зачем вебсокет? Пост, мультипарт
Артем
28.05.2018
14:27:30
говнокода
Dmitry
28.05.2018
14:27:37
Так channel же написано
Dmitriy
28.05.2018
14:27:41
при вебсокетах практически ничем не отличается, что и при обычных http-запросе
по крайней мере так, как я понимаю
Egor
28.05.2018
14:28:00
Ага, увидено
Dmitriy
28.05.2018
14:28:26
вот сейчас попробую на фениксе реализовать, посмотреть, есть ли какие-то особые ньюансы
Максим
28.05.2018
14:28:44
дайте, плиз, ссылку на годный конфиг вэбпака для фенткса, никак не получается сделать загрузку css
Google
Максим
28.05.2018
14:29:02
вроде компилит, но не отдаёт
c js проблем нет, а вот css не грузит
Dmitry
28.05.2018
14:45:59
2 строчки же
Dmitriy
28.05.2018
14:47:04
нужно еще интегрировать с ecto. генерация урлов, обработка картинок
Alexey
28.05.2018
14:50:58
Dmitriy
28.05.2018
14:51:12
ага, как раз его сейчас пробую
Raman
28.05.2018
15:11:29
A special case where deep copying doesn’t take place involves binaries (including
strings) that are larger than 64 bytes. These are maintained on a special shared binary
heap, and sending them doesn’t result in a deep copy. This can be useful when you
need to send information to many processes, and the processes don’t need to decode
the string.
Ребята, вопрос. Если в BEAM на каждый процесс сборщик мусора запускается, то кто чистит эту binary heap?
Это цитата из книги Elixir In Action.
The GC for shared heap is reference counting. Each object in shared heap (Refc) has a counter of references to it held by other objects (ProcBin) which are stored inside private heap of Erlang processes. If an object’s reference counter reaches zero, the object has become inaccessible and will be destroyed.
Нашёл.
Вопрос снят.
Источник - https://hamidreza-s.github.io/erlang%20garbage%20collection%20memory%20layout%20soft%20realtime/2015/08/24/erlang-garbage-collection-details-and-why-it-matters.html
Денис
28.05.2018
18:42:47
Всем привет, кто нибудь пользовался https://github.com/stavro/arc для файлаплоада? Я что то не вкурю как мне сделать что бы отдавался абсолютный путь к картинкам, если я локально их храню
Dmitry
28.05.2018
20:19:26
А зачем тебе абсолютный путь?
Денис
28.05.2018
20:34:10
ну что бы я на фронт отдавал сразу ссылку на изображение и не надо было склеивать на фронте ссылку
Dmitry
28.05.2018
20:35:41
Ссылка через бэк летит же