@proelixir

Страница 963 из 1045
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
Alex
27.05.2018
19:26:25
храни их в отдельном списке, не?
Так вопрос как этот список не делать руками

Никита
27.05.2018
19:33:56
Map.keys

Alex
27.05.2018
19:34:48
Map.keys
Порядок будет другой

Никита
27.05.2018
19:35:08
да, уж прочитал выше. никак, да ,ибо не гарантировано

есть еще defrecord

Alex
27.05.2018
19:51:49
есть еще defrecord
Который делает совсем другие вещи

Но является хорошим примером макроса, генерящего макросы

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
Всем привет! Есть где-то свежий репозиторий с эликсиром под ценотсь?
думаю лучше сразу перейти к варианту который напоследок

быстрее скомпилишь чем будешь искать

Максим
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


asdf пока лучший вариант под центось
годная инструкция по установке есть?

Артем
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
так нет вообще даже папки такой в проекте

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. генерация урлов, обработка картинок

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
Ссылка через бэк летит же

Страница 963 из 1045