@gogolang

Страница 1418 из 1630
Daniel
17.09.2018
18:55:38
Я тож на саблайме сидел

Dk
17.09.2018
18:56:42
Vscode
linux?

Yaroslav
17.09.2018
18:57:30
linux?
Да, и там тоже работает

Google
Pawel
17.09.2018
19:18:53
Если тема пройдет в массы, этим и должно будет все закончится. Как по мне, это самый логичный способ. Ну может не табличку отдавать, а может и табличку, но не одну... Но sql отличный язык для этого.
Sql оч хорош когда он сам по себе. А если надо из сиквеля в бэк или не дай б-г во фронт, начинается херня. Потому что реляционная алгебра отвратительно ложится как на объекты, так и на функции.

Nathan
17.09.2018
19:32:08
кто пробовал запускать go-tdlib ? [ 1][t 1][1537212656.747661829][TdDb.cpp:381][!Td] Destroy bad sqlite db because of: [Error : 0 : Wrong key or database is corrupted] 2018/09/17 19:30:56 NewClient error: 0 disk I/O error

чтото не понятное

Pawel
17.09.2018
19:34:11
Есть конечно, там же написано на оф сайте. Есть ещё nosql фреймворки, которые прям из фронта лупят в монгу. Что как бы намекает

Andrey
17.09.2018
19:34:28
Я когда говорю про SQL, я не говорю про БД, а про интрерфейс. Можно например запрашивать данные из фейсбука посредством SQL запросов, или любые другие, только драйвер нужен, который обработает этот запрос. Любой GQL запрос, при условии что на бэке стоит реляционная БД, будет преобразован к SQL запросу, так что любой возможный запрос GQL будет мапиться в SQL, иначе это не имеет смысла. Я там выше писал, что возможно в "таблица" как ответ будет не самым лучшим вариантом, но никто и не говорил, что SQL должен описывать как именно должны быть представленны данные, а только их набор. Так вот если маппинг в итоге есть GQL -> SQL, логично ожидать, что кто-то не будет заморачиваться с еще одним языком, а прикрутит подмножество SQL. Лично я в этом случае более охотно его использую.

Roman
17.09.2018
19:36:45
Я когда говорю про SQL, я не говорю про БД, а про интрерфейс. Можно например запрашивать данные из фейсбука посредством SQL запросов, или любые другие, только драйвер нужен, который обработает этот запрос. Любой GQL запрос, при условии что на бэке стоит реляционная БД, будет преобразован к SQL запросу, так что любой возможный запрос GQL будет мапиться в SQL, иначе это не имеет смысла. Я там выше писал, что возможно в "таблица" как ответ будет не самым лучшим вариантом, но никто и не говорил, что SQL должен описывать как именно должны быть представленны данные, а только их набор. Так вот если маппинг в итоге есть GQL -> SQL, логично ожидать, что кто-то не будет заморачиваться с еще одним языком, а прикрутит подмножество SQL. Лично я в этом случае более охотно его использую.
предлагаю эксперимент query { customer(id: "xyz") { friends(ageRange: 18_to_25) { name employer { name } } } } в SQL и с соответствующим парсером.

Pawel
17.09.2018
19:37:49
Да, так надо делать. Прям с фронта - и в общую базу. Make SQL injection great again
Коллега, вы отстали от жизни. В постгресте это всё более или менее решено

Andrey
17.09.2018
19:38:34
предлагаю эксперимент query { customer(id: "xyz") { friends(ageRange: 18_to_25) { name employer { name } } } } в SQL и с соответствующим парсером.
Так в этом нет никакой магии, вот эти движки, которые вы обсуждаете и занимаются тем, что парсят этот запрос и преобразуют его к виду SQL

Google
Daniel
17.09.2018
19:39:49
Коллега, вы отстали от жизни. В постгресте это всё более или менее решено
Решено это в couchdb. Но чет мало кто готов на ней делат проекты

Roman
17.09.2018
19:40:09
Так в этом нет никакой магии, вот эти движки, которые вы обсуждаете и занимаются тем, что парсят этот запрос и преобразуют его к виду SQL
нет, необязательно. У нас ArangoDB (AQL & graph) никакого RDBMS. как только вы напишите SQL запрос похожий на GQL query сверху, вот тогда поговорим

Pawel
17.09.2018
19:41:04
Я когда говорю про SQL, я не говорю про БД, а про интрерфейс. Можно например запрашивать данные из фейсбука посредством SQL запросов, или любые другие, только драйвер нужен, который обработает этот запрос. Любой GQL запрос, при условии что на бэке стоит реляционная БД, будет преобразован к SQL запросу, так что любой возможный запрос GQL будет мапиться в SQL, иначе это не имеет смысла. Я там выше писал, что возможно в "таблица" как ответ будет не самым лучшим вариантом, но никто и не говорил, что SQL должен описывать как именно должны быть представленны данные, а только их набор. Так вот если маппинг в итоге есть GQL -> SQL, логично ожидать, что кто-то не будет заморачиваться с еще одним языком, а прикрутит подмножество SQL. Лично я в этом случае более охотно его использую.
Оба решения имеют право на жизнь. От конкретного кейса зависит какое предпочтительней

