
Mikhail
06.03.2017
11:55:26
борода не жмёт?

Dmitriy
06.03.2017
12:02:53
Дмитрий, не знал что вы есть в этом чате =)

Max
06.03.2017
12:06:49
чем можно SNI из HTTPS раскодировать?
или самому писать?

Google

Max
06.03.2017
12:07:05
он же где-то в кишках декодируется

Rumata
06.03.2017
12:11:59

Max
06.03.2017
12:12:28
это чятик про еликсир?

Mikhail
06.03.2017
12:14:19
про https и sni


Max
06.03.2017
12:15:42
мне в ерланге его декодировать надо
в еликсире
If the hostname labels contain only US-ASCII characters, then the
client MUST ensure that labels are separated only by the byte 0x2E,
representing the dot character U+002E (requirement 1 in section 3.1
of [IDNA] notwithstanding). If the server needs to match the HostName
against names that contain non-US-ASCII characters, it MUST perform
the conversion operation described in section 4 of [IDNA], treating
the HostName as a "query string" (i.e. the AllowUnassigned flag MUST
be set). Note that IDNA allows labels to be separated by any of the
Unicode characters U+002E, U+3002, U+FF0E, and U+FF61, therefore
servers MUST accept any of these characters as a label separator. If
the server only needs to match the HostName against names containing
exclusively ASCII characters, it MUST compare ASCII names case-
insensitively.
расколупал вроде
не расколупал
kurwa
struct {
NameType name_type;
select (name_type) {
case host_name: HostName;
} name;
} ServerName;
enum {
host_name(0), (255)
} NameType;
opaque HostName<1..2^16-1>;
struct {
ServerName server_name_list<1..2^16-1>
} ServerNameList;
что это за нотация?

Google

Max
06.03.2017
14:52:13
struct {
NameType name_type;
select (name_type) {
case host_name: HostName;
} name;
} ServerName;
enum {
host_name(0), (255)
} NameType;
opaque HostName<1..2^16-1>;
struct {
ServerName server_name_list<1..2^16-1>
} ServerNameList;
блядь телеграм

Dmytro
06.03.2017
14:56:17
а скобочки не комильфо?)
или tg их игнорит?

Max
06.03.2017
14:57:44
хз, не получилось чёт
в ваершарке попробую разобрать
вспомнил про него
во, теперь норм

vizvamitra
06.03.2017
22:41:25
https://github.com/vizvamitra/patme ради эксперимента накодил pattern matching в определениях методов для Ruby. Может кому интересно будет)

Taras ?
06.03.2017
22:44:27
всем привет
вопрос насчет примера
http://wunsh.ru/articles/elixir-io-lists-part-1.html
{:ok, file} = :file.open("/tmp/tmp.txt", [:write, :raw])
foo = "foo"
bar = "bar"
output = [foo, bar, foo]
output = Enum.join(output)
:file.write(file, output)
что значит :raw , зачем он?


anton
06.03.2017
22:46:09
http://erlang.org/doc/man/file.html#open-2
raw
Allows faster access to a file, as no Erlang process is needed to handle the file. However, a file opened in this way has the following limitations:
The functions in the io module cannot be used, as they can only talk to an Erlang process. Instead, use functions read/2, read_line/1, and write/2.
Especially if read_line/1 is to be used on a raw file, it is recommended to combine this option with option {read_ahead, Size} as line-oriented I/O is inefficient without buffering.
Only the Erlang process that opened the file can use it.
A remote Erlang file server cannot be used. The computer on which the Erlang node is running must have access to the file system (directly or through NFS).
гугл забанил?

Taras ?
06.03.2017
22:48:38
гугл - нет, не понял зачем вообще этот параметр использовать, в чем преимущества
немного быстрее получается, и все?

anton
06.03.2017
22:51:54
для каких то сценариев быстрее.
но ради этого ты подписываешься в определенные ограничения

