
Dmitry
30.03.2018
08:36:56
на схему можно вешать валидации, т.е. для каждой таблицы в бд, с которой собираешься работать - нужна схема
это в простом случае; а так как у тебя могут быть разные контексты, то может быть несколько схем на одну таблицу (по схеме в каждом контексте), но это уже из области DDD

Denis
30.03.2018
08:44:56

Google

Dmitry
30.03.2018
08:46:22
Я прошу прощения, а есть rdb без схемы?
Может ты намекаешь на AR, которое падает в рантайме если указал неправильные поля?

Le
30.03.2018
08:51:12
что бы работать со сторонней базой в фениксе главное выпилить таски, автоматом запускающиеся для миграций

Denis
30.03.2018
08:51:21
Я прошу прощения, а есть rdb без схемы?
хотел просто подлючиться к базе взять какие-нибудь данные. в рельсах так делал. в конфиге прописал параметры подключения и мог обращаться к таблицим базы, дергань нужную информацию. в фениксе как оказалось так сделать нельзя. нужна схема базы ну или дергать Postgrex ом

Dmitry
30.03.2018
08:52:19

Le
30.03.2018
08:54:56
В фениксе ничего не запускается автоматом
есть дефолтные алиасы в миксе
defp aliases do
[
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
"ecto.reset": ["ecto.drop", "ecto.setup"],
"test": ["ecto.create --quiet", "ecto.migrate", "test"]
]
end
обычно вся проблема в этом тест) с непривычки люди думают какого черта миграцию пробую накатиться и падают

Dmitry
30.03.2018
08:56:02
На тестовой базе только
А она и так пустая
В любом нормальном проекте на любом языке

Le
30.03.2018
08:57:32

Denis
30.03.2018
08:58:09

Dmitry
30.03.2018
08:58:24

Google

Dmitry
30.03.2018
08:58:28
Просто пустая папка с миграциями по дефолту

Dmitry
30.03.2018
08:59:02
С чего бы
Без миграций таск по миграции обычно падает, и там пишут - мол создайте папку)

Dmitry
30.03.2018
08:59:02
Все отлично сработает

Dmitry
30.03.2018
08:59:22
а мб у меня феникс староват

Dmitry
30.03.2018
08:59:42
Тут вопрос к экто а не фениксу
Но папка пустая создаётся при генерации фениксовского проекта

Le
30.03.2018
09:03:01

Dmitry
30.03.2018
09:03:29

Le
30.03.2018
09:03:36
не очень

Dmitry
30.03.2018
09:03:45
Но только на тестовой базе

Le
30.03.2018
09:04:15
не уверен что есть смысл считывать schema_migrations c пустой папкой миграций
а феникс по умолчанию сделали алиас вызывающий на тесты миграции

Dmitry
30.03.2018
09:04:55
Выходит, ты прав
Надо грохать тестовую базу
Или скипать миграции

Le
30.03.2018
09:06:25
Если одновременно с рельсой используется, то лучше просто вызов миграционной убрать
Рельса же создаст потом
Вообще не рекомендую переписывать приложение через общение на уровне бд

Google

Le
30.03.2018
09:07:53
Лучше выносить части становящиеся сервисами и сразу их нормально использовать

Максим
30.03.2018
09:52:46

Buckler
30.03.2018
17:14:39
Hello, Shevchenko87!
Please, calculate:
38+50=...
If you don't answer - you'll get banned from the channel...
Good luck!

Evgeny
31.03.2018
08:04:58
Мне нужно прицепить символ (в переменной код символа) к строке.
Что православнее str <> <<c::utf8>> или <<str::binary, c::utf8>>?

Vladimir
31.03.2018
08:15:47
первое - чисто эликсировское, и вполне возможно, что компилятор это развернёт во второй вариант.

Buckler
31.03.2018
13:14:15
Hello, Andrew!
Please, calculate:
18+56=...
If you don't answer - you'll get banned from the channel...
Good luck!

Taras ?
31.03.2018
20:46:03

Evgeny
01.04.2018
08:24:11
Забавно, но str <> <<c::utf8>> медленнее, чем <<str::binary, c::utf8>>
и заметно медленнее.
Я не силен в эрланге и не знаю чем
concat1(Vstr@1, Vchar@1) ->
<<Vstr@1/binary, <<Vchar@1/utf8>>/binary>>.
отличается от
concat2(Vstr@1, Vchar@1) ->
<<Vstr@1/binary, Vchar@1/utf8>>.
похоже на лишнее преобразование codepoint в binary
видимо недоработка компилятора Elixr, потому что
<<^char::utf8>> <> rest = str
и
<<(<<^char::utf8>>), rest::binary>> = str
компилируются в идентичный код

Александр
01.04.2018
09:22:07
привет, ты очень непонятно написал, то ты вроде бы матчишь, то конкатенируешь
где именно проблема?
можешь цельный пример дать?

Evgeny
01.04.2018
09:39:58
проблем никаких нет. это просто исследование.
сначала я конкатенировал и выяснил, что то что в принципе ожидается одинаковым, на самом деле неодинаково
потом попробовал матчинг, который имеет схожий синтаксис, и оказалось, что там все оптимизируется как надо

Alik
01.04.2018
09:41:34
вы ещё скажите что [{ :a, :b }] == [a: :b]

Evgeny
01.04.2018
09:41:47
а так матчинг и конкатенация никак прямо не связано, да

Google

Evgeny
01.04.2018
09:42:13

Alik
01.04.2018
09:42:24
я к тому что в эликсире достаточно таких моментов, когда разный код даёт одинаковый результат\
как и :Elixir.A ==A

Evgeny
01.04.2018
09:42:50
тут наоборот, в целом одинаковый код дает разный результат
смотрите конкатенацию, а не матчинг
именно с нее все и началось, матчинг - это просто доп проверка

Alik
01.04.2018
09:44:54
хм, кажется понял. надо будет попробовать, как компилятор под рукой будет

Evgeny
01.04.2018
09:45:35
я уже попробовал и даже дизасм посмотрел, спасибо доброму человеку из этой группы давшему полезные ссылки

Александр
01.04.2018
10:04:07
тоже отдизассемблировал
http://joxi.ru/zANekyGHlRkLp2?d=1
http://joxi.ru/GrqYyzxSNLPlpr?d=1
в первом случае создаёт новую строку
во втором аппендит
судя по всему
я обдумал, достаточно логичное решение что <> создаёт дополнительный binary
если наугад из любых списков лепить строки, может быть много ошибок
а << >> как раз низкоуровневая конструкция (к которой всё и приводится в конце концов), которая позволяет оптимизировать этот процесс, если нужна дополнительная производительность
так что, лично мне кажется что тут оптимизация никакая не нужна

Sergey
01.04.2018
10:40:47
господа, а подскажите, пожалуйста, в элексире есть возможность вызывать фукнцию с именованными аргументами?
Чтобы вот так:
def foo(bar // nil, baz // nil) do
%{bar: baz}
end
foo(baz=1)
foo(bar=2)
foo()

Александр
01.04.2018
11:03:29
https://github.com/mgwidmann/named_args
?

Google

Dmitry
01.04.2018
11:24:05
о день 1сника