en
Feedback
Yet Another Engineer

Yet Another Engineer

Open in Telegram
388
Subscribers
-124 hours
+17 days
+1530 days
Posts Archive
Хватит эксплуатировать животных. Частый use case cat в скриптах - это вывести содержимое файла и грепнуть по нему. На самом д
Хватит эксплуатировать животных. Частый use case cat в скриптах - это вывести содержимое файла и грепнуть по нему. На самом деле это лишняя работа, так как нужно запустить процесс cat, затем передать вывод в неименнованный канал (он же pipe |), запустить grep, прочитать данные и обработать их. Все это можно сделать просто с помощью grep. С использованием cat:
$ cat dir1/dir2/dir3/file.txt | grep foo
foo
foobarzoo
Тоже самое просто с grep + вы можете рекурсивно (-r) искать текст в файлах:
$ grep -r 'foo' dir1/
dir1/dir2/dir3/file.txt:foo
dir1/dir2/dir3/file.txt:foobarzoo
dir1/dir2/file.txt:foo
dir1/dir2/file.txt:foobarzoo
dir1/file.txt:foo
dir1/file.txt:foobarzoo
#linux

График ping в консоли. Нашел интересный проект: https://github.com/orf/gping/tree/master Позволяет запускать пинг сразу неско
График ping в консоли. Нашел интересный проект: https://github.com/orf/gping/tree/master Позволяет запускать пинг сразу нескольких адресов и рисовать по ним графики. Пример команды (результат на скрине):

gping -n 0.2 -b 60 yandex.ru google.com
Как установить: # M
ac
brew install gping

# RedHat-based
sudo dnf copr enable atim/gping -y && sudo dnf install gping

# Debian-based
echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ stable main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg  https://azlux.fr/repo.gpg
sudo apt update
sudo apt install gping

# Docker
docker run ghcr.io/orf/gping:gping-v1.14.0


#l
inux #network

История UNIX. Всем любителям UNIX систем, рекомендую к просмотру фильм История Linux и UNIX. Фильм качественный, смотрится на одном дыхании, много интересных фактов и деталий того времени. Так же есть неплохая книга от первоисточника на русском - Брайан Керниган. Время UNIX. A History and a Memoir. #linux

Какой вид образовательного контента самый эффективный для вас?
Anonymous voting

VK Kubernetes Conf 2023. Когда: 16 ноября 2023, 14:00 Москва (онлайн + офлай) Очередная рекламная конфа, теперь от VK. Вообще считаю такие мероприятия не очень то и полезными, но если есть офлайн, то почему бы не сходить и не послушать + покушать угощений и пообщаться с коллегами, к тому же - это бесплатно. Есть интересные темы даже: - Использование единой платформы разработки для повышения безопасности K8s - Как сократить время развертывания Managed K8s до времени приготовления чашки капучино - Экскурсия по матрицам угроз для контейнеров и Kubernetes - Дискуссия: 10 лет (почти) Kubernetes: что мы узнали за это время и как можем это использовать? Регистрация тут: https://mcs.mail.ru/events/vk-kubernetes-conf_2 #конференция #k8s

Python 3.12 - удобней, красивей, быстрей. Классный обзор python 3.12 от Диджитализируй: https://www.youtube.com/watch?v=dxBsWXq86Zc Что улучшили: - f-strings - Типизацию и дженерики - Псевдонимы типов - Производительность - Полезности: -m uuid, itertools.batched, path.walk #python

Какие ваши любимые Youtube IT-блогеры / каналы? 📺 Вот кого смотрю я: 1. Winderton 2. AlekOS 3. Антон Павленко 4. ADV-IT 5. Сергей Балакирев 6. Soer 7. IT Борода 8. Между скобок 9. Разрабы 10. Jacob Sorber Если знаете еще хорошие каналы, пишите в комментарии 🙂 #youtube

