Как стать автором
Обновить
1
@Coding-Sealread⁠-⁠only

Пользователь

Отправить сообщение

Три способа оптимизировать работу с памятью на Go с помощью memory pools

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

Привет, Хабр! Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы. 

В этой статье расскажу, как уменьшить влияние GC на выполнение программы и покажу бенчмарки для разных memory pools. Объясню, какая из реализаций подойдет вашему проекту, а когда лучше не использовать memory pools и полагаться на встроенные механизмы рантайм-окружения Go.

Читать далее
Всего голосов 39: ↑39 и ↓0+53
Комментарии20

Функциональные опции в Go

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

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

Читать далее
Всего голосов 20: ↑19 и ↓1+19
Комментарии45

Как уменьшить образ Docker для работы с устройствами IoT

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

На устройствах интернета вещей (IoT) зачастую слишком мало ресурсов, и их не хватает, чтобы подтягивать и использовать тяжеловесные образы Docker. В этой статье будет показано, как можно уменьшить образ Docker на 36-91% при помощи инструментов patchelf и strace, не перекомпилируя при этом контейнеризованные приложения. Также рассмотрим, как создавать минимальные образы для собственных приложений, написанных на Rust, Go, C/C++.

Читать далее
Всего голосов 18: ↑18 и ↓0+26
Комментарии4

Идеальная алгоритмическая секция на Golang (ИМХО)

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

Привет, Хабр! А вы любите на собеседованиях проходить алгоритмические секции? А лайв-кодинг? Задачки такие «интересные», что на код-ревью такого бы умельца — тряпками и бранными словами. Минимум...., но коллега же. Поэтому просто попросим переделать.

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

Я очень плохо прохожу любые экзамены. Почти всегда иду не в ногу. И мне всегда казалось, что в этом процессе есть что-то неправильное. В компаниях типа Яндекса или Гугла, когда требуется набрать инженеров-программистов, причем неизвестно, на каком языке и проекте они будут работать, еще хотя бы понятно, зачем это нужно. А что делать в обычных компаниях? Где нужно писать CRUD’ы и настраивать межсерверное взаимодействие? Мне кажется, это неестественно.

Но однажды, объясняя дочери, что такое простые числа, я придумал идеальную алгоритмическую секцию для Go-разработчика. Примерно за час набросал задачу (как раз стандартное время на алгосекцию). Интересно? Добро пожаловать под кат!

Читать далее
Всего голосов 5: ↑4 и ↓1+5
Комментарии3

gRPC: проблемы и решения при переходе с REST

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

Вот уже 24 года мы используем сложный для понимания, завязанный на особенности HTTP REST-протокол. Не пора ли переходить к чему-то более современному?

Привет! Меня зовут Игорь Алексеев и я работаю бэкенд-разработчиком в компании Garage Eight. Некоторое время назад я внедрил gRPC для части своих сервисов. В этой статье поговорим о том, что такое gRPC, сравним его с возможными альтернативами, рассмотрим преимущества gRPC и пробежимся по проблемам, которые возникают почти в каждом проекте, где этот протокол приходится внедрять.

Читать далее
Всего голосов 8: ↑5 и ↓3+5
Комментарии25

Swama: CLI-инструмент для работы с Swagger/OpenAPI

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

Как Swama помогает упростить работу с API-спецификациями Swagger/OpenAPI: обзор возможностей CLI-инструмента.

Читать далее
Всего голосов 7: ↑6 и ↓1+9
Комментарии14

Смотреть или выгружать: тонкости работы с сырыми логами в CDN

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


Логи в CDN — мощный инструмент для администраторов и разработчиков, который дает доступ к детальной информации о запросах пользователей. Он помогает оптимизировать производительность, улучшить качество обслуживания, обеспечить безопасность онлайн-сервисов и доступность контента для конечных пользователей. Чтобы сделать эту работу эффективнее, мы добавили в панель управления возможность выгружать сырые логи. В этой статье разберемся, что это такое, в каких случаях такая опция может пригодиться и почему обычного просмотра логов иногда недостаточно.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+43
Комментарии3

Взаимодействие микросервисов между собой

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

Следующий возникающий в голове вопрос, когда разобрался с тем, как работать с данными в данной архитектуре (а может у кого то этот вопрос стоит первым) - как микросервисы будут взаимодействовать между собой?

В данной статье разберемся с синхронным и асинхронным взаимодействием, сложностями и разными подходами.

Читать далее
Всего голосов 8: ↑6 и ↓2+6
Комментарии7

Реализация Bloom-фильтров в Golang

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

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

В этой статье мы рассмотрим популярную структуру данных: Bloom-фильтры, они помогут минимизировать использование памяти и ускорить выполнение задач.

Читать далее
Всего голосов 12: ↑11 и ↓1+17
Комментарии3

Gitlab и Specification-as-Code: спасение от хаоса и кофеиновой зависимости

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

Для компании SimpleOne управление спецификациями требований было настоящей головной болью, требующей унификации подходов и учета потребностей разных команд. Мы стояли перед выбором: сделать свое решение для управления требованиями и сбора спецификаций или попробовать уже существующие практики. Концепция DocOps привлекла внимание тем, что помогает стандартизировать инструменты и навести порядок в хранении артефактов. В этой статье мы расскажем, как внедрили подход на основе docs as code, какие преимущества получили и какие трудности преодолели на пути.

