Все потоки
Поиск
Написать публикацию
Обновить
110.66

Go *

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

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

Чистовики патриарха. О трёх последних книгах Олега Цилюрика

Время на прочтение6 мин
Количество просмотров1.6K

Привет, Хабр! На связи Олег Сивченко @OlegSivchenko редактор направления «Компьютерная литература».

Наша первая статья в корпоративном блоге вызвала ваш огромный интерес (+122) и оживлённое обсуждение с участием 30 пользователей (считая нас). На наш взгляд, вас заинтересовал вопрос авторских черновиков и доработки их до полноценных рукописей. Развивая тему, связанную со свободным ПО, хочу рассказать вам сразу о трёх наших знаковых книгах, посвящённых операционной системе Linux. Эти книги написал легендарный харьковский программист Олег Иванович Цилюрик (1951 — 2024), к сожалению, не дождавшийся выхода в свет 2-го издания своей книги «Linux и Go. Эффективное низкоуровневое программирование» (оглавление).  Opus Magnum, принадлежащий его перу и вышедший у нас в марте 2023 года, называется «Расширения ядра Linux. Драйверы и модули» (оглавление). Кроме того, мы выпустили экзотический и по-своему незаменимый труд Олега Ивановича, который называется «Сети Linux. Модели и приложения» (оглавление), посвящённый настройке, эксплуатации и внутренней организации оверлейной сети Yggdrasil (октябрь 2023).  Эта книга очень хорошо вписалась по духу и уровню в разрабатываемую нишу кибербезопасности, и, судя по отзывам на маркетплейсах, незаменима в нашу эпоху не столь свободного Интернета. Наконец, Олег Иванович самоотверженно справился с переводом одной книги O’Reilly —«Изучаем eBPF: программирование ядра Linux для улучшения безопасности, сетевых функций и наблюдаемости», вышедшей у нас в июле 2024 года. Давайте расскажу о двух из этих книг немного подробнее.

Читать далее

Новости

Кэширование в Go: ускоряем API без Redis

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

Команда Go for Devs подготовила перевод статьи о том, как кэширование помогает ускорить API на Go и снизить нагрузку на базу данных. В статье разбираются основные стратегии кэширования — от Write-Through до Write-Back — и показан пример реализации кэша с TTL на чистом Go. Отличный материал, если хотите ускорить свой сервис без перехода на Redis.

Читать далее

Сборщик мусора в Go. Часть 2: GC Traces

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

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

Читать далее

SteosMorphy: опенсорс замена давно умершему PyMorphy2

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров735

PyMorphy2 — самая популярная библиотека для обработки слов в русском языке. Однако последний коммит в репозиторий этой библиотеки был сделан более 5 лет назад, а её установка на Python версии 3.11+ вызывает трудности, что делает использование данной библиотеки в нынешнее время максимально затруднительным.

Предлагаю рассмотреть новую Open Source библиотеку SteosMorphy, которая является аналогом PyMorphy, но делает всё быстрее и круче!

Ознакомиться

OpenCode: Революция в мире AI-инструментов для разработки

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

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

Читать далее

Как Go 1.24 и Swiss Tables вернули нам 200 гигабайт памяти

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

Команда Go for Devs подготовила перевод статьи о том, как Go 1.24 с новой реализацией Swiss Tables помог снизить использование памяти в продакшне на сотни гигабайт. В статье разбирают, что изменилось в реализации map, как это отразилось на профилях памяти, и какие оптимизации в коде дали дополнительный эффект.

Читать далее

Distroless приложения (VM/bare-metal)

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

Некоторые языки программирования (например, Go и Zig) позволяют собрать приложение без каких-либо зависимостей, в том числе отвязаться от libc, тем самым создание distroless-контейнера на Go становится тривиальной задачей. Но эта же особенность может быть применена не только для создания контейнера, но и для запуска такого приложения в VM или на реальном хосте не используя какой-либо дистрибутив Linux, а используя только ядро Linux и само приложение, построенное с помощью Go (или, например, Zig). Такая возможность позволяет избавиться от дополнительных зависимостей, которые добавляют потенциальные риски с точки зрения атаки на цепочку поставок (supply chain attack).

Читать далее

Go, Telegram, AI: Создаем систему ранжирования трейдинг-каналов по точности прогнозов

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

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

Среди этих способов выделяются два основных: Bot API и MTProto API. Оба предоставляют различные возможности, но имеют и свои ограничения. Автоматизированный сбор данных для машинного обучения или глубокого анализа может быть непростой задачей из-за этих особенностей.

Читать далее

Devsyringe: Хватит копипастить динамические значения

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

Сегодня расскажу о Devsyringe — инструменте для автоматизации работы с динамическими значениями в статических файлах.

Мы, разработчики, постоянно сталкиваемся с API-токенами, временными URL, строками подключения и флагами функций. В Node.js и других средах есть dotenv и менеджеры конфигураций, которые подставляют значения во время выполнения.

Но что делать со статическими файлами — HTML, JS-конфигурациями или старыми конфигами? Обычно приходится вручную копировать значения, открывать файлы, вставлять, сохранять — скучно, долго и легко ошибиться. Devsyringe решает эту проблему, автоматизируя процесс.

Читать далее

Сборщик мусора в Go. Часть 1: Stop The World, пейсинг и оптимизация

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

Команда Go for Devs подготовила перевод статьи о том, как работает сборщик мусора в Go. Автор подробно объясняет семантику алгоритма триколорной маркировки и очистки, механизмы Stop The World, пейсинг и источники задержек. Главное — не бороться со сборщиком, а работать с ним в унисон: устранять лишние выделения и снижать нагрузку на кучу.

Читать далее

