home.social

#goroutine — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #goroutine, aggregated by home.social.

  1. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  2. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  3. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  4. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  5. Почему Go-сервисы начинают тормозить без ошибок (и при чём тут goroutines). Часть 1

    Часто про Go говорят: «это язык, где конкурентность почти бесплатная» . И знаете что? Это правда. Почти. Но «почти» — это самое опасное во всей истории, так как либо ты управляешь системой, либо она управляет тобой руками runtime'а. В трёх статьях я разберу путь, через который проходит почти каждый Go-разработчик от наивного «я добавил go — получил параллельность», до взрослого «я проектирую concurrency-систему с понятными границами».

    habr.com/ru/articles/1028264/

    #изучение_языков #go #golang #goroutine #goroutines #программирование #производительность #мониторинг #системное_программирование #архитектура

  6. Почему Go-сервисы начинают тормозить без ошибок (и при чём тут goroutines). Часть 1

    Часто про Go говорят: «это язык, где конкурентность почти бесплатная» . И знаете что? Это правда. Почти. Но «почти» — это самое опасное во всей истории, так как либо ты управляешь системой, либо она управляет тобой руками runtime'а. В трёх статьях я разберу путь, через который проходит почти каждый Go-разработчик от наивного «я добавил go — получил параллельность», до взрослого «я проектирую concurrency-систему с понятными границами».

    habr.com/ru/articles/1028264/

    #изучение_языков #go #golang #goroutine #goroutines #программирование #производительность #мониторинг #системное_программирование #архитектура

  7. Почему Go-сервисы начинают тормозить без ошибок (и при чём тут goroutines). Часть 1

    Часто про Go говорят: «это язык, где конкурентность почти бесплатная» . И знаете что? Это правда. Почти. Но «почти» — это самое опасное во всей истории, так как либо ты управляешь системой, либо она управляет тобой руками runtime'а. В трёх статьях я разберу путь, через который проходит почти каждый Go-разработчик от наивного «я добавил go — получил параллельность», до взрослого «я проектирую concurrency-систему с понятными границами».

    habr.com/ru/articles/1028264/

    #изучение_языков #go #golang #goroutine #goroutines #программирование #производительность #мониторинг #системное_программирование #архитектура

  8. Почему Go-сервисы начинают тормозить без ошибок (и при чём тут goroutines). Часть 1

    Часто про Go говорят: «это язык, где конкурентность почти бесплатная» . И знаете что? Это правда. Почти. Но «почти» — это самое опасное во всей истории, так как либо ты управляешь системой, либо она управляет тобой руками runtime'а. В трёх статьях я разберу путь, через который проходит почти каждый Go-разработчик от наивного «я добавил go — получил параллельность», до взрослого «я проектирую concurrency-систему с понятными границами».

    habr.com/ru/articles/1028264/

    #изучение_языков #go #golang #goroutine #goroutines #программирование #производительность #мониторинг #системное_программирование #архитектура

  9. [Перевод] Планировщик Go

    Эта статья посвящена языку программирования Go 1.24 , работающему на Linux на архитектуре ARM . Она может не охватывать специфические для других операционных систем (ОС) или аппаратных архитектур детали. В этой статье подробно рассматриваются следующие вопросы: Компиляция и среда выполнения Go Примитивный планировщик Улучшение планировщика Модель GMP Начальная загрузка программы Создание горутины Цикл планирования Поиск готовой к выполнения горутины Вытеснение горутин Обработка системных вызовов Сетевой и файловый ввод-вывод Работа netpoll Сборщик мусора Общие функции API среды выполнения Go

    habr.com/ru/companies/timeweb/

    #go #golang #scheduler #scheduling #schedule_loop #планировщик #планирование #цикл_планирования #timeweb_статьи_перевод #goroutine

  10. [Перевод] Планировщик Go

    Эта статья посвящена языку программирования Go 1.24 , работающему на Linux на архитектуре ARM . Она может не охватывать специфические для других операционных систем (ОС) или аппаратных архитектур детали. В этой статье подробно рассматриваются следующие вопросы: Компиляция и среда выполнения Go Примитивный планировщик Улучшение планировщика Модель GMP Начальная загрузка программы Создание горутины Цикл планирования Поиск готовой к выполнения горутины Вытеснение горутин Обработка системных вызовов Сетевой и файловый ввод-вывод Работа netpoll Сборщик мусора Общие функции API среды выполнения Go

    habr.com/ru/companies/timeweb/

    #go #golang #scheduler #scheduling #schedule_loop #планировщик #планирование #цикл_планирования #timeweb_статьи_перевод #goroutine

  11. [Перевод] Планировщик Go

    Эта статья посвящена языку программирования Go 1.24 , работающему на Linux на архитектуре ARM . Она может не охватывать специфические для других операционных систем (ОС) или аппаратных архитектур детали. В этой статье подробно рассматриваются следующие вопросы: Компиляция и среда выполнения Go Примитивный планировщик Улучшение планировщика Модель GMP Начальная загрузка программы Создание горутины Цикл планирования Поиск готовой к выполнения горутины Вытеснение горутин Обработка системных вызовов Сетевой и файловый ввод-вывод Работа netpoll Сборщик мусора Общие функции API среды выполнения Go

    habr.com/ru/companies/timeweb/

    #go #golang #scheduler #scheduling #schedule_loop #планировщик #планирование #цикл_планирования #timeweb_статьи_перевод #goroutine

  12. [Перевод] Планировщик Go

    Эта статья посвящена языку программирования Go 1.24 , работающему на Linux на архитектуре ARM . Она может не охватывать специфические для других операционных систем (ОС) или аппаратных архитектур детали. В этой статье подробно рассматриваются следующие вопросы: Компиляция и среда выполнения Go Примитивный планировщик Улучшение планировщика Модель GMP Начальная загрузка программы Создание горутины Цикл планирования Поиск готовой к выполнения горутины Вытеснение горутин Обработка системных вызовов Сетевой и файловый ввод-вывод Работа netpoll Сборщик мусора Общие функции API среды выполнения Go

    habr.com/ru/companies/timeweb/

    #go #golang #scheduler #scheduling #schedule_loop #планировщик #планирование #цикл_планирования #timeweb_статьи_перевод #goroutine

  13. За кулисами асинхронности: корутины, горутины и правда между ними

    Асинхронность — слово, от которого у разработчиков дергается глаз и теплеет сердце. Корутины, горутины, event loop, трэдпулы — за этими терминами скрывается целая философия, меняющая взгляд на то, как писать высоконагруженные системы. Привет, Хабр! Меня зовут Дмитрий Буров и я Golang-разработчик, а также лидер Go-сообщества в Lamoda Tech. В IT свитчнулся из военного дирижера. В коммерческой разработке — более 10 лет, начинал как фуллстек-разработчик на стеке JS, PHP, CSS, а последние шесть пишу только на Go. В этой статье по мотивам моего доклада для GolangConf расскажу про асинхронность и её роль в современных высоконагруженных системах. Разберём исторический аспект, концепцию и реализацию корутин в разных языках, эволюцию асинхронных подходов, сравним корутины и горутины, выясним, зачем Go добавил в рантайм пакет coro и чем это может обернуться.

    habr.com/ru/companies/oleg-bun

    #go #golang #coroutine #goroutine #asynchronous #программирование #разработка #golangconf

  14. За кулисами асинхронности: корутины, горутины и правда между ними

    Асинхронность — слово, от которого у разработчиков дергается глаз и теплеет сердце. Корутины, горутины, event loop, трэдпулы — за этими терминами скрывается целая философия, меняющая взгляд на то, как писать высоконагруженные системы. Привет, Хабр! Меня зовут Дмитрий Буров и я Golang-разработчик, а также лидер Go-сообщества в Lamoda Tech. В IT свитчнулся из военного дирижера. В коммерческой разработке — более 10 лет, начинал как фуллстек-разработчик на стеке JS, PHP, CSS, а последние шесть пишу только на Go. В этой статье по мотивам моего доклада для GolangConf расскажу про асинхронность и её роль в современных высоконагруженных системах. Разберём исторический аспект, концепцию и реализацию корутин в разных языках, эволюцию асинхронных подходов, сравним корутины и горутины, выясним, зачем Go добавил в рантайм пакет coro и чем это может обернуться.

    habr.com/ru/companies/oleg-bun

    #go #golang #coroutine #goroutine #asynchronous #программирование #разработка #golangconf

  15. За кулисами асинхронности: корутины, горутины и правда между ними

    Асинхронность — слово, от которого у разработчиков дергается глаз и теплеет сердце. Корутины, горутины, event loop, трэдпулы — за этими терминами скрывается целая философия, меняющая взгляд на то, как писать высоконагруженные системы. Привет, Хабр! Меня зовут Дмитрий Буров и я Golang-разработчик, а также лидер Go-сообщества в Lamoda Tech. В IT свитчнулся из военного дирижера. В коммерческой разработке — более 10 лет, начинал как фуллстек-разработчик на стеке JS, PHP, CSS, а последние шесть пишу только на Go. В этой статье по мотивам моего доклада для GolangConf расскажу про асинхронность и её роль в современных высоконагруженных системах. Разберём исторический аспект, концепцию и реализацию корутин в разных языках, эволюцию асинхронных подходов, сравним корутины и горутины, выясним, зачем Go добавил в рантайм пакет coro и чем это может обернуться.

    habr.com/ru/companies/oleg-bun

    #go #golang #coroutine #goroutine #asynchronous #программирование #разработка #golangconf

  16. За кулисами асинхронности: корутины, горутины и правда между ними

    Асинхронность — слово, от которого у разработчиков дергается глаз и теплеет сердце. Корутины, горутины, event loop, трэдпулы — за этими терминами скрывается целая философия, меняющая взгляд на то, как писать высоконагруженные системы. Привет, Хабр! Меня зовут Дмитрий Буров и я Golang-разработчик, а также лидер Go-сообщества в Lamoda Tech. В IT свитчнулся из военного дирижера. В коммерческой разработке — более 10 лет, начинал как фуллстек-разработчик на стеке JS, PHP, CSS, а последние шесть пишу только на Go. В этой статье по мотивам моего доклада для GolangConf расскажу про асинхронность и её роль в современных высоконагруженных системах. Разберём исторический аспект, концепцию и реализацию корутин в разных языках, эволюцию асинхронных подходов, сравним корутины и горутины, выясним, зачем Go добавил в рантайм пакет coro и чем это может обернуться.

    habr.com/ru/companies/oleg-bun

    #go #golang #coroutine #goroutine #asynchronous #программирование #разработка #golangconf

  17. Потоки, горутины, синхронизация и мьютексы в Go

    Go (Golang) создан для эффективной параллельной и конкурентной работы. Его killer feature — легковесные потоки выполнения, называемые горутины (goroutines), и мощные средства синхронизации. Приглашаю разобраться подробно.

    habr.com/ru/articles/933464/

    #go #golang #goroutine #mutex

  18. Автоматизация контента: как я сделал умного Tg-бота для публикации видео из VK (очередь, дедупликация, NutsDB, yt-dlp)

    Здравствуйте, коллеги! Хочу поделиться опытом проектирования и реализации production-ready Telegram-бота, который автоматически собирает и публикует свежий видеоконтент из паблика ВКонтакте — и делает это без дублей, с гарантией доставки и мемными подписями на базе OpenAI . В статье я покажу архитектуру, приведу примеры кода и расскажу о фишках, таких как очередь ссылок на видео (NutsDB), проверка на уникальность (deduplication), скачивание через yt-dlp и интеграция с OpenAI для генерации описаний.

    habr.com/ru/articles/918186/

    #Telegram_Bot #vk_api #go_golang #ytdlp #автоматизация #NutsDB #OpenAI_API #Генерация_мемов #Goroutine #Docker

  19. Автоматизация контента: как я сделал умного Tg-бота для публикации видео из VK (очередь, дедупликация, NutsDB, yt-dlp)

    Здравствуйте, коллеги! Хочу поделиться опытом проектирования и реализации production-ready Telegram-бота, который автоматически собирает и публикует свежий видеоконтент из паблика ВКонтакте — и делает это без дублей, с гарантией доставки и мемными подписями на базе OpenAI . В статье я покажу архитектуру, приведу примеры кода и расскажу о фишках, таких как очередь ссылок на видео (NutsDB), проверка на уникальность (deduplication), скачивание через yt-dlp и интеграция с OpenAI для генерации описаний.

    habr.com/ru/articles/918186/

    #Telegram_Bot #vk_api #go_golang #ytdlp #автоматизация #NutsDB #OpenAI_API #Генерация_мемов #Goroutine #Docker

  20. Автоматизация контента: как я сделал умного Tg-бота для публикации видео из VK (очередь, дедупликация, NutsDB, yt-dlp)

    Здравствуйте, коллеги! Хочу поделиться опытом проектирования и реализации production-ready Telegram-бота, который автоматически собирает и публикует свежий видеоконтент из паблика ВКонтакте — и делает это без дублей, с гарантией доставки и мемными подписями на базе OpenAI . В статье я покажу архитектуру, приведу примеры кода и расскажу о фишках, таких как очередь ссылок на видео (NutsDB), проверка на уникальность (deduplication), скачивание через yt-dlp и интеграция с OpenAI для генерации описаний.

    habr.com/ru/articles/918186/

    #Telegram_Bot #vk_api #go_golang #ytdlp #автоматизация #NutsDB #OpenAI_API #Генерация_мемов #Goroutine #Docker

  21. Автоматизация контента: как я сделал умного Tg-бота для публикации видео из VK (очередь, дедупликация, NutsDB, yt-dlp)

    Здравствуйте, коллеги! Хочу поделиться опытом проектирования и реализации production-ready Telegram-бота, который автоматически собирает и публикует свежий видеоконтент из паблика ВКонтакте — и делает это без дублей, с гарантией доставки и мемными подписями на базе OpenAI . В статье я покажу архитектуру, приведу примеры кода и расскажу о фишках, таких как очередь ссылок на видео (NutsDB), проверка на уникальность (deduplication), скачивание через yt-dlp и интеграция с OpenAI для генерации описаний.

    habr.com/ru/articles/918186/

    #Telegram_Bot #vk_api #go_golang #ytdlp #автоматизация #NutsDB #OpenAI_API #Генерация_мемов #Goroutine #Docker

  22. Секреты дедлоков

    Как-то раз я допустил в своем коде дедлок и пока выкатывал пул реквест с его фиксом думал “ах как бы было хорошо, если дедлоки определялись на этапе компиляции”. Я решил немного разобраться в этом вопросе и вот что выяснил… Узнать больше

    habr.com/ru/companies/ozonbank

    #go #goroutine #goroutines #panic #deadlock #deadlocks #timer #дедлок #горутина #горутины

  23. Секреты дедлоков

    Как-то раз я допустил в своем коде дедлок и пока выкатывал пул реквест с его фиксом думал “ах как бы было хорошо, если дедлоки определялись на этапе компиляции”. Я решил немного разобраться в этом вопросе и вот что выяснил… Узнать больше

    habr.com/ru/companies/ozonbank

    #go #goroutine #goroutines #panic #deadlock #deadlocks #timer #дедлок #горутина #горутины

  24. Секреты дедлоков

    Как-то раз я допустил в своем коде дедлок и пока выкатывал пул реквест с его фиксом думал “ах как бы было хорошо, если дедлоки определялись на этапе компиляции”. Я решил немного разобраться в этом вопросе и вот что выяснил… Узнать больше

    habr.com/ru/companies/ozonbank

    #go #goroutine #goroutines #panic #deadlock #deadlocks #timer #дедлок #горутина #горутины

  25. Секреты дедлоков

    Как-то раз я допустил в своем коде дедлок и пока выкатывал пул реквест с его фиксом думал “ах как бы было хорошо, если дедлоки определялись на этапе компиляции”. Я решил немного разобраться в этом вопросе и вот что выяснил… Узнать больше

    habr.com/ru/companies/ozonbank

    #go #goroutine #goroutines #panic #deadlock #deadlocks #timer #дедлок #горутина #горутины

  26. Разбираем конкурентность в Go: книги, блоги, выступления

    Особенность Go — удобный механизм конкурентности. Создавать конкурентные задачи в парадигме языка можно буквально «бесплатно» и предельно просто: достаточно написать ключевое слово go перед вызовом функции — и она начнет выполняться в отдельном потоке. Я Владислав Белогрудов, эксперт по разработке ПО в YADRO. В свое время изучал различные источники и лучшие практики в поиске эффективных способов организации параллельных процессов в Go. Делюсь ими с вами. Пополнить библиотеку

    habr.com/ru/companies/yadro/ar

    #golang #go #goroutine #concurrency_patterns #functional_programming #channel

  27. Разбираем конкурентность в Go: книги, блоги, выступления

    Особенность Go — удобный механизм конкурентности. Создавать конкурентные задачи в парадигме языка можно буквально «бесплатно» и предельно просто: достаточно написать ключевое слово go перед вызовом функции — и она начнет выполняться в отдельном потоке. Я Владислав Белогрудов, эксперт по разработке ПО в YADRO. В свое время изучал различные источники и лучшие практики в поиске эффективных способов организации параллельных процессов в Go. Делюсь ими с вами. Пополнить библиотеку

    habr.com/ru/companies/yadro/ar

    #golang #go #goroutine #concurrency_patterns #functional_programming #channel

  28. Как рождаются, живут и умирают горутины

    Вы когда-нибудь, глядя на горутину, думали, что у неё под капотом? Я вот решил посмотреть. И сегодня расскажу о том, как рантайм Go создаёт и управляет горутинами, о статусах, которые у них есть, и некоторых хитростях, к которым прибегают создатели языка.

    habr.com/ru/companies/ozonbank

    #go #runtime #garbage_collector #goroutine #internal #golang #source_code

  29. The WTF moment when you realise that #PHP with Fiber provides a kind of "goroutine". It is based on an event loop and can be used like a #goroutine thanks to the work of Frode Børli and his project phasync... including channels... but still within a single thread, too bad 🤷

    I would still prefer #golang 💙 But hey! Nice work PHP

  30. So I've been learning some basics of #golang since my team has started building most our services with that language. Got to the section on #go concurrency and was ready to strap in and learn all about thread pools, etc. Come to find out simply putting the word `go` in front of a function will create a #goroutine that will then run concurrently. What!?! Mind blown. 💥