
Денис
21.04.2018
21:13:36
Всем привет) а подскажите по фениксу тут тоже можно вопросы задавать или есть отдельный канал?

Sergey
21.04.2018
21:19:24

Buckler
22.04.2018
09:17:02
Hello, VOVAN!
Please, calculate:
66+41=...
If you don't answer - you'll get banned from the channel...
Good luck!
Hello, Ivan!
Please, calculate:
5+18=...
If you don't answer - you'll get banned from the channel...
Good luck!

Google

Yuri
22.04.2018
11:41:32
Привет, подскажите, а как с case сработать в запросе Repo.one!(from c in Categories, where: c.id == 1) вернет ли nil или результат, ну и с результатом надо потом чет сделать

Marsel
22.04.2018
12:18:16
case Repo.one!(...) do
%Category{} = category - >...
nil - >...
end

Yuri
22.04.2018
12:18:34


Raman
22.04.2018
12:39:39
Ребята, всем привет.
Пишу свой модуль, который хочу использовать в других при помощи use. Я так понимаю, что там задействована макросовая магия, с чем я пока оч плохо знаком.
Смог завести базовый пример, когда функции просто вставляются в тело модуля. Использую defoverridable, однако когда я определил всего лишь одну более специфичную реализацию, то у меня благополучно пропали другие перегрузки.
Поэтому вопрос, можно ли добавить свою реализацию так, чтобы она не перекрывала полностью, а просто добавляла мою единственную перегрузку?
Пример кода: https://gist.github.com/RamanBut-Husaim/98e108a61ff9ef17fee632e4543a4679
Предполагаю, что можно через super обойти, но интересно, есть ли другие варианты?

Dmitry
22.04.2018
13:23:01
@rakkattakka Моя рекомендация, сделать вначале вообще без макросов, т.е. через композицию функций. Т.е. вместо super добавить вот так и всё без макросов: def process_response(result, conn), do: API.Response.process_response(result, conn)

Raman
22.04.2018
13:23:55
Dmitry , а понял. Оки. Можно же для этого ещё запользовать defdelegate насколько я знаю.
Но при таком подходе придётся в каждом модуле определять такие функции.
Кстати, через super завелось.
Мне ещё интересно, насколько это вообще нормальный подход с точки зрения дизайна. :)


Dmitry
22.04.2018
13:32:34
Я знаю, что оно и через super работает. Можно вообще тут магии понакрутить всякой(если чисто потреннироваться). Но, тут есть сейчас разница в том, что если без макроса, то все дефолтные мэтчи у тебя в одном модуле будет, а в случае use - они копируются каждый раз в новый модуль, соответственно конечные размеры модулей будут больше. Такой подход оправдан в случае с GenServer-ом стандартным, но в случае имплементации чего-то в приложении, лучше начать с композиции и только потом убирать в макросы. Желательно, чтобы при этом и функциональный интерфейс сохранился.
Тут ещё о чём, нужно подумать.
@rakkattakka То, что если будет что-то крэшиться в дефолтной имплементации, то не будет показана точная стрчока, где это произошло, нужно использовать здесь location: :keep
Чтобы получить в стектрейсе путь в правильное место.

Google

Raman
22.04.2018
13:54:44
Все, понял. Спасибо. Та же идея, что и с наследование vs композиция в ооп. А use очень сильно напоминает один из видов наследования - наследование с целью переиспользования кода.
Dmitry Russ (Aleksandrov) Спасибо большое за наводку. Полезные идеи.

Dmitry
22.04.2018
14:21:47
Чуваки, кто хочет поработать на неделе на еликсире?
25$ в час
Сразу с цены начинаю )
Работка не пыльная вообще для новичков
Переписать C# в эликсир

Rushan
22.04.2018
14:28:36
ох. Что ж я раньше Эрланг с Эликсиром не начал раньше учить

Raman
22.04.2018
15:05:44
Ради интереса, @Virviil , что пошло не так? Почему переписываете, если не запрещает контракт? Интересно, т.к. сам на dotnet фуллтайм.
:)

Taras ?
22.04.2018
15:06:32
25$ в час
норм
* пошел агитировать сестренку учить эрланг + эликсир *

Dmitry
22.04.2018
15:06:40

Артем
22.04.2018
15:18:46

Dmitry
22.04.2018
15:19:03
Ну если хочешь - могу через апворк завести
Только от 25 твоих сколько останется?

Артем
22.04.2018
15:19:35
Не, я там вчера такой проект видел, это не оно?

Dimon
22.04.2018
15:19:47

Dmitry
22.04.2018
15:20:16
Бывает иногда

Dimon
22.04.2018
15:21:13
буду иметь ввиду

Dmitry
22.04.2018
15:23:15
Самому времени нету

Google

Dmitry
22.04.2018
15:23:38
Хоть со своими поделюсь
А не с ындусами)
Тем больее недавно обсуждали работы за сравнительно большие деньги за бугор

