🤔 Очередной #дайджест для DevOps-ов
🔺 Валидация данных при помощи Pydantic — зачем это нужно, чем софт лучше marshmallow, как пользоваться и как с его помощью правильно проверять данные
🔺 snips.sh — pastebin сервис, работающий по SSH и доступный как в tui, так и в веб-морде
🔺 Formatting an XFS Filesystem — инженеры Oracle пишут о работе mkfs.xfs и о том, что происходит в процессе форматирования раздела в этой файловой системе
🔺 Установка размера кучи Java внутри контейнера Docker — запуск Java-приложений в контейнере может показаться тривиальной задачей, но есть некоторые подводные камни...
🔺 Траблшутинг отсутствующих журналов Kubernetes в Elasticsearch — рассказ о том, почему это происходит и как это предотвратить
🔺 Валидация данных при помощи Pydantic — зачем это нужно, чем софт лучше marshmallow, как пользоваться и как с его помощью правильно проверять данные
🔺 snips.sh — pastebin сервис, работающий по SSH и доступный как в tui, так и в веб-морде
🔺 Formatting an XFS Filesystem — инженеры Oracle пишут о работе mkfs.xfs и о том, что происходит в процессе форматирования раздела в этой файловой системе
🔺 Установка размера кучи Java внутри контейнера Docker — запуск Java-приложений в контейнере может показаться тривиальной задачей, но есть некоторые подводные камни...
🔺 Траблшутинг отсутствующих журналов Kubernetes в Elasticsearch — рассказ о том, почему это происходит и как это предотвратить
🤩16❤🔥13❤2🔥1
😇🤲 Роль информационной безопасности в наше время — не остановить все инциденты, а не допустить нанесение ущерба
Контейнеризированные среды благоволят реализовывать концепцию Zero Trust, потому что они сами приносят определенные уровни изоляции и, непосредственно, есть дополнительные инструменты, как самой системы оркестрации, так и системы Linux, которая нам это позволяет делать. Проще сред чем контейнеризированная для оркестрации и для того, чтобы реализовывать модель Zero Trust, нет.
В концепции Zero Trust мы ничему не доверяем, то есть у нас нет такого понятия, как доверенное окружение, доверенный компонент или среда. Мы изначально исходим из концепции, что везде может быть уязвимость, вредоносный код и другие проблемы. Изначально, до обнаружения проблем, мы закладываем, что они уже могут существовать и система может, возможно, уже скомпрометирована.
Читать статью
#почитать
Контейнеризированные среды благоволят реализовывать концепцию Zero Trust, потому что они сами приносят определенные уровни изоляции и, непосредственно, есть дополнительные инструменты, как самой системы оркестрации, так и системы Linux, которая нам это позволяет делать. Проще сред чем контейнеризированная для оркестрации и для того, чтобы реализовывать модель Zero Trust, нет.
В концепции Zero Trust мы ничему не доверяем, то есть у нас нет такого понятия, как доверенное окружение, доверенный компонент или среда. Мы изначально исходим из концепции, что везде может быть уязвимость, вредоносный код и другие проблемы. Изначально, до обнаружения проблем, мы закладываем, что они уже могут существовать и система может, возможно, уже скомпрометирована.
Читать статью
#почитать
👍2🔥2
ZRAM позволяет сжимать оперативную память на лету и таким образом увеличить ее объём.
При включении zram, сжатие переносит часть нагрузки на процессор, но использование zram действительно может улучшить производительность.
Также есть zswap, которая сжимает данные в разделе подкачки. И которая по умолчанию включена почти во всех официальных ядрах.
Проблема zswap заключается в том, что его приоритет выше чем у zram, который остается неиспользуемым. Чтобы решить эту проблему, нужно отключить zswap в ядре.
Но чтобы применить эту опцию, нужно пересобрать ядро. Пойдем легким путем и выключим zswap через загрузчик grub.
Редактируем файл /etc/default/grub
Не забываем перегенирировать конфиг grub:
Перезагружаем машину и проверяем отключение zswap:
Если вывелась буква N — значит все правильно.
Ну и наконец включаем zram. Для этого пишем bash скрипт и кидаем его в автозагрузку:
1. Загружаем модуль zram
2. Выбираем алгоритм сжатия lz4 (либо zstd)
3. Объем zram 1гиг физической оперативки
4. 2 это количество потоков сжатия (потоки процессора)
5. Создаем блочное устройство и включаем его
Запускаем скрипт и проверяем включение командой: zramctl. Если на экран что-то вывелось, значит всё хорошо и сжатие начало работать.
Если заморачиваться с bash скриптами не хочется, ставим утилиту которая будет работать через systemd.
Правим конфиг /etc/systemd/zram-generator.conf
Активируем и запускаем:
Всё! Теперь оно само будет запускаться без лишних движений.
При включении zram, сжатие переносит часть нагрузки на процессор, но использование zram действительно может улучшить производительность.
Также есть zswap, которая сжимает данные в разделе подкачки. И которая по умолчанию включена почти во всех официальных ядрах.
Проблема zswap заключается в том, что его приоритет выше чем у zram, который остается неиспользуемым. Чтобы решить эту проблему, нужно отключить zswap в ядре.
CONFIG_ZSWAP_DEFAULT_ON=N
Но чтобы применить эту опцию, нужно пересобрать ядро. Пойдем легким путем и выключим zswap через загрузчик grub.
Редактируем файл /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=0" loglevel=3 quiet "
Не забываем перегенирировать конфиг grub:
grub-mkconfig -o /boot/grub/grub.cfg
Перезагружаем машину и проверяем отключение zswap:
cat /sys/module/zswap/parameters/enabled
Если вывелась буква N — значит все правильно.
Ну и наконец включаем zram. Для этого пишем bash скрипт и кидаем его в автозагрузку:
#!/bin/bash
modprobe zram
mkdir /sys/block/zram0
echo lz4 > /sys/block/zram0/comp_algorithm
echo 1G > /sys/block/zram0/disksize
echo 2 > /sys/block/zram0/max_comp_streams
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0
1. Загружаем модуль zram
2. Выбираем алгоритм сжатия lz4 (либо zstd)
3. Объем zram 1гиг физической оперативки
4. 2 это количество потоков сжатия (потоки процессора)
5. Создаем блочное устройство и включаем его
Запускаем скрипт и проверяем включение командой: zramctl. Если на экран что-то вывелось, значит всё хорошо и сжатие начало работать.
Если заморачиваться с bash скриптами не хочется, ставим утилиту которая будет работать через systemd.
apt install systemd-zram-generator
Правим конфиг /etc/systemd/zram-generator.conf
[zram0]
zram-size = ram
compression-algorithm = lz4
Активируем и запускаем:
systemctl daemon-reload
systemctl start /dev/zram0
Всё! Теперь оно само будет запускаться без лишних движений.
👍10🎉7🥰6❤5🔥5
💪💪 Kubernetes V1.27 : Защита поды с помощью MemoryThrottlingFactor
В стремлении к совершенству управления ресурсами в Kubernetes 1.22 появилась важная функция — ограничения памяти. Это позволило пользователям устанавливать явные границы использования памяти, предотвращая чрезмерное потребление ресурсов контейнерами.
Запросы к памяти и ограничения стали ключевыми с появлением ограничений памяти в Kubernetes. Эти элементы играют решающую роль в точной настройке распределения ресурсов внутри кластера.
Продолжение тут
#туториал
В стремлении к совершенству управления ресурсами в Kubernetes 1.22 появилась важная функция — ограничения памяти. Это позволило пользователям устанавливать явные границы использования памяти, предотвращая чрезмерное потребление ресурсов контейнерами.
Запросы к памяти и ограничения стали ключевыми с появлением ограничений памяти в Kubernetes. Эти элементы играют решающую роль в точной настройке распределения ресурсов внутри кластера.
Продолжение тут
#туториал
❤13🎉13👏2
Подробное дополнение по Container Security Fundamentals к этому посту т. к. тема интересная и стоит внимания.
Linux capabilities предоставляют процессу подмножество доступных привилегий root. Это эффективно разбивает привилегии root на более мелкие и отличающиеся друг от друга единицы. Каждая из этих единиц затем может быть независимо предоставлена процессам. Таким образом, сокращается полный набор привилегий и снижаются риски эксплуатации.
Читать статью
#туториал
Linux capabilities предоставляют процессу подмножество доступных привилегий root. Это эффективно разбивает привилегии root на более мелкие и отличающиеся друг от друга единицы. Каждая из этих единиц затем может быть независимо предоставлена процессам. Таким образом, сокращается полный набор привилегий и снижаются риски эксплуатации.
Читать статью
#туториал
👏2👍1🥰1
🤔 Очередной #дайджест для DevOps-ов
◾ Память как у пингвина — работа памяти в Linux
◾ Strace little book — короткие заметки о том, какие опции и в каких случаях можно использовать
◾ Визуальный редактор для terraform — создавайте свою облачную инфраструктуру без особых усилий с помощью вебморды Brain board
◾ Helm Dashboard — графический интерфейс для управления Helm-релизами в Kubernetes
◾ Нагрузочное тестирование — про нагрузочное тестирование для DevOps-инженеров от Yandex Cloud
◾ Память как у пингвина — работа памяти в Linux
◾ Strace little book — короткие заметки о том, какие опции и в каких случаях можно использовать
◾ Визуальный редактор для terraform — создавайте свою облачную инфраструктуру без особых усилий с помощью вебморды Brain board
◾ Helm Dashboard — графический интерфейс для управления Helm-релизами в Kubernetes
◾ Нагрузочное тестирование — про нагрузочное тестирование для DevOps-инженеров от Yandex Cloud
😁7👍5🥰5🔥4🎉4
#вопросы_с_собеседования
Как работают сертификаты? Как подтверждается соединение?
➖ Браузер или сервер (клиент) пытается подключиться к веб-сайту (веб-серверу), защищенному с помощью SSL.
➖ Клиент запрашивает идентификацию у веб-сервера.
➖ В ответ веб-сервер отправляет копию своего SSL-сертификата и публичный ключ.
➖ Клиент проверяет, является ли этот SSL-сертификат доверенным. В него зашиты сервера с помощью которых нужно производить проверку, с помощью центров сертификации. Если это так, он сообщает об этом веб-серверу. Генерирует сеансовый ключ, шифрует публичным ключом и отправляет на сервер.
➖ Сервер расшифровывает сообщение и сохраняет сеансовый ключ. Затем веб-сервер возвращает подтверждение с цифровой подписью и начинает сеанс, зашифрованный с использованием SSL.
➖ Зашифрованные данные используются совместно браузером или сервером и веб-сервером.
Этот процесс иногда называют подтверждением SSL-соединения. Хотя по описанию этот процесс выглядит длительным, в реальности он занимает миллисекунды.
Как работают сертификаты? Как подтверждается соединение?
❤18👍13👏2
🧑💻 Особенности работы в айти: результаты опроса подписчиков
В декабре мы провели среди вас опрос, изучили результаты и сделали аналитическую статью на vc.ru.
Вот некоторые выводы:
🧔♂️ В основном наша аудитория состоит из мужчин — 92,1% опрошенных. Женщин, соответственно, всего 7,9%.
🐍 В ТОП-10 специальностей входят питонисты — их 12,4%. Дата-инженерами или дата-сайентистами себя назвали 3.7% респондентов.
👨🎓 25% аудитории — самоучки, у которых нет профильного образования, и они не заканчивали никаких платных курсов.
💲 У разработчиков с опытом менее года преобладают зарплаты до 90 000 рублей (88%). Если опыта 1-3 года, то доля получающих 150 000+ увеличивается до 53,6%.
💰 Опытные и образованные Python-разработчики (15,44%) также входят в шестёрку самых высокооплачиваемых специалистов.
🔗 Полный отчёт можно прочесть по этой ссылке
💬 Пишите, какие ещё подобные материалы вам было бы интересно почитать
В декабре мы провели среди вас опрос, изучили результаты и сделали аналитическую статью на vc.ru.
Вот некоторые выводы:
🧔♂️ В основном наша аудитория состоит из мужчин — 92,1% опрошенных. Женщин, соответственно, всего 7,9%.
🐍 В ТОП-10 специальностей входят питонисты — их 12,4%. Дата-инженерами или дата-сайентистами себя назвали 3.7% респондентов.
👨🎓 25% аудитории — самоучки, у которых нет профильного образования, и они не заканчивали никаких платных курсов.
💲 У разработчиков с опытом менее года преобладают зарплаты до 90 000 рублей (88%). Если опыта 1-3 года, то доля получающих 150 000+ увеличивается до 53,6%.
💰 Опытные и образованные Python-разработчики (15,44%) также входят в шестёрку самых высокооплачиваемых специалистов.
🔗 Полный отчёт можно прочесть по этой ссылке
💬 Пишите, какие ещё подобные материалы вам было бы интересно почитать
👍4👏3❤1
Недавно выяснили, что nginx позволяет нативно писать логи в json формате. Для этого в конфиг nginx.conf нужно добавить такой блок:
Получаем максимальную информацию о клиенте в json формате, которую пробиваем средствами nginx. И теперь все это можно легко скармливать всяким эластикам и т.п. без парсинга и прочего.
Хранить логи в файлах не айс — хорошо бы запихать их в system journal.
Добавим пару строк в nginx.conf и всё логирование будет перенаправлено в system journal.
А можно комбинировать, писать одновременно логи в файл в дефолтном шаблоне nginx’а и параллельно писать в system journal в json:
Чтобы посмотреть логи в system journal, воспользуйтесь командой: journalctl -f
log_format nginx_json escape=json '{"time_local":"$time_local", "cloud_ip":"$http_x_real_ip", "ip":"$http_cf_connecting_ip", "connection":"$connection", "request_completion":"$request_completion", "status":"$status", "rtime":"$request_time", "rlenght":"$request_length", "content_type":"$content_type", "content_length":"$content_length", "bytes_sent":"$bytes_sent", "body_bytes_sent":"$body_bytes_sent", "raddr":"$remote_addr", "ruser":"$remote_user","upstream_addr":"$upstream_addr", "upstr_resp_time":"$upstream_response_time", "upstr_cache_status":"$upstream_cache_status", "upst_status":"$upstream_status", "gzip_ratio":"$gzip_ratio", "http_x_forwarded_for":"$http_x_forwarded_for", "proxy":"$proxy_host:$proxy_port", "proxy_int_body_length":"$proxy_internal_body_length", "server_proto":"$server_protocol", "rmethod":"$request_method", "uri":"$uri", "args":"$args", "http_referer":"$http_referer", "uag":"$http_user_agent"}';
access_log /var/log/nginx/access.log nginx_json;
error_log /var/log/nginx/error.log;
Получаем максимальную информацию о клиенте в json формате, которую пробиваем средствами nginx. И теперь все это можно легко скармливать всяким эластикам и т.п. без парсинга и прочего.
Хранить логи в файлах не айс — хорошо бы запихать их в system journal.
Добавим пару строк в nginx.conf и всё логирование будет перенаправлено в system journal.
error_log syslog:server=unix:/dev/log;
access_log syslog:server=unix:/dev/log nginx_json;
А можно комбинировать, писать одновременно логи в файл в дефолтном шаблоне nginx’а и параллельно писать в system journal в json:
log_format nginx_json ...
log_format nginx_default ...
access_log /var/log/nginx/access_json.log nginx_json;
access_log /var/log/nginx/access_default.log nginx_default;
Чтобы посмотреть логи в system journal, воспользуйтесь командой: journalctl -f
👍24❤🔥21👏2❤1
Проблема, описываемая в статье, была связана с ndrive — внутренней файловой системой, реализованной с помощью FUSE. Автор расскажет, как он копался в /proc в поисках причины, и узнал, как на самом деле работает wait в ядре.
Читать статью
#гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
Netflix Drive
A file and folder interface for Netflix Cloud Services
❤25👍6👏1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘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++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘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++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
👍4
🧑🎓🧑🎓 Лекторий по SRE: Примеры сбоев
Плавное введение в тематику SRE.
Реальные примеры сбоев, которые повлияли на работу целых компаний, и как с этими сбоями работали.
Это целый курс по теории SRE. Пока там 14 видосов от основ, до детектирования и устранения сбоев, построения отказоустойчивых систем и прочего.
В общем — классная вещь! 👍
#туториал
Плавное введение в тематику SRE.
Реальные примеры сбоев, которые повлияли на работу целых компаний, и как с этими сбоями работали.
Это целый курс по теории SRE. Пока там 14 видосов от основ, до детектирования и устранения сбоев, построения отказоустойчивых систем и прочего.
В общем — классная вещь! 👍
#туториал
🙏15🤩10❤4👏2
🤔 Очередной #дайджест для DevOps-ов
♦️ Terraform module — Self-Hosted масштабируемые GitHub Actions на AWS
♦️ Рекомендации по масштабированию внедрения AWS SDK в вашей организации — стратегии и лучшие практики для ускорения внедрения CDK в вашей организации
♦️ 8 Лучших советов и хитростей по Docker — VirtioFS, Docker Build cache и прочее
♦️ Bitwarden в действии — автоматизация смены ключей и паролей для AWS
♦️ hadolint — интеллектуальный компоновщик Dockerfile, который помогает создавать Docker-образы
♦️ Terraform module — Self-Hosted масштабируемые GitHub Actions на AWS
♦️ Рекомендации по масштабированию внедрения AWS SDK в вашей организации — стратегии и лучшие практики для ускорения внедрения CDK в вашей организации
♦️ 8 Лучших советов и хитростей по Docker — VirtioFS, Docker Build cache и прочее
♦️ Bitwarden в действии — автоматизация смены ключей и паролей для AWS
♦️ hadolint — интеллектуальный компоновщик Dockerfile, который помогает создавать Docker-образы
❤7🥰5😁4👍3🔥3
🍊Подборка лучших статей «Библиотеки программиста» за декабрь: сохраняй в заметки, чтобы не пропустить #самыйсок
🏖️ Чек лист идеального отдыха: 5 психологических техник расслабления
📈 Обзор рынка труда в ИТ: III квартал 2023 года
🔟🏢 ТОП-10 российских IT-работодателей
🤖🔤 Азбука SQL в примерах. Часть 1. Создаем базу данных и первую таблицу
🏆 Самые популярные языки программирования 2023
🌎 ТОП-10: рейтинг лучших зарубежных работодателей в IT
🐍❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
🧠🧩 Зачем айтишнику психолог?
😺🐙✅ Как разобраться в Git: краткая инструкция для джунов
🎄🎁 10 абсурдных подарков программисту на Новый год
✍️ Почему отсутствие технической документации убьёт ваш проект?
🏖️ Чек лист идеального отдыха: 5 психологических техник расслабления
📈 Обзор рынка труда в ИТ: III квартал 2023 года
🔟🏢 ТОП-10 российских IT-работодателей
🤖🔤 Азбука SQL в примерах. Часть 1. Создаем базу данных и первую таблицу
🏆 Самые популярные языки программирования 2023
🌎 ТОП-10: рейтинг лучших зарубежных работодателей в IT
🐍❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
🧠🧩 Зачем айтишнику психолог?
😺🐙✅ Как разобраться в Git: краткая инструкция для джунов
🎄🎁 10 абсурдных подарков программисту на Новый год
✍️ Почему отсутствие технической документации убьёт ваш проект?
❤5👍2