@dlangru

Страница 101 из 719
Oleg
07.11.2016
09:43:41
и соответственно вставляли внутрь функцию его проверки

в web есть @after, но в rest вроде нет

кто-нибудь выходил из этой ситуации красиво?

Dmitry
07.11.2016
10:57:52
"потому как в случае этой функйции вполне себе годный rest получается, на мой взгляд)" "но stateless он не гарантирует)" Во! Как я понимаю это ключевое! так?

Google
Dmitry
07.11.2016
11:01:01
Я просто пытаюсь понять где лучше одно, а где другое. Как я понимаю через rest лучше отдавать контент по токенам и все то что имеет JSON оcнову. Для всего остального лучше именно классический способ. Т.е. если у меня /users/user должны быть доступны только авторизованным пользователям, то я это как Rest делаю. При этом на клиенте должен быть уже подгружен шаблон рендинга. Если на клиенте ничего нет, то я генерю все на сервере без Rest и отдаю это в виде готовой HTML страницы так?

Sergey
07.11.2016
11:02:34
нет

для начала, rest принципиально не привязан к json

Oleg
07.11.2016
11:03:16
просто в vibe так сделанно

Sergey
07.11.2016
11:03:33
основное примнение - это общение между сервисами

0x9d8e
07.11.2016
11:13:17
Немножко наоффтоплю: Тут кто-то упоминал что писал на OCaml. Правильно я понимаю, что в нём мы по-сути никак не храним значения каких-либо вычислений? То есть, условно говоря есть тяжелое выражение А и каждый раз, как нам понадобится его результат оно непременно будет выплнено заново? Мне как-бы понятно чем это полезно, но для производительности это же смерть. Нет? Можно ли сделать хотябы локальную переменную, чтобы в пределах одной функции (тут ошибок связанных с состоянием быть не должно) можно было обойтись без повторных вычислений того, что можно посчитать лишь раз. Меня это интересует с тем, чтобы понять применим ли он (и вообще функциональщина) для меня или мне надо окончательно сломать мозг и найти способ как-то обойтись без повторных вычислений без использования переменных (со значением, а не выражением), что кмк далеко не всегда возможно.

Sergey
07.11.2016
11:13:17
там, где запрос делает сервис, и ответ анализирует он же - лучше всего применять rest

там где ответ получает человек - там rest не нужен

Grigirii
07.11.2016
11:16:46
за OCaml не скажу, но обычно в функциональщине либо не надо вычислять что-то сложное дважды, так как структура кода к этому не располагает, либо вступает в игру кэширование. Чистота функций гарантирует возможность кешировать результат, так как он зависит только аргументов. Как с этим в OCaml не знаю

Dmitry
07.11.2016
11:20:45
"там, где запрос делает сервис, и ответ анализирует он же - лучше всего применять rest" Просто вот допустим список пользователей которые есть в БД. есть смысл в виде rest делать?

ведь на клиенте тоже будет какая-то логика парсинга и отображения т.е. обработки

Sergey
07.11.2016
11:21:34
если этот список должен получить какой-то другой сервис, то да

Dmitry
07.11.2016
11:23:50
Но отчасти же можно сказать, что на клиенте тоже какая-то логика есть обработки данных. Просто вот допуситим куча плагинов для js-фреймворков json ожидают. Тоесть получается тут rest все же нужен?

Google
Sergey
07.11.2016
11:24:37
в таком случае rest оправдан

если речь о плагинах, то возможно, даже и нужен)

нужно понимать, что rest - это не протокол

это ближе к паттерну

0x9d8e
07.11.2016
11:33:38
за OCaml не скажу, но обычно в функциональщине либо не надо вычислять что-то сложное дважды, так как структура кода к этому не располагает, либо вступает в игру кэширование. Чистота функций гарантирует возможность кешировать результат, так как он зависит только аргументов. Как с этим в OCaml не знаю
Ну условно говоря (a + b) * c - (a + b) уже требует выполнить a + b дважды. Сделать ab = a + b соответственно не помогает. Понятное дело меня это не в арифметике интересует. Собственно для своего рода кеширования локальные переменные и нужны. Или этим должен компилятор заниматься? В таком случае понятно. Просто непривычно очень.

Grigirii
07.11.2016
11:38:56
Да, компилятор "может" этим заниматься. В хаскеле есть https://wiki.haskell.org/Memoization очень-очень иногда компилятор это сделает сам, но в общем случае нет.

