Библиотека Go (Golang) разработчика
2.57K subscribers
263 photos
95 videos
29 files
334 links
Полезные материалы по всему, что может быть полезно Golang разработчику. По всем вопросам @evgenycarter
Download Telegram
📢Что делать, когда процессы «пытаются» одновременно получить доступ к данным без правильной синхронизации?

Это называется «состоянием гонки». О том, как выйти из такого состояния, мы поговорим на открытом онлайн-уроке «Race condition, и как с ним бороться»

📅 Дата и время: 1 ноября, 20:00 МСК
🔗Записаться на урок: https://vk.cc/cDCn10

Вы узнаете:
- О типовых сценариях возникновения состояния гонки
- Как и для чего использовать пакет Symfony Lock
- Как восстанавливать работу с БД после исключений

Будет интересно php-разработчикам

💡Встречаемся в преддверии старта курса «Symfony Framework». Все участники вебинара получат специальную цену на обучение!

➡️Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cDCn10

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👎3
Остаться в живых (keepalive) feat. HTTP/2, Go & gRPC-Go

В этой статье мы разберём известную идею — keepalive в межсервисном взаимодействии, которая спасла уже не одну компанию в трудное время :). Но чтобы добавить интереса, мы разберём, какие проблемы в keepalive принесли современные технологии (ведь что может пойти не так с этой простой идеей?). Поэтому в статье мы рассмотрим механизмы, которые позволяют проверять стабильность соединения между клиентом и сервером в случае, когда обычные TCP keepalive из-за сложности архитектуры не могут определить состояние сервера.

https://habr.com/ru/companies/ozontech/articles/810427/

👉 @golang_lib
👍2
PNGify

PNGify — это инструмент командной строки, написанный на Go, который позволяет кодировать текст и файлы в PNG-изображения и декодировать их обратно в исходную форму. Этот подход сочетает обработку текста и изображений, предлагая забавный способ хранения и извлечения данных. Цель этого экспериментального проекта — исследовать креативные возможности.

https://github.com/tofl/PNGify

👉 @golang_lib
3👍1
Прикладное введение в eBPF с Go

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

Практический гайд с акцентом на практику использования eBPF командой Edge Delta.

https://edgedelta.com/company/blog/applied-introduction-ebpf-go

👉 @golang_lib
👍21🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
Бесплатное IT-образование в 2024

Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления

Выбирайте нужное и подписывайтесь:

👩‍💻 С/С++: @Cpportal
📱 GitHub: @git_developer
🤓 Книги айти: @portalToIT
👩‍💻 Golang: @juniorGolang
👩‍💻 PHP: @PHPortal
👩‍💻 Моб. разработка: @MobDev
👩‍💻 Java: @Java_Iibrary
👩‍💻 Frontend: @FrontendPortal
⚙️ Backend: @BackendPortal
👩‍💻 Python: @PythonPortal
👩‍💻 C#: @KodBlog
🖥 Базы Данных & SQL: @SQL
👩‍💻 Разработка игр: @GameDevgx
👩‍💻 DevOps: @loose_code
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
🐞 Тестирование: @QAPortal
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign

➡️ Сохраняйте себе, чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💩2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Ntcharts

Это инструмент на Go для построения диаграмм в терминале, таких как гистограммы, линии и временные ряды, с использованием библиотеки Bubble Tea.

https://github.com/NimbleMarkets/ntcharts

👉 @golang_lib
database/sql: плохой, хороший, злой

Многие Golang-разработчики пробовали работать с БД в Go, и у каждого — свои боли. В этой статье поисследуем библиотеку database/sql для работы с абстрактной СУБД и нашу имплементацию database/sql драйвера под СУБД YDB. Рассмотрим трудности эксплуатации при использовании драйвера database/sql на проде. А также расскажем, что мы делали для решения проблем.

Меня зовут Алексей Мясников, я — руководитель Application Team в команде разработки YDB. Я очень люблю git blame за то, что с его помощью можно проследить, как развивалась инженерная мысль с течением времени и немножко побыть в шкуре разработчика той или иной классной штуки. В статье я расскажу, как реализовать драйвер database/sql для распределённой базы данных, такой как YDB, какие проблемы при этом придётся преодолеть и как менялся подход с выходом новых версий Go.

