Владимир Балун
5.27K subscribers
287 photos
43 videos
311 links
Канал Балун Владимира — C++/Go разработчика из BigTech. Здесь вы найдете глубокие знания и материалы по программированию, личные истории и лайв-контент.

Сотрудничество: @vladimir_balun
Download Telegram
💭 Раньше убеждал себя, что мне не нужно никакое хобби, потому что моя работа - это и есть мое хобби (за исключением спорта только), которым я почти все свободное время только и занимался. Чувствовал в тот момент себя прекрасно и думал - как же классно, что я нашел то, чем мне нравится заниматься…

Тем не менее с осени я решил немного разнообразить свою жизнь! Стал пробовать много разных спортивных и творческих активностей - старался найти еще какое-нибудь хобби. По итогу новое хобби для себя я еще так и не нашел 😅, но зато перепробовал много всего! И когда я все это делал - внезапно осознал, как моя жизнь заиграла абсолютно другими красками!

Когда я жил и убеждал себя, что моя работа - это мое хобби, я не думал о том, что моя жизнь была какой-то серой… Но когда я стал пробовать новые активности и чуть меньше работать, я внезапно осознал, насколько в тот момент моя жизнь была пресной!

📌 По итогу сейчас я работаю немного меньше, жить стало намного интереснее, а работа все еще является моим хобби!
🔥72👍168🎉2🏆2👎1🤩1🍾1💋1
📹 Не так давно записали подкаст с Бондарем Олегом (CPO YDB) о том, как устроена разработка распределенной базы данных YDB в Yandex Cloud

Много всего интересного успели обсудить за 1.5 часа!

Кто интересуется базами данных и распределенными системами - ссылка на подкаст: https://youtu.be/U_MYwv2hRVo
👍16🔥86🤔3
💭 Подарки - это хорошо, но когда дарят книги - это еще лучше!

Прочитал уже почти половину - интересные переплетения целепологания, физиологии и психологии для себя уже подчерпнул! Кто интересуется подобным - рекомендую!
1👍27🔥5❤‍🔥32🏆21🥰1👏1🎉1
📰 Не так давно начался отдельный поток обучения по продвинутому Go только для сотрудников Wildberries!

На этом потоке сейчас примерно 100 разработчиков из Wildberries. Мы немного адаптировали материалы курса, а также сделали редизайн презентаций курса. Это уже не первый раз, когда мы сотрудничаем с Wildberries, например прошлой осенью мы проводили корпоративный поток обучения по System Design!

Мы активно развиваем корпоративное обучение, поэтому если вы хотите отправить ваших сотрудников на обучение в один из открытых потоков курсов, сформировать отдельный поток обучения, состоящий только из ваших сотрудников или попросить работодателя, чтобы он оплатил вам обучение - у нас есть отдельная страница с подробным описанием всего этого...
🔥22👍11🤝4🤔1🏆1
🎬 Внезапно обнаружил, что мой канал на YouTube стремительно приближается к 30.000 подписчиков!

Решил подвести небольшие итоги:
- канал был создан 26 марта 2020
- за все время было выпущено 174 видео
- видео суммарно набрали 2 970 248 просмотров

Цифры, лично для меня, большие и значимые, о них я раньше и не думал. Сейчас даже не знаю, как к ним получилось прийти, но тем не менее, уже написал себе цель добежать до 50.000 подписчиков 😅

Хочу сказать вам большое спасибо, что смотрите мои видео, комментируете их и пишите мне о том, что можно в них улучшать ❤️

Также хочу попросить вас написать в комментариях, какие видео вам нравятся больше всего, каких видео вам не хватает, или что еще хотели бы увидеть у меня на канале…
5🔥74👍189🎉7❤‍🔥41🤩1😎1
Forwarded from balun.courses
◻️ Проверка на Concurrency-чуткость

Многие задачи на Go кажутся простыми… пока не появляются каналы!

Вот кусок кода. Он компилируется. Он запускается.

