Обновить
1
0

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

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

Приручаем монстров в Go: боремся с разросшимся Makefile и монолитом — без распила на микросервисы

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

Мы в ответе за тех, кого разрастили. Go-разработчики из YADRO, Ви.Tech и Weborama  рассказали, как работать с проектами, которые без должного внимания стали бы техдолгом. А еще — поделились опытом генерации стабов и организации нетривиального стриминга данных на Go.

Читать далее

Суть Go: Time

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

Как не утонуть в параллельных вызовах и держать время под контролем? В статье разберём throttle и backpressure, научимся использовать таймеры, тикеры и таймауты без лишних задержек и зависаний — всё на простых примерах.

Читать далее

Алгоритм Кнута-Морриса-Пратта для поиска подстрок на Go

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

Поиск подстроки в строке — важная задачка в текстовой обработке. В Go стандартная библиотека имеет strings.Index, но он использует простой перебор символов, который работает с O(n × m) в худшем случае, где n — длина текста, m — длина подстроки.

Алгоритм Кнута-Морриса-Пратта решает эту проблему, используя префикс-функцию, которая позволяет пропускать заведомо ненужные сравнения. В результате его сложность O(n + m), что делает его подходящим для больших текстов и множественных поисковых запросов.

Читать далее

Гармония железа и кода: ускоряем Go, проектируя приложение с учетом архитектуры процессора

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

Представьте, что ваш код работает на 30% быстрее, при этом вы почти его не меняли. Звучит как магия? На самом деле это может стать реальностью, если учитывать архитектуру процессора при проектировании приложения и данных. 

Привет! Я Александр Шакмаев — технический лидер в Cloud.ru. В статье предлагаю разобраться, как небольшие изменения, основанные на знании архитектуры процессора, могут привести к значительному ускорению Go. Готовы раскрыть потенциал вашего кода? Тогда переходите под кат.

Заглянуть под кат

FissionGo: как запускать Go-функции в Kubernetes

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

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

Сегодня будем разбираться с FissionGo — фреймворком, который обещает избавить нас от работы с деплоями, контейнерами и YAML-манифестами.

Читать далее

Механика горутин и каналов в Golang: разбор с примерами

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

Статья объясняет горутины и каналы в Go с наглядными визуализациями, показывая, как они работают и взаимодействуют для конкурентности.

Читать далее

Как работает HTTP/2 и как использовать его в Go

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

HTTP/2 – это значительное обновление по сравнению с HTTP/1.1, решающее его ключевые ограничения, такие как блокировка Head-of-Line (HoL) и неэффективность многократных соединений. В этой статье мы разберёмся, почему HTTP/2 стал стандартом, как он устроен и чем отличается от предыдущей версии протокола. Мы рассмотрим ключевые концепции HTTP/2: мультиплексирование, сжатие заголовков HPACK, бинарный формат фреймов и серверный push.

Во второй части статьи мы покажем, как включить HTTP/2 в Go-приложениях. Вы узнаете, как правильно настроить HTTP-сервер с поддержкой TLS и ALPN, какие пакеты использовать и какие нюансы учитывать при разработке. Также мы обсудим практические аспекты работы с HTTP/2, возможные проблемы и пути их решения.

Читать далее

Непостижимая эффективность Кубика-Рубика в педагогике преподавания простой английской фразы

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

Непостижимая эффективность Кубика-Рубика в педагогике преподавания простой английской фразы или обещание в скором времени рассинкретизировать английский глагол и показать всем какие они, оранжевые слова.

Хочу завтра же увидеть оранжевые слова

Benchmark — тесты в Go

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

Позвольте мне начать с вопроса: Как бы вы протестировали производительность части кода или функции в Go? Если вы уже опытный разработчик здесь вы ничего нового не прочитаете, но для новичков это отличная возможность узнать что-то новое и попрактиковаться.

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

Давайте начнём

Читать далее

P2P на Go: библиотека libp2p

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

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

Сегодня рассмотрим библиотеку libp2p в Go. libp2p — это модульная библиотека для построения P2P-сетей. Libp2p выросла из проекта IPFS, но теперь активно используется в блокчейнах, мессенджерах и других децентрализованных приложениях. Главная фича библиотеки — она даёт возможность полностью контролировать P2P-коммуникации.

Libp2p разделена на несколько модулей, которые можно подключать по мере необходимости.

Читать далее

Как рождаются, живут и умирают горутины

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

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

Читать далее

Горизонтальное масштабирование базы данных. Репликация. Партицирование. Шардирование

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

В современном мире данных нагрузка на базы данных стремительно растёт. Когда один сервер перестаёт справляться с объёмом запросов, встаёт вопрос о масштабировании: как эффективно распределить нагрузку, сохранив высокую производительность и доступность?

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

Читать далее

Паттерны проектирования в Golang

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

Рассмотрим в этой статье несколько наиболее распространенных паттернов проектирования в Golang, дополнив их практическими примерами.

Фасад, Стратегия, Прокси, Адаптер

Читать далее

Как учить язык быстро и самостоятельно

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

Я более‑менее знаю пять языков, на четырех пишу, читаю и общаюсь, на одном читаю и криво общаюсь, еще пару-тройку языков понимаю — они в архиве. Все, что здесь написано, это мой личный опыт, а не «байки из интернета» или компиляция ИИ.

Когда я выучил еще три в дополнение к своему родному, то думал, что теперь все знаю о том, как учить языки. Когда выучил еще один и начал два других, некоторые вещи пришлось пересмотреть. Думаю, это зависит от количества, и полиглоты, владеющие 10–15 языками, скорее всего, будут иметь уже другое мнение насчет учебы. Так что сейчас я делюсь наработками, которые у меня есть на данном этапе. Если же вы знаете меньше пяти языков, подумайте хорошо, если вы хотите оспорить моё мнение.

Узнать больше

Готовим слайсы в Go: подробно о динамических массивах, строчках и ускорении

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

Привет, Хабр! Меня зовут Владислав Белогрудов, я работаю в команде разработки и сервисов управления в YADRO. Мой текущий проект — информационная система на Go. 

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

Под катом рассмотрим, что такое слайсы и string (строки) изнутри, как использовать их с sync.Pool для ускорения — без «внутренностей» последнего, но с точки зрения клиента. Расскажу о полезных трюках, приведу значения измерений производительности и познакомлю с альтернативными решениями. 

Читать далее

Go 1.24

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

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

Читать далее

Разбираемся в проектировании микросервисов. Основные паттерны (Часть 2)

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

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

В прошлой статье мы начали разговор о паттернах микросервисов (Часть 1). Ну что ж, давайте продолжим!

Паттерн «API-шлюз» (API Gateway)

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

Читать далее

Как ChatGPT может помочь джуну: практический гайд

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

Ситуация: Ты джун, и тебе дают задачу на разработку. Часто это может быть фикс багов или минорная доработка. Ты еле развернул проект, чуть-чуть разбираешься в синтаксисе, но что значат все эти многобукаф и строчки кода – пока понятия не имеешь.

Читать далее

Как перейти от монолита к микросервисам без сложностей и рисков? Четыре проверенных паттерна

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

При переходе от монолитной к микросервисной архитектуре разработчики часто сталкиваются с несколькими проблемами.

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

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

Использование в практике таких паттернов как Strangler Fig Pattern, Parallel Run Pattern, Decorating Collaborator Pattern и Change Data Capture позволяет разработчикам значительно снизить риски и проблемы, возникающие при таком сложном переходе.

Давайте рассмотрим основные концепции этих паттернов.

Читать далее

Так ли плох Go в глазах C++ разработчика: пишем микросервис и учимся на ошибках

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

Миллионы пользователей ежедневно заходят на Яндекс Маркет. И одна из ключевых задач сервиса — показывать им точные сроки доставки на поиске и в корзине. При пиковых нагрузках это около 40 тысяч запросов в секунду. Как обеспечить столь быструю и точную обработку данных о доставке?

Привет, Хабр! Меня зовут Никита Деревянко. Я руковожу разработкой логистической платформы Яндекс Маркета. Люблю играть в шахматы, бильярд и программировать. Изучаю японский язык, чтобы тренировать мозг и смотреть аниме в оригинале. Расскажу о том, как построить логистический runtime на Go, не являясь Golang-разработчиком. Рассмотрим, как справиться с большим объёмом данных и какие преимущества может (или не может) предложить Golang для масштабной задачи.

Читать далее

Информация

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