Category : golang

golang
Параллельное программирование на Go

На практике, создаваемое нами ПО выполняется на множестве процессоров. К сожалению, многие наши допущения, справедливые для одного процессора, в случае нескольких процессоров становятся ложными. Например, каким будет состояние памяти, если два процессора изменяют один блок памяти? В общем случае на этот вопрос ответить сложно. Может случиться так, что внесённое одним процессом изменение перепишет внесённое другим. Справедливо может быть и обратное: может «победить» изменение другого процессора…

  • вторник, 1 апреля 2025 г. в 00:00:07
golang
Архитектура продуктового Go-сервиса

ВведениеВ статье рассматривается подход к построению архитектуры сервиса с использованием языка Go для продуктовых команд, ориентированных на решение бизнес-задач. Особое внимание уделяется вопросам выделения слоев в приложении и обеспечению низкой связанности между ними. Приведённые рекомендации могут быть менее актуальны для команд, занимающихся инфраструктурной разработкой.Цель статьи — систематизировать и поделиться накопленными знаниями. Описанный подход основан на первоисточнике, но адапт…

  • воскресенье, 30 марта 2025 г. в 00:00:07
golang
Планировщик Go

Язык программирования Go был разработан для высокопроизводительных многопоточных приложений, и его система планирования горутин играет ключевую роль в эффективном использовании аппаратных ресурсов. В отличие от традиционных потоков ОС, горутины легче, создаются быстрее и управляются встроенным планировщиком Go, который распределяет задачи между доступными процессорами.В этом тексте я рассмотрю, как Go-программа использует вычислительные мощности, как работает планировщик горутин и какие механиз…

  • суббота, 29 марта 2025 г. в 00:00:08
golang
Свои языки программирования: зачем компании изобретают колесо заново

Кажется, языков программирования уже предостаточно, но IT-гиганты продолжают плодить свои. Google, Apple, JetBrains — готовых решений хватает до отказа, а им все равно хочется иметь что-то свое, эксклюзивное. Дело в технологической необходимости, гордыне или «синдроме NIH», когда чужое не берут? Может, это попытка захватить контроль над всем технологическим стеком или хитрый маркетинговый ход для завоевания умов разработчиков? Давайте копнем глубже, чтобы разобраться. Когда старые языки мешаю…

  • суббота, 29 марта 2025 г. в 00:00:07
golang
Удобное сканирование в структуры в связке Go/PgX. Решение проблемы сканирования в PgX. Golang

Работая с базами данных в Go, многие из нас сталкивались с библиотекой pgx — высокопроизводительным драйвером для PostgreSQL. Однако при всей ее мощи есть одна неудобная особенность: сканирование результатов запросов в структуры может быть довольно громоздким, особенно когда речь идет о вложенных структурах или списках.Проблема неудобного сканирования в go/pgxОсновная сложность заключается в том, что при выполнении SQL-запросов и получении результатов нам часто приходится вручную сканировать ка…

  • суббота, 29 марта 2025 г. в 00:00:06
golang
Планировщик ОС

Дизайн и поведение планировщика Go позволяют многопоточным программам работать более эффективно и производительно. Это возможно благодаря тому, что планировщик Go учитывает особенности работы планировщика операционной системы (OS). Однако, если многопоточная программа не учитывает принципы их взаимодействия, все преимущества теряются. Поэтому важно понимать, как работают оба планировщика, чтобы правильно проектировать многопоточные приложения.В этой статье я решил разобраться с основными механи…

  • четверг, 27 марта 2025 г. в 00:00:14
golang
«Основы Go: Community edition» 1-е издание

Привет, Хабр!Не так давно мне удалось вернуть эксклюзивные авторские права на книгу по Go. Писалась она 3 года назад и с тех пор добавила мне немного седых волос. А все из-за неопытности и надежды на ее лучшее будущее в руках одного издательства... Чем я тогда думал отдавая все права (электронка + печатное издание) - фиг его знает, но с другой стороны, если бы не пережитый звиздец, то не начал бы процедуру возвращения авторских прав на свои книги, чтобы теперь никогда не передавать издателю эк…

  • четверг, 27 марта 2025 г. в 00:00:12
golang
Как кросс-компилировать WebView Go-приложение с CGO для Linux с macOS: Zig, Docker и немного магии

ПрологНедавно я столкнулся с задачей собрать своё Go‑приложение написаное вокруг библиотеки github.com/webview/webview_go, которая является обёрткой для C/C++ библиотеки webview, для Linux, из чего вытекает необходимость использования CGO. Казалось бы, что сложного? Укажи GOOS=linux, пропиши компилятор CC= и CXX=, выполни go build — и готово. Но нет, CGO и зависимости вроде GTK превратили это в настоящий квест. После нескольких часов борьбы с ошибками вроде Package webkit2gtk-4.0 was not found …

  • четверг, 27 марта 2025 г. в 00:00:12
golang
работа с Kafka в Go: практическое применение

Автор статьи Якушков Федор.Apache Kafka — это мощная распределённая платформа для обработки потоков данных, которая завоевала популярность благодаря своей способности эффективно управлять большими объёмами информации в реальном времени. В этой статье мы подробно разберём, как использовать Kafka в языке программирования Go с помощью библиотеки kafka-go. Мы рассмотрим все ключевые аспекты: …

  • среда, 26 марта 2025 г. в 00:00:09