Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⚒️ go-pretty — Go-инструмент для улучшения отображения таблиц, списков, индикаторов выполнения, текста и т. д. в CLI-приложениях. Главная фича — упор на кастомизацию.
👉 GitHub
👉 GitHub
🔐 Защита gRPC-сервисов с помощью JWT-аутентификации на Go
gRPC является популярным выбором для создания веб-API благодаря своей эффективности и независимости от языка. Однако защита gRPC-сервисов так же важна, как и защита любой другой распределённой системы.
gRPC предоставляет несколько механизмов для повышения безопасности. В гайде Matt Boyle разбирает пример реализации аутентификации в gRPC с упором на interceptors, metadata и JWT в качестве механизма аутентификации.
👉 Читать
gRPC является популярным выбором для создания веб-API благодаря своей эффективности и независимости от языка. Однако защита gRPC-сервисов так же важна, как и защита любой другой распределённой системы.
gRPC предоставляет несколько механизмов для повышения безопасности. В гайде Matt Boyle разбирает пример реализации аутентификации в gRPC с упором на interceptors, metadata и JWT в качестве механизма аутентификации.
👉 Читать
🛠️ Go Blueprint — инструмент для создания новых Go-проектов с определенной структурой
Это один из растущего числа инструментов (еще один GoForge) для запуска нового Go-проекта с предопределенной структурой файлов и некоторой генерацией кода.
Он позволяет вам запустить приложение на основе Chi, Gin, Fiber или других фреймворков, с поддержкой баз данных и дополнительных инструментов вроде HTMX и Tailwind CSS.
👉 GitHub & Документация
Это один из растущего числа инструментов (еще один GoForge) для запуска нового Go-проекта с предопределенной структурой файлов и некоторой генерацией кода.
Он позволяет вам запустить приложение на основе Chi, Gin, Fiber или других фреймворков, с поддержкой баз данных и дополнительных инструментов вроде HTMX и Tailwind CSS.
👉 GitHub & Документация
📹 Секреты внутреннего устройства аллокатора Go: видеогайд от Владимира Балуна
⏱️ Таймкоды:
00:00 Введение
01:49 Концепция аллокатора
06:09 Линейный аллокатор
11:22 Блочный аллокатор
16:21 Стековый аллокатор
20:18 Устройство malloc
25:01 Недостатки malloc
26:55 Устройство tcmalloc
28:28 Устройство аллокатора Go
32:55 Предсказуемая фрагментация памяти
40:33 Где аллоцируются объекты в Go
51:11 Почему аллокация на стеке работает быстрее, чем в куче
52:35 Расширение и уменьшение стека в Go
58:12 Зачем это все нужно знать (практические примеры)
01:03:37 Пулы объектов (sync.Pool)
01:06:57 Арены (memory arenas)
01:14:30 Аллокатор ОС
▶️ YouTube | Rutube | VK
⏱️ Таймкоды:
00:00 Введение
01:49 Концепция аллокатора
06:09 Линейный аллокатор
11:22 Блочный аллокатор
16:21 Стековый аллокатор
20:18 Устройство malloc
25:01 Недостатки malloc
26:55 Устройство tcmalloc
28:28 Устройство аллокатора Go
32:55 Предсказуемая фрагментация памяти
40:33 Где аллоцируются объекты в Go
51:11 Почему аллокация на стеке работает быстрее, чем в куче
52:35 Расширение и уменьшение стека в Go
58:12 Зачем это все нужно знать (практические примеры)
01:03:37 Пулы объектов (sync.Pool)
01:06:57 Арены (memory arenas)
01:14:30 Аллокатор ОС
▶️ YouTube | Rutube | VK
🔥 Разработка circuit breaker на Go: гайд для начинающих
В распределенных системах "breaking the circuit" означает остановку повторяющейся операции с высокой частотой отказов, такой как отправка запросов в другой сервис, когда этот сервис перегружен.
Circuit breaker уменьшает или блокирует дальнейшие запросы до тех пор, пока частота отказов снова не упадет ниже определенного уровня. Под катом — гайд по разработке библиотеки на Go с нуля.
👉 Читать
В распределенных системах "breaking the circuit" означает остановку повторяющейся операции с высокой частотой отказов, такой как отправка запросов в другой сервис, когда этот сервис перегружен.
Circuit breaker уменьшает или блокирует дальнейшие запросы до тех пор, пока частота отказов снова не упадет ниже определенного уровня. Под катом — гайд по разработке библиотеки на Go с нуля.
👉 Читать
🤯 Ситуация:
Вам поступает задача, вы на глаз оцениваете ее в две недели и получаете одобрение по срокам. Сначала все идет хорошо, пилите проект и ничто не предвещает беды.
Со временем задача усложняется, потому что данные приходят с задержками и вразнобой. Вы не делитесь с руководителем своими трудностями, потому что тогда это можно посчитать за некомпетентность.
А когда приходит время сдачи работы, выясняется, что большинство работы сделано неправильно.
💬 Как думаете, как стоило поступить исполнителю?
Вам поступает задача, вы на глаз оцениваете ее в две недели и получаете одобрение по срокам. Сначала все идет хорошо, пилите проект и ничто не предвещает беды.
Со временем задача усложняется, потому что данные приходят с задержками и вразнобой. Вы не делитесь с руководителем своими трудностями, потому что тогда это можно посчитать за некомпетентность.
А когда приходит время сдачи работы, выясняется, что большинство работы сделано неправильно.
💬 Как думаете, как стоило поступить исполнителю?
🛠️ GoToSocial 0.17.0 — сервер ActivityPub на базе Go
ActivityPub — это стандарт, лежащий в основе открытых федеративных соцсетей вроде Mastodon. Это не Mastodon, но он предлагает некоторую совместимость с его API, поэтому вы можете использовать с ним клиентские приложения Mastodon.
👉 GitHub
ActivityPub — это стандарт, лежащий в основе открытых федеративных соцсетей вроде Mastodon. Это не Mastodon, но он предлагает некоторую совместимость с его API, поэтому вы можете использовать с ним клиентские приложения Mastodon.
👉 GitHub
📨 Как работают очереди и брокеры сообщений
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
🔄 Переход на Go глазами PHP-разработчика: 5 подводных камней
Костя Козин (старший PHP-разработчик в Lamoda Tech) делится подводными камнями, которые могут возникнуть при переходе с одного языка на другой, и с которыми сталкивался он сам и его коллеги. Если знать о них заранее, то смена стека может пройти не так болезненно, а знакомство с Go станет более предсказуемым.
1️⃣ «В Go так принято»
2️⃣ Специфичность языка и маркетинг
3️⃣ Go не снизит количество багов
4️⃣ На старте вас может тошнить от собственного кода, и это нормально
5️⃣ Низкое качество кода сразу после перехода
👉 Читать статью полностью
Костя Козин (старший PHP-разработчик в Lamoda Tech) делится подводными камнями, которые могут возникнуть при переходе с одного языка на другой, и с которыми сталкивался он сам и его коллеги. Если знать о них заранее, то смена стека может пройти не так болезненно, а знакомство с Go станет более предсказуемым.
1️⃣ «В Go так принято»
2️⃣ Специфичность языка и маркетинг
3️⃣ Go не снизит количество багов
4️⃣ На старте вас может тошнить от собственного кода, и это нормально
5️⃣ Низкое качество кода сразу после перехода
👉 Читать статью полностью
🔥 Фундаментальное и практическое руководство по эффективному изучению и постепенному созданию блокчейна с нуля на Go + gRPC
Любите вы блокчейн или ненавидите, ваша точка зрения остается мнением до тех пор, пока вы не узнаете, как он работает.
И как только вы получите эти знания (например, с помощью этого руководства), ваша точка зрения, вероятно, отойдет от любви или ненависти и остановится где-то посередине.
Потому что блокчейны — это нечто большее, чем просто платформы для финансовых пирамид и розыгрышей, но они также далеки от того, чтобы быть панацеей.
👉 GitHub
Любите вы блокчейн или ненавидите, ваша точка зрения остается мнением до тех пор, пока вы не узнаете, как он работает.
И как только вы получите эти знания (например, с помощью этого руководства), ваша точка зрения, вероятно, отойдет от любви или ненависти и остановится где-то посередине.
Потому что блокчейны — это нечто большее, чем просто платформы для финансовых пирамид и розыгрышей, но они также далеки от того, чтобы быть панацеей.
👉 GitHub
Корутины: stackful 🆚 stackless
В статье корутины рассматриваются как общий концепт, без привязки к конкретному языку. Вы узнаете об основных различиях между stackless и stackful корутинами: чем они отличаются, какие у них плюсы/минусы и многое другое.
👉 Читать
В статье корутины рассматриваются как общий концепт, без привязки к конкретному языку. Вы узнаете об основных различиях между stackless и stackful корутинами: чем они отличаются, какие у них плюсы/минусы и многое другое.
👉 Читать
This media is not supported in your browser
VIEW IN TELEGRAM
🪄 Магия генератора Go-кода: краткое руководство по началу работы
Существует не так много руководств по генерации кода Go, что вдохновило автора на создание проекта, который генерирует функции-обёртки для методов заданного типа.
Этот конкретный пример может послужить хорошей отправной точкой для создания собственного генератора кода на Go.
👉 Читать
Существует не так много руководств по генерации кода Go, что вдохновило автора на создание проекта, который генерирует функции-обёртки для методов заданного типа.
Этот конкретный пример может послужить хорошей отправной точкой для создания собственного генератора кода на Go.
👉 Читать