⚙️ Мьютекс - примитив синхронизации, обеспечивающий взаимное исключение исполнения критических участков кода. Наверное, с ним сталкивались многие при программировании параллельных / конкурентных программ с использованием абсолютно разных языков программирования, но, скорее всего, не все задумывались - как этот примитив синхронизации устроен внутри и как его можно реализовать самостоятельно…
📅 31 августа в 18:00 проведу бесплатный открытый урок по внутреннему устройству мьютексов на примере языка программирования Go (урок будет актуален и для других языков программирования).
📌 На открытом уроке узнаем, что такое мьютексы и зачем они нужны, затем напишем свои собственные мьютексы несколькими способами, а также посмотрим на устройство мьютексов ядра Linux и рантайма Go!
Ссылка для регистрации
📅 31 августа в 18:00 проведу бесплатный открытый урок по внутреннему устройству мьютексов на примере языка программирования Go (урок будет актуален и для других языков программирования).
📌 На открытом уроке узнаем, что такое мьютексы и зачем они нужны, затем напишем свои собственные мьютексы несколькими способами, а также посмотрим на устройство мьютексов ядра Linux и рантайма Go!
Ссылка для регистрации
🔥26👍10❤4🥰1💯1
📹 Секреты внутреннего устройства мьютексов в рантайме Go и ядре Linux
Таймкоды:
00:00 - Введение
00:48 - Зачем нужны мьютексы
03:47 - Использование мьютексов
07:30 - Блокировка горутин
08:48 - Пишем свои мьютексы
10:00 - Неправильная реализация мьютекса №1
15:17 - Неправильная реализация мьютекса №2
17:56 - Реализация spin lock
19:20 - Барьеры памяти
21:26 - Усовершенствование spin lock
26:18 - Реализация ticket lock
29:13 - Мьютекс Петерсона
34:49 - Мьютекс ядра Linux
38:08 - Мьютекс рантайма Go
45:48 - Реализация разделяемого (shared / rw) мьютекса
50:10 - Курс по Concurrency в Go
◾️Смотреть на YouTube
◾️Смотреть в VK Видео
◾️Смотреть в Дзен
◾️Смотреть в Rutube
Таймкоды:
00:00 - Введение
00:48 - Зачем нужны мьютексы
03:47 - Использование мьютексов
07:30 - Блокировка горутин
08:48 - Пишем свои мьютексы
10:00 - Неправильная реализация мьютекса №1
15:17 - Неправильная реализация мьютекса №2
17:56 - Реализация spin lock
19:20 - Барьеры памяти
21:26 - Усовершенствование spin lock
26:18 - Реализация ticket lock
29:13 - Мьютекс Петерсона
34:49 - Мьютекс ядра Linux
38:08 - Мьютекс рантайма Go
45:48 - Реализация разделяемого (shared / rw) мьютекса
50:10 - Курс по Concurrency в Go
◾️Смотреть на YouTube
◾️Смотреть в VK Видео
◾️Смотреть в Дзен
◾️Смотреть в Rutube
🔥37👍9🤣1
🤷🏻♂️ Не знаю, один ли я такой или нет, но для моей продуктивности очень важно то, где я сейчас нахожусь.
Когда летом ездил в Ростов-на-Дону - там абсолютно не мог думать о работе. Только отдых, только развлечения, как будто приехал на дачу. Для того, чтобы что-то поделать по работе иногда приходилось себя заставлять.
После Ростова, когда вернулся в Москву - буквально на следующий день сработал какой-то переключатель и с удовольствием начался привычный мне рабочий ритм. Заставлять работать себя после отдыха не пришлось…
Когда летом ездил в Ростов-на-Дону - там абсолютно не мог думать о работе. Только отдых, только развлечения, как будто приехал на дачу. Для того, чтобы что-то поделать по работе иногда приходилось себя заставлять.
После Ростова, когда вернулся в Москву - буквально на следующий день сработал какой-то переключатель и с удовольствием начался привычный мне рабочий ритм. Заставлять работать себя после отдыха не пришлось…
👍47👏7🔥5❤1🤔1
👨💻 Сегодня освежаю знания на счет персистентных структур данных и переписываю персистентные стек и очередь...
Делюсь заодно очень короткой и неплохой статьей на счет персистентного стека: https://habr.com/ru/articles/113585/
Делюсь заодно очень короткой и неплохой статьей на счет персистентного стека: https://habr.com/ru/articles/113585/
👍17🔥7
📹 150+ айтишников в команде? Как стать руководителем департамента Ozon | Михаил Кабищев
◾️Смотреть в YouTube
◾️Смотреть в VK Видео
◾️Смотреть на Дзен
◾️Смотреть на Rutube
◾️Смотреть в YouTube
◾️Смотреть в VK Видео
◾️Смотреть на Дзен
◾️Смотреть на Rutube
🔥15👍4🤩2🌭1
⚙️ Многие понимают, как устроены массивы и срезы в Go, но:
- не все понимают, где и как они аллоцируются;
- не все понимают, как проаллоцировать срез без инициализации;
- не все понимают, как избегать утечек памяти при работе со срезами;
- не все понимают еще много разных тонкостей и нюансов при работе с массивами и срезами.
📅 7 сентября в 18:00 по МСК проведу бесплатный открытый урок по внутреннему устройству массивов и срезов в Go. Я подготовил более 150 слайдов презентации по этой теме, чтобы вопросы на собеседованиях по этой теме больше вас не ставили в тупик!
📌 Если вы думаете, что это тема простая и вы знаете о ней уже все - уверяю вас, на отрытом уроке вы откроете для себя что-то новое о массивах и срезах!
Ссылка для регистрации
- не все понимают, где и как они аллоцируются;
- не все понимают, как проаллоцировать срез без инициализации;
- не все понимают, как избегать утечек памяти при работе со срезами;
- не все понимают еще много разных тонкостей и нюансов при работе с массивами и срезами.
📅 7 сентября в 18:00 по МСК проведу бесплатный открытый урок по внутреннему устройству массивов и срезов в Go. Я подготовил более 150 слайдов презентации по этой теме, чтобы вопросы на собеседованиях по этой теме больше вас не ставили в тупик!
📌 Если вы думаете, что это тема простая и вы знаете о ней уже все - уверяю вас, на отрытом уроке вы откроете для себя что-то новое о массивах и срезах!
Ссылка для регистрации
🔥24👍8❤3🤩2🥰1💯1
📹 Все о массивах и слайсах в Go в одном видео
Таймкоды:
00:00 - Введение
00:47 - Устройство массивов в Go
01:40 - Работа с массивами в Go
10:00 - Перемещение массива в стеке
11:29 - Итерация по массивам в Go
15:11 - Где аллоцируются массивы в Go
17:22 - Педедача массива в функцию
18:16 - Слайсы в Go
21:34 - Реаллокация слайса в Go
24:45 - Резервирование памяти под слайс
25:44 - Создание слайса без инициализации
27:38 - Модификация строк в Go
28:35 - Приведение слайсов в строки и обратно без копирования
30:13 - Передача слайса в функцию
31:12 - Итерация по слайсам в Go
33:55 - Оптимизация итерации по слайсам в Go
35:42 - Получение слайсов в Go
42:40 - Получение слайса из массива в Go
43:15 - Конвертация слайса в массив в Go
44:15 - Конвертация слайса в указатель на массив в Go
45:02 - Указатель на нулевой массив в Go
46:18 - Удаление из конца слайса в Go
... (еще почти час различных тем по массивам и слайсам)
◾️Смотреть в YouTube
◾️Смотреть в VK Видео
◾️Смотреть в Дзен
◾️Смотреть в Rutube
Таймкоды:
00:00 - Введение
00:47 - Устройство массивов в Go
01:40 - Работа с массивами в Go
10:00 - Перемещение массива в стеке
11:29 - Итерация по массивам в Go
15:11 - Где аллоцируются массивы в Go
17:22 - Педедача массива в функцию
18:16 - Слайсы в Go
21:34 - Реаллокация слайса в Go
24:45 - Резервирование памяти под слайс
25:44 - Создание слайса без инициализации
27:38 - Модификация строк в Go
28:35 - Приведение слайсов в строки и обратно без копирования
30:13 - Передача слайса в функцию
31:12 - Итерация по слайсам в Go
33:55 - Оптимизация итерации по слайсам в Go
35:42 - Получение слайсов в Go
42:40 - Получение слайса из массива в Go
43:15 - Конвертация слайса в массив в Go
44:15 - Конвертация слайса в указатель на массив в Go
45:02 - Указатель на нулевой массив в Go
46:18 - Удаление из конца слайса в Go
... (еще почти час различных тем по массивам и слайсам)
◾️Смотреть в YouTube
◾️Смотреть в VK Видео
◾️Смотреть в Дзен
◾️Смотреть в Rutube
🔥43👍18❤5🤩2💯2⚡1🎉1
💭 Продуктивность != эффективность
Я периодически провожу консультации и сегодня общался с разработчиком, который хотел развиваться дальше в программировании. Он очень много всего делал, был крайне продуктивным, но не эффективным... Потому что то, что он делал - не приносило толком никакого результата! Он делал много всего, но не то, что нужно было ему для текущего развития в программировании.
После встречи я решил порефлексировать над собой - эффективен ли я или просто продуктивен. Мне пришлось взять лист бумаги, выписать то, чем я обычно занимаюсь ежедневно, затем рядом написать свои планы и цели. В итоге, несколько вещей, которыми я занимаюсь регулярно, никак не были связаны с этими планами и целями! Оказалось, что я кое-где я был продуктивен, но не эффективен. Действительно, выполнял некоторые действия регулярно, но наверное зря...
Решил просто поделиться этой ситуацией. Кажется, что иногда очень важно возвращаться через какое-то время к нашим планам, чтобы понять - делаем ли мы то, что нас приближает к ним или просто много учимся/работаем.
Я периодически провожу консультации и сегодня общался с разработчиком, который хотел развиваться дальше в программировании. Он очень много всего делал, был крайне продуктивным, но не эффективным... Потому что то, что он делал - не приносило толком никакого результата! Он делал много всего, но не то, что нужно было ему для текущего развития в программировании.
После встречи я решил порефлексировать над собой - эффективен ли я или просто продуктивен. Мне пришлось взять лист бумаги, выписать то, чем я обычно занимаюсь ежедневно, затем рядом написать свои планы и цели. В итоге, несколько вещей, которыми я занимаюсь регулярно, никак не были связаны с этими планами и целями! Оказалось, что я кое-где я был продуктивен, но не эффективен. Действительно, выполнял некоторые действия регулярно, но наверное зря...
Решил просто поделиться этой ситуацией. Кажется, что иногда очень важно возвращаться через какое-то время к нашим планам, чтобы понять - делаем ли мы то, что нас приближает к ним или просто много учимся/работаем.
👍54🔥10❤3💯2✍1⚡1😱1😍1
🚀 ПАТТЕРНЫ ОТКАЗОУСТОЙЧИВОСТИ МИКРОСЕРВИСОВ НА GO
📆 14 сентября 18:00 по МСК пройдет бесплатный открытый урок по Микросервисам, как в BigTech от Team Lead из Ozon (ex-декан Route 256)!
На открытом уроке:
- научишься разрабатывать политики повторных попыток (retry) и влиять с их помощью на стабильность микросервисов;
- разберешься в рисках, связанных с жесткими таймаутами, и поймешь, как они влияют на выполнение целевых показателей SLO;
- научишься снижать время отклика с помощью hedge-запросов;
- научишься ограничивать число запросов (ratelimit) и предотвращать с помощью этого нагрузки;
- научишься писать circuit breaker, предотвращать с его помощью каскадные отказы и защищать систему от частичных сбоев;
- задашь интересующие вопросы TeamLead'у из Ozon.
Регистрация по ссылке
📆 14 сентября 18:00 по МСК пройдет бесплатный открытый урок по Микросервисам, как в BigTech от Team Lead из Ozon (ex-декан Route 256)!
На открытом уроке:
- научишься разрабатывать политики повторных попыток (retry) и влиять с их помощью на стабильность микросервисов;
- разберешься в рисках, связанных с жесткими таймаутами, и поймешь, как они влияют на выполнение целевых показателей SLO;
- научишься снижать время отклика с помощью hedge-запросов;
- научишься ограничивать число запросов (ratelimit) и предотвращать с помощью этого нагрузки;
- научишься писать circuit breaker, предотвращать с его помощью каскадные отказы и защищать систему от частичных сбоев;
- задашь интересующие вопросы TeamLead'у из Ozon.
Регистрация по ссылке
🔥14👍6❤4⚡1🥰1💯1💘1
📹 Недавно ходил на подкаст к Денису Евтееву, за несколько часов удалось много чего обсудить! Говорили про работу в больших компаниях, карьеру в IT, обучение и личное развитие...
📌 Посмотреть можно по ссылке:
https://youtu.be/UQZ5_iy8v1c
📌 Посмотреть можно по ссылке:
https://youtu.be/UQZ5_iy8v1c
🔥18👍9❤3⚡2🤩1🤡1
📝 Делюсь планами по контенту на моем YouTube канале
◾️в октябре планирую сделать большое видео об аллокаторе Go, как обычно, начиная с основ (алгоритмы распределения памяти, свои аллокаторы, malloc, tcmalloc и вот это вот все) и закачивая тем, как Go аллоцирует память и какие там есть особенности и нюансы.
◾️в декабре-феврале планирую сделать большое видео о сборщике мусора Go, начиная с базы (виды сборщиков мусора, parallel vs concurrent GC, поколения участков памяти и многое другое) и закачивая тем, как устроен GC в Go.
Это, что касается больших видео - потому что для них потребуется много времени для подготовки... Плюс еще будет несколько "небольших" видео о различных темах в программировании!
📌 В комментария можно писать предложения на счет будущих видео, возможно, какие-то из них я запланирую на следующий год!
◾️в октябре планирую сделать большое видео об аллокаторе Go, как обычно, начиная с основ (алгоритмы распределения памяти, свои аллокаторы, malloc, tcmalloc и вот это вот все) и закачивая тем, как Go аллоцирует память и какие там есть особенности и нюансы.
◾️в декабре-феврале планирую сделать большое видео о сборщике мусора Go, начиная с базы (виды сборщиков мусора, parallel vs concurrent GC, поколения участков памяти и многое другое) и закачивая тем, как устроен GC в Go.
Это, что касается больших видео - потому что для них потребуется много времени для подготовки... Плюс еще будет несколько "небольших" видео о различных темах в программировании!
📌 В комментария можно писать предложения на счет будущих видео, возможно, какие-то из них я запланирую на следующий год!
👍52🔥28❤5💯2⚡1🤩1🙏1
📰 Несколько недель назад прокачивал Soft Skills на тренинге у Радислава Гандапаса
Тренинг назывался "Заяви о себе". На нем было много материалов про коммуникации и нетворкинг, а также очень много практики - в общем, для меня было очень полезно!
Кстати, у Радислава в декабре еще будет тренинг "Лидерские стратегии", на который тоже собираюсь сходить (не реклама, а личная рекомендация).
Тренинг назывался "Заяви о себе". На нем было много материалов про коммуникации и нетворкинг, а также очень много практики - в общем, для меня было очень полезно!
Кстати, у Радислава в декабре еще будет тренинг "Лидерские стратегии", на который тоже собираюсь сходить (не реклама, а личная рекомендация).
🤡26🔥24👎15👍9😭9🤔2🤣2😁1💯1
👨💻 Вроде бы дженерики и есть в Go, а вроде бы их и нет...
Когда мне приходится что-то пометапрограммировать на Go (происходит это не часто), я обычно спотыкаюсь об один из этих сценариев... И обычно после этого мне хочется брать в руки С++
Кажется, что дженерики какие-то неполные или недоработанные, но наверное, смысл в этом есть! Иначе можно было писать действительно сложные и трудные штуки на Go, как на С++ (что противоречит концепции Go)
Когда мне приходится что-то пометапрограммировать на Go (происходит это не часто), я обычно спотыкаюсь об один из этих сценариев... И обычно после этого мне хочется брать в руки С++
Кажется, что дженерики какие-то неполные или недоработанные, но наверное, смысл в этом есть! Иначе можно было писать действительно сложные и трудные штуки на Go, как на С++ (что противоречит концепции Go)
😁15👍9🔥5❤2👎1
📰 Прошел study plan по графам на LeetCode
План изучения хорошо построен, постепенно тебя знакомит с графами. Важно сказать, что изучение графов происходит не на примере реализации алгоритмов, а на примере реализации практических задач с использованием этих самых алгоритмов (что интересно, как по мне).
Например, такие практические задачи, как:
- Поиск критических соединений в сети
- Планирование расписания курсов
- Поиск самого дешевого маршрута с пересадками
- Соединение городов дорогами с минимальной стоимостью
- Поиск ближайшего выхода из лабиринта
В общем, рекомендую, сейчас на очереди study plan по динамическому программированию!
План изучения хорошо построен, постепенно тебя знакомит с графами. Важно сказать, что изучение графов происходит не на примере реализации алгоритмов, а на примере реализации практических задач с использованием этих самых алгоритмов (что интересно, как по мне).
Например, такие практические задачи, как:
- Поиск критических соединений в сети
- Планирование расписания курсов
- Поиск самого дешевого маршрута с пересадками
- Соединение городов дорогами с минимальной стоимостью
- Поиск ближайшего выхода из лабиринта
В общем, рекомендую, сейчас на очереди study plan по динамическому программированию!
🔥34👍12👏3🎉2❤1
👨💻 В продолжение к предыдущему посту о дженериках в Go - решил углубиться в них и попробовать повоспроизводить плюсовые паттерны в Go
Не все получается, но например CRTP (Curiously Recurring Template Pattern) в кавычках наколдовать в Go можно, поэтому миксинами в Go можно пользоваться вполне успешно!
Не все получается, но например CRTP (Curiously Recurring Template Pattern) в кавычках наколдовать в Go можно, поэтому миксинами в Go можно пользоваться вполне успешно!
🔥15👍8🤯2🤔1🤝1
Forwarded from KOTELOV
Media is too big
VIEW IN TELEGRAM
Почти год назад к нам на подкаст заглянул Вова Балун. За год он успел стать тимлидом в Яндексе и продолжал развивать собственную школу для айтишников 🔥
Кстати, Вова получил оффер в Яндекс сразу после нашего первого подкаста. Это была одна из его целей, но вскоре понял, что это не то, чего он хотел. Вот и выясним на подкасте, что пошло не так
Обсудили все, что случилось за этот год:
✨ Что случилось в Яндексе и какой вывод сделал после тимлидства
✨ Почему он решил уехать из России и почему вернулся
✨ Как теперь он зарабатывает и почему это не совсем айти
Лампово поговорили об амбициях, ситуации с наймом и жизни айтишника в 2024 году
👀 смотреть https://go.kotelov.com/youtube_balun
👀 смотреть https://go.kotelov.com/vk_balun
📹 смотреть https://go.kotelov.com/rutube_balun
🎙 или слушай на Mave https://go.kotelov.com/mave_balun
Кстати, Вова получил оффер в Яндекс сразу после нашего первого подкаста. Это была одна из его целей, но вскоре понял, что это не то, чего он хотел. Вот и выясним на подкасте, что пошло не так
Обсудили все, что случилось за этот год:
Лампово поговорили об амбициях, ситуации с наймом и жизни айтишника в 2024 году
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍7❤4🤡3❤🔥1🤩1💩1🏆1
📰 GetCourse очень хорош с точки зрения функциональности, но крайне плох с точки зрения дизайна...
Не так давно, мы решили кастомизировать GetCourse под себя, чтобы он был в едином стиле школы - дизайн основных страниц уже утвержден (на картинках GetCourse до и после), сейчас уже идет верстка...
У GetCourse очень много разных ограничений на кастомизации, не все получится сделать так, как хочется. Тем не менее, будет намного лучше, чем стандартный дизайн GetCourse!
Не так давно, мы решили кастомизировать GetCourse под себя, чтобы он был в едином стиле школы - дизайн основных страниц уже утвержден (на картинках GetCourse до и после), сейчас уже идет верстка...
У GetCourse очень много разных ограничений на кастомизации, не все получится сделать так, как хочется. Тем не менее, будет намного лучше, чем стандартный дизайн GetCourse!
🔥23👍7🤩4❤1👏1
💭 Мне бывает иногда очень трудно креативить, например когда пишешь какой-то текст, создаешь презентацию или программируешь решение для нетривиальной задачи. В такие моменты иногда себя сравниваю с писателями или художниками, которым так часто необходима муза…
Чтобы быть в креативном состоянии или поддерживать у себя ту самую музу, я обычно включаю определенную музыку и часто меняю локации. Например, час что-то делаю в одной комнате, затем перехожу в кухню на час, затем обратно, а иногда еще и в соседние кофейни выхожу специально для смены обстановки.
❓Но так или иначе не всегда получается достигать крутого состояния для креативной деятельности, может быть у вас есть какие-нибудь лайфхаки / практики / привычки, которые вы используете для этого?
Чтобы быть в креативном состоянии или поддерживать у себя ту самую музу, я обычно включаю определенную музыку и часто меняю локации. Например, час что-то делаю в одной комнате, затем перехожу в кухню на час, затем обратно, а иногда еще и в соседние кофейни выхожу специально для смены обстановки.
❓Но так или иначе не всегда получается достигать крутого состояния для креативной деятельности, может быть у вас есть какие-нибудь лайфхаки / практики / привычки, которые вы используете для этого?
👍16🔥4👨💻3