Pull to refresh
1
0
Send message

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

Level of difficultyMedium
Reading time6 min
Views2.1K

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

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

Читать далее
Total votes 12: ↑11 and ↓1+17
Comments3

Собиратель конфигураций на Go

Level of difficultyEasy
Reading time9 min
Views2.1K

Начну с того, что я C#-разработчик, но Go мне очень нравится и один из проектов я решил для разнообразия и расширения знаний написать в связке Go + React.js + MongoDB. И тут я понял, что не могу найти библиотеку пакет для чтения единых настроек конфигурации из разных источников. Часть настроек была в .env, часть - в переменных окружения. Хотелось получить экземпляр одной структуры со всеми значениями, выполнив какую-то одну функцию. Возможно, плохо искал. Но, не найдя, решил написать своё. Тем более у меня уже был опыт работы над подобным open-source проектом, но для C#.

Я никогда ранее не писал пакетов для Go, поэтому просто начал писать код как для программы, чтобы просто смотреть, запускать, тестировать. Понять, насколько это реализуемо. А потом уже оформил в пакет.

Посмотреть, чего он там нагородил
Total votes 5: ↑4 and ↓1+4
Comments12

Написание функционального тестирования в Go

Level of difficultyEasy
Reading time9 min
Views3K

Не все знают, как писать функциональные тесты. В этой статье будут библиотеки, фишки про функциональные тесты, а самое главное — попрактикуемся их писать на примере Rest API.

Читать далее
Total votes 4: ↑4 and ↓0+7
Comments9

Применения Continuation-passing style в Go

Level of difficultyMedium
Reading time8 min
Views4.8K

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

Читать далее
Total votes 20: ↑18 and ↓2+18
Comments8

Погружение в параллелизм в Go

Reading time10 min
Views5.5K

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

Эта статья является неким сборником многих статей про все, что связано с параллелизмом в Go, например: горутины, каналы, select и многое другое.

Я хотел углубиться в тему горутин с параллелизмом и, слушая на фоне "The Doors", поглощал информацию и выделял интересные мысли из статей

Надеюсь, Вы найдете для себя то, что искали.

Погрузиться в параллелизм
Total votes 11: ↑10 and ↓1+13
Comments3

Разбираемся, что такое S3 и делаем простое объектное хранилище на Go

Reading time11 min
Views17K

Привет, Хабр! С вами снова Матвей Мочалов из cdnnow!, и в этом посте мы не будем разбираться с FFmpeg - в этот раз наша рубрика «Эээээксперименты!» будет затрагивать объектные хранилища. Разберёмся, чем S3 отличается от S3, а также почему не всё то S3, что называется S3. А заодно эксперимента ради сделаем своё собственное простенькое объектное хранилище на любимом языке всех DevOps и SRE-инженеров – Go.

Читать далее
Total votes 27: ↑24 and ↓3+24
Comments6

Трассировка на Go

Level of difficultyEasy
Reading time8 min
Views1.8K

Всем привет, этой мой первый пост на данной платформе, прошу любить и жаловать.

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

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments0

Jira, Golang и немного фантазии: строим конвейер для создания новых сервисов

Level of difficultyMedium
Reading time7 min
Views1.9K

Привет! Меня зовут Андрей, я Head of Platform в финансовом маркетплейсе Банки.ру. Со мной Борис Зырянов, go/php разработчик. Сегодня расскажем о том, как мы разработали и внедрили процесс создания сервисов одной кнопкой. 

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

В материале расскажем: 

– как работал старый подход и с чем были сложности; 
– какая схема пришла на замену и как все работает; 
– что планируем делать дальше.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments0

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

Reading time10 min
Views5.8K

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

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

Читать далее
Total votes 40: ↑40 and ↓0+54
Comments20

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

Level of difficultyEasy
Reading time5 min
Views6K

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

Читать далее
Total votes 20: ↑19 and ↓1+19
Comments45

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

Level of difficultyMedium
Reading time6 min
Views4.8K

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

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

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

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

Читать далее
Total votes 5: ↑4 and ↓1+5
Comments3

Администрирование PostgreSQL для начинающих (часть 1)

Level of difficultyEasy
Reading time33 min
Views16K

Эта статья предназначена для системных администраторов, которые хотят научиться работать с PostgreSQL, но не знают, с чего начать.

Читать далее
Total votes 16: ↑12 and ↓4+10
Comments29

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

Level of difficultyMedium
Reading time6 min
Views7.1K

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

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

Читать далее
Total votes 8: ↑5 and ↓3+5
Comments25

Рецензия на книгу «100 ошибок в Go и как их избежать» Тейва Харшани

Level of difficultyEasy
Reading time4 min
Views2.5K

Привет! Меня зовут Макс, я Go-разработчик в IT-компании SimbirSoft. Хочу поделиться своим отзывом на книгу «100 ошибок в Go и как их избежать» Тейва Харшани. Книга заинтересовала меня тем, что автор фокусирует свое внимание на ошибках, как распространенных, так и более редких.

Читать далее⚡
Total votes 13: ↑9 and ↓4+10
Comments4

go-collections: структуры данных для Go с поддержкой дженериков

Level of difficultyEasy
Reading time10 min
Views2.5K

Язык программирования Go предоставляет базовые контейнеры, но часто разработчикам необходимы более специализированные структуры данных. Пакет go-collections предлагает реализации распространенных структур данных с поддержкой дженериков, что делает код более выразительным и удобным.

В этой статье мы подробно рассмотрим возможности пакета go-collections, его установку и примеры использования различных структур данных.

Читать далее
Total votes 13: ↑8 and ↓5+8
Comments21

Пользуемся Docker, не выходя из Go

Level of difficultyMedium
Reading time12 min
Views5.5K

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

Зовут меня Егор, я программирую на Go и в этой статье хочу поделиться информацией про Docker и Golang.

Кто такой Докер? Как заявляет сама компания, Докер — № 1 программа по контейнерезации для разработчиков ПО. В этой статье я не буду объяснять, что это, зачем и почему именно он, для этого есть как офиц. документация, так и хорошие статьи на Хабре. Если кратко — то Докер — это инструмент, который позволяет запускать программы в некой песочнице(контейнере) с целевой ОС — как правило линукс. Самое главное преимущество Докера — это упаковывать все нужное для твоей программы(например: зависимости) в один модуль. И ресурсов эта вещь тратит намного меньше, чем та же виртуальная машина.

Зачем нужен Docker SDK? Самая важная причина — тестирование. Можно собирать метрики, делать редирект трафика, автоподъем контейнеров, анализировать логи в реальном времени, создавать образы и еще кучу всего, что упрощает тестирование. Я постараюсь охватить эти пункты в этой статье.

Читать далее
Total votes 9: ↑4 and ↓5+3
Comments11

Как сочетать Next.js и Go: основы

Level of difficultyEasy
Reading time6 min
Views3.1K

В современной веб-разработке перед разработчиком в основном стоит задача создать приложения, которые не только быстро загружаются, но и дают плавный пользовательский опыт. Сочетание Next.js и Go предлагает мощное решение для этой задачи.

Next.js, с его возможностями статической генерации и серверного рендеринга, позволяет создавать высокопроизводительные интерфейсы, которые легко оптимизируются для поисковых систем. Go, в свою очередь, дает надежный бэкенд, способный обрабатывать множество запросов одновременно.

В этой статье рассмотрим, как интеграция этих двух технологий может помочь вам построить динамические сайты.

Читать далее
Total votes 10: ↑7 and ↓3+10
Comments5

Как ускорить программу, не переписав ни строчки кода: PGO для Go-разработчиков

Level of difficultyHard
Reading time16 min
Views3.1K

Привет, Хабр! Я Кирилл Кузин — старший разработчик компании Ви.Tech, IT-дочки маркетплейса ВсеИнструменты.ру. Мы поддерживаем 4 кластера Kubernetes, каждый из которых включает от 200 до 215 нод. Ежемесячно выполняется более 1 миллиона пайплайнов, а на наш сайт ежедневно заходят до 2 миллионов уникальных пользователей.

И в этой статье расскажу о том, как оптимизировать работу сервиса с помощью PGO (Profile-Guided Optimization) - инструмента, изучаемого нашей компанией. На примере кейса разберем, как использование этого инструмента ускоряет выполнение задач и снижает нагрузку на систему.

Что делает PGO? Как он влияет на производительность? Мы сравним результаты работы с и без него, а в конце подведем итоги, чтобы дать объективную оценку результатам.

Узнать про PGO
Total votes 10: ↑10 and ↓0+13
Comments6

Строим ETL-конвейер для машинного обучения с помощью Kafka, Clickhouse и Go

Reading time16 min
Views4.3K

В этой статье я поделюсь с вами своим опытом использования Golang, Kafka и Clickhouse на примере простого ETL-конвейера для параллельной передачи JSON-данных в базу данных с последующим прогнозированием температуры на основе машинного обучения.

Читать далее
Total votes 8: ↑7 and ↓1+9
Comments3

Массивы и слайсы в Go — для собеседований

Level of difficultyEasy
Reading time6 min
Views2.5K

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

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

Ух, понеслись!
Total votes 9: ↑8 and ↓1+12
Comments16
1
23 ...

Information

Rating
Does not participate
Registered
Activity