- 48
- 837 761
Николай Тузов - Golang
Registrace 6. 07. 2015
Сложные вещи простым языком.
Меня зовут Николай. Я много лет занимаюсь разработкой, и много лет дружу с Go. Сейчас работаю в компании Different Technologies (мексиканский финтех), ранее работал в Lamoda и Gaijin Entertainment. Помимо Go и вообще бэкэнда, интересуюсь и другими технологиями. Например, очень люблю Vue.js.
На этом канале вы найдете видео по разработке, чаще всего на Go. Мне нравится учить людей писать интересные штуки своими руками, помогая осознавать, насколько они простые на самом деле. Это может быть собственный архиватор, компилятор, торрент-клиент, база данных или даже операционная система.
Меня зовут Николай. Я много лет занимаюсь разработкой, и много лет дружу с Go. Сейчас работаю в компании Different Technologies (мексиканский финтех), ранее работал в Lamoda и Gaijin Entertainment. Помимо Go и вообще бэкэнда, интересуюсь и другими технологиями. Например, очень люблю Vue.js.
На этом канале вы найдете видео по разработке, чаще всего на Go. Мне нравится учить людей писать интересные штуки своими руками, помогая осознавать, насколько они простые на самом деле. Это может быть собственный архиватор, компилятор, торрент-клиент, база данных или даже операционная система.
Собеседование Senior Go-разработчика / Даниил Подольский, Владимир Балун - Антон Зиновьев
Даниил Подольский и Владимир Балун проводят собеседование Senior GoLang разработчика - Антона Зиновьева. Интервью состоит из двух частей: общие вопросы и лайв-кодинг.
Канал Вовы: @vladimir_balun_programming
Статья про опросник Даниила: habr.com/ru/companies/oleg-bunin/articles/521582/
👾 t.me/ntuzov - мой канал в Telegram.
Пишу в нём много интересного: гайды, которых нет на CZcams, интересные мысли про разработку, новости и анонсы всех моих активностей и др.
Мои уроки, которые помогут вам подготовиться к собеседованию:
Внутреннее устройство типа Map в Go: czcams.com/video/P_SXTUiA-9Y/video.htmlsi=iQCooPSrQ3EifMT2
Про хэш-таблицы: czcams.com/video/0UX4MIfOMEs/video.htmlsi=lyWV4BLvzRQmJqcH
Внутреннее устройство каналов: czcams.com/video/ZTJcaP4G4JM/video.htmlsi=5uX_-NtmkKkcVvO6
Как устроен Slice, его подводные камни: czcams.com/video/10LW7NROfOQ/video.htmlsi=kNbTqFucDo6vU-9z
----
👀 GoLang Digest: t.me/golang_digest - мои регулярные подборки интересных материалов по Go.
🗣️ Наше сообщество GopherClub: t.me/+zsSZ63wEJDs3NGVi
Лучшее русскоязычное Go-сообщество с очень приятной атмосферой, без токсиков. Вежливо и терпеливо помогаем новичкам, конструктивно дискутируем с профессионалами и т.п.
Здесь также присутствуют все звезды Go-сообщества и представители интересных компаний.
❤️ Если у вас есть желание поддержать развитие канала:
Секретный телеграм-канал:
- В рублях: t.me/+1UPXV_DGnG1mODJi
- В евро: t.me/+hedI8LevYTc5MDM6
Boosty: boosty.to/nikolay.tuzov
Patreon: www.patreon.com/tuzov
----
Тайминги
00:00 Вступление
05:22 Разговорная часть - Даниил Подольский
56:39 Лайв-кодинг - Владимир Балун
02:07:05 Заключение
#golang #ntuzov
Канал Вовы: @vladimir_balun_programming
Статья про опросник Даниила: habr.com/ru/companies/oleg-bunin/articles/521582/
👾 t.me/ntuzov - мой канал в Telegram.
Пишу в нём много интересного: гайды, которых нет на CZcams, интересные мысли про разработку, новости и анонсы всех моих активностей и др.
Мои уроки, которые помогут вам подготовиться к собеседованию:
Внутреннее устройство типа Map в Go: czcams.com/video/P_SXTUiA-9Y/video.htmlsi=iQCooPSrQ3EifMT2
Про хэш-таблицы: czcams.com/video/0UX4MIfOMEs/video.htmlsi=lyWV4BLvzRQmJqcH
Внутреннее устройство каналов: czcams.com/video/ZTJcaP4G4JM/video.htmlsi=5uX_-NtmkKkcVvO6
Как устроен Slice, его подводные камни: czcams.com/video/10LW7NROfOQ/video.htmlsi=kNbTqFucDo6vU-9z
----
👀 GoLang Digest: t.me/golang_digest - мои регулярные подборки интересных материалов по Go.
🗣️ Наше сообщество GopherClub: t.me/+zsSZ63wEJDs3NGVi
Лучшее русскоязычное Go-сообщество с очень приятной атмосферой, без токсиков. Вежливо и терпеливо помогаем новичкам, конструктивно дискутируем с профессионалами и т.п.
Здесь также присутствуют все звезды Go-сообщества и представители интересных компаний.
❤️ Если у вас есть желание поддержать развитие канала:
Секретный телеграм-канал:
- В рублях: t.me/+1UPXV_DGnG1mODJi
- В евро: t.me/+hedI8LevYTc5MDM6
Boosty: boosty.to/nikolay.tuzov
Patreon: www.patreon.com/tuzov
----
Тайминги
00:00 Вступление
05:22 Разговорная часть - Даниил Подольский
56:39 Лайв-кодинг - Владимир Балун
02:07:05 Заключение
#golang #ntuzov
zhlédnutí: 25 813
Video
Пишем gRPC сервис на Go - Сервис авторизации / УЛЬТИМАТИВНЫЙ гайд
zhlédnutí 63KPřed 5 měsíci
Пишем полноценный gRPC сервис с современной архитектурой. Также: - Напишем контракт protobuf, разберемся с кодогенерацией - Научимся работать с ошибками и логами - Настроим миграции для БД - Настроим автоматический деплой через GitHub Actions, напишем для этого workflow - и др. Исходный код проекта (версия кода с зафиксированной версией на момент выхода гайда): github.com/GolangLessons/sso/tree...
Кто такой системный архитектор? / GoGetPodcast №11
zhlédnutí 3,5KPřed 8 měsíci
Вместе с опытным системным архитектором из Lamoda Tech Алексеем Скоробогатым обсуждаем - кто такой системный архитектор, чем он занимается, зачем он нужен, как дорасти до этой позиции, и стоит ли. Состав: - Николай Тузов - Алексей Скоробогаый - системный архитектор в Lamoda Tech Мой Телеграм-Канал с анонсами подкастов, роликов и др.: t.me/ntuzov Наш чат - Gopher Club: t.me/ RfalcB42UspmMDdi Все...
Go v1.21 - Обсуждаем важные изменения | GoGetPodcast №10
zhlédnutí 11KPřed 9 měsíci
Новый релиз выдался очень интересным, добавился ряд крутых фич. Подробно обсуждаем - что добавилось, зачем оно нужно, как с этим работать и др. Состав: - Николай Тузов - Глеб Яльчик - тех. директор компании Gaijin - Дмтрий Матрёничев - Talos OS Developer, ведёт отличный ТГ-канал по Go: t.me/go_update 👾 Мой Телеграм-Канал с анонсами подкастов, роликов и др.: t.me/ntuzov 🗣️ Наш чат - Gopher Club:...
Пишем REST API сервис на Go - УЛЬТИМАТИВНЫЙ гайд
zhlédnutí 95KPřed 10 měsíci
Пишем полноценный REST API сервис URL Shortener - это будет не игрушечный проект, а полностью готовый к использованию: - выберем для него актуальный http-роутер: go-chi/chi - Позаботимся о логах: slog - Напишем тесты - unit-тесты, тесты хэндлеров и функциональные - Настроим автоматический деплой через GitHub Actions, напишем для этого workflow - и др. Облачный сервер, который я использовал: slc...
Скорость разработки и цена ошибки разработчика / GoGetPodcast №9
zhlédnutí 6KPřed rokem
Обсуждаем скорость работы разработчика, цену и вероятность ошибок во время разработки и др. Состав: - Николай Тузов - Глеб Яльчик - тех. директор компании Gaijin - Даниил Подольский - Microavia.com Тайминги: 0:00 Вступление и представление гостей 1:35 Оговорки касательно темы обсуждения 2:24 Даниил про скорость разработки 6:55 Проработка задач 8:58 Быстрое решение задач через "Плана Б" 11:16 Пр...
Тайные знания о GoLang, которые от вас скрывали / 1 апреля
zhlédnutí 10KPřed rokem
Не воспринимайте ролик всерьез, это шутка к 1-му арпеля 😊 Подробно и с примерами объсняю, почему нельзя использовать интерфейсы в Go, почему не нужно писать тесты и т.п. 👾 t.me/ntuzov - мой канал в Telegram-канал - новости, анонсы всех наших активностей и просто интересные мысли 👀 GoLang Digest: t.me/golang_digest - мои регулярные подборки интересных материалов по Go. 🗣️ Чат в Telegram: t.me/ z...
Генерация и использование моков в Go / Mockery
zhlédnutí 15KPřed rokem
В этом видео разберемся с моками в Go: что такое мок, как генерировать моки с помощью Mockery, как правильно использовать сгенерированные моки в тестах? Документация по Mockery: vektra.github.io/mockery/ 👾 t.me/ntuzov - мой канал в Telegram-канал - новости, анонсы всех наших активностей и просто интересные мысли 👀 GoLang Digest: t.me/golang_digest - мои регулярные подборки интересных материалов...
Pet-проекты для разработчика | GoGetPodcast №8
zhlédnutí 7KPřed rokem
Pet-проекты для разработчика | GoGetPodcast №8
Почему интерфейсы лучше размещать в месте использования - GoLang best practices
zhlédnutí 23KPřed rokem
Почему интерфейсы лучше размещать в месте использования - GoLang best practices
Как развиваться GoLang разработчику? | GoGetPodcast №7
zhlédnutí 19KPřed rokem
Как развиваться GoLang разработчику? | GoGetPodcast №7
Монорепозиторий VS Мультирепозиторий | GoGetPodcast №6
zhlédnutí 4,5KPřed rokem
Монорепозиторий VS Мультирепозиторий | GoGetPodcast №6
Чистый код в Go - правила хорошего тона для разработчика | GoGetPodcast №5
zhlédnutí 13KPřed rokem
Чистый код в Go - правила хорошего тона для разработчика | GoGetPodcast №5
Собеседование Go-разработчика глазами нанимателя | GoGetPodcast №4
zhlédnutí 31KPřed rokem
Собеседование Go-разработчика глазами нанимателя | GoGetPodcast №4
Как на самом деле устроены каналы в Golang? | Golang channels internals
zhlédnutí 49KPřed rokem
Как на самом деле устроены каналы в Golang? | Golang channels internals
SQLite в Golang - как использовать, на примере Telegram-бота
zhlédnutí 11KPřed rokem
SQLite в Golang - как использовать, на примере Telegram-бота
Как на самом деле устроен тип Map в Golang? | Golang под капотом
zhlédnutí 62KPřed rokem
Как на самом деле устроен тип Map в Golang? | Golang под капотом
Архиватор на Go | Урок #9 - Сжимаем файлы алгоритмом Шеннона-Фано
zhlédnutí 1,8KPřed rokem
Архиватор на Go | Урок #9 - Сжимаем файлы алгоритмом Шеннона-Фано
Архиватор на Go | Урок #8: Алгоритм Шеннона-Фано - реализация
zhlédnutí 1,8KPřed 2 lety
Архиватор на Go | Урок #8: Алгоритм Шеннона-Фано - реализация
Архиватор на Go | Урок #7: Алгоритм Шеннона-Фано - теория
zhlédnutí 1,4KPřed 2 lety
Архиватор на Go | Урок #7: Алгоритм Шеннона-Фано - теория
Архиватор на Go | Урок #6: Рефакторинг
zhlédnutí 1,4KPřed 2 lety
Архиватор на Go | Урок #6: Рефакторинг
GoLang Slice в деталях, простым языком
zhlédnutí 70KPřed 2 lety
GoLang Slice в деталях, простым языком
Пишем полезного Telegram бота на Golang | Урок #7 - Тестируем бота
zhlédnutí 8KPřed 2 lety
Пишем полезного Telegram бота на Golang | Урок #7 - Тестируем бота
Пишем полезного Telegram бота на Golang | Урок #6 - Consumer и финал разработки
zhlédnutí 6KPřed 2 lety
Пишем полезного Telegram бота на Golang | Урок #6 - Consumer и финал разработки
Пишем полезного Telegram бота на Golang | Урок #5 - пишем EventProcessor
zhlédnutí 10KPřed 2 lety
Пишем полезного Telegram бота на Golang | Урок #5 - пишем EventProcessor
Пишем полезного Telegram бота на Golang | Урок #4 - EventProcessor, Storage
zhlédnutí 12KPřed 2 lety
Пишем полезного Telegram бота на Golang | Урок #4 - EventProcessor, Storage
Господи, Николай, это невероятная работа - спасибо вам огромное за полный обзор ВСЕГО. Я из этого видео очень многому научился и узнал разные практики, например с логгированием, архитектурой проекта, и всякие штуки по типу MustRun. Думаю такие мелочи помогли мне пройти тестовое задание! Очень приятно смотреть такое. Не останавливайтесь!
Слабый кандидат для синьора
Меланхоличненько получилось
2:00:10 - насколько правильно передавать объект storage в хендлер роута? Не будет ли лучше это делать внутри хендлера (там где мы работаем с базой непосредственно)?
Ох, знаю я Виталия и даже его собеседовал в нашу компанию. Тех. интервью прошёл без вопросов, а вот софт скиллы завалил...
Получается если алоцировать Мапу с длинной равной 2 у нас в структуре мапы будет один бакет?
Подскажите пожалуйста, почему в каждом методе Storage , вы пересоздаете подготовленные выражения (stmt) при каждом вызове метода, а не ,например создаете специальный метод в котором эти выражения будут подготавливаться и уже потом сразу использоваться в методах?
балин 😁 ... как жить теперь, повёлся ))
28:35 Николай: мы можем указать размер мапы, таким образом, ЭВАКУАЦИИ ДАННЫХ НЕ ПРОИЗОЙДЕТ 29:13 Также Николай: мы не можем взять указатель, потому что в какой-то момент ПРОИЗОЙДЕТ ЭВАКУАЦИЯ ДАННЫХ 😂😂
Очевидно, что эвакуация не произойдёт, если мы добавим ровно столко элементов, сколько запланировали, не больше. Но компилятор наши намерения не знает, эвакуация всегда должна быть возможна, поэтому указатель взять нельзя.
@@nikolay_tuzov да, я это понимаю, но неужели компилятор и рантайм го настолько глупый? условно, там же есть оптимизации, когда слайс растет х2, потом х1.25, неужели с эвакуацией мапы нет ничего такого?
Например, для мапы с постоянным размером отдельный тип const size map под капотом, который позволяет брать указатели Как для массива есть тип отдельный, а для непостоянного слайса другой тип (array с заданным размером и slice - разные типы в го)
А про выравнивание типов нет видео еще? Было бы интересно посмотреть
Антоха МС решил не останавливаться на построении муз карьере и решил строить карьеру в IT на гошке. Лайк этому трудяге
спасибо за полезные видео, тот случай когда хочется сделать замедление скорости видео, так как количество полезной информации не удается воспринять за один присест)
то чувство, когда помимо знаний и правильного решения задач тебе нужно ещё и думать вслух так, чтобы нравилось интервьюверу, и у него возникла искра желания тебя взять. После такого, я думаю, что человека с 10+ годами опыта должен интервьюировать человек с соизмеримым опытом, желательно еще большим. Потому что вчерашние студенты просто априори на другой волне всегда будут находиться с опытными людьми.
Спасибо большое за видео, это лучшие видео по устройству го что я видел 👍🏻👍🏻👍🏻👍🏻👍🏻
Лайк поставил. Интересно. GO!!!
Ждем обещанного продолжения по copilot!)
В чем смысл использовать файл конфига? Почему нельзя ограничится env + дефолтные значения в env-default. Выглядит как лишний слой.
Вот почему так? Году в 2005 я выучил например php. Просто прочитал что такое синтаксис и какой он у php, полистал справочник функций php. Запомнил какие функции есть в принципе. С go же прочитал справочник из десятка страниц, всё, документации нет. А тут херакс! В примерах всплывает какой то "стандартный пакет flug"! Гдееееее? Где в доке по go перечень этих "стандартных пакетов" и их функции (методов)?
было бы круто понять как ты на второй минуте создал функцию сочетанием клавиш и что это за среда, от getbrains? А так я почти понимаю и пишу за тобой)
Очень интересно, но скорость очень быстрая , для новичка трудно не потерять мысль повествования
Про тесты огнище)))
Очень круто, спасибо! Только не совсем понятно, как это делать, когда я, например пишу grpc сервис, ведь там сигнатуры функции уже фиксированы
Super!!!
что за высер...
Ахахахаха.... я поначалу повелся :-)))) только когда Колян сказал, что нахер импорты - я напрягся, что что то тут не так :-)))))
Однозначно лайк!жаль что не все темы по базовому уровню. Знаю что у разработчиков как всегда нет времени,но если вы вдруг запишите курс,Вселенная вас отблагодарит
Подсобите кто сможет, сделал 1:1 но падает на этапе деплоя в VM, говорит неправильный ключ
Когда будут новые серии подкаста?)
Ну мужиик 👍!! Спасибо огромное за видео!
Поцаны на ларке все это за 15 минут сделают Когда уже фреймворк будет нормальный на гошке? Был бы опыт побольше, сам бы написал уже
Лучшее видео про map! Спасибо)
большое спасибо за столь подробные уроки!
добрый день, для того, чтобы сообщения обрабатывались параллельно, метод должен выглядеть следующим образом? func (c *Consumer) handleEvents(events []events.Event) error { var wg sync.WaitGroup for _, event := range events { wg.Add(1) go func() { defer wg.Done() log.Printf("got new event %s", event.Text) if err := c.processor.Process(event); err != nil { log.Printf("can't hadle event %s", err.Error()) } }() } wg.Wait() return nil }
Че то какой то стремный язык, почему нельзя было сделать как в других нормальных языках.
Интересное интервью, хотя я не GO-разработчик, ничего не понял по технической части, но интересно было с точки зрения психологии. Антон прикольный, но хотелось бы видеть больше серьезности и спокойствия, тут как то сильно в защиту ушел, хотя понятно, что психологическая нагрузка большая) Ну т.е. от синьора ждешь уверенности, а тут часто попытка обесценить суть вопросов и скрыться за шутками и личным обаянием. Такую же проблему у себя фиксировал какое то время, но в какой то момент понял, что нужен не хороший парень, а профессиональный, хотя при этом я уверен, что Антон отличный специалист и в реальной жизни выполняет задачи максимально эффективно, вопрос только в подаче самого себя. Спасибо!
Видео конечно полезное, но язык (go) юмористический, смотрю просто чтобы поржать
20:23 - показалось? 😂
спасибо! кстати, тУзов или тузОв?)
вообще суперский "видекурс", было бы славно посмотреть еще что-нибудь подобное. Совсем начинающим самое то)
а в чем принципиальное отличие этих двух строк? defer func() { _ = f.Close() }() defer f.Close()
в первом случае мы явно игнорируем ошибку возвращаемую методом Close?
Да, о МОК очень хотелось бы узнать! Запиши видео, пожалуйста)
Уже давно записал, ищи на канале)
@@nikolay_tuzov Внимание автора к аудитории очень приятно) Спасибо, что ответил! Даже спустя год от публикации видео. Хочу сказать, что у тебя очень понятные, классные видео, огромное спасибо за твой труд! Ты очень помогаешь новичкам, твои "ультимативные" видео пересылаем друг другу, как золотой стандарт исчерпывающей информации)) Большое спасибо!
28:05 или не быть Даниилом и привести слайс к указателю на массив, если у нас 1.17+ либо сразу слайс к массиву, если у нас 1.20+. Эффект тот же, что и от цикла: в первом случае мы получаем указатель и при разыменовывании указателя мы получим копию массива, во втором мы сразу получаем копию массива
Человек перешел на го но не знает зачем)))
Какой-то не серьезный кандидат, все время ищет оправдания.
Отличное видео, но я так и не понял 1:43:30 почему надо писать tc := tc?
на собеседовании в yandex тоже интересно находят у тебя в коде ошибку и тыкают, находишь ты тут же у того кто тыкает - на этом собсес. заканчивается, спасибо идете на ***
Запрос на следующие уроки: - Как сделать асинхронную работу (пусть запускается через API вызов) в кластере, чтоб она 1) по какому-то ключу была только одна во всем кластере и 2) востанавливалась после падения сервера (можно с использованием ZooKepera или etcd) - Реал лайф пример работы с Dragonboat (RAFT либа).
Писать тесты самому себе - самообман. Тесты должны выявлять проблемы, которые не предусмотрел разработчик. Сам себя он проверить не сможет по определению. Да, иметь тесты удобно для запуска кода. Да, некое подобие документации. Но это не проверка на корректность работы. А именно этот смысл обычно подразумевают под термином ТЕСТ.
Ещё как проверка на корректную работу. При разработке и дальнейшей поддержке вся кодовая база может по 100500 раз меняться, а тесты помогают выявлять баги / неожиданные поведения в результате этих изменений ещё до запуска программы, что крайне важно
Спасибо за видео! Насчет функции bestDividerPosition(). Там в цикле написано "left += codes[0].Quantity", что кажется не совсем верно. Вместо этого должно быть написано "left += codes[i].Quantity"
Не совсем понял как мокери выбирает папку в которой генерировать код моков. И что будет если интерфейс лежит не вместе где используется, а в другом пакете