https://habr.com/ru/companies/oleg-bunin/articles/808097/

👉 @golang_lib
👍2
Использование пакетов crypto/aes и crypto/cipher в Golang

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

https://aran.dev/posts/using-golang-crypto-aes-and-crypto-cipher-packages/

👉 @golang_lib
👍3
Обработка ошибок в Golang. errors.Is(), errors.As(), errors.Unwrap(), пользовательские ошибки и многое другое

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

https://adrianlarion.com/golang-error-handling-demystified-errors-is-errors-as-errors-unwrap-custom-errors-and-more/

👉 @golang_lib
👍4🔥4
Создаем DNS-резолвер с помощью Golang

В статье Доменико Лучиани описывает, как создать резолвер DNS с использованием Golang. Она охватывает основные аспекты DNS-резолвера, такие как обработка запросов, подключение к серверам DNS и интерпретация ответов. Это руководство предназначено для разработчиков, которые хотят понять и реализовать основные функции DNS в среде Golang.

https://domenicoluciani.com/2024/05/07/create-dns-resolver.html

👉 @golang_lib
👍6
Именованием ok считается вредным?

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

Давайте поговорим о названии булевых переменных в Go.

https://www.dolthub.com/blog/2024-05-10-ok-considered-harmful/

👉 @golang_lib
👍2
Media is too big
VIEW IN TELEGRAM
Оптимизируем код на Go в 10 раз | Как избежать false sharing в Go

00:00 - Введение
00:17 - Подход с RWMutex
01:40 - Подход с Mutex
02:10 - Подход с Atomic
03:39 - Подход с шардированием
04:36 - Подход с выравниванием при шардировании
05:42 - False sharing
08:13 - Заключение

источник


👉 @golang_lib
👍9
Media is too big
VIEW IN TELEGRAM
Секреты внутреннего устройства аллокатора Go

00:00 - Введение
01:49 - Концепция аллокатора
06:09 - Линейный аллокатор
11:22 - Блочный аллокатор
16:21 - Стековый аллокатор
20:18 - Устройство malloc
25:01 - Недостатки malloc
26:55 - Устройство tcmalloc
28:28 - Устройство аллокатора Go
32:55 - Предсказуемая фрагментация памяти
40:33 - Где аллоцируются объекты в Go
51:11 - Почему аллокация на стеке работает быстрее, чем в куче
52:35 - Расширение и уменьшение стека в Go
58:12 - Зачем это все нужно знать (практические примеры)
01:03:37 - Пулы объектов (sync.Pool)
01:06:57 - Арены (memory arenas)
01:14:30 - Аллокатор ОС
01:18:28 - Курс по глубокому Go

источник

👉 @golang_lib
7🔥1
Анализ бинарных файлов Go с помощью gftrace

gftrace — это инструмент командной строки для Windows, который запускает Go-бинарный файл и записывает все вызовы API Windows, выполняемые в процессе его работы. После решения задания Napper из HackTheBox, автор решил применить этот инструмент к бинарному файлу из этой задачи.

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

https://0xdf.gitlab.io/2024/05/07/gftrace.html

👉 @golang_lib
👍2
Generic Concurrency в Go

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

https://sergey.kamardin.org/ru/articles/generic-concurrency-in-go/

👉 @golang_lib
👍1
🌟 Хотите создать чат-бота? Выберите Golang! 🌟

11 декабря в 20:00 МСК приглашаем вас на открытый урок, где вы узнаете, как с помощью Go разработать собственного бота для мемов — от идеи до готового функционала!

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

🚀 Регистрируйтесь на вебинар прямо сейчас! Все участники получат скидку на курс «Go (Golang) Developer Basic»: https://vk.cc/cFPJvy

Не упустите возможность прокачать свои навыки и развлечься! 💻

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🤡1
Популярные ошибки в Golang и как их избежать

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

https://habr.com/ru/companies/avito/articles/813697/

👉 @golang_lib
👍3