Golang + Gin + Postgres + Docker + gRPC + NGINX
Реализация gRPC на основе Go с Gin, PostgreSQL, Docker и NGINX
#golang
Github
Чат с Go вакансиями
Реализация gRPC на основе Go с Gin, PostgreSQL, Docker и NGINX
#golang
go install github.com/golang/mock/mockgen@v1.6.0
Github
Чат с Go вакансиями
This media is not supported in your browser
VIEW IN TELEGRAM
huh — инструмент для создания интерактивных форм с использованием библиотеки Bubble Tea, которая применяется для построения текстовых пользовательских интерфейсов (TUI) на языке Go!
Основная цель huh — упростить создание форм с различными полями ввода, обработкой ошибок и возможностями навигации между группами полей.
Инструмент предоставляет готовую структуру для построения форм, поддерживает настройку тем, горячих клавиш и адаптацию для экранных читалок (режим доступности). Также он содержит возможности для обработки данных форм и их интеграции в текстовые интерфейсы, что может быть полезно для CLI-приложений или других текстовых интерфейсов.
🔐 Лицензия: MIT
Github
Junior Вакансии Go тут
Основная цель huh — упростить создание форм с различными полями ввода, обработкой ошибок и возможностями навигации между группами полей.
Инструмент предоставляет готовую структуру для построения форм, поддерживает настройку тем, горячих клавиш и адаптацию для экранных читалок (режим доступности). Также он содержит возможности для обработки данных форм и их интеграции в текстовые интерфейсы, что может быть полезно для CLI-приложений или других текстовых интерфейсов.
🔐 Лицензия: MIT
Github
Junior Вакансии Go тут
🌐 Как ускорить API
#инфографика про основные методы улучшения производительности API
💬 Какой из методов вы уже используете? Делитесь в комментариях! 👇
Junior Вакансии Go тут
#инфографика про основные методы улучшения производительности API
💬 Какой из методов вы уже используете? Делитесь в комментариях! 👇
Junior Вакансии Go тут
Dynamic Notification System — это проект на Go, разработанный для создания масштабируемого и гибкого планировщика уведомлений!
Он поддерживает отправку уведомлений через различные каналы, такие как Slack, Email, SMS, Webhook и другие. Система позволяет легко добавлять новые платформы с помощью динамической архитектуры плагинов, не требуя перезапуска приложения.
🔐 Лицензия: MIT
Github
Junior Вакансии Go тут
Он поддерживает отправку уведомлений через различные каналы, такие как Slack, Email, SMS, Webhook и другие. Система позволяет легко добавлять новые платформы с помощью динамической архитектуры плагинов, не требуя перезапуска приложения.
🔐 Лицензия: MIT
Github
Junior Вакансии Go тут
Linux: эффективная многопроцессорность
Используем Go
Автор: Олег Цилюрик
Год издания: 2024
#go #linux #ru
Скачать книгу
Используем Go
Автор: Олег Цилюрик
Год издания: 2024
#go #linux #ru
Скачать книгу
This media is not supported in your browser
VIEW IN TELEGRAM
Zasper — это IDE, разработанная с нуля для поддержки массового параллелизма!
Она разработана на языке Go для обеспечения высокой параллельности и эффективности использования ресурсов. Zasper отличается низким потреблением памяти и процессора, позволяя работать с большими объемами данных на локальных машинах. Она доступен как в виде приложения Electron, так и как веб-приложение.
🔐 Лицензия: AGPL-3.0
Github
@golangprofi
Она разработана на языке Go для обеспечения высокой параллельности и эффективности использования ресурсов. Zasper отличается низким потреблением памяти и процессора, позволяя работать с большими объемами данных на локальных машинах. Она доступен как в виде приложения Electron, так и как веб-приложение.
🔐 Лицензия: AGPL-3.0
Github
@golangprofi
Техника проверки if got != want { t.Errorf(...) } в тестах Go — это простой и эффективный способ проверки значений, который полностью соответствует философии языка. Она не требует сторонних библиотек, остаётся прозрачной и легко читаемой, что особенно важно для минималистичного и понятного кода.
Благодаря своей простоте, этот подход легко масштабируется: от проверки одного значения до сложных сценариев с таблицами тестирования. Кроме того, стандартный вывод ошибок в Go обычно достаточно информативен, чтобы быстро понять, что пошло не так.
Согласны?
Junior Вакансии Go тут
Please open Telegram to view this post
VIEW IN TELEGRAM
mtlynch.io
if got, want: A Simple Way to Write Better Go Tests
There’s an excellent Go testing pattern that too few people know. I can teach it to you in 30 seconds.
Instead of writing Go tests like this:
// The common, unrefined way.
username := GetUser()
if username != "dummyUser" {
t.Errorf("unexpected username:…
Instead of writing Go tests like this:
// The common, unrefined way.
username := GetUser()
if username != "dummyUser" {
t.Errorf("unexpected username:…
📦 Пакет embed в Go
Если вы когда-либо работали с Go, то знаете, как важно уметь управлять статическими ресурсами. Пакет embed (представленный в Go 1.16) решает эту задачу элегантно: он позволяет встраивать файлы прямо в исполняемый бинарный файл, что делает приложение автономным и упрощает его развертывание.
💡 Зачем использовать embed?
С помощью директивы //go:embed вы можете встроить файлы (например, HTML, CSS, конфигурационные файлы или изображения) прямо в бинарный файл. Это исключает необходимость поставлять эти файлы отдельно, и ваши приложения становятся более компактными и безопасными.
🛠 Как это работает?
Вы указываете директиву //go:embed перед переменной.
Используете типы данных string для текстовых файлов, []byte для бинарных данных или embed.FS для работы с целыми директориями.
🚀 Пример использования:
В этом примере файл hello.txt встроен в приложение, и его содержимое доступно как строка.
Почему стоит использовать embed?
✅ Удобство развертывания: всё в одном файле — не нужно беспокоиться о поставке отдельных файлов.
✅ Безопасность: встроенные файлы не могут быть изменены после компиляции.
✅ Автономность: ваши приложения не зависят от внешних файлов и легко переносятся между окружениями.
Когда не стоит использовать embed?
❌ Когда нужно работать с динамически изменяющимися файлами (например, конфигурациями, которые могут меняться в процессе работы приложения).
❌ Для очень больших файлов, так как это увеличивает размер бинарника.
Чат с Go вакансиями
Если вы когда-либо работали с Go, то знаете, как важно уметь управлять статическими ресурсами. Пакет embed (представленный в Go 1.16) решает эту задачу элегантно: он позволяет встраивать файлы прямо в исполняемый бинарный файл, что делает приложение автономным и упрощает его развертывание.
С помощью директивы //go:embed вы можете встроить файлы (например, HTML, CSS, конфигурационные файлы или изображения) прямо в бинарный файл. Это исключает необходимость поставлять эти файлы отдельно, и ваши приложения становятся более компактными и безопасными.
🛠 Как это работает?
Вы указываете директиву //go:embed перед переменной.
Используете типы данных string для текстовых файлов, []byte для бинарных данных или embed.FS для работы с целыми директориями.
🚀 Пример использования:
package main
import (
"embed"
"fmt"
)
//go:embed hello.txt
var hello string
func main() {
fmt.Println(hello)
}
В этом примере файл hello.txt встроен в приложение, и его содержимое доступно как строка.
Почему стоит использовать embed?
Когда не стоит использовать embed?
Чат с Go вакансиями
Please open Telegram to view this post
VIEW IN TELEGRAM
Go + HTMX-шаблон, содержащий все Необходимые Инструменты для создания веб-приложений.
▪️ Github
#golang #htmx #javascript #programming #webdev
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Kubernetes, Platform as a Service (PaaS) и CI/CD - это мощные решения, но иногда они оказываются сложнее, чем требуется вашему проекту. Если вам нравится управлять своим сервером, использование Airo может быть значительно дешевле и обеспечит больший контроль над техническими деталями вашего проекта.
Он предоставляет удобный интерфейс и расширяемые возможности.
▪️ Простота использования: Благодаря интуитивно понятному интерфейсу, начать работать с Airo можно без длительного изучения сложной документации.
▪️ Гибкость и настройка: Инструмент легко адаптируется под специфические требования любого проекта, позволяя интегрировать дополнительные модули и плагины по мере необходимости.
▪️ Оптимизированный код Airo обеспечивает быструю обработку задач, что особенно важно при работе с большими объемами данных или в условиях сжатых сроков разработки.
▪️ По сравнению с аналогичными инструментами, Airo предлагает оптимальное сочетание скорости, удобства и расширяемости, что позволяет разработчикам работать эффективнее и достигать лучших результатов.
git clone https://github.com/yourusername/airo.git
cd airo
make install
airo deploy
▪️ GitHub: https://github.com/bypirob/airo
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Высокопроизводительное кэширование с помощью Redis и Go
Go - отличный язык для создания высокопроизводительных веб-приложений, а высокопроизводительные веб-приложения часто требуют централизованного кэширования.
Стандартом де-факто для централизованного кэширования является Redis, но, популярные сегодня библиотеки Go не поддерживают потоковую передачу данных, эффективных с точки зрения памяти.
Вместо этого они предлагают
Этот паттерн работает хорошо, если вы кэшируете небольшие объекты, но если вы кэшируете объекты размером более 1 кб, []byte-ориентированные API работют не так хорошо.
В протоколе Redis нет ничего такого, что мешало бы создать потоковый API. Поэтому пердставляем redjet, библиотеку Redis, ориентированную на производительность.
С помощью redjet вы можете написать приведенный выше код следующим образом:
Код стал проще и эффективнее.
▪️Github
▪️Читать дальше
▪️Бенчмарки
@golangprofi
Go - отличный язык для создания высокопроизводительных веб-приложений, а высокопроизводительные веб-приложения часто требуют централизованного кэширования.
Стандартом де-факто для централизованного кэширования является Redis, но, популярные сегодня библиотеки Go не поддерживают потоковую передачу данных, эффективных с точки зрения памяти.
Вместо этого они предлагают
[]byte API,
с которыми вы взаимодействуете следующим образом:// В этом коде используется https://github.com/redis/go-redis, но те же
// ограничения действуют для Rueidis и Redigo.
func redisHandler(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
// Extract key from RequestURI
key := strings.TrimLeft(r.RequestURI, "/")
// Get the value from Redis as a byte slice
val, err := rdb.Get(ctx, key).Bytes()
if err == redis.Nil {
http.Error(w, "Key not found in Redis", http.StatusNotFound)
return
} else if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
_, err = w.Write(val)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
Этот паттерн работает хорошо, если вы кэшируете небольшие объекты, но если вы кэшируете объекты размером более 1 кб, []byte-ориентированные API работют не так хорошо.
В протоколе Redis нет ничего такого, что мешало бы создать потоковый API. Поэтому пердставляем redjet, библиотеку Redis, ориентированную на производительность.
С помощью redjet вы можете написать приведенный выше код следующим образом:
func redisHandler(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
// Извлечение ключа из RequestURI
key := strings.TrimLeft(r.RequestURI, "/")
// Передаем значение непосредственно из Redis в ответ.
_, err := rdb.Command("GET", key).WriteTo(w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
Код стал проще и эффективнее.
go get github.com/coder/redjet@latest
▪️Github
▪️Читать дальше
▪️Бенчмарки
@golangprofi
GitHub
GitHub - redis/go-redis: Redis Go client
Redis Go client. Contribute to redis/go-redis development by creating an account on GitHub.
📚Библиотеки и инструменты для создания и отправки электронной почты на GO.
▪️chasquid - SMTP-сервер, написанный на Go.
▪️douceur - CSS-инлайнер для ваших HTML-писем.
▪️email - Надежная и гибкая библиотека работы с электронной почтой на Go.
▪️email-verifier - Библиотека Go для проверки электронной почты без отправки писем.
▪️go-dkim - Библиотека DKIM для подписи и проверки электронной почты.
▪️go-email-normalizer - Библиотека Golang для нормализации электронной почты.
▪️go-email-validator - Модульный валидатор электронной почты для проверки синтаксиса, содержания, smtp и т. д..
▪️go-imap - Библиотека IMAP для клиентов и серверов.
▪️go-mail - Простая библиотека Go для отправки писем на Go.
▪️go-message - Потоковая библиотека для Internet Message Format и почтовых сообщений.
▪️go-premailer - Встраиваемая стилизация для HTML-почты в Go.
▪️go-simple-mail - Очень простой пакет для отправки электронной почты с SMTP Keep Alive и двумя таймаутами: Connect и Send.
▪️Hectane - Легкий SMTP-клиент, предоставляющий API.
▪️hermes - Пакет Golang, генерирующий HTML-письма.
▪️Maddy - Почтовый сервер "все в одном" (SMTP, IMAP, DKIM, DMARC, MTA-STS, DANE).
▪️mailchain - Отправка зашифрованных писем на адреса блокчейна, написанная на Go.
▪️mailgun-go - Библиотека Go для отправки почты с помощью Mailgun API.
▪️MailHog - тестирование электронной почты и SMTP с веб-интерфейсом и API.
▪️Mailpit - Инструмент тестирования электронной почты и SMTP для разработчиков.
▪️mailx - Mailx - это библиотека, которая упрощает отправку электронной почты по SMTP. Она является расширением стандартной библиотеки golang net/smtp.
▪️SendGrid - Go-библиотека SendGrid для отправки электронной почты.
▪️smtp - Машина состояний протокола SMTP-сервера.
▪️smtpmock - Легкий настраиваемый многопоточный тестовый SMTP-сервер. Имитирует любое поведение SMTP в вашей тестовой среде.
▪️truemail-go - Настраиваемый валидатор/верификатор электронной почты на языке Golang. Проверяет почту через Regex, DNS, SMTP и многое другое.
👉 Golang Юниор | #golang
▪️chasquid - SMTP-сервер, написанный на Go.
▪️douceur - CSS-инлайнер для ваших HTML-писем.
▪️email - Надежная и гибкая библиотека работы с электронной почтой на Go.
▪️email-verifier - Библиотека Go для проверки электронной почты без отправки писем.
▪️go-dkim - Библиотека DKIM для подписи и проверки электронной почты.
▪️go-email-normalizer - Библиотека Golang для нормализации электронной почты.
▪️go-email-validator - Модульный валидатор электронной почты для проверки синтаксиса, содержания, smtp и т. д..
▪️go-imap - Библиотека IMAP для клиентов и серверов.
▪️go-mail - Простая библиотека Go для отправки писем на Go.
▪️go-message - Потоковая библиотека для Internet Message Format и почтовых сообщений.
▪️go-premailer - Встраиваемая стилизация для HTML-почты в Go.
▪️go-simple-mail - Очень простой пакет для отправки электронной почты с SMTP Keep Alive и двумя таймаутами: Connect и Send.
▪️Hectane - Легкий SMTP-клиент, предоставляющий API.
▪️hermes - Пакет Golang, генерирующий HTML-письма.
▪️Maddy - Почтовый сервер "все в одном" (SMTP, IMAP, DKIM, DMARC, MTA-STS, DANE).
▪️mailchain - Отправка зашифрованных писем на адреса блокчейна, написанная на Go.
▪️mailgun-go - Библиотека Go для отправки почты с помощью Mailgun API.
▪️MailHog - тестирование электронной почты и SMTP с веб-интерфейсом и API.
▪️Mailpit - Инструмент тестирования электронной почты и SMTP для разработчиков.
▪️mailx - Mailx - это библиотека, которая упрощает отправку электронной почты по SMTP. Она является расширением стандартной библиотеки golang net/smtp.
▪️SendGrid - Go-библиотека SendGrid для отправки электронной почты.
▪️smtp - Машина состояний протокола SMTP-сервера.
▪️smtpmock - Легкий настраиваемый многопоточный тестовый SMTP-сервер. Имитирует любое поведение SMTP в вашей тестовой среде.
▪️truemail-go - Настраиваемый валидатор/верификатор электронной почты на языке Golang. Проверяет почту через Regex, DNS, SMTP и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - aymerick/douceur: A simple CSS parser and inliner in Go
A simple CSS parser and inliner in Go. Contribute to aymerick/douceur development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
Enola Holmes
Это усовершенствованная версия утилиты Sherlock и современный CLI-инструмент, написанный на Go, который позволяет находить учетные записи в социальных сетях по имени пользователя.
go install github.com/theyahya/enola/cmd/enola@latest
▪️ Github
👉 Golang Юниор | #golang
Это усовершенствованная версия утилиты Sherlock и современный CLI-инструмент, написанный на Go, который позволяет находить учетные записи в социальных сетях по имени пользователя.
go install github.com/theyahya/enola/cmd/enola@latest
▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM