
Kioshimafx
25.12.2017
08:45:50
ну или можно иможно исходники почитать что там вообще используется конкретно в Plug ? https://github.com/elixir-plug/plug/blob/bd8ddf763421b3e0316d3ec513f29e8df8569874/lib/plug/crypto/message_encryptor.ex#L55

Evgeny
25.12.2017
09:04:11
Насколько я понял можно даже два одинаковых ключа засунуть
Буду делать как в примерах

Google

Kioshimafx
25.12.2017
09:05:21
ну посмотри там в исходниках пример даже есть
ага

Evgeny
25.12.2017
09:49:21
Еще вопрос, насколько обязательным является написание спеков к функциям?
Оно понятно, что необязательно, но как это принято вообще?

Alexey
25.12.2017
09:50:46

Evgeny
25.12.2017
09:51:05
ко всем вообще или есть какие-то правила?

Alexey
25.12.2017
09:51:22
public функции

Evgeny
25.12.2017
09:51:41
а то я привык к статической типизации и для меня это выглядит немного диковато
читаю https://hexdocs.pm/elixir/typespecs.html#content и не нахожу типа для string и для map.
а, для мапы нашел
если моя функция возвращает структуру HTTPoison.Response, то как это правильно в спеках записать?
так?
@spec foo() :: HTTPoison.Response.t

Dmitry
25.12.2017
10:10:05

Google

Evgeny
25.12.2017
10:10:25
Там есть тип t()

Dmitry
25.12.2017
10:10:28
А у строки есть String.t

Evgeny
25.12.2017
10:11:13
то есть просто @spec foo(param :: string) :: string не проканает?

Dmitry
25.12.2017
10:11:26
string нету

Evgeny
25.12.2017
10:12:16
то есть надо писать param :: String.t? Чо-та как-та многословно

Dmitry
25.12.2017
10:12:38
На букву длиннее чем string?
Да, это главная проблема эликсира

Evgeny
25.12.2017
10:12:50
на две
вообще, эликсир и правда многословен

Alex
25.12.2017
10:13:23
можно вроде не писать param

Evgeny
25.12.2017
10:13:27
по сравнению с D
можно не писать

Dmitry
25.12.2017
10:13:37
Надо понимать, что map существует как структура данных, а string - нет
Нету такого в Beam
Все очень просто

Evgeny
25.12.2017
10:13:59
ну есть де binary

Alex
25.12.2017
10:14:04
строка в эликсире = binary

Dmitry
25.12.2017
10:14:07
Ну так пиши binary

عاصم بن حارث
25.12.2017
10:14:23
по сравнению с D
пиши коротЕнько на Дэ и не растекайса патокой на эликсире, кто-ж неволит-то )))

Alexey
25.12.2017
10:14:32
iex(3)> t String
@type t() :: binary()
@type codepoint() :: t()
@type grapheme() :: t()
@type pattern() :: t() | [t()] | :binary.cp()

Google

Alex
25.12.2017
10:14:34
String.t это умеренно бессмысленный алиас

Dmitry
25.12.2017
10:14:41
В отличие от бинари, строка - валидный последовательность юникода
И в этом ее смысл

Alex
25.12.2017
10:14:52
бред

Evgeny
25.12.2017
10:14:58

عاصم بن حارث
25.12.2017
10:15:11

Alex
25.12.2017
10:15:23
вот этот констрейнт на валидность юникода никем не гарантируется

Alexey
25.12.2017
10:15:28
тогда пишите на F#

Evgeny
25.12.2017
10:15:46
ну а что принято у эликсиристов писать в случае строки?
кто во что горазд, что-ли?

Dmitry
25.12.2017
10:16:02
Спеки вообще ничего не гарантируют
Смысл в порядке

Alex
25.12.2017
10:16:16
нет никакого порядка

Dmitry
25.12.2017
10:16:16
И он соблюдается в этих случаях
И помогает людям, которые документируют свой код отличать raw из ком порта от юникод строк

Evgeny
25.12.2017
10:16:45
Ну вы меня запутали, забить ваще на эти спеки? :)

Alex
25.12.2017
10:17:21
есть только реальный мир, и тебе даже в json третья сторона может вместо строки пихнуть что-то такое, от чего охуеет весь код

Evgeny
25.12.2017
10:17:26
я же не публичную либу пишу :)

Alex
25.12.2017
10:17:27

Google

Alex
25.12.2017
10:17:42
если тебе так удобнее - пиши

Dmitry
25.12.2017
10:17:57

عاصم بن حارث
25.12.2017
10:17:59

Evgeny
25.12.2017
10:18:15
я хз как мне удобнее, я же нуль в эликсире, пытаюсь чужой опыт экспроприировать

Dmitry
25.12.2017
10:18:22
Не несут смысловой нагрузки, нужны только чтобы поспорить. Поэтому продолжать не вижу смысла

Alex
25.12.2017
10:18:27

Evgeny
25.12.2017
10:19:31

Alex
25.12.2017
10:19:53
его нужно просто запускать

Evgeny
25.12.2017
10:20:11
ну оно понятно, что наверное просто подымается

Admin
ERROR: S client not available

Alex
25.12.2017
10:20:12
или не запускать, если нет спеков

عاصم بن حارث
25.12.2017
10:20:22

Alexey
25.12.2017
10:21:24
а чего, без спеков диалайзер ничего не сможет сказать?

Alex
25.12.2017
10:21:29
может

عاصم بن حارث
25.12.2017
10:21:36

Alex
25.12.2017
10:21:37
но не то, чего ты ожидаешь

Evgeny
25.12.2017
10:21:47
хех

Vladimir
25.12.2017
10:21:55
Диалайзер отлично работает для Эрланга. А вот как только встречается косяк в макросе эликсира - всё, приехали.
но имхо лучше иметь спеки, чем не иметь.

Google

عاصم بن حارث
25.12.2017
10:22:20

Evgeny
25.12.2017
10:23:30
ну тогда попробую на днях

عاصم بن حارث
25.12.2017
10:23:46
Лучше день потерять, зато за 5 мин. долететь (с) м\ф "Крылья, ноги, хвосты."

Evgeny
25.12.2017
10:24:01
я гребаный перфекционист и буду страдать если половина функций будет без спеков, а половина с ними
диалайзер умеет "незаспеченные" функции выявлять и списочек предъявлять?

عاصم بن حارث
25.12.2017
10:24:30
Спеки, строки док-ции, юнит-тесты... Делай в процессе и заблаговременно...

Evgeny
25.12.2017
10:24:57
юнит-тесты - это я вроде уже делаю

عاصم بن حارث
25.12.2017
10:25:23
и не откладывай на потом ))) "нет ничего более постоянного, чем временное!"
??

Evgeny
25.12.2017
10:26:53
надо бац-бац и в продакшен, а тут спеки пиши понимаешь-ли :)

عاصم بن حارث
25.12.2017
10:27:15
???

Evgeny
25.12.2017
10:27:49
так весело когда оно само компиляет и релоадит модули, и так грустно без статической типизации, а иногда наоборот весело
нет в мире совершенства, мечусь между D и эликсиром, но походу последний таки победит

Alex
25.12.2017
10:28:25

Alexey
25.12.2017
10:28:36

Evgeny
25.12.2017
10:29:21
кредо - это конкурент диалайзера?
скажите мне еще, что надо и то и другой йузать

عاصم بن حارث
25.12.2017
10:29:38

Evgeny
25.12.2017
10:29:49
ну накуй эти скобощки

عاصم بن حارث
25.12.2017
10:29:58

Alex
25.12.2017
10:30:37