Обновить
121.24

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Период
Уровень сложности

Программирование на Go: чему можно научиться за 2 часа и как понять, стоит ли идти дальше

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

Многие не понимают, зачем проходить бесплатные части курсов. Кажется: ну что там можно узнать за пару часов? У нас в Практикуме бесплатная часть — это не просто демо, а полноценный мини-курс. Вы не просто посмотрите на код со стороны, а напишете первые программы сами, поймёте логику языка и оцените, подходит ли вам профессия. 

Сегодня покажем, что ждёт вас в бесплатной части курса «Go-разработчик с нуля». Спойлер: за несколько часов вы напишете свой первый код, разберётесь с переменными и типами данных, а главное — создадите первую версию голосового помощника, Алисы. И всё это без опыта в программировании.

Читать далее

Python и Go — идеальный набор (высокоуровневых языков)

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

Перед вами - известное письмо Линуса Торвальдса, где он написал, что если бы единственная причина использовать С, а не С++, была в том, чтобы отпугивать программистов на С++ - это уже была бы весомая причина.

Питон в последнее время завоевал лидирующие позиции в дата саенс и машинном обучении, что меня как разработчика на нём не может не радовать. В данной статье вы узнаете, почему, следуя духу минимализма из указанной цитаты, нужно использовать го в тех областях, где лидерство питона не так очевидно. А в питоне - не заморачиваться с async/await, фреймворками и прочей ерундой.

Читать далее

yask или не yask

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

Я решил попробовать себя на новом амплуа писателя и писать о том, что мне интересно и чем я занимаюсь. Я постараюсь делать меньше воды и не слишком длинные посты, так как длинные посты читаются тяжело. И первый пост будет о yask

Читать далее

Тестируем веб приложение на Go

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

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

Читать далее

KEKS кодек и криптографические сообщения

Уровень сложностиСредний
Время на прочтение30 мин
Охват и читатели639
Данная статья напоминает о проблемах X.509 PKI и реализаций ASN.1. Предлагает компактный, быстрый, детерминированный, потоковый и простой формат кодирования данных KEKS, а также криптографические сообщения для подписи и шифрования данных с поддержкой пост-квантовых алгоритмов.

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

Go synctest: Решение проблемы нестабильных тестов

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


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


func TestSharedValue(t *testing.T) {
    var shared atomic.Int64
    go func() {
        shared.Store(1)
        time.Sleep(1 * time.Microsecond)
        shared.Store(2)
    }()

    // Проверяем общее значение через 5 микросекунд
    time.Sleep(5 * time.Microsecond)
    if shared.Load() != 2 {
        t.Errorf("shared = %d, want 2", shared.Load())
    }
}

Этот тест запускает горутину, которая изменяет общую переменную. Она устанавливает shared в 1, спит 1 микросекунду, а затем устанавливает её в 2.


Тем временем основная функция теста ждёт 5 микросекунд перед проверкой того, достигло ли shared значения 2. На первый взгляд кажется, что этот тест должен всегда проходить. В конце концов, 5 микросекунд должно быть достаточно времени для завершения выполнения горутины.


Однако...

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

Еще разок про gomock и функциональные тесты

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

Еще раз про gomock и тесты. Практики как можно писать тесты быстро, сохраняя их качество, при этом не лить горючие слезы.

Читать далее

Мое автопротоколирование, начало создания полноценного сервиса

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

Всем привет! В данной статье я поделюсь своим опытом написания сервиса. Я не являюсь опытным или профессиональным разработчиком, я пишу свой проект и мои решения могут быть не самыми оптимальными. Эта статья состоит в основном из ошибок, которые я совершил. Мой путь не является правильным и потому - судите "строго".

Читать далее

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

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

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

Я хотел сканер, который понимает. Сканер, который учится. Сканер, который адаптируется.

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

Читать далее

Некоторые приёмы ООП в golang

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

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

## Парадигма и инструменты языка

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

