
shadowjack
18.03.2017
22:07:16

Dmitry
18.03.2017
22:07:27
И больше всего я не понимаю почему defstruct нельзя перенести в Message

shadowjack
18.03.2017
22:07:34
А вообще это приватная функция
Константу можно через атрибут модуля

Google

Alexander
19.03.2017
04:05:56

Александр
19.03.2017
05:09:00

Rafael
19.03.2017
07:23:10
почему :math.pow(...) работает, а Math.pow(...) - нет?
я так понимаю, что это связано с тем, что math модуль импортируется от эрланга, а там атомы не могут начинаться с большой буквы

Dmitry
19.03.2017
08:07:37
В эликсире нету Math
Вот и все

Rafael
19.03.2017
09:17:19
переменные принято именовать в camelCase?

Dmitry
19.03.2017
09:20:05
דמקשל בשדק

Rafael
19.03.2017
09:20:10
не, ну на самом деле оч клевый синтаксис у Elixir

Dmitry
19.03.2017
09:20:12
sneak_case

Alexey
19.03.2017
09:20:20
snake

Dmitry
19.03.2017
09:20:37
Во всём своём проекте нашёл одну переменную

Alexey
19.03.2017
09:20:47
А фанки в camel

Dmitry
19.03.2017
09:20:49
и то можно выкиинуть

Google

Dmitry
19.03.2017
09:21:12
фанки тоже снейк

Rafael
19.03.2017
09:21:18

Dmitry
19.03.2017
09:21:25
start_link например

Rafael
19.03.2017
09:21:41

Dmitry
19.03.2017
09:22:27
Во, молодец! Склеил структуру и методы

Rafael
19.03.2017
09:23:08
теперь насчет картинки, как ее лучше хранить:
написать defstruct и туда все складывать или просто хранить то, что возвращает File.read(...)?

Dmitry
19.03.2017
09:26:56
В бинари хранить

Rafael
19.03.2017
09:27:23
?? пасиб

shadowjack
19.03.2017
09:53:27
Вместо slice(0,...) можно использовать take(...)
Но я не понял что ты хочешь сделать - зачем выкидывать все codepoints которые больше 1 байта?

Rafael
19.03.2017
09:57:24

shadowjack
19.03.2017
09:57:38
Ты не понял.

Rafael
19.03.2017
09:57:50

shadowjack
19.03.2017
09:58:24
Если на конце мультибайтовый символ, то его отсечь целиком. А не выкинуть все мультибайтовые.
Ну чтобы не было отсечения посередине символа.

Rafael
19.03.2017
09:59:14

Alexey
19.03.2017
10:14:03

Dmitry
19.03.2017
10:14:47
iex(3)> "©" <> <<0>>
<<194, 169, 0>>

Google

Rafael
19.03.2017
10:16:33
https://hexdocs.pm/elixir/String.html#codepoints/1

Evgeniy
19.03.2017
10:16:41
Из доки:
When Elixir sees a list of printable ASCII numbers, Elixir will print that as a char list (literally a list of characters). Char lists are quite common when interfacing with existing Erlang code. Whenever you see a value in IEx and you are not quite sure what it is, you can use the i/1 to retrieve information about it:
i "ł"
либо
"ł" <> <<0>>

Rafael
19.03.2017
10:16:47

Dmitry
19.03.2017
10:18:15
В том что вторая é это два utf символа

Rafael
19.03.2017
10:20:56
при конвеере, как тогда передать дальше код, как символ?

Dmitry
19.03.2017
10:23:12
Я честно не понимаю в чем проблема

Rafael
19.03.2017
10:27:41
<<first, _::binary>> = "ł"
тогда fisrt это 197, т.е число

Dmitry
19.03.2017
10:28:36
так тебе число и надо

Rafael
19.03.2017
10:29:46

Dmitry
19.03.2017
10:32:59
Поменяй slice и join на take
нафига ты вообще делаешь join

Dmitry
19.03.2017
10:33:33
я понять не могу

Rafael
19.03.2017
10:34:10
вот тут я ожидаю message: "hello", а не циферки

Dmitry
19.03.2017
10:34:42
так твоя программа тогда работает не правильно

Rafael
19.03.2017
10:34:53

Dmitry
19.03.2017
10:35:00
Расшифровывает не то что шифрует
Ты теряешь диактрические символы

Rafael
19.03.2017
10:35:35

Google

Dmitry
19.03.2017
10:36:14

Rafael
19.03.2017
10:36:59

Dmitry
19.03.2017
10:38:32
Ты шифруешь слово "ПРИВЕТ"
оно 12 байт
а у тебя влазит в картинку 11

Rafael
19.03.2017
10:40:01
это вот в условии и написано:
Формат текста: UTF-8, допускается отсечение строки текста в случае, когда размер изображения не позволяет внедрить строку целиком.

shadowjack
19.03.2017
10:41:02
Да, но у тебя на конце появляется символ которого не было в исходном сообщении

Dmitry
19.03.2017
10:41:17
тогда ты после расшифровки получишь "ПРИВЕ¢"

Rafael
19.03.2017
10:41:20

Admin
ERROR: S client not available

Dmitry
19.03.2017
10:41:35
А тебе надо обрезать "ПРИВЕ"
вот за это и дают 0.1 балл

Rafael
19.03.2017
12:10:49
в чем разница между этими записями:
IO.binwrite file, header <> pixel_data
и
IO.binwrite(file, header <> pixel_data)
?
когда какую правильнее использовать?

Evgeniy
19.03.2017
12:13:42
во втором случае сначала вычисляется то что в скобках, потом эти парметры передаются IO.binwrite, если я не ошибаюсь)
тут видимо все равно
хотя я сам нуб %)

Rafael
19.03.2017
12:15:21
ну, всяко опытнее меня :В

Evgeniy
19.03.2017
12:15:34
врят ли, я тоже только начал изучать

Google

Denis
19.03.2017
12:15:36
Эээ
Тише тише

Dmitry
19.03.2017
12:15:50
В первом случае ты пытаешься конкатенировать результат выполнения IO.binwrite и pixel_data

shadowjack
19.03.2017
12:16:58
Можно ещё IO.binwrite file, (header <> pixel_data)
Тут вопрос в приоритетах
Но по-моему всегда писать скобки как-то логичнее.

Dmitry
19.03.2017
12:19:22
Не, не всегда

Rafael
19.03.2017
12:19:39
если что, код взять отсюда:
https://github.com/evanfarrar/ex_bump/blob/master/lib/bump.ex
и вот отттуда же:
def write(filename: filename, canvas: %Canvas{ } = canvas) do
что это за декларация аргументов?

Dmitry
19.03.2017
12:32:03
Вот тут скобки лучше не использовать, хотя можно)
def(foo, [do: :bar])

Alexander
19.03.2017
12:35:50
Если ты её позовёшь как
write(filename: "file.txt", canvas: %Canvas{что там в структуре канваса бывает})
то угадай, к чему привяжутся filename и canvas внутри write?
и почему
ну собсно, понятно к чему. А почему — смотри

Rafael
19.03.2017
12:38:35

Alexander
19.03.2017
12:38:41
full_result = {:ok, pid} = some_func()
def stuff() do
{:one, {:two, "trhee"}, ["four", "five"]}
end
iex> full_result = {:one, rest, _} = {_, _, [head | _]} = stuff()
посмотри на full_result, rest и head в iex

Rafael
19.03.2017
12:41:00
хотя стоп, что возвращается some_func?

Alexander
19.03.2017
12:41:42
либо оно возвращает {:ok, что-то} и тогда всё матчится
либо нет
и тогда ошибка в рантайме, что в принципе ничего страшного обычно