@gogolang

Страница 1416 из 1630
Daniel
17.09.2018
14:37:00
а где progo? что с ним?
мы его закрыли

Galya
17.09.2018
14:37:46
@vetcher, done

Artem
17.09.2018
14:37:59
thx

John
17.09.2018
14:38:05
мы его закрыли
Хм, и правда. Даже и не заметил :)

Google
Alexander
17.09.2018
14:46:51
да
сильно с ним извращаться приходится?

Artem
17.09.2018
14:47:30
Aleksandr
17.09.2018
14:47:42
в рамках твоей программерской парадигмы

Alexander
17.09.2018
14:48:04
ну там, интерфейсами жонглировать

reflect расчехлять

Aleksandr
17.09.2018
14:48:28
ну там, интерфейсами жонглировать
нет такого. все в рамках твоего домена

Alexander
17.09.2018
14:48:51
а какую либу для графа используешь на сервере?

Aleksandr
17.09.2018
14:50:51
https://github.com/graph-gophers/graphql-go

Alexander
17.09.2018
14:51:23
спс

?
17.09.2018
14:57:18
Ребята, по тесту https://bit.ly/gogolang Отпишитесь, пожалуйста, кто хотел получить расшифровку своих ответов с правильными вариантами, но ещё не получил.

Daniel
17.09.2018
14:57:46
https://github.com/graph-gophers/graphql-go
Разве не ее клеймили сегодня за низкую производительность?

Aleksandr
17.09.2018
14:58:20
Разве не ее клеймили сегодня за низкую производительность?
не, я ее предложил на замену той. называются позоже просто

Google
Aleksandr
17.09.2018
14:58:49
graphql-go vs go-graphql - юзать надо первую

?
17.09.2018
15:05:29
Я не получил. В спаме тоже нет
Ок, пометил себе, проверю

Roman
17.09.2018
15:06:09
сильно с ним извращаться приходится?
не особо. Главное наивно resolver'ы не имплементировать и нормальную библиотеку юзать

Alexander
17.09.2018
15:08:02
нормальную - это graphql-go ?

Roman
17.09.2018
15:08:24
нормальную - это graphql-go ?
у нас сейчас на вооружении https://github.com/graph-gophers/graphql-go

Alexander
17.09.2018
15:08:43
ну да, я её и имел ввиду

Artem
17.09.2018
16:06:38
да уж, после GQL на REST уже не тянет
Реализовывать для тривиальных задач рест приятнее, в графкуэль напарывались, что он высчитывает незапрашиваемые данные и тд

Roman
17.09.2018
16:08:02
Реализовывать для тривиальных задач рест приятнее, в графкуэль напарывались, что он высчитывает незапрашиваемые данные и тд
для тривиальных задач RPC лучше, с этим никто не спорит. но любой тривиальный проект может перерасти в нетривиальный и тогда начнётся special-endpoint канитель

Никита
17.09.2018
16:08:15
Мне порой кажется что в мире существует только два варианта написания апи: rest и graphql

А про JSON RPC никогда не говорят (

Alexander
17.09.2018
16:08:50
А как же апи богов? SOAP например!

Никита
17.09.2018
16:09:14
Roman
17.09.2018
16:09:20
Никита
17.09.2018
16:09:50
Мне кстати из многих апи что я видел понравился апи слака

Roman
17.09.2018
16:11:59
в RPC (REST etc.) ты мыслишь: "что умеет API?" в GraphQL ты мыслишь: "какие данные предоставляет API?" в GQL ты думаешь о данных, их типах и взаимосвязях (relations)

Artem
17.09.2018
16:13:03
потому что QL

Никита
17.09.2018
16:13:29
В REST ты думаешь "как натянуть логику на методы HTTP")

Google
Artem
17.09.2018
16:13:50
Heathcliff
17.09.2018
16:13:58
в рест твой сервер думает

Никита
17.09.2018
16:14:08
Или же "как представить сложные структуры используя параметры формы"

Aleksandr
17.09.2018
16:15:09
В REST ты думаешь "как натянуть логику на методы HTTP")
сначала так думаешь, а потом "зачем я в это ввязался"

Artem
17.09.2018
16:15:11
не может такого быть) ресолверы реализуешь ты, а не graphql
там либка делает биндинги по именам полей в структуре, мб он об этом?

Roman
17.09.2018
16:15:47
не может такого быть) ресолверы реализуешь ты, а не graphql
я частично с ним соглашусь. Написать толковые ресолверы сложнее чем тупой HTTP endpoint но когда проект растёт HTTP/REST превращается в еле-типизированный, хаотичный, непонятный и запутанный ад

Artem
17.09.2018
16:15:59
не может такого быть) ресолверы реализуешь ты, а не graphql
Там и пошёл костыль, что надо выяснить запрашиваемые поля и потом отдавать только их. А фронт находил новый способ запроса, что поля пролетали мимо анализатора

Aleksandr
17.09.2018
16:16:16
там либка делает биндинги по именам полей в структуре, мб он об этом?
не помню такого. насколько помню обе либы абстрагированы от db-слоя (но как работает первая, я честно говоря уже подзабываю)

Artem
17.09.2018
16:17:19
ну та на динамике, там есть defaultResolver, который как раз и мапит поля на структуру. А еще map[string]interface{} тоже отлично хавает

Roman
17.09.2018
16:17:27
Там и пошёл костыль, что надо выяснить запрашиваемые поля и потом отдавать только их. А фронт находил новый способ запроса, что поля пролетали мимо анализатора
overfetching не так страшен как underfetching. бару байт выбросить хуже хем пару недодать и в конце порадить дополнительный round-trip

Aleksandr
17.09.2018
16:18:27
я частично с ним соглашусь. Написать толковые ресолверы сложнее чем тупой HTTP endpoint но когда проект растёт HTTP/REST превращается в еле-типизированный, хаотичный, непонятный и запутанный ад
все мы частично с ним согласимся, но это проблема реализации, а не спеки. Как только в rest добавим выборку по полям, сразу придется городить такие же ресолверы. Или не заморчиваться и продолжать гонять агрегаты (ну так и в graphql то же самое будет)

Aleksandr
17.09.2018
16:20:12
Там и пошёл костыль, что надо выяснить запрашиваемые поля и потом отдавать только их. А фронт находил новый способ запроса, что поля пролетали мимо анализатора
проблема не прояснилась. по спеке тебе прилетает список полей, gql ресолвит их черех ресолверы, написанные тобой. Анализ проходит внутри серверной либы

ну та на динамике, там есть defaultResolver, который как раз и мапит поля на структуру. А еще map[string]interface{} тоже отлично хавает
а, ну может быть. ну надо старую либу забыть - она референсная, то есть работает, но не продакшн реди, а скорее как proof-of-concept

Yaroslav
17.09.2018
16:21:20
Например, персональными

Roman
17.09.2018
16:22:44
А если эти пару байт будут sensitive данными?
и что с ними произойдёт? такое впечатление что вы считаете что те поля которые мы запросили у бд но не отдали клиенту автоматически улетают на чёрный рынок ?

Google
Artem
17.09.2018
16:23:09
форкаться и пилить

Roman
17.09.2018
16:23:24
Artem
17.09.2018
16:23:35
лишнее отдать? это как?
это через дырку в либе

Andrey
17.09.2018
16:23:36
я частично с ним соглашусь. Написать толковые ресолверы сложнее чем тупой HTTP endpoint но когда проект растёт HTTP/REST превращается в еле-типизированный, хаотичный, непонятный и запутанный ад
swagger тоже не спасает? он умеет типы отдавать, если сервер конечно потдерживает типы. В случае с явой так вообще полная автоматизация, пишешь эндпоинты, и у тебя генериться клиент. Я кроме JS ничего не использовал, но вроде есть разные целевые языки.

Admin
ERROR: S client not available

Roman
17.09.2018
16:24:12
это через дырку в либе
ну ёмоё, дескридитировать GQL по багу в какой-то библиотеке...

Aleksandr
17.09.2018
16:24:13
а на вторую подзабили разрабы, и че вот делать?
вариантов нет. первая убогая. На вторую подзабили, видимо потому что нет достаточно мотивирующего фидбека. Можно ждать третью либу, но кажется придется довольствоваться второй

Aleksandr
17.09.2018
16:26:47
или просто перейти на Ru... но нет ?
а есть там что-то хорошее?

в смысле имплементация интересная?

Roman
17.09.2018
16:27:03
swagger тоже не спасает? он умеет типы отдавать, если сервер конечно потдерживает типы. В случае с явой так вообще полная автоматизация, пишешь эндпоинты, и у тебя генериться клиент. Я кроме JS ничего не использовал, но вроде есть разные целевые языки.
свагер может и "спасает" в плане типизации (хоть и не совсем), но от болезней RPC он никак не спасает. вообще. Underfetching в RPC решается только добавлением новых endpoint'ов а это некрасиво, грязно и т.д.

Roman
17.09.2018
16:27:44
а есть там что-то хорошее?
не знаю честно говоря хорошее или нет.. но много говорят про juniper https://github.com/graphql-rust/juniper

Aleksandr
17.09.2018
16:27:45
во первых конечно реализовать subscriptions

Artem
17.09.2018
16:28:20
есть feature requests в ишьюсах
Не, я о том, что стоило бы новой либы, а не доработки этой

Aleksandr
17.09.2018
16:29:15
Не, я о том, что стоило бы новой либы, а не доработки этой
а, ну можно форкнуть. я имел в виду в целом третью, можно не с нуля)

Roman
17.09.2018
16:29:44
во первых конечно реализовать subscriptions
мы кстати обратную связь решили с помощью webwire, пускай не совсем GraphQL-idiomatic но работает считай делаешь mutation запрос с query строкой и она тебя подписывает на named-webwire-signal, который ты потом ловишь

Google
Aleksandr
17.09.2018
16:31:38
не знаю честно говоря хорошее или нет.. но много говорят про juniper https://github.com/graphql-rust/juniper
слушай, ну вот для меня ключевая фича - это поддержка родной схемы, без необходимости ее описывать в терминах языка. https://github.com/graph-gophers/graphql-go/blob/master/example/starwars/starwars.go#L15

Andrey
17.09.2018
16:31:47
Aleksandr
17.09.2018
16:33:59
не совсем понял что ты этим хотел сказать
я хотел сказать что не вижу в растовой либе поддержки этого

Roman
17.09.2018
16:37:12
Но вообще никто не запрещает отдавать на одном энпоинте разный набор полей. Мы так часто делали в зависимости от привелегий.
проблема со специализированными endpoint'ами в tight-coupling'е. Т.е. как только меняются требования клиента (например дизайн изменили, теперь на дашборде оборажается X,Y,Z а не как прежде Y,M,C,A) - нужно переписывать backend для оптимизации, и так постоянно... а что если у вас не один клиент ещё в добавок? RPC очень быстро может превратиться в maintenance катастрофу. Из-за этого и появились раньше такие вещи как SQL, которые позволили решать разные проблемы не переписывая имплементацию бд.. с GQL теперь происходит подобное но уже на уровне API и в виде графа

я хотел сказать что не вижу в растовой либе поддержки этого
я честно не в курсе как там у juniper и rust.. меня больше Go интересует. Go + GQL по сути очень годная пара

Daniel
17.09.2018
16:44:02
а я чет не вижу проблемы

все протоколы, начиная со второго, отдаются по эндпойнтам с префиксом /vN/, где N - номер версии. и все тип-топ, старые клиенты забирают то, что надо, новые - то чно хотят.

Daniel
17.09.2018
16:47:06
а?!

Roman
17.09.2018
16:49:46
а?!
меняется клиент - меняется сервер. tight coupling, ибо RPC. в GQL это не так, сервер меняется только в том случае если появляются новые требования к данным, а не к тому как и в каком виде они отдаются допустим мы изменили view'шку в приложении, было A,B стало A,C; в идеале нам нужно написать новый спец-endpoint для этого нового требования к тому "в каком виде" данные возвращаются. В GQL нам вообще никаких изменений на стороне сервера не потребуются, просто новый query на клиенте и всё.

Andrey
17.09.2018
17:23:05
Эх... Может sql напрямую передавать :) наверное этим все и кончится :)

Andrey
17.09.2018
17:23:54
это уже было
Где? В толстых клиентах?

Макс
17.09.2018
17:24:39
добрый вечер может кто подсказать библиотеки для того чтоб зашифровать строку на js а расшифровать на go

Страница 1416 из 1630