IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

otel.SetTracerProvider() устанавливает глобальный провайдер трассировки, который становится доступным во всей программе. Это означает, что после вызова этой функции любой пакет или часть кода, использующая OpenTelemetry SDK, сможет получить доступ к этому провайдеру и создавать трейсы и спаны, не создавая отдельный провайдер в каждом пакете....

продолжить чтение


DTO (Data Transfer Object) действительно по своей сути является простым и плоским объектом, предназначенным для передачи данных между слоями приложения. Его основная цель — перенос данных, а не реализация поведения или бизнес-логики. Однако в практике программирования DTO может включать методы, если они соответствуют следующим условиям:...

продолжить чтение


В Go преобразование структур между архитектурными слоями, таких как преобразование DTO (Data Transfer Object) в Entity, часто необходимо для соблюдения принципов разделения ответственности. Это делается для того, чтобы каждое архитектурное звено работало только с теми структурами данных, которые ему нужны, и избегало ненужной связи между слоями....

продолжить чтение


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

продолжить чтение


Если интеграционные тесты хранятся в отдельной директории, они не смогут напрямую тестировать приватные методы (методы и функции с именем, начинающимся с маленькой буквы), так как такие методы видны только внутри того же пакета....

продолжить чтение


Инициализация конфигурации из нескольких источников (.env, параметры командной строки, config.yaml) — это распространённая задача в Go. Принципиальный порядок инициализации часто следующий:...

продолжить чтение


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

продолжить чтение


Инициализация конфигурации из нескольких источников (.env, параметры командной строки, config.yaml) — это распространённая задача в Go. Принципиальный порядок инициализации часто следующий:...

продолжить чтение


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

продолжить чтение


RCU (Read–Copy–Update) — это техника синхронизации, разработанная для повышения производительности многопоточных программ, особенно в условиях, когда множество потоков активно читают данные, а операции записи происходят редко. В отличие от традиционных методов синхронизации, таких как мьютексы, которые блокируют доступ к данным, RCU позволяет потокам выполнять чтение параллельно, минимизируя блокировки и задержки....

продолжить чтение


Чтобы обратить (реверсировать) односвязный список в Go, нужно поменять местами ссылки next между узлами, чтобы они указывали на предыдущий элемент, а не на следующий. При этом голова списка (head) после обращения будет указывать на последний элемент исходного списка....

продолжить чтение


В Go для работы с ассоциативными массивами (или словарями) и их маршалинга в формат YAML используется пакет gopkg.in/yaml.v2. Этот пакет позволяет преобразовывать структуры данных Go в формат YAML и обратно....

продолжить чтение


Передача конфигурационного объекта в Go зависит от размера структуры и того, как она будет использоваться. Давайте рассмотрим оба варианта — по значению и по ссылке — и разберём, когда и какой подход лучше....

продолжить чтение