Обновить
1
0

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

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

Пишем свою мини-СУБД на Golang (Часть 1)

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

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

Читать далее

Анонимная сеть в 200 строк кода на Go

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

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

Вследствие этого, можно сказать just-for-fun, у меня появился вопрос: можно ли реализовать анонимную сеть настолько малую, чтобы её программный код смог понять даже начинающий программист за короткое время?

Читать далее

Оптимизация памяти и управление сборщиком мусора в Go: GOGC и GOMEMLIMIT

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

Всем привет, меня зовут Нина Пакшина, я работаю Golang разработчиком в Лента Онлайн в команде операций.

В данной статье я расскажу о том, как управлять сборщиком мусора в Go, как оптимизировать потребление памяти приложением и защититься от ошибки out-of-memory.

Читать далее

Обработка ошибок в go в 2023 г

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

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

Рассмотрим все варианты, которые можно встретить в проектах на golang в 2023 году.

Читать далее

Простые правила, которые помогают мне писать на Go без побочных эффектов

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

Роб Пайк сказал, что простое лучше, чем сложное. Я бы добавил: простое лучше, чем прикольное. Ведь Go спроектирован, чтобы писать программы в простом стиле. 

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

Читать далее

Учимся разрабатывать REST API на Go на примере сокращателя ссылок

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

В этой статье мы напишем полноценный REST API сервис — URL Shortener — и задеплоим его на виртуальный сервер с помощью GitHub Actions.

Говоря «полноценный», я имею в виду, что это будет не игрушечный проект, а готовый к использованию:

  • мы выберем для него актуальный http-роутер,
  • позаботимся о логах,
  • напишем тесты: unit-тесты, тесты хэндлеров и функциональные,
  • настроим автоматический деплой через GitHub Actions и др.

Но важно понимать, что «готовый к продакшену» != «энтерпрайз».

Кратко обо мне: меня зовут Николай Тузов, я много лет занимаюсь разработкой на Go, очень люблю этот язык. Также веду свой YouTube-канал, на котором есть видеоверсия текущего гайда, с более подробными объяснениями.
Читать дальше →

Погружение в индексы PostgreSQL

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


Автор статьи: Артем Михайлов

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

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

Микросервисы в банке: на чем их лучше писать? Java/Kotlin, а может Go?

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

В июле в офисе РСХБ-Интех (технологической дочки Россельхозбанка) состоялся бесплатный митап для Java-разработчиков — RSHB Backend Dev Meetup. Обсудили Kotlin, Go, маппинг и разные аспекты бэкэнд-разработки. В числе докладчиков выступал Иван Кочергин, руководитель центра собственной разработки РСХБ-Интех. Иван более 10 лет занимается разработкой на Java, последние три года — на Kotlin. В своем докладе он сравнил, на чем лучше писать микросервисы в банке: Java, Kotlin или Go. Делимся расшифровкой доклада. Запись всего митапа можно посмотреть на Rutube.

Читать далее

Go: особенности написания конкурентных программ

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

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

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

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

Читать далее

Как построить систему, способную выдерживать нагрузку в 5 млн rps

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

Всем привет! 

Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.

Читать далее

Как работает PGO-оптимизация в Go «на пальцах»

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

В феврале появилась новая версия Golang — 1.20. Разработчики представили в предварительной версии инструмент оптимизации — profile-guided optimization, или коротко PGO. Этот подход позволяет оптимизировать процесс компиляции приложения за счет использования информации, собранной при профилировании сборки в момент выполнения программы в рабочем окружении.

В итоге, опираясь на собранные данные, компилятор в состоянии принимать более качественные решения оптимизации при очередном запуске программы на основании частоты использования блоков кода. По заверениям разработчиков использование PGO позволяет увеличить производительность приложения на 2-4%. Так ли это на самом деле? Разберёмся в статье.

Читать далее

Пишем на Go как в Google. Лучшие практики — часть первая

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

Рекомендации по стилю для проектов Google с открытым исходным кодом


Лучшие практики Go


Этот документ — часть документации по стилю Go в Google. Он не является ни нормативным, ни каноничным, это дополнение к «Руководству по стилю». Подробности смотрите в Обзоре.


О документе


Здесь приведены рекомендации по лучшим практикам применения требований «Руководства по стилю» для Go. Это руководство охватывает общие и распространенные случаи, но не может применяться к каждому частному случаю. Обсуждение альтернатив, по возможности, включено в текст руководства вместе с указаниями о том, когда они применимы, а когда — нет.


Полная документация руководства по стилю описывается в обзоре.

Читать дальше →

Трудности перевода. Как научить микросервисы общаться и не ссориться

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

Привет! Меня зовут Саша Сусиков. Я проверяю клавиатуры на прочность около 10 лет из  них последние 2 года с помощью Go. Сейчас я участвую в разработке платформы СберМаркета, где создаю инструменты, которые упрощают жизнь разработчикам. Эта статья для тех, кому предстоит настроить процесс взаимодействия сервисов в компании и вы ищете, как не наломать дров.

Читать далее

Разработка игр на Go: шейдеры

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

Давненько я не писал никаких статей на Хабре.


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


Сегодня я расскажу вам о шейдерах в Ebitengine. Большая часть примеров будет взята из Roboden и Decipherism (обе игры имеют открытые исходные коды и вы можете найти их на гитхабе).


Читать дальше →

Создаем скелеты микросервисов быстро и без боли

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

При создании новых сервисов повсеместно используют шаблонизацию, в крайнем случае — в формате ручного копирования кода. Но ручное копирование не исключает ошибок, а еще это муторно и долго. Быстрее и приятнее ответить CLI-утилите на несколько вопросов о будущем проекте и получить на выходе готовый «скелет» сервиса. Остается только начать писать бизнес-логику.

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

Читать далее

Лучшие Golang-фреймворки в 2023 году

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

Revel: для быстрой разработки и масштабируемости

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

Читать далее

Облегчаем жизнь разработчиков на Go: полезные советы и лайфхаки для начинающих

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

В #CloudMTS мы активно используем Go. Например, Go основной язык в балансировщике нагрузки (GSLB), в сервисах создания и управления кластерами PostgreSQL и Redis.

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

Сегодня поговорим об инструментарии и подходах, которые помогают получить читаемый и поддерживаемый код, а вместо с ним — производительные и надежные сервисы. Backend-разработчик в подразделении DBaaS Герман Лепин (german_lepin) выступил экспертом для нашей статьи.

Читать дальше →

Создаём репозиторий в Go через менеджер транзакций

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

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

Читать далее

[По полочкам] Кэширование

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

Всем привет! Меня зовут Илья Денисов, я занимаюсь backend разработкой уже более пяти лет и сейчас пишу на языке go. Сегодня я предлагаю вам поговорить о кэшировании. Постараюсь рассказать о базовых концепциях, а также затронуть ряд особенностей, неочевидных на первый взгляд.

Читать далее

Несколько мыслей по подготовке к алгоритмической части собеседования

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

Всем привет! На связи снова Петр Коробейников, техлид сервисов DBaaS for Redis и RabbitMQ (релиз скоро) в #CloudMTS. В этой статье хочу поделиться с вами некоторым опытом подготовки к прохождению алгоритмических интервью. Конечно, статья не про хардкорные алгоритмы. Это, скорее, эскиз к роадмапу по подготовке. Тем не менее, я надеюсь, он будет полезен новичкам (и даже некоторым «старичкам»).

Готовьтесь


Это первый и самый важный совет. Если вы думаете, что, ворочая базами в десятки терабайт, вывозя 50-100k RPS к фронту, обрабатывая десятки миллионов сообщений в Kafka, вы сможете перенести свой опыт на решение алгоритмических задач, то могу вас немного расстроить.

Двоичное дерево без подготовки вы сможете покрутить в лучшем случае только на неприличном месте. Это чем-то похоже на экзамен по математике или физике: вы не сможете вывести формулу, если не знакомы с теорией и не решали задачи заранее. И вас будет ждать обидный провал.
Читать дальше →

Информация

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