Библиотека Go-разработчика | Golang
23.3K subscribers
2.08K photos
42 videos
87 files
4.45K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
Несколько недель назад команда Dolt объявила о первой реализации полнотекстовых индексов. Dolt использует специальный SQL-движок, который позволяет управлять версиями базы данных и при этом должен быть высокопроизводительным.

Это также означает, что для полной замены MySQL 8.0 команда Dolt должна реализовать все функции MySQL в движке Dolt. Ну что ж, глобальная цель поставлена, перейдем к реализации полнотекстовых индексов в SQL-движке👇

🔗 Читать
👍63🔥3
#linux #tips

Вместо того, чтобы использовать команду cat для просмотра файлов с исходным кодом, просто используйте Vim команду batcat (bat). Это современная версия cat, которая включает в себя подсветку синтаксиса для многих языков программирования и поддержку Git из коробки.

> alias cat='batcat --style plain'
> alias less='batcat --paging=always --style plain'
21👍16🔥1
Подробный гайд по разработке масштабируемых микросервисов с использованием Go и RabbitMQ

Автор начинает с фундаментльных основ, затем углубляется в особенности использования Go в сочетании с RabbitMQ.

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

🔗 Читать
👍216
🔍Насколько легко «войти в айти»?

IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.

👉Пройдите наш 10-минутный опрос по ссылке.
5🥱2👍1
☝️📺 Какой сетап у вас дома/на работе (можно выбрать два варианта)?
Anonymous Poll
39%
1
14%
2
43%
3
7%
4
6%
5
2%
6
5%
Другой (напишу в комментарии)
7👍7🥱3
Проектирование отказоустойчивых микросервисов в Go

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

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

«Всегда проектируйте вещи, рассматривая их в следующем более широком контексте: стул в комнате, комната в доме, дом в окружении, среда в плане города» (Элиэль Сааринен)
6👍6
Ищем копирайтера

Нам нужен человек, который:
— Любит IT и русский язык.
— Понимает разницу между бэкендом и фронтендом, OWASP и MISRA, функциональным программированием и ООП, микроконтроллером и миникомпьютером, UX и UI.
— Имеет опыт работы от 1 года.
— Будет плюсом, если вы программируете на каком-нибудь языке на уровне стажера/джуна.

Что нужно делать:
— Готовить подборки, ТОПы книг, ютуб- и телеграм-каналов по языкам программирования.
— Делать расшифровки топовых Ютуб-роликов по теме программирования и оформлять их в виде статей.
— Готовить новостные заметки.
— Актуализировать старые статьи.
— Брать интервью у экспертов. Мы поможем с поиском экспертов.
— Иногда писать небольшие рекламные посты в телеграм.
— Писать статьи с кодом, переводить статьи (по желанию, оплачивается отдельно).

Можно использовать нейронки?
— Да, главное, чтобы материал получился интересный.

Условия:
— Белая зарплата: 50 000 руб.
— Возможность работать удаленно.

👉Присылайте свои резюме: hello@proglib.io
7👍3🥱1
#tip #go

Типичная ситуация: пакет document не должен зависеть от пакета storage, но типу document.Doc нужен способ загрузки и сохранения содержимого.

В Go для создания и DI требуется три шага без каких-либо фреймворков. Примеры псевдокодом👇

1️⃣ Пакет document

Определите интерфейс в пакете document.

type Storage interface {
Load(int) Content <i>// some content type</i>
Save(Content) int
}

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

type Doc struct {
Cont Content
Store *Storage
}

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

func (d *Doc) LoadById(id int, s Storage) {
d.Cont = d.Store.Load(id)
}
<i>// same for Save...</i>

2️⃣ Пакет storage

Определите тип, который реализует интерфейс.

type DBStore struct {
db *database.DB
}
func (d *DBStore) Load(id int) Content {
<i>// ... load content by id</i>
}
<i>// same for Save...</i>

3️⃣ Пакет main

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

App.Doc.Store = storage.NewDBStore(...)
🥱21🔥4👍3😁1🌚1
👀 Структурированное логирование с slog: взгляд команды Go

🔹Экскурсия по slog
🔹Производительность
🔹Проектирование пакета slog (одно из самых крупных дополнений к стандартной библиотеке с момента выпуска Go 1)

🔗 Читать
51
#холивар

🤔Что самое трудное в работе программиста? Правильно, выдумывать имена для переменных.

💬Как вы считаете, насколько важен хороший нейминг для сущностей (функций, переменных и т.д.) в вашем коде? И есть ли у вас или в вашей команде общепринятые правила или лучшие практики, которым вы следуете при нейминге?

Если да, поделитесь опытом👇
gRPC в Go: практическое введение от Олега Козырева, Senior Software Engineer в Avito Tech.

📺Смотреть
👍14🥱4🔥2
Как визуализировать модели GORM с помощью Atlas

Вдогонку к очень холиварному предыдущему посту ловите мини-гайд о том, как использовать новую фичу Atlas, которая позволяет разработчикам быстро создавать визуализации диаграммы «сущность-связь» (или ERD) схем баз данных.

В гайде показано, как эту функцию можно использовать в тандеме с одной из основных возможностей Atlas — «Загрузчиками схем» — для создания визуализаций моделей GORM.

Atlas — это независимый от языка инструмент для управления и миграции схем баз данных с использованием современных принципов DevOps.
👍18🤔1
Обзор альтернатив стандартной библиотеке для регулярных выражений в Go с бенчмарками по скорости и потребляемой памяти.

🔗 Читать
🔥21
fp-go — библиотека функционального программирования для Go, идея для разработки которой взята из проекта fp-ts. Цель библиотеки — предоставить набор типов данных и функций, которые позволяют легко и увлекательно писать поддерживаемый и тестируемый код на Go.

💡На скриншоте — статистика проекта за последние 28 дней. Выводы сделаете сами.

🔗 GitHub
👍11🥱5🤔3
#tip #go #security

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

📌Инструмент govulncheck, безусловно, является универсальным для сканирования репозиториев на наличие известных уязвимостей.

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

🔸Govulncheck можно использовать в командной строке или как часть рабочего процесса CI.

📌Еще одним инструментом, заслуживающим внимания, является gosec: Golang Security Checker.

🔸gosec — CLI-инструмент, который может быть интегрирован в пайплайн CI. В дополнение к этому, gosec входит в состав golangci-lint.

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

🔸В отличие от govulncheck, gosec не проверяет наличие известных уязвимостей в общедоступном коде Go. Скорее, он проверяет код на соответствие списку уязвимых шаблонов программирования, включая: жестко закодированные учетные данные, непроверенные ошибки, построение SQL-инструкций с использованием fmt и т.д.
👍6🔥1
🤔Надеемся, материалы про пакет slog в Go вам еще не надоели. Потому что самое время закрепить представленную ранее теорию интересной практикой на примере создания красивого логгера.

😎Если кто-то из вас уже знаком с пакетом zap от Uber, вы быстро найдете общий язык с slog👇

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

⚡️Есть еще кое-что. В официальном репозитории Go есть руководство по написанию обработчиков slog — сохраняйте себе в заметки.
👍25🥱1