Читать далее
Всего голосов 24: ↑21 и ↓3+24
Комментарии17

Оцениваем алгоритмы планирования процессов в операционных системах

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

Планирование процессов в операционных системах — это как умение акробата балансировать на тонкой нити. Этот незаметный сложный механизм определяет, как ваш компьютер управляет своими ресурсами. На первый взгляд все кажется просто: переключайте задачи на процессоре как можно быстрее, чтобы минимизировать время простоя и максимизировать общую производительность. Но в реальности это глубокий исследовательский вопрос, который требует учета множества факторов: приоритетов задач, доступности ресурсов и оптимизации. Давайте разбираться вместе!
Читать дальше →
Всего голосов 38: ↑32 и ↓6+37
Комментарии10

Golang: context изнутри

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

Ни для кого не секрет, что стандартный пакет context широко используется для создания ваших сервисов. В данный момент, не побоюсь этого слова, любой сервис написанный на Go использует контексты повсеместно. Мое мнение таково - если ты хочешь прогрессировать как специалист, ты должен копать все глубже и глубже. Предлагаю рассмотреть context с призмы его работы внутри.

Читать далее
Всего голосов 10: ↑7 и ↓3+7
Комментарии3

Бойлерплейт как инструмент стандартизации Go-проектов

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

Трудности в процессе разработки на Go — частая история. Чтобы их преодолеть, нам даже пришлось писать собственный бойлерплейт. Хотя казалось бы — всё уже есть, но нет, нам понадобилось имплементировать собственную хардкорную штуку. Расскажем, почему и зачем.

Читать далее
Всего голосов 9: ↑6 и ↓3+6
Комментарии3

Fuzzing-тестирование. Практическое применение

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

Привет, Хабр! Меня зовут Никита Догаев, я Backend Team Lead в команде Контента на портале поставщиков Wildberries. Мы отвечаем за карточки, которые каждый день испытывают на прочность сотни тысяч продавцов из разных стран.

В статье поделюсь своим опытом применения фаззинга для нагрузочных и интеграционных тестирований. Расскажу про генерацию текстов на армянском языке, тестирование SQL-запросов, а также можно ли использовать фаззер и unit-тестирование бок о бок, и какие баги нам удалось найти.

Читать дальше →
Всего голосов 16: ↑16 и ↓0+18
Комментарии3

Hosting Gо. Обзор вариантов и пример деплоя Golang приложения

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

Рассмотрим варианты хостинга Golang приложения и развернем код с помощью команды git push в привязанный Git-репозиторий.

Читать далее
Всего голосов 12: ↑6 и ↓60
Комментарии11

Структурированное логирование в Go с помощью Slog

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

Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчиков Google Go наконец-то представила Slog — высокопроизводительный пакет для структурированного ведения логов в стандартной библиотеке Go. Мы перевели гайд о возможностях slog.

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии5

Lua конфигурация Neovim для разработки на Go

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

В процессе знакомства с Neovim было прочитано много статей, конфигураций на Github, было просмотрено огромное количество роликов на Youtube на тему настройки, но в большинстве случаев приходилось донастраивать все под себя. В этой статье я расскажу как я настроил Neovim для разработки на Go, используя только Lua плагины и init.lua.

Читать далее
Всего голосов 12: ↑10 и ↓2+9
Комментарии13

Шаблонизатор GO text template для новичков

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

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

Все инструкции шаблона заключаются в символы.

Читать далее
Всего голосов 16: ↑10 и ↓6+7
Комментарии4

Как я пишу HTTP-сервисы спустя 13 лет работы с Go

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

Примерно шесть лет назад я написал пост о том, как пишу HTTP-сервисы на Go, и сегодня я снова хочу рассказать, как пишу HTTP-сервисы.

Тот пост оказался довольно популярным и вызвал обсуждения, повлиявшие на то, как я делаю это сегодня. И спустя годы ведения подкаста Go Time, обсуждения Go в X/Twitter и поддержки подобного кода я решил, что настало время обновить информацию.

(Если вы педант и скажете, что Go не совсем 13 лет, то я отвечу, что начал писать HTTP-сервисы на Go версии .r59.)

В этом посте рассматривается широкий спектр тем, связанных с созданием сервисов на Go

Читать далее
Всего голосов 37: ↑37 и ↓0+37
Комментарии20

Domain Driven Design в Go – это почти не больно

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

Как выглядят паттерны DDD (Domain Driven Design) в большом проекте? А самое главное, стоит ли их вообще использовать? Рассмотрим, какими инструментами можно реализовать DDD на Go и оценим, насколько это больно.

Меня зовут Илья Сергунин, я backend-сочинитель в Авито: занимаюсь тем, что передаю смартфоны в хорошие руки. В этой статье попытаюсь объяснить, как можно натянуть DDD на Go без синтаксического сахара и магии Java-подобных языков, и без больших крутых ORM c Data mapper, которые также отсутствуют в Go.

Читать далее
Всего голосов 21: ↑20 и ↓1+20
Комментарии10
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность