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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
⚒️ Go Runtime Finalizer и Keep Alive

Если вы перешли с полностью объектно-ориентированного языка на Go, скорее всего, вам не хватало финализаторов для очистки ресурсов при уничтожении объекта. В Go есть (довольно непонятный) способ установки финализаторов — в пакете runtime.

Однако, как отмечает Phuong Le, «если вам вдруг понадобится использовать финализаторы, есть большая вероятность, что это признак проблемы с дизайном».

Как бы то ни было, финализаторы не совсем бесполезны. Они могут служить в качестве резервного механизма очистки для объектов, которые имеют явную функцию очистки (подумайте о методах Close() для подключений к файлам или базе данных). Если пользователи таких объектов не смогут должным образом вызвать функцию очистки, может сработать финализатор.

👉 Читать статью
👏6👍3🤔2
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
👍2🥱2🥰1
🤔🎄🎁 Какой подарок вы бы хотели на Новый год?

Да, начинать готовиться никогда не рано 😉

#интерактив
🤩5🥱1
🎉 Кстати, 7 ноября представлены релизы Go 1.23.3 и 1.22.9

Новая версия содержит исправления безопасности компоновщика, рантайма, а также пакетов net/http, os и syscall.

🗣 Анонс
⬇️ Скачать

#новости
👍12🔥2😁21😢1
🔐 Понимание уязвимостей, связанных с внедрением команд в Go

Если вы вызываете системные утилиты из кода, вы можете предпринять некоторые базовые, но важные меры предосторожности, чтобы избежать проблем с безопасностью (вы ведь не хотите, чтобы кто-то мог убедить ваш сервер запустить rm или что-то похуже).

👉 Читать гайд
👍21
Привет, друзья! 👋

Мы готовим статью об ИИ-инструментах для программирования в 2024 году и хотим услышать ваше мнение! 🤖💻 Поделитесь своим опытом и помогите нам сделать материал ещё полезнее. Самые интересные ответы войдут в статью! 🏆
👾3
Какой ИИ-инструмент для программирования вы считаете самым полезным и почему? 🛠
Anonymous Poll
14%
GitHub Copilot
38%
ChatGPT
7%
Claude
9%
Codeium
7%
Локальные LLM
22%
Не пользуюсь ИИ
4%
Другой (укажу в комментариях)
Не забудьте оставить комментарий с вашими мыслями об ИИ в программировании! Какие преимущества и недостатки вы видите? Какие инструменты рекомендуете попробовать коллегам? 🤔💬
Media is too big
VIEW IN TELEGRAM
▶️ Разработка CLI-приложения на Go с Bubble Tea

Только не говорите, что не любите CLI-приложения! Ловите 50-минутное обучающее видео, с помощью которого вы напишете CLI-инструмент для заметок с использованием Go + Bubble Tea + Lip Gloss от Charm.

Таймкоды:

00:00 Intro
03:00 Basics
10:04 SQLite store
22:03 List view
31:55 Add lipgloss
39:15 Textinput and Textarea
47:20 Working App!
48:56 Outro
👍4🥱1
🦫 Самоучитель по Go для начинающих. Часть 17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net

В этой части самоучителя мы погрузимся в мир сетевого программирования, изучим его основные концепции и инструменты. Начнем с рассмотрения принципов работы компьютерных сетей и их архитектуры, познакомимся с протоколами TCP и IP, лежащими в основе стека TCP/IP.

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

👉 Читать гайд

👩‍💻 Остальные части в серии:

1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍7
📄 Компиляция Go-программы в нативный бинарь для Nintendo Switch

Вовсе не новость, но кто-то мог пропустить это в своё время. Интересно взглянуть на детали👇

🔗 Читать гайд
👍13🤩3🔥2🎉1
👨‍💻🚀 Тест: насколько ты продвинутый разраб?

Говорят, что джун становится мидлом, когда начинает понимать, как мало он знает. Этот тест покажет, насколько ты продвинулся в своём развитии.

👉 Ворваться
👍3👾3😁2
🎧 В последнем выпуске подкаста Go Time Wesley Beary из Anchor рассказал о трудностях, с которыми столкнулась его команда при создании CLI-инструмента на Go

