TGViewer
Channel Public Channel
Merion Academy

Merion Academy

@it_knowledge_base

Самое важное про IT на доступном языке.
Сотрудничество: @olegpohl
Служба поддержки: https://t.me/merion_academy_bot
Subscribers
9.01K
Photos
476
Videos
84
Links
669

Showing posts older than #1189 · Back to latest

Older Posts 20 shown
Post #1188 3.26K
Помните все кричали, что вайбкодинг полностью заменит программистов? 😢

Сейчас те, кто так делал, разгребают легаси, дыры в безопасности и кучу технического долга.

Сам автор термина «vibe coding» Андрей Карпатый от него отказался в пользу нового подхода.

Что пошло не так и какая из этого мораль - подробно разобрали в статье в нашей Базе знаний, заглядывай ☕️
  • 🔥 7
Post #1187 3.22K
Все верно, знатоки 😉

Проблема действительно была в CI/CD. Система была настроена так: если сборка падала, она просто брала последний успешный артефакт из кэша и молча катила его в прод. Разработчик исправил баг, запушил, сборка прошла - но артефакт подменился старым, а новый никто не заметил.

Полгода прод работал на старом коде, баг мирно спал и не проявлялся. Потом CI/CD сбросил кэш, взял свежий артефакт - и баг вылез снова.

Как думаете, кого наказали за этот косяк?

😱 — разработчика, который не проверил, что в прод улетел его фикс
👀 — инженера по CI/CD, который настроил эту магию с кэшем
😄 — тимлида, который подписывал релиз, не глядя
  • 👀 14
  • 😱 11
Post #1186 3.2K
Знатоки, пятничка самое время новой загадки 🙈

Однажды команда разработчиков весь день не могла понять, почему прод падает с ошибкой, которую по логам «исправили год назад». Все работало, потом банально перезапустили сервер - и старый баг вылез снова.

Разработчик, который его чинил, поклялся, что коммитил исправление. CI/CD говорил, что сборка прошла. Тимлид был уверен, что все ок.

Но баг вернулся 👋

Вопрос: что произошло?

😄 — кто-то зафорсил пуш и случайно перетер правильный коммит
😱 — разработчик закоммитил исправление, но забыл запушить его на сервер
👀 — CI/CD делал вид, что собирает код, а на самом деле просто копировал старую версию из кэша
  • 👀 72
  • 😱 13
Post #1185 3.04K
🐌 Объясняем за 30 секунд:

Контейнер = коробка с приложением и всем, что ему нужно (либы, версии, конфиги). Запускается одинаково везде - у тебя на ноуте, у коллеги на маке, в проде на Linux.

Зачем оно тебе:

• Конец историям «у меня же работает»
• Развернуть сервис - это docker run, а не пляски с зависимостями
• CI/CD, K8s, микросервисы - все на этом стоит

Если ты в этом не шаришь, приходи учиться 📎
  • ❤‍🔥 14
  • 👀 3
Post #1184 2.87K
Хей, ребят! 👋 Новая неделя - новое видео Сурена Хореняна:
зависимости через pip или через uv?

Управляйте зависимостями проекта через uv, откажитесь от простого pip, так как он требует больше действий и менее гибок.


Изучайте, сохраняйте и не забудьте ознакомиться с новыми вводными уроками курса Python с нуля 😉
  • 🔥 3
Post #1183 3.27K
Коммит потерял? Локальные правки горят? Прод сломался от твоей ветки? 😢

Изучи внимательно и сохранить не забудь:

git reflog - покажет все коммиты, даже «удаленные». Восстановить можно почти все.

git stash - спрятать незакоммиченные правки, чтобы переключить ветку.

git restore -s - откатить отдельный файл к нужному коммиту.

git cherry-pick - забрать один коммит из чужой ветки, не мержа все подряд.

git bisect - бинпоиск по коммитам, чтобы найти, где именно ты все сломал.

Не знаешь чем заняться на выходных - загляни на бесплатные вводные уроки 🎵
  • 🔥 22
  • 👀 4
  • 🤝 4
Post #1182 3.29K
Все знают про Docker, Kubernetes и Terraform. А эти 5 неочевидных инструментов упускают, и зря, потому что они сильно упрощают жизнь 🙈

