
abc
24.03.2017
13:05:18
мне чет ни одна либа для телеги не понравилась
хотя перепробовал все

shadowjack
24.03.2017
14:45:09
А вот что касается стиля: как лучше писать
"$" <> function(x) или "$#{function(x)}"

Google

anton
24.03.2017
14:51:22
я за интерполяцию

Rafael
24.03.2017
14:52:11

anton
24.03.2017
14:52:36
второй

Rafael
24.03.2017
14:53:25
Ну, в данном примере я тоже за него

Sergey
24.03.2017
14:53:30
А что в эликсире вместо sprintf?
Говорят что :io.format
Его не лучше?

Max
24.03.2017
14:56:07
:io_lib.format

Sergey
24.03.2017
15:09:34
господа, а в эрланге есть какая-нибудь интерполяция для binary?
Типа у меня есть бинарная строка и значения, нужно совместить.
Пока я сделал по-деревенски через lists:foldr и функцию, которая конкатенирует бинари «a/binary, b/binary».
Но есть ли вариант как-то написать my_fun(«"Hello $1! Glad to see you $2"», [«"Anon"», «"my friend"»]).

Taras ?
24.03.2017
15:11:05

Roman
24.03.2017
15:13:40

Ivan
24.03.2017
15:15:54
а шо там за тусовка с exercism ?

shadowjack
24.03.2017
15:16:23
у нас и на codewars уже банда.

Google

Ivan
24.03.2017
15:16:31
дикоемясо

shadowjack
24.03.2017
15:16:37
Ставьте клан pro.elixir

Taras ?
24.03.2017
15:16:48
господа, а в эрланге есть какая-нибудь интерполяция для binary?
Типа у меня есть бинарная строка и значения, нужно совместить.
Пока я сделал по-деревенски через lists:foldr и функцию, которая конкатенирует бинари «a/binary, b/binary».
Но есть ли вариант как-то написать my_fun(«"Hello $1! Glad to see you $2"», [«"Anon"», «"my friend"»]).
Var = «"777 ", A1/binary, A2/binary, "888", A3/binary, "Русский"/utf8, A4/binary»
речь об этом ?
варианта не видел, но думаю на макросе обертку сделать можно
присоединяюсь к вопросу, тоже интересно

Ivan
24.03.2017
15:16:52
слава яйцам, ГХ ожил

shadowjack
24.03.2017
15:17:16
iex(11)> a
"aaa"
iex(12)> b
"bbb"
iex(13)> <<a::binary, " ", b::binary>>
"aaa bbb"

Ilnur
24.03.2017
15:17:17

Ivan
24.03.2017
15:17:22
ну у меня не работал
часа 2 наверное
при чем из под впн все ок было

Ilnur
24.03.2017
15:17:44
a, ну значит ркн шалит

Ivan
24.03.2017
15:17:51
заигрались че то ну

Dmitry
24.03.2017
15:17:52
У меня все дорога работал

shadowjack
24.03.2017
15:18:06
хотя я туплю. Строка "" в эликсире этож тоже binary

Sergey
24.03.2017
15:19:21

shadowjack
24.03.2017
15:19:24
iex(14)> "#{a} #{b}"
"aaa bbb"

Sergey
24.03.2017
15:19:58
хм... ну в элексире — окей, а в эрланге?

shadowjack
24.03.2017
15:20:40
Ой я вопрос протупил

Taras ?
24.03.2017
15:21:24
а почему нет?

Google

Dmitry
24.03.2017
15:21:55
:io.format
Хоть бы кто доки прочитал

Sergey
24.03.2017
15:24:32
хм... а он разве не в стдоут пишет? А возвращает ok

shadowjack
24.03.2017
15:25:03
iolist_to_binary(io_lib:format("~s, ~s!", [A, B])).

Sergey
24.03.2017
15:26:24


Can
24.03.2017
15:30:55
У нас тут австралийцы обитают
Нечасто мы читаем про австралийские разработки - а, возможно, зря. Вот чатбот с аватаром, вполне достоверно изображающим эмоции на своём лице, обладающим голосом Кейт Бланшетт и, что самое важное, - с умением понимать эмоции человека, проявляющиеся у него на лице (лицо, понятно, смотрит в веб-камеру). Задача чатбота отнюдь не развлекательная: он сделан по госзаказу и должен обеспечить лучшее обслуживание инвалидов. Для многих из них компьютер - основное окно в мир, а эмоциональная отзывчивость собеседника на экране критически важна.
https://thenextweb.com/artificial-intelligence/2017/03/24/say-hello-to-nadia-the-terrifyingly-human-chatbot-with-emotional-intelligence/
Посмотреть ролик про то, как Надя (так зовут чатбота - или политкорректнее чатботессу?) работает и выглядит на экране можно вот здесь: https://youtu.be/0-BSrFQv2ls
А мне ещё очень название компании-разработчика понравилось: Soul Machines.


Taras ?
24.03.2017
15:38:09
iolist_to_binary(io_lib:format("~s, ~s!", [A, B])).
оу йе... я с подобным надолбался день когда краказябра получалась почему-то,
тоесть надо получить что-то с вк апи и вывести на страницу
вот так заработало —
name1 = :unicode.characters_to_binary(:unicode.characters_to_list(page_contents["first_name"]), :utf8, :latin1)

shadowjack
24.03.2017
15:49:44
Ну у эрланга с юникодом не оч