⁉️Но… что выведет этот код и почему?

package main

import (
"fmt"
"sync"
)

func WaitToClose(lhs, rhs chan struct{}) {
lhsClosed, rhsClosed := false, false
for !lhsClosed || !rhsClosed {
select {
case _, ok := <-lhs:
fmt.Println("lhs", ok)
if !ok {
lhsClosed = true
}
case _, ok := <-rhs:
fmt.Println("rhs", ok)
if !ok {
rhsClosed = true
}
}
}
}

func main() {
lhs := make(chan struct{}, 1)
rhs := make(chan struct{}, 1)

wg := sync.WaitGroup{}
wg.Add(1)

go func() {
defer wg.Done()
WaitToClose(lhs, rhs)
}()

lhs <- struct{}{}
rhs <- struct{}{}

close(lhs)
close(rhs)

wg.Wait()
}

Что происходит в этом коде?
Где тут подвох (если он есть)?

💬Напиши в комментариях, как ты думаешь, что выведется на экран — и почему.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍42
🔥 Первый независимый митап в Ростове-на-Дону по Go

24 мая организовываем с ребятами митап по Go в Ростове на Дону. Выступать будут я, Олег Козырев, Женя Айти Красавчик и Максим Аверин.

📌 На митапе поболтаем за System Design и микросервисы, расскажем, как зарабатывать до $50к в месяц на валютной удаленке, поделимся опытом по перекату в Go из других стеков и языков, пофоткаемся, сгоняем в бар и с кайфом проведем выходной. Всю подробную информацию можно узнать на лединге митапа, а также мы создали отдельный чат, где можно задавать различные вопросы по митапу!

Если вы не из Ростова-на-Дону - приезжайте, в мае там очень круто! Будем рады всех видеть! Добраться до Ростова можно или на поезде или самолетом до Минеральных вод и там уже на ласточке.

P.S. Билет платный, потому что митап некоммерческий, спонсоров нет и не будет. Все средства покроют лишь часть расходов на фуршет, фото/видеосъемку, помещение и другие ништяки.

ОНЛАЙНА И ЗАПИСИ НЕ БУДЕТ
🔥32🤡15💩10🥱6👍43👏1
👨‍💻Кто бы что ни говорил об итераторах в Go, но в некоторых ситуациях код с их использованием выглядит уж очень приятно, например, как на скриншоте выше...

А вы что думаете о них?
🔥48👍124💩4👏3💊2👎1
🚀Opentelemetry: best practices

📆 28 апреля в 19:00 по МСК пройдет бесплатный открытый урок по Observability, как в BigTech!

На открытом уроке:
- узнаешь, как подружить трейсы, метрики и логи, чтобы не гадать, почему всё упало;
- разберешь настройки collector так, чтобы он не сжигал бюджет: рейт-лимитинг, семплирование, фильтрация;
- разберешься с авто и ручной инструментацией кода, чтобы собирать столько данных, сколько нужно, и не тормозить основное приложение;
- посмотришь практическую реализацию теории на Golang и других ЯП;
- разберешь интеграцию OpenTelemetry с Prometheus, Jaeger и Loki;
- узнаешь, что такое vendor-lock и как с этим работать.

Регистрация по ссылке
🔥15👍91
🎓 Вспомнил я как-то свои студенческие годы в Ростовской области и подумал, что как было бы мне круто в тот момент, если бы какой-нибудь разработчик с опытом (особенно из крупной компании) пришел и рассказал что-нибудь интересное или поделился бы советами.

Так и появилась идея приехать в свой родной колледж в городе Азов, чтобы поделиться опытом. В общем, сегодня ходил на первую пару и рассказывал про поиск первой работы в программировании, как эффективнее изучать новые темы в программирование, а также про быстрое развитие карьеры.

Не знаю, поможет ли кому-нибудь та информация или нет, но я старался поделиться тем, чтобы было мне интересно, находясь там в прошлом за партой…
3🔥149👍4514👏11❤‍🔥2🤩1
🏕 Отдыхать ведь тоже нужно!