Nathan
17.09.2018
19:43:47
да я пример main.go запускаю

нулевая или нет - кто ее знает

Aleksandr
17.09.2018
19:44:21
да я пример main.go запускаю
ну база испорченная. может прав нет на файловую систему?

посмотри

база создается во время первого запуска

Nathan
17.09.2018
19:44:59
./.tdlib/... и тд создаються запускаю в вагранте

Pawel
17.09.2018
19:45:05
Решено это в couchdb. Но чет мало кто готов на ней делат проекты
Ну о какой sql инъекции может идти речь, если сервер преобразует рест запросы в sql?

Aleksandr
17.09.2018
19:45:47
Nathan
17.09.2018
19:46:47
-rw-r--r— 1 vagrant vagrant 3072 Sep 17 19:46 db.sqlite -rw-r--r— 1 vagrant vagrant 32768 Sep 17 19:46 db.sqlite-shm -rw-r--r— 1 vagrant vagrant 0 Sep 17 19:46 db.sqlite-wal

UseFileDatabase: true, // тут ставим false будет работать

Pawel
17.09.2018
19:47:47
они туда и GQL уже завезли?
Нет, но обещают завести

Aleksandr
17.09.2018
19:48:40
UseFileDatabase: true, // тут ставим false будет работать
ну копни в эту сторону. удали диру, запусти заново

Nathan
17.09.2018
19:49:29
:) первым делом попробовал, не понятно зачем там sqlite если и так вроде состояние сохраняет

Aleksandr
17.09.2018
19:51:14
Google
Pawel
17.09.2018
20:03:30
а как он борется с underfetching'ом?
Не готов ответить, я в данном случае не настоящий сварщик. Знаю лишь что меры принимаются

Roman
17.09.2018
20:05:01
Не готов ответить, я в данном случае не настоящий сварщик. Знаю лишь что меры принимаются
учитывая что REST это RPC а RPC решает underfetching только способом добавления специализированных endpoint'ов - звучит не очень.

snip
17.09.2018
20:06:31
Ну судя по доке у них есть resource embedding

Roman
17.09.2018
20:11:15
честно говоря я очень скептически отношусь к слиянию API и DB если endpoint только читает/записывает в бд то на первый взгляд кажется что зачем нужен API?! но потом если нужно реализовать... какие-то особенности в системе прав, посылку мыла вычисления обратную связь (server-side events) и т.д. и т.п. и всё это в бд? звучит слишком хаотично.

Pawel
17.09.2018
20:11:27
учитывая что REST это RPC а RPC решает underfetching только способом добавления специализированных endpoint'ов - звучит не очень.
Как я понял там на каждую вьюху генерятся автоматически ендпойнты соответствующие. Вьюхи докинуть до кучи не проблема. По этому скорее всего решение накидать вьюху на все случаи жизни. Я так думаю

Nathan
17.09.2018
20:11:40
после перезагрузки не сохранится состояние
а на новые сообщения есть возможность подписаться?

Roman
17.09.2018
20:13:10
Sergey
17.09.2018
20:14:10
хранимые процедуры навека

Pawel
17.09.2018
20:14:21
PI sql?
Ну да, на нём логика же

Aleksandr
17.09.2018
20:14:42
а на новые сообщения есть возможность подписаться?
да, в ридми пример, если ты о моей либе говоришь

Roman
17.09.2018
20:15:08
ох... ну делайте как хотите, но я таки за семантическое разделение хранения и обработки

Pawel
17.09.2018
20:16:20
ну конечно, иного варианта нет, этим RPC собственно и не радует.
Чем гря не вижу проблемы - закинул вьюху, все нужные ендпойнты сгенерировать, всё хорошо

Nathan
17.09.2018
20:16:32
да, в ридми пример, если ты о моей либе говоришь
updates.getChannelDifference вот такой запрос сделать, а то сейчас не видно что появилось новое сообщение, в канале к примеру или нет

Pawel
17.09.2018
20:17:20
ох... ну делайте как хотите, но я таки за семантическое разделение хранения и обработки
А я и не говорю что это решение на все случаи жизни. Мой пойнт в том, что не надо им пренебрегать

Aleksandr
17.09.2018
20:18:10
updates.getChannelDifference вот такой запрос сделать, а то сейчас не видно что появилось новое сообщение, в канале к примеру или нет
ты путаешь mtproto и tdlib. в tdlib нет такого метода. есть непрерывный стрим апдейтов, которые можешь фильтровать

Nathan
17.09.2018
20:18:52
ок, посмотрю что там есть

Google
Aleksandr
17.09.2018
20:18:59
Nathan
17.09.2018
20:19:41
мне надо прочесть новые сообщения просто, смотрю как это сделать через tdlib

