@proelixir

Страница 922 из 1045
Dmitry
30.03.2018
08:36:56
на схему можно вешать валидации, т.е. для каждой таблицы в бд, с которой собираешься работать - нужна схема

это в простом случае; а так как у тебя могут быть разные контексты, то может быть несколько схем на одну таблицу (по схеме в каждом контексте), но это уже из области DDD

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 ом

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
На тестовой базе только

А она и так пустая

В любом нормальном проекте на любом языке

Dmitry
30.03.2018
08:58:24
да, но таска упадет
чтобы таск не упал, надо создать пустую папку migrations

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
Просто пустая папка с миграциями по дефолту
пустая папка с миграциями начнет выдавать ошибку что schema_migrations не от экто, это старая популярная ошибка с использованиям общей базы с рельсой

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!

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

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