💥🔌 Архитектурные паттерны: Circuit-Breaker
Circuit Breaker предназначен для обнаружения сбоев и инкапсуляции логики предотвращения выполнения системой операции, которая может сбоить. Вместо того чтобы повторно обращаться к службе, которая, вероятно, недоступна, Circuit Breaker на некоторое время останавливает все попытки, давая проблемной службе время на восстановление.
Как это работает
Для предотвращения сбоя, Circuit Breaker состоит из трех возможных состояний, позволяющих системе понять, что случился сбой и отреагировать соответствующим образом:
🔹 закрытое состояние — состояние по умолчанию
🔹 разомкнутое состояние — предотвращение любых запросов к сбойной службе
🔹 полуоткрытое состояние — разрешается несколько тестовых запросов для определения работоспособности и статуса сбойной службы
Подробнее здесь
#туториал
Circuit Breaker предназначен для обнаружения сбоев и инкапсуляции логики предотвращения выполнения системой операции, которая может сбоить. Вместо того чтобы повторно обращаться к службе, которая, вероятно, недоступна, Circuit Breaker на некоторое время останавливает все попытки, давая проблемной службе время на восстановление.
Как это работает
Для предотвращения сбоя, Circuit Breaker состоит из трех возможных состояний, позволяющих системе понять, что случился сбой и отреагировать соответствующим образом:
🔹 закрытое состояние — состояние по умолчанию
🔹 разомкнутое состояние — предотвращение любых запросов к сбойной службе
🔹 полуоткрытое состояние — разрешается несколько тестовых запросов для определения работоспособности и статуса сбойной службы
Подробнее здесь
#туториал
🔥23👍2❤1🥰1
💥⚠️ Рекомендации по безопасности: высокая степень уязвимости Curl
Разработчики curl, популярного инструмента командной строки и библиотеки для передачи данных выпустили релиз 8.4.0 11 октября 2023 года. Эта версия включает исправление для двух распространенных уязвимостей, одну из которых разработчики curl оценивают как «ВЫСОКУЮ» степень серьезности и описывают как «вероятно, худший недостаток безопасности curl за долгое время».
Айдишники CVE:
CVE-2023-38545: переполнение буфера кучи SOCKS5, высокая степень серьезности (влияет как на libcurl, так и на инструмент curl)
CVE-2023-38546: внедрение cookie без файла, степень серьезности НИЗКАЯ (влияет только на libcurl, а не на инструмент)
Подробная информация о том, как используются эти CVE, опубликована вместе с рекомендацией. Разработчик curl опубликовал пост с более подробной информацией о том, как возникла уязвимость в результате конкретной реализации поддержки SOCKS5.
В данной статье объясняется, как можно использовать Docker Scout, чтобы понять, есть ли зависимость от curl в образах контейнеров, а также представлено руководство о том, где была введена зависимость и как обновить curl до версии 8.4.0.
Подробности тут
#гайд
Разработчики curl, популярного инструмента командной строки и библиотеки для передачи данных выпустили релиз 8.4.0 11 октября 2023 года. Эта версия включает исправление для двух распространенных уязвимостей, одну из которых разработчики curl оценивают как «ВЫСОКУЮ» степень серьезности и описывают как «вероятно, худший недостаток безопасности curl за долгое время».
Айдишники CVE:
CVE-2023-38545: переполнение буфера кучи SOCKS5, высокая степень серьезности (влияет как на libcurl, так и на инструмент curl)
CVE-2023-38546: внедрение cookie без файла, степень серьезности НИЗКАЯ (влияет только на libcurl, а не на инструмент)
Подробная информация о том, как используются эти CVE, опубликована вместе с рекомендацией. Разработчик curl опубликовал пост с более подробной информацией о том, как возникла уязвимость в результате конкретной реализации поддержки SOCKS5.
В данной статье объясняется, как можно использовать Docker Scout, чтобы понять, есть ли зависимость от curl в образах контейнеров, а также представлено руководство о том, где была введена зависимость и как обновить curl до версии 8.4.0.
Подробности тут
#гайд
👍4❤2👏2
🧖🧖 System Design 101
Объясняются сложные системы, используя наглядные материалы и простые термины.
Готовитесь ли вы к собеседованию по системному дизайну или просто хотите понять, как системы работают, эта массивная шпаргалка будет полезна. Много полезных тем в сжатом виде — от протоколов до нюансов безопасности.
Шпаргалка
#туториал
Объясняются сложные системы, используя наглядные материалы и простые термины.
Готовитесь ли вы к собеседованию по системному дизайну или просто хотите понять, как системы работают, эта массивная шпаргалка будет полезна. Много полезных тем в сжатом виде — от протоколов до нюансов безопасности.
Шпаргалка
#туториал
❤6👍1
#вопросы_с_собеседования
Что такое RAID? Какие основные типы RAID существуют?
В работе с дисками есть две проблемы:
✏️ Низкая скорость чтения\записи
✏️ Выход дисков из строя и потеря данных
И это всё решается с помощью технологии RAID — избыточного массива независимых дисков.
Существуют следующие уровни спецификации RAID: 1, 2, 3, 4, 5, 6, 0. Кроме того, существуют комбинации: 01, 10, 50, 05, 60, 06. Существуют аппаратные и программные RAID-массивы.
Программные массивы создаются уже после установки ОС средствами программных продуктов и утилит, что и является главным недостатком таких дисковых массивов.
Аппаратные RAID’ы создают дисковый массив до установки ОС и от неё не зависят.
RAID 0 — чередование
RAID 1 — зеркалирование
RAID 5 — чередование с четностью
RAID 6 — чередование с двойной четностью
RAID 10 — совмещение зеркалирования и чередования
Что такое RAID? Какие основные типы RAID существуют?
🔥9👍3🌚1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
Автор «Библиотеки программиста» Станислав Герасимов, инвалид с детства, делится жизненной историей становления профессиональным разработчиком.
В жизни Стаса было всё, но, возможно, именно путь к мечте помог справиться со всеми жизненными трудностями и добиться поставленной цели.
🔗 Читать статью
🔗 Зеркало
Автор «Библиотеки программиста» Станислав Герасимов, инвалид с детства, делится жизненной историей становления профессиональным разработчиком.
В жизни Стаса было всё, но, возможно, именно путь к мечте помог справиться со всеми жизненными трудностями и добиться поставленной цели.
🔗 Читать статью
🔗 Зеркало
👍5
Маск навел суеты вокруг ИИ, поэтому и вам предлагаем немного погрузиться в эту тему. Поможет #дайджест бесплатных курсов по ИИ и ChatGPT:
🚀 Генеративный ИИ для всех — как работает генеративный искусственный интеллект и как использовать его в своей жизни и на работе
🔥 Введение в генеративный ИИ от Google — что такое генеративный искусственный интеллект, как он используется и чем отличается от традиционных методов машинного обучения
🔵 Гарвардский курс CS50 «Введение в искусственный интеллект с помощью Python» — учимся использовать машинное обучение на Python
✈️ Знакомство с ответственным ИИ от Google — что такое ответственный ИИ, почему это важно и как Google внедряет ответственный ИИ в свои продукты
👨💻 Оптимизируем работу с помощью Microsoft Bing Chat — как Bing Chat может выполнять широкий спектр задач и помочь вам оптимизировать весь рабочий процесс
🚀 Генеративный ИИ для всех — как работает генеративный искусственный интеллект и как использовать его в своей жизни и на работе
🔥 Введение в генеративный ИИ от Google — что такое генеративный искусственный интеллект, как он используется и чем отличается от традиционных методов машинного обучения
🔵 Гарвардский курс CS50 «Введение в искусственный интеллект с помощью Python» — учимся использовать машинное обучение на Python
✈️ Знакомство с ответственным ИИ от Google — что такое ответственный ИИ, почему это важно и как Google внедряет ответственный ИИ в свои продукты
👨💻 Оптимизируем работу с помощью Microsoft Bing Chat — как Bing Chat может выполнять широкий спектр задач и помочь вам оптимизировать весь рабочий процесс
❤3👍2
🤔❓ Что ты такое, dhclient?
Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.
Один из самых простых протоколов с точки зрения сетевого взаимодействия — UDP 67+68. Это всего четыре сообщения: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK. И даже не будем усложнять себе жизнь, используя DHCP Relay.
Остальная часть истории здесь
#почитать
Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.
Один из самых простых протоколов с точки зрения сетевого взаимодействия — UDP 67+68. Это всего четыре сообщения: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK. И даже не будем усложнять себе жизнь, используя DHCP Relay.
Остальная часть истории здесь
#почитать
❤🔥17❤3🔥3👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🏆 Самые популярные языки программирования 2023
Популярность ЯП зависит от нескольких факторов. Мы разобрались с ними, составили сводный рейтинг и обсудили особенности, преимущества, недостатки и причины популярности каждого языка. Заходите и читайте👇
🔗 Читать статью
🔗 Зеркало
Популярность ЯП зависит от нескольких факторов. Мы разобрались с ними, составили сводный рейтинг и обсудили особенности, преимущества, недостатки и причины популярности каждого языка. Заходите и читайте👇
🔗 Читать статью
🔗 Зеркало
❤3🥱2
Как быть, если запустил скрипт в терминале, без nohup и применения screen? Ждать завершения не вариант, и завершать нельзя...
Сделаем подопытный образец, который в цикле, каждые 2 секунды будет писать в файл числа от 1 до 10000, чтобы визуально понимать что происходит.
Жмем сочетание клавиш ctrl+z в первом терминале, где был запущен скрипт.
Получаем такое:
А теперь в первом терминале запустим команду bg, и увидим такое:
Скрипт продолжил работу в фоне, с того момента где был остановлен. Идем во второй терминал с tail и видим, что цифры продолжили заполнять файл.
Если сейчас закрыть первый терминал, скрипт прекратит свою работу, нужно его отвязать от текущей сессии и демонизировать.
Теперь в первом терминале пишем exit либо просто закрываем его. А во втором терминале работа скрипта продолжается.
Сделаем подопытный образец, который в цикле, каждые 2 секунды будет писать в файл числа от 1 до 10000, чтобы визуально понимать что происходит.
#!/bin/bashОткрываем второй терминал:
for i in {1..10000}
do
echo $i >> /tmp/log.txt
sleep 2
done
tail -f /tmp/log.txtВидим как log.txt постепенно наполняется.
Жмем сочетание клавиш ctrl+z в первом терминале, где был запущен скрипт.
Комбинация клавиш Ctrl + Z посылает процессу сигнал, который приказывает ему остановиться. Это значит, что процесс остается в системе, но замораживается.
Получаем такое:
[1]+ Stopped ./script.shВидим что скрипт остановил свою работу. А во втором терминале с tail, цифры перестали заполнять файл. Ключевое слово - остановил, но не прекратил.
А теперь в первом терминале запустим команду bg, и увидим такое:
[1] + ./script.sh &
Команда bg предназначена для возобновления исполнения остановленной задачи в фоновом режиме в командных оболочках.
Скрипт продолжил работу в фоне, с того момента где был остановлен. Идем во второй терминал с tail и видим, что цифры продолжили заполнять файл.
Если сейчас закрыть первый терминал, скрипт прекратит свою работу, нужно его отвязать от текущей сессии и демонизировать.
disown %1
Команда disown блокирует отправку системного сигнала SIGHUP с помощью командной оболочки и исполняющемуся в фоновом режиме процессу при завершении работы командной оболочки.
Теперь в первом терминале пишем exit либо просто закрываем его. А во втором терминале работа скрипта продолжается.
🤩23👍11❤3🔥3
🤔😱 Что происходит после команды kubectl run?
Представьте, что вы хотите развернуть nginx в кластере Kubernetes, набрав что-то вроде этого в своем терминале:
kubectl create deployment nginx --image=nginx --replicas=3
Через несколько секунд увидите три модуля nginx, распределенных по всем рабочим нодам. Что на самом деле происходит под капотом?
Одна из замечательных особенностей Kubernetes заключается в том, что он управляет развертыванием рабочих нагрузок в инфраструктуре с помощью удобных для пользователя API. Сложность скрыта за простыми абстракциями. Но для того, чтобы полностью понять ценность, которую он нам предлагает, полезно разобраться в его внутреннем устройстве.
Это руководство полностью разбирает жизненный цикл запроса от клиента к kubelet, при необходимости ссылаясь на исходный код, чтобы проиллюстрировать, что происходит. Написано понятным языком.
#туториал
Представьте, что вы хотите развернуть nginx в кластере Kubernetes, набрав что-то вроде этого в своем терминале:
kubectl create deployment nginx --image=nginx --replicas=3
Через несколько секунд увидите три модуля nginx, распределенных по всем рабочим нодам. Что на самом деле происходит под капотом?
Одна из замечательных особенностей Kubernetes заключается в том, что он управляет развертыванием рабочих нагрузок в инфраструктуре с помощью удобных для пользователя API. Сложность скрыта за простыми абстракциями. Но для того, чтобы полностью понять ценность, которую он нам предлагает, полезно разобраться в его внутреннем устройстве.
Это руководство полностью разбирает жизненный цикл запроса от клиента к kubelet, при необходимости ссылаясь на исходный код, чтобы проиллюстрировать, что происходит. Написано понятным языком.
#туториал
👍11🔥5❤2
🤜🤛 🤙 Сoop-Days 2023 — День информационных технологий и безопасности
Конференция Coop-Days 2023 посвящена двум ключевым темам: кооперация и самоуправление, и информационные технологии и безопасность.
Конференция будет интересна как отраслевым специалистам, так и людям, интересующимся и практикующим в своей деятельности практики самоуправления и кооперации.
Видео
#мероприятие
Конференция Coop-Days 2023 посвящена двум ключевым темам: кооперация и самоуправление, и информационные технологии и безопасность.
Конференция будет интересна как отраслевым специалистам, так и людям, интересующимся и практикующим в своей деятельности практики самоуправления и кооперации.
Видео
#мероприятие
👍5👏1
Очередной #дайджест инструментов и материалов по DevOps
🟢 Релиз Docker Desktop 4.25 — улучшения в Docker Desktop для Windows, Rosetta для Linux GA и новый Docker Scout Image Analysis
🟢 Terraform AWS Drift Checks — как бороться с «дрейфом» настроек в IaC
🟢 tEKS — набор модулей Terraform / Terragrunt, предназначенных для предоставления вам всего необходимого для запуска производственного кластера EKS на AWS
🟢 BPF и безопасность: друзья и враги — как BPF используется для обеспечения безопасности, как BPF обеспечивает свою собственную безопасность, свои привилегированные и непривилегированные варианты использования
🟢 Эволюция разработки ПО — подробный рассказ об эволюции Software Engineering и попытка понять, как индустрия должна измениться сегодня
🟢 Релиз Docker Desktop 4.25 — улучшения в Docker Desktop для Windows, Rosetta для Linux GA и новый Docker Scout Image Analysis
🟢 Terraform AWS Drift Checks — как бороться с «дрейфом» настроек в IaC
🟢 tEKS — набор модулей Terraform / Terragrunt, предназначенных для предоставления вам всего необходимого для запуска производственного кластера EKS на AWS
🟢 BPF и безопасность: друзья и враги — как BPF используется для обеспечения безопасности, как BPF обеспечивает свою собственную безопасность, свои привилегированные и непривилегированные варианты использования
🟢 Эволюция разработки ПО — подробный рассказ об эволюции Software Engineering и попытка понять, как индустрия должна измениться сегодня
🔥6👍5❤3😁3🤩3
#вопросы_с_собеседования
Какие основные типы RAID существуют, чем они отличаются?
RAID 0 — Чередование
В системе RAID 0 данные разделяются на блоки, которые записываются на все диски в массиве. При одновременном использовании нескольких дисков (как минимум 2) это обеспечивает превосходную производительность ввода-вывода.
RAID 1 — Зеркальное отображение
Данные хранятся дважды, записывая их как на основной диск (или набор дисков), так и на зеркальный диск (или набор дисков). В случае сбоя диска контроллер использует основной диск или зеркальный диск для восстановления данных и продолжает работу.
RAID уровень 5
RAID 5 является наиболее распространенным безопасным уровнем RAID. Требуется как минимум 3 диска, но может работать до 16. Блоки данных распределяются по дискам, и на одном диске записывается контрольная сумма четности всех данных блока
Уровень RAID 6 — Чередование с двойной четностью
RAID 6 похож на RAID 5, но данные о четности записываются на два диска. Это означает, что для него требуется как минимум 4 диска и он может выдержать 2 диска, умирающих одновременно.
RAID уровень 10 — объединение RAID 1 и RAID 0
Можно объединить преимущества (и недостатки) RAID 0 и RAID 1 в одной системе. Это вложенная или гибридная конфигурация RAID.
Какие основные типы RAID существуют, чем они отличаются?
❤13👍4🥰3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤4
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📯Внимание всем отважным героям и искателям приключений!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
👏2❤1🔥1🤔1
Разрабы продолжают добавлять поддержку типов данных в Go-Redis. Вот, подвезли поддержку JSON.
С JSON key в Redis вы можете:
Пример демонстрирует, как начать работу с JSON в Go-Redis:
var ctx = context.Background()
client := redis.NewClient(&redis.Options{
Addr: «localhost:6379»,
})
type Bicycle struct {
Brand string
Model string
Price int
}
bicycle := Bicycle{
Brand: «Velorim»,
Model: «Jigger»,
Price: 270,
}
_, err := client.JSONSet(ctx, «bicycle:1», «$», bicycle).Result()
if err != nil {
panic(err)
}
res, err := client.JSONGet(ctx, «bicycle:1», «.Model»).Result()
if err != nil {
panic(err)
}
fmt.Println(«bicycle:1 model is», res)
Изучить подробности релиза
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release 9.3.0 · redis/go-redis
What's new?
JSON support
We are continuing to add support for more Redis data types in Go-Redis. Today, we are happy to announce support for JSON. JSON is a Redis data structure for storing, qu...
JSON support
We are continuing to add support for more Redis data types in Go-Redis. Today, we are happy to announce support for JSON. JSON is a Redis data structure for storing, qu...
❤🔥11👍5🔥1🤔1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔤 Азбука SQL в примерах. Часть 1. Создаем базу данных и первую таблицу
С помощью этого короткого руководства в трех частях вы создадите базу данных, добавите в неё записи, а затем выполните несколько запросов для их обработки. В первой части мы узнаем, что скрывается за тремя буквами SQL и начнем двигаться к поставленной цели.
🔗 Читать статью
🔗 Зеркало
С помощью этого короткого руководства в трех частях вы создадите базу данных, добавите в неё записи, а затем выполните несколько запросов для их обработки. В первой части мы узнаем, что скрывается за тремя буквами SQL и начнем двигаться к поставленной цели.
🔗 Читать статью
🔗 Зеркало
👏3👍2💯1