Golang Portal
8.06K subscribers
420 photos
31 videos
7 files
453 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Golang-разработчика

Связь: @devmangx
Download Telegram
Самая маленькая, но крутая фича Go 1.24 — это, конечно, crypto/rand.Text, которая возвращает криптографически случайную строку, используя алфавит Base32.

Я просто в восторге от этого 👍

👉 @juniorGolang
Please open Telegram to view this post
VIEW IN TELEGRAM
👍296🔥2🤔1
Нулевые выделения памяти в Go

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

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

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

👉 Подробнее здесь

👉 @juniorGolang | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
⚙️ ai-context — CLI-инструмент для создания MD-файлов с контекстом из различных источников, чтобы помочь взаимодействовать с LLM (моделями языка, такими как ChatGPT, Llama3, Claude и т.д.).

👉 https://github.com/tanq16/ai-context

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Современная веб-разработка с Go: легковесная альтернатива React SSR

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

Автор предлагает использовать стек, включающий Templ для серверного рендеринга в Go, HTMX для динамических взаимодействий с сервером и Petite Vue (размером всего 6 КБ) для реактивности на клиенте.

Этот подход позволяет:
🔹Содержать весь код в одном Go-приложении.
🔹Минимизировать использование JavaScript на клиенте.
🔹Снизить сложность инфраструктуры и затраты на развертывание.
🔹Обеспечить высокую производительность и безопасность.

👉 Читать подробнее

👉 @juniorGolang | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🌭2
⚙️ Go-пакет для валидации структур с использованием тегов

👉 https://github.com/twharmon/govalid

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔1🌭1
Изменяемые vs Неизменяемые структуры данных в Go

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

👉 Подробности можно найти здесь

👉 @juniorGolang | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ Шаблон микросервиса на Golang с использованием MySQL, Docker и Swagger, API REST. Реализован с помощью Gin и GORM, поддерживает пагинацию и чистую архитектуру.

👉 https://github.com/gbrayhan/microservices-go

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🌭3🤔1
Создание собственного Git с нуля на Go

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

Это хороший способ углубить понимание работы Git на практике.

👉 Подробности можно найти здесь

👉 @juniorGolang | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🌚61🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ Go-клиент для API Deepseek — простой, полноценный, надёжный и производительный.

👉 https://github.com/go-deepseek/deepseek

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥1
⚙️ Универсальный интерфейс командной строки для PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Server и многих других баз данных, включая NoSQL и нереляционные базы данных.

👉 https://github.com/xo/usql

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Отличная статья: «Я создал безголовый браузер на Go. Вот что я узнал»

Автор статьи рассказывает, как он создал безголовый браузер на Go (Gost-DOM) для тестирования HTMX-приложений.

Он столкнулся с задачами парсинга HTML и выполнения JavaScript, использовал x/net/html и встроил движок V8. В итоге получил легковесный инструмент, подходящий для TDD в Go.

👉 Подробности можно найти здесь

👉 @juniorGolang | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
Осваиваем HTTP/2 Server Push на Go: повышаем производительность веб-приложений

Автор подробно описывает, как сервер может заранее отправлять клиенту важные ресурсы (например, CSS, JavaScript, изображения) до их явного запроса, приводя примеры кода для реализации этой техники.

Помимо базовой реализации, обсуждаются такие аспекты, как учёт состояния кэша клиента, управление приоритетами пуша, ограничение количества отправляемых ресурсов (push budget), интеграция с CDN и использование клиентских подсказок для более точной оптимизации.

👉 Подробности можно найти здесь

👉 @juniorGolang | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
This media is not supported in your browser
VIEW IN TELEGRAM
Операции со слайсами в Go

Здесь наглядно показывается, как работают слайсы, какие они имеют методы и как взаимодействуют с разными функциями

Ссылка: тык

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
100 ошибок Go и как их избежать

Автор:
Харшани Тейва
Год: 2024

📂 Скачать книгу

👉 @juniorGolang | #books
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54
⚙️ Открытый инструмент командной строки на Go, обеспечивающий безопасные и обратимые миграции схем для PostgreSQL за счёт одновременной работы с несколькими версиями схем.

https://github.com/xataio/pgroll

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Оптимизация запросов в Go с real-time batching

Real-time batching — это стратегия обработки входящих данных, при которой вместо выполнения каждой операции по одной они накапливаются в батч и обрабатываются вместе через небольшие интервалы времени.

— Как это работает пошагово

1. Сбор событий в буфер — вместо того чтобы сразу обрабатывать каждое событие, мы добавляем его в очередь или в канал.

2. Таймер или лимит батча — если прошло, например, 50 мс, или набралось 100 событий, запускается обработка.

3. Групповая обработка — все собранные события обрабатываются одним запросом к базе данных, API или другому ресурсу.

Где применяется

• Базы данных – массовые INSERT и UPDATE, минимизирующие нагрузку

• Очереди сообщений – накопление сообщений перед отправкой

• Логирование – запись логов блоками вместо построчной записи

• Аналитика – сбор событий перед отправкой в мониторинговую систему

👉 Подробности с примерами кода в статье

👉 @juniorGolang | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93
Приятное улучшение качества жизни в Go 1.24:

Команда go build теперь устанавливает версию главного модуля (BuildInfo.Main.Version) в скомпилированном бинарнике на основе тега или коммита из системы контроля версий.

Если есть несохранённые изменения, добавляется суффикс +dirty

👉 @juniorGolang
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6
Концепции, которые должен знать каждый разработчик: параллелизм — это НЕ конкурентность

Параллелизм и конкурентность — два термина, которые часто вызывают путаницу.

Как метко заметил Роб Пайк (один из создателей GoLang): «Конкурентность — это про управление множеством задач одновременно. Параллелизм — это про выполнение множества задач одновременно.»

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

Другой — с одновременным выполнением нескольких задач, обычно на нескольких процессорах или ядрах.

Что такое конкурентность?
Управление несколькими задачами на одном процессоре, чередуя их таким образом, чтобы создавалось впечатление одновременного выполнения, называется конкурентностью.

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

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

Что такое параллелизм?
Параллелизм подразумевает выполнение нескольких задач одновременно.

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

Различие между конкурентностью и параллелизмом напрямую влияет на производительность и эффективность приложений.

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

Асинхронное программирование
Асинхронное программирование используется для достижения конкурентности в однопоточных средах.

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

Отличный пример — Node.js, который обрабатывает конкурентность в однопоточной модели с помощью обратных вызовов и циклов событий.

Между тем, многопоточные среды поддерживают как конкурентность, так и параллелизм.

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

Многопоточные языки программирования, такие как C#, предоставляют разработчикам возможность использовать эти функции.

Понимание различий между конкурентностью и параллелизмом — это важный аспект при создании высокопроизводительных и эффективных программных решений.

👉 @juniorGolang
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥3🤯1
Простое веб-приложение, которое демонстрирует случайные репозитории на GitHub, написанные на Go

👉 github.com/Glup3/gorepos

👉 @juniorGolang | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142