
Tishka17
14.11.2018
16:05:52
Давай сравним скорость

LighteR
14.11.2018
16:07:02

Tishka17
14.11.2018
16:07:34
Чёт я не сразу понял, что это твоё
Сорри

Google

Александр
14.11.2018
16:07:51
))

LighteR
14.11.2018
16:08:24
Как альтернативу marshmallow можно посмотреть https://github.com/lyft/toasted-marshmallow
там по-сути кодогенерация сериалайзера на основе marshmallow-схем происходит

Tishka17
14.11.2018
16:11:24
Мне маршмеллоу не нравится тем, что надо ещё какие-то схемы отдельно писать

LighteR
14.11.2018
16:12:20

Tishka17
14.11.2018
16:12:26
Жсон схема, маршмеллоу схема, потом датакласс и наконец модель алхимии. И везде блин одни и те же поля

LighteR
14.11.2018
16:12:47
генерация схем по dataclass'ам, attrs, namedtuple

Tishka17
14.11.2018
16:14:25
Она должна быть независима от реализации
То есть технически можно, но имхо не стоит, иначе хрен изменения найдешь
Ее же не только твой сервер будет юзать

Evgeniy ?
14.11.2018
16:15:36
ребята, кто подскажет самый разумный путь, для колективной работы над кодом

Google

Tishka17
14.11.2018
16:15:38
Вот скорее наоборот уж

LighteR
14.11.2018
16:17:07

Tishka17
14.11.2018
16:18:22
Как она к ним попадет? Путем сборки сервера из сорцов?

LighteR
14.11.2018
16:19:22
Сервер же налету это может генерить

Tishka17
14.11.2018
16:21:23
Именно. А клиентский код на лету не сгенеришь
Он блин написан и проверен на соответствие апи, которое выдали

LighteR
14.11.2018
16:22:17
Так а ручное написание json-схем какую проблему решает

Tishka17
14.11.2018
16:22:34
Проблему версионирования апи

LighteR
14.11.2018
16:22:38
если у тебя поменялось апи, но не поменялась json-схема для него, то что это решит?

Tishka17
14.11.2018
16:22:46
И согласования кода сервера и клиента

Александр
14.11.2018
16:23:47

Tishka17
14.11.2018
16:23:55

Dima
14.11.2018
16:26:47

LighteR
14.11.2018
16:26:50
И это должно происходить еще на этапе CI

Tishka17
14.11.2018
16:27:30

Google

Tishka17
14.11.2018
16:27:44
Табы на пробелы замени

?? Eugene
14.11.2018
16:29:05
Почитать про pep8

LighteR
14.11.2018
16:29:41

Tishka17
14.11.2018
16:29:45
Нажми ctrl-alt-shift L или как там

LighteR
14.11.2018
16:29:55
а breaking changes быть не должно

Tishka17
14.11.2018
16:30:29
Любое изменение схемы может быть breaking. Или у тебя 100% покрытие?
Короче, я за генерацию кода из жсон схемы. А не наоборот

LighteR
14.11.2018
16:31:34

Tishka17
14.11.2018
16:31:45
Или сваггер
Реализации разные
Некоторые плохие

LighteR
14.11.2018
16:32:34
Если кто-то не использует tolerant reader, то он ССЗБ
но если делается публичное апи, то с этим конечно сложнее

Tishka17
14.11.2018
16:33:06
Это понятно.
Эмм. Везде где больше 2 человек и есть деление на команды апи становится своего рода публичным по отношению к тебе

LighteR
14.11.2018
16:34:53
В компании могут быть конвеншены, что любой потребитель апи должен являться tolerant reader. Если клиент упадет из-за появления необязательного поля в api, то виноват будет именно разработчик клиента
И это работает и в случае с 2+ разработчиками и в случае с 20+
Если не придерживаться таких правил, то получится, что либо ты вообще не сможешь менять свои апи, либо будешь поддерживать 10ки версий одного и того же api
Если интересно могу рассказать как мы реализовывали матчинг совместимости клиентов и серверов на стадии CI

Google

Tishka17
14.11.2018
16:40:54
У нас как правило согласованное обновление было. Либо сохраняли старые методы без изменений для старых клиентов

LighteR
14.11.2018
16:42:17

Tishka17
14.11.2018
16:43:23

LighteR
14.11.2018
16:48:56
Каждый микросервис предоставляет (геренирит налету) свою серверную сваггер-схему. Каждый клиент который использует какой-то метод api, описывает в своей анотации какую схему request/response он ожидает от сервера (это может делаться кодогенерацией, либо руками), эта анотация используется при вызове клиентом апи для сериализации/десериализации запроса/ответа. Таким образом каждый микросервис налету может сгенерировать для каждого используемого им api сваггер-схему того как выглядит этот api с точки зрения этого клиента. Дальше можно сматчить эти две схемы и получить diff, по-которому можно понять есть ли там breaking change. Помимо этого, можно понять есть ли вообще клиенты у api, которые используют какое-то поле, чтобы можно было его выпилить

serbernar
14.11.2018
16:49:46
в чате есть доктор? тут человеку плохо

Tishka17
14.11.2018
16:50:40


LighteR
14.11.2018
16:52:06
Из-за того что у каждого клиента используется схема, то это гарантирует что клиент использует/отправляет только те поля, которые описаны в схеме
Ну и понятно что внутри компании каждый разработчик не пишет свой велосипед для всего этого. У него просто есть набор библиотек для клиента/сервера, которые все это делают за него автоматически. Ему лишь надо описать(сгенерировать) схемы в приложении

serbernar
14.11.2018
16:57:30
в компании ооо "сказка"

LighteR
14.11.2018
17:01:15
Можешь посмотреть, как это, например, делают в циане: https://www.youtube.com/watch?v=ANDGRmKKEG0

Nikolay
14.11.2018
17:04:41
Корректный подход

Дмитрий
14.11.2018
17:09:09
никто не подскажет как получить из базы (mysql) username пользователя? к примеру после команды /start записывается username пользователя и как получить этот юзернейм?

Mike
14.11.2018
17:12:07

Mename
14.11.2018
17:19:49

Дмитрий
14.11.2018
17:20:32
причем тут библиотека sqlite, когда я писал про mysql и библиотека там pymysql

Mename
14.11.2018
17:20:53
pyTelegramBotAPI

Google

Mename
14.11.2018
17:20:57
Тут юзернейм

Дмитрий
14.11.2018
17:22:06
ну при команде /start записывается его юзернейм в таблицу и так каждый раз. А я хочу получать с этой таблицы юзернейм этот что бы одного и того 100 раз не записывало

Mename
14.11.2018
17:29:53

Tishka17
14.11.2018
17:33:44

Дмитрий
14.11.2018
17:34:41
+ я получаю список всех юзернеймов, как только теперь сделать проверку на то, есть ли среди них юзернейм

Mename
14.11.2018
17:35:30
Ты не Дима, ты Алёша
Тебе всё уже сказали
Полностью за тебя делать не будут

Дмитрий
14.11.2018
17:37:19
боже, что ты мне сказал? два раза сказал что мне уже ответили? и один раз что нужно идти гуглить?

Павел
14.11.2018
17:39:10
ребят кому не сложно и разбираеться в питоне напишите плиз в личку а то я с этим ботом уже мозг сломал