Кто такой девопс? 🤔 В первом вебинаре из цикла тренировок по DevOps вы узнаете кто такой девопс-инженер и чем он занимается. В целом я согласен с докладчиком и советую посмотреть тем, кто начинает изучать девопс, если вы уже в профессии, то ничего нового не узнаете. В конце, как я люблю, докладчик дал домашнее задание, оно неплохо подойдет начинающим. Тренировки по DevOps. Лекция 1: Кто такой DevOps. Домашнее задание. #образование

Для тех кто смотрит с телефона, вот так это выглядит на десктопной версии telegram. Ждем когда в мобильную версию добавят.
Для тех кто смотрит с телефона, вот так это выглядит на десктопной версии telegram. Ждем когда в мобильную версию добавят.

Подсветка синтаксиса в Телеграм. 🤩 P.S. Дубль 5, получилось 😂

#include <stdio.h>

int main(int argc, char const *argv[])
{
    char *subs = "подписчики";
    printf("Hello, %s!\n", subs);
    return 0;
}

Коллекция старых OS и игр. Нашел интересный сайт, который запускает образы старых ОС и игр прямо в браузере: https://www.pcjs
Коллекция старых OS и игр. Нашел интересный сайт, который запускает образы старых ОС и игр прямо в браузере: https://www.pcjs.org/ Открыл прекрасный Windows 95, прошел уровень в Wolfenstein 3D 🤬, довольно занятно Для кого-то из вас будет ностальгией по детству, кто-то сможет впервые прикоснуться к истории #offtop

Друзья, напоминаю что тренировки по DevOps начинаются 30 октября, кто не зарегистрировался - вперед 😄 https://yandex.ru/yaintern/training/devops-training #образование

Траблшутинг. Запуск скрипта через SSH. Часть II. 🪄 Проблема оказалась не в самом скрипте deploy.sh, а в команде запуска: ssh ${USER}@${HOST} "export "VERSION=${VERSION}"; setsid /bin/bash -s " < ./backend/deploy.sh Почему-то именно на одной машине эта команда вела себя странным образом и завершалась с 0 кодом после выполнения одной команды из под sudo. Если убрать sudo, то все команды выполняются без проблем. Я подключился к серверу и выполнил команды из скрипта под пользователем деплоя - проблем нет. У пользователя есть sudo права, в /etc/sudoers прописано NOPASSWD: ALL. В общем, корень проблемы так и не удалось найти, но нашел обходное решение. Помимо первой команды удаленного запуска скрипта через ssh, я нашел еще парочку (ссылка на источник). В конечном счете с новым способом запуска скрипта все заработало: ssh ${USER}@${HOST} "export "VERSION=${VERSION}"" $(< ./deploy.sh)” Казалось бы, поменялся лишь способ запуска, но при этом помогло и стали выполняться все sudo команды, хотя никаких изменений на самой VM не было. Магия 🔮 #troubleshooting

Траблшутинг. Запуск скрипта через SSH. Часть I. Дебаг очередной проблемы, которая случилась у студента курса по DevOps, где я работаю наставником. Вводные. На курсе мы деплоим приложение через Gitlab CI/CD с помощью bash-скрипта (начало курса, дальше будет лучше 😅), и ровно у одно студента произошла странная проблема: 1. Есть команда: ssh ${USER}@${HOST} "export "VERSION=${VERSION}"; setsid /bin/bash -s " < ./backend/deploy.sh. У всех студентов, в том числе и у меня, отрабатывает нормально - экспортирует энвы и запускает локальный скрипт ./deploy.sh на удаленном сервере. 2. Но у студента выполняется только первая команда с sudo и скрипт выходит с 0 кодом ответа. Вот скрипт: #!/bin/bash set -xe sudo cp /home/someuser/backend.service /etc/systemd/system/backend.service || true sudo rm -f /home/someuser/backend.jar || true curl -u ${NEXUS_REPO_USER}:${NEXUS_REPO_PASS} -o backend.jar ${NEXUS_REPO_URL}/com/yandex/practicum/devops/backend/${VERSION}/backend-${VERSION}.jar sudo cp ./backend.jar /home/someuser/backend.jar || true sudo systemctl daemon-reload sudo systemctl restart backend.service Какие у вас идеи? 🙂 Вечером расскажу как решил это, но сразу скажу, истинной причины такого поведения я не разыскал, как бы не старался. #troubleshooting

