💻 Команда дня: безопасная перезапись ветки
Команда
То есть команда перезаписывает только если HEAD на сервере не изменился.
Когда использовать
— После
— Когда работаете в команде и хотите сохранить чужие изменения.
— На pull request ветках — безопаснее, чем просто
🐸 Библиотека Go разработчика #буст
Команда
git push --force-with-lease
— это безопасная альтернатива git push --force
. Она позволяет переписать историю удалённой ветки, но делает это с дополнительной проверкой, чтобы не затереть чужие изменения.То есть команда перезаписывает только если HEAD на сервере не изменился.
Когда использовать
— После
git rebase
или git commit --amend
, когда история изменилась.— Когда работаете в команде и хотите сохранить чужие изменения.
— На pull request ветках — безопаснее, чем просто
--force
.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
🧑💻 Как собрать TUI на Go
Большинство CLI-инструментов ограничивается списком флагов и короткой справкой. Но вы можете построить полноценный пользовательский интерфейс прямо в терминале.
Для создания современного CLI-приложения на Go вам нужны три вещи:
• Bubble Tea — фреймворк для построения UI на терминале с архитектурой MVU.
• Lip Gloss — инструмент стилизации. Поддержка цвета, шрифтов, отступов и контейнеров.
• Cobra — для описания CLI-команд, флагов, подсказок.
➡️ Как это работает на практике? Смотрите видео
🐸 Библиотека Go разработчика #буст
Большинство CLI-инструментов ограничивается списком флагов и короткой справкой. Но вы можете построить полноценный пользовательский интерфейс прямо в терминале.
Для создания современного CLI-приложения на Go вам нужны три вещи:
• Bubble Tea — фреймворк для построения UI на терминале с архитектурой MVU.
• Lip Gloss — инструмент стилизации. Поддержка цвета, шрифтов, отступов и контейнеров.
• Cobra — для описания CLI-команд, флагов, подсказок.
Please open Telegram to view this post
VIEW IN TELEGRAM
🕖 Почему база данных тормозит ваше приложение и как это исправить
Когда приложение начинает «тормозить», несмотря на тщательно оптимизированный код и обновлённые библиотеки, причина часто кроется не в логике приложения, а в базе данных.
Запросы к БД могут занимать секунды, превращая миллисекундные операции в узкое место производительности.
Если не решить эту проблему, API будет медленным, пользователи — недовольными, а система — нестабильной при высокой нагрузке.
➡️ Узнать как решить проблемы с БД
🐸 Библиотека Go разработчика #буст
Когда приложение начинает «тормозить», несмотря на тщательно оптимизированный код и обновлённые библиотеки, причина часто кроется не в логике приложения, а в базе данных.
Запросы к БД могут занимать секунды, превращая миллисекундные операции в узкое место производительности.
Если не решить эту проблему, API будет медленным, пользователи — недовольными, а система — нестабильной при высокой нагрузке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 VPN vs Удалённый рабочий стол
С одной стороны — скорость. С другой — централизованный контроль.
А посередине — ты, страдающий при любом раскладе.
Работа через VPN это:
— Привычная среда, с любимыми тулзами и на своём железе. Всё быстро и удобно, пока туннель не обрывается из-за плохого Wi-Fi или очередного «тайм-аута».
— Позволяет делать локальные билды, открывать тяжёлые IDE, и вообще чувствовать себя настоящим специалистом.
— Если что-то пойдёт не так — сам себе DevOps и саппорт.
С удалённым рабочим столом вас ждёт:
— Работа через видеотрансляцию: вроде как «в офисе», но только наблюдаете за своей же мышкой.
— Все ресурсы сервера под контролем ИТ, зато ничего не упадёт, кроме вашего терпения.
💬 А как обстоят дела с безопасностью у вас на работе? Дают выбор или заставляют работать через что-то одно? Делитесь болью в комментариях 👇
🐸 Библиотека Go разработчика #междусобойчик
С одной стороны — скорость. С другой — централизованный контроль.
А посередине — ты, страдающий при любом раскладе.
Работа через VPN это:
— Привычная среда, с любимыми тулзами и на своём железе. Всё быстро и удобно, пока туннель не обрывается из-за плохого Wi-Fi или очередного «тайм-аута».
— Позволяет делать локальные билды, открывать тяжёлые IDE, и вообще чувствовать себя настоящим специалистом.
— Если что-то пойдёт не так — сам себе DevOps и саппорт.
С удалённым рабочим столом вас ждёт:
— Работа через видеотрансляцию: вроде как «в офисе», но только наблюдаете за своей же мышкой.
— Все ресурсы сервера под контролем ИТ, зато ничего не упадёт, кроме вашего терпения.
Please open Telegram to view this post
VIEW IN TELEGRAM
📰 Еженедельный дайджест
Отобрали для вас лучшее за неделю.
— Microsoft выпускает обновлённые сборки Go 1.24.3-1 и 1.23.9-1
Эти обновления включают важные исправления безопасности и доступны для загрузки.
— Предложение по добавлению GOOS=none
Обсуждается внедрение новой целевой платформы GOOS=none — для запуска Go-программ на «голом железе», без участия ОС.
— Новый выпуск подкаста о Go
В этом эпизоде обсуждаются подходы к конфигурации приложений на Go, тонкости работы с bare metal и создание собственных response writers.
— 7 архитектурных паттернов, которые должен знать каждый программист
— Почему база данных тормозит ваше приложение и как это исправить
🐸 Библиотека Go разработчика #свежак
Отобрали для вас лучшее за неделю.
— Microsoft выпускает обновлённые сборки Go 1.24.3-1 и 1.23.9-1
Эти обновления включают важные исправления безопасности и доступны для загрузки.
— Предложение по добавлению GOOS=none
Обсуждается внедрение новой целевой платформы GOOS=none — для запуска Go-программ на «голом железе», без участия ОС.
— Новый выпуск подкаста о Go
В этом эпизоде обсуждаются подходы к конфигурации приложений на Go, тонкости работы с bare metal и создание собственных response writers.
— 7 архитектурных паттернов, которые должен знать каждый программист
— Почему база данных тормозит ваше приложение и как это исправить
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Go | тесты, код, задания
Please open Telegram to view this post
VIEW IN TELEGRAM
Golang Developer — от 240 000, Офис/Гибрид (Москва)
Middle Golang Backend Engineer — до 437 000 ₽, Удаленно (Филиппины)
Golang Developer — от 3 000 €, Удаленно (Белград)
Senior Golang-разработчик — от 250 000 ₽, Удаленно (Москва)
Бустер — удалённо (не только Москва)
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Очерёдность SQL запросов
Подготовили для вас шпаргалку по запросам к БД. Нарисовали что за чем следует и как от этого меняются данные.
🐸 Библиотека Go разработчика #буст
Подготовили для вас шпаргалку по запросам к БД. Нарисовали что за чем следует и как от этого меняются данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
✅ Грин-флаги в вакансиях: 10 признаков хорошего работодателя
Пока одни сосредоточены на том, как произвести впечатление на работодателя, опытные соискатели внимательно читают вакансии и ищут признаки того, что перед ними достойная компания.
В статье подробно о том, как распознать хорошего работодателя ещё до собеседования, просто внимательно вчитавшись в текст вакансии.
📎 Читать статью
🐸 Библиотека Go разработчика
Пока одни сосредоточены на том, как произвести впечатление на работодателя, опытные соискатели внимательно читают вакансии и ищут признаки того, что перед ними достойная компания.
В статье подробно о том, как распознать хорошего работодателя ещё до собеседования, просто внимательно вчитавшись в текст вакансии.
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Как использовать новую директиву
До Go 1.24, чтобы «закрепить» зависимости на CLI-инструменты, разработчики использовали такой хак:
Теперь всё намного проще
1. Добавьте инструмент в
2. Это создаст запись:
Инструмент не будет включён в go build — он «за кадром», только как зависимость для разработки.
Важно:
• tool не устанавливает инструмент — он лишь фиксирует его как зависимость.
• Команда
• Отлично подходит для корпоративных и командных проектов, где важна единая версия
🐸 Библиотека Go разработчика #буст
tool
До Go 1.24, чтобы «закрепить» зависимости на CLI-инструменты, разработчики использовали такой хак:
// tools.go
//go:build tools
package tools
import (
_ "github.com/golang/mock/mockgen"
)
Теперь всё намного проще
1. Добавьте инструмент в
go.mod
:go get tool github.com/golang/mock/mockgen@v1.6.0
2. Это создаст запись:
tool github.com/golang/mock/mockgen v1.6.0
Инструмент не будет включён в go build — он «за кадром», только как зависимость для разработки.
Важно:
• tool не устанавливает инструмент — он лишь фиксирует его как зависимость.
• Команда
go mod tidy
не удаляет такие записи.• Отлично подходит для корпоративных и командных проектов, где важна единая версия
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 go-size-analyzer v1.9.0
Инструмент для анализа размера скомпилированных Go-бинарников, go-size-analyzer, получил обновление, включающее экспериментальную поддержку WebAssembly и улучшения в стабильности.
Теперь можно анализировать файлы WebAssembly, сгенерированные с помощью
➡️ Почитать о релизе
🐸 Библиотека Go разработчика #свежак
Инструмент для анализа размера скомпилированных Go-бинарников, go-size-analyzer, получил обновление, включающее экспериментальную поддержку WebAssembly и улучшения в стабильности.
Теперь можно анализировать файлы WebAssembly, сгенерированные с помощью
go gc
. На данный момент реализован только анализатор pclntab
; поддержка анализаторов symbol
и dwarf
пока отсутствует.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📋 Чек-лист по синтаксису Go
Для разработчика на Go важно не только написать работающий код, но и сделать его понятным, чистым и соответствующим идиомам языка.
Составили для вас чек-лист, который поможет ускорить разработку в разы за счёт правильного и чистого кода.
✅ Основы синтаксиса
• Используется правильный package — каждый файл начинается с корректного определения пакета
• Импорты сгруппированы и отсортированы (стандартная библиотека, внешние пакеты, внутренние)
• Константы и переменные объявлены с типами, где это необходимо (
• Используется короткое объявление переменных
✅ Функции и методы
• Функции имеют четкие и понятные имена (глаголы для действий)
• Используется явный возврат значений (не прячем
• Обработка ошибок — всегда проверяется
• Используются именованные возвращаемые значения для улучшения читаемости (по необходимости).
• Методы объявлены с указателем
✅ Циклы и условия
• Циклы
• Используется
• В условных выражениях нет лишних скобок — Go этого не требует.
✅ Структуры и интерфейсы
• Структуры и интерфейсы объявлены с понятными именами.
• Используются теги для JSON, если структура используется для сериализации (
• Методы интерфейса определены минимально и по назначению.
• Композиция структур вместо наследования, где это возможно.
✅ Работа с ошибками
• Ошибки возвращаются явно из функций (
• Используются кастомные типы ошибок или fmt.Errorf с %w для обёртки ошибок.
• Важные ошибки логируются или обрабатываются на уровне вызова.
✅ Чистота кода и стиль
• Форматирование соответствует
• Лишние комментарии и неиспользуемые переменные удалены.
• Функции не слишком длинные — каждая отвечает за одну задачу.
• Использование
• Нет глобальных переменных, если это можно избежать.
✅ Работа с пакетами
• Пакеты не слишком большие, разделены по функционалу.
• Используются правильные уровни видимости: экспортируемые (с большой буквы) и неэкспортируемые элементы.
• Пакеты имеют README с описанием назначения (по возможности).
✅ Оптимизация и производительность
• Используются срезы и карты эффективно (избегаем ненужных копирований).
• Избегается выделение памяти в горячих циклах.
• Используются каналы и горутины с правильным управлением (контекст, тайм-ауты).
✅ Документация
• Публичные функции, типы и пакеты имеют комментарии в формате GoDoc.
• Документы объясняют назначение и использование, а не только перефразируют имена функций.
🐸 Библиотека Go разработчика #буст
Для разработчика на Go важно не только написать работающий код, но и сделать его понятным, чистым и соответствующим идиомам языка.
Составили для вас чек-лист, который поможет ускорить разработку в разы за счёт правильного и чистого кода.
• Используется правильный package — каждый файл начинается с корректного определения пакета
• Импорты сгруппированы и отсортированы (стандартная библиотека, внешние пакеты, внутренние)
• Константы и переменные объявлены с типами, где это необходимо (
var
и const
)• Используется короткое объявление переменных
:=
в локальной области• Функции имеют четкие и понятные имена (глаголы для действий)
• Используется явный возврат значений (не прячем
error
)• Обработка ошибок — всегда проверяется
if err != nil
• Используются именованные возвращаемые значения для улучшения читаемости (по необходимости).
• Методы объявлены с указателем
*Type
для изменения состояния (если нужно).• Циклы
for
написаны лаконично и с понятной логикой (без лишних вложенностей).• Используется
switch
вместо цепочек if-else
там, где это уместно.• В условных выражениях нет лишних скобок — Go этого не требует.
• Структуры и интерфейсы объявлены с понятными именами.
• Используются теги для JSON, если структура используется для сериализации (
json:"fieldName"
).• Методы интерфейса определены минимально и по назначению.
• Композиция структур вместо наследования, где это возможно.
• Ошибки возвращаются явно из функций (
return err
).• Используются кастомные типы ошибок или fmt.Errorf с %w для обёртки ошибок.
• Важные ошибки логируются или обрабатываются на уровне вызова.
• Форматирование соответствует
gofmt
/ goimports
.• Лишние комментарии и неиспользуемые переменные удалены.
• Функции не слишком длинные — каждая отвечает за одну задачу.
• Использование
defer
для освобождения ресурсов и закрытия файлов/соединений.• Нет глобальных переменных, если это можно избежать.
• Пакеты не слишком большие, разделены по функционалу.
• Используются правильные уровни видимости: экспортируемые (с большой буквы) и неэкспортируемые элементы.
• Пакеты имеют README с описанием назначения (по возможности).
• Используются срезы и карты эффективно (избегаем ненужных копирований).
• Избегается выделение памяти в горячих циклах.
• Используются каналы и горутины с правильным управлением (контекст, тайм-ауты).
• Публичные функции, типы и пакеты имеют комментарии в формате GoDoc.
• Документы объясняют назначение и использование, а не только перефразируют имена функций.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑💻 Расслабление и концентрация на коде
Zen Mode — это специальный режим работы в GoLand, который минимизирует визуальные отвлекающие элементы и позволяет полностью сосредоточиться на написании кода.
В этом режиме скрываются все панели, вкладки и прочие элементы интерфейса, которые могут отвлекать внимание.
Как его включить
1. Вызовите Find Action —
2. Введите в поиске команду «Zen Mode».
3. Активируйте её — интерфейс перейдёт в минималистичный вид.
Как работать без вкладок
• Используйте Navigation Bar (включается через Alt+Home или по команде) — это компактная строка навигации по проекту и файлам.
• Воспользуйтесь поиском файлов (
• Используйте быстрые переходы, чтобы переключаться между последними файлами.
Важно освоить эффективные методы навигации, чтобы компенсировать отсутствие привычных элементов интерфейса.
🐸 Библиотека Go разработчика #буст
Zen Mode — это специальный режим работы в GoLand, который минимизирует визуальные отвлекающие элементы и позволяет полностью сосредоточиться на написании кода.
В этом режиме скрываются все панели, вкладки и прочие элементы интерфейса, которые могут отвлекать внимание.
Как его включить
1. Вызовите Find Action —
Ctrl+Shift+A
2. Введите в поиске команду «Zen Mode».
3. Активируйте её — интерфейс перейдёт в минималистичный вид.
Как работать без вкладок
• Используйте Navigation Bar (включается через Alt+Home или по команде) — это компактная строка навигации по проекту и файлам.
• Воспользуйтесь поиском файлов (
Ctrl+Shift+N
/ Cmd+Shift+O
) для быстрого открытия нужного файла.• Используйте быстрые переходы, чтобы переключаться между последними файлами.
Важно освоить эффективные методы навигации, чтобы компенсировать отсутствие привычных элементов интерфейса.
Please open Telegram to view this post
VIEW IN TELEGRAM