P.S. майские в Адыгеи
1🔥108👍2717💯3
Как я погружался в Go на курсе "Глубокий Go" Владимира Балуна

Это уже третий курс у Владимира, который я прохожу и о котором рассказываю вам (первый и второй отзыв). Я поступил на курс, потому что хотел разобраться с аллокатором, сборщиком мусора и в целом закрыть пробелы по устройству языка, на котором уже много лет пишу. И как думаете, получилось? 🙂

Во-первых, отмечу проработанную структуру курса: мы начали с самых основ и в целом computer science (я писал вот тут в начале курса), и с основ внутренностей языка Go. Например, разбирали работу строк, слайсов, механизм вызова функций, передачи аргументов, даже залезли в функциональное программирование, разобрали defer, панику и устройство структур. Больше всего мне запомнился урок про функции, потому что я обожаю погружаться именно вот в такие незаметные конструкции: как вызываются функции, как из них возвращаться, как процессор понимает что вызвать дальше, stack pointer, frame pointer, instruction pointer и всё такое.

Здесь же скажу про структуру занятий: они сами по себе тоже построены по принципу "пирамиды", когда сначала разбирается "а как вообще можно", "а какие проблемы у каждого подхода" и "как сделали разработчики го". Очень показательным является занятие про аллокаторы, когда мы сначала разобрали линейный, блочный и стековый алгоритм распределения памяти, затем познакомились с известным malloc, затем поверх него обсудили thread-cached malloc, и только потом разобрали чем примечателен аллокатор в самом Go, который как раз основан на разобранных концепциях.

Во-вторых, я вновь отмечу открытость к вопросам и разбору того, что непонятно. После каждого блока обязательно есть пауза, когда можно сформулировать и задать вопрос, если что-то было непонятно. Если не успеваешь сформулировать или осознать вопрос (я думаю медленно, например), то задашь в перерыве в середине занятия. Или в конце занятия. Или в начале следующего. Или вообще когда угодно, мы бывало возвращались к примерам из прошлых занятий.

И в-третьих, хочу рассказать про плотность информации: всё подаётся мега-подробно, почти на каждое утверждение по примеру с кодом, под разные конструкции языка, вроде defer, panic, interface, error и так далее, есть примеры corner кейсов и популярных ошибок, паттерны (и даже антипаттерны). Буквально каждая тема покрывается от основы до нескольких практических кейсов, у меня 50 страниц в тетрадке уже исписано 😁

А ещё мы даже Concurrency затронули 🙂 Не так глубоко, как на отдельном курсе, конечно, но базу по устройству планировщика, GMP модели, примитивам синхронизации обсудили.

В итоге уже в третий раз испытываю радость от пройденного курса у Владимира, и за последние сумасшедшие полгода я значительно вырос и закрыл огромное количество пробелов благодаря его курсам. И после каждого появляются связанные с этим коммиты: тут выравнивание структурки поправил, тут избавился от false-sharing, убрал лишнее выделение памяти, сделал структуры (или скорее данные) кеш-дружелюбными и так далее.

В прошлый раз меня спрашивали ссылку, поэтому не сочтите за рекламу, но сразу прикреплю её https://balun.courses/courses/deep_go.

Новых открытий вам, славные гошники 🫰
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8👍6🔥62🤔1💩1💘1
💭 Такими отзывами, уж простите, но нельзя не поделиться...

Кстати, для тех, кто интересовался нашими продуктами - сейчас у нас действует акция, когда можно приобрести два курса "Глубокий Go" + "Concurrency в Go" комплектом, при этом "Concurrency в Go" будет стоить на 50% дешевле, подробности по ссылке

И да, учиться у нас можно бесплатно — если проходить обучение за счет вашего работодателя, все подробная информация доступна по ссылке
🔥13👍5❤‍🔥2
⛰️ Походные выходные в Архызе
🔥135👍28🏆93