17:55:22 From andrey : слышно 17:59:29 From Mike Deruygin : вечер добрый 17:59:40 From Sergey Olisov : + 17:59:40 From Mike Deruygin : + 17:59:49 From Dmitry Pavlov : + 18:00:14 From Dmitry Pavlov : Я проходил на курсера 18:00:16 From Vyacheslav.Sitnikov : На работе пишу вские интересности 18:00:17 From Sergey Olisov : GitHub) 18:00:20 From Mike Deruygin : на работе) ETL 18:00:30 From Dmitry Pavlov : неа 18:00:30 From Vyacheslav.Sitnikov : Только поесть 18:00:44 From Sergey Olisov : времени нет но очень хочется 18:00:52 From Елена Граховац : https://golang-moscow.timepad.ru/event/1116076/ 18:02:09 From andrey : В начале было по 24-25 человек 18:02:26 From Nikolay Yakubitskiy : + 18:02:27 From Sergey Olisov : + 18:02:28 From Dmitry Pavlov : Вроде можно уволится из курса и даже деньги вернуть 18:02:28 From Vyacheslav.Sitnikov : + 18:02:30 From andrey : + 18:03:55 From Sergey Olisov : можно название в чат книги?) 18:05:06 From Dmitry Pavlov : неа 18:05:13 From Dmitry Pavlov : я про java знаю) 18:06:14 From Vyacheslav.Sitnikov : а http2 не будем изучать? 18:08:59 From Vyacheslav.Sitnikov : HEAD 18:09:01 From Даурен : OPTIONS гадкий 18:09:01 From Mike Deruygin : trace) 18:09:02 From denis : PUT 18:09:03 From Nikolay Yakubitskiy : PUT 18:09:05 From Dmitry Pavlov : PUT/DELETE 18:09:06 From Nikolay Yakubitskiy : DELETE 18:09:06 From denis : DELETE 18:09:14 From Sergey Olisov : Извечный вопрос PUT или POST 18:09:16 From denis : PATCH 18:10:39 From denis : Обязательно \r\n не может \n? 18:11:07 From denis : И если передавать файл - в теле будет бинарные данные? 18:11:21 From Vyacheslav.Sitnikov : Так речь про RFC протокола. Обязательно \r\n ? 18:11:44 From Vyacheslav.Sitnikov : base64 18:12:41 From denis : Как обозначается конец документа? 18:12:52 From Даурен : Content-length 18:13:04 From denis : Он вроде не обязательный 18:13:04 From Vyacheslav.Sitnikov : Если есть тело, то должен быть content-length 18:13:04 From Mike Deruygin : в GO самый любимый код стал 429 18:13:24 From Dmitry Pavlov : Там же content-length 18:13:37 From Vyacheslav.Sitnikov : если его нет - нет тела 18:14:03 From denis : Не всегда так 18:14:11 From denis : ок 18:15:28 From Даурен : Типа grpc 18:15:48 From Даурен : тоже ведь бинарный 18:15:49 From Vyacheslav.Sitnikov : это поверх http2 18:15:59 From Даурен : Ааа точно 18:17:28 From denis : Почему? 18:17:40 From denis : понятно 18:17:48 From Mike Deruygin : timeout нет в Client 18:18:42 From Vyacheslav.Sitnikov : это get или post ? 18:19:42 From Vyacheslav.Sitnikov : так свои обработчики могут быть, типа telegram::// 18:20:45 From denis : Он сам выберет tcp/tls в зависимости от url.Parse(“https/http”)? 18:20:48 From Vyacheslav.Sitnikov : нужно енкодить спецсимволы, типа пробелов 18:21:23 From Vyacheslav.Sitnikov : про телеграмм - это я для примера, можно свои приддумать 18:21:49 From Vyacheslav.Sitnikov : Как заигнорить сертификаты? 18:21:59 From denis : Как ему указать эти сертификаты? Или он их сам найдет на машине? 18:22:19 From Даурен : как же сложно )) 1. Создаем аргументы, 2) создаем url, 3) создаем request, 4) наконец делаем запрос 18:22:20 From andrey : /etc/ssl/ обычно лежат 18:22:56 From Vyacheslav.Sitnikov : Сам ищет - не вариант, для связи с разными хостами, возможно нужны разные сертификаты 18:25:23 From Даурен : Alpine тоже ругается без настроек 18:27:05 From andrey : src\crypto\x509\root_unix.go 18:27:26 From andrey : да, тут всё по поводу сертификатов 18:28:25 From iPhone SAP : для клиента авторизации там же хранить серты? 18:28:39 From Vyacheslav.Sitnikov : а можно снова GET показать? 18:28:49 From Vyacheslav.Sitnikov : ок 18:29:06 From denis : файл 18:29:06 From Даурен : test 18:29:08 From Даурен : text 18:29:11 From Vyacheslav.Sitnikov : всё 18:29:20 From Vyacheslav.Sitnikov : всё в base64 18:29:22 From Даурен : msgpack 18:29:23 From Mikhail : данные формы 18:29:25 From Grigoriy Zavodov : formurl encoded 18:29:46 From andrey : а где мы хедеры задаём? 18:29:51 From andrey : Чтобы показать что это json 18:30:36 From denis : То есть можем json файл 18:30:38 From denis : ? 18:31:04 From iPhone SAP : а как система понимает как сертификат использовать для аутентификации? 18:31:45 From Vyacheslav.Sitnikov : свой сертификат в /etc/ssl не спихнуть без рута. Должен быть другой способ 18:32:03 From Vyacheslav.Sitnikov : да 18:32:14 From Sergey Olisov : Боди реквеста надо закрывать для POST? 18:32:14 From denis : Это же сервер - ты можешь все что угодно 18:32:39 From Vyacheslav.Sitnikov : В проде зачастую рута закрывают 18:33:01 From Даурен : https://stackoverflow.com/questions/38822764/how-to-send-a-https-request-with-a-certificate-golang 18:33:16 From Даурен : для вопросов про certs 18:33:36 From Vyacheslav.Sitnikov : докер - большая дыра в безопасности. Если замапить корень, то можно всё что угодно изменить на хостовой машине 18:34:02 From Vyacheslav.Sitnikov : а что такое scratch ? Хоть не по теме, наверное? :) 18:34:13 From denis : Это легкоывесный образ 18:34:16 From Grigoriy Zavodov : с чистого листа 18:34:45 From iPhone SAP : https://venilnoronha.io/a-step-by-step-guide-to-mtls-in-go 18:35:27 From Даурен : Надо проверить statusCode 18:35:32 From Mike Deruygin : будет выход 18:35:33 From Sergey Olisov : Fatal 18:35:42 From denis : паника 18:35:58 From Даурен : Redo? 18:36:17 From Vyacheslav.Sitnikov : а ошибка - это ошибка протокола или ошибка http (типа 404) ? 18:36:21 From Даурен : да 18:36:54 From denis : Если сервер не доступен - это транспорт? 18:37:00 From Mikhail : редиректы не обрабатываются? 18:37:10 From Sergey Olisov : resp.StatusCode надо смотреть 18:37:38 From denis : Зачем, что за тело? 18:38:15 From denis : Если мне нужно соединение, не надо закрывать? 18:38:31 From Nikolay Yakubitskiy : keepalive? 18:39:11 From denis : Это наверно отправка FIN в соединение 18:42:14 From Даурен : А можно ведь в структуре client задать время 18:42:41 From andrey : context недавно появился 18:43:29 From Даурен : а если нам нужно два вида контекста дать? 18:43:38 From Даурен : Например with value и timeout 18:43:44 From denis : вложенные 18:43:54 From Sergey Olisov : матрешкой 18:44:24 From denis : Про контекст подробно было на прошлом занятии 18:44:31 From denis : Кроме withValue 18:45:27 From Даурен : А для http сервера теперь тоже надо context давать? Для зависания запросов? 18:46:42 From denis : Можно ли сказать что это замена nginx? 18:46:48 From Даурен : кстати тут же можно передать сертификаты вроде 18:47:39 From andrey : ingress controller 18:47:40 From Даурен : gateway 18:47:44 From denis : То есть для go не нужен nginx? 18:48:04 From Vyacheslav.Sitnikov : и в php и в python есть собственные http реализации серверов. Но для прода не рекомендуется их использовать 18:48:15 From denis : Transport: &http.Transport{ TLSClientConfig: &tls.Config{ RootCAs: caCertPool, }, }, 18:48:56 From denis : До этого 18:48:58 From denis : caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) 18:49:02 From Даурен : Nginx - удобен когда нужно разруливать несколько доменов 18:49:33 From denis : ну и бог с ним) 18:49:34 From Vyacheslav.Sitnikov : неразрывный пробел? 18:51:13 From Vyacheslav.Sitnikov : скопипастил в плейграунд: https://play.golang.org/p/lQsnT9r4foZ 18:51:46 From Даурен : Подскажите где лучше указывать timeout - в контексте или в транспорте? 18:52:06 From Даурен : ок 18:52:25 From Даурен : В пред слайде просто тоже таймаут 18:53:01 From Даурен : что такое простаивает? 18:53:10 From Даурен : ок 18:53:25 From denis : Тупой вопрос, почему все пишут `Serve` а не `Server`? Почему не дописывают последнюю букву?) 18:55:42 From denis : 1 << 20? 18:55:54 From Nikolay Yakubitskiy : а размер тела запроса есть? 18:56:26 From Даурен : Тут таймаут без контекста? 18:58:43 From Даурен : Serve как команда “выполни” 18:58:52 From Даурен : сервер - кто выполняет 18:58:56 From andrey : serve - обслуживать , server - обслуживающий 19:01:36 From denis : Каждый вызов ServeHTTP запускается в горутине, верно? 19:02:19 From Sergey Olisov : запрос на соединение порождает горутину 19:02:59 From Даурен : В самом низу 19:03:17 From denis : Ну вот же он запускается в горутине 19:03:22 From Sergey Olisov : go c.serve… 19:03:25 From Даурен : там же был “go serve" 19:03:29 From denis : go c.serve 19:04:00 From Даурен : в пред функции было 19:05:38 From Даурен : Почему отвалятся? 19:05:47 From Даурен : Есть ведь recover? 19:06:10 From denis : А как возвращается response не могу понять? 19:06:14 From Даурен : даже есть midlleware 19:11:36 From denis : если путь будет /search/edit? 19:13:10 From denis : Декоратор 19:14:59 From Даурен : тут нет еще пункта recover 19:17:27 From denis : Если куча матрешек из контекстов с таймаутами - это плохо? 19:17:37 From Даурен : в пред слайде 19:18:43 From Даурен : Контекст с тайм-аутами будет ли бесполезен если ее внутренностные не обработать? 19:19:35 From Даурен : доп работу придумали… 19:19:36 From denis : Не обязательно, контекст наверху после таймаута запустит cancel агтсешщт 19:19:44 From denis : function 19:20:11 From denis : Он запустит отмену 19:20:32 From Даурен : Но handler проигнорит cancel 19:20:41 From denis : Есть паттерн - завершить все горутины по таймауту 19:22:06 From Даурен : ctx.Value(“…”) берёт из матрёшки? 19:23:31 From Dmitry Pavlov : Если бы еще натянуть withTimeout 19:23:37 From Dmitry Pavlov : То значение будет? 19:23:38 From Даурен : Смысле вдругих случаях по другому? 19:24:05 From Даурен : про “в этом случае берет из матрешки” 19:24:51 From Dmitry Pavlov : Это понятно Но если еще раз обернуть один контекст, value не потеряется? 19:25:15 From Dmitry Pavlov : Ок 19:25:17 From denis : В проде withValue используют или лучше не стоит? 19:25:29 From Даурен : Session? 19:25:54 From Dmitry Pavlov : Тут уровень запроса - не сессии 19:26:01 From Даурен : Но ее же передать в handler? 19:26:09 From Даурен : надо* 19:26:37 From denis : Через куки узнать ssid и подтянуть сессию 19:27:07 From Даурен : смотрите, мы храним сессию в редисе, и передаем в хандлер через withvalue, это же нормально? 19:27:27 From Даурен : в midlware получаем сессию 19:27:40 From Dmitry Pavlov : Если в куке сессионный ключ, то и withValue не нужен 19:27:54 From Даурен : Куки - неочень удобно 19:38:18 From denis : Нет, мы слушаем 19:40:19 From denis : Что значит удаленный вызов, rest разве не удаленный? 19:41:58 From denis : id обязательный? 19:42:28 From Даурен : В rpc - не получится передать бинарник 19:42:42 From Даурен : кроме как base64 19:43:46 From denis : Это id запроса? 19:44:25 From andrey : trace-id: 19:44:38 From denis : понятно 19:47:15 From denis : Спасибо за ссылку! 19:47:27 From andrey : swagger это типа как protobuf ? генератором в из dsl в go код 19:47:39 From denis : Это спецификация 19:47:50 From andrey : Ну в смысле использование 19:48:42 From Даурен : Ссылку? 19:48:50 From Елена Граховац : https://otus.ru/polls/4910/ 19:55:24 From denis : почему буффер 2? 19:55:44 From denis : ок 20:01:26 From Елена Граховац : https://github.com/rumyantseva/paris/blob/master/cmd/paris/main.go 20:01:55 From Dmitry Pavlov : - 20:02:00 From denis : По GraphQl посмотреть 20:02:05 From denis : Ка он выглядит 20:02:08 From andrey : Livecoding in Paris ? 20:03:20 From andrey : очень интересно, спасибо 20:05:53 From denis : Спасибо за занятие! 20:06:10 From Sergey Olisov : большое спасибо!!! 20:06:11 From Nikolay Yakubitskiy : Спасибо! 20:06:22 From Mikhail : Спасибо!