Moi_nik
23.04.2018
06:43:47
Господа, какой elixir version manager вы используете? Есть-ли что-то типа RVM?

Denis
23.04.2018
06:45:29
asdf
Через него чутли не пол системы стоит

Alexander
23.04.2018
06:59:23
kiex

Yuri
23.04.2018
07:02:03

Alexander
23.04.2018
07:08:16
я тут порекламировал @BucklerBot в другом чятике, и заодно прочитал его описание.
У меня вопрос, что такое dirsty?
> I'm BucklerBot, and I'll defend your group or chat from dirsty spammers.

Никита
23.04.2018
07:11:07
Наверное, просто опечатка и предполагалось dirty

Alexander
23.04.2018
07:12:08
да ну я тоже так думаю, просто автор же тут же

Dmitry
23.04.2018
07:24:46
Опечатка походу

Sergey
23.04.2018
08:19:49
Господа, а есть у кого пример elixir проекта, который собирается на gitlab-ci?
Хочу подглядеть .gitlab-ci.yaml


Dmitry
23.04.2018
08:22:18
У меня только для heroku есть
stages:
- init
- test
- deploy
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- deps/
- _build/
init:
stage: init
image: virviil/asdf-elixir:latest
variables:
MIX_ENV: "test"
script:
- mix deps.get
- mix compile
test:
stage: test
image: virviil/asdf-elixir:latest
services:
- postgres:latest
variables:
MIX_ENV: "test"
script:
- mix ecto.reset
- mix test
code_analysis:
stage: test
image: virviil/asdf-elixir:latest
services:
- postgres:latest
variables:
MIX_ENV: "test"
script:
- mix format mix.exs "apps/**/*.{ex,exs}" "test/**/*.{ex,exs}" "config/**/*.{ex,exs}" --check-formatted
- mix credo
- mix compile --warnings-as-errors
deploy_stage1:
stage: deploy
image: virviil/asdf-elixir:latest
before_script:
- git fetch origin $CI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME --force
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- if git config remote.stage1.url > /dev/null; then git remote set-url origin dokku@iilhub.com:hota-core-s1; else git remote add stage1 dokku@iilhub.com:hota-core-s1; fi
- git push stage1 $CI_COMMIT_REF_NAME:master
cache: {}
environment:
name: stage1
url: http://hota-core-s1.iilhub.com
when: manual
# auto_deploy_stage1:
# stage: deploy
# image: virviil/asdf-elixir:latest
# before_script:
# - eval $(ssh-agent -s)
# - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
# - mkdir -p ~/.ssh
# - chmod 700 ~/.ssh
# - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
# - chmod 644 ~/.ssh/known_hosts
# script:
# - git push stage1 master
# cache: {}
# only:
# - master
Делюсь бесплатно


Артем
23.04.2018
08:24:00
mix compile —warnings-as-errors
прика
надо утянуть к себе

Google

Alexey
23.04.2018
08:24:33
да. это хорошая тема )

Артем
23.04.2018
08:32:13
а у меня тут кстати на проекте
Analysis took 3.6 seconds (0.1s to load, 3.5s running checks)
698 mods/funs, found 12 consistency issues, 1 warning, 57 refactoring opportunities, 83 code readability issues, 34 software design suggestions.
((
наследие от прошлых девелоперов
а бедный диаликсир даже не стартует

Le
23.04.2018
08:33:55
могу поделиться скриптами с билдом докера в докера, но они сложнее, если не требуется такое то лучше сриптом выше пользоваться

I
23.04.2018
08:34:50

Артем
23.04.2018
08:36:44

Egor
23.04.2018
08:37:46
Спеков не напишешься
Эк каждую функцию документировать, жизни не хватит

I
23.04.2018
08:38:38

Артем
23.04.2018
08:40:13
ну да, а если ещё и тесты писать это ж сплошное разбазариваение времени на ерунду, сколько кода можно было написать вместо

Dmitry
23.04.2018
08:42:00
Чтобы работал dialyzer не обязательно писать спеки
Он еще и сам тебе скажет, что твоя спека неправильная

Максим
23.04.2018
08:44:11
Всем привет! Что я не так сделал с протоколом? https://gist.github.com/Slavenin/f78fa3f9531b63d126078f7df9a2779c при компиляции пишет
== Compilation error in file lib/telegrm/handlers/start.ex ==
** (CompileError) lib/telegrm/handlers/start.ex:3: undefined function via_tuple/1
(stdlib) lists.erl:1338: :lists.foreach/2
lib/telegrm/handlers/start.ex:3: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
(elixir) lib/kernel/parallel_compiler.ex:198: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6

Sergey
23.04.2018
08:44:46


Dmitry
23.04.2018
08:45:23
Не умею в гисты)

Артем
23.04.2018
08:45:26
не обязательно, но желательно

Alexey
23.04.2018
08:45:50
выглядит очень трагично. не писал спеки, а потом вдруг написал. и тебе диалайзер сказал, что они не правильные )))