Как компании доставляют код в продакшн?
Ниже описан типичный процесс доставки программного обеспечения. В разных компаниях используются разнообразные инструменты и среды, поэтому это один из вариантов рабочего процесса, который демонстрирует некоторые общие практики. Подробности могут отличаться в зависимости от организации. Учитывая это, общие шаги выглядят следующим образом:
Шаг 1: Владелец продукта создает требования и пользовательские истории.
Шаг 2: Команда разработчиков определяет приоритеты для историй и организует спринты.
Шаг 3: Разработчики коммитят код в систему контроля версий.
Шаг 4: Сервер автоматизации собирает код и запускает тесты. Проводятся проверки покрытия кода и качества.
Шаг 5: Если сборка успешна, артефакты сохраняются в репозитории артефактов. Сборка затем разворачивается в среде разработчиков.
Шаг 6: Функции тестируются независимо в нескольких изолированных средах.
Шаг 7: Команда QA тестирует функции в средах для контроля качества. Проводятся различные виды тестирования.
Шаг 8: После проверки сборка разворачивается в среде для тестирования пользовательского принятия для окончательной валидации.
Шаг 9: Кандидаты на релиз, успешно прошедшие тестирование, могут быть развернуты в продакшене согласно графику выпуска. Для управления рисками используются фиче-флаги и методы постепенного развертывания.
Шаг 10: Команда по надежности сайта (SRE) мониторит продакшен и сообщает о проблемах. Команды приоритизируют и исправляют проблемы в соответствии с определенными политиками.
👉 @itmozg
Ниже описан типичный процесс доставки программного обеспечения. В разных компаниях используются разнообразные инструменты и среды, поэтому это один из вариантов рабочего процесса, который демонстрирует некоторые общие практики. Подробности могут отличаться в зависимости от организации. Учитывая это, общие шаги выглядят следующим образом:
Шаг 1: Владелец продукта создает требования и пользовательские истории.
Шаг 2: Команда разработчиков определяет приоритеты для историй и организует спринты.
Шаг 3: Разработчики коммитят код в систему контроля версий.
Шаг 4: Сервер автоматизации собирает код и запускает тесты. Проводятся проверки покрытия кода и качества.
Шаг 5: Если сборка успешна, артефакты сохраняются в репозитории артефактов. Сборка затем разворачивается в среде разработчиков.
Шаг 6: Функции тестируются независимо в нескольких изолированных средах.
Шаг 7: Команда QA тестирует функции в средах для контроля качества. Проводятся различные виды тестирования.
Шаг 8: После проверки сборка разворачивается в среде для тестирования пользовательского принятия для окончательной валидации.
Шаг 9: Кандидаты на релиз, успешно прошедшие тестирование, могут быть развернуты в продакшене согласно графику выпуска. Для управления рисками используются фиче-флаги и методы постепенного развертывания.
Шаг 10: Команда по надежности сайта (SRE) мониторит продакшен и сообщает о проблемах. Команды приоритизируют и исправляют проблемы в соответствии с определенными политиками.
👉 @itmozg
👍3
Празднуем день рождения на древнем компьютере с BASIC
Этим летом я занимался созданием нового приложения для машины, продажи которой закончились в 1980 году, и которая не была рассчитана на поддержку графики, сети и даже букв в нижнем регистре. Её продавала компания, обанкротившаяся десяток лет назад. Приложение было специально разработано под единственного пользователя — моего отца, которому в позапрошлую пятницу исполнилось семьдесят лет. Представляю вашему вниманию MTS-70.
https://habr.com/ru/companies/ruvds/articles/838592/
👉 @itmozg
Этим летом я занимался созданием нового приложения для машины, продажи которой закончились в 1980 году, и которая не была рассчитана на поддержку графики, сети и даже букв в нижнем регистре. Её продавала компания, обанкротившаяся десяток лет назад. Приложение было специально разработано под единственного пользователя — моего отца, которому в позапрошлую пятницу исполнилось семьдесят лет. Представляю вашему вниманию MTS-70.
https://habr.com/ru/companies/ruvds/articles/838592/
👉 @itmozg
👍3
LeetCode был сложным, пока я не выучил эти 15 паттернов
1. Префиксная сумма
2. Два указателя
3. Скользящее окно
4. Быстрый и медленный указатели
5. LinkedList In-place Reversal
6. Монотонный стек
7. Топ 'K' элементов
8. Перекрывающиеся интервалы
9. Модифицированный бинарный поиск
10. Обход бинарного дерева
11. Поиск в глубину (DFS)
12. Поиск в ширину (BFS)
13. Обход матрицы
14. Обратный поиск (Backtracking)
15. Шаблоны динамического программирования
Я написал подробную статью об этих паттернах и предоставил ссылки на задачи LeetCode с примерами.
https://blog.algomaster.io/p/15-leetcode-patterns
👉 @itmozg
1. Префиксная сумма
2. Два указателя
3. Скользящее окно
4. Быстрый и медленный указатели
5. LinkedList In-place Reversal
6. Монотонный стек
7. Топ 'K' элементов
8. Перекрывающиеся интервалы
9. Модифицированный бинарный поиск
10. Обход бинарного дерева
11. Поиск в глубину (DFS)
12. Поиск в ширину (BFS)
13. Обход матрицы
14. Обратный поиск (Backtracking)
15. Шаблоны динамического программирования
Я написал подробную статью об этих паттернах и предоставил ссылки на задачи LeetCode с примерами.
https://blog.algomaster.io/p/15-leetcode-patterns
👉 @itmozg
👍12⚡1
Git Merge vs. Rebase vs. Squash Commit
В чем разница?
Когда мы объединяем изменения из одной ветки Git в другую, мы можем использовать «git merge» или «git rebase». Диаграмма ниже показывает, как работают эти две команды.
Git Merge
Эта команда создает новый коммит G’ в основной ветке. G’ связывает историю обеих веток: основной и функциональной.
Git merge — это недеструктивная операция. Она добавляет новый коммит в основную ветку, не изменяя существующие коммиты в обеих ветках.
Git Rebase
Git rebase переносит историю коммитов функциональной ветки на конец основной ветки. Он создает новые коммиты E’, F’ и G’ для каждого коммита в функциональной ветке.
Преимущество rebase в том, что он создает линейную историю коммитов.
Однако будьте осторожны: следуйте золотому правилу Git Rebase — никогда не используйте его на общих ветках, чтобы избежать путаницы среди ваших коллег.
Git Squash Commit
Сквошинг сжимает несколько коммитов в один, упрощая историю коммитов.
👉 @itmozg
В чем разница?
Когда мы объединяем изменения из одной ветки Git в другую, мы можем использовать «git merge» или «git rebase». Диаграмма ниже показывает, как работают эти две команды.
Git Merge
Эта команда создает новый коммит G’ в основной ветке. G’ связывает историю обеих веток: основной и функциональной.
Git merge — это недеструктивная операция. Она добавляет новый коммит в основную ветку, не изменяя существующие коммиты в обеих ветках.
Git Rebase
Git rebase переносит историю коммитов функциональной ветки на конец основной ветки. Он создает новые коммиты E’, F’ и G’ для каждого коммита в функциональной ветке.
Преимущество rebase в том, что он создает линейную историю коммитов.
Однако будьте осторожны: следуйте золотому правилу Git Rebase — никогда не используйте его на общих ветках, чтобы избежать путаницы среди ваших коллег.
Git Squash Commit
Сквошинг сжимает несколько коммитов в один, упрощая историю коммитов.
👉 @itmozg
👍3⚡1
Unix на работе. Часть первая: Качая железо
Открываю серию статей про реальное повседневное использование Linux и *BSD-систем в качестве основной ОС для работы. И начнем мы с общих принципов и выбора подходящего оборудования.
https://habr.com/ru/articles/841606/
👉 @itmozg
Открываю серию статей про реальное повседневное использование Linux и *BSD-систем в качестве основной ОС для работы. И начнем мы с общих принципов и выбора подходящего оборудования.
https://habr.com/ru/articles/841606/
👉 @itmozg
👍4⚡1
Unix на работе. Часть вторая, программная
В этой части раскрываю тему программного обеспечения «которого нет» под ОС, которые «не нужны». Что есть, чего нет, где брать и что со всем этим делать.
https://habr.com/ru/articles/843280/
👉 @itmozg
В этой части раскрываю тему программного обеспечения «которого нет» под ОС, которые «не нужны». Что есть, чего нет, где брать и что со всем этим делать.
https://habr.com/ru/articles/843280/
👉 @itmozg
👍4⚡1
Как жить и работать при нарушениях внимания?
Щёлк — я обнаруживаю себя за просмотром ролика на YouTube, в котором музыкант рассказывает, как ухаживать за флейтой из сушёной тыквы. Как я оказался здесь?! Зачем? На мгновение я пугаюсь того, что не могу вспомнить, каким образом попал на этот ролик. Я ведь не планировал узнавать про эти флейты и вообще сел работать. Холодок пробегает по коже.
Пытаюсь размотать предысторию, пройти путь своих блужданий обратно. Листаю историю браузера и вижу, что это уже третий по счёту ролик, а до этого я был на вкладке с «Авито». И тут понимаю, как это произошло. Я сел работать и на мгновение решил заглянуть на сайт по продаже вещей, посмотреть, есть ли сообщения, и там залип на странице с предложенными товарами, среди которых была эта самая флейта. Мне стало интересно, я полез сначала на Википедию, потом на YouTube. Ну нужно же послушать, как она звучит… Вот небольшой пример того, как живётся людям с неустойчивым вниманием.
https://habr.com/ru/companies/ruvds/articles/845556/
👉 @itmozg
Щёлк — я обнаруживаю себя за просмотром ролика на YouTube, в котором музыкант рассказывает, как ухаживать за флейтой из сушёной тыквы. Как я оказался здесь?! Зачем? На мгновение я пугаюсь того, что не могу вспомнить, каким образом попал на этот ролик. Я ведь не планировал узнавать про эти флейты и вообще сел работать. Холодок пробегает по коже.
Пытаюсь размотать предысторию, пройти путь своих блужданий обратно. Листаю историю браузера и вижу, что это уже третий по счёту ролик, а до этого я был на вкладке с «Авито». И тут понимаю, как это произошло. Я сел работать и на мгновение решил заглянуть на сайт по продаже вещей, посмотреть, есть ли сообщения, и там залип на странице с предложенными товарами, среди которых была эта самая флейта. Мне стало интересно, я полез сначала на Википедию, потом на YouTube. Ну нужно же послушать, как она звучит… Вот небольшой пример того, как живётся людям с неустойчивым вниманием.
https://habr.com/ru/companies/ruvds/articles/845556/
👉 @itmozg
👍4
Рисуем рабочий процессор в Paint и запускаем на нём ОС | Ритуал по призыву демона Тьюринга
Однажды в тёмном-тёмном городе, в тёмном-тёмном подвале, очередной обезумевший контентмейкер за паяльной станцией подключал программатор к умному термосу.
Термос этот он нашёл на улице и хотел перепрошить его маленький и беззащитный Cortex-M0+.
Человек бредил. Раз в пару минут его глаза загорались и он издавал душераздирающий крик: «Если что-то существует, то на этом можно запустить Doom!».
https://habr.com/ru/users/CodeDroidX/publications/articles/
👉 @itmozg
Однажды в тёмном-тёмном городе, в тёмном-тёмном подвале, очередной обезумевший контентмейкер за паяльной станцией подключал программатор к умному термосу.
Термос этот он нашёл на улице и хотел перепрошить его маленький и беззащитный Cortex-M0+.
Человек бредил. Раз в пару минут его глаза загорались и он издавал душераздирающий крик: «Если что-то существует, то на этом можно запустить Doom!».
https://habr.com/ru/users/CodeDroidX/publications/articles/
👉 @itmozg
👍4
11 октября 2024 года в возрасте 78 лет умер Уорд Кристенсен, сооснователь первой онлайн-системы BBS и создатель XMODEM.
Уорд Кристенсен создал протокол передачи файлов для отправки бинарных компьютерных файлов через модемные соединения, который был просто назван MODEM.
Позднейшие улучшения программы привели к смене названия на знакомый всем XMODEM.
Успех этого проекта вдохновил на дальнейшие эксперименты. Кристенсен и Сюсс увлеклись идеей создания компьютеризированного автоответчика и центра сообщений, который позволял бы пользователям звонить со своими тогда новыми модемами и оставлять объявления о предстоящих встречах.
https://mastodon.laurenweinstein.org/@lauren/113300835222615766
👉 @itmozg
Уорд Кристенсен создал протокол передачи файлов для отправки бинарных компьютерных файлов через модемные соединения, который был просто назван MODEM.
Позднейшие улучшения программы привели к смене названия на знакомый всем XMODEM.
Успех этого проекта вдохновил на дальнейшие эксперименты. Кристенсен и Сюсс увлеклись идеей создания компьютеризированного автоответчика и центра сообщений, который позволял бы пользователям звонить со своими тогда новыми модемами и оставлять объявления о предстоящих встречах.
https://mastodon.laurenweinstein.org/@lauren/113300835222615766
👉 @itmozg
😢5🫡2
Удаленка под угрозой: зарубежные компании возвращают людей в офисы. Почему это неизбежно затронет Россию?
Иногда кажется, что удаленка была с нами всегда. Хотя массово айтишники начали работать из дома лишь с 2020 года из-за пандемии COVID-19. Тогда говорили, что это временная мера и уже через месяц все вернутся в офис.
Прошло 4 года, пик удаленки позади – работодатели начинают возвращать людей в офисы. Последние, конечно, сопротивляются. Рассказываем, чем мировому бигтеху не угодила удаленка, зачем российские компании стараются заманить людей обратно в офисы и почему удаленка оказалось под угрозой исчезновения.
https://habr.com/ru/articles/849968/
👉 @itmozg
Иногда кажется, что удаленка была с нами всегда. Хотя массово айтишники начали работать из дома лишь с 2020 года из-за пандемии COVID-19. Тогда говорили, что это временная мера и уже через месяц все вернутся в офис.
Прошло 4 года, пик удаленки позади – работодатели начинают возвращать людей в офисы. Последние, конечно, сопротивляются. Рассказываем, чем мировому бигтеху не угодила удаленка, зачем российские компании стараются заманить людей обратно в офисы и почему удаленка оказалось под угрозой исчезновения.
https://habr.com/ru/articles/849968/
👉 @itmozg
👍3😱1
Пишем Wake-on-LAN сервис на ESP8266 при помощи ChatGPT
Мне нужен простой девайс с веб-страницей, заходя на которую, я смогу будить спящие компьютеры при помощи Wake-on-LAN магического пакета.
Готовые варианты для этой задачи уже есть, но все они имеют недостатки, которые были исправлены в моей версии этого приложения.
О том, как я писал прошивку и веб-страницу через ChatGPT, поведаю далее в статье.
▍ Постановка задачи
Я вижу законченное устройство в коробочке либо в виде USB-флешки.
Обязательно должна быть нормальная система настройки Wi-Fi соединения с лёгкой установкой и сбросом настроек.
После захода на веб-страницу должен быть список девайсов, легко редактируемый там же на странице (может, асинхронно), отображающий информацию о девайсах и, собственно, имеющий кнопку отправки пакета.
https://habr.com/ru/companies/ruvds/articles/852876/
👉 @itmozg
Мне нужен простой девайс с веб-страницей, заходя на которую, я смогу будить спящие компьютеры при помощи Wake-on-LAN магического пакета.
Готовые варианты для этой задачи уже есть, но все они имеют недостатки, которые были исправлены в моей версии этого приложения.
О том, как я писал прошивку и веб-страницу через ChatGPT, поведаю далее в статье.
▍ Постановка задачи
Я вижу законченное устройство в коробочке либо в виде USB-флешки.
Обязательно должна быть нормальная система настройки Wi-Fi соединения с лёгкой установкой и сбросом настроек.
После захода на веб-страницу должен быть список девайсов, легко редактируемый там же на странице (может, асинхронно), отображающий информацию о девайсах и, собственно, имеющий кнопку отправки пакета.
https://habr.com/ru/companies/ruvds/articles/852876/
👉 @itmozg
👍3
Популярные методы аутентификации
🔵 Базовая аутентификация:
Предполагает отправку имени пользователя и пароля с каждым запросом, но может быть менее безопасной без шифрования.
Подходит для простых приложений, где безопасность и шифрование не являются приоритетом, или при использовании защищенных соединений.
🔵 Аутентификация с помощью токенов:
Использует сгенерированные токены, такие как JSON Web Tokens (JWT), которые обмениваются между клиентом и сервером, обеспечивая повышенную безопасность без необходимости отправки учетных данных с каждым запросом.
Идеально подходит для более безопасных и масштабируемых систем.
🔵 Аутентификация OAuth:
Позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без раскрытия учетных данных, выдавая токены доступа после аутентификации пользователя.
Подходит для ситуаций, требующих контролируемого доступа к ресурсам пользователя сторонними приложениями или сервисами.
🔵 Аутентификация с использованием API-ключей:
Назначает уникальные ключи пользователям или приложениям, которые отправляются в заголовках или параметрах; несмотря на простоту, может не обладать всеми преимуществами безопасности, как методы на основе токенов или OAuth.
Удобна для простого контроля доступа в менее чувствительных средах или для предоставления доступа к определённым функциям без необходимости предоставления разрешений, привязанных к конкретному пользователю.
👉 @itmozg
Предполагает отправку имени пользователя и пароля с каждым запросом, но может быть менее безопасной без шифрования.
Подходит для простых приложений, где безопасность и шифрование не являются приоритетом, или при использовании защищенных соединений.
Использует сгенерированные токены, такие как JSON Web Tokens (JWT), которые обмениваются между клиентом и сервером, обеспечивая повышенную безопасность без необходимости отправки учетных данных с каждым запросом.
Идеально подходит для более безопасных и масштабируемых систем.
Позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без раскрытия учетных данных, выдавая токены доступа после аутентификации пользователя.
Подходит для ситуаций, требующих контролируемого доступа к ресурсам пользователя сторонними приложениями или сервисами.
Назначает уникальные ключи пользователям или приложениям, которые отправляются в заголовках или параметрах; несмотря на простоту, может не обладать всеми преимуществами безопасности, как методы на основе токенов или OAuth.
Удобна для простого контроля доступа в менее чувствительных средах или для предоставления доступа к определённым функциям без необходимости предоставления разрешений, привязанных к конкретному пользователю.
👉 @itmozg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Пишем свой собственный текстовый редактор
Это инструкция, которая покажет вам, как создать текстовый редактор на языке C.
Текстовый редактор представляет собой kilo от antirez, с некоторыми изменениями. Это около 1000 строк языка C в одном файле без зависимостей, и в нем реализованы все основные функции, которые вы ожидаете от минимального редактора, а также подсветка синтаксиса и функция поиска.
В этой инструкции вы пройдете путь создания редактора в 184 шага. На каждом шаге вы будете добавлять, изменять или удалять несколько строк кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями, скомпилировав и запустив программу сразу после этого.
https://viewsourcecode.org/snaptoken/kilo/index.html
#cpp
👉 @itmozg
Это инструкция, которая покажет вам, как создать текстовый редактор на языке C.
Текстовый редактор представляет собой kilo от antirez, с некоторыми изменениями. Это около 1000 строк языка C в одном файле без зависимостей, и в нем реализованы все основные функции, которые вы ожидаете от минимального редактора, а также подсветка синтаксиса и функция поиска.
В этой инструкции вы пройдете путь создания редактора в 184 шага. На каждом шаге вы будете добавлять, изменять или удалять несколько строк кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями, скомпилировав и запустив программу сразу после этого.
https://viewsourcecode.org/snaptoken/kilo/index.html
#cpp
👉 @itmozg
👍7
Программирование — это вообще не просто!⠀
Идея статьи появилась, когда я начал повсюду замечать якобы подтверждения мифа, что «программирование — это просто».
В новостях «восьмилетняя девочка, которая второй раз в жизни занимается программированием, наклепала чат-бота за 45 минут» (ага, да!).
Курсы предлагают мне за 10 месяцев с нуля стать миддл+ (ага, да!).
Но я-то знаю, как оно на самом деле. Мы, программисты, обычно решаем проблемы и двигаемся дальше, но я решил запротоколировать всё как есть, и в течение пары месяцев скрупулёзно записывал всю ту хрень, что происходила со мной и моими коллегами, чтобы показать программирование без прикрас. Поехали!
https://habr.com/ru/companies/timeweb/articles/840200/
👉 @itmozg
Идея статьи появилась, когда я начал повсюду замечать якобы подтверждения мифа, что «программирование — это просто».
В новостях «восьмилетняя девочка, которая второй раз в жизни занимается программированием, наклепала чат-бота за 45 минут» (ага, да!).
Курсы предлагают мне за 10 месяцев с нуля стать миддл+ (ага, да!).
Но я-то знаю, как оно на самом деле. Мы, программисты, обычно решаем проблемы и двигаемся дальше, но я решил запротоколировать всё как есть, и в течение пары месяцев скрупулёзно записывал всю ту хрень, что происходила со мной и моими коллегами, чтобы показать программирование без прикрас. Поехали!
https://habr.com/ru/companies/timeweb/articles/840200/
👉 @itmozg
👍5🔥2
Добро пожаловать в крупнейшую библиотеку алгоритмов с открытым исходным кодом на GitHub
https://the-algorithms.com/ru
👉 @itmozg
https://the-algorithms.com/ru
👉 @itmozg
👍2🔥1
Часть 0. Старт программы
https://habr.com/ru/articles/701284/
Часть 1. Цикл сервера
https://habr.com/ru/articles/704618/
Часть 2. Подготовка бэкэнда
https://habr.com/ru/articles/707950/
Часть 3. Инициализация бэкэнда
https://habr.com/ru/articles/709404/
Часть 4. Цикл бэкэнда
https://habr.com/ru/articles/714840/
Часть 5. Простой SELECT запрос
https://habr.com/ru/articles/723668/
Часть 6. Сложный SELECT запрос
https://habr.com/ru/articles/736154/
#db@itmozg
👉 @itmozg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2