1) k9s / https://github.com/derailed/k9s

Вот представь, сидишь и вбиваешь kubectl get pods, потом kubectl describe pod, потом kubectl logs -f, потом снова kubectl get pods, чтобы посмотреть, как там твой деплой. И так целый день. Или не надо представлять и уже знакомо?

Встречай k9s - это терминальный UI для кубера, где все поды, сервисы, деплойменты, логи и шеллы доступны в две клавиши. После недели использования возвращаться к голому kubectl это как пересесть с автомата на коробку (в которой только первая передача).


2) dive / https://github.com/wagoodman/dive

Собрал образ, а он внезапно весит 1.2 ГБ. Открываешь Dockerfile, смотришь, вроде ничего лишнего. Почему гигабайт-то? А никто не знает, потому что Docker не показывает, что реально лежит внутри его слоев.
dive показывает каждый слой, что в нем поменялось и сколько места занимает каждый файл. За полчаса с ним можно срезать образ в 2–3 раза, просто увидев, что apt не почистил кеш или что node_modules протекли в финальный слой.


3) direnv / https://github.com/direnv/direnv

Бывает заходишь в проект, делаешь source .env, потом идешь в соседний и забываешь, что в шелле все еще переменные от предыдущего. А через два часа ловишь, почему миграция накатилась на прод вместо стейджа.

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


4) act / https://github.com/nektos/act

Или такая ситуация: написал workflow для GitHub Actions, пушнул, все упало. Поправил, пушнул, опять упало. Через 20 коммитов с названием "fix ci" наконец заработало, но история выглядит так, будто ты учился программировать прямо в main.
act запускает GitHub Actions локально в Docker. Поправил yaml - прогнал у себя - увидел ошибку - поправил снова. Без лишнего фарша в истории и без необходимости объяснять тимлиду, почему ты заспамил репу.


5) sops / https://github.com/getsops/sops

Секреты в git коммитить нельзя - это все знают. Но как тогда хранить пароли от баз и API-ключи рядом с кодом, чтобы не таскасть их через тысячу чатиков и не разворачивать ради двух токенов полноценный Vault?
sops шифрует только значения в YAML/JSON/env, оставляя структуру читаемой. Diff в пулл-реквесте остается осмысленным, ключи лежат в KMS/age/PGP, а .enc.yaml спокойно живет в репозитории. Особенно заходит в небольших командах, где Vault - это как из пушки по воробьям.


Не забудь сохранить, чтобы упростить себе жизнь 😏

И заглядывай на бесплатные вводные уроки с Филиппом на курсе DevOps-инженер с нуля.

#спросиуспикераMerion
  • 👀 6
  • 🔥 5
  • ❤‍🔥 3
Post #1181 3.09K
Чек-лист: проверь, готов ли ты к собесу на junior DevOps?

Сохрани и пройдись по списку перед подачей резюме. Если хотя бы 2 пункта вызывают «эээ…» - собес ты завалишь 🪖

Минимум, который спрашивают почти везде:

• Linux (без него никуда)
• Сети - что происходит, когда ты вбиваешь URL в браузер
• Git - не только pull/push, а еще rebase и решение конфликтов
• Docker - образ, контейнер, том, сеть
• CI/CD - собрал ли ты свой пайплайн хоть раз
• YAML - да, без шуток, у всех болит

Если в этом что-то плаваешь, приходи закрыть пробелы 😏

➡️ Все курсы Merion Academy
  • 🔥 5
Post #1180 2.94K
Ловите легкую понедельничную задачу, знатоки 🤵

Перенесемся в середину 90-х. На один крупный завод, где производство не останавливается ни на минуту. По цеху разбросаны терминалы, подключенные к мейнфрейму - рабочие вбивают данные о деталях, движении запчастей, графиках.

В один прекрасный день сисадмин получает звонок с цеха. Голос в трубке спокойный, но уверенный:

Я не могу войти в систему, когда стою.


Сисадмин проверяет питание, экран, пароль. Все ок.

Рабочий повторяет:

Нет, вы не понимаете. Когда я сижу, я захожу. Все работает. А когда встаю - не могу.


Сисадмин пытается объяснить, что между стулом и клавиатурой нет никакой связи. Но рабочий стоит на своем. Тогда админ сдается и идет в цех.

