
Если ты пишешь Dockerfile, скорее всего, он работает. Но вопрос не в том, работает ли. Вопрос в другом: будет ли он работать через неделю, на другом сервере, в CI/CD, на чужом железе — и будет ли это безопасно?
Пользователь
Если ты пишешь Dockerfile, скорее всего, он работает. Но вопрос не в том, работает ли. Вопрос в другом: будет ли он работать через неделю, на другом сервере, в CI/CD, на чужом железе — и будет ли это безопасно?
Статья написана для юзверя (в том числе разработчика) с базовыми знаниями работы в операционной системе, консолью, IDE и браузером.
В статье рассматривается инструкция для установки LLM локально на ПК юзверя для обхода проблем работы с удаленными серверами. Также статья поможет в совсем базовом понимании работы с LLM.
Здесь будет рассматриваться IDE VSCode, однако всё нижеописанное актуально и для JB Webstorm или Pycharm (и др).
Всем доброе утро!
Сегодня мы поднимем такую интересную тему, как DevOps Governance в Enterprise.
В современных реалиях не так просто прийти к бизнесу и сказать: "Давайте всё автоматизируем, и всё будет хорошо!" Нет, это так не работает, особенно в крупных компаниях. А если у Вас ещё и нет единого процесса внесения изменений, то каждый будет кто в лес по грибы, кто домой за скатертью-самобранкой приходить и навязывать свои идеи.
Необходимо выстроить процессы, составить набор базовых требований и договориться со всеми участниками цикла разработки. Для этого должен быть механизм, некий процесс, позволяющий выстроить прозрачный путь и показать всем участникам цикла разработки, в том числе и бизнесу, полезность автоматизации в компании — с использованием понятных для всех метрик, на основе зрелости систем.
Я расскажу Вам о том, как мы внедряли матрицу зрелости, сколько внедряли и к каким результатам это привело за несколько лет. Мы с Вами пройдём путь от появления идеи до получения осязаемых результатов, с учётом трудностей внедрения и появления побочных процессов, вроде базовых требований на старте проектов при работе с вендорами.
Почему в современном менеджменте столько глупости? Почему руководители принимают идиотские решения, верят в переработки, садистское отношение к сотрудникам и не умеют думать на 2 шага вперёд?
В прошлый раз мы разобрали, какие различные исторические явления, религия и рабовладение обеспечили массовое распространение корпоративной шизы.
В этот раз рассмотрим, как создающие системы инженеры сменились на сиюминутных барыг.
Думаю, все сталкивались с тем, что языковая модель отказывается отвечать на какие-то вопросы. К счастью, в интернете есть опубликованные так называемые abliterated модели, которые не имеют цензуры и отвечают на любые вопросы. Хоть такую модель можно скачать (16 ГБ файл), запустить её у себя на компьютере достаточно сложно. Проблема в том, что у многих нет видеокарты за 1000 $ или дорогого Apple Mac компьютера последнего поколения с чипом M1 и выше. И многие знакомые, узнав о возможности получить ИИ без цензуры, хотят это попробовать и просят помочь им инструкциями, как это сделать, не покупая видеокарту или Apple Mac компьютер. В итоге я решил выложить инструкцию, как это сделать за сущие копейки через почасовую аренду видеокарты.
Что такое диаграмма последовательности? Из чего она состоит? Где и как пользоваться?
Простым языком о sequence диаграммах.
А еще тут есть интересные возможности, о которых ты мог не знать.
Какие настройки git config
сейчас следует устанавливать по умолчанию? Ниже рассмотрены избранные настройки, менять которые не стесняются даже разработчики самого Git.
Несколько недель назад я написал о настройке Git help.autocorrect и поведал странную историю о том, как её значение стали задавать в децисекундах.
Эта статья заставила меня поразмыслить и о других настройках git config, вероятно, не известных широкому кругу пользователей. Возможно, для этих настроек стоит задать по умолчанию иные значения, чем действуют сейчас.
В этом посте я разберу некоторые (пожалуй, малопонятные) настройки Git, которые сам активировал во всех моих проектах. Я подробно расскажу о них, поясню, как они действуют, и почему их, пожалуй, стоит выставить по умолчанию.
Также оказалось, что большинство из изложенных здесь знаний я почерпнул из общения с людьми, чей повседневный труд заключается в поддержке ядерной базы кода Git.
Привет! Я Лев Хакимов — техлид команды безопасности в Wildberries, а в прошлом — DevOps (хотя говорят, что бывших DevOps не бывает). А ещё я — организатор VrnCTF, CentralCTF, кубка CTF, MiaCTF, OmCTF. Автор дисциплин DevOps в ВГУ и ИТМО. В этой статье:
расскажу про Jenkins и его экосистему (для тех, у кого Jenkins нет, либо он мало с ним работал, это будет особенно полезно);
покажу, как мыслит и действует злоумышленник;.
разберу проблемы безопасности и уязвимости в Jenkins;
научу, как защититься от угроз, выстроив тактику защиты;
познакомлю с хорошими практиками по базовой конфигурации, если вы ещё не сталкивались с разворачиванием Jenkins;
сформирую чек-лист, как сделать Jenkins безопаснее. С его помощью вы сможете посмотреть на свою инсталляцию и понять, защищены ли вы от большей части самых распространённых атак.
В прошлой статье я описал своё субъективное видение на теорию обучения взрослых людей. Сегодня хочу поделиться некоторыми практическими приёмами, которые использую при обучении программированию.
Делюсь лайфхаком по уменьшению размеров Docker-образов. Как-то нам попалась на поддержку и развитие CRM-система, написанная на Ruby...
Обновили Ruby-пакеты и под них код, написали Dockerfile. Первая сборка была удручающей: образ в 2Гб. Это нормальный размер, если ты собираешь образ с Torch и другой ML-штуковиной, но CRM - нет. В результате дальнейших действий, удалось сократить размер образа до 200Мб.
На устройствах интернета вещей (IoT) зачастую слишком мало ресурсов, и их не хватает, чтобы подтягивать и использовать тяжеловесные образы Docker. В этой статье будет показано, как можно уменьшить образ Docker на 36-91% при помощи инструментов patchelf
и strace
, не перекомпилируя при этом контейнеризованные приложения. Также рассмотрим, как создавать минимальные образы для собственных приложений, написанных на Rust, Go, C/C++.
Недавно возникла необходимость предоставить нашему QA-отделу один из модулей на Python в виде автономного бинарика, который не требовал бы установки и настройки окружения. Следуя за необходимостью образовался интерес какие существуют для этого средства.
Один из вариантов был использовать Docker, но я от него отказался по причине того, что окружение для Docker тоже надо будет готовить. Потом надо будет правильно запуск этот образ и правильно с ним взаимодействовать. Конечно, для упрощения можно использовать docker compose, но это не сильно снижает сложность для конечного пользователя. Кроме того, образ будет достаточно большим.
Поэтому я после некоторых размышлений обратился к таким инструментам как Python Compilers, а именно - Nuitka и PyInstaller и провёл небольшое исследование на предмет
Оба инструмента упаковывают Python-приложение со всеми зависимостями в один пакет таким образом, что конечный пользователь приложения может обойтись без установки Python на свою машину.
Есть два варианта того, что мы получаем от их работы в качестве результата (кроме эмоциональных ощущений):
В мире программирования, особенно при разработке на Python, часто возникает необходимость не просто выводить статические строки, но и динамически встраивать в них данные, чтобы отобразить информацию пользователю в удобном и понятном виде. Это требует использования специальных методов, которые позволяют форматировать строки таким образом, чтобы они могли включать переменные, результаты вычислений и другие динамические элементы.
Эти методы как раз и называются - форматированием строк.
Не задумывались ли вы когда-нибудь над тем, чтобы знать о каждом входе на ваши сервера? Меня охватила такая же паранойя: а вдруг, когда я сплю, на мой сервер заходит домовой и творит там ужасы? Хотя логин на наши сервера и запрещен по паролю, а SSH-ключи есть только у меня, в любом случае это вызывает большие опасения.
В этой статье мы развёрнем через Terraform несколько серверов в Yandex.Cloud, а затем при помощи Ansible настроим необходимый софт на каждом сервере. У нас будет основной сервер c Loki (система агрегирования логов) и Grafana (инструмент для визуализации данных), на серверах, которые мы хотим отслеживать, будет установлен Promtail (агент для сбора и отправки логов). Мы разберёмся с тем, как отслеживать входы на сервер, а затем в удобном формате отправлять об этом уведомления в чат с помощью вышеуказанных сервисов.
Россия до сих считается часовой державой. Коллекционеры по всему миру собирают архивные модели, а зарубежные часовые производства изучают опыт российских коллег. Но есть одно но — все держится на советском наследии. И отсюда вопрос, возможно даже риторический: как сохранить такие профессии, где опыт и навыки передаются традиционным образом: от мастера к подмастерью? К примеру, в производстве механических наручных часов.
В процессе улучшения подходов к менеджменту зависимостей компонентов нашей Операционной Системы появилась необходимость перейти от монолитной статической сборочной системы на основе CI/CD инструментов к динамическому распределённому подходу с порождением сотен и тысяч автономных задач. Как выяснилось в процессе, это не самый радужный сценарий использования систем автоматизации, но вполне достижимый.
В результате был спроектирован и внедрён динамический сборочный конвейер на базе Jenkins, масштабируемый как горизонтально, так и вертикально. В статье расскажем как он устроен, решение каких проблем потребовало адресной оптимизации по скорости выполнения, и какие подводные камни повсплывали.
Также частично раскроем информацию о том, как мы выполняем распределённую сборку дистрибутивов.
Ожидается много текста и примеров кода.
Если вы занимаете руководящую должность, очень важно регулярно проводить индивидуальные встречи с сотрудниками из своей команды. “Зачем, если я и так вижу их каждый день, и мы обсуждаем все, что происходит?”. Эти встречи не только помогают понимать, как чувствуют себя коллеги, но и дают возможность откровенно дать и получить обратную связь без посторонних. А также предполагают, что оба участника будут готовиться к собранию, рефлексируя насчет прошедшего периода после предыдущей встречи.
Я Алексей Анисимов, в настоящий момент управляю юнитом разработки в hh.ru и уже 10 лет руковожу разными людьми и командами в области ИТ. За это время я провел большое количество встреч 1 на 1 с сотрудниками — попробовал различные варианты, сталкивался с трудностями и совершал ошибки. Все это в результате помогло мне выработать для себя определенные принципы проведения индивидуальных встреч, которыми я хочу поделиться в статье.
Хочу поделиться с сообществом простым и полезным шаблоном скрипта-обёртки на bash для запуска заданий по cron (а сейчас и systemd timers), который моя команда повсеместно использует много лет.
Сначала пара слов о том зачем это нужно, какие проблемы решает. С самого начала моей работы системным администратором linux, я обнаружил, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился мой парк серверов и виртуальных машин, тем больше я получал абсолютно бесполезных почтовых сообщений "From: Cron Daemon". Задание завершилось с ошибкой - cron напишет об этом. Задание выполнено успешно, но напечатало что-нибудь в STDOUT/STDERR - cron всё равно напишет об этом. При этом даже нельзя отформатировать тему почтового сообщения для удобной автосортировки. Сначала были годы борьбы с использованием разных вариаций из > /dev/null
, 2> /dev/null
, > /dev/null 2>&1
, | mail -E -s '<Subject>' root@
.
Как не дать производству тебя нагреть и заставить его сделать качественно. Инсайд от производственника и чек-лист от профессионального заказчика.