Библиотека 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
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👩‍💻🏠 Скоро во всех подъездах

#жиза
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34😁33💯53
💡 io.TeeReader можно использовать для копирования содержимого одного ридера в новый. Этот метод полезен, когда тело HTTP-запроса нужно прочитать дважды.

👉 Юзкейс: логирование входящих запросов с помощью middleware перед обработкой запросов.

#tip by Golangbot
👍45
🦾🧠🏋️Качаем мозги к лету!

Курс «Алгоритмы и структуры данных» для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.

➡️ Алгоритмы и структуры данных 35 990 ₽ 21 594

⭐️ Переходите и активируйте бесплатные вводные занятия курсаhttps://proglib.io/w/da6727d1

Вас ждут:

– 150 практических заданий и 47 видеолекций

– бессрочный доступ к обучению

– поддержка преподавателя в чате

А также очень харизматичный спикер из Яндекса 🙌🏻
🥱6😁4
👩‍💻👩‍💻 Реализация поиска семантически похожих текстов (или товаров) на Go и Postgres (pgVector)

Казалось бы, в Postgres и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать тексты, а потом поискать по ним.

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

✔️ Преобразовываем тексты в наборы чисел (векторы)
✔️ Сохраняем векторы в базе с помощью pgvector
✔️ Легко ищем близкие друг к другу векторы или ищем их по вектору-запросу
✔️ Ускоряем индексами
Please open Telegram to view this post
VIEW IN TELEGRAM
29👍16🔥4🥱2
Вам предлагают очень «жирный» оффер, но каждый раз вы находите причину, чтобы остаться на текущей работе. Как быть?
Anonymous Poll
52%
Соглашусь на жирный оффер
26%
Если на текущей работе работается, зачем увольняться?
1%
Свой вариант (напишу в комментариях)
22%
Посмотреть результаты
4
👩‍💻 Очень длинная история у такой маленькой фичи: cmp.Or из Go 1.22

Выше — разные юзкейсы от автора фичи Carlana Johnson.

👉 Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👏7🤔61
👩‍💻 Функция Join пакета errors конкатенирует список ошибок и возвращает ошибку, если хотя бы одна из переданных ошибок не nil.

Join возвращает nil, если все переданные ошибки равны nil.

#tip by Golangbot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥5🌚2
👩‍💻 Fuzzing-тестирование: практическое применение

Никита Догаев, бэкенд тимлид в команде Контента на портале поставщиков Wildberries, поделился опытом применения фаззинга для нагрузочных и интеграционных тестирований.

Вы узнаете про генерацию текстов на армянском языке, тестирование SQL-запросов, возможность использования фаззера и unit-тестирование бок о бок.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍31🥱1
👩‍💻 Как команда Dolt использует GitHub Actions для создания оптимизированных сборок, ориентированной на производительность

Взгляд за кулисы процесса сборки Dolt и того, как команда внедрила PGO в пайплайн.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31
🧼 Применение чистой архитектуры: гайд по использованию Go и концепций чистой архитектуры для создания простого блога

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥5🌚3🤔21
🚀 С нуля до продакшена: путь Go в Google

Автор девять лет проработал SRE в Google и делится историей о том, как Go рос и был принят за годы его становления. Это история о гонке за простоту, надежность и скорость.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍1
💬 Удается ли вам отдыхать вне работы?

👍 — да, почти всегда
🙏 — да, иногда
🤔 — нет, всегда работа в голове
🥱 — какой отдых? Я же айтишник

#холивар
🙏106🥱71👍65🤔40😁2
👩‍💻 Две причины, по которым стоит передавать указатели на структуры в Go

Как вы решаете, использовать ли указатель при передаче структур в функции? У Preslav Rachev есть несколько надежных критериев, основанных на принципах предметно-ориентированного проектирования, которые могут дать вам новый, более удобный в сопровождении подход.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍163
🤖 Токены для LLM: byte pair encoding на Go

Основной элемент в современных языковых моделях — это токен. Новые захватывающие LLM обладают длинными контекстными окнами, измеряемыми миллионами токенов.

🤔 Но что это такое?

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

Полученная реализация не нацелена на скорость, но она совместима с библиотекой tiktoken от OpenAI и генерирует идентичные результаты, работая с теми же файлами словаря.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4
🧰🚀 Sonic — Go-библиотека для асинхронной сетевой и I/O разработки, которая предоставляет согласованную асинхронную модель с упором на достижение минимально возможной задержки в Go (не путайте с одноименным инструментом для ведения блогов или JSON-библиотекой).

👩‍💻 Исходники библиотеки открыла компания Talos, специализирующаяся на торговой инфраструктуре. «Sonic — это альтернатива пакету net. Она устраняет необходимость использования нескольких горутин для обработки нескольких соединений и операций чтения/записи в одном процессе».

🔗 Подробнее & GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍4🔥4
🖼️ Обработка ошибок при написании REST, gRPC или других сервисов на Go: алгоритм от Jonathan Hall

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

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

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍3
🏃 🏃 🏃 Самоучитель по Go для начинающих. Часть 12. Обобщенное программирование. Дженерики

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


👉 Читать гайд

📌 Остальные части в серии:

1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
16👍2
👩‍💻 Эволюция стандартной библиотеки Go с math/rand/v2

С момента первого релиза Go в марте 2012 года изменения в стандартной библиотеке ограничивались обещанием совместимости Go. Хотя это и обеспечивало стабильность для Go-разработчиков, со временем стало ясно, что в первоначальных API были допущены ошибки, которые невозможно исправить без нарушения совместимости. В некоторых случаях изменились лучшие практики и соглашения. В связи с этим возникла необходимость в плане внесения важных, разрушающих изменений.

Статья Расса Кокса посвящена новому пакету math/rand/v2 в Go 1.22, который является первым "v2" в стандартной библиотеке. Он вносит необходимые улучшения в API math/rand, но что более важно, он служит примером того, как команда Go может пересматривать другие пакеты стандартной библиотеки по мере необходимости.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136🥰1