Search
Write a publication
Pull to refresh
1
0
Send message

Benchmark — тесты в Go

Reading time6 min
Views2.8K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time6 min
Views2.4K

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time9 min
Views3.6K

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

Читать далее

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

Level of difficultyEasy
Reading time11 min
Views21K

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

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

Читать далее

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

Reading time8 min
Views8.3K

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

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

Читать далее

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

Level of difficultyEasy
Reading time10 min
Views44K

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

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

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

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

Level of difficultyMedium
Reading time11 min
Views7.6K

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

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

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

Читать далее

Go 1.24

Level of difficultyMedium
Reading time7 min
Views9.4K

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

Читать далее

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

Level of difficultyEasy
Reading time9 min
Views15K

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

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time3 min
Views59K

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

Читать далее

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

Level of difficultyMedium
Reading time3 min
Views10K

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

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

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time15 min
Views28K

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

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

Читать далее

Go в GUI, я создал

Level of difficultyMedium
Reading time23 min
Views11K

Идея сделать игру под Android на Go была неоднозначной, но интересной. Я легко мог представить Go не только в привычной для него сервисной нише, но и в прикладной — его кросс-платформенность и близость к системному уровню в сочетании с простотой пришлись бы там очень кстати. И вот мы здесь — игру мечты я пока не создал, но пару игр попроще сделать удалось.

В этой статье я хочу рассказать об инструментах, появившихся по ходу работы. Сами инструменты я объединил в библиотеку Youngine и опубликовал на GitHub. Там же я опубликовал небольшой пример проекта.

Читать далее

Go: тонкости профилирования CPU

Level of difficultyEasy
Reading time16 min
Views3.1K

Описаны различные способы получения профиля CPU. Объясняется смысл значений в профиле. Приводится пример анализа графа профиля CPU. На конкретных примерах обращается внимание на качественную природу профиля.

Читать далее

Cоздание Приватной Сети Блокчейн на Go. Часть 1

Level of difficultyEasy
Reading time14 min
Views3.2K

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

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

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

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

Читать далее

Отопление майнингом. Как я грею дом бесплатно и получаю от этого дополнительный доход

Level of difficultyMedium
Reading time3 min
Views362K

2023 год мы с колегой занимаемся монтажом отопления и вдруг на просторах интернета коллега замечает ролик про майнер, который охлаждается водой. Тут приходит одна незамысловатая мысль. Возможно ли будет интегрировать этот аппарат  в систему отопления дома и зимой получать бесплатное отопление. Как оказалось далее, ДА!)
Первые часы был небольшой шок, это вообще законно, греть дом еще и помимо этого получать прибыль с майнинга.

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

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

Читать далее

Как мы тестируем бэкенд

Level of difficultyEasy
Reading time14 min
Views11K

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

Читать далее

Чтение книг в оригинале, как один из способов изучения английского языка

Level of difficultyEasy
Reading time7 min
Views43K

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

Читать далее

Obsidian+Github вместо Notion: синхронизация, бекап и версионность (3-в-1)

Level of difficultyEasy
Reading time9 min
Views106K

О том, как сделать прозрачную синхронизацию заметок Obsidian между устройствами (Desktop, Android, iOS) через GitHub:

1. Без сторонних приложений (вроде iCloud, SyncThing, Termux и пр)
2. Бесплатно
3. Бонусом — резервная копия: как самих заметок, так и истории изменений.

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

Инструкция:

Деградация организации заметок одного программиста

Level of difficultyEasy
Reading time8 min
Views32K

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

Читать далее

Information

Rating
Does not participate
Registered
Activity