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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🗺️ Дорожная карта по проектированию API

Пошаговое руководство, которое поможет вам научиться проектировать и создавать надежные API.

👉 Скачать оригинал (PDF-файл в комментариях)
🔥142
👩‍💻 Как сделать README вашего GitHub-профиля динамическим

Здесь, увы, нет Go, но есть аккуратная демонстрация того, как не так уж сложно придать вашему GitHub-профилю дополнительную изюминку, добавив сообщения в блоге или другую информацию.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉9🥱9👍4👏2😁1
⚡️Proglib запускает канал про ИИ для генерации звука

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

⭐️генерация голоса и музыки
⭐️замена и перевод речи
⭐️распознавание звуков

👉Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6🔥2
🤠 Анализ Go-бинарей с использованием gftrace: райтап одной из машин с известной площадки Hack The Box

Вы научитесь работать с инструментом gftrace, который позволяет отслеживать вызовы системных функций и их параметры в Windows. Автор показывает, как с помощью gftrace можно анализировать поведение бинарного файла, отслеживая такие операции, как создание файлов, чтение данных, создание сокетов и выполнение процессов.

👉 Читать
👍7
💬 А как в вашем проекте накатываются изменения в основную ветку?

👍 — создаю pull request и жду его одобрения перед мержем
🔥 — мержу изменения напрямую в основную ветку
❤️ — прохожу через код-ревью перед мержем
🤔 — использую автоматическую систему CI/CD для мержа после прохождения всех тестов
👾 — свой вариант (напишу в комментариях)

#холивар
👍7943🤔17🔥16😁2
👩‍💻 Generic concurrency в Go: исследование совместного использования дженериков и горутин для создания полезных паттернов конкурентной обработки

Автор затронул тему маппинга коллекций (множеств, последовательностей) элементов. Маппинг — это процесс, который приводит к новой коллекции элементов, где каждый элемент является результатом вызова некоторой функции f() с соответствующим элементом из исходной коллекции.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👏5👍1
👩‍💻 3 антипаттерна в Go

Попытка написать «умный» код всегда оборачивается проблемами, когда другим разработчикам приходится его поддерживать (где «другие» включают вас самих через четыре недели).

1️⃣ Точечный импорт

Точечный импорт позволяет импортировать пакет и использовать его экспортируемые идентификаторы без префикса имени пакета.

Например, если вы импортируете fmt через ., вы можете вызвать Println() и другие функции без префикса fmt..

Почему это антипаттерн?

Экспортируемые идентификаторы из этого пакета выглядят так, как будто они определены в текущем пакете. Это плохо по двум причинам:

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

2️⃣ Chaining

Если метод обновляет свой ресивер и ничего не может пойти не так при этом обновлении, метод не должен ничего возвращать. Несколько таких методов можно вызывать один за другим (пример #2).

Для объединения методов в цепочку нужно, чтобы каждый метод возвращал свой ресивер. Тогда мы можем вызывать второй метод, как в 3-м примере.

Ура, мы сэкономили одну строку!

Почему это антипаттерн

Три причины:

1. Мы ничего не приобрели. Цепочки методов не дают нам ничего, чего у нас уже нет.
2. Методы в цепочке не могут возвращать ошибки. Если есть ошибки, нужно вернуться к обычному паттерну. Теперь у вас в коде два разных стиля: цепочки и обычный.
3. Код на Go предпочитает, чтобы чтение кода фокусировалось на левой стороне. Это означает короткие строки и мало уровней вложенности (в идеале только один). Цепочки методов могут легко пересекать весь экран и даже вызвать разрыв строки, что делает код трудночитаемым и некрасивым.

👇 Продолжение 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145🤔2🔥1
3️⃣ defer как инициализация

В 4-м примере main вызывает mysteriousDefer() как отложенную функцию, поэтому все, что напечатает mysteriousDefer(), должно быть напечатано после того, как main выполнит свои выводы.

Однако если вы запустите этот код, вы получите следующий вывод:


f runs
main runs
func returned by f runs


Почему это антипаттерн

Этот «хитрый трюк» позволяет объединить инициализацию и очистку в одной функции.

Вы заметили двойные скобки в вызове defer?


defer mysteriousDefer()()


Обычно вы бы вызвали отложенную функцию так:


defer mysteriousDefer()


Вторые скобки вызывают mysteriousDefer() перед тем, как она будет оценена директивой defer. Затем mysteriousDefer() печатает свое сообщение и возвращает другую функцию, которая является фактической функцией, отложенной defer.

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

Что плохого в написании функции инициализации и функции очистки отдельно?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍203
🧬 Мысли об использовании Go для биоинформатики

Биоинформатик и инженер по обработке данных размышляет об использовании различных языков для научной работы, уделяя особое внимание Go и Rust, Python, Crystal, Julia и Zig.

У Go много плюсов, но, по его мнению, он не прорвался в биоинформатику в крупных масштабах, хотя за пределами этой области у него был феноменальный рост?

Любопытно, что автор оценивает количество строк для работы с файлами и вообще сложность этой операции с точки зрения среднестатистического программиста. На основании этого делает выводы, сравнивая с языком D и его четырьмя строками.

💬 Как вам такой подход?
😁21👍5🥱1🌚1👾1
☝️Схема типичного стартапа ☝️

💬 Есть здесь те, кто работает в стартапе? Что скажете?

#холивар
😁31💯11👍3🔥1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
🕹️🔥 Интерактивное исследование распространенных стратегий организации очередей

Перед вами мини-исследование, в котором изучается организация очередей в контексте HTTP-запросов. Автор начинает с простых концепций и постепенно разбирается с более сложными очередями.

📌 Под катом:

☑️ Чем полезны очереди
☑️ 3 разных типа очереди
☑️ Как эти 3 очереди сравниваются друг с другом
☑️ 1 дополнительная стратегия организации очередей, которую вы можете применить к очередям любого типа, чтобы не отбрасывать приоритетные запросы
🥰11👍51
👩‍💻 Популярные ошибки в Go и как их избежать

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

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🤔52
Доклады были опубликованы уже месяц назад, но лучше поздно, чем никогда 👇

🌐 Как стать сеньором / Василий Романов (VK, Облако Mail ru)
🌐 Domain Driven Design в Go — это не больно (почти) / Илья Сергунин (Авито)
🌐 Go в Domain Driven Design / Дмитрий Анисов (GS Labs)
🌐 Как научить сервис сообщать об ошибке, чтобы это было понятно пользователям, машинам / Александр Лырчиков (YADRO)
🌐 Работа с аренами — почти избавляемся от GC / Максим Горозий (Тинькофф)
🌐 Собеседования на senior-разработчика: проверяем soft skills вопросами на hard skills / Иван Матвеев
🌐 Потоки данных, графы, стейт-машина — строим бизнес-логику в Go-микросервисах / Апрес Антонян
🌐 Выжимаем из Go максимум производительности / Никита Галушко (VK, ВКонтакте)

👉 Весь плейлист

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16