Taras ?
06.03.2017
22:52:16
хм) статья, без сомнения — интересная и несет пользу, вот только дубоголовые ребята типу меня все-равно в недоумении —
:file.write_file("/tmp/tmp.txt", some_iodata, [:raw])
какая структура должна быть сдесь вместо some_iodata ?
output = [foo, bar, foo]
output = Enum.join(output)
?
а в эрланге в аналогичной задаче/примере?
users = [%{name: "Amy"}, %{name: "Joe"}]
response = Enum.map(users, fn (user) ->
["<li>", user.name, "</li>"]
end)
IO.puts response
и это... я вроде и гуглил но так и не понял — в чем разница между
IO.puts
и
IO.inspect
?
прошу тапком не гоните — хоть намек маленький подкиньте...

anton
06.03.2017
22:55:38
iodata() это вроде может быть iolist() или binary()

Alexey
06.03.2017
23:00:10
всегда пользую inspect - он практически любые типы разворачивает в строку. например какую-нибудь большучую мапу.

anton
06.03.2017
23:04:28
puts - кидает данные куда-то (по дефолту в стдио)
inspect - инспектит твой тип. делает его хуман-ридабл и выводит данные

Google

anton
06.03.2017
23:08:30
если тебе в консоль писать - юзай инспект

Taras ?
06.03.2017
23:08:38

Alexey
06.03.2017
23:08:40
он не только хуман ридабл. я тебе больше скажу. я такой вывод делаю в дебаге. и он как есть, если его скопировать. то он нормально вставляется в консоль. без синтаксических ошибок.
т.е. можно в лог какую-то переменную вывести. а в консоль вставить и поиграться

anton
06.03.2017
23:13:38
похоже я виндовым нотпадом всех хипстеров на макбуках распугал ?

Alexey
06.03.2017
23:21:36
так они там и пишут, что пользуют разные функции записи в файл
так, что с двоеточием - это прямой вызов стандартных ерланговых
:file.write
и доки ерланговые читай, какие опции, чего и почему
а есть эликсировый вариант File.write он, видимо, какой-то другой

Taras ?
06.03.2017
23:23:38
я юзал эрланговые, эликсировых тогда не нашел (их недавно добавили или я просто не смог найти)) )

Alexey
06.03.2017
23:25:25
ну и вопрос то про raw? это mode. ниже про него в документации ерланга написано, видимо, зачем он нужен "Allows faster access to a file, as no Erlang process is needed to....."

Alexey
06.03.2017
23:26:33
там есть другие mode для открытия. я с файлами не работал. но по аналогии с сокетами могу представить, что просто под капотом там будут режимы разные. сокет откроешь, как бинари - будут данные валиться (побайтно), а можно открыть так, чтоб он по строкам вываливал

anton
06.03.2017
23:28:17

Taras ?
06.03.2017
23:28:20
понял насчет raw, благодарямс ?

Alexey
06.03.2017
23:29:07
да знаем. у нас же проект на эликсире )

Taras ?
06.03.2017
23:29:14
это знаю, я с эрланга в эликсир пришел
кстати кто пробовал с эрланга вызывать эликсировые функции?

anton
06.03.2017
23:29:28

Alexey
06.03.2017
23:30:20
только некоторые вещи в эликсире какие-то упоротые. и я не стараюсь логику включать, пытаясь понять, а вот почему мы тут скобочку ставим, а тут не ставим. потому что ее там может не быть ))
там уже просто смотришь за деревья, в лес )

Google

