Все потоки
Поиск
Написать публикацию
Обновить
103.15

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Увеличиваем дисковое пространство физического сервера за одну минуту

Время на прочтение9 мин
Количество просмотров8K

Можно ли подключить сетевой диск к железному серверу за минуту, при этом не выключая его, сохраняя отказоустойчивость и не привлекая инженеров?

Я Беляков Алексей — Go-разработчик в Cloud.ru, в статье расскажу, как нам удалось это сделать. Сначала поделюсь кейсами, которые натолкнули на создание такой фичи, затем расскажу, как мы реализовали ее интеграцию со стороны сервиса Bare Metal, а в конце покажу, как всего за минуту можно расширить дисковое пространство физического сервера.

Читать дальше

Единый код валидаторов на фронте и бэке (PHP + FFI + Go + JS)

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров3.2K

Бывает полезно проводить валидацию данных из формы ввода и на фронте и на бэке, например чтобы не гонять лишний запрос с заведомо "плохими" данными. Отсюда появляется задача написания двух одинаковых валидаторов для фронта и бэка.

Если фронт и бэк написан на одном языке (привет js+node), то мы можем напрямую использовать один код валидатора и там и там.

В остальных случаях (js+php, java, python, go, dotnet) есть проблема. Во-первых, придётся два раза писать примерно одно и то же на двух языках, во-вторых, нужно убедиться, что написанное работает одинаково. Особенно печальны случаи, когда фронт ошибочно зарезает данные, валидные с точки зрения бэка и логики приложения.

Читать далее

CRUD generator для golang + PostgreSQL

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров3.9K

Для работы любого сервиса обычно нужна база данных. Чаще всего PostgreSQL.
Также требуются общие функции по работе с БД, так называемые CRUD операции,
операции CREATE + READ + UPDATE + DELETE, а также другие функции по работе с БД.
...
Получится готовый микросервис, который можно сразу запустить, или можно использовать как библиотеку через import.

Читать далее

Самый лучший мок на свете: разбираемся с инструментами для генерации моков в Go

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров13K

Всем привет! Меня зовут Семён Эйгин, я бэкендер в Авито, люблю опенсорс и периодически что-то туда контрибьючу. В этой статье разбираемся с моками и выбираем самый удобный инструмент (не обязательно лучший!). Это достаточно холиварная тема, хотя при подготовки статьи я не ожидал, что она окажется настолько спорной — у каждого разработчика своё мнение на этот счёт. Чтобы узнать моё и высказать своё — переходите под кат!

Читать далее

Goffeeйнная гуща: актуальные инструменты и особенности группировки GOFFEE в атаках на Россию

Время на прочтение13 мин
Количество просмотров1.5K

В течение 2024 года несколько российских организаций обращались к команде по реагированию на киберинциденты экспертного центра Positive Technologies (PT ESC IR) для расследования инцидентов, между которыми удалось обнаружить сходство. В рамках анализа вредоносная активность инцидентов была объединена в один кластер и связана с группой Goffee, атакующей российские организации с помощью фишинга с 2022 года.

В этой статье мы расскажем про вредоносное ПО, которое используют злоумышленники в атаках, в том числе речь пойдет о ранее неизвестном рутките под Linux, который был замечен в одном из инцидентов.

Читать далее

Bubble Tea — TUI-фреймворк для Go. Мои открытия и ошибки

Время на прочтение3 мин
Количество просмотров5.4K

Недавно я попробовал Bubble Tea — мощный TUI-фреймворк на Go для создания красивых интерфейсов прямо в терминале. Я делюсь опытом, архитектурными находками, болями и полезными советами. Если вы любите Go и интересуетесь CLI-интерфейсами — статья для вас.

Читать далее

Youtube TG бот на GO cо всеми «прелестями»

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.2K

Привет, Хабр! Сегодня хочу поделиться с сообществом TG ботом, которого написал пару лет назад и который до сих пор актуален и работает.

Читать далее

Сказка о зачарованной пасеке

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.3K

Басня о коде и мёде

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

Они трудились день и ночь, используя всевозможные чертежи и заклинания, однако их творения часто становились запутанными беспорядками — хрупкими и трудно поддающимися изменению. Строители просто жаждали создать программное обеспечение устойчивое, организованное и полное жизни, как шумный улей.