ну и по слову Memoization отлично гуглится для окамла

Dmitry
07.11.2016
11:42:45
Sergey А для всего остального тогда генерация Урлов руками? Чтобы они там красивые были и все дела?

Alex
07.11.2016
11:44:36
мемизация?

Oleg
07.11.2016
11:47:16
Немножко наоффтоплю: Тут кто-то упоминал что писал на OCaml. Правильно я понимаю, что в нём мы по-сути никак не храним значения каких-либо вычислений? То есть, условно говоря есть тяжелое выражение А и каждый раз, как нам понадобится его результат оно непременно будет выплнено заново? Мне как-бы понятно чем это полезно, но для производительности это же смерть. Нет? Можно ли сделать хотябы локальную переменную, чтобы в пределах одной функции (тут ошибок связанных с состоянием быть не должно) можно было обойтись без повторных вычислений того, что можно посчитать лишь раз. Меня это интересует с тем, чтобы понять применим ли он (и вообще функциональщина) для меня или мне надо окончательно сломать мозг и найти способ как-то обойтись без повторных вычислений без использования переменных (со значением, а не выражением), что кмк далеко не всегда возможно.
ОКамл не ленивый в отличие от Хаскелля, так что локальные переменные работают как обычно (и не локальные тоже). Можно даже изменяемые (не константные) переменные создавать и кодить "как везде". Даже исключения бросать умеет

Dmitry
07.11.2016
11:57:33
А можно ли сайт целиком на rest построить?

В чем минусы будут?

Pavel
07.11.2016
11:58:31
Ты имеешь в виду REST апи + фронтенд который к нему ходит ?

0x9d8e
07.11.2016
11:58:51
Grigirii Почитал про меморизацию, понравилось. Делал в js что-то подобное (свойственными js костылями). @PeyTy То есть всётаки можно помимо выражений хранить и значения? В таком случае можно надейться, что в тупик не зайду. Спасибо)

Pavel
07.11.2016
11:59:32
В чем минусы будут?
Минус только в том что это сильно сложнее поддерживать на фронтенде - нужны клиентские шаблонизаторы и вообще богатый JS инструментарий. А так одни плюсы.

Dmitry
07.11.2016
11:59:57
Павел, да

угу, понял спасибо)

На правах рекламы скажу, что мне очень https://vuejs.org/ нравится

Так, а как лучше всего по Rest отдавать отренденный шаблон vibed?

Google
Dmitry
07.11.2016
13:26:00
Или даже по-другому спрошу

Вот я генерирую на сервере разные вьюшки для разных групп пользователей. Как их на клиент отдавать в зависимости от события или пользовательской роли

Pavel
07.11.2016
13:59:11
А никак :) Клиент должен сам заправлять всеми вьюшками

бэкенд ему только отдает данные, сессию и т.д.

Все HTML/JS дела клиентское приложение делает само.

Это в идеале. А так то можно закостылить чтобы бэкенд отдавал куски html внутри json. Но от этого теряется вся прелесть разделения на фронт и бек.

Oleg
07.11.2016
14:00:49
Pavel
07.11.2016
14:01:10
А мы про него и говорим

Oleg
07.11.2016
14:04:06
Просто Дмитрий спросил так убдто у него не webapp. Тогда нужно делать REST-запрос и получать по нему данные в JSON, а дальше рендерить шаблонизатором на стороне клиента

Dmitry
07.11.2016
14:35:46
Просто мне не нравится идея подгружать все вьюшки сразу. Я хочу подргружать только те что нужны

Кстати, не могли бы подсказать где посмотреть примеры JSON API? Просто мне вот не понятно. Ну ок. Зашел пользователь на сайт. Дернулся урл /auth что туда должно быть отправлено? Что возвращено? Как поля лучше вложить и тд {{"auth":"true"}, {"login":"dima"} ,{"data":"mydata"}} так чтоли?

Dmitry
07.11.2016
14:40:52
щас погоди проверю его

Oleg
07.11.2016
14:42:09
либо [{"auth":"true"}, {"login":"dima"} ,{"data":"mydata"}] либо {"auth":"true", "login":"dima" ,"data":"mydata"}

Dmitry
07.11.2016
14:42:58
ай да точно

