Михаил Непряхин: Так всем, привет как видно Смешно поставьте пожалуйста, пляски
Михаил Непряхин: а какие удовольствия посмотреть Кот проекта
Михаил Непряхин: То есть хотя Бы Так в общих чертах поставьте плюс кто читал
Михаил Непряхин: пытался разобраться. С Кудовой базой вот этого проекта Текущего
Михаил Непряхин: Волки и Близкие если хорошо Ммм Окей Так Ммм Давайте посмотрим То Есть Вот
Михаил Непряхин: с Инициативой всего этого Дела в Принципе я думаю вопросов Не должно возникать
Михаил Непряхин: То Есть ну Там создаем Блогер Туда-сюда
Михаил Непряхин: Соединение. С Позгерой с рэдисом собираем этот блюз кейс Куда зависимости опрокидываем метрики добавляем и запускаем сервер
Михаил Непряхин: и наше приложение по Сути является сервером
Михаил Непряхин: Поэтому Ключевой момент здесь Это как Устроен сервер
Михаил Непряхин: вот давайте значит вот Это вот ээ по рисуем
Михаил Непряхин: так ну, во первых э наш основной рабочий То есть у нас есть так называемые арестапе
Михаил Непряхин: а рейэстаппи э То есть ну. Условно это Там какой-то
Михаил Непряхин: Крут ну. Там типа криит рит абдеет делит операции То есть Там ручки ну вот у нас апе как, Раз, это и представляет Мы Там профиля создаем читаем апредьим делите мудрая
Михаил Непряхин: значит соответственно вресте у нас в протоколах и т п под. Капотом
Михаил Непряхин: а он в свою очередь Ну это Теспи айпи стэг
Михаил Непряхин: То есть использовать основе протокол, диссисипи
Михаил Непряхин: а антипи ну у нас два как бы протокола в Этом стекле стекке, это юдипии а люди Пейте себе,
Михаил Непряхин: на юриди используются преимущественно Видео потоки данных в Аудиопотоке данных там Где не нужна гарантия. Доставки ну в целом как бы Сейчас интернет быстрый Поэтому вот есть протокол хотя и по триноль Например вот там под капотом транспортный уровень это идипи
Михаил Непряхин: вот То есть еюдип, уж довольно надежный ну про Эдиппи пока не Будем то везет на соной протокол Тес-пи
Михаил Непряхин: он соответственно с гарантией доставки пакетов и и
Михаил Непряхин: что. Надо знать о Протоколе Хтп То есть Мы есть еще У нас вторая. Версия протоколы и третья да
Михаил Непряхин: про третью. Я уже сказал Там Остановлено Нововведение. Что Там Вьюдиппи пользуется в транспортном Слове Миссиспи
Михаил Непряхин: во второй версии используется Типи а и протокол. Бинарный
Михаил Непряхин: То есть, вот эта Первая версия она текстовая
Михаил Непряхин: а уже вторая версия она бинарная,
Михаил Непряхин: ну то есть, там прямо вот не залезешь не посмотришь на эти тексты
Михаил Непряхин: но вот вторая версия используется в джерарписи При этом когда мы будем, живописью с чертписи разбираться мы будем, эту, версию протокол Использовать в обычном расте мы используем первую версию про такого она текстово то есть там есть
Михаил Непряхин: два блока основных это заголовки
Михаил Непряхин: федор и боди ну и вот собственно говоря в заголовках У нас какая-то нет информация ну и также Там
Михаил Непряхин: а в самом верху вы здесь еще Находится как Там ну типа сам Пес Куда мы
Михаил Непряхин: а хотим, в итоге. Достучаться то есть
Михаил Непряхин: а корень Сайта Или еще что-то такое заголовки какая-то Информация и боди ну вот собственно здесь
Михаил Непряхин: а Джинсон, не передается
Михаил Непряхин: и чаще всего мы работаем с ресоном ну даже не то Что чаще всего вообще просто Всегда мы Работаем Над Ресурсом в Этом случае То есть когда Мы Используем Вот Джер-писи и вторую Версию протокола То Там Используем Чаще всего протобав
Михаил Непряхин: Вот а Наш, рабочий стек чаще всего это рестапе с джейсоном в виде боевода
Михаил Непряхин: вот удобен тем Что Мы Можем легко дебажить то есть Действительно Удобно взял посмотрел Какие заголовки какой-нибудь ободи То есть Если Мы Там Давайте Поднимем серую
Михаил Непряхин: я чуть Не учел дам миссинга сам Сейчас
Михаил Непряхин: запусти любимый сервак Я Сейчас посмотрим
Михаил Непряхин: значит Вот Мы Создаем и соответственно здесь Удобно Можно посмотреть Какие Заколовки Отправлялись
Михаил Непряхин: Мы говорим Что Мы Работаем с рестораном туда то размер, этого тела
Михаил Непряхин: афтели у нас собственно вот это ну вот оно боди
Михаил Непряхин: а ну это это как бы ответ Окей да это У нас ответ. Вот У нас заголовки которая в запросе Шунок и права Их поддерживаем сжатие Что Мы с режиссером работаем
Михаил Непряхин: и вот ирина наше тело оно же Сон
Михаил Непряхин: вот ну и в ответе тоже, самое в ответит уже из заголовки есть тема запроса
Михаил Непряхин: удобен, тем что ну вот в Принципе как почему такое Распространение. Получил получил арестапе Удобно черт побери работать потому, что с джерписи есть преимущество некоторое Но они ну там по перформансу да то есть там перформанс весь небольшой выигрыш
Михаил Непряхин: Ну он типа там только на определенных Типах наброски дает выигрыш
Михаил Непряхин: и тут уж далеко Не Всегда потому Что Сейчас уже все Научились быстро, Портить весом
Михаил Непряхин: вот Поэтому Так Дефолт я по собственной воле использую тоже растапе Джисон а если Там сверху спускают Требования. Взяли Там джорджеси и Ну Куда деваться
Михаил Непряхин: вот и соответственно для удобной работы с Этим всем.
Михаил Непряхин: В гул Есть сервер Да понятно что вы можете сами все написать вы можете открыть и
Михаил Непряхин: Документацию протоколах и т п Там Один один Сейчас используется версия один один
Михаил Непряхин: и просто реализовать парсинг, от этих всех заголовков боди правильные ответы давать то есть там по спецификации У нас есть коды ответов их нужно все Поддержать
Михаил Непряхин: но для нас уже это все написано по дефолту да то есть как в библиотеке гошный этот функционал есть
Михаил Непряхин: давай уезжай так оно уезжает не уезжают тогда Уезжать надо не Уезжать не поймем как с розой как и
Михаил Непряхин: вот значит аа Что из себя представляет Сервернаш
Михаил Непряхин: ну во-первых это часть с роутином? Роудингом то есть У нас есть определенные роуты
Михаил Непряхин: и Мы сами говорим значит По каким путям что Мы будем отвечать вот вам и словно Там
Михаил Непряхин: у нас есть а путь а Пиво один и профайл.
Михаил Непряхин: Не соответственно у нас есть разные еще Там дтп вот эти вот типы запросов а основные это гетпост
Михаил Непряхин: делит и какой Там пут
Михаил Непряхин: вот э и Мы говорим Что если к нам приходит запрос гет по Такому пути то запусти определенную функцию
Михаил Непряхин: и все то есть вот вот за это отвечает роутинг и Мы это сами настраиваем То есть Мы просто настраиваем все случаи жизни по каким путям Что у нас какая функция будет работать
Михаил Непряхин: а функция эта должна быть определенной сигнатуры
Михаил Непряхин: и так как У нас есть много роутеров
Михаил Непряхин: то вот эта функция У всех вот своя
Михаил Непряхин: но в стандартной библиотеке. Эта функция имеет вид сигнатуру вот такую
Михаил Непряхин: то есть ну название функции может быть любой главное чтобы удовлетворял. Либо метод либо функция От Этой Сигнатуры
Михаил Непряхин: что у нас есть э аа корреспондент и это не трофейс с и
Михаил Непряхин: возможностью заголовки задать, и записать байты в боди
Михаил Непряхин: а ну вот заголовок записать да вот этот заголовок записать произвольный это, в боди бай, и записать а это, хендер
Михаил Непряхин: черным возвращает а ну Это просто посмотреть э
Михаил Непряхин: я-то Этой теме вообще Никогда Не пользовался пресс хайдер
Михаил Непряхин: а ну типа посмотреть текущее Да тебе посмотреть текущую То есть хедры себя представляют Маму да посмотреть текущее чего там и записать туда, дополнительный
Михаил Непряхин: вот а вот это вот структура реквиста То есть как Будто входящая структура
Михаил Непряхин: это грубо говоря Для исходящего чего-то когда Мы Отвечаем Мы Отвечаем на сговоры О том или заголовок записываем и отвечаем либо Мы в будет записываем данные
Михаил Непряхин: ну как я сказал типа про такого текста у него всего лишь два Блока Куда Можно что-то записать
Михаил Непряхин: а вот реквист он тут уже структурой Не тут есть название метода ну То есть мы же должны как-то определить да вот здесь придет гет пост пункта
Михаил Непряхин: есть уром По которому к нам обратились какой протокол Там это вот типа
Михаил Непряхин: первая версия Подкова вторая из версия протокола
Михаил Непряхин: какие заголовки мы тоже, можем посмотреть с Какими заголовками к нам. Обратились Ведь эти заголовки это мапа и стринги так как Заголовков, может быть несколько возле здесь Просто с вайсом а сама посылай
Михаил Непряхин: боди ну будешь видеть Не боди как сласть Байден потому. Что он когда Мы что-то по сети гоняем в конечном итоге мы гоняем байты и потом мы работаем с майейсом байд
Михаил Непряхин: но в гошке в стандартной библиотеке почти Везде Мы пишем с помощью интерфейса урайтера а Читаем с помощью интерфейса рейдера
Михаил Непряхин: и вот видите будет здесь это ридер а вот до этого Мы смотрели был этот райтер
Михаил Непряхин: у него здесь прямо, мы берем и туда заталкиваем прямо, байты
Михаил Непряхин: вот оно часто бывает и с помощью райдера это делается ну как бы это и так такой типа толстый райтер еще сты плотными Функциями,
Михаил Непряхин: так Что Там еще Глянем Что Мы еще можем сделать получить, боди это у нас тут, функция гет боди
Михаил Непряхин: никто не пользовался какая длина контентом вдруг надо закрыть этот можно
Михаил Непряхин: хвост посмотреть какой
Михаил Непряхин: аа, вот Это Мульти Мультипортформ Это короче говоря когда Мы файлы засылаем Мы с этой Штукой Работаем
Михаил Непряхин: Это Постформ то Есть Это когда Мы с Помощью поста отправляем эти ну типа когда мы заполняем форму на сайте то вот мы отправляем вот они здесь оказываются
Михаил Непряхин: я Не помню, чем они отличаются Но короче это плюс минус Одно, и то Же так
Михаил Непряхин: а трейлер Не знаю и эти аэс Если, был кнсом функция
Михаил Непряхин: ну вот вот из этого всего вам ну прежде всего нужно только боди
Михаил Непряхин: потому, что ну вот если, у вас какой-то приходит запрос а вам надо джинсы прочитать какой Там запрос пришел вот вы поэтому используете за это боди чтобы прочитать
Михаил Непряхин: и все заголовки чтобы прочитать тоже используется ну не совсем напрямую вот это вот поле, а Там у Этой структуры еще есть методы Поэтому напрямую Тут редко что-то Мы получаем Обычно просто
Михаил Непряхин: обращаемся к методам вот Этой структуры и из запроса получаем все что нам нужно а
Михаил Непряхин: мне нравится черовок потому что он использует вот Эту вот стандартную сигнатуру Не надо поменять
Михаил Непряхин: а если У нас какой-нибудь Другой Роутер то ну, например, если У нас джин Ты У него Серенатура, своя
Михаил Непряхин: если эко тоже своя Файбер Не знаю Но я подозреваю что у Хайбер тоже своя Потому что
Михаил Непряхин: да обычно они любят все-таки свою сигнатуру делать в фастх и дтп Тоже Своя вот то Есть
Михаил Непряхин: Мне очень нравится, когда вот эта сигналтур Меняется потому что
Михаил Непряхин: короче Ра Она практически ничего не дает и если, у вас есть вот эта вот структура в распоряжении с запросом вы и так все сможете оттуда достать все что вам нужно
Михаил Непряхин: а вот и значит есть еще вот на уровне роутинга такая штука как мид вары эмидауэр и это
Михаил Непряхин: по Сути ну Это как бы паттерн такое Да что Мы Выделяем какую То логику в отдельную функцию,
Михаил Непряхин: ну какой-то типа Логер Или Там митрики
Михаил Непряхин: Или трейсы Или авторизация Или еще Что нибудь
Михаил Непряхин: и если Мы понимаем Что это нужно во всех ручках ручек может быть У нас двадцать
Михаил Непряхин: чтобы в каждой ручке Там не писать свой Блогер ну типа Там пришел запрос вот Мы его хотим, заблокировать Что он пришел и с каким ответом в итоге у нас Получилось обработать запрос мы тоже хотим-то заблокировать ну чтобы это в каждой вот этой функции. Не писать
Михаил Непряхин: вот значит придумали медовары и мы можем их комбинировать указать в каком порядке они будут идти
Михаил Непряхин: и мидовары они работают либо до вот Этой функции,
Михаил Непряхин: либо после Этой функции ну Мы Там сами уже можем управлять
Михаил Непряхин: а когда Мы Хотим, этого не давало запустить Сейчас. Мы на гринговар тоже посмотрим Любим
Михаил Непряхин: вот и когда мы настроили вот это вот поведение, в зависимости от того на какую мы ручку получили запрос
Михаил Непряхин: мы вот это вот все настроенное имеем ну там Обычные структуры как называется. Мукс
Михаил Непряхин: Почему мук ну типа Так Так повелось это в стандартной библиотеке Тоже Так называется вот этот вот
Михаил Непряхин: аа весь ротин которого Мы настраиваем ну типа мультиплексар типа Что вот У нас множество запросов Мы в итоге все имеем в одной структуре и вот Эту структуру ну то есть с настроенными всеми, ротами
Михаил Непряхин: а настроенный роты По сути можно думать о них как о мапе если мы попадаем в и
Михаил Непряхин: тут не суть суть в том Что эта структура она хранит себе, набор. Роутов
Михаил Непряхин: и функции с ними ассоциированных если Мы получаем запрос проверяем у нас есть роуд для этого запроса то Мы вызываем нужную Функцию и Там уже Вызываются медовары до функций или после функций ре мною обрабатываем и запрос а ответ. Отправляем
Михаил Непряхин: так вот вот эта вот структура она передается уже в сам сервер
Михаил Непряхин: и главное чтобы там соблюдался интерфейс А он если
Михаил Непряхин: вот они и здесь их настраивают просто структура хэндлера
Михаил Непряхин: в нью-йорке инженер-с кейс Потому Что У Меня в конечном итоге хендлера То есть функции. Которые ассоциированы с конкретным роутом
Михаил Непряхин: они Потом будут вызывать из кейс Поэтому он тут нужен и а
Михаил Непряхин: У этого в Этой Структуре Хендлер есть вот У Меня, четыре функции.
Михаил Непряхин: А они обязательно должны Быть Этой Сернатурой чтоб они сработали
Михаил Непряхин: и вот я для каждой вот как бы настройка ну люди так что я говорю вот на если, мне приходит пост запрос
Михаил Непряхин: вот с этим роутом то вызови вот эту вот этот Метод От, моей структуры хендлерс
Михаил Непряхин: а вот они медовары я тут говорю что, я хочу в самом, начале еще до запроса значит начать реагировать Ну или как там Не, знаю как у меня здесь
Михаил Непряхин: Сейчас Глянем Нет я в конце блогерую но в конце запроса я лагирую вот э
Михаил Непряхин: также я метрики записываю и Трейсинг,
Михаил Непряхин: и вот это вот все вот эта Вся настроенная Структура Видите она называется. Чей. Мукс
Михаил Непряхин: она в Конечном итоге Передается в структуру Сервера
Михаил Непряхин: а он стандартный стандартный вот Мы значит создали вот структуру которую ту уж смотрели вот здесь мы ее получили
Михаил Непряхин: вернее его здесь внутри вот мы сюда передали и этот указатель передаю и ее там наполняю а дальше передаю сервер и короче сервер он стандартный просто абсолютно стандартный сервер он принимает интерфейс хендлер
Михаил Непряхин: а интерфейс хендлер вот он как бы он обрабатывает то есть вот эту самую сигнатуру что первым аргументом должен идти райтер а вторым ликвист
Михаил Непряхин: и так как у нас соответствуют функции Этой Сигнатуры То сервер Принимает этот чи мукс ля рутер дальше создается стандартная структура сервера
Михаил Непряхин: ну самые главные настройки Серверы Это тайм-ауты на чтение запись
Михаил Непряхин: самого запроса для того чтобы защититься от атаки когда у нас есть такой вид атаки когда клиенты долго пишут долго читают
Михаил Непряхин: и их можно таким образом много Плодить и завалить сервер в для того чтобы от Этой так и защититься рекомендуется
Михаил Непряхин: а надо понимать что, тайм-аут и только на транспортном уровне вот вот на сам процесс отдачи, ответа на сам процесс получения запроса
Михаил Непряхин: то есть вот мы начали. Поучать вот этот вот заголовки получили боди получили вот это вот можно очень долго передавать и когда Мы будем отвечать то клиент тоже, может это очень долго получать
Михаил Непряхин: и вот эти тайматы как раз на это а конкретно уже там на то Сколько времени. И запрос должен отработать это уже отдельно решается другим способом
Михаил Непряхин: Там через контекст
Михаил Непряхин: а вот а здесь просто Мы говорим что на каком порту поднять он Там у меня порт по дефолту Восемьдесят восемьдесят и как бы вот это все настройки сервера то есть У нас есть структура хэндлер это
Михаил Непряхин: мукс но это сестра сам Роутер там настроены все пути тайм-аут и на каком порту поднять после этого он поднимается
Михаил Непряхин: то Есть вот здесь у Меня запускается бурутино
Михаил Непряхин: и в Этой бурутине запускается лиса волонтеров
Михаил Непряхин: и если вдруг портанет Например, то здесь Будет ошибка
Михаил Непряхин: в Конечном если ошибки Не будут то он запустится. И все будет работать.
Михаил Непряхин: Есть Еще есть У Меня метод квос для того Чтобы Погасить сделать шаддаун Этого сервера
Михаил Непряхин: тоже О тайм-аут двадцать пять секунд потому что и а время выполнения чего либо
Михаил Непряхин: вы делаете контекст мы про это тоже. Подробно поговорим значит но вот одна из целей контекста
Михаил Непряхин: А это сказать Что.
Михаил Непряхин: Контекст Должен Жить двадцать пять секунд
Михаил Непряхин: если Он будет Жить дольше То есть Вот Мы создали контекст передали куда-то его Мы передали Это Функцию шаддауна сервера закрытие сервера если сервер будет закрываться дольше чем Двадцать пять секунд то контекст работает вот этот Таймер и Автоматически он уже точно закроется в этот момент
Михаил Непряхин: и так соответственно в голову вот Этим способом настраиваются все тайм-аут то есть все что мы хотим, ограничить по времени какой-то дедлайн сделать вот таким образом делается
Михаил Непряхин: вот так есть ли тут, вопросы, на текущий момент все ли понятно
Михаил Непряхин: странно что ответ что ответ структура а реквист поинтер
Михаил Непряхин: вот такой дизайн, там странностей много прямо, скажем,
Михаил Непряхин: видите ли стандартная библиотека писалась разными людьми и это в основном.
Михаил Непряхин: Уровень не очень высокий Но вот сервер еще ничего написан Но понятно что его можно было Написать Лучше
Михаил Непряхин: но тем не менее вот время проходит и он постепенно ускоряется То есть они тут исправят там исправят там оптимизируют тут оптимизируют
Михаил Непряхин: мне еще не очень нравятся, сторонние серверы потому Что понимаете как, бы ну у нас протоколы постоянно развиваются у нас все идет, вперед и Если вы используете стандартный сервер То просто понимаете что Это на нем сидят Все Он точно протестирован Вдоль и поперек Там точно Все Работа Там может быть Иногда не очень приятно и
Михаил Непряхин: Местами где-то надо, много кода написать но зато у вас полный контроль у вас низкий уровень и
Михаил Непряхин: вот м странности да вы их встретите
Михаил Непряхин: не знаю не особенно, самое дурацкое что я встречал в стандартной библиотеке это то как реализована работа с отправкой почты по см тебе протоколу
Михаил Непряхин: вот там Прямо очень Плохо написано и там приходится брать какую-то стороннюю библиотеку потому что стандартными средствами ну там Можно работать Но она Прям
Михаил Непряхин: Не очень Казалось бы как бы Да Подправка Почта это шпион
Михаил Непряхин: такая штука-то Полезная Но Не Самым лучшим образом. Написана Библиотека стандартной библиотеки Поэтому стандартная Библиотека очень Широкая большая там есть можно сказать Все но Написано она ну так как бы
Михаил Непряхин: работает ивана от той минуты Можно задать, на конкретную ручку или только на весь сервер
Михаил Непряхин: нет ну вот эти тайм-ауты это на весь сервер потому Что они относятся к
Михаил Непряхин: ну, как бы вот к транспортному, слою конкретной ручки их не задать
Михаил Непряхин: ну, или только создавать Два сервера
Михаил Непряхин: Там весить их на разные порты и зам, как То Роудить между Что в рамках Иного приложения, вы можете запустить Сколько угодно серверов,
Михаил Непряхин: ну как бы вот сколько портов в системе он потенциально столько северов можете запустить то есть что такое сервер просто программка которая биндится на определенный порт
Михаил Непряхин: для чего для того что когда придет в линусе запрос он приходит на порт
Михаил Непряхин: порты это ну просто система антресации да то есть как бы в операционной системе что ну приходит пакет какой-то То есть Куда его дальше посылать надо как-то понять Там Написано вот в Напорт. Восемьдесят Восемьдесят
Михаил Непряхин: система смотрится Что У меня на порту Восемьдесят Восемьдесят а там может быть только. Что-то Одно, там на одном Партне может быть чего-то Два да то Есть У нас только одна программа может быть на одном порту Если, Бот вторая подниматься на Этом же порту вот ошибка
Михаил Непряхин: что порт занят то есть если, вы такой уж его встретите Ну, посмотрите вот может у вас просто уже есть ваш Экземпляр сервера работает а вы хотите. Еще Раз его поднять естественно он не может то есть надо Предыдущий погасить
Михаил Непряхин: вот ну здесь команды Там вычислить какой процесс ну с каким идет процесс на определенном партии, и его убить
Михаил Непряхин: вот и
Михаил Непряхин: вы вас никто не ограничивает запустить много серверов указать тут свои эти Конфеты какие Хотите, они будут в рамках одного, приложения работать все будет работать быстро. Супер ну, просто. Их вот многосерверов как бы на разных портах тогда вам надо было думать,
Михаил Непряхин: там выше на гетвее как сделать маршрутизацию вот эту вот чтобы По определенной ручке вас отправили на сервер роукила
Михаил Непряхин: Но тоже как Бы задача решается легко,
Михаил Непряхин: так а зачем в отдельной грутине запуск сервера аа смотрите потому, Что вот здесь вот Мы блокируемся когда запускается
Михаил Непряхин: а вот этот самсервер он запускается функции лисы нонсеф смотрите что Там натрою
Михаил Непряхин: ну вот Сейчас ключевой дойдем сер в тут, подозрительной работы бла-бла бах бесконечный цикл эти бесконечные какой из него Нет Выхода
Михаил Непряхин: ну есть выход, когда мыши отдаем дело
Михаил Непряхин: когда мы что Дам Делом вот тут либо Он с ошибкой Выходим но там ее может Не Быть
Михаил Непряхин: ну тут паника ну вот это вот Не вызывается, Никогда то есть вот выход из этого цикла ну это когда мы вызываем шендаун
Михаил Непряхин: а так этот бесконечный, цикл вот он берет Коннекшн
Михаил Непряхин: развернем этот рыбный Шаг вот Мы Берем коннекшн
Михаил Непряхин: а дальше в Грути Не Запускаем Обработку, нашего запроса Там Внутри
Михаил Непряхин: он идет и ищет Какому Роудеру ну какому. Какой функции соответствует вот этот Роут
Михаил Непряхин: ну тут, ведь, четыреста Деятельности Там Что У Него Не Получилось ну тут, еще какая То там много сего реквист читает бла-бла но это все тут много работы понятно дело что сервер но это все он делает уже в рамках, своей собственной гурудины
Михаил Непряхин: то есть вот здесь стандартном Серверы Один, запрос равен к подъему одной гортины
Михаил Непряхин: Поэтому когда у вас ну? Вот я говорю этот Сервер он Держит? Рпц ну Где то Там Пятьдесят семьдесят тысяч Это значит что У вас в Секунду создается семьдесят тысяч грузин
Михаил Непряхин: ну и как высокий Работа цикл. Бесконечный
Михаил Непряхин: значит Мы Здесь зависли и Все дальше Не Идем Поэтому сервера надо запускать в гору Тине
Михаил Непряхин: иначе, Мы дальше не пойдем Мы запустим этот наш сервер и все а нам, надо ведь дальше смотрите
Михаил Непряхин: нам, надо вот Мы запустили сервер нам, не надо Там блокироваться
Михаил Непряхин: нам надо заблокироваться вот здесь и ждать сигнала завершения работы если, Мы Там Внутри заблокируемся То Мы все ну как бы нас только килять Мы вот эти сигналы не Будем воспринимать от куба Поэтому Мы ее Запускаем в бутине
Михаил Непряхин: есть подход такой когда гурутины запускаются Вот здесь Вот наружу
Михаил Непряхин: ну типа Вот Мы прямо здесь показываем Что Мы Запускаем городтью такого вы увидите Вот как-нибудь Вот Так
Михаил Непряхин: Но дело, в том Что
Михаил Непряхин: чаще всего тогда Придется поделить э на две части то Есть Вот у Меня запускается ведь, у вас здесь в этом методе ну как было бы тогда мне надо было бы этот момент сделать публичным
Михаил Непряхин: здесь а Сейчас, раз покажу как, это как это делают,
Михаил Непряхин: и Делают, вот так вот соответственно старт, и вот это вот запускают в горутине
Михаил Непряхин: то есть как вот есть такая школа, которая так делает ну? Какая тут логика
Михаил Непряхин: Мы показываем что Мы запускаем что-то в грутине
Михаил Непряхин: то есть что вот У нас есть мейнбуртина ну? Где Там она вот Мы же Там в мейнбурге находимся да
Михаил Непряхин: и запустила еще какая-то грутина которая что-то делает параллельно ну Наш сервер параллельно крутит что-то обрабатывает она одна
Михаил Непряхин: а еще здесь может быть э Кафка конюмер тоже гурутина еще Одна которая тоже будет обрабатывать ну уже кафку
Михаил Непряхин: и мы здесь как Бы показываем смотрите У нас Две Грутины Которые работают параллельно. И плюс еще одна, грутина в Мейне которого здесь ждет
Михаил Непряхин: Но прикол в том Что про рефакторинги вывод эту штуку вот это вот Можете забыть и все
Михаил Непряхин: и это просто случай очень часто встречающийся когда это вот теряется и короче люди думают что они там запустили что-то а они Не запустили То Есть вот Это Потерялось они сервер просто. Пронициализировали но Не запустили
Михаил Непряхин: Ну, Если сервера Вы Быстро Заметите Ну, Там Какого-нибудь Консюмер может Не Сразу заметить Что Он Не запустился на самом деле
Михаил Непряхин: Поэтому мне больше нравится вариант когда мы горрутину запускаем внутри вот Этой функции, то есть вот она
Михаил Непряхин: он здесь запускается и точно так же я делаю на всяких форумах контьюрах
Михаил Непряхин: потому что ну ясин пень что если вы запускаете сервер то там будет еще одна грузия создаваться
Михаил Непряхин: и не то чтобы сильно много вам информации сдает если, вы здесь видите эту грутину а вот ошибку вы Совершить можете а здесь не можете здесь она внутри если, вы запустили конструктор вы точно запустили внутри его этот сервер
Михаил Непряхин: вот Поэтому как бы вот этот способ, он мне нравится сильно больше потому что ну как защита дурака
Михаил Непряхин: эээ так спрашивают в новостях про внутреннихстройствах от тп угол. Не спрашивают
Михаил Непряхин: не Сколько я за чистован для понимания рассказываю так и
Михаил Непряхин: у шуток много правил чтоьюзи про такого Не используется ноша
Михаил Непряхин: как бы надо понять что, Вьюги пив протокол используется и он даже используется в Третьей версии это такой протокол. Который в общем-то на подходе и он пока еще только в бразерах используется Но скоро Наверное до Серверов произойдет
Михаил Непряхин: Ну Как бы особой потребности Нет Потому Что Там и Так Все Быстро и на Первой версии Работают на северах
Михаил Непряхин: так дальше значит про мидов. Вары Да про Медовары
Михаил Непряхин: так есть у меня здесь Ммм
Михаил Непряхин: значит ты добавил. Я Папочку Вики
Михаил Непряхин: и ну мы тут будем, переносить Проект,
Михаил Непряхин: а потом Там какие-то изменения будем, Делать но Вики я попробую тоже переносить ну мау ну мы туда периодически будем, заглядывать
Михаил Непряхин: Как шпаргалка ну и просто вам тоже здесь Как бы какие-то полезности будут папчики вики
Михаил Непряхин: значит вот поговорим про медовары паттерн который мне прямо точно надо Знать и то что, надо разбираться в этом
Михаил Непряхин: потому что, периодически вы будете писать сами
Михаил Непряхин: понятно, что, они есть на всякий случай жизни но
Михаил Непряхин: их где-то вам сразу, Не хватит
Михаил Непряхин: ну во-первых значит как оно конфигурируется во всех френворках вот оно обычно либо можно через запятую указать и тут порядок будет сперва вот это медовар вызвится
Михаил Непряхин: либо, Можно
Михаил Непряхин: а вот в чьи например, Можно вот так вот сперва Это методовар Возле зацепленной Это переворот без Разницы
Михаил Непряхин: значит э, здесь У нас есть Мы Создаем простой ротор ну То есть некую структуру для хранения
Михаил Непряхин: вот этих наших роутов и ассоциированных с Этими роутами функций, значит здесь Мы говорим что к роуту корень
Михаил Непряхин: метода гет
Михаил Непряхин: а Прикрепи Функцию вот эту вот видите сигнатуру она здесь такая чтобы сервер ее принял, и все что она делает когда принимает запрос она пишет в консоль хвору
Михаил Непряхин: Дальше Мы Запускаем Наш сервер на порту Восемьдесят Восемьдесят Если, Не удалось запустить панику
Михаил Непряхин: Неожиданно вот Он Как, бы сервер да вот-вот-вот Он уже
Михаил Непряхин: как бы то что, я вам уже рассказывал вот это то же самое только как бы там когда это все размазано вот смотрите вот так вот вот так вот вот так вот
Михаил Непряхин: это для чего это просто способ, организации закона то, есть можно животное
Михаил Непряхин: написать не в своих файлах а в одном файле
Михаил Непряхин: можно вот этот весь пакет не в отдельном пакете делать а право здесь же написать
Михаил Непряхин: но это просто как бы Способ который ну для быстрой. Навигации что У нас в одном, Файле, один метод Мы быстро. Можем навигировать То есть это для этого
Михаил Непряхин: вот а так-то в Принципе можно в одном файле все Писать дальше значит нас
Михаил Непряхин: устройство мидом вары Которое надо понять
Михаил Непряхин: значит смотрите Что из себя представляет мелвар и это функциональный паттерн медовара это функция которая принимает
Михаил Непряхин: функцию и возвращают функцию а то есть вот как бы в жизни и и
Михаил Непряхин: У вас много что теряется вы вот когда такую сигнатуру Видите вы Там по Коду очень сильно У вас рвется связь вы Не Можете нормально посмотреть всю. Цепочку
Михаил Непряхин: вот а в мидварах вот этот Паттерн Используется значит
Михаил Непряхин: Мы Принимаем Функцию что За Функцию Мы Принимаем ну, Вот Мы когда Вот здесь Вот
Михаил Непряхин: к Какому То, роботу ассоциировали функцию Вот это Вот
Михаил Непряхин: у нас Получилось Что Мы конфигурируем Вот этот вот мукс мокс отчи и он удовлетворяет интерфейсу хэндлер
Михаил Непряхин: а хендлер это то Же самое что вот здесь он сигнатуре Мы принимаем хендлер и возвращаем хендлер
Михаил Непряхин: и У сервера тоже вот Мы только что смотрели Там сервер что принимает Он
Михаил Непряхин: Он тоже видите вот он А хэндлера
Михаил Непряхин: хочу вот у него здесь он принимает хендлер то есть как бы
Михаил Непряхин: мы работаем в миноборе со структурой которая является частью роутинга
Михаил Непряхин: и мы по сути Делаем такую цепочку
Михаил Непряхин: аа когда говорим что вот Первым делом
Михаил Непряхин: значит у нас запустится вот эта вот функция и и изначально Там этот хендрон есть
Михаил Непряхин: но он пустой как бы там ничего Еще нет эта функция этот хендлер Принимает и добавляют ему Логику
Михаил Непряхин: и значит ой блин вернее не так Она рассказывать
Михаил Непряхин: Сейчас сам немножко. Забуду, сырян короче изначально есть эта функция в которой происходит вся. Работа
Михаил Непряхин: аа первым Делом вызывается эта функция и в нее вот эта функция пробрасываться то есть она принимает вот эту функцию в себя
Михаил Непряхин: когда мы вызовем некс то мы Вызовем вот это вот функция
Михаил Непряхин: и вот в кодексе, видно что Мы вызываем нек Точку Стеров и Дтп Передаем туда в райтер и лидер
Михаил Непряхин: и вот в этом месте мы и напечатаем этот наш его ворлд вот она здесь вызовет,
Михаил Непряхин: и как видите Раз, мы получили возможность выбрать когда ее вызвать
Михаил Непряхин: то Мы можем вызвать что то до нее и что то после нее
Михаил Непряхин: что бы это все работало видите это все оборачивается Еще в одну, Функцию Она точно такая Же да То есть Она точно с Этой Же ассигнатурой
Михаил Непряхин: Что Мы создаем эту Функцию и ее то мы и возвращаем
Михаил Непряхин: а этот хендлер фанк это превращает вот эту Функцию в энтрофейс хэндлер потому что если мы просто ее вернем
Михаил Непряхин: если Мы просто ее вернем короче нельзя она Не соответствует Этому митрофиту Хендлер вот Поэтому надо ее привезти в открытый Хэндлер фанк
Михаил Непряхин: и тогда она будет соответствовать этот мотрофиссу хендр:
Михаил Непряхин: и у нас есть вторая медовара которая идет! После этого
Михаил Непряхин: она точно такая же да то есть как бы понятно что все мидовары они вот эту сернатуру Используют то есть получается такая Цепочка вызовов
Михаил Непряхин: ну как бы матрешка такая да то есть Мы создаем функцию
Михаил Непряхин: и эту функцию ну вот эту вот самую главную. Функцию ее можно по цепочке передать и по факту у нас получается уже вот три таких, функции
Михаил Непряхин: и они там, друг друга могут вызывать
Михаил Непряхин: и вот конкретно в этом случае когда две помидоры
Михаил Непряхин: получается что вторая медовара Будет Вызывать вот Эту Функцию а первого медовара Будет Вызывать вот Эту Функцию
Михаил Непряхин: То Есть Ты Короче говоря Цепочка получается такая аа вызывает сам значит есть вот это вот
Михаил Непряхин: аа функция Ну, короче Не знаю, как ее назвать
Михаил Непряхин: типа рот ну Которое вот прямо, Этой работой доховал ворот на зерховый урок на земле
Михаил Непряхин: вот и ее вызовет функция секонд млр
Михаил Непряхин: а вот это все дело вызовет вот эта функция
Михаил Непряхин: вот то есть они в конечном итоге То есть эээ фест мидлер получает в себя аргумент
Михаил Непряхин: секонд мигалер вторую медовару он аа эта функция будет выполняться Первой
Михаил Непряхин: и вызовет вот эту всю Цепочку
Михаил Непряхин: аа значит если, на практике, посмотреть как оно работает
Михаил Непряхин: посмотрите у меня сермак за бензин поднято на ждал
Михаил Непряхин: Так надо вызвать Восемьдесят восемь спорта Сейчас
Михаил Непряхин: значит вот смотрите с перо печатается текст
Михаил Непряхин: вообще из Первой из Первой мигалки
Михаил Непряхин: а перед вызовом всего то есть вот ээ вот вот он здесь вот вызвался вот этот текст
Михаил Непряхин: а потом он вызвал вторую, мигалку
Михаил Непряхин: и вторая медовара то есть вот он вот это написал вызвал второй, медо вару вот здесь была вторая медовара то есть вызвалась вот эта штука
Михаил Непряхин: напечатала вот этот текст, типа вот он вторая медовара Тоже, пиренн нектон
Михаил Непряхин: в Аргумент второй медо варе уже был передан вот этот Наш ворлд вот этот тот самый главный ротор который народе
Михаил Непряхин: соответственно вот здесь вот напечатался ховорот
Михаил Непряхин: потом напечаталось вот это вот сэконд автор некст ире эта функция вернула это все а вот сюда
Михаил Непряхин: вот эта функция завершилась выполняться и напечаталось фест алтернекст вот это да
Михаил Непряхин: если, вы тут, до конца не поняли ничего страшного потому Что это все равно все копится Главное понять
Михаил Непряхин: Что у вызова мидовавар есть, порядок он вот здесь вот сделан так чтобы Ну, вот
Михаил Непряхин: логически как они здесь идут друг, за другом так и Не будут вызываться
Михаил Непряхин: и в медоваре вы можете Всегда, Поуправлять что вызовется вначале что вызовится в конце например например вот следующую файл
Михаил Непряхин: а и а так женовать Это за гасим То кончик, не вмешалась
Михаил Непряхин: что у нас здесь медовая медувар называется таймер
Михаил Непряхин: значит основной робот Печатает хвалу ворот
Михаил Непряхин: но пиренн перед перед вызовом его у нас вызовится мимо варо таймер
Михаил Непряхин: вот здесь в аргументе будет собственно вот эта функция
Михаил Непряхин: и понексту она вызовет и напечатать его у ворот Но Мы
Михаил Непряхин: в нее сразу не попадаем Мы Сперва замеряем время Сколько Сейчас время это попадает в переменную
Михаил Непряхин: потом вызывается собственный ворот а потом Мы печатаем Мы делаем синс от текущего времени.
Михаил Непряхин: И понимаем То, Есть вот здесь в итоге будет сколько времени. Оно заняло Возьмется Разница между вот этим временем когда Мы Там замерли и временем Которое Сейчас
Михаил Непряхин: и разницу Мы напечатаем Давайте проведем Сколько времени выполняется
Михаил Непряхин: Две секунды
Михаил Непряхин: да ладно, какие Две секунды эйчут Неп Сколько сможете работать десять Секунд
Михаил Непряхин: ну? Как Будто бы, Разница Ни в Секундах все-таки чего-то Не три Секундыженная Работа
Михаил Непряхин: Так Что это конечно Не относится вообще к делу? Но чего-то Я че То Я Нет.
David R: А там степень минус пятая. Наверное надо поменять режим отображения Времени.
Михаил Непряхин: Документ даже Не задан никак ну вот так секондс фуд шестьдесят четыре Укой Светок
Михаил Непряхин: а так.
David R: Ну вот сейчас он отор уже от микросекунда а до этого он отображал в степени е ну есть степень.
Михаил Непряхин: Не возбуждает его ну короче не надо тут так было Делать и секунды тут Ты скажи себе, чего там любить и писал По этому фильму кто написал вот короче вот синс двадцать восемь
Михаил Непряхин: ника микросекунд двадцать восемь микросекунд Ну короче это двадцать восемь типа
Михаил Непряхин: Ну микросекунды и.
Konstantin: Найди Смешарики.
Михаил Непряхин: Слили Раз, в отрыве короче вот Так это Получилось вот и секунда.
David R: Тут Три Три Три Ноля лишних
David R: ноль целый ноль ноль ноль ноль Двадцать Три.
Михаил Непряхин: Да-да-да Правильно Да-да-да это я Жена на Секунду написал да на Секунду
Михаил Непряхин: вот ну это Не имеет отношения на самом деле как бы к этому к тому что я Отказал ну суть в том что вот таким образом вы можете
Михаил Непряхин: что-то замерить да а потом записать вот сколько, Времени, выполнялась ручка так дальше
Михаил Непряхин: дальше какой у нас еще премьера
Михаил Непряхин: два раза в день а я тут, сед гет да
Михаил Непряхин: так. Сейчас. Сам прочитаю вспомни Что тут у меня значит я спровоцировал. Сет так крестди значит еще До ночам Выполнения всего
Михаил Непряхин: в самом начале
Михаил Непряхин: я создаю айди ну теперь квест иди да типа вот у меня поступает какой-то запрос я его уникально идентифицирую
Михаил Непряхин: чтоб потом в блог записать и все чтобы записывать влог, вот вот с этим адишником ну чтоб потом по этому иди можно было пробить эээ ну как бы типа Рейтинг такого сделателя Так и делали до эпохи. Рейтинга часто с Помощью рейтинга удобно делать Раньше неудобно ну Не было таких. Инструментов делали его с помощью рекеестов айди
Михаил Непряхин: так я Упаду. В контекст я от этой яичник Кладу. В контекст у Меня здесь обертка пек
Михаил Непряхин: такая небольшая обертка над тем про контекст, уже еще дойдем но вот одна из функций, контекста в контексте можно что-то положить вот здесь Мы кладем в контекст Айди,
Михаил Непряхин: и вот эта тема что Мы во все запросы прокидываем контекст вот не для того например, чтобы вот Можно было таким образом Прокинуть контекст внутри которого, будет наш. Реквизиты
Михаил Непряхин: уникальный лишний пишем что, мы положили адишник, в этот контекст дальше этот контекст пробрасываем а дальше по вызовам
Михаил Непряхин: дальше у нас вызывается, вот это вот
Михаил Непряхин: когда мы это вызываем на самом деле мы вызываем вот эту функцию
Михаил Непряхин: потому, что она у нас идет, следующая дам здесь мы достаем
Михаил Непряхин: ликвиста иди и печатаем его и дальше уже вызываем вот здесь уже хову у ворот наш, вызвится
Михаил Непряхин: он ключ тут видите мало смысла это просто демонстрация то есть как бы вот этот гет на самом деле он будет делаться Где то Там в юскейсе или вода авторе да то есть как бы ну здесь пример такой что вот ведь Мы что то положили в одной мида авария
Михаил Непряхин: взяли и достали в другой медоваре то есть у нас вот этот сет напишется из одной медовары а гет мы взяли и достали в Другом месте как видите Ну на самом деле они же. Не очень связанные с Точкой совсем не связаны только к Хендлерам но Там, внутри есть контекст этого хендлера
Михаил Непряхин: и Мы с помощью контекста Можем так проббросить что-нибудь из одного места в Другое.
Михаил Непряхин: Так Ну, здесь просто это для удобства работы с контекстом Давайте запустим Эээ
Михаил Непряхин: да тоже надо вызвать У меня, сервер все
Михаил Непряхин: вот видите вот сет Мы типа засветили. Адишник в одной медуваре а Достали его
Михаил Непряхин: в другую минутували а дальше уже произошел вызов Нашей. Логики
Михаил Непряхин: а допустим Мы можем Сперва Логику вызвать да а потом напечатать тогда Мы просто берем
Михаил Непряхин: и вызываем вот нашу логику до этого чего то
Михаил Непряхин: и тогда будет что Мы сделали сеттер и квест потом хэллоурт, напечатали а потом гетто квест но ведь, проверу
Михаил Непряхин: вот видите, сделали сдрый крест хоум напечатали на тонкий трекест
Михаил Непряхин: вот э это как бы Суперполезное Знание и точно стоит на практиковаться в этом и разобраться как оно работает
Михаил Непряхин: потому что вы будете встречать Ситуацию когда Ваши коллеги будут Делать в мидл, варе
Михаил Непряхин: страшные вещи множество Вещей и чтобы в Этом разобраться Но надо понимать как минимум как Это м товары работать
Михаил Непряхин: в целом мидовары Очень Часто вредят тем что в метоварах начинают что нибудь страшное делать типа сетевые Запросы какие нибудь рэди здесь начинают Держать Еще что. Нибудь
Михаил Непряхин: а резис нужно Держать в адаптарах потому что. Редис это да про ряда сеть Думаю в милу варах Не должно Быть ничего сетевого
Михаил Непряхин: а проверка живите токина Например, от авторизации
Михаил Непряхин: тоже спорный вопрос методология Или не в мидлваре мне нравится это делать все-таки в Визкейсе и но
Михаил Непряхин: Есть люди кто обожает это делать именно, в вину варя Поэтому короче говоря в мидом вару любят заталкивать какие то элементы
Михаил Непряхин: Которые вот для всех запросов Имеют смысл
Михаил Непряхин: Но особенно, Курьезно когда знаете типа не для всех запросов типа вот Если для всех запросов то метовары вроде оправдано а если не для всех и начинается вот это здесь Мы достаем из реквеста в мидлваре будь ну то есть Там можно Достать какой Там У нас был запрос
Михаил Непряхин: значит вот. Матуру можно Там пс Ты вот. Прям Достать вот. Там стенга на работал со стрингом,
Михаил Непряхин: и проверить и начинается вот эта, проверка типа если это, вот такая ручка то тогда, вот не делает Логику, а если вот такая рушка тогда, делает вот Это, вообще Полная грязь, вот если Вы начинаете вот этим заниматься то Это, не место, точно в мид варе не надо эту мойку Держать Меду варя. Держите блин ее в Юскейзе ну. Или на коренях по самому контроле
Михаил Непряхин: вот ну. Тут еще один примерчик социализаций значит Есть у нас
Михаил Непряхин: Ну тут короче представим что у нас Мы Хотим? Сделать Бейсика уф
Михаил Непряхин: и Для Него уже Есть и
Михаил Непряхин: просто видите медовары это такая штука которая ну ее плен надо вообще заметить ну то есть вот даже банально вот смотрите у меня, вот сермак
Михаил Непряхин: я вот захожу в контроль Ркнулась десять
Михаил Непряхин: и понимаю вот у меня такая медовая если какая методовая есть и я должен о них помнить Я должен понимать что Вот У Меня Ручка за Создание профаева да
Михаил Непряхин: м Я Не Вижу всей Логики Потому что вокруг Этого У меня так-то Еще лагирование происходит в Этой методваре метрики Собираются в Этой мидлваре и происходит Трейсинг, в Этой медоваре смотрите какая тут Логика Веселая Но ее много то есть вот этот весь Кот
Михаил Непряхин: он Выполняется вот где-то У Меня Саморочка управлена здесь вот на этом этапе до того как я вызываю ручку у меня вот действия какие-то происходят потом я вызвал ручку и вот у меня тут еще какие-то действия происходят да и я там ничего не вижу
Михаил Непряхин: и это забывается ну это во-первых еще и в разных местах может быть раскидано потому что, вот одна медовара вот здесь может быть
Михаил Непряхин: две мемуары
Михаил Непряхин: аа здесь может быть вот они уже в разных местах вы уже можете запутаться и как бы там надо о них помнить
Михаил Непряхин: а еще у меня например, дефолтная миновара Она когда я роут создаю
Михаил Непряхин: вот у меня еще есть три Камера медовара она Еще на верхнем уровне то есть видите здесь получается такая иерархия мелвар Понятно чем ближе От к Созданию роутера тем медовара Впервые будут вызваны но вот рекавер это восстановление в случае паник ну там просто короче диффер,
Михаил Непряхин: вот с этим сойкавером то есть как Бы это медовары Которые предотвращают Разматывание Стека в случае ошибки в одной ручке чтобы У нас ну запаниковала Ручка Но ничего Страшного сервер джон Падать что? Ли Сразу, Нет Мы продолжаем работать ничего Страшного Что Одна Ручка запаниковала вот Поэтому эта медовара здесь нужна
Михаил Непряхин: вот и короче говоря М-м Если, Это логиет Метрки трейсы ну Окей
Михаил Непряхин: если Там что-то уже Сложнее какая-то Логика ну блин покажите ее отразите ее Из кейса так вот
Михаил Непряхин: значит вот он мы допустим тут, сделали хотим, сделать бейсика уф ну типа проверить авторизацию в ручке и типа для всех ручку
Михаил Непряхин: начну здесь то же самое вот хло вор. Та же самая ручка ну? Перед ней идет метовара стандартная ну? Нестандартная из Пакетачи
Михаил Непряхин: значит ну? Тут как будет какая-то логика ну смысл в том что Мы вот здесь Делаем бэсика уф Мы из заголовка авторизейшен достаю партиям партиям в бриз Шестьдесят четыре ну как же там по Протоколу бэсик офф передается в заголовке
Михаил Непряхин: авторезышен потом бейсик и и через пробел,
Михаил Непряхин: в б шестьдесят четыре закодирован Логин и пароль
Михаил Непряхин: вот это уже делает постман например, это делать не нужно и Мы просто проверяем что там логин юзер пароль пес если они Совпадают То, Мы выпускаем
Михаил Непряхин: танодозе Запусти
Михаил Непряхин: так Вот Мы запустили и Вот этот подготовый запросек значит Вот Мы к этому. К нашему около. Хосту
Михаил Непряхин: тут, мы ничего не авторизованы вот сделан запрос получаем четыреста один
Михаил Непряхин: ведь можно написать бэсик реу профайл апе Но это вот здесь указать вот смотрите вот это указывается про фармацев вот он и пишет бейсик реал ну Тоже, Там по протоколу кручу принято если Ошибка авторизации его надо писать бейсик реал
Михаил Непряхин: и значит Мы добавляем заголовок можем. Забавить заголовок ну Там же надо зашифровать вбые шестьдесят четыре чтобы это не делать. Вот за нас все сделает этот послан просто тут запишем Один, пароль какой-то юзер Пес
Михаил Непряхин: вот и сделан запрос в эти, двести ответ. Действий все-таки прошло
Михаил Непряхин: вот то есть логика была произведена что мкетологи, есть
Михаил Непряхин: Нет просто хвалрот, вот а эта логика была произведена в мигал, варе
Михаил Непряхин: а мы на самом деле вот пишем только влог хлор
Михаил Непряхин: вот про мигаловары это все так Давайте за Две минутки отдохнем на Вопросы, ответим и дальше
Михаил Непряхин: да возвращаемся да еще смотрите ээ важное значит что еще нужно сказать этот патерн Ммм у него название есть
Михаил Непряхин: ты декоратор что. Ли вроде декоратора поправьте меня если ошибаюсь вроде декоратора называется он также встречается и бронь,
Михаил Непряхин: звука Нет
Михаил Непряхин: так разве это есть звук так и
Михаил Непряхин: так он встречается и в других частях
Михаил Непряхин: ну во Первых что нужно знать что То же самое применяется к джерси синграмм То есть Мы Там потом будем Писать эту историю увидим только Там он называется немидвуара
Михаил Непряхин: интерсептор
Михаил Непряхин: короче говоря если, вы видите мидлер название то это имеется в виду вот про роутинг То есть Это либо до вызова Этого
Михаил Непряхин: ручки происходят ибо? После ну? Вот в зависимости от того как вы тут на экспостойте Доили. После чего-то
Михаил Непряхин: значит То же самое с Джерписи Только в Джерси и Это называется интерсептор но суть та же самая эээ.
Михаил Непряхин: И он декоратор Так и называют когда Мы можем делать это на любых слоях ну обычно это используется с адаптами вот вы можете встретиться да авторами значит Э в каких Ситуациях
Михаил Непряхин: Например, у вас есть воскрес новости, так По визуальный Блог значит у вас есть
Михаил Непряхин: у вас есть поздравля какой-то запрос обогрев
Михаил Непряхин: ну. Это гетовый должен быть запрос то есть что-то вы, получаете и перед ним
Михаил Непряхин: а ставится мида вара видя каша
Михаил Непряхин: и короче говоря когда ньюс кейс вызывает возгрыз перед ним
Михаил Непряхин: вызывает ну декоратор вот этот вот вызывается кэш
Михаил Непряхин: то Есть Вместо того чтобы в Нью-йорке Вы допустим Не с кейс Вы вызываете кэш
Михаил Непряхин: а потом в зависимости от результата вызываете поиск
Михаил Непряхин: можно сразу, Вызвать просто послес без крыша
Михаил Непряхин: но Там автоматически вот здесь работает декоратор Мультипаля медора
Михаил Непряхин: и кэш сам вызовет и проверится типа вот если запрос есть в крыше Он искоша Достанется если Нет каша То сходится в Погреву, и так далее,
Михаил Непряхин: вот ну М То же самое Можно сделать с раисами вот у меня Например, троицы они антон,
Михаил Непряхин: ну тут мне трое Соедините каждой функции, сверху есть такая штука
Михаил Непряхин: можно было бы их сделать Обертку, вокруг вот этих функций
Михаил Непряхин: с той Же, самой сигнатурой главное они должны быть и вот
Михаил Непряхин: функция была Бы только из одного. Из двух этих строчек
Михаил Непряхин: а потом собственно вызов реальной функции ну Тоже, Там как-нибудь называть Некст Или
Михаил Непряхин: Там бэйс Или Там Еще называют как-то так
Михаил Непряхин: вот но видите вот это вот этот паттер он ну во Первых его надо Билдеть. У меня появятся дополнительные вот эти свои. Которые надо бил. Ведь, плюс
Михаил Непряхин: а и здесь же надо шибованный интерфейс все удовлетворял если мы кэш добавляем
Михаил Непряхин: ну смотрите у нас тут методов Да пачка а если мы толкаешь добавим такую мигалвару декоратор кэш
Михаил Непряхин: То он будет применен вот гетто профаеву,
Михаил Непряхин: а плюс надо будет Обновлять кэш удалять кэш
Михаил Непряхин: и здесь надо будет когда мы создаем ну, здесь конечно Не используется Мы просто создаем волнуй записываем в Кэш
Михаил Непряхин: и вся, эта логика Будет вот Жить отдельно и и
Михаил Непряхин: в каких-то ситуациях это может быть оправдано что типа Мы получаем удобство Хотим? Подключить кэш взяли Там просто добавились кобочки у функции, подключили
Михаил Непряхин: вот но мне Это Скорее больше не нравится. Потому Что Оно выносится куда-то в отдельные функции и точно так же как у медовара видите как бы у вас есть какая то логика а Вы ее не видите то есть Вы видите вот это
Михаил Непряхин: а шутом до Этого и после Этого Вы не видите вот Поэтому
Михаил Непряхин: гошка декларирует явно лучше неявного а вот этот паттер с миловарами Где декораторами он вот теряет в явности
Михаил Непряхин: так это все что я хочу сказать Сейчас посмотрим чиновники Вопросы, были эээ Так
Михаил Непряхин: метод опшенс пишут Ли обычно Прям гошки. Или же заопшен Отвечают условно джинс как они конфигурация,
Михаил Непряхин: опшин имеет. Этот образ а оно имеется в виду а метод и.
Konstantin: Да да.
Михаил Непряхин: Слушайте вообще Ни разу Не использовал Не Скажу. Много вообще Ничего Не Скажу. Про общем
Михаил Непряхин: Не приходилось с ним работать.
Михаил Непряхин: Поэтому без понятия
Михаил Непряхин: и еще вопрос вот например, есть две ручки одна с Проверкой авторизован ли пользователь отругали без ручки ну без проверки так
Михаил Непряхин: как организовать меню вару с Этой проверкой чтобы на одну, ручку проверка происходила а на другую нет ну вот рифом то, есть
Михаил Непряхин: видите как бы вот я уже сказал про этот кейс что вы начинаете внутри медовары добавлять свечи ифы а это ну Плохо
Михаил Непряхин: Поэтому авторизация Видите авторизация же все равно. Там ну прежде всего пятьдесят Ручек и не всех нужна авторизация а только на одной не нужна ну так и быть сделайте исключение на Этом проверку,
Михаил Непряхин: вот а если Там только на одной ручке нужна авторизация, на всех нет Или Там из десяти на двух нужна авторизация Или на трех проща Эту авторизацию близки Из Этой казни то есть короче говоря тут трядов. Ну то есть вы сами думаете, Куда за только капитализацию в минув вару с условиями Праве проверять процвета
Михаил Непряхин: рыба виз кейс Так камедовара Мутирует, Хаспер и квест Если Их много Рекрест Превращается в Год обжиг как смерт
Михаил Непряхин: ну Не Делать много мелвар а Делать медовары только которые вот типологии травится в метре минус Пять степени
Михаил Непряхин: ну да Так а Если, Вызвать два раза друг За Другом некстер в хотя бы в одной Медовой это Что произойдет
Михаил Непряхин: и вот у нас самый первый пример был
Михаил Непряхин: плохо у ворот вызывается да вот он владеет в итоге будет Вызван Мы вот три Раза Вызовем три раза хо ворот был вызван
Михаил Непряхин: ведь три раза просто. Вызвали, То есть ну как бы патерн максимально тупой
Михаил Непряхин: но сложно только из-за того что, надо понимать что вот сюда встанет Функция и вернется Функция и это такая матрешка Функция функции функции
Михаил Непряхин: функции возражают функцию
Михаил Непряхин: и это короче говоря первый Раз когда пытаетесь понять как это вообще не работает там мозг плывет,
Михаил Непряхин: вот и это я еще простой пример написал
Михаил Непряхин: на самом деле Вот Эти, Вот фунты еще Там Замудренный напиток
Михаил Непряхин: короче говоря Вот тут надо прямо, Вот потыкать Попробовать потыкать и просто понимать что Вот Это Вот
Михаил Непряхин: все равно что Поствызов Вот этого Вот по роутингу и все
Михаил Непряхин: так Вызвать Виски из мидавари норм живите например,
Михаил Непряхин: смотрите Вот У нас а и
Михаил Непряхин: вот У нас ручки эти обработки да запросов и уже обработчик, запроса вызывает виз, кейс а и
Михаил Непряхин: если вы будете вызывать юзкейс вмидлвари
Михаил Непряхин: короче вы Усложняете всем, жизнь Но Представляете как бы это вы допустим будете помнить и то забудете
Михаил Непряхин: а Человек потом
Михаил Непряхин: как он догадается что есть некий эскейс который вызывается в мидлваре понятно если он идет. Этот риск кейс посмотрит Поищет он найдет Ну короче
Михаил Непряхин: и Это Усложняет всем. Жизнь для этого и нужен вот этот вот свой контролер с хендлерами
Михаил Непряхин: чтобы в нем увидеть как вызывает юс кейс видели бы У него очень. Простые обязанности получить, запрос
Михаил Непряхин: декодировать его в нашу структуру удобную нам. Детошку
Михаил Непряхин: вызвать из кейс и отдать ответ то есть вот его зона ответственности я здесь даже не валидацию не делаю ничего влидаться в риск если, делать ну часто здесь вылидаться делается на этом уровне
Михаил Непряхин: но я предпочитаю Делать Влидацию из кейса потому. Что если у вас появится Еще джералд и сервер вам придется вылиться и Делать уже в Двух местах
Михаил Непряхин: а удобнее когда вылетаться будут в одном месте из Кейси
Михаил Непряхин: вот Поэтому как бы в миду варе ньюс кейс точно не надо вызывать Да и видите юзкейс Это же Основная Ролька нашей работы Мы там Будем адаптаторы вызывать адаптер Это сеть как правило
Михаил Непряхин: а вы Не хотите, в мидл варе что-то делать сетевое потому что сеть это важно
Михаил Непряхин: ну как бы сеть это основной источник всех Проблем, да это ненадежно это медленно это ну это ты сложно знаешь гемор. Это Там происходят постоянно проблемы
Михаил Непряхин: и вы хотите, Подсветить эти места Поэтому вы их выносите в Адаптацию и делегируете работу с этими адаптами Льюшкейсу
Михаил Непряхин: Поэтому и Рискису Не Место, в миноборе
Михаил Непряхин: а с Дживити ну как Бы тоже для Людей По-разному можно работать
Михаил Непряхин: О можно бесит живите и проверить
Михаил Непряхин: а если вы сидите и пробираете То Это точно мюс кейс
Михаил Непряхин: но обычно в живите живите работают как Там просто вы получаете набор этих сертификатов Раз, не знает он Час
Михаил Непряхин: и он у вас есть а состоит
Михаил Непряхин: и тогда вы в медуваре так и Быть можете Дживи и проверить но даже это мне Не очень нравится я бы это делал из кейса
Михаил Непряхин: так мне не, нравится, мемуары сам не, то чтобы много писал он на страдании наслушался да да но вы же как бы я вам вот говорю это
Михаил Непряхин: только для того чтобы вы перестали писать эти чертовые метовары ну сколько можно ну как бы ну вот Ежики Кололись ну урали как-то ну плохой паттерн ну Точнее как бы нету плохих патронов да Но вот надо просто понимать что и
Михаил Непряхин: он вот для метрик Логов Тамрекамера что такое что актуально всем ручкам
Михаил Непряхин: вот и простое Не должно Быть Там какая то Логика прямо важная
Михаил Непряхин: Никогда ничуть без Тройку Неговаривал у Меня был Случай когда сессии сделали Через миговор Потом сессии создавались, даже для метров где Там приковавалось
Михаил Непряхин: у Меня тоже очень много историй из Жизни
Михаил Непряхин: а узнали Об этом Случайно протестирование совсем
Михаил Непряхин: совсем другой фитчер сессии Хранились в Рэдисе в итоге метро
Михаил Непряхин: ходили просто так Грозит хотя для сессии было мой Хорошо ну да да да так есть тэк
Михаил Непряхин: как делать Обанглу Давайте потом как нибудь
Михаил Непряхин: принято ли в гуу писать к атомных стоп хендлера и Например, для проклятия
Михаил Непряхин: я бы живите из кейси проверял.
Михаил Непряхин: Обертки ну да.
David R: Вопрос голосом.
Михаил Непряхин: Да то есть.
David R: Вот в и и выводиться отображаться еще Такое а если подобный Механизм с что в
David R: во время заводки Мы какой-то и.
Михаил Непряхин: Да просто, посмотреть вообще без Проблем, вот вот допустим вот этот ваш, медовар который Нужен для разработки, не Нужен в прозе берете оборачиваете. Его вив А здесь там из ян вы берете переменное окружение ну и все если. Она
Михаил Непряхин: ээ например, локальные разработки но из-за испрот
Михаил Непряхин: вот из проту он будет выключен эээ если,
Михаил Непряхин: не знаю давайте так извол вот нужно только для вокальной разработки вы назовете его из окон на проди он будет фоукс вы сюда не зайдете эту медовару не подрубите а при вокальной разработке он будет тру вы зазвездие меговора подрубите короче вот максимально все просто в этом плане
Михаил Непряхин: семь, Без Проблем,
Михаил Непряхин: так и с
Михаил Непряхин: да я тут кстати мидвару делал только что, да вот и вот полностью в ответ. На ваш Вопрос с Миловарой, Приработят Живите
Михаил Непряхин: полностью пример рабочий и хороший можете почитать посмотреть потом когда нибудь идем на движение ты глянем так Ммм
Михаил Непряхин: все ли понятно про этот про медовары ни у кого, не осталось Вопросов штука прямо, важная
Михаил Непряхин: так Сейчас подумаю что нам важнее клиенты тест
Михаил Непряхин: так давайте Теперь ты я думал про клиенты тесты шас да про клиент давайте поговорим то есть
Михаил Непряхин: Сейчас мы постепенно будем разные части Этой большой структуры изучать для того чтобы в конечном итоге у вас Картинка сложилась
Михаил Непряхин: да значит вот когда У вас Есть Сервер то и
Михаил Непряхин: ну вот в Этом случае значит У меня здесь подход показан Это Кот фест то Есть вы сперва пишете код
Михаил Непряхин: потом пишите к нему Спеку
Михаил Непряхин: ну может быть и в процессе Спеку пишете может у вас изначальный спек есть то есть вот опы напельцлагер
Михаил Непряхин: спецификация вы соответственно можете дать коллеге, можете затолкать в посман
Михаил Непряхин: и у Вас Оно Будет работать
Михаил Непряхин: но когда вашим сервером будут пользоваться другие люди ну, другие разработчики то есть у нас жизнь Микросервисная архитектура
Михаил Непряхин: вы Это Апи делаете для кого-то чтобы вашим сервером сервисом кто то. Пользовался и конечно же поспейки
Михаил Непряхин: понятно, что, Делают, ручки то. Есть он вот у нас профайл, пост
Михаил Непряхин: э создается Новый профиль тут, схема Есть Можно Там схему посмотреть что вот обязательные Поля ими возраст и мой телефон что это оджик
Михаил Непряхин: Проперти с премьерами даже с экземпами То есть вы можете вот аут под Какой ответ будет что
Михаил Непряхин: а иди будет оно обязательное поле будет Выглядеть! Как ее иди вот ну, все равно и
Михаил Непряхин: как бы надо же написать обертку то есть вот вы дали какую то документацию людям они будут писать
Михаил Непряхин: а обертку над этим ну то есть чтобы из кода можно было ваши апе вызвать
Михаил Непряхин: там могут быть в Этой, мапе могут быть ошибки например
Михаил Непряхин: и вы все равно сами то есть как бы это обязанность разработчика тестировать свою собственную апе и
Михаил Непряхин: Раз вы будете его тестировать вы его будете тестировать из голкода, тоже то есть
Михаил Непряхин: понятно, что, есть там какие то тестировщики и прочие но это все полная фигня то есть как бы если вы пишете сами для себя тесты Никакие тестировщики У вас ничего Интересного Никогда Не найдут
Михаил Непряхин: Потому Что Вы Проверите Гораздо больше чем ну Вы лучше знаете ваш Кот вы понимаете что проверять вы понимаете какой У вас хэппи Поэт какие У вас
Михаил Непряхин: Есть, кейсы когда У вас что падает вот Поэтому
Михаил Непряхин: вы все равно нуждаетесь чтобы вот это вот ваши апе
Михаил Непряхин: а оно было в виде Кода то есть что, бы для вашего Сервера был написан клиент
Михаил Непряхин: и Поэтому лучшей практикой является, вот вы написали и сервер ну вот эти вот все Ручки описали да вот эти вот
Михаил Непряхин: Напишите для Него сразу клиент то Есть
Михаил Непряхин: когда вы вот Мы будем вот
Михаил Непряхин: на следующем занятии наверное Рассматривать подход. Когда Мы Сперва Пишем вот Эту Доку то есть вообще Кот Не Пишем Доку Написали и вот из Этой доки есть инструменты Которые генерируют и сервера и клиента
Михаил Непряхин: но пока мы рассматриваем другой подход который Чаще все таки встречается
Михаил Непряхин: а это когда мы Пишем Кот
Михаил Непряхин: и у нас из пеки может Не быть да вот Этой вот то есть но нам надо срочно писать клиента самому
Михаил Непряхин: и вот посмотрим как этот клиент пишется
Михаил Непряхин: то есть вот банально У нас есть Ручка клеит профайл.
Михаил Непряхин: А как Написать клиент который Будет ее Вызывать значит Кот Находится в покага хтп клиент а и
Михаил Непряхин: в Принципе Лучшей практикой Является вот его помещение в Кг То есть Это, То что шарится и этого же сервиса
Михаил Непряхин: потому что вы здесь же и сможете его тестировать сами, же
Михаил Непряхин: и плюс коллеге не надо будет ничего самому писать он Просто Возьмет и воспользуется вот этим кодом
Михаил Непряхин: и ваш апель будет работать Предсказуемым образом потому что Ну мало написать север Нужно еще для Него написать правильный клиент правильно обработать ошибки
Михаил Непряхин: и там Ретрай какие-то можно Даже Внутрь Добавить То есть как бы вы Лучше знаете в вашей Апе и Лучше ваш вас клиент. Никто Не напишет
Михаил Непряхин: значит как. Пишется клиент а ну? Во Первых есть вот Опять же я делаю Общую структуру клиента
Михаил Непряхин: и уже от этого клиента методы это уже вот конкретные ручки
Михаил Непряхин: значит Ну, ошибку но аккаунты я Всегда делаю обычно я не уточняю просто. Делаю общую
Михаил Непряхин: и Ну, она будет возвращаться когда ничего Не Найдено
Михаил Непряхин: значит. Из конфига что самое важное для Клиента тайм аут Это тайм-аут на этот
Михаил Непряхин: ну короче Это тайм-аут похожий на этот Ммм
Михаил Непряхин: тайм-аут который Мы указываем У Сервера
Михаил Непряхин: на Тайм-аут Запроса Но короче важно его делать
Михаил Непряхин: и По сути Там много Еще разных и и собственно и все вот дальше Мы Этот клиент имеем
Михаил Непряхин: когда Мы его создаем Нет никаких проверок никаких экшена ничего Не, устанавливается Мы просто создадим эту структуру
Михаил Непряхин: дальше нам нужен какой то основной Путь
Михаил Непряхин: и Поэтому я его здесь тоже указываю в конфигурации дефолтные тут, около. Хост
Михаил Непряхин: и ну есть функция у джона хостапорта и в итоге Запросы будут делаться к волкам хосту на двоеточие Восемьдесят Восемьдесят
Михаил Непряхин: и методы это уже Запросы. К нашему серверу выглядит довольно Длинно
Михаил Непряхин: то есть У нас даже Сервер как Бы короче выглядит ну смотрите давайте почитаем эту логику понятно тут какие-то вещи можно обобщить но я вот тут написал просто в лоб да как вот
Михаил Непряхин: как это на самом деле выглядит
Михаил Непряхин: значит ну для удобства работы нам самим то есть чтоб нам было удобно работать а у меня здесь э
Михаил Непряхин: Можно здесь тоже использовать вто, но я когда как делаю если аргументов Очень много Я Могу сделать здесь и
Михаил Непряхин: значит прямо, здесь короткожу Путь к серверу почему хардкожу ну потому что вряд ли он будет, ну
Михаил Непряхин: вам проще для того здесь изменить так все равно работать Удобнее чем так как-то прокидывать там переменами окружения сразу видеть Куда пойдет запрос это удобно
Михаил Непряхин: а у нас Там уже указан и
Михаил Непряхин: дальше Мы создаем структуру для боди у нас в этом методе в боде принимается
Михаил Непряхин: вот видите вот такая структура джисона
Михаил Непряхин: Поэтому я здесь Создаю временную структуру это Анонимная структура ну можно Делать По-разному я довольно часто использую анонимные структуры если мне не надо их внешней нигде использовать я так делаю указываются Стратегии нужные правильные как Там и
Михаил Непряхин: то есть у нас же потом с Другой стороны сервер будет принимать эту структуру у него здесь вот этот клевет Про Файлымпут у него здесь тоже есть, эти поля есть,
Михаил Непряхин: ну теоретически эту же структуру можно было использовать и вот здесь вот
Михаил Непряхин: ну я предпочитаю разделять эти вещи чтобы они не были, связаны Как бы и мне не очень, нравится вот эта вот связанность ну Понятно, что тут можно что-то придумать какие-то вещи переиспользовать ну дефолтный я так дефолтный я не вообще никак то есть я пишу клиент так чтобы он вообще ничего не знал
Михаил Непряхин: про логику потому Что Я Могу перенести Эту Папку куда-то в Другое Место, и Дальше Я Превращаю Аа Эту
Михаил Непряхин: Так маршаллю
Михаил Непряхин: Ну Я тут заполнил их То есть эта структура не получилась заполненной я превышаю ее в Джисон вот в этом месте я Имею, уже Джейсон ну Только в Салайсе бай и
Михаил Непряхин: дальше вот вызывается, вот эта функция создания реквеста
Михаил Непряхин: в нее пробрасываться метод какой нужен Путь, По которому ну Путь, у нас здесь вот Мы задали изначально и через обертку она принимает а айоридер интерфейс вот Поэтому здесь используется перевод из пакета, бойцы Мы превращаем вас в байт в ридер
Михаил Непряхин: и здесь мы получаем структуру реквеста
Михаил Непряхин: Но реквест мы здесь Еще не делаем То есть Мы просто подготовили запрос
Михаил Непряхин: дальше мы Можем Добавить например, заголовки то есть запрос еще Не, происходит мы добавляем заговорок вот я до Говорят, что это контент-тай по прикешен Фисон
Михаил Непряхин: и вот уже здесь когда я делаю ду от клиента то выполняется сам запрос если Он завершился Удачно
Михаил Непряхин: то важно в диффере будет, закрыть то есть если Вы не будете закрывать боди То у Вас
Михаил Непряхин: не будут правильно закрываться коннекшины То есть это важно делать закрывать боли
Михаил Непряхин: Или Там не с Коннекшинами Связано
Михаил Непряхин: забыла Именно с чем Связано ну чего То потечет короче Не знаю. В Каком роде Но ну Сразу как. Бы Не страшно было но Там будет накапливаться по-моему Там память будет течь
Михаил Непряхин: чичит типа в этом роде а Или иль брам коннекшены закрываются вот это Не Помню
Михаил Непряхин: Так и Мы Проверяем Что Значит если запрос Не равен нашему Целевому то есть У нас Целевой запрос от Двухсотка
Михаил Непряхин: Но это Не обязательно может быть Двухсотка то есть вот Если, Мы Удаляем Профиль У нас здесь статус Новый контент Но У, контент Двести четыре
Михаил Непряхин: вот и Поэтому в случае удаления Я бы здесь проверял на Двести четыре но в этом случае у Меня Двухсотка Поэтому Я Проверяю если не Двухсотка все это Уже Ошибка Я просто распечатываю все Что есть в Годе а в Боде Там Ошибка будет и Какой статус Ей возвращаю ошибку
Михаил Непряхин: а если это Двухсотка Мы идем дальше Ты Все хорошо Хэппи-эп
Михаил Непряхин: и также делаю анонимную структуру для того чтобы туда революционно распасть сию айди
Михаил Непряхин: и собственно здесь я этот ресурс уже из джельсона. Превращаю в структуру и возвращаю этот нью айди
Михаил Непряхин: как увидите выглядит много по факту оно тут более менее все логично и повторяется
Михаил Непряхин: и там можно придумать какие-то варианты вот это допустим обобщить Ну, я часто даже не делаю и
Михаил Непряхин: вот этот же код может быть написан с помощью кодегенерации
Михаил Непряхин: а его полезно написать ну хотя бы один Раз, самому
Михаил Непряхин: ну иногда иногда периодически выете клиенты будете писать
Михаил Непряхин: это будет вода в которой находиться то есть вот в нашем случае когда у меня клиент написан видите, как бы мне и водаптер его не придется писать
Михаил Непряхин: потому что он уже живет в пг и я просто проброшу и
Михаил Непряхин: если этого бы не было бы то тогда бы мне пришлось это все Писать помешать в Адаптеры и тогда бы этот код Живых Адаптеров
Михаил Непряхин: и м значит Мы будем
Михаил Непряхин: наверное на следующем занятии рассматривать подход Спекфест Это когда у нас вот эта специфика уже есть Она написана Она согласована Она есть у нас она есть у нашего, коллеги и мы из этой спецификации можем и сервер сгенерировать
Михаил Непряхин: и клиент сгенерировать в случае сервера
Михаил Непряхин: вот эту вот Штуку нам все равно придется плюс-минус писать То же самое ну Там может быть озеро Комнат Не будет но То все равно Кот этот Будет Никуда Не уйти От этого то есть Мы риск есть должны вызвать
Михаил Непряхин: то есть в случае Сервера Генериться прямо. Скажем, немного
Михаил Непряхин: Но в случае, клиента генерируется вот это все
Михаил Непряхин: и в случае, клиента подход. Спекфест ну как бы оправдан действительно вы избавляетесь от написания вот этого всего Потому что задача довольно рутинная она однотипная и Поэтому вот
Михаил Непряхин: подход. Спек жест он позволяет. Избавить вас От этого Тем более витя. Вот удаление Профиля оно тут чуть поменьше кода
Михаил Непряхин: ага. Получение Профиля а Ну, Действительно Я вот такую Детвушку, сделал Вынес профиль Что, мы его получаем
Михаил Непряхин: Вы это копия профиля из основы проекта опять почему отдельном деле структуры мало ли вдруг мы захотим вынести это куда-то
Михаил Непряхин: обновление профиля он ведь здесь тоже ну на крелеет получается больше всего Куда ааа вот десять. Есть файлик Экзампл
Михаил Непряхин: это просто можно вызвать с поднятым
Михаил Непряхин: с поднятым Приложением можно превратить это в мейн и просто прогнать вот оно все вызовится должно работать
Михаил Непряхин: не дает тут так хтп клиент это альтернатива тесто а зачем писать их если, вот тест
Михаил Непряхин: да они будут всте участвовать понимаете в чем дело, для того чтобы написать тесты
Михаил Непряхин: вы вот это все равно должны написать
Михаил Непряхин: но когда вы, это написали вот после этого Сейчас мы посмотрим тест вот после этого вы, сможете, написать тесты
Михаил Непряхин: я для тестов в Первую очередь Важно Ну и плюс чтобы коллега ваш. Не мучился а просто работал как, бы
Михаил Непряхин: вам в любом Случае придется написать для тестов для своих
Михаил Непряхин: есть какой-то софт чтобы писать ровно без пеку это же ужас руками все писать ага ха.
Михаил Непряхин: Да согласен что ужас я это все Не помню
Михаил Непряхин: Я пишу Всегда По образу и Подобию и с помощью Чата до пяти,
Михаил Непряхин: Э, возможностей Там Вот в этой третьей версии Обнапе просто нереальное количество возможностей
Михаил Непряхин: и я Не знаю это как много надо этих спект писать чтобы как-то Там По памяти это Все написать ну, вот я Согласен что ужас да
Михаил Непряхин: но вот вот Сейчас современная, Разработка она идет к этому что
Михаил Непряхин: реэстапи не пишется вот Так вот все руками а оно спервапишется Спека а потом Уже по Нему по ней. Это все генерируется
Михаил Непряхин: Поэтому Ммм понятно что вы по Разному, будете встречать чаще будете Все. Таки видеть когда руками Написано Все. А потом уже Спека Написано
Михаил Непряхин: есть еще вариант Скотт генерации. Спеки когда у здесь стратеги указываются
Михаил Непряхин: значит есть такая такая библиотека с вагоу
Михаил Непряхин: она как Раз таки позволяет, вы вот просто над ручками частный нем промерчик,
Михаил Непряхин: вот вот Представьте Нет это Не Мейн на шас где у нас вот
Михаил Непряхин: уйдет. Как, Раз, джинновская ручка ну вот вот здесь Представьте был бы райтер и распоэт
Михаил Непряхин: громче Сигнатура. Была бы стандартного серра,
Михаил Непряхин: представьте то есть вот это у нас ручка
Михаил Непряхин: а вот над ручкой можно было бы написать вот эти вот вот эти комментарии
Михаил Непряхин: и пришлось бы все равно описать что это и
Михаил Непряхин: ну то есть собственно говоря вот здесь же То же самое вот ведь двести отвечает, в случае успеха четыреста случаев провала
Михаил Непряхин: а что Это Джейсон где тут что То здесь он
Михаил Непряхин: вот что-то прикешинский сон прочит как бы как бы то же самое
Михаил Непряхин: вы просто вот здесь указываете Нажимайте Кнопку и У вас вот Эта спека генерикса по этим тегом
Михаил Непряхин: но подход Считается Устаревшим и почему-то Вот Не пошло это дело, и поддерживается Только вторая версия свагера
Михаил Непряхин: она Считается уже тоже депрессия все Пере Сейчас работают с Третьей Версией свагера
Михаил Непряхин: короче говоря Мне вот этот подход нравится больше на самом деле Кот Фест
Михаил Непряхин: ну победил в мире аспект потом тут хочу ничего не поделать
Михаил Непряхин: так ну да вот давид написал он Еще в той генерации но она хороша но уже устарела
Михаил Непряхин: так Поэтому да короче ужас писать руками но вот что же идти в помощь по Сути для Мудренного мандата спеку Пишется в разных файлах для разных монолей
Михаил Непряхин: или все Выпихается в один файл
Михаил Непряхин: для Модного манлита а по Разному бывает по разным бывает а кто то под обменом делит
Михаил Непряхин: кто то все в один пихает и Так и Так Видел, не знаю как правильно
Михаил Непряхин: боже модульный монолит это такое уже как гнул
Михаил Непряхин: это для стартапов да больше Если у Вас какой то взрывы интерпрайз то у Вас будут Микросервисы!
Михаил Непряхин: Допустим мы сделали спеку и сделали Генерацию клиента и сервер потом в серверы добавили свой эскиз потом спека поменялось все перегенерировали да генератор поймет что нужно смерть то Что Там уже Есть Или кейс с Тем Что Получилось ново садиться На аспекты
Михаил Непряхин: а генератор это Не Генерит короче говоря вам придется руками это все менять если У вас Там
Михаил Непряхин: вы в вот эту часть генератор свой Не, генерит генератор генерит ну. В следующий Раз посмотрим что генерал, генератором в случае сервера но Там короче
Михаил Непряхин: не то, чтобы сильно Облегчают по сути вы вот эту часть вам пишете если, вы перегенерите ну красный Холод подсветится не будут собираться надо будет исправить
Михаил Непряхин: так что здесь такое а клиент клинтон генерит Да
Михаил Непряхин: ну клиент просто перегиняет полностью Ну, если там сигнатура, Поменялась вам Тоже, Придется пройти. По Коду и поменять там Где это Есть
Михаил Непряхин: То Есть Вот так Вот короче Дальше значит когда У нас есть Хтп Клиент
Михаил Непряхин: то Мы теперь, можем это дело протестировать ну можно конечно руками вот так вот протестировать Там
Михаил Непряхин: Давайте Сейчас Скопернул этот файлик с провером же запустится Нет Ха
Михаил Непряхин: Так Сделаем Мы мне придется Так добавить
Михаил Непряхин: а Сейчас Так тут и Сделаем хак Сейчас Делаем как чтобы вот это не добавлять просто здесь точку добавлю
Михаил Непряхин: хват Так ну около. Хост Восемьдесят Восемьдесят давайте, значит надо запустить доктор мэйк ап то Мы запустим
Михаил Непряхин: т номер миграции прогнать
Михаил Непряхин: Не ой Я вышел
Михаил Непряхин: да в миграции Прогнались.
Михаил Непряхин: Дальше надо за сервак запустить Ммм
Михаил Непряхин: Принадлежит Команду ран а то что-то как-то Неудобно семь ди
Михаил Непряхин: Вы собак подняли все сервер У нас Есть теперь проверим будет ли работать
Михаил Непряхин: будет ли работать вот этот у меня скриптик ага работает ну отлично
Михаил Непряхин: Так то есть грубо говоря когда у вас есть клиент вы вот можете файлики написать какие то вещи то подключение вот Мы подключаемся, к нашему северу
Михаил Непряхин: ну вернее как создаем это Мы Еще не подключаемся, вот просто создали структуру в которой указали по Какому. Хосту по Какому. Порту стучаться ну контекст Просто нужен
Михаил Непряхин: сюда его добавим
Михаил Непряхин: вот дальше мы говорим что мы Хотим, вызвать клиент то есть то же самое как мы в пост мы ее называем вот только в коде вызываем
Михаил Непряхин: что с джоном двадцать пять и мыем такой то телефон
Михаил Непряхин: а в итоге Будто иди вот не вызываем получаем айди
Михаил Непряхин: с этим айди дальше делаем гет профайл получаем сам Профиль
Михаил Непряхин: и распечатываем его хорошо Там за ими Что Там зайди и Мы его телефоны дальше Мы создаем
Михаил Непряхин: другие поля здесь джон был здесь Джон доа здесь двадцать Пять здесь двадцать шесть ну короче типа тестирова
Михаил Непряхин: делом апдейт передаем туда эти поля почему указателями ну потому что тут чтобы отличать короче когда поле Не Было Передано в Рисование и когда оно Было нулевое но это же для этого как бы в апдейтах используют указатели
Михаил Непряхин: и только в этом случае то есть как бы только вот в таких кейсах оправдан указатель над обычным типа потому что, это редкий кейс то целому указателю не надо Делать над обычными типами
Михаил Непряхин: как бы чтобы отличить. Ну это по сути Новый был такой вариант глобал дальше мы опять сделаем запрос
Михаил Непряхин: получаем п снова распечатываем и в конечном итоге удаляем профиль Поедишь Никуда
Михаил Непряхин: и снова делаем проверку пытаемся получить, профиль с этим Айди
Михаил Непряхин: а его Уже Нет Мы Печатаем Ошибку
Михаил Непряхин: да вот короче Поэтому Мы тут. Видим шуут
Михаил Непряхин: Распечатали адишник. Сперва Один профиль здесь двадцать, пять потом поменяли профиль получился двадцать, шесть потом удалили его и получили нод фаунд
Михаил Непряхин: и как будто, бы вот из этого уже можно сделать тесты ааа
Михаил Непряхин: как делать, тесты вот интеграционные чтобы это было удобно
Михаил Непряхин: значит для этого у нас есть вот пакет тест папочка тестерня здесь интеграшен потому что тест интеграционные
Михаил Непряхин: а с чем отличаются обычные тесты от интеграционных интеграционные тесты проверяются на живой базе мы подняли доктор компост но вот только что то, что мы сделали по Сути менты отсолнутые справили
Михаил Непряхин: У нас реальные данные реальная база данных все живое мы делаем тесты значит и вот у нас
Михаил Непряхин: тест клевет профайла смотрите Мы
Михаил Непряхин: создаем профиль передаем туда данные То же самое как Мы только что делали получаем адишник проверяем Что там Нет ошибки
Михаил Непряхин: по Этому Адишнику Делам запрос на Профиля поучаем этот профиль ии
Михаил Непряхин: Функция рико проверяем Что там вот эти его значения
Михаил Непряхин: Так Ше чтобы тут все работало надо добавить смотрите значит Ммм
Михаил Непряхин: Так как эти тесты требуют базы данных
Михаил Непряхин: То Их отличают от обычных тестов чтобы вот эти тесты не запускались, вместе со всеми остальными
Михаил Непряхин: добавляют вот этот тэк гоу бьют в интерэйшн
Михаил Непряхин: а это просто общепринятая практика то есть так делает интеграционный тест, то есть везде где вы встретите во днем вот так
Михаил Непряхин: значит и вот билл тэк это прям на уровне компилятора
Михаил Непряхин: Можно сказать подключи или не подключай файл
Михаил Непряхин: если вверху файлы указан такой билл тек.
Михаил Непряхин: То дальше чтобы собрался бинарник, с этим файлом внутри
Михаил Непряхин: нужно указать Тэкнити грейшен значит специальная команда вот интеграционная теста вот например, решен тест
Михаил Непряхин: я сделал Команду, в майк файли
Михаил Непряхин: она также выполняет как Обычный тест
Михаил Непряхин: но видите Здесь есть Текс указанный интегрейшн и это значит что эти файлы будут собраны в процессе Сборки
Михаил Непряхин: а вот если, случаи Обычных тестов они не будут подключены и ошибок у вас не Будет оттого что у вас там база не подключена доктор контейнера не подняты
Михаил Непряхин: а вот когда вы Хотите, конкретно интеграционные тесты сделать и
Михаил Непряхин: а аккаунт один это просто изброс кэша чтобы тесты не кашировались не спрашивайте почему такой синтекс скажет что это что типа Без кэша ну вы это Вербоус, по более подробный вывод
Михаил Непряхин: вот и для того чтобы и ежка подхватывала нормально Эти файлы тут надо Указывать кастам-текс а Не Ты грешен вот видите все и девушка сразу Не сходит с Ума и понимает что все как бы это
Михаил Непряхин: включая цветю файлы и подсвечивает синтаксис
Михаил Непряхин: аа тесты супер получаются простые понятные
Михаил Непряхин: у нас уже клиент написан и
Михаил Непряхин: с делит Файлом сдрит Пофайлом да то есть вот Мы тут создаем надо сперва что-то создать чтобы удалить а кстати каждый тест он самостоятельно отдельный то есть мы перед каждым тестом базу, подчищаем
Михаил Непряхин: и каждый тест он получается на чистой базе мы соответственно Раз, на чистой базе Мы должны изначально Профиль, создать
Михаил Непряхин: Потом проверит Что он Там есть Так на всякий случай Потом Мы его удаляем этот Профиль, и проверяем что в случае доступа к этому айди мы получаем ошибку нотаунд
Михаил Непряхин: а и супер супер простой понятный тест
Михаил Непряхин: как бы если бы все интеграционные тесты были такие у нас бы в мире бы и
Михаил Непряхин: Поэтому вот прям у нас беда в целом с тем что. Люди Не умеют тестировать свои, собственные продукты ну илигенятся,
Михаил Непряхин: вот тест на гет профайл тоже
Михаил Непряхин: у нас абсолютно новый кейс в одном, смысле новая база новый кейс что, вот у нас ээ создается профиль получается профиль проверяются на эти значения
Михаил Непряхин: аа вот эти вот иквел это используется тестифай библиотека ну мы Еще посмотрим в следующий Раз, уже Не
Михаил Непряхин: и также это сексуальный кейс а это кейс на ноут Фаунд просто Берем какую-то несуществующую ее идею проверяем
Михаил Непряхин: и получаем что там ошибка ошибка на фронт
Михаил Непряхин: ну и на обновление то есть мы тут обновляем данные тоже чуть подлиннее тест получается ну потому что надо создать данные надо их
Михаил Непряхин: и получить. Проверить ну может быть а ну а новая задать да то есть тут одни данные задаем тут новые данные задаем короче говоря вот я вам просто показал революцию как из-за этого Сделать интеграционные тесты и собственно я тут и
Михаил Непряхин: ну и тут виде синтез Немножко проще в одну строчку можно проверить Что там просто Нет ошибки
Михаил Непряхин: а как это все засытапить значит это Все святопится, вот в этом файле в Майне
Михаил Непряхин: ну здесь я подсказку написал что надо сперва доктор компост, поднять а потом Уже интеграционные тесты запустить
Михаил Непряхин: значит Это структура из которой. Которая запускается весь интеграционный тест у нас тест должен Начинаться на слове тест
Михаил Непряхин: Иметь. Такую сигнатуру вот Поэтому эта штука просто чтобы это все дело запустилось
Михаил Непряхин: дальше у нас Есть сют в суете это сют от тестифай библиотеки самая Популярная библиотека у нас Для тестирования
Михаил Непряхин: указан текк вернее делаю настройку что все проверки смотрите вот икволы они реклайр
Михаил Непряхин: по дефолту в библиотеке они просто? Асершенс
Михаил Непряхин: то Есть, Если. Встречается ошибка Мы идем дальше
Михаил Непряхин: мне нравится когда Мы Не идем дальше в случае ошибки
Михаил Непряхин: Вот эти Вот две строчки Они все Эти проверки делают
Михаил Непряхин: обязательными и при встрече хоть. Одной ошибки Мы дальше Не идем и Падаем это удобно когда вы пытаетесь Найти и
Михаил Непряхин: а у нас здесь и зеин джекчины, клиент Х дтпшный у Которого. Мы до этого разбирали
Михаил Непряхин: для маковки тут Нет разные Как бы это умираты факты остались
Михаил Непряхин: Так же и тут можно чего угодно процитировать
Михаил Непряхин: дальше у меня вот здесь значит есть всего у этого френворка четыре функции подготовительных значит ситапсют и тердаун сют
Михаил Непряхин: сытапсют это вначале всех тестов какая то функция вызывается
Михаил Непряхин: а вот здесь функция которая здесь указана это в конце вообще всех. Всех. Всех. Тестов ведь У меня ничего не указано У меня только указана Функция Что будет происходить э
Михаил Непряхин: вначале они и они вначале всех тестов
Михаил Непряхин: также можно перед каждым конкретным тестом что-то делать и после Каждого Конкретного Общего после Каждого теста из этого маленького тоже что-то делать
Михаил Непряхин: Так только я
Михаил Непряхин: а как я тут сбрасываю базу данных я чуть не сбрасываю да я вас Обманул я получается ее не сбрасываю то Есть тут каждый кейс он получается на этом и я не сбрасываю на каждом кризисе базу
Михаил Непряхин: я ее тут в самом начале только один Раз зарезал то есть вот в начале всех тестов я сделал ресепшн миграции
Михаил Непряхин: да то есть я все сбросил и удалился, таблицы и заново создал все таблицы это только вначале в начале всех тестов ну то, же самое ничего нам Не мешает сделать прямо, в начале каждого теста
Михаил Непряхин: вот если если Мы хотим, чтобы в начале каждого теста это было то просто вот
Михаил Непряхин: а вот цитата тест вот делаем здесь и перед каждым тестом она сбрасывает базы данных сбрасываться если вы Хотите, чтобы после каждого. Теста она сбрасывалась. Ну вот сюда можете и после Каждого маленького тестика вся, база Будет обнуляться и вы будете Иметь, пустую базу,
Михаил Непряхин: вот Но видимо здесь у Меня простые тесты Я просто сделал Что У Меня в один Раз вначале всех тестов база сбрасываются миграции заново накатываются
Михаил Непряхин: то Есть вот У Меня миграции Сперва убиваются все таблицы убиваются а потом я их заново накатываю а это просто пути и где у меня миграции лежат ну тоже дойдем доминации это все разберемся
Михаил Непряхин: а вот здесь конфликт у Меня, соответственно здесь у Меня, переменные окружения не появляются но я ничего не получаю я хочу чтобы у Меня, этот конфликт просто был прям Собран как Есть Поэтому То что у меня в Январе Файли здесь указано я просто собираю структуры и у меня весь конфликт приложения есть
Михаил Непряхин: отключаю блогер блогер мне здесь не нужен я его отключаю Ну, если, вдруг я хочу Логи видеть то я его Ну, Удаленно закомментирую. Эту строчку тогда логику будет видно если. Я Там понимаю что ты столкнулся с проблемой хочу одебажиться включаю Логи
Михаил Непряхин: и включаю сайлинг мод для трейсов то есть я уже как-то показываю что я таким образом отключаю рейсы чтобы они ничего не сломали
Михаил Непряхин: дальше в грути не запускаю сервак наш
Михаил Непряхин: для этого и нужна функция отдельно вот ведь, в пакете Ран потому, что если бы она была в пакете мэйн я бы не смог ее запустить из пакета мейн и никаких функций нельзя м видеть
Михаил Непряхин: Поэтому мне обязательно нужна вот эта функция ран инициализации и где весь коннекшн и шендаун Поэтому она мне нужна отдельно чтобы я ее мог в интеграционном тесте вот так вот просто взять и запустить
Михаил Непряхин: дальше я ну создаю клиент говорю что у меня налог в хосте запущен и
Михаил Непряхин: ну родился у меня тоже Сейчас пока не, нужен ну вот он на партия Восемьдесят я могу на другом, парте запустить на против Восемьдесят один тогда, я здесь тоже право укажу Восемьдесят Один? Что я буду из моего клиента вот к этому Серверу Сконфинурованному обращаться уже по другому прату
Михаил Непряхин: и сплю Секунду. Только для того чтобы вот эта гурутина успела запуститься потому Что На запрос в Груди Не требует какое-то Время и уж За Секунду Она точно успеет запуститься потому что. Если я этого не сделаю то я могу попасть на тот случай когда груди просто не успеет запуститься
Михаил Непряхин: а мне надо чтобы она была в отдельной воротине потому что это сервер он же там заблокируется он дойдет туда и заблокирует все и я дальше Не смогу продолжить Поэтому обязательно должна? Быть запущена в грузии
Михаил Непряхин: вот ну и запускается это все дело Э,
Михаил Непряхин: так вот мне у меня тут сервер будет запущен вот он уже Не, нужен я его погасил потому Что, Мы Сейчас в рамках интеграционного теста будем его запускать
Михаил Непряхин: и Запускаю, вот мой контекст интергрешен тест,
Михаил Непряхин: и вот оно Не, работает Сейчас посмотрим что, он работает ну фаунд ууу Ммм
Михаил Непряхин: это странно конечно отчего к чему может быть опор поменял из за этого хотя вроде там актер родина это
Михаил Непряхин: а на да это было с портом связано Только так чуть я не понимаю почему почему
Михаил Непряхин: чудку вот я же ведь поменял порта и раздеев тоже, поменял чуть он сразу перестал работать аа
Михаил Непряхин: может он занят был Восемьдесят второй порт
Михаил Непряхин: Похоже он Занят Был Но видимо У Меня, в системе Че то Восемьдесят первого пордает А и короче да
Михаил Непряхин: короче вот таким Нехитрым Образом Мы получаем
Михаил Непряхин: в этом Же Интерфейсе тестов потому Что видите Команда запускается Гоу Тест просто вот с этим трегом интегришн
Михаил Непряхин: Мы запускаем все эти наши тесты
Михаил Непряхин: понятно Что они Работают, уже тут ведь, Не микросекунды а миля секунды и всего в общем ведь, Он Даже одну секунду это Мы вначале спали а Так он отработал за сто милли секунд
Михаил Непряхин: вот и
Михаил Непряхин: вот и собственно говоря вот эта связка когда у вас есть написанный клиент аа вами же ну или сгенерированный когда у вас есть вот такие интеграционные тесты и это позволяет вам спать по Ночам
Михаил Непряхин: и по выходным не работать потому, Что Это очень сильно повышает надежность системы
Михаил Непряхин: потому, Что как Минимум у вас Хэппи пест он уже есть и
Михаил Непряхин: те кейсы особенно исключительно Вы могли что-нибудь Не протестировать ну, хотя бы, вот базово
Михаил Непряхин: а Вы когда будете делать изменения
Михаил Непряхин: То Вы можете Всегда проверить Не сломали ли Вы что-то в этом изменении
Михаил Непряхин: этот Же тест можно строить на все ай витлаб
Михаил Непряхин: но Видите тут сложнее немножко а тут же нужен доктор компост может поднять
Михаил Непряхин: а это уже надо уметь настраивать ай и если вы сами не умеете то да воп сможет Никогда до этой сдачи не дойти
Михаил Непряхин: Там я помню поважнее есть Задача
Михаил Непряхин: ну ничего страшного вы можете запускать зато локально этот тест и просто ну
Михаил Непряхин: локально хотя бы убеждаться что вы ничего не поломали у вас все работает
Михаил Непряхин: вот и тесты получаются очень читаемые потому что клиенты у вас уже заранее написаны Не надо ничего изобретать велосипеды Не надо там че то какие-то мертвые для клиентов писать в клиенты У вас уже готовы
Михаил Непряхин: Так Давайте посмотрим Вопросы,
Михаил Непряхин: про миграции расскажете. Потом Конечно Конечно ну просто Миграцию Не надо Рассказывать когда про поздравить Будем говорить про адаптацию Будем говорить
Михаил Непряхин: важно в Следующий, Раз, Мы это вам делать,
Михаил Непряхин: так а то я запускаю команды а на Что это влияет Пока Не понимаю
Михаил Непряхин: Да Да Да ну Видите как слишком много информации Не все Сразу если гнать и быстро тоже Спешить ничего же Не отложится
Михаил Непряхин: Поэтому тут будут такие супербазово важные вещи мы на них ведь много времени. Тратим
Михаил Непряхин: а нагрузчное тестирование проводится только сторонними сервисами или в Голову. Есть свои. Механизмы своих механизмов. Нет
Михаил Непряхин: ну понятно, дело что вы можете, что-нибудь такое написать ну хорошо вот смотрите Допустим Мы хотим,
Михаил Непряхин: устроить какой-нибудь хай-вот на Создание, Профилей да ну, окей Давайте просто Возьмем это Зафигачем в цикле создадим
Михаил Непряхин: десять тысяч Профилей просто посмотрим Сколько За Сколько времени он это сделает
Михаил Непряхин: ну десять тысяч я думаю нормально
Михаил Непряхин: э блин только разные надо сделать а оно ни разу не будет создаваться. Да гаишники же разные будут соки
Михаил Непряхин: да да нормально будет и шос устрою такой небольшой нагрузчный Тест
Михаил Непряхин: и Есть свои инструменты и как бы этого Встроенного ничего в гол Нету но если. Вы хотите, что-нибудь такое проверить то понятное дело что можете что-нибудь такое написать
Михаил Непряхин: просто когда У вас есть в распоряжении, и клиент и сервер
Михаил Непряхин: ну вы можете как угодно комбинировать этот клиент у нас есть гурутин в распоряжении, да ну чего-то там лишь кому похоже Что он там десять тысяч а оно Нет вот тридцать два секунды создал вот тридцать секунд работал этот создание Профиля
Михаил Непряхин: вот ну это Же реальная база хоть, и в доктор запущенная но вот тоже как вы можете примерно оценить Сколько там чего работает поделить тридцать секунд на эти десять, тысяч
Михаил Непряхин: понять, Сколько оно работало
Михаил Непряхин: плюс, Вы можете Устроить параллельность допустим жгу Вы просто. Берете и это все еще запускаете в гуру тинах
Михаил Непряхин: вы допустим в десяти потоках Хотите, это сделать
Михаил Непряхин: здесь, вы делаете свои, эти циклы
Михаил Непряхин: а вот каждый цикл, будет по тысячи создавать тоже будет десять, тысяч в итоге, да вот но уже параллельность будет десять, то есть это будет параллельно, еще происходить давайте поменьше дела
Михаил Непряхин: давайте параллельно, спать так долго ждать
Михаил Непряхин: вот и там опять же запускаете смотрите То есть в Принципе как, бы
Михаил Непряхин: тут надо выть группу он очень быстро. Вышел отсюда ну короче
Михаил Непряхин: без Этой группы тут Не прокатило Мы быстро. Пролетели Эти гурутины и ничего Не успели выбывать
Михаил Непряхин: ну ключе вы, поняли как бы у нас тут в распоряжении очень мощный инструмент в виде грутин и благодаря ему мы тут можем как бы и нагрузочное тестирование тоже какое-то выстраивать в каком-то виде
Михаил Непряхин: ну так конечно над специализированными инструментами Пользуется там любая апача какой-то инструмент либо от яндекса. Танк ну и Еще утелит куча сиявая которые вот позволяют что-то протестировать нагрузочное
Михаил Непряхин: чтобы сделать
Михаил Непряхин: вызовы другого микросервиса Добавляем этот микросервис как зависимость и использовать его Хтп клиент У если тот микросервис Соизволим этот Хтп клиент Не Писать туда Или Там есть пека хотя бы чтобы сгенерить этот тпыклен
Михаил Непряхин: А если его Там Нет из пеки Нет
Михаил Непряхин: ну вы обречены писать этот адапта сами Которого было Написано для Энтуэнт
Михаил Непряхин: ну если он есть то да просто все просто вы его берете этот клиент внедряете как зависимость без кейс и все и пользуетесь
Михаил Непряхин: почему использовать там слив для запуска гору тела и когда есть Твойнг, ну слушайте ну у вас? Есть группа это три строчки а мне это интеграционный тест мне тут проще поспать
Михаил Непряхин: и то есть это в этом в группе ну Сейчас ма одна обертка появилась в Один, двадцать, пять можно было заявить Но вот У Меня за Один Двадцать четыре Это Меня заводит группу создать
Михаил Непряхин: Это мне надо Давайте сен куинн Глуп дальше мне надо добавить Один дальше мне надо
Михаил Непряхин: Были. Нету Придется еще Не повысить Этот гроб мне пройдет Этот механизм Прокидывать короче слушайте просто с Пяти, Секунд и все это на самом деле секунд с запасом Там надо ну десять. Или секунд то. С ней лень даже десять. Или секунд писать Секунду проще ничего страшного секунду подожду
Михаил Непряхин: короче меньше заморочки лучше. Потому Что в противном случае вам тут потом так Что саможу венгу У
Михаил Непряхин: да блин геморрона больше секунду поспать ну хотя.
Илиас Эззахид: Можно кто-то слова
Илиас Эззахид: касаемо роутеров и метлуэровства вот если Мы пишем например. Какую-то все мессы Там разные роле ну особенно, это администратор, суперадмин и пользователи и вот как разделить э
Илиас Эззахид: аа рутинг чтобы было там в Некоторых случаях там то, кадмин имеет. Право в этом
Илиас Эззахид: помучили в этом одессе вот запросы пут запросы и делить а там и пользователи там только гекторы
Илиас Эззахид: как разделить на уровне раутера, ею.
Михаил Непряхин: Ну вы просто делаете и вот здесь у вас живите, токен вы его и
Михаил Непряхин: Там админ юзер и так далее а дальше вы делаете проверку ну если в случае мидовары
Михаил Непряхин: то вам придется писать вот эту проверку типа внутри медовары
Михаил Непряхин: то есть вам вам придется здесь писать Иф типа ив а эр Давайте Сейчас Сделаем вотс
Михаил Непряхин: типа вот Мы вот Сейчас в этом роуте
Михаил Непряхин: если Мы Сейчас в Этом роуте То распаковываете Дживити Токен и Проверяете типа и если в живите Токине Роль
Михаил Непряхин: админ люди фо кей а на
Михаил Непряхин: если Нет То Там Делайте Ошибку о том какая Там Второй разрешен четыреста
Михаил Непряхин: ну Вы поняли короче Ошибку авторизации гентон.
Илиас Эззахид: Вот подождите
Илиас Эззахид: ну про дело в том что дживити токино ну Пейлодж же ведь, и токина он же Публичный его Можно менять Там тот кто отправляет очевидно Токин.
Михаил Непряхин: Так ну здесь вам надо Это, Давайте Так Дойдем До Дживити токина Дойдем До живите токиное устройство как. Оно работает Там расскажу но вкратце дживити токин для этого и нужен
Михаил Непряхин: что а
Михаил Непряхин: как бы кто бы ни изменил. Да он Публичный но механизм его заключается в том что он подписан
Михаил Непряхин: вы эту подпись проверяете Нет ну естественно вы вот здесь вот не просто тупо берете из живите токи на Роль и Вы тут. Проверку? Делаете то Есть Вы делаете Проверку? На Валидность подписи проверяйте Подпись
Михаил Непряхин: человек и Ну Как там эээ сигнатуру проверяете
Михаил Непряхин: и если она невалидная ну все как Бы вашу Ошибку отдаете даже когда вы подпись проверили вы можете быть уверены Что если там Роль админ
Михаил Непряхин: то значит перед вами админнский токен и значит дальше вы уже можете ему доверять это как мой принцип работает живите токина
Михаил Непряхин: ну я так прошу либо вы замечания сделали что я проверку здесь не учел. Либо живите токи но им просто не знакомо
Михаил Непряхин: тоже доживите токина когда идем это еще я расскажу поподробнее для тех. Кто не в курсе вокруг ход но как видите если вы делаете какую-то общую милуру У вас появляются вот эти вот проверки, а в каком я Сейчас нахожусь Роуте
Михаил Непряхин: Поэтому мне это Не, очень Нравится
Михаил Непряхин: я бы проще бы все-таки это сделал вьюз, кейсе
Михаил Непряхин: то есть вот эту логику я оказываюсь нужным, из кейсе то есть вот допустим представим
Михаил Непряхин: создавать профиль может только админ
Михаил Непряхин: отлично значит вот Мы Доходим досюда распашиваем запрос все нормально не важно Там кто перед нами попадаем
Михаил Непряхин: Ну вот живите только надо распасть да То есть Мы Там и с заголовкой берем данные
Михаил Непряхин: аа получаем здесь Джити токин.
Михаил Непряхин: И из дживити токина настолько роли интересует То есть нам самое главное какая Там У Него Роль
Михаил Непряхин: а ну Проверку надо сделать Нет прям живите весь живите токингером все весь живите Токин, пробрасывая Аа сюда Внутрь кревет профайла
Михаил Непряхин: значит Дальше в клет профайле Мы тут получаем Наш дживити токен
Михаил Непряхин: и ну трайс Пусть. Начинается значит здесь что Мы Делаем во Первых Мы Проверяем живие токи а на Инвалидность
Михаил Непряхин: Там проверяется во-первых Не За экспаринг? Ли
Михаил Непряхин: аа токен если. За эксперимент То уже все как бы и Роль Мы проверяем значит ой не Роль подпись
Михаил Непряхин: сигн и чердада, вот подпись проверяем
Михаил Непряхин: это все Там, в одном методе Делается за Раз, и Не за их спайден, ли Он и валиден, ли Он
Михаил Непряхин: э если Он Не валиден, но Ошибку Отдаем так Что он валиден, он Не за экспарент все-таки дальше Мы проверяем Роль и вот здесь Мы просто делаем у нас уже есть Роль
Михаил Непряхин: если эта Роль Не камин То Мы
Михаил Непряхин: Мы Возвращаем Ошибку ну Там к концу. Связанным с Авторизацией Кобыль Вот и Все
Михаил Непряхин: Вот как Бы Я бы делал так
Михаил Непряхин: если, этих Ручек много и там Прям ну вот хочется, это все мигрывары сделать ну все равно будете страдать где нибудь ошибетесь видите как бы там же надо будет каждый путь проверить
Михаил Непряхин: а здесь железобетонно
Михаил Непряхин: и нафиг эти семинары вот вы вы получили на руки токен вы, понимаете что Вот если, вот здесь какая То проблема
Михаил Непряхин: никакой там левый пользователь За джерминские права все-таки задают как надо точно понимать админ если, это на мидл варе делать ну вы можете ошибиться где-нибудь а здесь вы точно понимаете вот в дальше он тоже Не пройдет
Михаил Непряхин: Поэтому вот рекомендую вам пользоваться вот этим и не связываться с менюварами так Еще Вопросы, есть
Михаил Непряхин: так вообще насколько Давайте оцените насколько понятна вот эта связка что у нас есть сервер мы пишем для него клиента и благодаря этому мы дальше можем тестировать вот здесь вот как бы вот эти вот Штуки все понятны Поставьте плюски Если как поселок
Михаил Непряхин: Или Или Есть еще здесь Вопросы, шучу и непонятно
Михаил Непряхин: ну вот плюс-минус вот вот где где осталось мне приятно Тяжело ну и
Михаил Непряхин: вот павел если про минус где остались пробелы, Или где что то непонятно вроде можно же сделать группу ровотов а там уже добавить медовары да да да ну можно сделать это и на группе роутов
Михаил Непряхин: а и естественно как бы тоже вариант допустим у нас
Михаил Непряхин: все вот эти роуты они нужны это нужна авторизация
Михаил Непряхин: мы допустим минские права мы его здесь сделаем мид варум и закрываем только конкретные конкретные ручки этими правами
Михаил Непряхин: так тоже Можно сделать да и если Там вы проверяете токин и он Не валиден, То Дальше Не пускать как вариант Можно и так У Меня Там, пример
Михаил Непряхин: по-моему такое есть что-то Подобное Там, а Можно одну ручку так закрыть вот
Михаил Непряхин: Ммм, гаи в жизни Встречается все варианты и с цифрами встречаются и
Михаил Непряхин: бывает что эти роботы раскиданы по разным местам
Михаил Непряхин: ну наверное вы правы нормальный способ если вы сделаете группу из роботов и закроете ее авторизацией вполне рукей да
Михаил Непряхин: пожалуй я право соглашусь
Михаил Непряхин: и тогда не на записке, если будет делать ээ в каждом из кейс не надо будет делать проверку
Михаил Непряхин: ну вот например, если ручка всего одна
Михаил Непряхин: то как Будто бы аааа админа, можно и там закрыть ну какчуть эти варианты есть и так и Так можно сделать
Михаил Непряхин: Так протестирование Зачем нужно понятно как сказать какой я силю но и надо самому написать шубу можно.
David R: На вопрос.
Михаил Непряхин: Давайте.
David R: Вот интеграционным. Тестированием в пкедже мы написали клиент и сервер клиент понятно там много всего куча всего и вроде как клиента проверяет ручке нашего, сервиса который Мы написали Вот в пакейнтерном.
David R: А Вот сервер это же не наш сервер который Мы внутри написали я вот смотрю в паки сервер и тут
David R: ноуб отчет непонятно и непонятно как оно Используется в интеграционном тестировании вот Этот сервер Но и
David R: ну Это даже Не Имитация. Нашего, внутреннего сервиса вот Это я Не понял зачем Этот сержант аждите Вечер.
Михаил Непряхин: Это просто обертка чтобы вот это каждый Раз, не писать
Михаил Непряхин: чтобы просто создать билдер это и
Михаил Непряхин: там рэдис когда вы создаете Там какие-то Билдеры короче Это просто Хрупер такой помощник для того чтобы сбил. Дить Сервер Но он как бы
Михаил Непряхин: Ну Вот он вэпе участвует то есть вот если, не посмотреть вот мы когда создаем нашу архитектуру в ране вот он здесь, в конечном итоге участвует
Михаил Непряхин: вот и
Михаил Непряхин: а вот этот По сервер но он вообще здесь По идее Не должен Лежать он же должен Лежать библиотекой как бы отдельно да да и вообще вот это все видите вот сервер вгерметрики,
Михаил Непряхин: да вообще все вот это это может Лежать в отдельном репозитории
Михаил Непряхин: вот а вот клиент ну его удобнее Держать здесь же рядышком потому что оно меняться было вместе и тут типа по Солиду в Принципе это логично его Держать здесь.
David R: Нет смысла Их как-то разделить и и и.
Михаил Непряхин: Сложный. Вопрос это и так если. Вы Влияем. На проект посмотрите Там. Вообще черт могут с Вами это просто. И ничего не понятно Из логики структуры папок ну согласен, инвалидно может запутать ну может быть правильнее было бы его назвать
Михаил Непряхин: и вообще даже не в пк поместить а просто на верхний уровень и назвать по названию, домена ну типа у нас там вот профиль да и тогда бы надо было лучше бы назвать этот пакет
Михаил Непряхин: и профайл клиент вот так вот Например, и тогда вы бы увидели что ну Это вот клиент а конкретного профайла То есть ну типа как адаптер Это Ведь у нас по Сути Мадапер написали
Михаил Непряхин: просто переиспользуемая доктор.
Михаил Непряхин: Поэтому да ну согласен инвалидно то есть название можно было бы Получше Подумать ну вот в этом стиле У
Михаил Непряхин: как Раз, ему надо Попробовать что. То Написать и Возможная часть вопроса полетов в Концепции ясна
Михаил Непряхин: Ну, Понятно тут без вариантов Вы сами все равно должны это пописать то Есть я Поэтому и
Михаил Непряхин: э Это как бы экземппол такой хороший
Михаил Непряхин: По Которому. Ну можно что-то изменять пробовать изменять и смотреть Но если Вы сами Кот Не будете писать то конечно тут, выйти, до конца не поймете
Михаил Непряхин: надо хотя бы одну ручку да ну был у Меня была у Меня тема такая что я давал только
Михаил Непряхин: два
Михаил Непряхин: две ручки криэйт и гет аделит когда нужно было написать вам самим но вам ничего не мешает удалить вот удалите везде вот пройдитесь по дт удалите какие нибудь ручки и напишите заново с нуля
Михаил Непряхин: и и мат так что клиент может семь Диппо Жить это выглядит как отдельная программа
Михаил Непряхин: м ну. Видеть в семье все таки не Место, ему потому что он все таки библиотека понимаете это клиент это библиотека а сия мди лежат
Михаил Непряхин: Аа приможениями, вот сервер это приложение да вот у меня тут, Еще Одно, приложение это сиднер чтобы заполнить базу данных ведь, Он тоже Мэйн
Михаил Непряхин: и клиента Он не Он не в моем Пакете потому что у Него нету точки запуска понимаете это просто
Михаил Непряхин: а библиотека
Михаил Непряхин: это пачка функций. Они объединены конечно вот одной структурой и они являются методами Этой структуры но это просто пачка функций. А они все между Собой Так то независимы
Михаил Непряхин: и и вариант Поэтому как бы
Михаил Непряхин: главное Попробовать Он ждут под стаей профою Клиента и и
Михаил Непряхин: что-то Отложилось понятно Что только Посмотрев лекцию там через полгода вы уже все забудете сто процентов тут надо Это рукаминую игру вот как Домашнее задание удалите какой-нибудь метод и напишите его с нуля. И вы Прям вообще До фигачу поймете
Михаил Непряхин: вот
Михаил Непряхин: Ладно все тогда Давайте а Там кстати это да ну я напишу Там же У нас шестнадцатая лекция сегодня была да Там надо было оплатить следующий месяц ну кто по местам платит
Михаил Непряхин: вот ну все тогда давайте до следующего раза до вторника,
Михаил Непряхин: все давайте всем спасибо всем пока.