Немного IT

Немного IT

By Иван Соловьёв и Михаил НепряхинTechnology
Download on the App Store

Немного IT episodes

  • О тестировании кода в Go и не только. Моки, юнит и интеграционные тесты

    Выпуск о тестировании: юнит, интеграционном и end-to-end тестах. Поговорим о плюсах, минусах и внешних инструментах. Расскажем про наш личный опыт на проектах и конечно же затронем тему чистой архитектуры.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:21
    • Наши истории о написании тестов – 00:00:51
    • Почему некоторые крупные компании не пишут тесты – 00:02:22
    • Когда и кому тесты не нужны – 00:04:30
    • Тесты на фронтенде – 00:07:29
    • Про Unit тесты – 00:09:28
    • Пирамида тестирования – 00:10:10
    • Типы тестов – 00:14:10
    • Тестирование Фронтенда – 00:15:36
    • Браузеры для тестирования фронтенда – 00:18:48
    • Немного о тестировании мобильных приложений – 00:20:21
    • Использование Mocks – 00:23:19
    • Unit тесты vs интеграционные тесты – 00:27:40
    • Когда от TDD есть профит – 00:31:18
    • Почему стоит уделять внимание интеграционным тестам – 00:42:14
    • Анатомия тестирования AAA: Arrange, Act, Assert – 00:48:30
    • Внешние инструменты для написания тестов – 00:49:25
    • О моках – 00:51:53
    • О важности Unit тесты – 00:53:11
    • Про покрытие тестами кода – 01:03:49
    • Что делают тестировщики? – 01:05:20
    • Внедрение зависимостей и чистая архитектура – 01:12:05
    • Зачем SonarQube – 01:15:55

    1 hr 26 min
  • Kafka худший брокер? Чем обусловлена популярность этого куска продукта? Кафка и Go

    Говорим об асинхронном взаимодействии между сервисами. Обсудим основные боли Kafka или почему разработчику нужно буквально «съесть собаку» и зачем изучать детали реализации. Во второй части подкаста приготовим «кролика» – какие подводные камни есть у RabbitMQ. Затронем Redis и Nats. А в заключении поделимся библиотеками для написания своих очередей.

    Nats.io – Лучший брокер сообщений по мнению ведущих. AsyncAPI.com – Open Source инструмент, позволяет описывать асинхронное взаимодействие.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:01
    • Разносим Kafka – критика продукта – 00:00:49
    • Драйверы Go к Kafka: sarama, kafka-go, confluent-kafka-go – 00:01:45
    • Тестирование консьюмеров в Kubernetes – 00:04:30
    • Нерешаемые ошибки драйверов – 00:05:52
    • Главная боль Kafka: учи меня полностью – 00:07:15
    • Kafka partitions – 00:10:08
    • Гарантии доставки Kafka – 00:12:28
    • Слабая абстракция Kafka – 00:16:40
    • Протечка абстракции – почему это плохо – 00:19:00
    • Kafka – конструктор – 00:20:20
    • Конфигурация запуска Kafka – 00:22:03
    • Безопасность в Kafka: SASL mechanism Kafka – 00:24:42
    • Создаем топики в Kafka – 00:28:27
    • Минусы confluent-kafka-go – 00:29:59
    • Риски приложения с включенным CGO – биндинг с C – 00:31:31
    • Слабоконтролируемость приложений на CGO – 00:32:12
    • Проблемы Garbage collector в CGO – 00:34:30
    • Возвращаемся к Sarama – 00:35:48
    • Kafka Connect – 00:36:48
    • Неидиоматичный код Sarama – 00:39:33
    • Для чего не стоит использовать Kafka? – 00:40:49
    • Разбираем RabbitMQ и его плагины – 00:43:47
    • Реализация очереди в RabbitMQ – 00:48:01
    • Механизм оповещения и очереди в RabbitMQ – 00:51:57
    • Проблема погружения в детали реализации – мелочи, которые разработчику знать не нужно – 00:53:05
    • RabbitMQ Mnesia – спойлер! мы не рассказываем что это такое! – 00:54:36
    • RabbitMQ настройки префетчинга – 00:56:20
    • Проблемы универсальных решений – 00:57:50
    • Драйвер Go для RabbitMQ – 01:00:06
    • Аналог брокера сообщений Redis Pub/Sub и его проблемы – 01:01:20
    • Redis Streams – 01:02:35
    • Альтернатива Redis – KeyDB – 01:03:36
    • Драйверы Redis – 01:04:53
    • Серебряная пуля nats.io – 01:07:25
    • Nats Request-Reply – 01:09:37
    • Nats как замена RabbitMQ – 01:13:53
    • Библиотеки, с помощью которых можно построить свои очереди – 01:14:09
    • AsyncAPI – 01:16:48
    • Kafka Streams – 01:18:13
    • Подводим итоги своих впечатлений от Kafka – 01:19:47

    1 hr 25 min
  • Elastic стек всё? Grafana для хранения логов, метрик и трейсов. APM и OpenTelemetry

    В 9 выпуске подкаста говорим о наблюдаемости, о логах, трейсах, SRE-метриках, делимся кейсами из нашей практики, где использовали те или иные инструменты. Рассмотрим observability с точки зрения полезности: когда доступность сервисов привязываются к бизнес метрикам. Подробнее остановимся на Grafana, а в заключении по рассуждаем, что имеет смысл использовать на пэт проектах, а что оставить кровавому Энтерпрайзу.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:20
    • Рассказ про погружение в мир трейсов – 00:00:50
    • Полезность наблюдаемости в современной архитектуре – 00:01:45
    • Стандарт open telimetary – 00:03:07
    • Кейс по OpenTelemetry: Service Level Indicator (SLI) и Service-Level Objective (SLO) – 00:05:46
    • Как появился стандарт open telimetary – 00:07:42
    • Что такое логи, трейсы, метрики и спаны – 00:12:00
    • О трейсах и защите данных, Trace ID – 00:17:00
    • Что было до трейсов (текстовые логи) – 00:19:45
    • Подробнее о логах – 00:23:17
    • О метриках – 00:28:08
    • Grafana stack и бесплатные APM – 00:35:00
    • Кейс об использовании трейсов – 00:38:09
    • Трейсы и APM – 00:40:23
    • Opensource (бесплатные) APM – 00:48:07
    • В каких случаях лучше выбрать Grafana stack – 00:50:50
    • Время, уровень и сообщения в логе – 00:53:44
    • UI в Grafana – 00:55:06
    • Grafana Mimir OSS для метрик – 00:55:58
    • Grafana Tempo OSS для трейсов – 00:57:38
    • Continuous Profiling – 01:03:36
    • Инструменты для настройки нового проекта – 01:06:22
    • Нужны ли эти инструменты для pet проектов? – 01:08:26
    • Готовые решения – 01:10:50
    • Какие провайдеры облачных инфраструктур использовать для пет проектов – 01:12:52
    • Сбор исключений, инструменты: Sentry, Crashlytics – 01:19:02
    • Заключение – 01:20:50

    1 hr 23 min
  • Python лучший язык для начинающих? Григорий Петров про Go, Rust и Python

    Для записи 8-го выпуска мы пригласили нашего коллегу, DevRel Evrone, Григория Петрова. Мы расспросили Гришу об отношении к Go и Rust, и, конечно же обсудили его любимый Python. От разговоров про код мы плавно перешли к обсуждению принципов работы мозга, запоминанию и способам поддерживать свою личную базу знаний в актуальном состоянии.
    Доклад Григория про персональную Wiki https://youtu.be/q4Ftg63diDs.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:32
    • Почему Григорий Петров выбрал Python – 00:01:28
    • Go – как второе пришествие Java – 00:04:12
    • Go – только для простых проектов – 00:08:40
    • Сравнение производительности Go, Python и Ruby – 00:11:09
    • Где хорош Rust и в чём его подводные камни – 00:17:12
    • Надежность и стабильность работы Rust – 00:21:05
    • Контроль ошибок – 00:22:33
    • Почему Python – лучший язык для начинающих – 00:27:08
    • Не одним Django едины, фреймворки для Python – 00:31:47
    • В чём киллер фича FastAPI – 00:32:40
    • Ассинхронный Python (в один поток) – 00:34:25
    • Tornado и Flask умерли – 00:39:02
    • Интерпретаторы для Python – 00:40:19
    • Линтеры и форматеры в Python – 00:44:52
    • Использование OpenTelemetry в Python – 00:46:02
    • Примеры использования gradual typing в Python – 00:48:37
    • Написание кода с точки зрения нейрофизиологии – 00:52:25
    • Однозадачность мышления – 00:59:55
    • Немного про внимание – 01:05:32
    • Методология подготовки к выступлениям от Григория Петрова – 01:08:52
    • Personal knowledge management или «Второй мозг» – 01:14:14
    • Собственные методы написания заметок и необходимость в систематизации знаний – 01:19:23

    1 hr 24 min
  • REST или RPC лучше? Service Mesh зачем нужен? Плюсы и минусы gRPC, и немного о Nats

    Сегодняшний выпуск посвящен синхронному взаимодействию. Большую часть времени мы обсуждали REST и RPC подходы, сравнивали с gRPC и порассуждали о том, каким бы был Service Mesh для людей.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:24
    • Плюсы и минусы REST – 00:00:58
    • OpenAPI на практике – 00:08:29
    • API-First подход в межсервисном взаимодействии – 00:09:49
    • Уровни использования REST – 00:13:55
    • RPC подход и gRPC – 00:16:35
    • Разбор gRPC плюсы и минусы – 00:22:15
    • Про ProtoBuf – 00:23:43
    • Форматы сериализации – 00:28:35
    • Еще о минусах gRPC – 00:31:39
    • Несовместимость gRPC и Kubernetes по умолчанию – 00:39:07
    • Балансировка запросов с gRPC – 00:40:25
    • Service Mesh для людей – 00:45:16
    • Одиночные запросы и стриминг данных в gRPC – 00:54:22
    • RPC c Nats.io в качестве транспорта – 00:57:23
    • Ещё об RPC – 01:01:08

    1 hr 4 min
  • Опять ругаем Go? Говорим о спорных моментах в языке Go (но мы его любим)

    В 6-м выпуске обсудили спорные стороны Go – пакеты стандартной библиотеки, роутеры, работу с JSON и timezone. Разобрали по косточкам константы, garbage collector, структурные теги. Как всегда провели сравнение с Rust и рассуждали о том, что стоило бы сделать, чтобы разработчикам было проще жить.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:23
    • Минусы реализации http сервера в Go – 00:01:04
    • Работа с контекстом – 00:04:12
    • Роутеры в Golang, маршрутизация в Go – 00:05:15
    • Тесты для пакетов net/http – 00:07:55
    • Минусы http сервера в Go – 00:09:54
    • Маршрутизация с Chi in Go – 00:12:50
    • Плюсы и минусы fast http – 00:13:25
    • Советы новичкам по роутерам в Go – 00:15:44
    • Сериализация JSON с Golang – 00:16:40
    • Сокращаем время сериализации с easyjson – 00:18:55
    • Работа с JSON, костыли с zero value и другие минусы – 00:21:24
    • Криптография в Go (Golang Crypto Package) – 00:26:20
    • Еще пара [нелестных] слов про smtp сервер – 00:28:55
    • Пакет time или выстрел себе в ногу – 00:33:53
    • Узкое место методы After, Before у time – 00:39:20
    • Работа с query параметрами и url – 00:42:00
    • ООП в Go – 00:43:00
    • Константы в Go – 00:46:46
    • Сборщик мусора (GC) в Go – 00:49:10
    • Спорный момент в объявлении переменных – 00:55:08
    • Структурные теги в Go, дополнительное поведение структуры – 00:56:20
    • Контекст как альтернативный API в Go – 01:00:25
    • Спорные стороны и непредсказуемость SSA – 01:04:50
    • Итоги выпуска – 01:10:55

    1 hr 12 min
  • Go – худший язык программирования? О минусах и недостатках Golang

    Сегодня поговорим о минусах Go. О том, на какие грабли наступают разработчики, которые только начали писать на Go. Собственный компилятор, вместо LLVM. Скудная документация, работа со слайсами и мапами, и другие «подводные камни» «легкого» в освоении Go.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:28
    • Компилятор Go – 00:00:40
    • В чем минус того, что Go не на LLVM – 00:02:12
    • Проблемы со слайсами и мапами – 00:07:12
    • Как правильно работать со слайсами – 00:11:36
    • Место, в котором декларация явного дала сбой – 00:12:57
    • Проблемы при инициализации мапы – 00:16:20
    • Что делать разработчику, который только пришел в Go – 00:22:46
    • Дженерики в Go – 00:24:30
    • Концепция каналов в Go – 00:27:07
    • Неуместное использование горутин, каналов, селектов в Go – 00:30:00
    • Мьютексы в каналах – 00:32:50
    • Использование sync/atomic в golang – 00:34:18
    • Работа с WaitGroup – 00:37:15
    • Еще пара слов о Mutex – 00:39:11
    • Аллокация памяти – 00:45:33
    • Если бы Go был на LLVM – 00:50:50
    • Пустые интерфейсы – 00:52:07
    • Внутренние типы – 01:01:10
    • Сравниваем систему типов с Rust'ом – 01:03:24
    • Многословность Go – 01:05:50
    • Подводим итоги и не смотрим на минусы Go – 01:08:30

    1 hr 13 min
  • Горутины – главная киллер фича Go? О вытесняющей и кооперативной многозадачности

    В новом выпуске мы обсудили технологические плюсы Go: главную киллерфичу – многопоточность, конкурентное/ассинхронное выполнение, и вытесняющую многозадачность. Поговорили о Goroutine, каналах, о кодогенерации и использовании профилировщиков.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:24
    • Многопоточное программирование как киллер фича в Go – 00:00:40
    • Концепция GMP модели – 00:01:49
    • Сравнение с многопоточностью на C# – 00:04:00
    • Как вытесняющая многозадачность выполняется в Go – 00:04:40
    • Как это выглядит на Python и С# – 00:07:18
    • Быстродействие горутин – 00:09:22
    • Расшифровываем GMP – 00:11:57
    • Переход от одной горутины к другой – 00:14:16
    • Механизмы синхронизации между горутинами – 00:16:45
    • Самые частые вопросы на собеседовании по Go (про каналы) – 00:17:31
    • Про Nats – 00:20:09
    • Еще пара слов о каналах (как в Go работает select) – 00:20:36
    • Понимание defer в Go – 00:22:14
    • Кейсы использования кодогенерации в Go – 00:26:22
    • Go-swagger – 00:32:30
    • Когда First API подход не приживается – 00:33:53
    • Опыт использования pprof golang – 00:36:21
    • Когда нужен debugger – 00:39:27
    • Режимы профилировщика – 00:42:06
    • Сравнение работы со строками в Rust – 00:43:46
    • Механизм создания исключения и его отлова (panic и recover) и когда её стоит использовать – 00:44:40
    • Еще немного о горутинах – 00:48:40

    51 min
  • Go – лучший язык программирования? Действительно ли Go простой? Достоинства Golang

    В третьем выпуске подкаста мы поговорили о том, насколько хорош язык Go и почему его считают легким для изучения (что ошибочно). Обсудим феномен длинного кода, механизм возврата ошибок (в сравнении с другими языками), отсутствие дженериков и вопросы безопасности. Проведем сравнение с Python и Rust, и другими технологиями-конкурентами.

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:00
    • Действительно ли Go простой? – 00:01:45
    • Как упростить читабельность кода – 00:05:05
    • Философия возврата ошибок в Go (result option) – 00:08:03
    • Мнимые проблемы в Go (по мнению пользователей Хабра) – 00:11:43
    • Использование дженериков - когда они нужны? – 00:13:00
    • Производительность – 00:15:40
    • Go на продакшене – 00:19:34
    • Зависимости (go mod vendor) и безопасность – 00:25:00
    • Крупные проекты на Golang – 00:30:16
    • Что нужно, чтобы хорошо писать на Go – 00:31:45
    • Тестирование в Go – 00:33:19
    • Многословность – 00:36:00
    • Еще немного про философию Go и отсутствие «магии» – 00:39:50
    • Про стандартные библиотеки – 00:47:15
    • Антипаттерны или «выстрел в ногу» – 00:48:35
    • Про Enums – 00:52:04
    • Очевидность лучше простоты – 00:57:30
    • Code Style в Go – 00:59:15
    • Ошибки как инстанты – 01:01:25
    • Развитие Go – 01:05:45
    • Технологии-конкуренты – 01:10:35

    1 hr 14 min
  • TypeScript решит все проблемы? Альтернатива JavaScript. Webpack и стрельба в ногу

    В этом эпизоде мы говорим о JavaScript и TypeScript с его проблемами. На каких ещё языках, кроме JS, можно писать фронтенды. Про кроссбраузерность и кроссплатформенность. Про инструменты сборки и транспиляции. А так же про SEO, SSR и любовь к jQuery.
    Иван Соловьев – Про Snowpack https://youtu.be/McR7Tb2EJOo

    Ведущие
    • Иван Соловьёв
    • Михаил Непряхин

    Темы
    • Приветствие – 00:00:00
    • Есть ли альтернатива JavaScript – 00:00:23
    • Про ClojureScript – 00:01:17
    • Идеальный язык будущего – 00:04:52
    • SEO и SSR (Server Side Rendering) – 00:06:23
    • Зачем JS если можно рендерить на Go – 00:09:53
    • Bootstrap, готовые шаблоны и SPA (Single Page Application) – 00:11:32
    • В среднем у пользователей слабые устройства, SSR помогает – 00:14:44
    • jQuery люблю и ненавижу – 00:17:13
    • Браузерные движки – 00:19:07
    • Проблемы кроссбраузерности – 00:21:20
    • API браузеров – 00:27:56
    • Единый движок для отрисовки интерфейсов и Canvas – 00:28:44
    • Как поменялся JavaScript за последнее время – 00:30:57
    • Линтеры и стандартизация – 00:36:34
    • Snowpack и Webpack – 00:39:05
    • Webpack и стрельба в ногу – 00:40:40
    • Проблемы TypeScript – 00:44:12
    • Про типизацию в TypeScript – 00:51:08
    • TypeScript живёт и будет жить – 00:56:11

    58 min

About Немного IT

From the publisher's feed

Подкаст о технологиях бекендов, фронтендов, архитектуры и администрирования.