Fuego — это легковесный фреймворк для Go, предназначенный для ускорения разработки веб-приложений. Его особенность заключается в минималистичном подходе: с помощью небольшого объема кода вы можете развернуть мощный сервер, включая такие возможности, как рендеринг HTML, автоматическая генерация OpenAPI-спецификаций и удобная работа с middleware.
Быстрый старт: минимальный пример веб-сервера состоит из пары строк кода, благодаря встроенному управлению маршрутами и простому синтаксису.
Интеграция с OpenAPI: автоматическая генерация спецификаций для вашего API, что упрощает документирование и тестирование.
Гибкость в работе с данными: поддержка сериализации/десериализации, валидации и трансформации данных на входе и выходе.
Рендеринг HTML: интеграция с различными инструментами, такими как html/template, Gomponents и Templ.
Hot Reload: возможность изменять код без перезапуска сервера, что значительно ускоряет разработку.
package main
import (
"github.com/go-fuego/fuego"
)
func main() {
s := fuego.NewServer()
fuego.Get(s, "/", helloWorld)
s.Run()
}
func helloWorld(c fuego.ContextNoBody) (string, error) {
return "Hello, World!", nil
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🥱5👍2
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
💾 CDC vs Outbox: как решить проблему двойной записи в распределенной системе
В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.
Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.
Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.
🔗 Читать статью
🔗 Зеркало
В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.
Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.
Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.
🔗 Читать статью
🔗 Зеркало
👍5🤩1
🎯 Секреты инициализации программ
Думаете, функция main() в Go — это просто точка входа? Отложите скептицизм! В статье раскрывается целый пласт внутренних механизмов, которые происходят до первой строки вашего кода.
🔍 Вас ждет глубокое погружение в процессы, которые обычно остаются за кадром:
Порядок инициализации пакетов
🛠️Как Go гарантирует правильную последовательность подготовки
🛠️ Механизм работы функций init()
🛠️ Хитрости импорта пакетов
Тонкости работы с ресурсами
✅ Безопасная инициализация общих ресурсов
✅ Использование sync.Once
✅ Предотвращение гонок при старте программы
Управление жизненным циклом программы
🔧 Завершение выполнения через os.Exit()
🔧 Обработка горутин
🔧 Что происходит при панике во время инициализации
Думаете, функция main() в Go — это просто точка входа? Отложите скептицизм! В статье раскрывается целый пласт внутренних механизмов, которые происходят до первой строки вашего кода.
🔍 Вас ждет глубокое погружение в процессы, которые обычно остаются за кадром:
Порядок инициализации пакетов
🛠️Как Go гарантирует правильную последовательность подготовки
🛠️ Механизм работы функций init()
🛠️ Хитрости импорта пакетов
Тонкости работы с ресурсами
✅ Безопасная инициализация общих ресурсов
✅ Использование sync.Once
✅ Предотвращение гонок при старте программы
Управление жизненным циклом программы
🔧 Завершение выполнения через os.Exit()
🔧 Обработка горутин
🔧 Что происходит при панике во время инициализации
👍8
🍏🍎 Подборка лучших статей и постов «Библиотеки Go-разработчика» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
🦫 Самоучитель по Go для начинающих. Часть 17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
🦆 Как не путаться в интерфейсах
🔀 Команды git merge и git rebase: преимущества, недостатки и ключевые различия
🧠💻✨ Как стать успешным программистом: 6 ключевых качеств профессионального разработчика
🦫 Самоучитель по Go для начинающих. Часть 17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
🦆 Как не путаться в интерфейсах
🔀 Команды git merge и git rebase: преимущества, недостатки и ключевые различия
🧠💻✨ Как стать успешным программистом: 6 ключевых качеств профессионального разработчика
👍1
🚀 Архитектура RESTful API на Go с использованием Gin, GORM и PostgreSQL
Если ты работаешь с микросервисами или хочешь оценить подходы разработки API на Go, стоит обратить внимание на статью. Автор предлагает современное решение с упором на производительность и простоту, которое можно адаптировать под реальные проекты.
👨💻Стек технологий:
Gin: высокопроизводительный HTTP-фреймворк, подходящий для микросервисов благодаря своей минималистичной архитектуре.
GORM: ORM с богатым функционалом, включая миграции, транзакции, ассоциации и поддержку различных баз данных.
PostgreSQL: одна из самых мощных и масштабируемых реляционных СУБД.
💡 Что вы узнаете:
Демонстрируется как разделить бизнес-логику, маршруты и работу с базой данных.
Рассматривается использование моделей в GORM и тонкости работы с миграциями.
API легко расширяется и интегрируется в существующую микросервисную архитектуру.
Возможность адаптировать пример под реальный production-ready код.
Если ты работаешь с микросервисами или хочешь оценить подходы разработки API на Go, стоит обратить внимание на статью. Автор предлагает современное решение с упором на производительность и простоту, которое можно адаптировать под реальные проекты.
👨💻Стек технологий:
Gin: высокопроизводительный HTTP-фреймворк, подходящий для микросервисов благодаря своей минималистичной архитектуре.
GORM: ORM с богатым функционалом, включая миграции, транзакции, ассоциации и поддержку различных баз данных.
PostgreSQL: одна из самых мощных и масштабируемых реляционных СУБД.
💡 Что вы узнаете:
Демонстрируется как разделить бизнес-логику, маршруты и работу с базой данных.
Рассматривается использование моделей в GORM и тонкости работы с миграциями.
API легко расширяется и интегрируется в существующую микросервисную архитектуру.
Возможность адаптировать пример под реальный production-ready код.
🥱12👍8❤4👾1
🦫 Самоучитель по Go для начинающих. Часть 18. Протокол HTTP. Создание HTTP-сервера и клиента. Пакет net/http
Погружаемся в мир сетевых технологий с Go! В этой части самоучителя рассматриваются основы работы с HTTP в Go: устройство HTTP-запросов и ответов, ключевые способы взаимодействия клиента и сервера. Также подробно разбираются возможности пакета net/http, включая отправку запросов, обработку ответов и настройку параметров HTTP-сервера для веб-приложений.
📎 Читать новую часть самоучителя
👩💻 Остальные части в серии:
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 подход. Параллельные тесты
17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
Погружаемся в мир сетевых технологий с Go! В этой части самоучителя рассматриваются основы работы с HTTP в Go: устройство HTTP-запросов и ответов, ключевые способы взаимодействия клиента и сервера. Также подробно разбираются возможности пакета net/http, включая отправку запросов, обработку ответов и настройку параметров HTTP-сервера для веб-приложений.
📎 Читать новую часть самоучителя
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 подход. Параллельные тесты
17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🥱2❤1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
3 Go-проекта для начинающих DevOps-инженеров!
Автор статьи представляет три практических проекта на Go, которые помогут начинающим разработчикам получить навыки программирования в DevOps.
🤩 Проекты
1. Мониторинг использования дисков
Программа на Go для анализа использования дискового пространства. Ключевые возможности:
✅ Расчет общего, свободного и занятого места
✅ Вычисление процента использования диска
✅ Поддержка мониторинга любого указанного пути
2. HTTP-сервер для портфолио
Веб-сервер для размещения статического сайта-портфолио. Особенности:
✅ Раздача статических файлов
✅ Эндпоинт Healthcheck для мониторинга
✅ Простой способ хостинга личной страницы
3. RESTful API для управления DevOps-инструментами
API для работы со списком DevOps-утилит. Функционал:
✅ Список инструментов
✅ Добавление новых инструментов
✅ Получение детальной информации
✅ Потокобезопасное управление данными
📎 Подробнее в источнике
Автор статьи представляет три практических проекта на Go, которые помогут начинающим разработчикам получить навыки программирования в DevOps.
1. Мониторинг использования дисков
Программа на Go для анализа использования дискового пространства. Ключевые возможности:
2. HTTP-сервер для портфолио
Веб-сервер для размещения статического сайта-портфолио. Особенности:
3. RESTful API для управления DevOps-инструментами
API для работы со списком DevOps-утилит. Функционал:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😍3❤🔥2🔥2
🚀 Go Protobuf: Новый Opaque API для оптимизации и гибкости
Команда Go представила новый Opaque API для Protocol Buffers, который решает ключевые проблемы старого подхода.
Что изменилось?
Раньше в Protobuf структурах можно было напрямую обращаться к полям, что делало оптимизацию и развитие библиотеки сложным. Новый API скрывает детали реализации и предоставляет методы вроде Get, Set, и Clear. Это позволяет:
✅ Сократить потребление памяти — благодаря использованию битовых флагов вместо указателей.
✅ Улучшить производительность — оптимизация работы сборщика мусора и аллокаций.
✅ Сделать код безопаснее и гибче — структура теперь скрыта, что позволяет вносить изменения без риска для пользователей.
🎯 Пример:
Старый API. Вместо прямого доступа к структурам:
Новый Opaque API использует методы:
Команда Go представила новый Opaque API для Protocol Buffers, который решает ключевые проблемы старого подхода.
Что изменилось?
Раньше в Protobuf структурах можно было напрямую обращаться к полям, что делало оптимизацию и развитие библиотеки сложным. Новый API скрывает детали реализации и предоставляет методы вроде Get, Set, и Clear. Это позволяет:
✅ Сократить потребление памяти — благодаря использованию битовых флагов вместо указателей.
✅ Улучшить производительность — оптимизация работы сборщика мусора и аллокаций.
✅ Сделать код безопаснее и гибче — структура теперь скрыта, что позволяет вносить изменения без риска для пользователей.
🎯 Пример:
Старый API. Вместо прямого доступа к структурам:
req.BackendServer = proto.String(«server1»)
Новый Opaque API использует методы:
req.SetBackendServer(«server1»)
🔥23👍4❤2⚡2
Forwarded from Библиотека питониста | Python, Django, Flask
🌐 Как работает GraphQL и чем он лучше RESTful API
GraphQL не следует путать с SQL — он не используется для прямых запросов к таблицам базы данных. GraphQL — это, скорее, формат или структура, которая задаёт контракт между клиентом и сервером API. Его можно рассматривать как спецификацию или новый стандарт API, похожий на REST, но более эффективный и гибкий.
В новой статье делаем детальный разбор преимуществ и недостатков GraphQL с примерами кода. Помогаем понять, стоит ли переходить на эту технологию в вашем проекте.
👉 Читать по этой ссылке
В новой статье делаем детальный разбор преимуществ и недостатков GraphQL с примерами кода. Помогаем понять, стоит ли переходить на эту технологию в вашем проекте.
👉 Читать по этой ссылке
👍6❤2🥱2🥰1
🚀 WebSocket в GoFrame: Практическое руководство по real-time коммуникациям
Современные веб-приложения требуют надёжных механизмов мгновенного обмена данными. В новой статье детально разобрана реализация WebSocket с использованием GoFrame — фреймворка для Go.
Руководство раскрывает ключевые аспекты создания WebSocket-соединений: от построения сервера и управления параллельными подключениями до реализации механизма heartbeat для непрерывной проверки состояния соединения.
Особое внимание уделено безопасной работе с пулом подключений, что критично для производительных real-time систем.
💡 Практические рекомендации включают детальную обработку ошибок, механизмы автоматического переподключения и тонкой синхронизации между клиентом и сервером.
#новость
Современные веб-приложения требуют надёжных механизмов мгновенного обмена данными. В новой статье детально разобрана реализация WebSocket с использованием GoFrame — фреймворка для Go.
Руководство раскрывает ключевые аспекты создания WebSocket-соединений: от построения сервера и управления параллельными подключениями до реализации механизма heartbeat для непрерывной проверки состояния соединения.
Особое внимание уделено безопасной работе с пулом подключений, что критично для производительных real-time систем.
#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
🔥1👾1
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
👾1
🚀 Машинное обучение на Go без Python?
Python давно стал стандартом в ML благодаря библиотекам вроде TensorFlow и PyTorch. Но у него есть минусы: зависимость от интерпретатора и низкая производительность.
В статье Эли Бендерски рассказывает, как библиотека GoMLX меняет подход к ML, предоставляя возможность создавать и запускать модели на Go, исключая Python.
🔍 Что такое GoMLX?
GoMLX — библиотека для машинного обучения, использующая инфраструктуру OpenXLA. Она позволяет:
✨ Проектировать нейронные сети на Go.
✨ Оптимизировать выполнение на CPU, GPU и TPU.
✨ Избежать зависимостей от Python, что упрощает деплой и повышает производительность.
Статья демонстрирует, как реализовать сверточную нейронную сеть для обработки изображений, полностью используя Go. Модель описывается, обучается и тестируется в одной среде без внешних интерпретаторов.
#новость
Python давно стал стандартом в ML благодаря библиотекам вроде TensorFlow и PyTorch. Но у него есть минусы: зависимость от интерпретатора и низкая производительность.
В статье Эли Бендерски рассказывает, как библиотека GoMLX меняет подход к ML, предоставляя возможность создавать и запускать модели на Go, исключая Python.
🔍 Что такое GoMLX?
GoMLX — библиотека для машинного обучения, использующая инфраструктуру OpenXLA. Она позволяет:
Статья демонстрирует, как реализовать сверточную нейронную сеть для обработки изображений, полностью используя Go. Модель описывается, обучается и тестируется в одной среде без внешних интерпретаторов.
#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🤔4❤3🔥2👾1
🔑 Безопасно передаём данные с Go
Безопасность данных — одна из ключевых задач современного программирования. И если вы разрабатываете приложения на Go, то пакет crypto предоставляет мощный набор инструментов для шифрования, хэширования, создания цифровых подписей и других криптографических операций.
🔒 Что такое Go Crypto?
crypto — это стандартный пакет Go, который включает множество инструментов для работы с криптографией:
➖ Хэширование: поддерживаются алгоритмы вроде SHA-256, SHA-512 и других.
➖ Шифрование: предоставляются механизмы для работы с симметричными (AES) и асимметричными (RSA, ECC) алгоритмами.
➖ Цифровые подписи: есть встроенная поддержка создания и проверки подписей.
➖ Работа с ключами: генерация, хранение и преобразование ключей.
🚀 Пример использования
👍 Лучшие практики
➖ Используйте случайные данные (например, через crypto/rand) для генерации ключей и инициализационных векторов.
➖ Предпочитайте современные алгоритмы: например, AES-GCM вместо старых режимов шифрования (CBC).
➖ Всегда проверяйте ошибки, особенно при работе с криптографией, так как они могут указывать на проблемы с входными данными или ключами.
Безопасность данных — одна из ключевых задач современного программирования. И если вы разрабатываете приложения на Go, то пакет crypto предоставляет мощный набор инструментов для шифрования, хэширования, создания цифровых подписей и других криптографических операций.
crypto — это стандартный пакет Go, который включает множество инструментов для работы с криптографией:
🚀 Пример использования
package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("Hello, World!")
hash := sha256.Sum256(data)
fmt.Printf("SHA-256: %x\n", hash)
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11😢1👾1
Новый год — время для новых начинаний!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
👍2👾1
🔐 О хеш-функциях в Go: как и зачем их использовать
Хеш-функции — это фундаментальный инструмент криптографии, который используется для создания уникальных "отпечатков" данных. В языке Go работа с хеш-функциями проста и интуитивно понятна благодаря стандартной библиотеке. Давайте разберёмся, как это работает и где можно применить.
🧩 Что такое хеш-функции?
Хеш-функция берёт входные данные произвольной длины и преобразует их в фиксированную строку байтов.
✏️ Примеры задач, где применяются хеш-функции:
1. Проверка целостности данных.
2. Хеширование паролей.
3. Создание цифровых подписей.
4. Построение структур данных (например, хеш-таблиц).
⚙️ Как использовать хеш-функции в Go?
Go предоставляет удобный пакет crypto с различными реализациями хеш-функций. Вот примеры:
💡 Вывод: строка хеша длиной 64 символа в 16-ричном формате.
💡 Вывод: уникальный bcrypt-хеш пароля, начинающийся с "$2a$", который включает случайную соль и результат хеширования.
🔍 Хеш-функции в Go
1️⃣ SHA-256 и SHA-224
Надёжные и широко используемые.
Подходят для большинства задач, связанных с безопасностью.
Пакет: crypto/sha256.
2️⃣ SHA-512 и SHA-384
Дают более длинные хеши, что увеличивает защиту.
Пакет: crypto/sha512.
3️⃣ SHA-3 (Keccak)
Современная альтернатива SHA-2.
Более устойчива к некоторым видам атак.
Пакет: golang.org/x/crypto/sha3.
4️⃣ MD5
❌ НЕ рекомендуется использовать для безопасности.
Подходит для задач без требований криптографической стойкости (например, проверки файлов).
Пакет: crypto/md5.
5️⃣ BLAKE2
Быстрая и надёжная альтернатива SHA-2.
Пакет: golang.org/x/crypto/blake2b.
Хеш-функции в Go — это мощный и простой инструмент, который подойдёт для множества задач. Главное — понимать их особенности и ограничения, чтобы использовать их безопасно и эффективно.
Хеш-функции — это фундаментальный инструмент криптографии, который используется для создания уникальных "отпечатков" данных. В языке Go работа с хеш-функциями проста и интуитивно понятна благодаря стандартной библиотеке. Давайте разберёмся, как это работает и где можно применить.
🧩 Что такое хеш-функции?
Хеш-функция берёт входные данные произвольной длины и преобразует их в фиксированную строку байтов.
1. Проверка целостности данных.
2. Хеширование паролей.
3. Создание цифровых подписей.
4. Построение структур данных (например, хеш-таблиц).
⚙️ Как использовать хеш-функции в Go?
Go предоставляет удобный пакет crypto с различными реализациями хеш-функций. Вот примеры:
package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("Пример пароля от библиотеки программиста")
hash := sha256.Sum256(data)
fmt.Printf("SHA-256: %x\n", hash)
}
package main
import (
"fmt"
"golang.org/x/crypto/bcrypt"
)
func main() {
password := "my_secure_password"
hash, _ := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
fmt.Printf("Хеш пароля: %s\n", hash)
}
🔍 Хеш-функции в Go
Надёжные и широко используемые.
Подходят для большинства задач, связанных с безопасностью.
Пакет: crypto/sha256.
Дают более длинные хеши, что увеличивает защиту.
Пакет: crypto/sha512.
Современная альтернатива SHA-2.
Более устойчива к некоторым видам атак.
Пакет: golang.org/x/crypto/sha3.
❌ НЕ рекомендуется использовать для безопасности.
Подходит для задач без требований криптографической стойкости (например, проверки файлов).
Пакет: crypto/md5.
Быстрая и надёжная альтернатива SHA-2.
Пакет: golang.org/x/crypto/blake2b.
Хеш-функции в Go — это мощный и простой инструмент, который подойдёт для множества задач. Главное — понимать их особенности и ограничения, чтобы использовать их безопасно и эффективно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1👾1
Работать со строками в Go — это искусство. Вместо создания новых копий, используйте срезы. Это не только экономит память, но и ускоряет обработку. Пример:
str := "Hello, Go!"
slice := str[0:5] // "Hello"
Вы не создаёте новую строку, а просто указываете, какой кусок использовать.
Go не использует классическое наследование, но предлагает мощный инструмент — встраивание структур. Вы можете включить одну структуру в другую, чтобы разделить ответственность и переиспользовать код:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "I am " + a.Name
}
type Dog struct {
Animal
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Speak()) // I am Buddy
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🥱4🌚3👾1
❓ А вы правильно обрабатываете ошибки?
Ошибки в Go — это не просто часть кода, а важный инструмент для создания надежных приложений. В статье автор делится мощными советами, которые помогут вывести обработку ошибок на новый уровень.
Почему это важно? Ошибки — это сигнал, что что-то пошло не так. Но чтобы этот сигнал был полезным, его нужно уметь правильно интерпретировать. Многие разработчики ограничиваются базовой проверкой, не задумываясь о типах ошибок и их природе. Результат? Ускользающие баги, трудности в поддержке и фрустрация.
Что в статье:
⚙️ Глубокое понимание типов ошибок: как отличить ожидаемую ошибку от критической и обрабатывать их по-разному.
⚙️ Лучшие практики Go: использование errors.Is и errors.As для четкой проверки и понимания контекста.
⚙️ Практические примеры: простые, но мощные способы улучшить читаемость и устойчивость кода.
📎 Если вдруг у вас не открывается источник, то воспользуйтесь зеркалом
Ошибки в Go — это не просто часть кода, а важный инструмент для создания надежных приложений. В статье автор делится мощными советами, которые помогут вывести обработку ошибок на новый уровень.
Почему это важно? Ошибки — это сигнал, что что-то пошло не так. Но чтобы этот сигнал был полезным, его нужно уметь правильно интерпретировать. Многие разработчики ограничиваются базовой проверкой, не задумываясь о типах ошибок и их природе. Результат? Ускользающие баги, трудности в поддержке и фрустрация.
Что в статье:
⚙️ Глубокое понимание типов ошибок: как отличить ожидаемую ошибку от критической и обрабатывать их по-разному.
⚙️ Лучшие практики Go: использование errors.Is и errors.As для четкой проверки и понимания контекста.
⚙️ Практические примеры: простые, но мощные способы улучшить читаемость и устойчивость кода.
📎 Если вдруг у вас не открывается источник, то воспользуйтесь зеркалом
👍8❤1👾1
🛠️ Новые функции для работы с коллекциями в Go 1.23
В версии Go 1.23 стандартная библиотека пополнилась пакетами slices и maps, которые предоставляют удобные функции для работы с коллекциями.
Основные возможности:
🎯 Функции slices.All(), slices.Backwards(), maps.All(), maps.Keys() и maps.Values() позволяют легко перебирать элементы слайсов и мап с использованием ключевого слова range.
🎯 Функция maps.Collect() упрощает создание новых мап из слайсов, сокращая код с нескольких строк до одной.
🎯 С помощью slices.Sorted() можно получить отсортированные срезы ключей или значений мапы, обеспечивая предсказуемый порядок элементов.
🎯 Функции slices.Clone() и maps.Clone() позволяют создавать копии слайсов и мап, а slices.Concat() облегчает объединение нескольких слайсов в один.
#новость
В версии Go 1.23 стандартная библиотека пополнилась пакетами slices и maps, которые предоставляют удобные функции для работы с коллекциями.
Основные возможности:
🎯 Функции slices.All(), slices.Backwards(), maps.All(), maps.Keys() и maps.Values() позволяют легко перебирать элементы слайсов и мап с использованием ключевого слова range.
🎯 Функция maps.Collect() упрощает создание новых мап из слайсов, сокращая код с нескольких строк до одной.
🎯 С помощью slices.Sorted() можно получить отсортированные срезы ключей или значений мапы, обеспечивая предсказуемый порядок элементов.
🎯 Функции slices.Clone() и maps.Clone() позволяют создавать копии слайсов и мап, а slices.Concat() облегчает объединение нескольких слайсов в один.
#новость
🔥39👍7🤔2
🆚⚡️ Python FastAPI vs Go: Кто быстрее?
Выбираете между Python FastAPI и Go (Golang) для разработки веб-приложений? Это видео разбирает их производительность и помогает определиться с выбором технологии. Вот ключевые моменты теста! 👇
Что тестировали?
1️⃣ Базовый тест производительности: простые запросы и ответы.
2️⃣ Работа с базой данных Postgres: проверка скорости взаимодействия.
3️⃣ Кэширование через Memcache: нагрузка в сложных сценариях.
🏁Результаты
Go
🔥 Отличная производительность при высоких нагрузках.
💪 Минимальные задержки при работе с базой данных и кэшированием.
✅ Подходит для приложений, где критичны скорость и масштабируемость.
FastAPI (Python)
⚡️ Удобство разработки и читабельность кода.
💻 Богатая экосистема Python-библиотек.
🚀 Хорошо справляется с умеренными нагрузками, но уступает Go в пиковых ситуациях.
Что выбрать?
Выбирайте Go, если нужна высокая производительность и низкие задержки. Это идеальный выбор для микросервисов и высоконагруженных систем.
FastAPI подойдёт, если вы цените скорость разработки и интеграцию с библиотеками Python. Отличный выбор для прототипов и приложений средней нагрузки.
Выбираете между Python FastAPI и Go (Golang) для разработки веб-приложений? Это видео разбирает их производительность и помогает определиться с выбором технологии. Вот ключевые моменты теста! 👇
Что тестировали?
🏁Результаты
Go
💪 Минимальные задержки при работе с базой данных и кэшированием.
✅ Подходит для приложений, где критичны скорость и масштабируемость.
FastAPI (Python)
💻 Богатая экосистема Python-библиотек.
🚀 Хорошо справляется с умеренными нагрузками, но уступает Go в пиковых ситуациях.
Что выбрать?
Выбирайте Go, если нужна высокая производительность и низкие задержки. Это идеальный выбор для микросервисов и высоконагруженных систем.
FastAPI подойдёт, если вы цените скорость разработки и интеграцию с библиотеками Python. Отличный выбор для прототипов и приложений средней нагрузки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🌚5🤔2
🛠️ Логирование в Go: всё, что нужно знать
Логирование — одна из важнейших частей разработки, которая помогает отслеживать поведение приложений, анализировать ошибки и оптимизировать производительность. В языке Go для этих целей существует стандартный пакет log, предоставляющий базовые инструменты для работы с логами.
В одной из недавних статей этот пакет рассматривается детально: начиная от стандартных возможностей и заканчивая кастомизацией логгеров для более сложных задач. Вот основные моменты:
📋 Методы логгирования: разбираются основные методы (Print, Printf, Panic, Fatal и другие), их отличия и подходящие случаи использования.
🎛️ Настройка логгера: рассматриваются инструменты для изменения формата сообщений, добавление префиксов, а также перенаправление логов, например, в файл.
🚀 Пользовательские логгеры: описывается создание собственных логгеров для более гибкой работы с потоками вывода и форматирования.
Логирование — одна из важнейших частей разработки, которая помогает отслеживать поведение приложений, анализировать ошибки и оптимизировать производительность. В языке Go для этих целей существует стандартный пакет log, предоставляющий базовые инструменты для работы с логами.
В одной из недавних статей этот пакет рассматривается детально: начиная от стандартных возможностей и заканчивая кастомизацией логгеров для более сложных задач. Вот основные моменты:
📋 Методы логгирования: разбираются основные методы (Print, Printf, Panic, Fatal и другие), их отличия и подходящие случаи использования.
🎛️ Настройка логгера: рассматриваются инструменты для изменения формата сообщений, добавление префиксов, а также перенаправление логов, например, в файл.
🚀 Пользовательские логгеры: описывается создание собственных логгеров для более гибкой работы с потоками вывода и форматирования.
👍9🤩3🥱3❤🔥1❤1