Да в чем же дело или очередной дебаг. Часть II. 😎 Самые опытные наверняка догадались, что дело было в pam.d и модуле pam_limits.so. Теперь расскажу как я пришел к этому. 1. Первым делом я запустил команду на серверах через strace и сохранил вывод в файлы: strace -o strace.log sudo -u someuser bash -c "ulimit -s” 2. Начал анализировать два файла и увидел что системный вызов prlimit64() для первого сервера был вызван один раз: prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 Когда для второго сервера 3 раза: prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 prlimit64(0, RLIMIT_STACK, {rlim_cur=132096*1024, rlim_max=RLIM64_INFINITY}, NULL) = 0 3. Из этого я сделал вывод, что файл /etc/security/limits.d/80-user.conf не читается на первом сервере, что и подтвердил strace - системный вызов openat(AT_FDCWD, "/etc/security/limits.d/80-user.conf", O_RDONLY) = 4 был только на втором сервере. Окей, причина такого поведения ясна, но почему же не читается этот файл? Тут я начал гуглить и нашел явную связь лимитов с pam, что нужно связывать поведение либо всей системы, либо отдельных команд с проверкой лимитов из директории /etc/security/limits.d с помощью модуля pam_limits.so. Далее осталось добавить pam_limits.so в /etc/pam.d/common-session-noninteractive и лимиты заработали. Сделал это через pam-auth-update. P.S. А меня еще хаяли, зачем я про strace на собеседованиях спрашиваю 👮‍♂️ P.S.S. Делать еще такие разборы траблшутинга? 👍 - да 👎 - нет #troubleshooting

Да в чем же дело или очередной дебаг. Часть I. 🟡 Этот пост из серии “за что я люблю свою работу”. Вводные: Запускаешь команду sudo -u someuser bash -c “ulimit -s” на одном сервере - процесс получает 8Kb размер стека, а на другом сервере получает 128Kb. На этих серверах есть файл /etc/security/limits.d/80-user.conf с содержимым: someuser soft core 10485760 someuser soft stack 132096 someuser - nofile 256000 Как бы вы дебажили это? Ответ с разбором будет сегодня вечером. #troubleshooting

Заключительная часть собеседования у Антона Павленко. 😎 1️⃣ часть тут. 2️⃣ часть тут. 3️⃣ часть тут. Ответы на вопросы этой
Заключительная часть собеседования у Антона Павленко. 😎 1️⃣ часть тут. 2️⃣ часть тут. 3️⃣ часть тут. Ответы на вопросы этой части ищите тут. #собеседование #linux #devops

YaC/e - Конференция про образование от Яндекс. 👨‍🎓 15 ноября с 9:30 до 17:00 по МСК Интересные темы докладов: * Как технологии делают образование более эффективным? * Мысленный эксперимент: каким может быть университет будущего? * Этика искусственного интеллекта, или зачем IT нужно гуманитарное знание? * Нейросети, GPT и прочие технологии: в образовании и вокруг него. * Как самостоятельно освоить новые навыки в разработке? * Как новые технологии меняют онлайн-образование? * Кто такой родитель-тьютор: помогаем ребёнку в обучении * Искусственный интеллект и образование: возможен ли тандем? * На каких технологиях EdTech-компании и университеты строят современное образование? * Как устроено IT-образование в регионах? * Искусственный интеллект в университете: отключить нельзя использовать? Вообще я очень скептически отношусь к новейшим технологиям, особенно в образовании. Послушаю, что скажут умные люди, но я считаю что технологии ведут к упрощению и, вследствии, деградации человека. Регистрация тут: https://yace.yandex.ru/ #образование