anton
06.03.2017
23:32:01
меня пока только упоротость вызова анонимок добивает :(

Alexey
06.03.2017
23:32:04
в гугл групс есть хороший срач на тему того, что синтаксис в эликсире говно, или всетаки нормально. один утверждал, что говно. а второй утверждал, что логично. но ему для этого приходилось глубоко копать

Taras ?
06.03.2017
23:32:08
http://joearms.github.io/2016/03/13/Calling-Elixir-From_Erlang.html
я такое встречал, пока не трогал

Alexey
06.03.2017
23:32:13
мне копать не интересно. а то задачи решать будет некогда

anton
06.03.2017
23:32:38
мне даже на эликсире/иланге писать некогда :( не то что там копать..

Alexey
06.03.2017
23:33:07
воот! поэтому оно просто запоминается через какое-то время и все.
в еликсире есть вообще такие упоротые вещи, как например, путем преобразований, можно из строки сформирвать одноименный модуль. и вызвать его функцию )

anton
06.03.2017
23:34:19
но "просто запоминается" иногда не дает покоя и на душе не спокойно :)
я вообще на основной работе на дотнете/сишарпе пилю
инвестируя в будущее - пишу на скале :)
и для души иногда на эликсире пописываю чего-нибудь.. либы ковыряю

Aldar
06.03.2017
23:34:20

Admin
ERROR: S client not available

anton
06.03.2017
23:34:56
в эрланге?
не. в эликсире :)
на эрланге я не особо писатель.. только читатель наверное

Alexey
06.03.2017
23:35:00
ну то есть, к примеру, какой-нибудь rest выдаст тебе строку - название метода. ты у него первую букву заглавной сделал. преобразовал строку в название модуля и у него вызвал функцию execute. но это треш

Dmitriy
06.03.2017
23:35:33
есть 2 типа людей...

anton
06.03.2017
23:35:38

Alexey
06.03.2017
23:36:04
для души, считаю, надо на чистом ерланге писать. это как на лампах схему. а не на этих ваших бездушных интегральных микросхемах
секурненько!
если туда еще преобразование строк-параметров в атомы добавить, то будет вообще полный комплект - пример того, как делать нельзя.

anton
06.03.2017
23:38:00

Alexey
06.03.2017
23:41:40
https://10consulting.com/2016/10/28/elixir-io-lists/?utm_campaign=elixir_radar_74&utm_medium=email&utm_source=RD+Station
^ - напомнило статью на wunsh
ну и. по поводу методов строк->атомы. например ключи в джейсон запросе. есть тож немного рекомендаций вот тут
https://engineering.appcues.com/2016/02/02/too-many-dicts.html

Google

Alexey
06.03.2017
23:43:41
в частности
https://github.com/appcues/exconstructor

anton
06.03.2017
23:47:18

Alexey
06.03.2017
23:48:06
согласен. зато код усложнишь
или потом вдруг появится какая-нибудь оптимизация под капотом

anton
06.03.2017
23:51:41


Alexey
06.03.2017
23:53:24
не факт. если лень, то распарсеный json в мапу - будут просто ключи строковые. типа map["header"]. а в атомы их только ради доступа map.header
врядли юные упорются на прямое преобразование строку в атом. об этом пишут с ерланга, что так не надо.
к тому же, доступ через [] лучше. там если ключа такого нет, то будет nil и на nil можно сматчиться в case и что-то с этим сделать. а если map.header нету...
но. как обычно, тут есть выбор. а выбирать уж самому, как ловить себе приключения )
пример тот же poison. там реализовано так, что ты двумя вариантами можешь ловить проблемы. либо Poison.decode! и получаешь сразу результат, либо экзепшен. и работаешь через них. либо без ! "метод" Poison.decode и он уже даст кортеж {:ok, data} или {:error, reason}. и работаешь через матчинг.

Alexander
07.03.2017
00:05:43
всем утро

Alexey
07.03.2017
00:06:00
пишут пишут )
добрый утр. если у тебя утро, то это всегда знак, что пора уже в свои местные 3 часа ночи идти спать )

Alexander
07.03.2017
00:06:40
это да
если мне из Москвы отвечают моим утром, значит засиделись там )

Alexey
07.03.2017
00:07:36
сегодня с супругой читали о том, на сколько много в Австралии способов* откинуть коньки

anton
07.03.2017
00:09:26
блин
и правда 3 ночи уже

Alexander
07.03.2017
00:26:27

Taras ?
07.03.2017
00:34:11
??

Alexander
07.03.2017
01:13:13
??
ты же с Украины кажется _
видели уже? https://github.com/marcobambini/gravity