И вот однажды мудрый старый архитектор, известный как «Пчеловод», собрал молодых строителей. «Вы стремитесь строить «Великие вещи», — сказала она, и ее голос был теплым, как летний мед. «Но вы строите из камня и железа, когда вы должны строить из самой жизни. Посмотрите на пчел. Их ульи — шедевры дизайна, построенные на века на протяжении поколений. Давайте узнаем их секреты».

Так начинается наша история. История не только о коде, но и о вечных закономерностях природы, которые могут помочь нам создавать создавать красивые программы. Мы отправимся в самое сердце Шестиугольного Улья, откроем его секретный генетический код и узнаем, как выращивать собственных «рабочих пчел», которые будут служить нашему цифровому королевству добросовестно.

Читать далее

Паттерны обработки ошибок в GO: это должен знать каждый разработчик

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6K

Обработка ошибок в Go — это нечто большее, чем просто предотвращение падений программы. Она помогает строить системы, которые «ломаются красиво», ясно сообщают о проблемах и упрощают отладку. В отличие от языков в которых есть обработка исключений, Go заставляет нас явно думать о том, что может пойти не так. Это одновременно и преимущество, и недостаток.

Роб Пайк однажды сказал: «Ошибки — это значения» (прим. переводчика: В Go ошибка — это не исключение и не что‑то «особенное», а просто значение, которое может вернуть функция.) Эта простая мысль определяет то, как мы должны подходить к обработке ошибок в Go. Давайте посмотрим, как превратить эту «филосовскую» мысль в практические паттерны.

Читать далее

Осознанное обновление go.mod, присыпанное визуальным сахаром или как я написал yet another cli tool

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1K

Зависимости тоже хотят заботы — но без драмы. modup — лёгкий tui, подскажет, что обновить, и поднимет нужные версии аккуратно, без «сломалось, но почему?».

Выберите пакеты, жмите — наблюдайте прогресс. Один запуск — и go.mod причёсан. Сюрпризы оставим код‑ревью, а не сборке.

Нажимай сюда и откроется статья

В поисках мертвых горутин

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.7K

Я пишу всякое на Go в Ви.Tech (IT-дочка ВсеИнструменты.ру) и люблю периодически изучать предлагаемые нововведения. Недавно мы собирались внутренним комьюнити, обсуждали интересные пропозалы из гитхаба Go. Среди прочего — изящный и крайне перспективный Proposal #74609 Deadlock detection by using the garbage collector Собственно, о нём сегодня и пойдёт речь.

Мотивация

Горутины могут блокироваться — например, при попытке захватить уже занятую блокировку или отправить сообщение в канал, по которому ещё никто не читает. Если все горутины заблокированы, рантайм Go завершает выполнение с фатальной ошибкой о глобальной взаимной блокировке (deadlock).

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

На текущий момент Go не предоставляет встроенного механизма для обнаружения или устранения частичных дедлоков. Поскольку стандартный сборщик мусора не распознаёт такие ситуации, он не может освободить ни память, занятую “мёртвыми” горутинами, ни ресурсы, достижимые только через их стеки.

Наиболее продвинутыми динамическими средствами обнаружения частичных дедлоков являются Goleak и LeakProf:

Читать далее

Go vs Crystal: выбираем между двумя современными языками программирования

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров11K

Когда речь заходит о современных языках системного программирования, разработчики часто сталкиваются с непростым выбором. Два языка, которые привлекают всё больше внимания в последние годы — это Go (разработанный Google) и Crystal (вдохновлённый синтаксисом Ruby, но со статической типизацией). Оба обещают высокую производительность, продуктивность разработки и современные возможности языка, но идут к этим целям совершенно разными путями.

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

Жмисюда

Wasm-плагины на Go

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.8K

Привет, Хабр!

Когда обсуждают расширяемость бэкендов, первым делом вспоминают нативные плагины на C или C++. Дальше обычно всплывают вопросы ABI, совместимости компиляторов, загрузчиков и фразы «а у нас Alpine с musl». В Go исторически был пакет plugin, но его применимость ограничена окружениями и сборкой. В 2025 году картина проще: берем WebAssembly как изолированный байткод, исполняем его прямо из Go и получаем плагинную архитектуру без плясок с динамическими библиотеками.

