🤔❓ Что ты такое, 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
💪😎 Подробная сборка сетевого хранилища на базе TrueNAS/ZFS
Очень крутой материал про настройку и обслуживание высокообъемной хранилки на FreeNAS-е с ZFS-ом.
FreeNAS, основана на FreeBSD, ориентированной на сетевое хранилище, которая использует файловую систему ZFS и веб-интерфейс для настройки общего доступа к сети и других параметров. Хотя большая часть настройки и управления системой осуществляется через этот веб-интерфейс, вы можете немного расширить возможности через терминал по SSH.
В этой статье автор расскажет о выборе оборудования, процессе сборки и настройки, некоторых других приложениях, немного теории о том, как ZFS распределяет пространство для хранения массива и как его можно настроить, чтобы уменьшить накладные расходы на распределение.
Читать
#гайд
Очень крутой материал про настройку и обслуживание высокообъемной хранилки на FreeNAS-е с ZFS-ом.
FreeNAS, основана на FreeBSD, ориентированной на сетевое хранилище, которая использует файловую систему ZFS и веб-интерфейс для настройки общего доступа к сети и других параметров. Хотя большая часть настройки и управления системой осуществляется через этот веб-интерфейс, вы можете немного расширить возможности через терминал по SSH.
В этой статье автор расскажет о выборе оборудования, процессе сборки и настройки, некоторых других приложениях, немного теории о том, как ZFS распределяет пространство для хранения массива и как его можно настроить, чтобы уменьшить накладные расходы на распределение.
Читать
#гайд
🔥5👏5🤩3❤2🥰2
#вопросы_с_собеседования
Что такое loop devices? Как их можно использовать?
В Unix-подобных операционных системах устройство цикла , vnd (диск vnode) или lofi (интерфейс файла цикла) является псевдоустройством, которое делает компьютерный файл доступным как блочное устройство.
Перед использованием петлевое устройство должно быть подключено к существующему файлу в файловой системе. Ассоциация предоставляет пользователю интерфейс прикладного программирования (API), который позволяет использовать файл вместо блочного специального файла (см. Файловую систему устройства). Таким образом, если файл содержит всю файловую систему, файл может быть смонтирован, как если бы это было дисковое устройство.
Файлы этого типа часто используются для CD образов ISO и дискет образов. Монтирование файла, содержащего файловую систему, с помощью такого монтирования цикла делает файлы в этой файловой системе доступными. Они появляются в каталоге точки монтирования.
Петлевое подключение имеет несколько применений. Это удобный метод автономного управления и редактирования образов файловой системы, которые в дальнейшем используются для нормальной работы системы. Сюда входят образы CD или DVD или системы установки. Его можно использовать для установки операционной системы в файловую систему без повторного разбиения диска. Он также обеспечивает постоянное разделение данных, например, при имитации съемных носителей на более быстром и удобном жестком диске или инкапсуляции зашифрованной файловой системы.
Что такое loop devices? Как их можно использовать?
🔥6🥰1🎉1
#memes
Защита от белок 🐿️ чтобы провод не грызли.
Раньше ели шнурок, а теперь антенну почти сточили 😂
Защита от белок 🐿️ чтобы провод не грызли.
Раньше ели шнурок, а теперь антенну почти сточили 😂
😁6🤩6
Очередной #дайджест инструментов и материалов по DevOps
🟡 Container Security Fundamentals — автор серии видосов, рассказывает теорию погружения в тему безопасности контейнеров с примерами кода в консоли
🟡 GitHub Actions могли бы быть намного лучше — описание раздражающих нюансов в работе Гита, которые влияют на автора
🟡 Размышления о 10 000 часах DevOps — некоторые размышления после 10 000 часов работы в сфере DevOps
🟡 Темная сторона SRE — хронический стресс, карьерный застой и профессиональный риск, такое тоже может быть
🟡 SRE Stories — SRE, DevOps-инженеры, системные администраторы рассказывают про свою работу и профессиональный путь
🟡 Container Security Fundamentals — автор серии видосов, рассказывает теорию погружения в тему безопасности контейнеров с примерами кода в консоли
🟡 GitHub Actions могли бы быть намного лучше — описание раздражающих нюансов в работе Гита, которые влияют на автора
🟡 Размышления о 10 000 часах DevOps — некоторые размышления после 10 000 часов работы в сфере DevOps
🟡 Темная сторона SRE — хронический стресс, карьерный застой и профессиональный риск, такое тоже может быть
🟡 SRE Stories — SRE, DevOps-инженеры, системные администраторы рассказывают про свою работу и профессиональный путь
🤩11❤🔥11👍4🥰1
Forwarded from Библиотека питониста | Python, Django, Flask
🔤 Азбука SQL в примерах. Часть 2. Ограничения, которые упрощают жизнь
В предыдущей части мы выяснили, что такое SQL, создали свою первую базу данных и добавили в неё первую таблицу. Пришло время узнать, как сделать добавление данных в неё более простым и надёжным.
🔗 Читать статью
🔗 Зеркало
В предыдущей части мы выяснили, что такое SQL, создали свою первую базу данных и добавили в неё первую таблицу. Пришло время узнать, как сделать добавление данных в неё более простым и надёжным.
🔗 Читать статью
🔗 Зеркало
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Rustypaste
Это минималистичный и простой сервис загрузки, написанный на Rust и реализованный с использованием веб-фреймворка Actix, как наиболее подходящий фреймворк с точки зрения безопасности, производительности и простоты.
Самый простой способ взаимодействия с сервером rustypaste — использовать curl, но вы можете использовать инструмент командной строки под названием rpaste, который написан на Rust.
Возможности:
〽️ Загрузка файла, сокращение URL и загрузка по ссылке
〽️ Один бинарник
〽️ Простая конфигурация
〽️ Простота развертывания
〽️ Нет базы данных
〽️ Self-hosted
Это минималистичный и простой сервис загрузки, написанный на Rust и реализованный с использованием веб-фреймворка Actix, как наиболее подходящий фреймворк с точки зрения безопасности, производительности и простоты.
Самый простой способ взаимодействия с сервером rustypaste — использовать curl, но вы можете использовать инструмент командной строки под названием rpaste, который написан на Rust.
Возможности:
〽️ Загрузка файла, сокращение URL и загрузка по ссылке
〽️ Один бинарник
〽️ Простая конфигурация
〽️ Простота развертывания
〽️ Нет базы данных
〽️ Self-hosted
🔥8👍5👏3🎉3🥰2