Учитывая количество библиотек, доступных Go-разработчикам в наши дни, можно подумать, что создание CLI-приложения стало тривиальным делом. Но все не так однозначно.

Так какие трудности могли возникнуть у команды на пути к production-ready CLI? 🤔

👉 Слушать (по ссылке также можно прочитать транскрибацию)
🥱5👍4🔥2🤔1
🚀 Проект nxdir-s/pipelines: элегантная работа с потоками данных в Go

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

Ключевые возможности:
🔄 Создание потоков данных: легко генерируйте данные из срезов, мап или кастомных функций.
🏎 Параллельная обработка (FanOut): ускоряйте вычисления, разделяя данные между несколькими обработчиками.
🔗 Объединение потоков (FanIn): собирайте результаты из разных каналов для дальнейшей обработки.
🛠 Простота использования: минималистичный API, понятный даже новичкам.

🌐 Проект на GitHub
Когда вы пишете код на Go, управление памятью становится ключевым моментом, влияющим на производительность приложения. В статье рассматривается важный вопрос: когда переменная в Go размещается в куче, а не на стеке?

В Go действует принцип, называемый escape analysis, который определяет, где именно должна быть размещена переменная — в стеке (быстрое управление памятью) или в куче (длительное хранение с управлением через GC). Например:

Если переменная передается из функции наружу (или возвращается), Go определяет, что она «убегает» из локального контекста и помещает её в кучу. Локальные переменные, которые не покидают функцию, обычно остаются на стеке.

Почему это важно? Куча требует затрат на сборку мусора, что может замедлить приложение. Понимание этих механизмов позволяет оптимизировать код: минимизировать аллокации в куче и уменьшить нагрузку на GC.

Оптимизируйте осознанно: инструмент
go build -gcflags="-m"

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

📎 Подробнее в источнике
👍225👾1
Go всегда славился своей философией минимализма. Когда в версии 1.18 появились дженерики (Generics), разработчики восприняли это как долгожданное улучшение. Но вместе с этим пришли и вопросы: не слишком ли прост этот инструмент для решения сложных задач?

🛠️ C помощью дженериков можно писать код, который работает с разными типами данных, не теряя читаемости и производительности. Это делает их незаменимыми для библиотек и больших проектов.

Преимущества дженериков в Go:

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

Недостатки дженериков в Go:

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

🌐 Подробнее в источнике
👍11👾1
🤖🛠 11 лучших ИИ-инструментов для разработки в 2024 году

В мире разработки программного обеспечения искусственный интеллект становится незаменимым помощником, способным значительно повысить продуктивность и качество кода. Представьте себе инструменты, которые не только автоматически дополняют ваш код, но и генерируют целые фрагменты, преобразуют дизайн в готовый код и обеспечивают безопасность вашего приложения. Хотите узнать, какие ИИ-инструменты помогут вам быть на шаг впереди в 2024 году? Откройте для себя решения, которые сделают ваш рабочий процесс более эффективным и инновационным.

🔗 Читать статью
🔗 Зеркало
Черные скидки на курсы в Академии!

-40% до конца ноября

🔥 В честь Черной пятницы до 30 ноября запускаем распродажу на все курсы proglib.academy и дарим промокод на сумму 10 000 на технику в магазине DigitalRazor (отправим вам по запросу)

🎁 Анонс новогоднего сюрприза!

🎄 Те, кто успеет приобрести курсы с 27 ноября по 27 декабря, получат шанс выиграть крутой новогодний подарок.
Что это будет, пока держим в секрете – следите за новостями на нашем канале!

Почему стоит выбрать нас?

⚫️ Опытные преподаватели
Вас будут обучать доценты ВМК МГУ по математике, а алгоритмы расскажет разработчик из Яндекса и преподаватель МФТИ и НИУ ВШЭ.

⚫️ Бессрочный доступ ко всем курсам
Проходите обучение в удобном для вас темпе, без давления жестких сроков.

⚫️ Поддержка преподавателей
Не останетесь одни — вам всегда помогут разобраться с трудными темами и ответят на любые вопросы через чат и платформу Coreapp.

👉 Не уверены, подойдет ли вам курс? Начните с бесплатных вводных занятий и познакомьтесь с преподавателями и форматом обучения –

Ждем вас на обучении! 🙌
🥱3👍2