Он садится, вводит пароль рабочего - все работает.

Админ: Видите?
Рабочий: А теперь выйдите, встаньте и попробуйте еще раз.


Админ выходит из системы, встает, вводит тот же пароль. Выдает ошибку. Вводит еще раз - снова ошибка. Он в недоумении. Как и пол цеха рабочих, стопившихся за его спиной 😄

Вопрос: что оказалось причиной?

😄 — на терминале стоял датчик движения, который блокировал ввод, если пользователь не сидит
🔥 — кто-то переставил местами две клавиши на клавиатуре, и сидя люди печатали вслепую, а стоя смотрели на руки
👀— в полу была спрятана магнитная лента, которая стирала пароль при попытке встать

Ответ в комментах 😉
  • 🔥 81
  • 👀 9
Post #1179 2.87K
Хэй, ребят! Такие нарезки из наших видосов выходят еще в TikTok! 🙈

Если вам удобно смотреть их там, то подписывайтесь!

➡️ Мы в TikTok
  • 🔥 8
  • ❤‍🔥 3
Post #1178 3.02K
Новый видос от Сурена на тему: SQL запрос к sqlite: пример с инъекцией и параметрами ☕️

Важно правильно формировать запросы к базе данных: прямое форматирование SQL допускает инъекцию и может привести к потере данных или утечке.
Поэтому необходимо передавать аргументы в запрос отдельно от SQL строки.


Сурен Хоренян - автор курса Python-программист с нуля, на котором, кстати, мы тоже обновили бесплатные уроки!
Добавили интерпретатор кода, ничего устанавливать не нужно, можно сразу писать код!

➡️ Залетай потестить

#спросиуспикераMerion
  • ❤‍🔥 5
  • 🔥 2
Post #1177 2.85K
Как гений и параноик, которого боятся приглашать на конференции, создал движение свободного ПО, написал Emacs, придумал лицензию GPL и поссорился с половиной IT-мира? 🤔

Да да, мы на намекали в прошлом посте. Это Ричард Столлман - человек, без которого не было бы ни Linux, ни Android, ни GitHub в том виде, в котором мы его знаем.

В новом видео прошлись по всей истории:

• Почему его считают безумцем, но его идеи о приватности уже не кажутся такими странными
• Как история с закрытым драйвером принтера привела к созданию GNU и «копилефту»
• Почему он носит с собой плюшевого гну и отказывается от смартфонов
• За что его ненавидят корпорации и почему без него не было бы опенсорса

Как всегда - без занудства, с мемами и историческими перлами 😄

Где смотреть:

😁 YouTube
😁 VK
YouTube Ричард Столлман: самый неудобный человек в IT 🚀 Бесплатный вводный урок курса "Онлайн-курс по Linux": https://wiki.merionet.ru/merion-academy/course/kurs-po-linux?utm_source=YT&utm_medium=own&utm_campaign=stallman Рассказываем про Ричарда Столлмана: кто он такой, как он изменил IT индустрию, причем…
  • 🔥 9
  • 😍 2
  • ❤‍🔥 1
Post #1176 2.56K
Знакомьтесь: основатель движения за свободное ПО, человек, подаривший нам GNU, GPL и концепцию «copyleft». Но что еще скрывает этот бородатый гений?😢

10 фактов о Ричарде Столлмане, которые тебя шокируют:

1. Полиглот со своей методикой
RMS знает английский, французский, испанский и даже индонезийский.

Его метод изучения:
— учебники + произношение;
— детские книжки → подростковые;
— письма на новом языке;
— и главное: не говорить, пока не освоишь все нужные конструкции. Никакого «моя твоя понимать»!


2. Emacs - дом, работа и храм.

Любимое приложение - GNU Emacs. Там он читает почту, редактирует сайт и проводит максимум времени. Консоль - в приоритете, но GUI не демонизирует.


3. Lisp навсегда.

А вот Clojure и Python, которые ему называли «похожими на Lisp», не зашли. Фундаментальной схожести нет, считает RMS.


4. C++ - мимо.

«Уродливый язык» - и тут Столлмана поддерживает сам Линус Торвальдс (редкий момент единства).


5. Java зашла, C - база.

