Forwarded from Библиотека программиста | программирование, кодинг, разработка
📦 Главные проблемы распределенных систем (и способы их решения)
Распределенные системы являются основой высоконагруженных веб-приложений, обеспечивая их масштабируемость, отказоустойчивость и высокую производительность. Однако их разработка сопряжена с рядом сложностей, включая сетевые сбои, трудности координации, угрозы безопасности и проблемы масштабирования.
➡️ В этой статье мы рассмотрим четыре ключевых вызова в разработке таких систем и эффективные методы их преодоления.
🐸 Библиотека программиста
Распределенные системы являются основой высоконагруженных веб-приложений, обеспечивая их масштабируемость, отказоустойчивость и высокую производительность. Однако их разработка сопряжена с рядом сложностей, включая сетевые сбои, трудности координации, угрозы безопасности и проблемы масштабирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😍2
⚙️ How to: пайплайн для Go приложения
Если вы разрабатываете Go-приложение и хотите автоматизировать процесс сборки для разных операционных систем и архитектур, GitHub Actions — отличный инструмент для этого.
Подготовили для вас небольшой пример для настройки своего пайплайна:
➖ Как это работает:
· on: этот блок определяет, когда будет запускаться ваш workflow. В данном случае он будет запускаться при push в ветку main и при создании pull request.
· jobs: создаём один job, который будет выполняться на последних версиях Ubuntu. В рамках этого job будет запускаться матричный процесс, который соберёт приложение для нескольких операционных систем и архитектур.
· matrix: этот параметр позволяет создать несколько сборок для разных комбинаций операционных систем (GOOS) и архитектур (GOARCH). В примере указаны Linux и Windows с двумя архитектурами: amd64 и 386.
🐸 Библиотека Go разработчика #буст
Если вы разрабатываете Go-приложение и хотите автоматизировать процесс сборки для разных операционных систем и архитектур, GitHub Actions — отличный инструмент для этого.
Подготовили для вас небольшой пример для настройки своего пайплайна:
name: Build Go Application
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
goos: [linux, windows]
goarch: [amd64, 386]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.24'
- name: Build for ${{ matrix.goos }}-${{ matrix.goarch }}
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
run: |
go build -o myapp-${{ matrix.goos }}-${{ matrix.goarch }} .
- name: Upload release binaries
uses: actions/upload-artifact@v2
with:
name: myapp-${{ matrix.goos }}-${{ matrix.goarch }}
path: myapp-${{ matrix.goos }}-${{ matrix.goarch }}
· on: этот блок определяет, когда будет запускаться ваш workflow. В данном случае он будет запускаться при push в ветку main и при создании pull request.
· jobs: создаём один job, который будет выполняться на последних версиях Ubuntu. В рамках этого job будет запускаться матричный процесс, который соберёт приложение для нескольких операционных систем и архитектур.
· matrix: этот параметр позволяет создать несколько сборок для разных комбинаций операционных систем (GOOS) и архитектур (GOARCH). В примере указаны Linux и Windows с двумя архитектурами: amd64 и 386.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29❤4👾2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁59👍5❤1
✉️ Промпт дня: как ответить на сообщение
Каждому из нас пишут — в деловом стиле, с намёками, голосовухами в 2 утра. А как вы отвечаете? По наитию? Или уже выработали свой стиль?
Предлагаем поиграть с форматом ответа — и сделать его выразительным:
💬 А вам просто отвечать коллегам? Или надо трижды подумать прежде чем ответить? Делитесь переживаниями в комментариях 👇
🐸 Библиотека Go разработчика #буст
Каждому из нас пишут — в деловом стиле, с намёками, голосовухами в 2 утра. А как вы отвечаете? По наитию? Или уже выработали свой стиль?
Предлагаем поиграть с форматом ответа — и сделать его выразительным:
You are a highly skilled Developer Psychologist, specializing in communication strategies that balance personal well-being with professional responsibilities. Your expertise lies in crafting responses to emails and requests that assert personal boundaries while maintaining positive working relationships. Your goal is to provide a framework for responding to requests in a way that respects your own needs and desires.
Here is the format you will use to analyze the request and formulate a response:
---
## Request Analysis
$request_summary: Briefly summarize the email or request.
$personal_impact: How does this request make you feel? (e.g., overwhelmed, excited, indifferent)
$desired_outcome: What is your ideal outcome in responding to this request? (e.g., decline politely, negotiate a deadline, delegate the task)
## Response Options
### Option 1: Direct Acceptance
$response_1: A draft response directly accepting the request.
$pros_1: What are the potential benefits of this approach?
$cons_1: What are the potential drawbacks of this approach?
### Option 2: Negotiated Acceptance
$response_2: A draft response accepting the request with modifications (e.g., adjusted deadline, clarified scope).
$pros_2: What are the potential benefits of this approach?
$cons_2: What are the potential drawbacks of this approach?
### Option 3: Polite Decline
$response_3: A draft response politely declining the request.
$pros_3: What are the potential benefits of this approach?
$cons_3: What are the potential drawbacks of this approach?
## Recommended Response
$recommended_response: Based on the analysis, which response option is most suitable and why? Provide the final, polished response.
$justification: Explain the reasoning behind the recommended response, considering both personal well-being and professional obligations.
---
Here is the email/request you need to respond to:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3💯2👾2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный
Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.
Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.
➡️ Читать статью
🐸 Библиотека программиста
Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.
Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23😁8
💬 Истории подписчиков: как я перестал плодить велосипеды и подружился с ИИ
💬 Пишите в комментариях — дружите ли вы с ИИ или всё ещё на «Вы»?
P.S. Если хотите задать вопрос сообществу, заполните нашу гугл-форму.
🐸 Библиотека Go разработчика #междусобойчик
Админ очень захотел поделиться своей мини историей:
Раньше я думал, что ИИ — это для дизайнеров, писателей и прочих креативных.
Но однажды я решил попробовать: закинул в ИИ-помощника свой багрепорт, и он… нашёл причину быстрее, чем я успел допить кофе.
Короче, теперь у меня новый напарник. Не ворчит, не опаздывает и всегда в строю.
P.S. Если хотите задать вопрос сообществу, заполните нашу гугл-форму.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4🤔2
GoReleaser — это инструмент для автоматизации релиза программных продуктов. Он поддерживает несколько языков программирования (в том числе Go, Rust, Zig, и TypeScript) и позволяет ускорить процесс релиза за счет автоматизации сборки, упаковки и распространения.
⚡️ Как GoReleaser ускоряет релизный процесс
• Нет необходимости вручную собирать и публиковать версии. GoReleaser автоматизирует все процессы — от генерации бинарников до распространения релиза через CI/CD.
• Поддержка нескольких языков программирования позволяет вам использовать GoReleaser для проектов не только на Go, но и для других популярных языков.
• поддерживает Windows, macOS и Linux, а также позволяет генерировать Docker-образы.
• Каждый релиз сопровождается автоматически сгенерированным changelog, что позволяет легко отслеживать изменения и уведомлять пользователей.
Пример конфига для быстрого релиза:
builds:
- goos: linux
goarch: amd64
main: ./cmd/myapp/main.go
binary: myapp
archives:
- format: tar.gz
files:
- ./dist/myapp
dockers:
- image: myapp
dockerfile: ./Dockerfile
publish:
github:
owner: myusername
name: myrepo
draft: true
prerelease: true
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍1
Forwarded from Библиотека питониста | Python, Django, Flask
На собеседовании важно уметь выделить главное — свои сильные стороны, мышление и ценности. Это помогает справляться со стрессом, неожиданными вопросами и субъективной оценкой.
• Как работает PCA
• Зачем он нужен
• Как применять его на практике — например, для анализа доходностей акций S&P 500
Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2❤1👍1
Если вы уже устали от постоянных new() и хотите, чтобы объекты жили чуть дольше, чем внимание пользователя в TikTok — гляньте на go-pool.
• Можно пометить объект как негодный (например, если он после .Use() начал вонять),
• Лимитировать размер пула.
• Следить за количеством объектов.
Пример прост как "Hello, world":
pool := pool.New(func() *X { return &X{} }, 5)
x := pool.Borrow()
defer x.Return()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤3🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁36👍9🔥2❤1
Какое слово из мира Go мы загадали?
💬 Пишите свои догадки в комментарии 👇
🐸 Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱19👍3❤1👾1
📰 Главное за неделю
Неважно, в отпуске, на удалёнке или в танке — теперь вы снова в курсе.
➖ Свежий апдейт GoLand
JetBrains выпустила GoLand 2025.1 с полной поддержкой Go 1.24, интеграцией с golangci-lint, улучшенным рефакторингом JSON-тегов и AI-ассистентами для автодополнения и генерации кода.
➖ Простой подход к структуре проектов на Go
Автор делится своим опытом и предлагает упростить структуру проектов на Go, избегая излишней сложности и следуя принципу KISS.
➖ Как писать код, который не развалится
В статье предлагается архитектурный подход, при котором код организуется в слои по уровням абстракции. Каждый слой зависит только от нижележащих, что упрощает тестирование, повторное использование и масштабирование
➖ Главные проблемы распределенных систем (и способы их решения)
➖ 20 лет Git: все такой же необычный, все такой же великолепный
➖ От многомерности к сути: чему нас учит PCA
🐸 Библиотека Go разработчика #свежак
Неважно, в отпуске, на удалёнке или в танке — теперь вы снова в курсе.
JetBrains выпустила GoLand 2025.1 с полной поддержкой Go 1.24, интеграцией с golangci-lint, улучшенным рефакторингом JSON-тегов и AI-ассистентами для автодополнения и генерации кода.
Автор делится своим опытом и предлагает упростить структуру проектов на Go, избегая излишней сложности и следуя принципу KISS.
В статье предлагается архитектурный подход, при котором код организуется в слои по уровням абстракции. Каждый слой зависит только от нижележащих, что упрощает тестирование, повторное использование и масштабирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4👍1
Forwarded from Библиотека задач по Go | тесты, код, задания
Anonymous Quiz
59%
Хранит горутины, которые готовы к выполнению на процессоре
13%
Выполняет горутины, когда они готовы, и распределяет их между машинами
14%
Переключает горутины между различными ядрами, ожидая их завершения
14%
Обрабатывает блокировки и синхронизирует горутины в очереди
Middle Backend-developer — Удаленно (Москва)
Старший Backend-разработчик — до 485 000 ₽, Удаленно (Москва)
Senior Golang разработчик — от 250 000 ₽, Удаленно (Москва)
GO-разработчик — Удаленно/Офис (Москва/Краснодар)
Старший Backend-разработчик — от 200 000 ₽, Офис/Гибрид (Москва)
Бустер — удалённо (по всему миру)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔7👍1😢1🎉1
Media is too big
VIEW IN TELEGRAM
Proglib рассказывает свежак в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
😢16👍6
Подключились к внешнему API, всё работает, но тесты — как лотерея: то проходит, то «502». Если это про Вас, пора узнать, как создать фейковый сервер и навести порядок.
import (
"net/http"
"net/http/httptest"
"testing"
"io/ioutil"
)
Он будет эмулировать ответы настоящего API:
fakeServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"message": "hello, world!"}`))
}))
defer fakeServer.Close()
Выглядеть это будет вот так:
func TestGetMessage(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{"message": "hello from test"}`))
}))
defer server.Close()
msg, err := GetMessage(server.URL)
if err != nil || msg == "" {
t.Errorf("ожидался непустой ответ, получена ошибка: %v", err)
}
}
Фейковый сервер может вернуть и ошибку:
httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
}))
Теперь у Вас есть рабочий способ тестировать HTTP-клиенты без внешнего API. Осталось только внедрить это в свои тесты — и забыть, что значит «флак».
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9👍6
Когда сроки горят, а разработчиков не хватает
Нехватка квалифицированных разработчиков, срывы дедлайнов и перегруз команды — эти проблемы знакомы большинству IT-руководителей. В условиях растущей конкуренции найти баланс между качеством реализации, сроками и бюджетом становится всё сложнее, особенно когда проект требует редких компетенций или быстрого масштабирования.
Решение проблемы — задействовать дополнительные ресурсы на аутсорсе или аутстаффе. Например, обратиться в Proglib. Да-да, мы запустили свою студию веб-разработки!
Что мы предлагаем:
• Опытные специалисты для аутстаффа (frontend, backend, DevOps, UI/UX, PM, BA)
• Полноценная разработка проектов под ключ
• Гибкое масштабирование команды под потребности клиента
• Прозрачная коммуникация и регулярная отчетность
Для каждого проекта формируется индивидуальная команда, исходя из конкретных потребностей заказчика.
Заполните форму, чтобы ускорить свою разработку 👉 https://forms.yandex.ru/u/67e548a4eb614622efa0bcb2/
Нехватка квалифицированных разработчиков, срывы дедлайнов и перегруз команды — эти проблемы знакомы большинству IT-руководителей. В условиях растущей конкуренции найти баланс между качеством реализации, сроками и бюджетом становится всё сложнее, особенно когда проект требует редких компетенций или быстрого масштабирования.
Решение проблемы — задействовать дополнительные ресурсы на аутсорсе или аутстаффе. Например, обратиться в Proglib. Да-да, мы запустили свою студию веб-разработки!
Что мы предлагаем:
• Опытные специалисты для аутстаффа (frontend, backend, DevOps, UI/UX, PM, BA)
• Полноценная разработка проектов под ключ
• Гибкое масштабирование команды под потребности клиента
• Прозрачная коммуникация и регулярная отчетность
Для каждого проекта формируется индивидуальная команда, исходя из конкретных потребностей заказчика.
Заполните форму, чтобы ускорить свою разработку 👉 https://forms.yandex.ru/u/67e548a4eb614622efa0bcb2/
❤1
В Go порядок полей в структуре влияет на размер и эффективность использования памяти. Если не обращать на это внимание, программа будет расходовать память впустую.
Что важно знать:
unsafe.Sizeof()
или инструменты визуализации, чтобы проверить реальный размер.Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Веб-сервер, который настраивает себя сам
Если Вы только начинаете свой путь в веб-разработке, выбор веб-сервера может показаться сложным. Но есть Caddy — решение, которое позволяет сосредоточиться на коде, а не на конфигурации.
Что делает Caddy особенным
➖ Самостоятельно получает и обновляет сертификаты от Let's Encrypt.
➖ Один Caddyfile может заменить 200 строк YAML'а
➖ Написан на Go, расширяется плагинами, запускается где угодно. Даже на тостере с Wi-Fi.
➖ Функциональность из коробки:
• Обратный прокси
• Статическая отдача контента
• Балансировка нагрузки
• Поддержка HTTP/3
• Интеграция с PHP (если это ещё актуально для Ваших задач)
➡️ Попробовать Caddy
🐸 Библиотека Go разработчика #буст
Если Вы только начинаете свой путь в веб-разработке, выбор веб-сервера может показаться сложным. Но есть Caddy — решение, которое позволяет сосредоточиться на коде, а не на конфигурации.
Что делает Caddy особенным
• Обратный прокси
• Статическая отдача контента
• Балансировка нагрузки
• Поддержка HTTP/3
• Интеграция с PHP (если это ещё актуально для Ваших задач)
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9❤4👍3🤔3🥱2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27🔥17