Roman
17.09.2018
20:20:11
Чем гря не вижу проблемы - закинул вьюху, все нужные ендпойнты сгенерировать, всё хорошо
большой потенциал cross-request caching'а и batching'а на стороне сервера теряется. в GQL можно резолвить поля на loader'ы которые автоматом кэшируют и устраняют дубликаты и batch'ях запросы на бд насколько это производительнее сказать не могу, нет бенчмарков, но в теории это должно лучше распределять хаотичную нагрузку

Roman
17.09.2018
20:23:40
Что лично мне импонирует в этом - можно взять двух трёх сиквелистов вместо роты рубистов-гошников)))
однако по мере роста RPC интерфейса - растёт его семантическая сложность. s GQL она не растёт

snip
17.09.2018
20:24:46
У рест есть преимущество - проще в реализации, проще масштабировать

Admin
ERROR: S client not available

Pawel
17.09.2018
20:25:35
однако по мере роста RPC интерфейса - растёт его семантическая сложность. s GQL она не растёт
Не факт. Если база норм. организована и задачи не выходят за рамки применения РА, то может всё гладко меняться

snip
17.09.2018
20:25:43
Roman
17.09.2018
20:25:44
У рест есть преимущество - проще в реализации, проще масштабировать
с одним таким маааленьким подтекстом: проще до определённого момента ? а чем его проще масшбатировать я честно говоря не понимаю

snip
17.09.2018
20:26:49
Roman
17.09.2018
20:27:57
Есть endpoint которые можно разносить сколь угодно по разным серверам, nginx все разрулит
это называется load balancing, и возможно это как с REST так и с GQL

snip
17.09.2018
20:28:11
Только с рест проще

Roman
17.09.2018
20:28:12
или ты про шардинг?

snip
17.09.2018
20:29:47
Тем что все сводится к прописыванию нужных апстримов

Roman
17.09.2018
20:30:33
Тем что все сводится к прописыванию нужных апстримов
хочешь сказать традиционный load balancing на GQL не распространяется?)

snip
17.09.2018
20:32:03
хочешь сказать традиционный load balancing на GQL не распространяется?)
Хочу сказать что с рест ты можешь выносить любой эндпоинт просто добавив пару строчек в нгинкс

Google
Roman
17.09.2018
20:32:19
нагрузка? ставишь несколько инстансов GQL сервера и перед ними round-robin load balancer в чём сложность то?

snip
17.09.2018
20:33:51
И две копии одного эндпоинт

Ну и в целом есть разница между несколько инстансов всей аппы и масштабирования только самых нагруженных кусков

Roman
17.09.2018
20:36:50
Ну и в целом есть разница между несколько инстансов всей аппы и масштабирования только самых нагруженных кусков
аа, т.е. запустить несколько копий одной API это сложнее, чем реализовать несколько разных HTTP серверов с разной логикой.. I see, I see..

snip
17.09.2018
20:38:34
аа, т.е. запустить несколько копий одной API это сложнее, чем реализовать несколько разных HTTP серверов с разной логикой.. I see, I see..
Смотри, нагрузка идёт на 10% всего апи, ты предлагаешь масштабировать путем поднятия инстансов всего апи, я предлагаю масштабировать только 10% апи

В случае с рест это просто добавить пару строчек в нгинкс

Roman
17.09.2018
20:40:21
Смотри, нагрузка идёт на 10% всего апи, ты предлагаешь масштабировать путем поднятия инстансов всего апи, я предлагаю масштабировать только 10% апи
вообще то о чём ты говоришь называется microservices ? когда ты шардишь своё приложение на независимые компоненты системы и добавляшь инстансов тому компоненту который больше всего нагружен. тут GQL и REST абсолютно не при чём..

snip
17.09.2018
20:43:18
в чём разница то?))))) вызыватьсё то будут только те самые 10% просто на больший ряд машин))
Разница в том, что в одном случае это небольшой кусок апи, который имеет свой uri и в реальной жизни сильно легче выделить то что тормозит, вынести это и разбираться с этим дальше

Roman
17.09.2018
20:45:10
микросервисы можно пилить как на GQL так и на REST..

snip
17.09.2018
20:45:32
И снова к началу)))

Диёр
17.09.2018
20:45:40
snip
17.09.2018
20:45:45
Да, можно

Можно и на grpc

Изначальный посыл был в том что рест имеет ряд преимуществ а именно более простая реализация и масштабироваться легче

Roman
17.09.2018
20:47:51
короче: подытоживаю: GQL устраняет underfetching, но сложнее в реализации REST проще, но решение underfetching'а со временем приводит к полнейшему аду спец-endpoint'ов который окажется сложнее реализации GQL если вы со мной не согласны то переубедит вас только описанная проблема, с которой вы возможно рано или поздно столкнётесь. в любом случае я желаю вам удачи и спокойной ночи! ?

snip
17.09.2018
20:48:11
В том числе за счёт использования микросервисов, так как отдельный эндпоинт может быть хоть отдельным микросервисом хоть кластером таких микросервисов

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