Писал на Java, и даже понравилось. C знает отлично. А вот новые языки после нулевых прошли мимо - перестал активно программировать, ушел в общественную миссию.


6. Идеальный дистрибутив = без проприетарных компонентов.

Технические характеристики - не главное. Главное - чистота лицензий.


7. Написал песню.

Музыка народная, слова свои. О будущем, где свободное ПО победило «грязные» лицензии.


8. Анекдот из 90-х.

Исполнил песню при тусовке. Кто-то крикнул: «Классно, спой это Ричарду Столлману!»
— Так я и есть Ричард Столлман
😄


9. Написал рассказ «Право прочесть» по-русски.

Рассказ-антиутопия о мире, где чтение книг - преступление. Написан как учебник истории будущего. Обязательно найдите и прочитайте.


10. Не программирует, но меняет мир.

С 2000-х почти не пишет код. Но его идеи, лицензии и принципы работают до сих пор.


Наверное, именно так выглядит человек со строчкой «многозадачный» в резюме 😄
  • 🔥 21
  • 😍 1
Post #1175 2.68K
Как думаете, что будет дальше? 🤭

🤝 - Серегу примут на работу сразу сеньором
🔥 - Серега останется без ответа и будет искать другие пути устроиться
😄 - выяснится, что Олег левая рука СЕО и не может помочь
  • 🔥 13
  • 🤝 5
Post #1174 2.9K
Да, зеленые, выходные можно провести по-разному: кто-то путешествует, кто-то учится 🤵

На всякий случай, напоминаем, что добавили в бесплатный модуль курса Linux новые интерактивные уроки: эмулятор терминала и процесса установки Linux на виртуальную машину.

Найти можно внутри нашей платформы, если уже зарегистрирован.
Если еще нет ➡️ держи ссылочку!
  • ❤‍🔥 4
Post #1173 2.93K
Все знают про axios, lodash и dayjs. Они практически во всех проектах есть и ты их так или иначе видел.
А вот эти пять штук обычно проходят мимо, хотя могут пригодиться ❤️

1. ts-pattern / https://github.com/gvergnaud/ts-pattern

Вот представь, пишешь свитчи на кучу кейсов, через месяц добавляешь новый кейс, а где-то в другом файле про него забываешь. А потом баг ловят пользователи. Или не надо представлять и уже знакомо?

ts-pattern дает записать всю эту логику одним красивым выражением, а TypeScript сам напомнить про твою криворукость, если ты не обработал какой-то вариант. Особенно кайфово с дискриминированными юнионами по типу статусов заказа или типов событий.


2. defu / https://github.com/unjs/defu

Знаешь, как Object.assign и спред работают с вложенными объектами? Никак. Если у тебя есть { ui: { theme: 'dark', size: 14 } }, а кто-то из коллег накосячил и прилетает { ui: { theme: 'light' } }, то после слияния твой size просто испарится, потому что весь ui заменится целиком.

defu сливает рекурсивно по всем уровням, как ты бы и сам хотел. Незаменимая штука, если пишешь библиотеку, SDK или любой инструмент с настройками.


3. execa / https://github.com/sindresorhus/execa

Запускал с помощью ноды git, ffmpeg или любой shell-скрипт? Тогда знаешь, что нативный дочерний процесс – это боль, страдания и колбэки из 2010 года. execa оборачивает все в нормальный async/await, по-человечески ловит ошибки и даёт удобные пайпы между процессами.

Используется внутри кучи популярных CLI-тулзов. Следоватлельно, это говорит о многом.


4. type-fest / https://github.com/sindresorhus/type-fest

Готовая коллекция TypeScript-типов на любой случай жизни. Нужен Partial по всем вложенным уровням? Есть. Сделать массив непустым? Есть. Преобразовать snake_case в camelCase прямо на уровне типов? Тоже.

Короче, прежде чем в десятый раз писать свой DeepPartial, загляни сюда. Скорее всего его уже написал автор либы за тебя.


5. emittery / https://github.com/sindresorhus/emittery

Нужна шина событий внутри приложения, где один модуль кинул, другой подписался? Тащить ради этого Redux или нативный EventEmitter из ноды – это как везти хлеб на дачу грузовиком. emittery решает задачу с минимумом кода и при этом умеет полезные штуки.
Например, типизирует события через TypeScript и нормально работает с async-обработчиками, чего стандартный EventEmitter не умеет в принципе. От того же автора, что и type-fest, кстати.