Taras ?
24.03.2017
15:58:57
подскажите как в фениксе "распарсить" в контроллере сложный запрос?
имею ввиду — как определить наличие или отсутствие key-value со сложного ajax-запроса ?
к примеру есть 10 пар key-value но часть с них могут время от времени отсутствовать или прилетать другие — типу
a=a&b=b&c=c&d=d
a=a&c=c&d=d
a=a&d=d&z=z
какие есть варианты кроме как "вручную" проверять наличие в мапе ключа?
есть ли другой путь кроме как быстро велосипедить N функций?
может чего по этой теме уже встречали?
чет я даже туплю как вопрос к дядьке гуглу составить чтобы подсказку получить... ))

Александр
24.03.2017
16:00:51
сделать функцию обработчик с паттерн матчингом

Александр
24.03.2017
16:01:13
а лучше привести реальный пример задачи

Dmytro
24.03.2017
16:03:22
http://embed.nicovideo.jp/watch/sm8705225
не понимаю, кто может делать такие вещи :/

shadowjack
24.03.2017
16:07:57
Что там гугл, я тоже не понял.

Taras ?
24.03.2017
16:08:19

Александр
24.03.2017
16:12:39
так там 3-4 поля, которые участвуют в построении запроса
не 10-20 же

Taras ?
24.03.2017
16:13:15
в базе лежать строчки,
по ajax мы делаем запрос —
procmin=2cores&procmax=8cores&displaymin=5inc&displaymax=7inc&cameramin=5pm&cameramax=15pm&2sims=true&3sims=true&android=true&androidv=5&androidv=4
типу такого

Google

Александр
24.03.2017
16:14:02
хммм, я понял такое сам не делал надо обдумать...

Taras ?
24.03.2017
16:14:02

shadowjack
24.03.2017
16:14:08
Ты определи что на входе, что на выходе. И как они должны быть связаны.
Половина решения задачи

Александр
24.03.2017
16:16:17
делаем функцию с case внутри где есть все виды ключей для фильтрации, по которым модифицируется запрос
и редьюсим conn.params по этой функции
не?

Taras ?
24.03.2017
16:17:47
на входе — набор параметров который интересен пользователю на сайте
на выходе — показать пользователю то что он ищет (понятное дело тут достать с базы сначала)
я сейчас торможу на вопросе как сделать
$sql_part = '';
if(isset($_POST['android'] === true)){
$sql_part .= 'AND "OS" = "android" ';
}
...
вот такое, только в elixir в фениксе, а не в php

Admin
ERROR: S client not available

Александр
24.03.2017
16:18:23
а ты ecto моделями не пользуешься?

Taras ?
24.03.2017
16:18:28

shadowjack
24.03.2017
16:18:50
Ты думай об оптимизации в последнюю очередь

Александр
24.03.2017
16:18:57
ааа, это же на похапе пример

Taras ?
24.03.2017
16:19:05

Александр
24.03.2017
16:19:44
запрос это Ecto.Query

Taras ?
24.03.2017
16:19:51
а ты ecto моделями не пользуешься?
прошлый опыт не понравился — не идет оно мне, медленно получается очень (а я и так слоупок)
сложная форма и кучки чейнджсетов —- вообще ад какой-то, проще по аджаксу пустить и в обход, на своих велосипедах

shadowjack
24.03.2017
16:20:17
Медленно исполняется?
Или пишется?

Taras ?
24.03.2017
16:20:55
пишется

Google

shadowjack
24.03.2017
16:21:28
Ну не знаю, это с непривычки наверное

Taras ?
24.03.2017
16:24:09
о, понял, получилось нагуглить
iex(18)> string_key_map = %{"foo" => "bar", "hello" => "world"}
%{"foo" => "bar", "hello" => "world"}
iex(19)> for {key, val} <- string_key_map, into: %{}, do: {String.to_atom(key), val}
%{foo: "bar", hello: "world"}
этого то мне и нехватало
благодарю за помощь?

shadowjack
24.03.2017
16:25:13
Так нельзя

Taras ?
24.03.2017
16:25:28
? почему

shadowjack
24.03.2017
16:26:42
Дырка потому что. Динамически создавать атомы из того что пришло снаружи чревато - атомы никогда не удаляются из памяти

Taras ?
24.03.2017
16:27:29
да не, я ж там атом не буду создавать, бинарник приходит и ок

shadowjack
24.03.2017
16:27:38
Соответственно я могу выжрать у тебя всю память и BEAM упадет

Taras ?
24.03.2017
16:27:39
это просто пример нагугленный

shadowjack
24.03.2017
16:28:11
А, ясно.
Ну это простой comprehension (как по русски?)
Ты бы спросил - как итерироваться по мапу.

Александр
24.03.2017
16:30:25
Enum.reduce(conn.params, query, fn ({key, value}, res) -> filter_query(key, value, query) end)
я бы как-то так прошёл

shadowjack
24.03.2017
16:31:03
Да, это по функциональному
Только там должно быть наверное filter_query(res, key, value) наверное
Или where(res, filter_query(key, value))
Я не очень знаю как экто работает, но res по любому должен использоваться

Александр
24.03.2017
16:37:02
соотв:
def filter_query(filter_name, filter_val, query) do
case filter_name do
displaymin -> query |> where([p], p.displaymin == filter_val)
displaymax -> query |> where([p], p.displaymax == filter_val)
...
_ -> query
end
end
res в reduce - это последнее выполненное выражение
если в него постоянно возвращать query
всё будет просто супер