Pavel
07.11.2016
14:42:59
Просто мне не нравится идея подгружать все вьюшки сразу. Я хочу подргружать только те что нужны
Я не фронтендер, но так понимаю что это тоже решается средствами фреймворка. Вьюхи хранятся в виде статики или JS файлов на сервере, и клиент когда надо запроашивает какие-то из них.

Dmitry
07.11.2016
14:53:57
Олег, я правильно понимаю что ВСЕ json данные должны иметь какой-то общий шаблон. Т.е. различаться могут только какие-то конкретные поля, так?

Oleg
07.11.2016
14:55:49
не шаблон, а правила построения

http://json.org/json-ru.html достаточно подробно, что как можно делать

Google
Dmitry
07.11.2016
14:57:52
ок понял)

м... я погуглил. Есть информация, что каждый JSON должен содержать поля data errors meta но вот с авторизацией как? Вот самое первое обращение сайта к серверу. Оно каким должен быть?

Просто мне понятно есть ли какие-то общепринятые вещи или все реально лепят кто-как?

Oleg
07.11.2016
15:08:17
JSON должен содержать поля data errors meta — нет

каждый фреймворк будет придерживаться своих правил

а в vibe нет таких правил...

там json для rest это просто отображение структуры

Admin
ERROR: S client not available

Dmitry
07.11.2016
15:15:05
ок буду дальше гуглить. Мне б что-то умеренно сложное

Вопрос. А токен нужно в base64 перекодировать? Или в поле token будут поля: { id: name: ... } (я про JWT авторизацию думаю)

просто можно же по идее: token: "base64-строка...." которая будет перекодированный токен содержать

qwe
07.11.2016
16:35:48
какой интересный коммит в dmd https://s3.amazonaws.com/awesomescreenshot/upload//405518/a7194d60-f357-4238-583c-0955f43549c1.png?AWSAccessKeyId=AKIAJSCJQ2NM3XLFPVKA&Expires=1478558059&Signature=sXxqQbG5M58TKxJKxXcSfkNdKso%3D

qwe
07.11.2016
16:37:24
создан симлинк (пока что пустой) на фронтенд компялятора. Судя из названия для демона автодополнения

Dmitry
07.11.2016
16:47:27
типа хотят в дистриб включить его?

qwe
07.11.2016
16:47:48
недеюсь, что отделят ddmd в либу

хотя видел, что у haxe компилятор может работать как дополнятор

qwe
07.11.2016
16:50:46
это не ко мне)

Google
Oleg
07.11.2016
16:50:46
Не может же линк ниначто не указывать

qwe
07.11.2016
16:51:00
хм

Oleg
07.11.2016
16:52:23
Ах, это симлинк на папку src

Pavel
07.11.2016
16:53:01
Правда поля meta у нас не было, но каждый обработчик мог узнать, есть ли ошибки в ответе, посмотрев в errors

0x9d8e
07.11.2016
16:53:47
Я тоже так делаю)

Dmitry
07.11.2016
19:24:50
Я повнимательнее прочитал и вот что увидел:

почему data и errors нельзя сочетать?

Как тогда проверять прилетевший документ? Искать там поле data. если поле data нет, то искать errors?

0x9d8e
07.11.2016
19:26:17
Ну если есть ошибки, то данных быть не должно, иначе можно "забыть" проверить ошибки и обработать неправильные данные.

Если это выполняется, то да, можно проверять данные, а уж если что выяснять что не так в ошибках

Dmitry
07.11.2016
19:28:12
Итого if(response.errors) {console.log("Дальше не продолжаем. В документе ошибка")} как-то так?

Pavel
07.11.2016
19:29:55
да

А что за доку ты читаешь? Скинь ссылку?

Dmitry
07.11.2016
19:30:58
http://jsonapi.org/format/1.1/

0x9d8e
07.11.2016
19:32:49
На стороне клиента я просто обращаюсь к data (в try catch) и если уж хватаю иcключение, то лезу в errors и там определяю какое именно исключение кинуть дальше.

Oleg
07.11.2016
19:33:36
И как вы это всё понимаете __traits(compiles, swap(T.init, T.init))

Grigirii
08.11.2016
08:13:37
И как вы это всё понимаете __traits(compiles, swap(T.init, T.init))
всего лишь проверка можно ли звать swap c аргументом типа T. что тут сложного или непонятного?

разве что то, что в других языках это вообще никак не написать

Страница 101 из 719