Далее в статье рассмотрим, как создать практичную систему Wasm-плагинов на Go: с изоляцией, таймаутами, контрактом данных и обновлениями на лету. Для рантайма возьмем wazero, потому что он написан на Go и не требует cgo.

Читать далее

Ближайшие события

yask или не yask

Время на прочтение3 мин
Количество просмотров598

Я решил попробовать себя на новом амплуа писателя и писать о том, что мне интересно и чем я занимаюсь. Я постараюсь делать меньше воды и не слишком длинные посты, так как длинные посты читаются тяжело. И первый пост будет о yask

Читать далее

Книга «Основы Go: Community edition» 2-е издание

Время на прочтение4 мин
Количество просмотров5.4K

Всем привет!

Завершил обновление предыдущей версии книги и выкладываю в открытый доступ второе издание «Основы Go: Community edition». О том, что изменилось, когда будет печатная версия книги и многом другом - в самой статье ;-)

Читать далее

Чего хотят от Go-разработчиков и что им предлагают в середине 2025 года

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.6K

Несколько лет назад я переходил на Go и смотрел, что использует Go-разработчик для своих целей. Для этого были просмотрены разные статьи на эту тему, опрошены знакомые, просмотрены требования к вакансиям и стек технологий "обязательных" к изучению был невероятно огромен. Мне казалось, что еще несколько лет нужно будет все изучать, иначе как можно быть Go-разработчиком не зная "1", "2"..., "333".

Чтобы больше не попадать в такую ловушку, а также, чтобы вы тоже в нее не попадали, я исследовал почти все вакансии Go-разработчика, которые представлены в России на данный момент и посчитал, какие навыки спрашивают чаще всего. В данной статье я учитывал только технические навыки, а не "знание английского" или "понимание agile".

Читать далее

Пишем потоковый коррелятор событий безопасности на Golang

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.1K

Разбираемся в принципе работы Logreact — самописного коррелятора событий безопасности на языке Golang

Читать далее

net/netip в Go 1.25

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.5K

Привет, Хабр!

Go ценят за предсказуемость и простые решения в стандартной библиотеке, а в сервисах чаще всего упираемся в IP, разбор host:port, CIDR и сериализацию. Сегодня это удобно закрывается стандартным net/netip: компактные value-типы, корректный парсинг адресов и портов, работа с зонами, проверка принадлежности сетям и быстрые операции без лишних аллокаций. В статье рассмотрим этот пакет подробнее.

Читать далее

Go 1.25: свежий релиз принес умные контейнеры и экспериментальный сборщик мусора

Время на прочтение3 мин
Количество просмотров4.2K

12 августа команда Go представила новую версию языка — Go 1.25. Релиз получился не самым крупным по количеству изменений в языке (их вообще нет), но принес несколько интересных улучшений в рантайме и инструментах, которые стоит обсудить.

Как разработчик, работающий в основном с микросервисами, я особенно обратил внимание на несколько ключевых нововведений. Давайте разберем основные измененения.

Читать далее

Швейцария в картах Go: путешествие по Swiss Tables

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров5.5K

Golang продолжает развиваться. Изначальные проектные решения ставятся под сомнения, а новые вызовы заставляют язык меняться: дженерики, итераторы, новая имплементация мап. Однако, даже нововведения приходят к нам не такими, как в других языках. Вспомните обсуждения сразу после релиза тех же дженериков. На Go, как мне кажется, в большинстве своём пишут люди, пришедшие из прочих языков, у кого Golang не первый ЯП. Они привыкли к другому подходу работы с абстракциями. И им порой не хватает того, что предлагает язык Гофера. Swiss Tables — попытка быть в тренде.

С вами Кирилл Кузин — ведущий подкастов про IT на канале gIT, где вместе с коллегами по цеху рассматриваем индустрию под разными углами, открывая новые горизонты для вас и самих себя. А работаю ведущим разработчиком в Ви.Tech — IT-дочке ВсеИнструменты.ру. Там мы с командой пишем внутренние системы на Go под задачи бизнеса и по ходу дела разбираемся, как наши инструменты устроены и как реально влияют на процесс разработки.

В этой статье речь пойдёт о новых мапах в версии Go 1.24, реализованных по принципу Swiss Tables — швейцарских таблиц. Попробуем найти ответы на вопросы о том, почему мапы изменились, что лежит в основе новой реализации и как к ней пришли.

Читать далее

Вклад авторов