Библиотека девопса | DevOps, SRE, Sysadmin
10.3K subscribers
1.35K photos
70 videos
4 files
2.56K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
#вопросы_с_собеседований
Простенький вопрос, который часто предлагают вначале собеса

Представлен вывод команды top. Что означает каждая запись в выводе?

top - 10:44:36 up 91 days, 19:29, 7 users, load average: 0,00, 0,02, 0,05
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0,0 us, 1,5 sy, 0,0 ni, 96,9 id, 0,0 wa, 0,0 hi, 0,0 si, 1,5 st
KiB Mem : 12137392 total, 6227844 free, 1117728 used, 4791820 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 10090148 avail Mem

top — утилита
10:44:36 — время системы
up — сколько система работает с момента последнего запуска
7 user — количество авторизованных юзеров в системе
load average: 0.00, 0.02, 0.05 — параметр средней нагрузки на систему за период времени 1 минута, 5 минут, 15 минут
156 total — всего процессов в системе
1 running — количество процессов в работе
155 sleeping — ожидание процесса или сигнала
0 stopped — количество приостановленных процессов сигналом STOP или выполнение трассировки
0 zombie — количество зомби-процессов, которые завершили своё выполнение, но присутствующие в системе, чтобы дать родительскому процессу считать свой код завершения.
👍116🔥5🥰5🎉2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💼🖥️ Топ лучших бирж фриланса и платформ для программистов

Где начинающему разработчику найти работу и получить первый коммерческий заказ? В этом могут помочь фриланс-биржи и human-cloud платформы. Но какие именно — расскажем в статье.

📌 Полезные материалы по теме:

🧒 Как найти работу junior-разработчику: 5 самых неочевидных способов
👍 Тесты на собеседовании: как к ним подготовиться и получить оффер
📝 Как правильно составить сопроводительное письмо программисту
🔍 ТОП-12 джоб-сайтов: где программисту разместить резюме и найти работу
🤖 40 сервисов на базе AI, которые помогут найти работу в 2023 году
💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
🗺️ Как программисту искать (и найти) работу за границей в 2023 году
🔝 Подборка полезных материалов для улучшения профиля на LinkedIn и не только
💾 Список каналов «Библиотеки программиста» с вакансиями

🤩Понравился пост? Проголосуйте за нас, чтобы мы могли публиковать сторис (требуется премиум).
4👍4🔥2
📚 ТОП-8 книг по DevOps в 2023 году

Список из 8 лучших книг, которые должны быть в библиотеке каждого начинающего и продвинутого DevOps-специалиста.

Читать статью

#книги
👍83🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Когда работаешь строго по графику 😆😆
33🥰25🔥17👏12👍6
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Когда не решаешь таски, но продуктивно думаешь о них
😁15👍4🌚3🥰1
ErrImagePull — это ошибка, возникающая, когда с образом, указанным для контейнера, нельзя произвести retrieved или pull.

ImagePullBackOff — это период ожидания, пока с образом не случится pull fix.

Образы контейнеров

Одной из самых сильных сторон контейнеризации является возможность запуска любого образа за считанные секунды. Контейнер — это группа процессов, выполняющихся изолированно от базовой системы. Образ контейнера содержит все ресурсы, необходимые для запуска этих процессов: бинарники, библиотеки и необходимые конфиги.

Реестр контейнеров — это репозиторий образов, в котором выполняются два основных действия:

Push: загрузка образа для доступа из из репы
Pull: выгрузка образа для использование его в контейнере

В примерах к этой статье будет использоваться docker CLI, но можно использовать любой инструмент, реализующий спецификации Open Container Initiative для всех взаимодействий с реестром контейнеров.

Далее читайте здесь

#гайд
8
#туториал

🤔🤔 Что насчет запуска команд в bash параллельно?

Первый способ основан на символе &

#!/bin/bash

sleep 5 && echo "sleep 5_1" &
sleep 5 && echo "sleep 5_2" &
wait
echo "sleep 0"

Здесь первая и вторая команда запустятся параллельно. Через 5 секунд на экран выведутся 3 строчки sleep 5_1, sleep 5_2 и sleep 0.

Wait – команда, которая ожидает завершения определенного процесса и возвращает его состояние завершения.