Интеграционные тесты в Go: как избавиться от флаков и боли

Время на прочтение10 мин
Количество просмотров2.7K

Всем привет! Меня зовут Александр Голубь, и я пишу на Go уже 7 лет. Когда я только начинал, казалось, что юнит-тестов достаточно. Функции проверены, сборка зелёная — можно релизить. Но первый же боевой проект показал, что это иллюзия. В продакшене всё падает, хотя юниты сияют зелёным. Почему? Потому что реальный сервис — это не только код, но и PostgreSQL, Redis, Kafka, внешние API. Данные проходят через цепочку зависимостей, и любая несовместимость ломает систему. Юнит-тесты этого не ловят. Тут нужны интеграционные.

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

Кастомный процессор для OpenTelemetry Collector. А почему бы и нет?

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.3K

Всем привет! Меня зовут Артем, я платформенный инженер и в работе часто приходится сталкиваться с Observability‑инструментами. Одним из таких инструментов, о котором я хотел бы рассказать является OpenTelemetry Collector. Это мощный инструмент, который позволяет работать с различной телеметрией и строить гибкие пайплайны для метрик, логов и трейсов.

Но иногда возможностей стандартного набора компонентов не хватает, чтобы справиться с поставленными задачами без использования костылей и изоленты. Тогда на сцену выходят кастомные компоненты для Otel-Collector.

В этой статье я расскажу про свой опыт написания кастомного процессора для otel-collector. Он обогащает спаны данными из CSV‑файла: находит совпадение по атрибуту и добавляет дополнительные поля прямо внутрь трейсов. Мы разберём архитектуру процессора, посмотрим код и конфигурацию, а в конце покажу, как собрать и запустить Collector с этим расширением.

Читать далее

Разработка RESTful API на Go и Gin

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

Команда Go for Devs подготовила перевод статьи по созданию RESTful API на Go с использованием фреймворка Gin. Всего за несколько шагов вы напишете простой веб-сервис, который умеет возвращать список джазовых альбомов, добавлять новые и находить альбом по ID. Отличный старт для знакомства с Gin.

Читать далее

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

pgdbtemplate — моментальное создание тестовых баз PostgreSQL в Go через шаблоны. Ускоряем тесты в 1.5 раза

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

Знакомо чувство, когда интеграционные тесты с PostgreSQL в Go работают дольше, чем хотелось бы? Каждый тест создает базу заново, применяет миграции, и большая часть времени уходит не на проверку логики, а на подготовку окружения. В этой статье я расскажу о своем open-source решении на Go, которое использует встроенные механизмы шаблонов PostgreSQL, чтобы ускорить этот процесс в полтора раза, уменьшить потребление памяти и сделать ваши тесты по-настоящему параллельными.

Читать далее

Event Driven Design и ksqlDB

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

На конференции Web 2.0 в 2006 году Marissa Mayer из Google указала на проблему, что дополнительные полсекунды задержки приводили к снижению поискового трафика примерно на 20%. Amazon сообщал о похожем эффекте: каждые дополнительные 100 мс уменьшали продажи примерно на 1%. 

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

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

Читать далее

Создаём CLI-приложение прогноза погоды на Go: пошаговое руководство для новичков

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

Команда Go for Devs подготовила перевод пошагового руководства: как написать собственное CLI-приложение прогноза погоды на Go. Проект охватывает всё — от HTTP-запросов и парсинга JSON до удобного интерфейса командной строки. Отличная практика для новичков и хороший повод освежить базовые навыки тем, кто уже работает с Go.

Читать далее

Не одним CRDT едины или P2P vs Authoritative в local-first приложениях

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров681

Сегодня поговорим про реализации решения конфликтов подходов local / offline-first – это когда ваше приложение позволяет пользователям работать полностью или частично оффлайн, а когда они выходят в сеть, синхронизировать все их изменения.

Примеры таких приложений: Notion-like редакторы, Figma-like вайтборды или Linear-like таск менеджеры.

Основная идея – коллаборация, а коллаборация несет за собой конфликты, разберем очень наглядный пример:

Читать далее

Реальный проект и сертификат для портфолио — что, помимо знаний, дадут курсы по ручному тестированию и разработке на Go

Время на прочтение4 мин
Количество просмотров1.6K

Курсами по тестированию или разработке на Go сейчас мало кого удивишь. Но что если это обучение от вендора IT-инфраструктуры, где преподаватели — реальные инженеры с многолетним опытом, а программа позволяет выполнить реальный проект для портфолио и погрузиться в тонкости тестирования специфического оборудования и ПО — СХД, базовых станций, операционной системы?

Если вы студент — второкурсник и старше — или выпускник 2025 года, не упустите возможность пройти бесплатные курсы от YADRO. Для начала достаточно оставить заявку до 28 сентября. А что ждет дальше — читайте под катом.

Читать далее

Genkit Go 1.0: AI-фреймворк для продакшена

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

Команда Go for Devs подготовила перевод статьи о релизе Genkit Go 1.0 — open source AI-фреймворка от Google для экосистемы Go. Теперь можно быстро и безопасно создавать продакшен-ready AI-приложения с типобезопасными флоу, поддержкой RAG, вызова инструментов и богатым локальным тулчейном.

Читать далее

За пределами отладчика: полное руководство по отладке Go-приложений

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1.4K

Команда Go for Devs подготовила перевод статьи о том, как отлаживать приложения на Go. Автор показывает, что баги бывают разными: воспроизводимые, случайные, гейзенбаги и конкурентные. А в арсенале Go-разработчика должны быть — TDD, стратегическое логирование, Delve, git bisect и даже онлайн-отладчик GoTutor.

Читать далее
1
23 ...

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