17:57:12 From Sergey Olisov : добрый вечер 17:57:18 From Sergey Olisov : + 18:00:22 From Mike Deruygin : вечер добрый 18:01:07 From Mike Deruygin : еще 3 домашки, какой новый год... 18:02:54 From Mike Deruygin : да, обычно около 10 и выше 18:03:29 From Mike Deruygin : а почему в popular loggers logrus & glog, а не zap? 18:03:56 From Mike Deruygin : я вот думаю на него проекты перевести с логруса 18:05:06 From Mike Deruygin : ага, спасибо 18:06:15 From andrey : У кого сколько долгов по ДЗ ? 18:06:20 From Даурен : 3 18:06:22 From Dmitry Pavlov : 2 18:06:42 From Vyacheslav.Sitnikov : А все молчат или у меня звука нет? 18:06:42 From Даурен : Как чат залепить в право в зуме? 18:06:53 From Dmitry Pavlov : я завтра в отпуске, надеюсь до НГ добью) 18:07:06 From Даурен : у меня 18:07:11 From Mike Deruygin : какое solution более system для env variables, caarlos0/env или kelseyhightower? 18:08:02 From Dmitry Pavlov : + 18:08:02 From Mike Deruygin : + 18:08:02 From Sergey Olisov : + 18:08:05 From Dmitry Pavlov : +++ 18:08:06 From Sergey Olisov : +++ 18:08:06 From Mikhail : +++ 18:08:06 From Mike Deruygin : +++ 18:08:09 From Vyacheslav.Sitnikov : в винде просто тяни вправо, он примагнитится. После этого его можно сделать уже, а также уменьшить по высоте 18:10:38 From Елена Граховац : http://bit.ly/08m4e7 18:12:04 From Елена Граховац : https://github.com/rumyantseva/paris 18:12:33 From Vyacheslav.Sitnikov : - 18:13:42 From Елена Граховац : https://github.com/caarlos0/env 18:15:09 From Елена Граховац : https://goreportcard.com/ 18:18:49 From andrey : Самое главное это количество звёздочек на гитхабе 18:19:08 From andrey : :) 18:19:41 From Sergey Olisov : все по фэншуй) 18:22:23 From Sergey Olisov : был 18:24:02 From Mike Deruygin : а миграции тоже туда класть? 18:26:03 From Mike Deruygin : спасибо 18:27:52 From Елена Граховац : https://github.com/golang-standards/project-layout 18:30:35 From Даурен : + 18:30:35 From Grigoriy Zavodov : в начале был 18:30:37 From Sergey Olisov : + 18:30:44 From Mikhail : + 18:30:45 From Sergey Olisov : +- 18:30:45 From Даурен : да 18:30:48 From Grigoriy Zavodov : конечно 18:30:55 From Даурен : Не смотрел 18:30:58 From Dmitry Pavlov : не смотрел 18:32:19 From Даурен : экономим лишний коммит 18:36:05 From Vyacheslav.Sitnikov : так есть же готовый образ с golangci lint 18:38:06 From andrey : ого, первый раз вижу чтобы в докерфайлах чексуммы верифицировали, вы точно с банка :) 18:40:45 From Елена Граховац : https://pre-commit.com/ 18:43:47 From Елена Граховац : https://github.com/dnephin/pre-commit-golang 18:44:34 From Vyacheslav.Sitnikov : ресь про коммит или-таки про пуш идёт? 18:44:39 From Vyacheslav.Sitnikov : *речь 18:45:44 From Mike Deruygin : а если пожар и надо срочно git commit / git push как есть и бежать, а тут pre-commit говорит - неа, исправляй) 18:46:46 From Mike Deruygin : ну push же не обязательно на продакшн, а в свою ветку 18:46:59 From Даурен : Ну ошибки бывают разные 18:47:38 From Vyacheslav.Sitnikov : 0.3.5 18:49:00 From Vyacheslav.Sitnikov : а в самих хуках привязка к питону есть ? 18:49:26 From Vyacheslav.Sitnikov : ну может он питон для генерации используется, но не в работе 18:52:02 From Vyacheslav.Sitnikov : а как включить допнастройки 18:52:04 From Vyacheslav.Sitnikov : ? 18:54:29 From Vyacheslav.Sitnikov : там есть disabled by default - там в списчке и глянуть 18:56:10 From Vyacheslav.Sitnikov : в описании такой раздел есть, там список пакетов, не там название нужной опции (документирование функций) искать нужно? 18:57:06 From andrey : Главное указать issue :) 18:59:47 From andrey : на работе каждый день :) 18:59:50 From Dmitry Pavlov : убрали такое ДЗ 18:59:51 From Vyacheslav.Sitnikov : с гитлаб сиай 19:10:02 From andrey : При каждом запуске новый uuid генерировать? 19:13:50 From Vyacheslav.Sitnikov : Приложение баиньки 19:13:51 From andrey : Залогирует и закроется 19:13:53 From Mike Deruygin : оно упадет 19:13:57 From Даурен : exit(1) 19:14:22 From andrey : exit(1) 19:15:10 From Grigoriy Zavodov : в zap точно exit(1) 19:15:12 From Mikhail : паника вроде вот logger.Panic 19:21:26 From Mikhail : Есть какое-то правило как выбрать info vs debug? 19:21:54 From andrey : info для пользователя, debug для разработчика? 19:23:55 From Vyacheslav.Sitnikov : а как для инфо выдать одну информацию, а для дебаг - другую. Перед каждым выводом level менять? 19:24:56 From Vyacheslav.Sitnikov : порта переменной нет 19:25:17 From Даурен : Он не успел выше ит 19:25:22 From Даурен : вывести 19:25:32 From Даурен : Изза ошиюки 19:25:41 From Даурен : ошибки* 19:26:32 From Dmitry Pavlov : может понижать нельзя уровень 19:27:23 From Mike Deruygin : log.SetLEvel 19:30:33 From Vyacheslav.Sitnikov : так как вывести разную информацию? Для инфо оставить просто сообщение - "у вас ошибка", а для дебага расписать подробно, ещё и трейс приложить 19:30:53 From Даурен : У logger разные методы для разных level 19:31:34 From Vyacheslav.Sitnikov : ок, логично 19:32:01 From Vyacheslav.Sitnikov : а на лету менять можно? 19:32:04 From Vyacheslav.Sitnikov : уровень? 19:32:24 From Даурен : Уровень обычно задается environment 19:33:32 From Vyacheslav.Sitnikov : иногда нужно менять уровень логирования для какой-то функции, причём с определёнными парамерами. Нарпимер логгировать определённого клиента 19:34:13 From andrey : В java(logback) можно в рантайме менять 19:34:16 From Даурен : Можно ведь сразу два лога записать сразу: 19:34:24 From Даурен : logger Debu() 19:34:24 From andrey : Фигово приложение перезапускать 19:35:10 From Vyacheslav.Sitnikov : логгер в глобальную переменную загнать? 19:36:40 From Даурен : + 19:36:41 From Vyacheslav.Sitnikov : а подскажите другие логгеры 19:36:58 From Елена Граховац : https://github.com/uber-go/zap 19:37:32 From andrey : У zap всё хорошо 19:37:34 From andrey : https://github.com/uber-go/zap/issues/556 19:37:37 From Елена Граховац : https://github.com/golang/glog 19:40:51 From Vyacheslav.Sitnikov : а если приложение зависит от другого, например от БД? 19:41:09 From Vyacheslav.Sitnikov : проверку коннекта включать в хелсчек? 19:43:32 From Даурен : Restart timeout - нет такого в кубике? 19:45:13 From Mike Deruygin : 50/50 вероятность) 19:45:20 From Vyacheslav.Sitnikov : =) 19:47:04 From Даурен : проходили вроде 19:47:07 From andrey : нее, докер не надо 19:47:15 From Sergey Olisov : было 19:47:44 From andrey : больше личного опыта, доку глянуть в интернетах можно 19:47:55 From Mike Deruygin : поговорить) как waitscript написать, когда я в мультистейдже собираю приложение и миграцию и как зачекать, что БД доступна для миграции) 19:49:19 From Vyacheslav.Sitnikov : что все понимают под миграциями? 19:50:00 From Mike Deruygin : у меня миграция это билд го приложения 19:50:30 From Vyacheslav.Sitnikov : а у меня миграция - это перенос данных с легаси в новую систему 19:50:31 From andrey : нет, миграции это критические изменения базы данных, без которых новая версия приложения не запустится 19:50:41 From Mike Deruygin : у меня билдятся 2 приложения 19:50:49 From Mike Deruygin : го билд + миграция билд 19:51:03 From Mikhail : миграция это просто журналирование изменений БД в виде файлов ) 19:51:11 From Mike Deruygin : да, go-pg миграция 19:51:20 From Mike Deruygin : билдится в бинарник 19:51:21 From Елена Граховац : https://flywaydb.org/ 19:51:21 From Даурен : Миграция - это построение схемы в бд 19:52:46 From andrey : чтобы вкатывать миграцию на рабочую версию :) 19:53:08 From andrey : Без остановки 19:53:38 From Vyacheslav.Sitnikov : вроде есть ORM 19:54:19 From andrey : https://github.com/go-pg/migrations 19:55:16 From andrey : ещё есть liquidbase 19:55:24 From andrey : И чёт ещё похожее 19:55:52 From andrey : Это всё хорошо работает когда специфические вещи бд не используешь, у нас на Oracle не взлетело 19:56:47 From Даурен : я таким пользуюсь github.com/golang-migrate/migrate 19:57:53 From andrey : https://www.liquibase.org/ 19:58:05 From Vyacheslav.Sitnikov : мне кажется при запуске нужно проверить, нужна миграция или нет, выдать рекомендацию и умереть. А дальше пусть DBA страдают 19:58:17 From Mike Deruygin : он работает очень хорошо) 19:58:55 From Mike Deruygin : миграции там sql) 20:02:29 From Dmitry Pavlov : есть готовые wait-for.sh 20:02:30 From andrey : ахаха, основной разработчик golang-migrate/migrate - https://github.com/dhui 20:02:43 From Mike Deruygin : ага, спасибо 20:03:14 From andrey : Базу то легко определить как запустилась 20:03:19 From andrey : А вот отловить миграцию 20:03:32 From Dmitry Pavlov : у flyway есть еще retryCount 20:03:58 From andrey : Нее, я имею ввиду определить что вся миграция закончилась 20:04:09 From andrey : Чтобы приложение запустилось после миграции 20:04:52 From Даурен : Походу лучше в самом приложении 20:05:54 From Mike Deruygin : такой вопрос,чем синглтон в го так уж плох для инициализации базы данных 20:06:04 From Vyacheslav.Sitnikov : а кровавом энтерпрайзе ничего автоматически делать нельзя 20:06:08 From Даурен : у гитхаба нет своего CI? 20:06:51 From Dmitry Pavlov : Про Handle errors, как красиво обрабатывать ошибки? 20:07:33 From Mike Deruygin : через экспортируемую функцию CreateDB() *db 20:07:38 From Mike Deruygin : очень удобно) 20:07:59 From Mike Deruygin : а в тестах также, CreateDB и ага 20:11:27 From Dmitry Pavlov : У вас в том докладе как был поднят вопрос, но не раскрыт 20:19:04 From Даурен : Сам error нельзя отловить? 20:19:18 From Даурен : аа точно 20:19:19 From Mike Deruygin : string(debug.Stack())) 20:21:09 From Vyacheslav.Sitnikov : а ещё б и дамп всех переменных получить из текущей области видимости 20:24:06 From Vyacheslav.Sitnikov : а отлов паники на глобальном уровне разве не перекрывает любые паники в программе? 20:25:04 From Dmitry Pavlov : А что-то удобнее протаскивание ошибок через return someResult, error по всему коду есть в го есть? 20:26:05 From Dmitry Pavlov : Если честно я уже сильно заколебался за время обучения такими делами заниматься) 20:26:18 From Dmitry Pavlov : (перекидыанием ошибок) 20:27:59 From Dmitry Pavlov : почему? 20:28:04 From Mike Deruygin : отклонили? 20:28:07 From Mike Deruygin : о нет 20:28:13 From andrey : не наглядно 20:29:10 From Даурен : Оттенки Си 20:29:46 From andrey : https://github.com/golang/go/issues/32804 20:30:06 From Елена Граховац : https://github.com/golang/go/issues/32437 20:30:15 From Mike Deruygin : это мем, го как однозарядный пистолет, где после каждого выстрела, надо проверять, а действительно ли он выстрелил 20:31:25 From Mike Deruygin : я могу его прокидывать очень далеко) 20:32:07 From Dmitry Pavlov : (просто пробосить дальше) 20:32:20 From Даурен : =) 20:33:04 From Vyacheslav.Sitnikov : Оффтоп: у вас микрофон такой навороченный - только для преподавания или вы ещё стримите что-то? 20:33:14 From Dmitry Pavlov : а от дженериков тоже отказались? 20:34:31 From Даурен : Можно опросник? 20:34:42 From andrey : У нас уже лекция 2,5 часа 20:34:45 From Grigoriy Zavodov : спасибо за лекцию 20:34:50 From Елена Граховац : https://otus.ru/polls/7397/ 20:34:53 From andrey : но было позновательно 20:35:04 From Mike Deruygin : и это правильный тайминг) 20:35:23 From Даурен : подкасты еще идут? 20:35:41 From Елена Граховац : https://fromcodetoprod.com 20:36:03 From Елена Граховац : https://www.listennotes.com/podcasts/generic-talks-generic-talks-MPl0I3DsNf5/ 20:36:16 From Sergey Olisov : жаль 20:36:57 From Mike Deruygin : спасибо большое, было просто супер! 20:36:58 From Sergey Olisov : спасибо огромное!!! 20:37:04 From Mikhail : Спасибо! 20:37:06 From orensimple : вам спасибо 20:37:16 From Dmitry Pavlov : Кубик вроде только остался 20:37:25 From Vyacheslav.Sitnikov : Вот теперь правда жаль :( Вы один из самых адекватных преподавателей 20:37:49 From Dmitry Pavlov : Спасибо за занятия! С наступающим 20:37:53 From orensimple : взаимно, с наступающим) 20:37:55 From Mike Deruygin : взаимно) 20:37:58 From Sergey Olisov : с наступающим!