Оболочка ждет (wait) пока завершатся два предыдущих процесса, прежде чем запустить следующую команду. Получается, все то, что в скрипте идет после wait, будет в режиме ожидания, пока не завершатся 2 sleep-а.

Уже похоже на асинхронность.

Теперь запустим в терминале последовательно такие команды:

sleep 60 &
sleep 90 &
sleep 120 &

На экран выведется что-то такое:

[1] 38161
[2] 38166
[3] 38167

Это PID-ы запущенных процессов. Но сейчас интересна команда jobs, которая позволяет напрямую взаимодействовать с процессами в текущей оболочке. Команда отображает состояние заданий в текущем сеансе.

Запускаем jobs и смотрим:

[1] Done sleep 60
[2]- Running sleep 90 &
[3]+ Running sleep 120 &

— список команд, которые запустились в фоне. Первое задание завершилось, а остальное еще в процессе.

Теперь посмотрим где всё это можно применить.

downloader(){
wget -q "$1"
}

while IFS= read -r url
do
downloader "$url" &
done < urls.txt

wait
echo "Завершено"

🍕Скрипт читает построчно файл url.txt
🍕 Передает каждую строчку в функцию downloader
🍕 Функция downloader каждый раз запускается в фоне
🍕 Происходит скачивание файла по ссылке
🍕 По завершению (wait) получаем complete

Файл url.txt представляет собой список прямых урлов на файлы, которые нужно скачать.

Символ & говорит — запусти всё одновременно и параллельно. Типа такого, с таким ты уже всяко встречался:

Можно все это сделать иначе. Есть утилита parallel: apt/yum/brew install parallel

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

parallel -j 4 wget -q {} < urls.txt

-j означает сколько джобов будет запараллелено.

А еще, есть «$!», она позволяет узнать PID последнего запущенного процесса:

sleep 60 &
[1] 39032
echo $!
39032

В первой команде запустили фоном ожидание 60 секунд, вывелся порядковый номер джобы и PID. Ну а чтобы получить последний PID, выполняем третью команду с «$!». На экран вывелся PID в чистом виде, а дальше можно его сохранить в переменную и уже проверять в скрипте, завершился он или нет.
👍2011🎉9🥰7🔥6
🧑‍🎓😎 Еще одна серия с мероприятия OFFZONE 2023

Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.

Самое слабое звено: разбираемся в атаках на цепочки поставок

В последние годы атаки на цепочки поставок перестали быть прерогативой спонсируемых государствами групп. Управлению киберразведки BI.ZONE известно как минимум несколько случаев, когда финансово мотивированные хакеры, например операторы программ‑вымогателей, использовали данный метод для получения первоначального доступа к своим целям.

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

Смотреть

#видео
5🔥3
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
👍43
⚙️ Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам

CI/CD (Continuous Integration / Continuous Deployment) — это непрерывная интеграция и развертывание, предназначенные для повышения удобства, частоты и надежности публикации изменений программного обеспечения или продукта, где:

CI — это практика разработки ПО, при которой изменения в коде автоматически собираются, тестируются и интегрируются в целевую ветку репозитория. Основная идея — минимизация разрыва между компонентами проекта и быстрая обратная связь о качестве кода, благодаря автоматической сборке и тестированию.

CD — это продолжение CI, которое позволяет автоматически разворачивать успешно собранный и протестированный код на сервере или другой среде реального применения. Цель — автоматизация процесса разработки и развертывания приложения или программного продукта после всех этапов проверки и тестирования. Развертывание в продакшн должно выполняться после ручного подтверждения деплоя, чтобы предоставить дополнительный уровень контроля и безопасности.

Инструментов работы с CI/CD

🔹 Gitlab CI/CD — полностью интегрированная в GitLab система для автоматизации сборки, тестирования и развертывания программного кода.

🔹 Jenkins — система с открытым исходным кодом для внедрения CI/CD для автоматизации процесса разработки.

🔹 Azure DevOps — отдельное комплексное решение от Microsoft с набором инструментов разработки. Оно позволяет командам планировать работу, совместно создавать код и доставлять приложения.

🔹 TeamCity — сервер непрерывной интеграции от JetBrains. У TeamCity открытая архитектура, которая позволяет разработчикам создавать плагины для расширения функционала.

Для углубленного ознакомления переходим сюда

#гайд
👍15🔥7🥰6😁5🎉5