ООП как парадигма — это идея оформить код таким образом, чтобы он отражал в себе образы, которыми мы мыслим. Если я пишу программу для живописи, то я буду объяснять её функционал словами: холст, кисть, цвет, закрашивать... Если эти же слова возникают в моём коде, то я использую ООП. Читая такой код, легко восстановить в голове смысл, который закладывался в программу. Так как в нашем мышлении присутствуют абстракции, для которых свойственны полиморфизм и сокрытие подробностей, то мы переносим их и в код.

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

Читать далее

HTTP/2 / HTTP/3 и gRPC на Rust: пишем учебный Mini-Transport

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

Статья-практикум показывает, как устроены HTTP/2, HTTP/3 (QUIC) и gRPC на самом низком уровне. Вместо толстых библиотек мы пишем минимальный учебный фреймворк «Mini-Transport» на Rust (~600 строк): реализуем кодек HTTP/2-фреймов, упрощённый gRPC-протокол и базовую обёртку над QUIC. В результате получаем рабочий echo-клиент и сервер, которые пересылают «hello ↔ world» через собственноручно собранные фреймы. Разбор сопровождается поясняющими схемами, ссылками на RFC, вариантами дальнейшего развития (HPACK, flow-control, TLS/ALPN) и готовым репозиторием для самостоятельных экспериментов. Материал рассчитан на разработчиков, желающих понять «как всё крутится под капотом» и прокачать навыки низкоуровневой сетевой работы в Rust.

Читать далее

работа с Kafka в Go: практическое применение

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

Автор статьи Якушков Федор.

Apache Kafka — это мощная распределённая платформа для обработки потоков данных, которая завоевала популярность благодаря своей способности эффективно управлять большими объёмами информации в реальном времени. В этой статье мы подробно разберём, как использовать Kafka в языке программирования Go с помощью библиотеки kafka-go. Мы рассмотрим все ключевые аспекты: от event-driven архитектуры до топиков и партиций, от создания продюсеров и консьюмеров до управления оффсетами и обработки ошибок. Разберем гарантии доставки, а также обсудим, где и как применять Kafka в проектах.

Читать далее

Календарь IT-конференций на 2025 год

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

Всем привет! На связи Speach (ex. IT-People). В прошлом году мы сменили имя, но не изменили своей любви к конференциям. И продолжаем организовывать самые душевные и классные мероприятия для айтишников. Приглашаем принять в них участие.

25 апреля, DUMP EKB, Екатеринбург

Крупнейшая конференция разработчиков на Урале, куда приезжают более 2000 человек! Конференция, которая традиционно собирает топовых IT-экспертов со всей страны. В 12 секциях прозвучат десятки докладов ТОЛЬКО на актуальные темы. Впервые в этом году — новая секция: TechLead. А также — Backend (2), Frontend, Testing&QA, Team, Product, ML&DS, BA&SA, DevOps, Design, Science, круглые столы, воркшопы, нетворкинг и афтепати.

Читать далее

Ближайшие события

Коты и Strategy в Go

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

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

Сегодня рассмотрим паттерн Strategy в Go на примере котиков — от простых стратегий поведения до динамической смены алгоритмов в многопоточном окружении.

Читать далее

Как создать свой алгоритм шифрования: от идеи до готового CLI-приложения

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

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

Читать далее

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

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

Автор статьи: Якушков Федор

Куки (HTTP Cookies) используются для хранения данных на стороне клиента, например, для аутентификации, управления сессиями или персонализации контента. В языке Go работа с куками реализована через стандартную библиотеку net/http, что делает их использование простым и удобным. В этой статье мы разберем основные операции с куками в Go, а также рассмотрим аспекты их безопасности.

Читать далее

Суть Go: Time

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

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

Читать далее

ErrorHandling-патерн в golang

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

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

Будем отталкиваться от примера, где мы ожидаем результатов выполнения n-горутин. Результат читаем из канала resultChannel:

Читать далее

Горутины и каналы в Go: эффективная конкурентность

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

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

Читать далее

Способ организации gRPC контрактов и их автоматизация для микросервисов

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

Привет! Меня зовут Данил, я бэкенд разработчик.

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

Читать далее

Вклад авторов