Size: a a a

2020 May 16

VV

Vladimir Votinov in Go-go!
На одном IP может быть множество сайтов, поэтому если браузер начнет отправлять куки по IP то это будет оченеь большой дырой в безопасности, т.к. эти куки смогут получать сторонние сайты.
источник

МП

Мимо Проходящий... in Go-go!
Roman Sharkov
Нормального кеширования это вы про HTTP Cache?

1. HTTP Cache слишком тупой.
HTTP Cache очень часто ломается об банальные query arguments.

GET products?fields=name,customerId
GET products?fields=customerId,name


по мнению cache’а два выше указанных URL’а разрешают разные ресурсы. Кэш не сработал.
Ладно, не лучший пример. Давайте добавим поле:

GET products?fields=customerId,name,id

Опять, кэш не сработал.

HTTP Cache для файликов подходит очень хорошо, а вот для данных с API так-себе ибо у браузера нет семаптического понимания того, как именно идентифицируются какие именно объекты.

1.1 GraphQL нормализирует граф и идентифицирует cache’абильные объекты

Если мы запросили

{
 product(id: “foo”) {
   id
   name
   description
   color
   attributes
 }
}


…то cache GQL клиента нормализует и сохранит по ID объекта данные поля в cache.
При последующем запросе:

{
 product(id: “foo”) {
   name
   description
   color
   attributes
   somethingNew # new field!
 }
}

клиент заметит, что продукт “foo" уже имеется в cache’е, ещё валиден и следственно, автоматически сократит запрос до:

{
 product(id: “foo”) {
   somethingNew # new field!
 }
}


...либо полностью его элиминирует, в случае если все данные валидны и имеются локально

2. HTTP Cache невозможно контролировать.
Если я как разработчик хочу контролировать кэш в коде клиента, то увы, с HTTP это не моё собачье дело.

GraphQL хранит весь cache - client-side. Т.е. у нас полный контроль над тем сколько, что, в каком виде и как долго хранится.

3. HTTP не умеет аггрегировать запросы.

Не смотря на то что эта фича не всегда полезна, её тем не менее стоит упомянуть.
В наше время приложения строятся из множества независимых компонентов, которые часто обращаются к одному и тому API.
GraphQL клиенты умеют аггрегировать несколько запросов в один большой, поскольку граф один.
Роман, о каком графе речь? Если ты про объект запроса gql, так это дерево. Граф - более комплексное понятие
источник

ИЛ

Илья Лазарев... in Go-go!
"Дерево — это связный ациклический граф".
источник

ИЛ

Илья Лазарев... in Go-go!
Что не так?
источник

ИЛ

Илья Лазарев... in Go-go!
Когда мы говорим про квадрат - мы можем сказать, что это фигура?
источник

ИЛ

Илья Лазарев... in Go-go!
Я только ради чтобы разобраться. Не сочтите за умничество.
источник

Y

Yuri in Go-go!
есть вакансия, удаленная официальная работа, кому интересно пишите в личку.
источник

DP

Daniel Podolsky in Go-go!
Yuri
есть вакансия, удаленная официальная работа, кому интересно пишите в личку.
@gogetajob

и там есть правила
источник

NM

Nick Masalov in Go-go!
Ребята, приветствую, я ux/ui Дизайнер из компании wildberries. Мы активно ищем golang dev’ов Есть хорошие вакансии в компанию

Кого заинтересует - пишите в личные сообщения
источник

DP

Daniel Podolsky in Go-go!
Nick Masalov
Ребята, приветствую, я ux/ui Дизайнер из компании wildberries. Мы активно ищем golang dev’ов Есть хорошие вакансии в компанию

Кого заинтересует - пишите в личные сообщения
@gogetajob

и там есть правила
источник

E

Edgar in Go-go!
Никто не встречал конвертатор md в adoc?
источник

DP

Daniel Podolsky in Go-go!
в онлайне довольно много
источник

RS

Roman Sharkov in Go-go!
Мимо Проходящий
Роман, о каком графе речь? Если ты про объект запроса gql, так это дерево. Граф - более комплексное понятие
GraphQL это не дерево, это цикличный граф.

Дерево ациклично, в GraphQL возможны циклы:

{
 human(id: “foo”) {
   dog {
     owner { // cycle
       dog {
         …
       }
     }
   }
 }
}
источник

p

pragus in Go-go!
Vladislav Milenin
http кеширование
А оно где-то работает кроме как на клиенте?
источник

VM

Vladislav Milenin in Go-go!
pragus
А оно где-то работает кроме как на клиенте?
а этого мало?)
источник

NP

Nikita Provotorov in Go-go!
Всем привет! А не подскажете библиотечку для чтения/записи concatenated json? (https://en.wikipedia.org/wiki/JSON_streaming#Concatenated_JSON)
хочу поверх TCP ими кидаться
источник

C

Calculon in Go-go!
Nikita Provotorov
Всем привет! А не подскажете библиотечку для чтения/записи concatenated json? (https://en.wikipedia.org/wiki/JSON_streaming#Concatenated_JSON)
хочу поверх TCP ими кидаться
а зачем?
источник

NP

Nikita Provotorov in Go-go!
Calculon
а зачем?
Хочу организовать взаимодействие поверх TCP в виде один JSON объект=один запрос -> один ответ также в виде одного JSON объекта

количество запросов заранее неизвестно, поэтому не хочется  сериализовывать запросы в виде json массива: в таком случае стандартная json либа будет пытаться вычитать весь массив сразу целиком
источник

C

Calculon in Go-go!
звучит кринжово
источник

C

Calculon in Go-go!
Зачем tcp?
источник