unique - новый пакет в стандартной библиотеке Go 1.23
https://go.dev/blog/unique
Ещё один интересный пост в официальном блоге авторов Go с подробным объяснением очередной интересной новинки в версии 1.23
Пакет unique упрощает работу с дубликатами. То есть, он позволяет выполнять дедупликацию таким хитрым образом, чтобы все ссылки указывали на единственную, уникальную копию. При этом пакет эффективно управляет этими копиями под капотом.
Возможно, вы уже встречали этот подход под названием Interning.
Автор статьи рассказывает и показывает, как это работает, и почему это полезно.
#go_official #go_1_23
https://go.dev/blog/unique
Ещё один интересный пост в официальном блоге авторов Go с подробным объяснением очередной интересной новинки в версии 1.23
Пакет unique упрощает работу с дубликатами. То есть, он позволяет выполнять дедупликацию таким хитрым образом, чтобы все ссылки указывали на единственную, уникальную копию. При этом пакет эффективно управляет этими копиями под капотом.
Возможно, вы уже встречали этот подход под названием Interning.
Автор статьи рассказывает и показывает, как это работает, и почему это полезно.
#go_official #go_1_23
go.dev
New unique package - The Go Programming Language
New package for interning in Go 1.23.
Go memory ballast: How I learnt to stop worrying and love the heap
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
Очень крутая статья, в которой разработчики Twitch снова борются с Garbage Collector'ом (GC). В статье есть очень крутой ликбез по GC, про некоторые его основы и нюансы.
И всё это закрепляется крутым реальным примером оптимизации, которую можно осознать благодаря понимаю этих самых тонкостей.
Будем честны, далеко не всем это пригодится в реальной работе, т.к. реальная польза будет заметна лишь при большом хайлоаде, но расширять кругозор полезно (а не расширять вредно).
Кроме того, статья поможет разобраться не столько в хайлоаде, сколько во внутреннем устройстве GC, а то ещё более ценно.
Статья написана очень круто — материал довольно сложный, глубокий, но при этом читается довольно легко и интересно.
————
Краткая суть проблемы из статьи: периодически Твич ловит внезапный рост нагрузки. Например, из-за так называемого refresh storm — это когда крупный стример перезапускает стрим, и все его зрители начинают массово обновлять страницу.
Масштабировать такое сложно, т.к. всё происходит слишком быстро, а держать достаточное количество мощностей, работающих постоянно — дорого.
Ребята решили оптимизировать нагрузку на процессор тем, что снизили частоту срабатывания GC. Как именно? Если кратко, то вот так:
Подробное обоснование, объяснение и результаты найдёте в статье🙃
Ну ладно, спойлер, вот результаты:снижение количества срабатываний GC на 99% и снижение нагрузки на CPU на 30%
Вообще, всё это выглядит как грязный хак и костыли, но авторы уже завели proposal, в котором предлагают ввести флаг, позволяющий решить данную проблему легально.
#article #english #highload #garbage_collector
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
Очень крутая статья, в которой разработчики Twitch снова борются с Garbage Collector'ом (GC). В статье есть очень крутой ликбез по GC, про некоторые его основы и нюансы.
И всё это закрепляется крутым реальным примером оптимизации, которую можно осознать благодаря понимаю этих самых тонкостей.
Будем честны, далеко не всем это пригодится в реальной работе, т.к. реальная польза будет заметна лишь при большом хайлоаде, но расширять кругозор полезно (а не расширять вредно).
Кроме того, статья поможет разобраться не столько в хайлоаде, сколько во внутреннем устройстве GC, а то ещё более ценно.
Статья написана очень круто — материал довольно сложный, глубокий, но при этом читается довольно легко и интересно.
————
Краткая суть проблемы из статьи: периодически Твич ловит внезапный рост нагрузки. Например, из-за так называемого refresh storm — это когда крупный стример перезапускает стрим, и все его зрители начинают массово обновлять страницу.
Масштабировать такое сложно, т.к. всё происходит слишком быстро, а держать достаточное количество мощностей, работающих постоянно — дорого.
Ребята решили оптимизировать нагрузку на процессор тем, что снизили частоту срабатывания GC. Как именно? Если кратко, то вот так:
func main() {
// Create a large heap allocation of 10 GiB
ballast := make([]byte, 10<<30)
// Application execution continues
// ...
}
Подробное обоснование, объяснение и результаты найдёте в статье
Ну ладно, спойлер, вот результаты:
Вообще, всё это выглядит как грязный хак и костыли, но авторы уже завели proposal, в котором предлагают ввести флаг, позволяющий решить данную проблему легально.
#article #english #highload #garbage_collector
Please open Telegram to view this post
VIEW IN TELEGRAM
blog.twitch.tv
Go memory ballast: How I learnt to stop worrying and love the heap
I’m a big fan of small code changes that can have large impact. This may seem like an obvious thing to state, but let me explain:
Мысли про найм Go-разработчиков в 2024 году
https://habr.com/ru/articles/846962/
Честно, статья мне не очень понравилась, слишком сумбурно и очень много субъективных мыслей. И главное — не очень понятна основная мыль, которую пытался донести автор.
Но почитать все равно было интересно, ведь на собеседованиях я сейчас бываю довольно редко, и стало интересно что там сейчас происходит на рынке (спойлер — ровно то же самое, что и лет 5 назад).
В любом случае, автору статьи спасибо за то, что поделился своими мыслями❤️
А вот дискуссии в комментариях читать оказалось даже интересней, чем саму статью.
————
С удивлением обнаружил, что автор этой статьи также является автором довольно неплохого сайта-тренажера для решения задач по программированию - Code Abbey. Да, на первый взгляд он выглядит неказисто, но задачки довольно неплохие, и подход интересный. Со мной им когда-то давно поделился Глеб Яльчик — на его взгляд, это один из лучших тренажеров для новичков. Не буду тут подробно объяснять почему — если интересно, спросите в комментариях, обсудим.
Расскажите также в комментариях про свой опыт собеседований по Go в последнее время, только не забывайте уточнять грейд.
https://habr.com/ru/articles/846962/
Честно, статья мне не очень понравилась, слишком сумбурно и очень много субъективных мыслей. И главное — не очень понятна основная мыль, которую пытался донести автор.
Но почитать все равно было интересно, ведь на собеседованиях я сейчас бываю довольно редко, и стало интересно что там сейчас происходит на рынке (спойлер — ровно то же самое, что и лет 5 назад).
В любом случае, автору статьи спасибо за то, что поделился своими мыслями
А вот дискуссии в комментариях читать оказалось даже интересней, чем саму статью.
————
С удивлением обнаружил, что автор этой статьи также является автором довольно неплохого сайта-тренажера для решения задач по программированию - Code Abbey. Да, на первый взгляд он выглядит неказисто, но задачки довольно неплохие, и подход интересный. Со мной им когда-то давно поделился Глеб Яльчик — на его взгляд, это один из лучших тренажеров для новичков. Не буду тут подробно объяснять почему — если интересно, спросите в комментариях, обсудим.
Расскажите также в комментариях про свой опыт собеседований по Go в последнее время, только не забывайте уточнять грейд.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Особенности трудоустройства в 2024 (golang)
За свои 15+ лет в разработке я прошёл наверное 100+ собеседований — и почти четверть из них в этом году, в течение последнего месяца:) Что‑то необычное происходит —...
Golang Дайджест
Мысли про найм Go-разработчиков в 2024 году https://habr.com/ru/articles/846962/ Честно, статья мне не очень понравилась, слишком сумбурно и очень много субъективных мыслей. И главное — не очень понятна основная мыль, которую пытался донести автор. Но почитать…
Please open Telegram to view this post
VIEW IN TELEGRAM
Golang Дайджест
Анонимная сеть в 200 строк кода на Go https://habr.com/ru/articles/745256/ Отличный пост для тех, кто хочет немного погрузиться в понятие анонимных сетей и не тратить на это много времени. Всё как мы любим: краткий и интересный ликбез по теме, затем практика…
Анонимная сеть в 100 строк кода на Go
https://habr.com/ru/articles/849552/
Хорошее продолжение хорошей статьи. Суть новой статьи автор сам неплохо подытожил в самом начале:
Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.
Мне понравилось❤️
#article #dyi #сети
https://habr.com/ru/articles/849552/
Хорошее продолжение хорошей статьи. Суть новой статьи автор сам неплохо подытожил в самом начале:
Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.
Мне понравилось
#article #dyi #сети
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Анонимная сеть в 100 строк кода на Go
Введение Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go . Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с...
What's in an (Alias) Name?
https://go.dev/blog/alias-names
В версии Go 1.24, которая запланирована на начало февраля 2025 года, появится возможность объявлять generic alias type (пока можете почитать proposal).
В этой статье авторы Go объясняют что это и зачем. Заодно тут есть небольшой ликбез по обычному alias type.
Как обычно, буду честен — на мой взгляд, эта фича вряд ли пригодится многим из вас. Автор статьи позиционирует её как средство для рефакторинга пакетов, в которых есть дженерики — а много у вас таких пакетов?🙃
Но, в любом случае, потратить 10-15 минут своего времени на ознакомление с новой фичей своего инструмента считаю полезным занятием. Тем более, когда сами авторы стараются и пишут для нас подобные разборы.
————
В комментариях было бы особенно интересно увидеть людей, которые эту фичу очень ждут. Расскажите, почему?
#go_official #go_1_23
https://go.dev/blog/alias-names
В версии Go 1.24, которая запланирована на начало февраля 2025 года, появится возможность объявлять generic alias type (пока можете почитать proposal).
В этой статье авторы Go объясняют что это и зачем. Заодно тут есть небольшой ликбез по обычному alias type.
Как обычно, буду честен — на мой взгляд, эта фича вряд ли пригодится многим из вас. Автор статьи позиционирует её как средство для рефакторинга пакетов, в которых есть дженерики — а много у вас таких пакетов?
Но, в любом случае, потратить 10-15 минут своего времени на ознакомление с новой фичей своего инструмента считаю полезным занятием. Тем более, когда сами авторы стараются и пишут для нас подобные разборы.
————
В комментариях было бы особенно интересно увидеть людей, которые эту фичу очень ждут. Расскажите, почему?
#go_official #go_1_23
Please open Telegram to view this post
VIEW IN TELEGRAM
go.dev
What's in an (Alias) Name? - The Go Programming Language
A description of generic alias types, a planned feature for Go 1.24
Codebase Refactoring (with help from Go)
https://go.dev/talks/2016/refactor.article
Читая предыдущую статью, наткнулся на очень интересную работу Расса Кокса про рефакторинг кода на Go. Странно, что я не видел её раньше, большое упущение😩
Статья хорошая, полезная. Вообще, её стоило бы прочитать перед рассказом про алиасы.
#рефакторинг #russ_cox
https://go.dev/talks/2016/refactor.article
Читая предыдущую статью, наткнулся на очень интересную работу Расса Кокса про рефакторинг кода на Go. Странно, что я не видел её раньше, большое упущение
Статья хорошая, полезная. Вообще, её стоило бы прочитать перед рассказом про алиасы.
#рефакторинг #russ_cox
Please open Telegram to view this post
VIEW IN TELEGRAM
go.dev
Codebase Refactoring (with help from Go) - The Go Programming Language
Корутины: stackful vs stackless
https://habr.com/ru/articles/850970/
Статья не совсем по Go, она более общая (хотя, Go там тоже упоминается). Но тем лучше — чтобы лучше понимать, как что-то устроено в твоём языке, очень полезно поглядеть, как это сделано у соседей и сравнить.
Статья довольно короткая и написано очень хорошо, понятно, как я люблю.
#article
https://habr.com/ru/articles/850970/
Статья не совсем по Go, она более общая (хотя, Go там тоже упоминается). Но тем лучше — чтобы лучше понимать, как что-то устроено в твоём языке, очень полезно поглядеть, как это сделано у соседей и сравнить.
Статья довольно короткая и написано очень хорошо, понятно, как я люблю.
#article
Хабр
Корутины: stackful vs stackless
В этой статье я хочу объяснить разницу между stackless и stackful корутинами: чем они отличаются, какие у них плюсы и минусы, а также в общих чертах рассказать, как в некоторых...
Функциональные опции в Go
https://habr.com/ru/articles/842594/
🤓 Я как-то писал в своём основном канале про паттерн Functional Options — этот подход мне нравится, и я часто его вижу. А если он вам даже и не нравится, то познакомится всё равно стоит, т.к. встречать вы его наверняка тоже будете часто.
Если же хочется погрузиться глубже, то вот вам свежая подробная статья на Хабре на эту тему (не моя!). Написано очень хорошо, мне понравилось — читается легко и приятно.
————
Предвосхищая ваши комментарии, про Configurable Object я тоже писал🤓
#article
https://habr.com/ru/articles/842594/
Если же хочется погрузиться глубже, то вот вам свежая подробная статья на Хабре на эту тему (не моя!). Написано очень хорошо, мне понравилось — читается легко и приятно.
————
Предвосхищая ваши комментарии, про Configurable Object я тоже писал
#article
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Функциональные опции в Go
Функциональные опции в Go. Комикс required? Optional! Салют! Меня зовут Дима, я руковожу командой разработки ядра цифровой медицины в Республике Узбекистан. Сегодня я хочу поделиться своими знаниями о...
Golang Дайджест
Функциональные опции в Go https://habr.com/ru/articles/842594/ 🤓 Я как-то писал в своём основном канале про паттерн Functional Options — этот подход мне нравится, и я часто его вижу. А если он вам даже и не нравится, то познакомится всё равно стоит, т.к.…
Please open Telegram to view this post
VIEW IN TELEGRAM
GO Scheduler: теперь не кооперативный?
https://habr.com/ru/articles/502506/
Да, это довольно старая статья, которая описывает изменения в работе планировщика Go в версии 1.14, которые касались вытеснения горутин.
Статья довольно сложная, но полезная. Поможет лучше осознать, что же там такого интересно произошло в 1.14
Если очень кратко:
Раньше горутину могла прервать только она сама, снаружи можно было лишь поставить флаг о желании её прервать, но проверяла его она сама. Из-за довольно легко можно было написать код, из-за которого горутина никогда не будет вытеснена, а это может привести к дедлоку программы.
В версии же 1.14 появился механизм, который позволяет прерывать такие вот жадные горутины с помощью сигнала SIGURG. Теперь если горутина работает более 10мс, планировщик может легко её прервать.
————
Но в статье это разобрано НАМНОГО подробней, мягко говоря. Настолько хорошего разбора я пока нигде не встречал.
https://habr.com/ru/articles/502506/
Да, это довольно старая статья, которая описывает изменения в работе планировщика Go в версии 1.14, которые касались вытеснения горутин.
Статья довольно сложная, но полезная. Поможет лучше осознать, что же там такого интересно произошло в 1.14
Если очень кратко:
Раньше горутину могла прервать только она сама, снаружи можно было лишь поставить флаг о желании её прервать, но проверяла его она сама. Из-за довольно легко можно было написать код, из-за которого горутина никогда не будет вытеснена, а это может привести к дедлоку программы.
В версии же 1.14 появился механизм, который позволяет прерывать такие вот жадные горутины с помощью сигнала SIGURG. Теперь если горутина работает более 10мс, планировщик может легко её прервать.
————
Но в статье это разобрано НАМНОГО подробней, мягко говоря. Настолько хорошего разбора я пока нигде не встречал.
Хабр
GO Scheduler: теперь не кооперативный?
Если вы читали release notes для версии GO 1.14, то возможно заметили несколько довольно интересных изменений в рантайме языка. Вот и меня очень заинтересовал пункт: «Goroutines are now asynchronously...
Golang Дайджест
Range Over Function Types https://go.dev/blog/range-functions Подробный пост в официальном блоге разработчиков Go о том, зачем добавили итераторы в Go 1.23, что они из себя представляют, как их использовать, приводят примеры. #go_official #go_1_23
Ranging over functions in Go 1.23
https://eli.thegreenplace.net/2024/ranging-over-functions-in-go-123/
Ещё один неплохой пост про
#go_1_23
https://eli.thegreenplace.net/2024/ranging-over-functions-in-go-123/
Ещё один неплохой пост про
range
по функциям, который ввели в Go v1.23: что это и как пользоваться.#go_1_23
Погружение в интерфейсы Go
https://habr.com/ru/articles/856272/
Отличная комплексная статья по интерфейсам. Автор прошелся практически по всем аспектам, которые касаются темы:
- Что такое интерфейс
- Какая у него внутренняя структура
- Какие связанные вопросы могут задать на собеседованиях
- Пустой интерфейс
- Type Assertion
- Встраивание интерфейсов
- Где лучше размещать интерфейсы❤️
И другое
Читается при этом интересно, приятно. Очень крутая работа, рекомендую
https://habr.com/ru/articles/856272/
Отличная комплексная статья по интерфейсам. Автор прошелся практически по всем аспектам, которые касаются темы:
- Что такое интерфейс
- Какая у него внутренняя структура
- Какие связанные вопросы могут задать на собеседованиях
- Пустой интерфейс
- Type Assertion
- Встраивание интерфейсов
- Где лучше размещать интерфейсы
И другое
Читается при этом интересно, приятно. Очень крутая работа, рекомендую
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Погружение в интерфейсы Go
Интерфейсы — одна из самых сложных тем для начинающих в Go. Я решил тщательно разобраться с этой темой и одновременно написать эту статью. После прочтения этой статьи вы сможете ответить на следующие...
GoLang исполнилось 15 лет 🍾
https://go.dev/blog/15years
А в этом посте авторы рассказывают, как он похорошел за последние 5 лет.
https://go.dev/blog/15years
А в этом посте авторы рассказывают, как он похорошел за последние 5 лет.
Please open Telegram to view this post
VIEW IN TELEGRAM
go.dev
Go Turns 15 - The Go Programming Language
Happy 15th birthday, Go!
Forwarded from Николай Тузов
В каком треде runtime Go проверяет Network Poller?
Anonymous Quiz
13%
В тредах Процессоров (P из модели GMP). То есть, в тех же тредах, в которых выполняются горутины.
40%
В отдельном треде, который не используется Процессорами (P)
6%
И там, и там
12%
Понимаю о чём речь, но не знаю точный ответ
30%
Не понимаю о чём речь
Golang Conf 2024
Наверняка многие и так знают, но на всякий случай напоминаю — скоро будет HighLoad++ и в рамках него также Golang Conf 2024.
Когда: 2 и 3 декабря
Я смотрю HL++ практически всегда, без пропусков. И особенно люблю, когда в рамках него проводится ещё и крутая конференция по Go — ещё больше интересных докладов, и не надо их искать среди всех других.
А в этот раз у GoLang Conf будет целых два зала и отдельная секция Хардкор (ассемблер, внутренности, декомпиляция и т.п. Этой секции я особенно рад)
Также будут обсуждаться нововведения в Go v1.23.
Из особенно примечательного лично для меня:
- Секреты высокой производительности в многоядерных системах, Никита Галушко
- Конкурентность в Go: от железа к коду, Максим Горозий
- Ну и, конечно, на котиков Олега посмотрю обязательно✨
Программу, расписание и онлайн-билеты можно найти на сайте.
#партнерский_пост, но рекомендация честная❤
Наверняка многие и так знают, но на всякий случай напоминаю — скоро будет HighLoad++ и в рамках него также Golang Conf 2024.
Когда: 2 и 3 декабря
Я смотрю HL++ практически всегда, без пропусков. И особенно люблю, когда в рамках него проводится ещё и крутая конференция по Go — ещё больше интересных докладов, и не надо их искать среди всех других.
А в этот раз у GoLang Conf будет целых два зала и отдельная секция Хардкор (ассемблер, внутренности, декомпиляция и т.п. Этой секции я особенно рад)
Также будут обсуждаться нововведения в Go v1.23.
Из особенно примечательного лично для меня:
- Секреты высокой производительности в многоядерных системах, Никита Галушко
- Конкурентность в Go: от железа к коду, Максим Горозий
- Ну и, конечно, на котиков Олега посмотрю обязательно
Программу, расписание и онлайн-билеты можно найти на сайте.
#партнерский_пост, но рекомендация честная
Please open Telegram to view this post
VIEW IN TELEGRAM
golangconf.ru
Профессиональная конференция для Go‑разработчиков 2024
Forwarded from Go Update
🔥 weak: new package providing weak pointers 🔥
Соскучались по интересным изменениям? Их есть у меня!
Начиная с Go 1.24 у нас появится пакет который даст там т.н. "слабые указатели". Суть этих указателей заключается в том, что сборщик мусора вправе в любой момент времени собрать данные на которые они указывают. Т.е. сделать их указатели невалидными.
Простой пример кода:
На самом деле эти указатели появились еще с приходом пакета unique о котором я писал ранее. Но затащить два пакета в рамках одного proposal'а нельзя, поэтому пришлось ждать Go 1.24. Go Core Team (и в особенности Расс Кокс) очень долго сопротивлялись добавлению этого вида указателей в язык, т.н. они ломают абстракцию со сборщиком мусора и имеют очень неочевидные механики взаимодействия с
Основной плюс этого пакета в том, что разработчикам кешей стало намного легче собирать мусор. Даже человек, который слабо помнит алгоритмы, теперь может реализовать LRU кеши элементарно на мапах. Как именно? А вот это я покажу в сообщении о следующем за этим изменении.
Соскучались по интересным изменениям? Их есть у меня!
Начиная с Go 1.24 у нас появится пакет который даст там т.н. "слабые указатели". Суть этих указателей заключается в том, что сборщик мусора вправе в любой момент времени собрать данные на которые они указывают. Т.е. сделать их указатели невалидными.
Простой пример кода:
weakPtr := weak.Make(&SomeStruct{someData})
runtime.GC()
println(weakPtr.Pointer() == nil) // может быть true, а может и false
На самом деле эти указатели появились еще с приходом пакета unique о котором я писал ранее. Но затащить два пакета в рамках одного proposal'а нельзя, поэтому пришлось ждать Go 1.24. Go Core Team (и в особенности Расс Кокс) очень долго сопротивлялись добавлению этого вида указателей в язык, т.н. они ломают абстракцию со сборщиком мусора и имеют очень неочевидные механики взаимодействия с
finalizers
. Однако после добавление пакета unique отрицать необходимость (хоть и редкую) такой вещи стало невозможно, поэтому было принято решение дать ее использовать всем.Основной плюс этого пакета в том, что разработчикам кешей стало намного легче собирать мусор. Даже человек, который слабо помнит алгоритмы, теперь может реализовать LRU кеши элементарно на мапах. Как именно? А вот это я покажу в сообщении о следующем за этим изменении.
pkg.go.dev
weak package - internal/weak - Go Packages
The weak package is a package for managing weak pointers.
Как писать качественные unit-тесты
https://habr.com/ru/articles/854546/
Немного про unit-тесты и как их прокачать: что такое мутационные тесты и зачем они нужны, что такое стабы и моки, в чем опасность использования моков и др.
Если вы уже умеете писать unit-тесты, но дальнейшие шаги пока не делали, статья вам будет полезна.
https://habr.com/ru/articles/854546/
Немного про unit-тесты и как их прокачать: что такое мутационные тесты и зачем они нужны, что такое стабы и моки, в чем опасность использования моков и др.
Если вы уже умеете писать unit-тесты, но дальнейшие шаги пока не делали, статья вам будет полезна.
Хабр
Как писать качественные unit-тесты: процент покрытия, мутанты и работа с моками
Привет, Хабр! Меня зовут Марина, я Backend-инженер в компании Авито. Сегодня я хочу поделиться собственными рекомендациями, к которым удалось прийти при работе над качеством тестового покрытия...
Автоматизация напоминаний клиентам
https://habr.com/ru/companies/exolve/articles/861346/
Туториал по созданию системы автоматических напоминаний. Как обучающий материал, вполне неплохо.
Но для более серьёзного использования выглядит плохо. Ниже я объясняю почему, плюс подписчик в комментах добавил ещё замечаний, за что ему отдельная благодарность.
В чём суть: клиент соглашается на что-то во время разговора, и через месяц автоматически получает SMS-напоминание.
Технически это реализовано через связку звонка и транскрибации (Exolve API), анализа текста, планирования и отправки SMS. Всё на Go + SQLite.
————
Теперь позволю себе немного покритиковать текст:
1) При поиске согласия не учитывается контекст: просто ищутся слова "да", "согласен", "конечно" где угодно в тексте. Но диалог может быть таким:
- Вам интересно?
- Да, но сейчас не готов
Или:
- Раньше было да, а сейчас нет
И система посчитает это за согласие
2) Отправка SMS планируется в памяти, с помощью
Нужно хранить задачи на отправку (не только общую инфу) в базе и использовать какой-то планировщик.
3) Отсутствие учёта часовых поясов: SMS отправляются ровно через месяц без учёта времени клиента. Можно разбудить человека в 3 часа ночи.
Также стоило бы написать пару слов по поводу аутентификации веб-хука.
Я понимаю, что это может быть очень упрощённый пример, но в таком случае стоило хотя бы оговорку сделать.
#automation #sqlite
https://habr.com/ru/companies/exolve/articles/861346/
Туториал по созданию системы автоматических напоминаний. Как обучающий материал, вполне неплохо.
Но для более серьёзного использования выглядит плохо. Ниже я объясняю почему, плюс подписчик в комментах добавил ещё замечаний, за что ему отдельная благодарность.
В чём суть: клиент соглашается на что-то во время разговора, и через месяц автоматически получает SMS-напоминание.
Технически это реализовано через связку звонка и транскрибации (Exolve API), анализа текста, планирования и отправки SMS. Всё на Go + SQLite.
————
Теперь позволю себе немного покритиковать текст:
1) При поиске согласия не учитывается контекст: просто ищутся слова "да", "согласен", "конечно" где угодно в тексте. Но диалог может быть таким:
- Вам интересно?
- Да, но сейчас не готов
Или:
- Раньше было да, а сейчас нет
И система посчитает это за согласие
2) Отправка SMS планируется в памяти, с помощью
time.AfterFunc
: если сервис перезапустится, все запланированные сообщения пропадут.Нужно хранить задачи на отправку (не только общую инфу) в базе и использовать какой-то планировщик.
3) Отсутствие учёта часовых поясов: SMS отправляются ровно через месяц без учёта времени клиента. Можно разбудить человека в 3 часа ночи.
Также стоило бы написать пару слов по поводу аутентификации веб-хука.
Я понимаю, что это может быть очень упрощённый пример, но в таком случае стоило хотя бы оговорку сделать.
#automation #sqlite
Хабр
«Напомните через месяц?»: как автоматизировать напоминания клиентам с Golang, SQLite и вебхуками
Привет, Хабр! Представим ситуацию: вы клиент. Разговор с менеджером завершён, он предложил вам что-то полезное — услугу, продукт или подписку — и, допустим, вы соглашаетесь: «Почему бы и нет, отличная...
Go 1.23: Interactive release notes
https://antonz.org/go-1-23/
Ещё немного про v1.23. Недавно мне скинули вот такую крутую страничку, где про новведения не только можно почитать, но и потыкать не отходя от кассы. Очень удобно.
Ну и текст написан хорошо.
Лучи добра и уважения автору❤️
#go_1_23
https://antonz.org/go-1-23/
Ещё немного про v1.23. Недавно мне скинули вот такую крутую страничку, где про новведения не только можно почитать, но и потыкать не отходя от кассы. Очень удобно.
Ну и текст написан хорошо.
Лучи добра и уважения автору
#go_1_23
Please open Telegram to view this post
VIEW IN TELEGRAM
antonz.org
Go 1.23 interactive tour
Iterators, timers and canonical values.