Никита, кстати еще и сценарист наших роликов, которые вы так любите 🙈

#спросиуспикераMerion
  • 🔥 1
Post #1172 3.05K
Что скрывает история главной ОС планеты? 🎰

Android начинался не как система для телефонов, а как операционка для фотокамер. И только случайность и 50 миллионов долларов от Google превратили его в то, что у тебя в кармане.

В новом видео прошлись по всей истории Android: от провального прототипа до миллиардов устройств.

Смотри, чтобы узнать:

• Почему выход iPhone заставил Android переписывать все с нуля за несколько месяцев
• Как Java чуть не уничтожила платформу и кто пришел на смену
• Из каких слоев состоит любая Android-система от ядра до интерфейса
• Почему разработчики переходят на Kotlin и при чем тут Jetpack Compose

Как всегда - без занудства, с мемами и историческими перлами 😄

Где смотреть:

😁 YouTube
😁 VK
  • 🔥 12
  • ❤‍🔥 2
Post #1171 3.2K
Знатоки, с пятничкой! Время разобрать еще один абсурдный случай 😢

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

int day = Convert.ToInt16(DateTime.Now.ToString("dd"));
switch(day)
{
case 1: num = "st"; break;
case 21: num = "st"; break;
case 31: num = "st"; break;
case 2: num = "nd"; break;
case 22: num = "nd"; break;
case 3: num = "rd"; break;
case 33: num = "rd"; break;
default: num = "th"; break;
}


Вопрос: что здесь не так?

👀 — окончания перепутаны местами: "st" для 2, "nd" для 1
😄 — прошлый программист считал что в месяце 33 дня
🤝 — забыли про 0 и отрицательные числа

Ответ в комментах ❤️
  • 🤝 6
  • 👀 1
Post #1170 3.12K
Выкатили новый курс, пока все кайфовали на шашлыках 😱

Даааааа, это GitLab CI/CD - без него DevOps-инженеру сейчас никуда.

На курсе освоишь полный цикл непрерывной интеграции и доставки с GitLab. Научишься строить пайплайны, настраивать SAST, управлять реестрами пакетов и контейнеров, автоматизировать тестирование и деплой.

➡️ Начни с бесплатного вводного модуля, там тебя ждет:

1️⃣Знакомство с автором и обзор темы: зачем и кому нужен CI/CD
2️⃣Практическая задача: развернешь GitLab через Docker Compose и сразу увидишь, как работает пайплайн
3️⃣Тест: проверишь себя и закрепишь знания
4️⃣Несколько уроков курса английского для IT
5️⃣Вводная лекция из интенсива по карьере

Шашлычный промик уже сгорел, но при регистрации на вводный модуль получишь скидку 45% на полный курс 💗

📎 Регистрируйся и погнали учиться!
  • 🔥 9
  • ❤‍🔥 2
Post #1169 3.27K
Как думаешь, что может обрушить интернет по всему миру быстрее, чем ты успеешь перезагрузить роутер? ❓

Оказывается, не хакерская армия и не правительство. А программа размером меньше этого абзаца.

Студенческие эксперименты, забытые обновления и вирусы, которые работали годами незаметно.

Смотри наш новый видос, чтобы узнать:

• Как одна строчка кода случайно положила десятую часть интернета
• Почему авторы первого массового вируса оставили в нем свой телефон
• Как вирусы перешли от приколов к реальным деньгам и кибероружию
• Кто на самом деле отключал центрифуги на ядерных объектах (спойлер: не хакеры в подвале)

Как всегда - без занудства, с мемами и историческими перлами 🙈

Где смотреть:

😁 YouTube
😁 VK
YouTube ТОП-20 вирусов, которые сломали интернет 🚀 Бесплатный вводный урок курса "Онлайн курс по кибербезопасности": https://wiki.merionet.ru/merion-academy/course/kurs-po-kiberbezopasnosti?utm_source=YT&utm_medium=own&utm_campaign=virus Рассказываем про самые известные и разрушительные компьютерные вирусы:…
  • ❤‍🔥 6
  • 🔥 1
  • 😍 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →