Search
Write a publication
Pull to refresh
1
0
Send message

Практика Go — Обработка ошибок (2 часть)

Level of difficultyEasy
Reading time17 min
Views6.5K

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

Читать далее

Как с помощью практики на LeetCode я получил несколько офферов

Level of difficultyEasy
Reading time4 min
Views56K

После рассказа о том, как я получил работу в Amazon, в этом посте на reddit мне задали множество вопросов о том, как мне помог LeetCode в подготовке к собеседованиям.

В статье я отвечу на эти вопросы.

Сколько времени это заняло?

Я начал готовиться за 2-3 месяца до собеседований в BigTech. В то время я тратил по 2-3 часа в день на подготовку.

Читать далее

Основы тестирования Go: простые тесты, testify и визуализация покрытия

Reading time6 min
Views39K

Привет Хабр!

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

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

Читать далее

Погружение в мокирование gRPC сервисов в Go: Тестирование без выполнения RPC вызовов

Level of difficultyEasy
Reading time9 min
Views6K

Для чего я это написал

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

Читать далее

table-driven testing в Go

Level of difficultyEasy
Reading time4 min
Views5.1K

Привет Хабр!

Продолжая тему тестирования на Go, сегодня поговорим про table-driven тестирование.
У нас есть основная проблема: дублированный тестовый код.

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

Читать далее

Go scheduler. Простыми словами

Level of difficultyEasy
Reading time6 min
Views39K

В данной статье расскажу о планировщике Go. Основу материала взял из книги Уильяма Кеннеди Ultimate Go. Вначале поговорим о планировщике OS, после перейдем к планировщику Go и сравним их.

Читать далее

3 доклада для тех, кто недавно с Go: материалы митапа в Петербурге

Level of difficultyEasy
Reading time2 min
Views6K

«Что самое крутое вы сделали за год, что пишете на Go», вопрос из зала после первого доклада.

«Записал новую машину на жену», остроумный комментарий к этому моменту в трансляции.

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

Читать далее

Типы, методы и интерфейсы

Level of difficultyEasy
Reading time13 min
Views7.5K

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

В статье вы узнаете про:

- Объявление собственных типов;
- Добавление методов к типам;
- Объявление и использование интерфейсов.

Читать далее

Эффективная работа с битами при помощи Go

Level of difficultyHard
Reading time12 min
Views18K

Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования.
Читать дальше →

Атомики в Go: особенности внутренней реализации

Reading time5 min
Views22K

Атомики в Go - это один из методов синхронизации горутин. Они находятся в пакете стандартной библиотеки sync/atomic. Некоторые статьи сравнивают atomics с mutex, так как это примитивы синхронизации низкого уровня. Они предоставляют бенчмарки и сравнения по скорости, например Go: How to Reduce Lock Contention with the Atomic Package.

Однако важно понимать, что, хотя это примитивы синхронизации низкого уровня, они разные по своей сути. Прежде всего атомики являются "low-level atomic memory primitives", как отмечено в документации, то есть являются примитивами низкого уровня реализующих атомарные операции с памятью. В этой статье я расскажу про некоторые особенности их внутренней реализации и отличие от мьютексов.

Читать далее

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

Level of difficultyMedium
Reading time15 min
Views20K

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

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

Читать далее

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

Level of difficultyMedium
Reading time11 min
Views24K

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

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

Читать далее

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

Level of difficultyMedium
Reading time6 min
Views19K

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

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

Читать далее

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

Level of difficultyEasy
Reading time7 min
Views12K

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

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

Читать далее

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

Level of difficultyMedium
Reading time30 min
Views90K

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

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

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

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

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

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

Level of difficultyEasy
Reading time9 min
Views49K


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

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

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

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

Level of difficultyMedium
Reading time19 min
Views12K

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

Читать далее

Information

Rating
Does not participate
Registered
Activity