Разработка на Go — особый мир. Этот язык не так популярен, как Python или JavaScript, но благодаря этому и глупой шумихи вокруг него меньше. Популярность приманивает «случайно проходивших мимо» и вызывает много дурацких холиваров. А тем временем Go собирает людей, которые уже хорошо понимают, зачем они здесь, и хотят эффективно решать реальные задачи.
В этом могут помочь конференции. Мы уже давно проводим их для многих других разработчиков (например, HolyJS и С++ Russia). А в марте впервые проведём новую конференцию GoFunc. Главное, что нужно о ней знать:
Полностью в онлайне, можно подключиться откуда угодно.
Технические доклады без воды и маркетинга.
Если вы сами готовы выступить, сейчас последние дни подачи заявок.
А подробнее — в полном тексте:
Чего вообще ждать?
Тем, кто уже был на других наших конференциях (вроде Joker, Heisenbug или Mobius), объяснять не требуется. Но для всех остальных поясним, что мы любим:
Нам важно, чтобы даже в онлайн-формате конференция была не просто просмотром видеопотока. Поэтому, например, после каждого доклада даём участникам как следует порасспрашивать спикера в формате видеосозвона.
Мы ценим технический контент, полезный для разработчиков. То есть в докладах — не разглагольствования о будущем технологий или реклама, а конкретика: код, инструменты, подходы.
До конференции уже провели серию митапов. Так что про контент можно составить собственное мнение по их видеозаписям. Вот для примера один из докладов оттуда:
А что будет в программе?
Пока что она в процессе составления, будет постепенно пополняться на сайте. Можете подписаться там на рассылку или на Telegram-канал, чтобы не пропустить новости.
А пока что известны темы семи докладов. Скажем, Искандер Шарипов, видеозапись которого прикрепили выше, снова выступит с новой темой:
Пишем XM-плеер на Go и используем его в играх
Искандер Шарипов
quasilyte tech
Есть такой формат модульной музыки — XM. Она компактная, хорошо звучит и относительно эффективная в воспроизведении.
В рамках доклада спикер покажет XM-плеер, который написал на Go, чтобы затем использовать его в своих играх. Поговорим о деталях формата, внутренностях плеера, а еще об играх, где его используют.
PGO: практика и маленькие хитрости использования
Макс Ривейро
Ozon
Рассмотрим PGO и всё то, что кроется за этой аббревиатурой: как PGO устроен в Go, как его использовать в ваших приложениях, какие результаты вы можете получить при использовании этого способа оптимизации.
Когда нельзя, но очень хочется — GO!
Егор Лазаренков
Сбер
Разберем обход всех ограничений, характерных для ООП (получение полного доступа к приватным полям, функциям, методам и типам другого пакета), и ситуации, когда это лучшее решение.
Разберемся, как изменить код программы после ее компиляции. Напишем простую программу на Gо и взломаем ее при помощи IDA. Также пропатчим драйвер для работы с PostgreSQL (pgx), добавив в него поддержку глобального трейсера без внесения изменений в исходники драйвера.
gRPC: Under the Hood
Алексей Акулович
С gRPC уже давно и плодотворно идет работа в самых разных областях. Но часто gRPC воспринимают как некую черную коробку, где с одной стороны закидывается protobuf, а с другой стороны что-то вылетает в ответ. Или имеют еще более абстрактное представление о том, как это всё работает.
В докладе разберем работу gRPC не со стороны пользователя, ибо таких материалов просто море, а о том, как оно всё работает под капотом. Это, по сути, минимальная handmade gRPC-реализация на Go stdlib. Существующие полноценные реализации останутся за рамками доклада.
Строка: от известного к неизвестному
Роман Чалый
VK
Кажется, что строка в Go — очень понятная сущность: неизменяемый массив байт. Но она может удивить.
Рассмотрим, как компилятор работает со строками, какие есть оптимизации и почему применяются именно такие оптимизации.
Типы данных под капотом: слайсы и как их готовить
Владислав Белогрудов
YADRO
Мы затронем интересные оптимизации компилятора, стандартные средства strings.Builder, bytes.Buffer, sync.Pool и библиотеку slices на дженериках. Поговорим как про внутреннее устройство, так и про правильное использование. Попытаемся ответить на вопрос: «А почему именно так?», измерим скорость и память, а также подискутируем о лучших практиках.
Снижаем нагрузку на Garbage Collector и ускоряем работу с памятью, используя sync.Pool там, где это уместно
Александр Иванов
YADRO
Спикер расскажет, какие подходы попробовал, чтобы уменьшить влияние GC на ход выполнения задачи, приведёт результаты бенчмарков для разных размеров буферов данных и объяснит, почему остановился на sync.Pool для решения задачи обработки 1К+ сообщений в секунду. Описание подробнее — на сайте.
Можно ли выступить?
Сейчас идёт последняя неделя приёма заявок. Так что, если вы готовы рассказать что-то полезное Go-разработчикам — ждём заявку. Под спойлером — общий список интересующих тем:
Список тем
Язык
Go «под капотом» (дженерики, каналы, горутины)
Новые фичи в Go
Компилятор
Производительность, оптимизация, PGO
Лучшие практики
Go Way
Оформление проектов и репозиториев
Архитектура кода
Инфраструктура / DevOps
Cloud Native
Observability (трейсинг, мониторинг, логирование, непрерывное профилирование и т.д.)
Security
K8s
CI/CD
Межсервисное взаимодействие (Istio и Linkerd)
Библиотеки и инструменты
Databases && ORM
Kafka, NATS, RabbitMQ, etc.
RPC (gRPC, OpenAPI, GraphQL)
IDE (GoLand, NeoVim, VSCode)
Кодогенерация, прототипирование
Архитектура
Высокие нагрузки
Чистая архитектура
Микросервисы
Domain Driven Design
Expand Your Horizons
WinAPI приложения на Go
Rust / Erlang / Python / Go
Нестандартные применения: GameDev
Обработка медицинских изображений на Go
TinyGo-контроллеры
cgo (c interop)
Dependency injection
ML/AI на Go
QA / Testing
Unit Tests
GeenkoGo: BDD @ Go
TestContainers
Генераторы нагрузки, fuzzing, benchmarking
Но не обязательно жёстко привязываться к нему. И знаем, что у начинающих спикеров бывает типичная проблема: «ну я сам не знаю, что интересное могу рассказать». Тут есть два варианта:
Подумать о том, с чем сталкиваешься в работе. И учесть вот что: зачастую при долгой работе над проектом у людей «замыливается глаз», когда им кажется «ну это очевидные вещи» (потому что сами сталкиваются каждый день), но для других они совершенно неочевидные.
Можно не привязываться к специфике своего проекта, а занырнуть в какую-то тему, не требующую годы изучения и опыта. Например, можно разобраться с новой версией Go и рассказать о ней так, чтобы получилось не просто чтение чейнджлога вслух.
Кроме того, если у вас есть какая-то идея, но пока что в «сыром» виде — тоже подавайте заявку. Программный комитет — это не суровые люди, которые вас за такое заругают, а помощники: если они увидят, что потенциал у темы есть, то могут помочь докрутить идею.
А судьи кто
А кто состоит в Программном комитете и решает, какие доклады попадут в программу? Люди с ощутимым опытом в Go, работающие в разных компаниях (а также два человека непосредственно от нас, JUG Ru Group):
Илья Горкун
Тинькофф
Go-разработчик в Тинькофф, пишет кандидатскую по сложности алгоритмов в полугруппах, а также делает конференции по Go.
Александр Кондрашов
ДомКлик
IT leader нескольких команд разработки. В индустрии с начала времен, когда про Go никто не слышал, а фронтенд представлял собою исключительно ванильный CSR. Специализируется на архитектуре, топит за культуру разработки, занимается people management и любит кодить собственные космолеты с покером и блэкджеком по ночам.
Андрей Терехов
Яндекс
Разработчик в Яндексе. Пишет много кода на Go про перекладывание JSON. Действующий участник Go-комитета Яндекса. Учит яндексовые команды использовать Go «как бог (Роб Пайк) велел».
Кирилл Пензин
Более 8 лет в разработке, последние 4 года работает на позиции лида. Пишет на Go 5 лет.
Может копать, может не копать, может научить других копать и контролировать процесс «копания».
Ильдар Карымов
YouTube-канал defer panic
Разрабатывал ПО для электромобилей и зарядных станций. Автор YouTube-канала defer panic по разработке на Go и не только.
Владимир Романько
Лаборатория Касперского
Программирует 25 лет, тимлид более 10 лет, спасает мир от киберугроз в Kaspersky Lab.
Амангелды Кадыл
Kolesa Group
Tech Lead в hard сore-команде Kolesa Group. За десять лет из metallurgical engineer перешел в software engineer. Теперь вместо пайплайна проката делает пайплайн СI/CD и не только.
Рафаэль Мустафин
Magnit Tech
Тимлид в команде LastMile Magnit Tech. Занимается курьерской логистикой. Прошел путь от написания приложений для Windows до разработки бэкенд-сервисов на Go. Ментор в Яндекс Практикуме.
Михаил Кабищев
Ozon
Руководит в Ozon разработкой платформы, которая делает жизнь разработчиков легче и проще. Организует конференции и митапы по Go.
Андрей Дмитриев
JUG Ru Group
Окончил матмех СПбГУ. Программист со школы, прагматик в жизни и совладелец бизнеса по организации конференций для айтишников. Несколько лет разрабатывал библиотеки JDK в Sun Microsystems и Oracle. Руководил группой мобильной разработки в компании QuickOffice. Был руководителем распределенной группы нагрузочного тестирования в Netcracker. Сейчас — директор по производству в JUG Ru Group. Склонен доверять фактам и цифрам.
Моника Кобалия
JUG Ru Group
Программный координатор конференции.
Напоследок
Другая информация и билеты — уже на сайте GoFunc. А новости о программе и не только можно будет узнавать в соцсетях:
YouTube-канал (выкладываем записи мероприятий)
В общем, ждём всех гоферов в марте.