Обновить
1
0

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

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

Конспект по архитектуре ПО и System Design

Уровень сложностиСредний
Время на прочтение1 мин
Охват и читатели26K

Это компиляция основных знаний по проектированию архитектуры ПО, которые мне удалось собрать. Конспект доступен по ссылке на Miro-доску.

Можно сказать, что это взгляд на System Design с точки зрения фронтенд-разработчика, который пытается разобраться в теме.

Читать статью целиком

PostgreSQL Connection Pooling: Наш опыт и с чем его едят

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

Как обеспечить высокую производительность PostgreSQL и эффективно управлять соединениями? В этой статье мы разберёмся, как правильно настроить пул соединений, какие преимущества он даёт и как избежать распространённых ошибок. Делимся нашим опытом перехода с MongoDB на PostgreSQL и работы с пулом в Go с использованием pgx.

Читать далее

Перехват данных из libpam (аутентификация в OpenSSH, passwd) с помощью Golang и eBPF

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели1.2K

В этой статье я расскажу о том, как использовать технологии eBPF и uprobes для мониторинга процессов аутентификации в Linux-системах. На примере библиотеки libpam, которая используется в таких инструментах, как OpenSSH и команда passwd, я покажу, как с помощью Golang и динамического трассирования можно перехватывать учётные данные в реальном времени. Подробно опишу создание среды для экспериментов, настройку программ на eBPF и организацию мониторинга без изменения исходного кода приложений.

Читать далее

GO: Как и почему мы отказались от Nest.JS

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

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

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

Почему Go?

Читать далее

HTTP-сервер на Go

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

HTTP-сервер на языке программирования Go. Начнём с HTTP-протокола, рассмотрим основные концепции создания сервера, далее напишем практический пример.

Читать далее

Базовая архитектура сервиса на GO

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

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

Читать далее

Проблемы Nginx в организации микросервисной архитектуры IT-проекта. Способы их решения

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

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

Читать далее

Ограничение доступа к метрикам Node Exporter по IP-адресам

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

В современных инфраструктурах информационной безопасности одной из ключевых задач является ограничение доступа к системным метрикам. По умолчанию Prometheus Node Exporter предоставляет метрики в открытом доступе, что может привести к утечке информации о состоянии системы или атаке на сервис мониторинга.

Для повышения безопасности необходимо реализовать возможность ограничения доступа к метрикам только для определённых IP-адресов, что позволит контролировать, какие клиенты могут запрашивать метрики.

В данной статье рассмотрим, как внести соответствующие изменения в код Node Exporter, а также процесс сборки обновленного пакета.

Изменение кода

Добавление нового флага командной строки

Для управления доступом по IP-адресам добавим новый аргумент --web.client-ip-only, который будет содержать список разрешённых IP-адресов, разделённых запятыми. Если параметр не указан, метрики будут доступны для всех.

В файле main.go регистрируем новый флаг:

поехали...

Как оформить профиль в LinkedIn, чтобы к тебе приходили HR от международных компаний

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

Все началось с того, что мне как программисту, стало интересно посмотреть на свои возможности на международном рынке труда.

При этом я не являюсь outstanding engineer, а скорее обычный прикладной программист, который до этого думал, что на международном рынке, где бОльшая конкуренция, мне делать почти нечего.

Оказалось, что «взять и посмотреть» не так просто, а нужно чтобы тебя заметили. Отлично для этого подойдет LinkedIn. В статье расскажу как заставить его работать на тебя.

Читать далее

Что нужно знать, чтобы писать быстрые SQL-запросы

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

Привет, я Марк Шевченко, ведущий разработчик, ИТ‑холдинг Т1. SQL — мощный декларативный язык, который скрывает от программиста большинство технических деталей. Проектировщики языка предполагали, что его простота поможет не‑программистам работать с данными самостоятельно. К сожалению, простота имеет свою цену, и эта цена — производительность. Некоторые несложные запросы работают слишком медленно, что становится неприятным сюрпризом как для программистов, так и для пользователей.

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

В этой статье я расскажу о производительности запросов SELECT. Акцент буду делать не на подробности конкретных реализаций, а на фундамент. В то же время буду иллюстрировать общие положения реальными примерами.

Читать далее

Оптимизация JOIN в PostgreSQL

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

Хотите ускорить работу сложных SQL-запросов в PostgreSQL? 🚀В этой статье мы разберем, как правильно использовать JOIN, какие методы соединения выбирает PostgreSQL и как их оптимизировать. Узнайте, как индексы, статистика и параметры конфигурации влияют на производительность! 🔥

Читать далее

Книга: «Go: идиомы и паттерны проектирования, 2-е изд.»

Время на прочтение4 мин
Охват и читатели4.4K
imageПривет, Хаброжители!

К выходу перевода книги «Go: идиомы и паттерны проектирования, 2-е изд.» мы долго думали, чем же удивить читателя Хабра. Так мы возьмём рецензию Томаса Свояновского — full-stack разработчика с восьмилетним опытом. Он в рецензии постарался учесть отличия второго издания книги от первого, подробно объяснил, о чём Джон Боднер писал и какие знания вкладывал на страницы.

Приятного чтения!
Читать дальше →

Ordered map на Go

Время на прочтение2 мин
Охват и читатели2K

Omap — это пакет Golang для работы с потокобезопасными упорядоченными map. Упорядоченная map содержит map golang, list и mutex для выполнения функций упорядоченной map.

Упорядоченная map— это map, которая запоминает порядок элементов. Map можно итерировать для извлечения элементов в том порядке, в котором они были добавлены.

Читать далее

Паттерн Конкурентного генератора в Go: Наглядное руководство

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

Генератор в Go позволяет асинхронно обрабатывать данные без перегрузки памяти. Разбираем основы работы.

Читать далее

Видишь суслика? А он есть! Как главная страница Яндекса переезжала на Go

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

Переезд большого сервиса с Perl на Golang едва ли кому-то покажется простой задачей. А теперь представьте, что это главная страница Яндекса, на которую ежедневно заходят миллионы пользователей. И что продукт постоянно дорабатывается, а значит, нельзя взять и остановить разработку на пару лет переезда. Представили? Сложно? А вот, оказывается, всё возможно. 

Привет, Хабр! Меня зовут Вячеслав Круглов. Я руковожу одной из команд разработки бэкенда главной страницы Яндекса. Расскажу, как мы переписывали бэкенд с Perl на Go, поделюсь интересными подробностями переезда, а также сравню компоненты и продуктовые блоки.

Читать далее

А где память? Утечка goroutine и как ее пофиксить

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

Утечка горутин в Go происходит, когда горутина продолжает существовать и потреблять ресурсы, даже если она больше не выполняет полезной работы или не может завершиться. Это может произойти по разным причинам.
Мы рассмотрим 3 примера из которых: 2 будут на каналах, 1 с использованием mutex.

Читать далее

Параллелизм в Go тестах: все, что нужно знать о -p, -parallel и t.Parallel()

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

В Go есть три способа управления параллельностью тестов:

Короткий гайд о -p, -parallel и t.Parallel а также бонус для любителей параллельного программирования

Читать далее

Как не укусить себя за хвост во время написания функциональных тестов на Go

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

Залог успеха любого программного решения — хорошее покрытие его функциональными тестами. Каждая полностью покрытая функция — минус одна потенциальная ошибка в работе проекта или даже больше. Однако при написании тестов в проекте, насчитывающем тысячи строк кода и множество пакетов (packages), можно столкнуться с различными трудностями.

Я Роман Соловьев, ведущий ИТ‑инженер в отделе RnD и готовых решений управления развития продукта в СберТехе. Сегодня расскажу, с какими проблемами мы столкнулись при написании тестов к проекту на Go, активно использующему Docker‑контейнеры, и как нам удалось их решить.

Эта статья будет полезна тем, кто пишет модульные тесты на Go, особенно для проектов, использующих Docker‑контейнеры. Я постараюсь просто и понятно объяснить официальный code‑style для модульных тестов, а также подсветить подводные камни, с которыми можно столкнуться при их написании.

Читать далее

Лучшие китайские нейросети — бесплатно и без VPN

Время на прочтение8 мин
Охват и читатели43K

В последние годы Китай продемонстрировал поразительный технологический скачок, создав ИИ-инструменты, которые не просто конкурируют с западными аналогами, но и предлагают уникальные решения, меняющие правила игры. От распределённых систем обработки данных до инновационных моделей естественного языка — китайские разработчики научились сочетать скорость, масштаб, точность и экономию, создавая продукты, которые уже обходят западные аналоги. Я собрал топ самых впечатляющих китайских ИИшек, которыми лично сам пользуюсь. Осторожно! Статья для тех, кто просто не хочет потерять ИНТЕРЕСНЫЕ ССЫЛКИ. Подробнее о каждой нейросети— далее в статье.

Читать далее

Микросервисы на пальцах: API‑Gateway, API‑Composition, KrakenD, FastAPI

Время на прочтение14 мин
Охват и читатели17K

Количество современных приложений, построенных на микросервисной архитектуре, очень велико. А сами микросервисы стали уже больше обыденностью, чем какой-то редкостью. В этом материале рассмотрим API-Gateway, BFF и композицию API — три базовых шаблона, которые можно встретить почти в каждой системе с микросервисами. Наша задача — понять, для чего они нужны, какие проблемы решают и создают. Пройдемся по теории и развернем реальный пример на инфраструктуре.
Читать дальше →

Информация

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