Pawel
ну конечно, иного варианта нет, этим RPC собственно и не радует.
Чем гря не вижу проблемы - закинул вьюху, все нужные ендпойнты сгенерировать, всё хорошо
Nathan
да, в ридми пример, если ты о моей либе говоришь
updates.getChannelDifference вот такой запрос сделать, а то сейчас не видно что появилось новое сообщение, в канале к примеру или нет
Pawel
ох... ну делайте как хотите, но я таки за семантическое разделение хранения и обработки
А я и не говорю что это решение на все случаи жизни. Мой пойнт в том, что не надо им пренебрегать
Aleksandr
updates.getChannelDifference вот такой запрос сделать, а то сейчас не видно что появилось новое сообщение, в канале к примеру или нет
ты путаешь mtproto и tdlib. в tdlib нет такого метода. есть непрерывный стрим апдейтов, которые можешь фильтровать
Nathan
ок, посмотрю что там есть
Aleksandr
Nathan
мне надо прочесть новые сообщения просто, смотрю как это сделать через tdlib
Roman
Чем гря не вижу проблемы - закинул вьюху, все нужные ендпойнты сгенерировать, всё хорошо
большой потенциал cross-request caching'а и batching'а на стороне сервера теряется. в GQL можно резолвить поля на loader'ы которые автоматом кэшируют и устраняют дубликаты и batch'ях запросы на бд насколько это производительнее сказать не могу, нет бенчмарков, но в теории это должно лучше распределять хаотичную нагрузку
Pawel
А я и не говорю что это решение на все случаи жизни. Мой пойнт в том, что не надо им пренебрегать
Что лично мне импонирует в этом - можно взять двух трёх сиквелистов вместо роты рубистов-гошников)))
Roman
Что лично мне импонирует в этом - можно взять двух трёх сиквелистов вместо роты рубистов-гошников)))
однако по мере роста RPC интерфейса - растёт его семантическая сложность. s GQL она не растёт
snip
У рест есть преимущество - проще в реализации, проще масштабировать
Pawel
однако по мере роста RPC интерфейса - растёт его семантическая сложность. s GQL она не растёт
Не факт. Если база норм. организована и задачи не выходят за рамки применения РА, то может всё гладко меняться
Roman
У рест есть преимущество - проще в реализации, проще масштабировать
с одним таким маааленьким подтекстом: проще до определённого момента 😄 а чем его проще масшбатировать я честно говоря не понимаю
Roman
Есть endpoint которые можно разносить сколь угодно по разным серверам, nginx все разрулит
это называется load balancing, и возможно это как с REST так и с GQL
snip
Только с рест проще
Roman
или ты про шардинг?
Roman
snip
Тем что все сводится к прописыванию нужных апстримов
Roman
Тем что все сводится к прописыванию нужных апстримов
хочешь сказать традиционный load balancing на GQL не распространяется?)
snip
хочешь сказать традиционный load balancing на GQL не распространяется?)
Хочу сказать что с рест ты можешь выносить любой эндпоинт просто добавив пару строчек в нгинкс
Roman
нагрузка? ставишь несколько инстансов GQL сервера и перед ними round-robin load balancer в чём сложность то?
snip
И две копии одного эндпоинт
snip
Ну и в целом есть разница между несколько инстансов всей аппы и масштабирования только самых нагруженных кусков
Roman
Ну и в целом есть разница между несколько инстансов всей аппы и масштабирования только самых нагруженных кусков
аа, т.е. запустить несколько копий одной API это сложнее, чем реализовать несколько разных HTTP серверов с разной логикой.. I see, I see..
snip
аа, т.е. запустить несколько копий одной API это сложнее, чем реализовать несколько разных HTTP серверов с разной логикой.. I see, I see..
Смотри, нагрузка идёт на 10% всего апи, ты предлагаешь масштабировать путем поднятия инстансов всего апи, я предлагаю масштабировать только 10% апи
snip
В случае с рест это просто добавить пару строчек в нгинкс
Roman
Смотри, нагрузка идёт на 10% всего апи, ты предлагаешь масштабировать путем поднятия инстансов всего апи, я предлагаю масштабировать только 10% апи
вообще то о чём ты говоришь называется microservices 🙂 когда ты шардишь своё приложение на независимые компоненты системы и добавляшь инстансов тому компоненту который больше всего нагружен. тут GQL и REST абсолютно не при чём..
snip
в чём разница то?))))) вызыватьсё то будут только те самые 10% просто на больший ряд машин))
Разница в том, что в одном случае это небольшой кусок апи, который имеет свой uri и в реальной жизни сильно легче выделить то что тормозит, вынести это и разбираться с этим дальше
Roman
микросервисы можно пилить как на GQL так и на REST..
snip
И снова к началу)))
snip
Да, можно
snip
Можно и на grpc
snip
Изначальный посыл был в том что рест имеет ряд преимуществ а именно более простая реализация и масштабироваться легче
Roman
короче: подытоживаю: GQL устраняет underfetching, но сложнее в реализации REST проще, но решение underfetching'а со временем приводит к полнейшему аду спец-endpoint'ов который окажется сложнее реализации GQL если вы со мной не согласны то переубедит вас только описанная проблема, с которой вы возможно рано или поздно столкнётесь. в любом случае я желаю вам удачи и спокойной ночи! 😉
snip
В том числе за счёт использования микросервисов, так как отдельный эндпоинт может быть хоть отдельным микросервисом хоть кластером таких микросервисов
Luqe
а есть ли курсы на русском языке ?
Cat
на курсере
Dk
С Sublime разобрался, поставил новый gocode, новый GoSublime? Всё работает. Помогите в другом. Вот я хочу, чтобы при отсутствии адреса запроса на сервер был редирект на другую страницу
Dk
cannot assign очевидно
Dk
Как по-человечески делается?
Dk
Это не моя идея была, заменить метод
Никита 🙃
Всем привет! Хотел спросить про каналы, сейчас пытаюсь разобраться и не могу понять. У меня в main запускается канал: req = make(chan tgbotapi.Message, 5) go getPhoto() res = make(chan InstagramResponse, 5) Где req & res объявлены вот так: var ( req chan tgbotapi.Message res chan InstagramResponse ) В определённый момент запускаю канал: req <- *message и после необходимых действий делаю так: res <- InstagramResponse{"data", msg} Но канал не возвращается к make(chan InstagramResponse, 5). Или я что то не так понял, или я тупой) Буду благодарен за помощь
Никита 🙃
О, всё. Заработало как убрал у res пятёрку
Daniel
вот это очень круто: https://habr.com/post/423495
p0rsche
парни, какие минусы у embedded locks на структурах, типа такого var a struct {sync.mutex /* other fields */} => a.Lock(), a.field++, a.Unlock()
p0rsche
А почему должны быть минусы?
хз, я поэтому и спросил. в некоторых местах видел выделение отдельной перемнной внутри структуры, в других - просто syncMutex
snip
вот это очень круто: https://habr.com/post/423495
А что именно круто? Это же вроде просто про либу умеющую использовать готовые модели
Pawel
Если написать на сайте что мол Machine Learining, AI, распознавание лиц, и вот это всё, будут легкие денюжки.
p0rsche
data mining, ICO, cloud, VR тоже вставляй
Pawel
Это можно продавать как решение всего, как Кашпировский воду. При том что никто не знает толком как матрицы умножаются. С одной стороны, печально, с другой - пусть уж умные кидают наглых, а не наоборот.
Kirill
Деревья имеют и крупный недостаток — склонность к переобучению что-то мне не кажется, что результирующая модель может иметь или не иметь какую-то склонность к переобучению)
Cat
> результирующая? Почему результирующая? Исходная. Разные модели по-разному склонны к переобучению, чего тут размышлять
Daniel
А что именно круто? Это же вроде просто про либу умеющую использовать готовые модели
очень хорошая работа, с правильным выбором точки приложения и отличным исполнением
Kirill
> результирующая? Почему результирующая? Исходная. Разные модели по-разному склонны к переобучению, чего тут размышлять
не понял, исходная это что такое – гипотеза? как на переобучение влияет модель с уже подобранными (в результате обучения) параметрами, правда не понимаю)
Alexander
склонность к переобученности - это свойство не конкретной модели, а алгоритма.
Cat
впадлу спорить, сорри тем более с шансом того, что диалог выпилят
Alexander
уже обученная модель может быть overfitted. но она не может "переобучиться" в процессе ее использования. если вы ее "дообучаете" - это не та же самая уже модель
Daniel
какой-то фестиваль капитанства
Alexander
хз, я поэтому и спросил. в некоторых местах видел выделение отдельной перемнной внутри структуры, в других - просто syncMutex
Если заэмбеддить то Lock и Unlock будут частью публичного апи структуры - это в большинстве случаев нежелательно
snip
вот вот 👍
Но в статье как раз про склонность алгоритма
Aleksandr
Всем привет, разбирался ли кто с godoc ? Какой bestway для документирования проекта? У golang в некоторых cmd/...... и readme.md есть и doc.go.. Не хочется вести документацию в двух разных файлах, или там иной смысл?