Библиотека программиста | программирование, кодинг, разработка
88.4K subscribers
3.14K photos
148 videos
88 files
6.36K links
Все самое полезное для программиста в одном канале.

Список наших каналов: https://tttttt.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/a32a0d94

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
💡 Стратегии ветвления на практике: что выбрать для своей команды?

📌 Git flow — стратегия ветвления, полезная для команд, у которых есть четкие процессы выпуска и необходимость поддерживать стабильность своих продакшн-окружений.

Однако зависимость от множества веток и правил добавляет много сложности к процессу. Это может быть непосильно для новых членов команды и может привести к конфликтам из-за несоблюдения принципов непрерывной интеграции.

📌 GitHub flow — легковесная стратегия ветвления, хорошо подходящая для команд, практикующих непрерывный деплой. Эта стратегия подчеркивает совместную работу, частые выпуски и упрощенный процесс разработки.

Учитывая ее простоту, GitHub flow лучше всего подходит для небольших команд и проектов. Однако по мере увеличения размера и сложности становится сложно управлять изменениями во всей кодовой базе.

📌 Trunk-based development — стратегия ветвления, при которой разработчики работают над кодом в одной ветке, называемой trunk. Она требует прямых пушей в trunk и совместной работы разработчиков для поддержания стабильной ветки trunk.

Поскольку изменения непрерывно интегрируются в trunk, существует более высокий риск внесения изменений, которые могут повлиять на стабильность всей системы.

📌 Space Git flow — стратегия ветвления от JetBrains, похожая на GitHub flow, но с бо́льшим акцентом на безопасность при внесении изменений в ветку main и возможностью масштабирования до крупных проектов и команд.

💬 Каждая стратегия имеет свои сильные и слабые стороны, и лучший выбор зависит от конкретных потребностей вашей команды, а также таких факторов, как размер команды, процесс разработки, частота деплоя и требования к качеству кода.

👉 Подробнее здесь и здесь

#советыдляразрабов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📙 Книга тайных знаний — тщательно подобранная коллекция ресурсов, руководств, шпаргалок, блогов, советов, однострочников, CLI-инструментов и многого другого для системных и сетевых администраторов, DevOps-специалистов, пентестеров и исследователей безопасности.

👉 GitHub
🎙🔥Серия языковых и платформенных выпусков подкаста Podlodka пополнилась интересной темой про разработку на Qt

Изначально ведущие планировали говорить о Qt исключительно в контексте кроссплатформенной десктопной разработки. Но в процессе осознали, что такое представление слишком ограничено, и возможности Qt гораздо шире.

Андрей Бочарников, desktop-разработчик и техлид в компании Mode, устроил насыщенный экскурс в мир Qt. Вы узнаете про:

Историю развития технологии в контексте вызовов индустрии тех времён
Основные компоненты Qt — объектную модель, виджеты, QML, стандартную библиотеку
Возможности работы с Qt не только на C++
Рынок Qt-разработки

⏯️ YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка | Сайт подкаста

#подкасты
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🛤 Ах, как хочется вернуться, ворваться в монолит! / Павел Лакосников, TechLead команды SLA/Antimonolith в Авито

🤔 Микросервисы — это все еще новый черный. Любой продукт станет лучше, если в нем есть блютус, блокчейн и микросервисы. Но как оно на самом деле? Ждет ли вас «град на холме»?

🎙В докладе на конференции Saint HighLoad++ Павел рассказывает о том, как команда Авито шла к микросервисам. Доклад представляет собой таймлайн-историю, где показаны разные этапы микросервисной архитектуры Авито, компромиссы и что в итоге получилось.

🤯 В любой архитектуре простое и очевидное решение может потянуть за собой хвост проблем в будущем. Например, добавление ретраев. Денис Исаев из Яндекс Go поделился опытом решения проблем с отказоустойчивостью из-за ретраев. История основана на реальных инцидентах в системе из 800 микросервисов.
🤯 Работа с конфликтами слияния (merge) и перебазирования (rebase) в Git может быть сложной и трудозатратной, особенно в больших проектах или при частых изменениях. Здесь на помощь приходит малоизвестная, но мощная функция Git — git rerere (reuse recorded resolution).

🛠 Этот инструмент позволяет Git запоминать, как вы разрешали конфликты, и автоматически применять эти решения в будущем, существенно упрощая процесс разрешения повторяющихся конфликтов.

📌 Существует несколько ситуаций, в которых данный функционал может пригодиться:

1️⃣ Один из примеров состоит в том, чтобы обеспечить в будущем простоту слияния некоторой долгоживущей ветки, не создавая при этом набор промежуточных коммитов слияния.

При использовании rerere вы можете время от времени выполнять слияния, разрешать конфликты, а затем откатывать слияния. Если делать это постоянно, то итоговое слияние должно пройти легко, так как rerere сможет разрешить все конфликты автоматически.

Такая же тактика может быть использована, если вы хотите сохранить ветку легко перебазируемой, то есть вы не хотите сталкиваться с одними и теми же конфликтами каждый раз при перебазировании.

2️⃣ Другая ситуация возникает, когда вы изредка сливаете несколько веток, относящихся к ещё разрабатываемым задачам, в одну тестовую ветку. Если тесты завершатся неудачей, вы можете откатить все слияния и повторить их, исключив из них ветку, которая поломала тесты, при этом не разрешая конфликты снова.

📌 Для включения функциональности rerere достаточно изменить настройки следующим образом:

$ git config --global rerere.enabled true


После этого Git начнет автоматически записывать и применять решения для конфликтов.

💡Помните, что такими долгоживущими ветками не стоит злоупотреблять. Хорошая ветка живёт день-два и уезжает в main (ну или в версию, если у вас одновременно живёт несколько веток).

👉 Подробнее

#советыдляразрабов
Please open Telegram to view this post
VIEW IN TELEGRAM
🎙️ Подкаст «Доктор Кот»: вредный трудоголизм — программирую, учусь и работаю 24/7, но этого все еще мало

Знакомо? Еще бы, но за трудоголизмом не всегда кроется благородное достигаторство — там может быть много негативных последствий.

Если вы, как и многие айтишники, не можете позволить себе нормально отдохнуть, этот выпуск для вас.

📺 Смотреть
🎧 Слушать

#подкасты
🏃 Самоучитель по Go для начинающих. Часть 6. Функции и аргументы. Области видимости. Рекурсия. Defer

В этом уроке рассмотрим функции, аргументы, области видимости, затронем тему указателей, узнаем про рекурсию и её применение в программировании, а также научимся использовать ключевое слово defer.

👉 Читать статью
👉 Часть 1
👉 Часть 2
👉 Часть 3
👉 Часть 4
👉 Часть 5
🤯 Про нашумевший тред парня, который нашел жену из 5239 девушек с помощью ChatGPT, слышно из каждого утюга. Поэтому интересна уже не сама история, а то, как люди на нее реагируют. А люди обычно разбираются, правда это или хайп, а также делают мемы.

🤦 Так вот, здесь айтишник с технической точки зрения оценил этот самый тред. Спойлер: либо парень гений, либо врёт.

Ну а мемы прикрепили к посту 😉

#назлобудня