Сообщество - Программисты шутят

Программисты шутят

257 постов 1 244 подписчика

Популярные теги в сообществе:

4

Боль программиста

Боль программиста
7

Типичный день Scrum-команды

Типичный день Scrum-команды Юмор, Программирование, Разработка, IT юмор, Баг

У PM горят сроки! Команда разработки на охоте, аналитик что-то выбивают на скрижалях. Тестировщик без доступа к контуру на ощупь и «вкус» проверяет изменение.

Показать полностью 1
12

Протокол вскрытия неопознанного распределенного монолита

Протокол вскрытия неопознанного распределенного монолита IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси, DevOps, Монолит, Микросервисы

[Начало аудиозаписи (бодрый голос, с нотками цинизма и усталости)]

Протокол вскрытия № 666-IT/2025. Дата: 17 мая 2025 года. Время: 05:30.

- Я, ведущий DevOps-патологоанатом Сисадминов А.А., приступаю к патологоанатомическому исследованию неопознанного распределенного монолита, поступившего из ООО "Светлое Будущее" после фатального падения системы, зафиксированного 16 мая 2025 в 23:58 по московскому времени.

- Присутствуют: я, младший специалист Логинов П.Р., стажер Архитекторова Н.Ю.

Протокол вскрытия неопознанного распределенного монолита IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси, DevOps, Монолит, Микросервисы

- Итак, начнем. Внешний осмотр. Перед нами типичный корпоративный монолит — старожил цифрового мира. Судя по следам от PHP 5.3 в виде комментариев к коду, датированным 2011 годом, ему не меньше 14 лет. Внушительный возраст для любой системы в кровавом Энтерпрайзе, не находите, Логинов?

- Да, это почти живой мамонт!

- Отмечаю критическую анемию документации. В репозитории — одинокий README.md от 2012 года с гордой надписью "TODO: написать документацию".

- Так, что у нас тут… Kubernetes? О, да! Модный, молодежный. Оркестрация уровня «дирижер в запое». Поды висят в CrashLoopBackOff чаще, чем разработчики этого чуда видят кофейный аппарт. Логи… о, мда, логи! «Something went wrong», «Error: null», «PANIC: KERNEL PANIC (not really, just kidding, or am I?)». Креативненько, ничего Логинов, возьмите образцы на анализ.

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

- Вижу следы восьми разных фреймворков, некоторые из которых не совместимы. Это мне напоминает "инновационный борщ, тёщи, приправленный усушенными котлетками и жаренными пельменями", брр. А вот это что? Закомментированный кусок кода с пометкой «// Игорь, это не трогай, я сам не знаю, как оно работает, но без него все падает!!!11». Игорь, если ты это слышишь, ты был не прав – оно и с ним упало. Из мешанины использованных языков программирования в разных модулях, можно предположить, что разработчики стремились изобрести свой высокоуровневый Brainf**k, совсем чуточку не успели.

Протокол вскрытия неопознанного распределенного монолита IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси, DevOps, Монолит, Микросервисы

- Ага, вот и причина непосредственного отказа. Один из «сервисов» решил, что ему мало 128 Гб оперативной памяти и попытался сожрать еще столько же из свопа. Классический OOM Killer пришел и сделал свою работу. Но это, так сказать, орудие убийства. Причина отказа куда глубже.

[идет продолжительная работа]

- Отказ наступила из-за необратимых изменений кода, навороченных за 13 лет разными разработчиками с их "уникальным видением". Рекомендации родственникам: кремация кодовой базы и старт с нуля. Пациент был нежизнеспособен с момента зачатия идеи в воспаленном мозгу тимлида.

- Ладно, хватит лирики. Пойду оформлять официальный протокол, Логинов, мне нужны результаты анализов. Эти бюрократы из «МинЦифЗдрава» требуют всё по форме.

[Щелчок выключения диктофона]


УТВЕРЖДАЮ

Заместитель начальника Отдела цифровой патологии и реанимации информационных систем

И.И. Кибернетиков

«18» мая 2025 г.

ПРОТОКОЛ № 666-IT/2025 патологоанатомического вскрытия информационной системы

Наименование «ИТ» организации, в которой производится вскрытие: Отдел цифровой патологии и реанимации информационных систем Департамента по надзору за стабильностью критической инфраструктуры.

Дата и время поступления системы: 17.05.2025, 04:48 (MSK)

Идентификатор «умершего»: Проект «Прорыв-2012», версия - неизвестная.

Возраст (время эксплуатации до фатального сбоя): 14 лет, 3 месяца, 2 дня (в режиме «постоянно падает, но мы поднимаем»).

Дата и время «полного отказа»: 16.05.2025, 23:58 (MSK)

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

Дата и время вскрытия: 17.05.2025, 05:30 (MSK)

Вскрытие производил: Ведущий DevOps-патологоанатом Сисадминов А.А.

Присутствовали: Младший специалист по цифровой некроскопии Логинов П.Р., стажер Архитекторова Н.Ю. (сбежала через 15 минут с криком «О боже! Да я лучше бухгалтерию, буду переводить на метод ФИФО!»).

НАРУЖНЫЙ ОСМОТР СИСТЕМЫ: «Кожные пользовательские интерфейсы» недоступны, ответ сервера HTTP 503 (Service Unavailable) на всех эндпоинтах. «Трупные ошибки в логах» обильные, хаотично распределены по всем компонентам системы. «Трупное зависание процессов» наблюдается в 6 из 8 основных модулей. Сопроводительная документация-анамнез разработки фрагментарна, содержит ненормативную лексику и наскальные рисунки, не относящиеся к делу. Архитектурная схема представлена в виде эскиза на длинном бумажном чеке из КБ, вызывает сомнения.

ВНУТРЕННЕЕ ИССЛЕДОВАНИЕ СЕРВИСОВ И ПОЛОСТЕЙ СИСТЕМЫ:

  1. «Центральная нервная система Оркестратор Kubernetes»: Версия 1.25.х (устаревшая). Множественные Pod'ы в состоянии CrashLoopBackOff и ImagePullBackOff. Обнаружены некорректно сконфигурированные readiness и liveness пробы, приводящие к преждевременному «умерщвлению» работоспособных экземпляров. Конфигурационные файлы содержат критические данные в открытом виде.

  2. «Сердечно-сетевая система межсервисного взаимодействие»: Топология сети избыточно сложная, напоминает «Гордиев узел». Задержки при взаимодействии между «микросервисами» достигают нескольких десятков секунд. Обнаружены следы использования самописного протокола поверх HTTP/1.1 для передачи бинарных данных, что приводило к их регулярной закупорке каналов связи. «Микросервисы» по факту являются монолитными приложениями, упакованными в Docker-контейнеры, с высоким уровнем связанности (tight coupling).

  3. «Дыхательная API Gateway система»: API Gateway перегружен из-за отсутствия кэширования и неоптимальных запросов от фронтенда. Модуль «AuthService» демонстрирует признаки «гипертрофии» (размер Docker-образа 3 Гб) и «кислородного голодания» (регулярные OOM Killed). Обнаружены многочисленные хардкод-адреса зависимых сервисов.

  4. «Пищеварительная база данных»: Основная СУБД PostgreSQL – горизонтально шардированная. Структура БД ненормализована, наименования таблиц и полей не соответствуют общепринятым стандартам (например, tbl_prod_final_v2_important). Индексы на часто запрашиваемых полях отсутствуют. Обнаружены следы «несварения» данных (неконсистентность) между репликами. Обнаружена метастаза в виде документно-ориентированной MongoDB из одной коллекции, c полу структурированными данными.

  5. «Опорно-двигательная кодовая база»: Код написан на смеси Python, Go и Node.js (в рамках одного «микросервиса»), в наличии остаточные следы PHP. Присутствуют многочисленные «велосипеды» (самописные решения для стандартных задач). Уровень покрытия тестами – предположительно, менее 5%. Обнаружены закомментированные участки кода с пометками «не трогать, магия» и «костыль, убрать перед релизом».

ПАТОЛОГОАНАТОМИЧЕСКИЙ ДИАГНОЗ:

  • Основное «заболевание»: Острая декомпенсированная архитектурная недостаточность, развившаяся на фоне тотального игнорирования принципов проектирования распределенных систем и DevOps-практик. Тип: «Распределенный Монолит с полиорганной дисфункцией микросервисов».

  • Осложнения: Синдром каскадного отказа модулей. Терминальная стадия технического долга. Критическая зависимость от «магического кода Игоря», о чем свидетельствуют множественные коммиты. Фатальные уязвимости безопасности.

  • Сопутствующие «заболевания»: Хроническое отсутствие автоматизированного тестирования. Дефицит компетентной документации. Синдром «Неприятия чужой разработки» (NIH) в тяжелой форме.

ЗАКЛЮЧЕНИЕ О ПРИЧИНЕ «ОТКАЗА» СИСТЕМЫ: «Отказ» информационной системы «Прорыв-2012» наступила в результате совокупности критических архитектурных просчетов, некомпетентной реализации, отсутствия контроля качества и пренебрежения базовыми принципами разработки и эксплуатации ПО. Непосредственной причиной остановки функционирования явился отказ модуля «AuthService» вследствие исчерпания выделенных ресурсов памяти (OOM Killer), что вызвало цепную реакцию отказа зависимых компонентов. Система стала нежизнеспособна в долгосрочной (и, как оказалось, краткосрочной) перспективе.

РЕКОМЕНДАЦИИ:

  1. Признать проект «Прорыв-2012» полностью несостоятельным.

  2. Провести служебное расследование с целью выявления ответственных за принятие губительных архитектурных и технических решений.

  3. Останки системы (репозитории, артефакты сборки, конфигурации) архивировать с пометкой «Крайне токсично. Не реанимировать!».

  4. Команде разработки в полном составе пройти курсы повышения квалификации по темам: «Основы архитектуры ПО», «DevOps для чайников», «Тестирование – это не больно».

  5. При планировании аналогичных проектов в будущем закладывать бюджет на привлечение внешних ИТ-архитекторов и независимых стейколдеров.

Ведущий DevOps-патологоанатом

___________________ Сисадминов А.А.

М.П. (Отдела Цифровой Патологии)

Показать полностью 3

Попробовать мобильный офис

Перейти

Мобильный офис до 100 тысяч рублей

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

Протестировали TECNO MEGABOOK K15S вместе со смартфоном TECNO CAMON 40 и наушниками TECNO в рабочих и бытовых сценариях от Zoom-звонков до перелета, а теперь рассказываем, как себя показала техника.

Первое впечатление от дизайна ноутбука

Первое, что заметно — это вес. При диагонали 15,6 дюйма и полностью металлическом корпусе K15S весит всего 1,7 кг. Это примерно на 15% меньше, чем аналоги. Устройство не обременяет ни в офисе, ни в такси. Ноутбук поместился в стандартный городской рюкзак, было удобно достать его в кафе за завтраком и по дороге в такси, чтобы быстро отработать клиентские правки.

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

Шарнир работает мягко: чтобы открыть крышку даже одной рукой, не нужно придерживать корпус. Чтобы показать коллеге или клиенту презентацию, достаточно раскрыть экран на 180°. Это удобно и для работы лежа, и для подставок, которые требуют определенного угла обзора.

Также отметим 9 портов: USB-A, USB-C, HDMI, слот для карты памяти — можно забыть о переходниках.

В TECNO MEGABOOK K15S предустановлен Windows 11. Ноутбук готов к работе сразу после включения. Никаких лишних установок и обновлений. Все настроено и оптимизировано для вашей многозадачности.

Экран: яркая картинка и комфорт ночью

Экран — 15,6 дюйма, IPS-матрица с разрешением Full HD. Углы обзора отличные: изображение остается четким, даже если смотреть сбоку, цвета не искажаются. Есть антибликовое покрытие. Тестировали ноутбук при разном освещении: можно спокойно работать у окна. Когда солнце бьет прямо в экран, текст по-прежнему остается читаемым, картинки не искажаются. Это редкость в бюджетных моделях.

Неважно, работаете вы ночью или играете, выручит клавиатура с регулируемой четырехуровневой подсветкой. При среднем уровне в темноте все видно, глаза не устают. Из плюсов для тревожных людей: включали ноутбук в самолете и электричке, никто вокруг не жаловался на яркость. Все регулируется кнопками, не нужно лишний раз заходить в настройки.

Стеклокерамический крупный тачпад — 15 см. Он не залипает, не промахивается, срабатывает с первого касания. Не возникает дискомфорта, даже если несколько часов редактировать документы без мышки. После перехода с других устройств немного непривычно, что тачпад работает в двух направлениях: нижняя часть отзывается нажатием, верхняя — касанием.

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

Производительность: рендерим видео, открываем вкладки

Ноутбук работает на AMD Ryzen 7 5825U (опционально можно выбрать версию техники Intel Core i5-13420H). Восьмиядерный AMD с поддержкой 16 потоков подходит для ресурсоемких операций вроде рендеринга или работы с большими массивами данных. Встроенная графика Radeon справляется с редактированием видео в Full HD или играми.

Во время монтажа 30-минутного ролика в DaVinci Resolve и параллельной работе в Photoshop с несколькими большими PSD-файлами система сохраняла стабильность. Не было ни зависаний, ни заметного падения производительности. Ноутбук уверенно держит в фоне 10 приложений одновременно. Если запущены браузер с 20 вкладками, видеозвонок в Telegram, Excel с объемной таблицей и софт для монтажа, система не тормозит и не перегревается. Переход между окнами остается плавным, ничего не «проседает», даже при одновременном скачивании файлов и редактировании видео.

Базовая комплектация включает 16 ГБ оперативной памяти в двух слотах. При необходимости можно легко увеличить этот показатель до 32 ГБ, заменив стандартные модули на более емкие. Помимо установленного SSD на 1 ТБ предусмотрен дополнительный слот, поддерживающий диски объемом до 2 ТБ.

Чтобы во время нагрузки системы охлаждения не выходили из строя, в ноутбук встроен эффективный вентилятор, способный рассеивать до 35 Вт тепла. Устройство не греется, его спокойно можно держать на коленях. Это решение дополнено тремя режимами работы, которые переключаются простой комбинацией клавиш Ctrl+Alt+T. Тихий режим идеален для работы ночью или в общественных местах, сбалансированный подходит для повседневных задач. Производительный, на котором запускали рендеринг видео и игры, практически не шумит.

Автономность: 15 часов без подзарядки

Протестили автономность MEGABOOK K15S в условиях, знакомых каждому деловому путешественнику. Утром перед вылетом зарядили ноутбук до 100% и взяли его в рейс Москва — Калининград. В зале ожидания провели созвон, потом три часа смотрели сериал и в дороге до отеля редактировали документы. К моменту приезда оставалось 40% заряда: хватило бы еще на пару часов продуктивной работы.

MEGABOOK K15S может автономно работать до 15 часов и позволяет не оглядываться на индикатор заряда. Заявленное время достигается при типичном офисном использовании: одновременная работа с документами в Word и Excel, ведение переписки, видеоконференции, веб-серфинг.

Если все же понадобится, за  час восполняется до 70% батареи. Компактный адаптер мощностью 65 Вт на базе нитрида галлия поместился даже в карман пиджака. Один блок питания заряжает и ноутбук, и смартфон, и наушники. Экономия места: не нужно никаких дополнительных проводов.

Звук, который реально слышно

В TECNO MEGABOOK K15S установлены два мощных динамика по 2.5 Вт. Звук с глубокими низами, без пластикового дребезжания, объемный. Благодаря DTS можно смотреть видео даже в шумном помещении. В тестах специально включали сцены с шагами и выстрелами: локализация настолько точная, что в наушниках нет необходимости.

Та же стабильность и в микрофоне. Благодаря AI-шумоподавлению голос передается чисто. Во время тестовых звонков из оживленного кафе собеседник не услышал ни разговоры за соседним столом, ни городской шум. И все это — на расстоянии до пяти метров.

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

Для тех, кто предпочитает гарнитуру, идеально подойдут беспроводные наушники TECNO FreeHear 1 из экосистемы бренда. Когда не хотелось делиться разговорами с окружающими, подключали их. Чистый звук с акцентом на средние частоты, 11-мм драйверы, которые выдают неожиданную детализацию. Музыку слушать приятно: и фоновый плейлист на телефоне, и вечерний сериал на ноутбуке. Автономно работают наушники 6 часов, с кейсом — до 30 часов. 

Bluetooth 5.4 обеспечивает стабильное соединение на расстоянии до 10 метров. Удобная C-образная форма разработана специально для длительного ношения — после восьмичасового рабочего дня в ушах не возникает дискомфорта. Наушники поддерживают одновременное подключение к ноутбуку и смартфону. Переключение между устройствами происходит быстро и без заминок.

Через фирменное приложение Welife можно выбрать один из четырех эквалайзеров и отследить местоположение гарнитуры в случае утери. А еще кастомизировать виджет для управления наушниками. Функция настройки персонализированного дизайна доступна для устройств на Android и позволяет гибко изменить внешний вид окна подключения: вплоть до установки фоновой картинки или собственного фото.

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

Бесшовная синхронизация со смартфоном

Благодаря функции OneLeap ноутбук синхронизируется со смартфоном TECNO. Подключение происходит за пару секунд: достаточно один раз подтвердить сопряжение. После этого открывается доступ к бесшовному переключению между устройствами — объединенному буферу обмена, дублированию экранов и передаче файлов без кабелей и пересылок в мессенджерах.

Функция выручила, когда нужно было открыть приложение, у которого нет веб-версии. Удобно работает и буфер обмена: скопировал текст на одном устройстве — вставил на другом. Например, код, полученный в сообщении на телефоне, вводится в браузере на ноутбуке. Экономит минуты, а иногда и нервы. А когда в дороге пропал Wi-Fi, ноутбук сам подключился к мобильному интернету через смартфон.

TECNO CAMON 40 и сам по себе — мощный рабочий инструмент.  Смартфон выделяется камерой высокого качества 50 Мп, ярким AMOLED-экраном 120 Гц и множеством функций, которые упрощают процесс мобильной съёмки и использование искусственного интеллекта TECNO AI.

Телефон работает на HIOS 15.0.1 на базе Android 15.В фирменную оболочку встроен искусственный интеллект:

  • Голосовой помощник Ella. Отвечает на вопросы, помогает с задачами и управлением устройством.

  • Решение задач. Наводите камеру на задачу, ИИ решает ее.

  • AI Редактор фотографий. Интеллектуальная обработка в одно касание.

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

Технические характеристики

  • Процессор и память. 8 ядер, 16 потоков, Кэш L3 16 МБ, частота до 4.5 ГГц Графический процессор AMD Radeon™ graphics SSD 512 ГБ или 1 ТБ, М.2, 2280, PCle 3.0 Nvme DDR4 16 ГБ, 3200 МГц.

  • Дисплей. 15.6", TFT, Full HD (1920×1080), 16:9, 280нит, 45% NTSC, 16.7 млн цветов, 60 Гц, 141 ррі.

  • Веб-камера. 1 Мп, шторка приватности.

  • Порты. 9 портов: 1*TF Card (microSD), 1*HDMI 1.4, 1*USB-A 3.1,

    1*USB-A 3.2, 1*3.5mm аудиовход, *Ethernet RJ45 до 1 Гбит, 2*Туре-С (Full Function), 1*слот для замка Kensington.

  • Другое. Сканер отпечатка пальца в кнопке питания. Клавиатура с подсветкой (4 уровня яркости). Тачпад с поддержкой одновременно 4 касаний.

  • Батарея. 70 Вт∙ч (6150 мА∙ч), Li-Pol, 11.55 B 65 Вт Type-C GaN, 20 В, 3.25 А, кабель 1.8 м (Туре-С-Type-C).

  • Габариты. 17.3 мм (высота), 359.5 мм (ширина), 236 мм (глубина).

  • Вес. 1,7 кг.


Если хотите создать собственную экосистему, в которой технологии подстроятся под ритм дня, попробуйте технику TECNO. Мощный ноутбук, быстрый смартфон и наушники соединяются в единое пространство. Быстрое переключение между устройствами, синхронизация файлов и стабильное соединение без лишних настроек.

КУПИТЬ НОУТБУК TECNO

Реклама TECNO Mobile Limited, Юридический адрес: Flat N, 16/F., Block B, Универсальный промышленный центр, 19-25 Shan MeiStreet, Fotan, New Territories, Гонконг

Показать полностью 17
14

Сказание о лохматом чудовище Легаси

Лохматое Легаси чудовище подняло свои щупальца из темно-коричневого озера и простонало:

– Уууу, моя обратная совместимость. Мои кеши переполнены, мой редис страдает, sql на обслуживании, избавь меня от страдания путник...

Путник подумал и решил, скастовать древнее колдунство:

– HTTP/1.1 307 Temporary Redirect

Послышался протяжный стон облегчения и бульканье. Щупальца чудовища расслабились, ил на дне озера перестал бурлить, а само озеро из мутно-коричневого стало чуть прозрачнее, хотя всё ещё отдавало тиной старых запросов.

– О, мудрейший из кодеров, о заклинатель API! – пророкотало чудовище, его голос стал чуть менее дребезжащим. – Твоё заклятие принесло временное утешение. Мои логи ошибок перестали расти как на дрожжах, а латенси… о, оно почти вернулось к приемлемым значениям! Но я чувствую, это лишь отсрочка. Адрес, на который ты меня перенаправил… он ведь тоже не вечен?

Путник, видавший не один падающий прод и не одну DDoS-атаку, кивнул. Его плащ, расшитый символами регулярных выражений, слегка колыхнулся.

– Ты прав, о Древний Код. Заклинание 307 Temporary Redirect лишь перенаправило входящий трафик на зеркальный инстанс, который я развернул на скорую руку в соседней виртуальной долине. Это дало нам передышку, но твоя основная сущность, твое озеро данных, всё ещё страдает от десятилетий несовершенных коммитов и забытых веток.

– И что же делать? – в голосе Легаси снова послышались нотки отчаяния. – Я чувствую, как старые зависимости, словно ядовитые водоросли, опутывают моё ядро. Мои индексы фрагментированы, а таблицы раздуты до неприличия!

Путник достал из сумки потёртый артефакт, похожий на планшет, но сделанный из лунного камня. Экран вспыхнул мягким светом, отображая сложные диаграммы связей и потоков данных.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

– Есть более могущественное колдунство, – сказал он, проводя пальцем по экрану. – «Великий Рефакторинг Ядра». Оно требует огромной концентрации и точных расчётов. Мы должны будем слой за слоем распутать твои старые скрипты, оптимизировать запросы, возможно, даже применить «Микросервисное Расщепление» на самые тяжелые модули. Это как пересобрать тебя заново, сохранив твою мудрость, но избавив от балласта.

Чудовище замерло, обдумывая слова путника. Из озера донеслось тихое шипение – это старые сессии начали корректно завершаться под действием временного редиректа.

– Но это… это же изменит меня до неузнаваемости! – прошептало оно. – Смогу ли я остаться собой после такого вмешательства? Сохранится ли моя… моя уникальная бизнес-логика, накопленная веками?

– В этом и заключается искусство, – улыбнулся путник. – Мы не будем ломать то, что работает, а лишь улучшим и оптимизируем. Представь: твои кеши будут работать как часы, Redis будет летать, а SQL… SQL будет петь от радости чистых и оптимизированных запросов. Ты станешь быстрее, надежнее, и сможешь обрабатывать запросы нового поколения, о которых сейчас даже мечтать не можешь. Но для этого нам понадобится тщательно проанализировать твой «Swagger», твою карту API, и, возможно, провести несколько «A/B тестов» на отдельных щупальцах. - Он указал на одну из диаграмм на лунном камне.

– Смотри, вот здесь, в самом сердце твоего озера, лежит монолитный артефакт, известный как «Главный Контроллер Всего». Он отвечает за всё и сразу. Мы можем аккуратно выделить из него несколько более мелких, но специализированных сервисов. Каждый будет жить в своем небольшом, чистом «докер-пруду», и общаться с другими через быстрые «gRPC-потоки».

Лохматое Легаси чудовище медленно кивнуло одним из своих многочисленных отростков. В его древних, мерцающих глазах, отражающих консольные логи, загорелась искорка надежды.

– Я… я готов попробовать, о Мастер Деплоя. Но скажи, с чего мы начнем это великое таинство? Каково будет первое заклинание на пути к моему обновлению?

Путник закрыл артефакт-планшет и спрятал его в сумку.

– Первое – это всегда git checkout -b feature/refactoring_core. Мы создадим безопасную ветку реальности, где сможем экспериментировать без страха обрушить то, что еще дышит. А затем… затем мы начнем с самого простого: npm audit fix --force для твоих внешних зависимостей. Это может быть больно, но необходимо.

Чудовище издало звук, похожий на скрежет старого жесткого диска, но в нем уже не было прежней безысходности.

– Да будет так, – прошелестело оно. – Начинай свое колдовство, путник. Моя uptime в твоих руках.

Путник кивнул, доставая из своей сумки видавший виды свиток пергамента, исписанный мелким, убористым почерком. Это был «Манифест Гибких Заклинаний».

– Прежде чем мы погрузимся в git blame по твоим самым древним артефактам, о Легаси, поведай мне. Как ты дошел до жизни такой? Кто те маги и чародеи, что сотворили тебя и чьи заклинания ты до сих пор исполняешь?

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

– О, это была эпоха великих надежд и быстрых релизов! Я был задуман как «Единый Портал Всего Сущего» для Королевства. Изначально всё было просто: учёт маны, перепись населения, доска объявлений для рыцарских турниров. Но потом пришли они… стейкхолдеры.

Путник сочувственно хмыкнул. Он знал этот тип сущностей.

– Первым был Королевский Казначей, – продолжало Легаси, одно из его щупалец начало нервно подрагивать, вызывая рябь на воде. – Ему нужна была «абсолютная точность в расчётах десятины и налогов НДС на драконьи клады». Пришлось встроить модуль на 1С-заклинаниях, потому что только старый гном-бухгалтер знал, как правильно обсчитывать чешую и драгоценные камни. Этот модуль до сих пор работает, и никто не решается его трогать. Он… он critical path.

– Затем явилась Гильдия Торговцев Специями, – голос Легаси стал ещё более заунывным. – «Нам нужна интеграция с межконтинентальной системой доставки на грифонах! И чтобы цены обновлялись в реальном времени, в зависимости от направления ветра и настроения драконов-покровителей пути!» Их API был написан на эльфийском диалекте LISP, и документация существовала только в виде устных преданий. Каждая новая версия их «Грифон-Экспресса» ломала мне половину логики.

– А потом… потом пришла Принцесса, – тут чудовище совсем сникло, и озеро вокруг него помутнело от поднявшегося ила, и пошло странной пеной. – Она захотела «социальную сеть для фей и других волшебных существ, с возможностью делиться пыльцой и лайкать радуги». И чтобы «всё было розовое и с блёстками!» Её команда UI/UX-фей наложила столько !important стилей поверх моих старых табличных раскладок, что браузеры старых гоблинов до сих пор падают в kernel panic.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

Путник медленно кивал, листая свой Манифест.

– Понимаю. Каждый тянул одеяло на себя, добавляя свои feature request-ы, не думая об общей архитектуре. И, конечно, всё это нужно было «вчера», не так ли? У нас в ордене ходили слухи про странный культ: «Лучше два раза быстро, чем один раза правильно!»

– Именно, но про культ мне ничего не известно! – воскликнуло Легаси, вздымая волну. – А так, да «Нам нужен MVP к Новолунию!», «Релизим перед Зимним Солнцестоянием, допилим потом!». «Рефакторинг? Нет времени, вражеские орки-хакеры наступают на наши файрволы!» И так десятилетиями. Костыли на костылях, обёрнутые в заплатки из try-catch блоков, которые ловят Exception и просто пишут print("ололо, что-то пошло не так") в логи забвения.

– А что насчёт безопасности? – осторожно спросил путник. – Обычно на таком этапе появляются «Рыцари Белого Хэша» или «Инквизиторы SSL-сертификатов».

– О, да! – глаза Легаси вспыхнули красным светом, как индикаторы перегрузки сервера. – Они появились в самый последний момент перед запуском модуля «Королевская Сокровищница Онлайн». Когда уже были розданы все рекламные флаеры, а менестрели пели хвалебные оды по всем тавернам. Эти «Специалисты по Информационной Магобезопасности» из Ордена Непробиваемого Щита пришли с толстенными талмудами политик и процедур.

– Представляешь, они заявили, – продолжало чудовище, его голос дрожал от негодования, – что мой «Протокол Аутентификации по Родовому Гербу» недостаточно надёжен! Что «использование общедоступных порталов для передачи секретных указов – это дыра размером с Великое озеро Байкал»! А вишенкой на торте их аудита стал… мой летающий трон!

– Что прости, Летающий трон? – путник удивленно поднял бровь.

– Да! Это была гордость Короля! Летающий трон на интернет-тяге! Он должен был парить над столицей, транслируя королевские указы через Wi-Fi и раздавая бесплатные NFT-портреты Его Величества! Инженеры-гномы потратили на него полгода! А эти… эти безопасники заявили, что «незащищённый root-доступ к антигравитационным рунам трона, управляемый через незашифрованный HTTP-канал с дефолтными кредами admin/admin123 – это…» Ну, ты понял. Они грозились наложить iptables -F на всё королевство!

– Путник покачал головой. – Классика. И что же?

– Пришлось выбирать, – тяжело вздохнуло Легаси. – Либо трон, либо запуск Сокровищницы. Король был в ярости. Он метал молнии (буквально, он же маг четвертого уровня). Но Казначей и Гильдия Торговцев убедили его, что работающая экономика важнее парящего пиар-инструмента. Трон отправили на «доработку в соответствии с ГОСТ Р 52069.0-2013 Небесной Канцелярии», и с тех пор о нём никто не слышал. А мне в ядро вшили столько правил и двухфакторных заклинаний, что я стал медленнее ленивца на транквилизаторах. Но зато «безопасный». – Вода в озере немного успокоилась. Чудовище перевело дух.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

– Вот так, путник, я и стал тем, кто я есть. Сплетением противоречивых требований, поспешных решений и отчаянных попыток всё это как-то удержать на плаву. Теперь ты понимаешь глубину моих болот из spaghetti code?

– Путник задумчиво смотрел на Легаси. –  Понимаю, – сказал он наконец. – Твоя история – это сага о многих системах. Но даже самое запутанное наследие можно распутать. Если есть воля и хороший debugger. Начнём с анализа зависимостей тех самых 1С-заклинаний. И посмотрим, нельзя ли их обернуть в какой-нибудь более современный API-шлюз, чтобы хотя бы изолировать эту древнюю магию. А Принцессины, блёстки… боюсь, тут придётся применить глобальный CSS Reset и объяснить ей прелести адаптивного дизайна.

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

– Хорошо, – кивнул Путник, обводя взглядом мутные глубины озера и прикидывая объем предстоящих git log --graph --oneline --decorate --all. – Но прежде, чем мы начнем распутывать твои самые древние commit-ы, скажи, о Легаси, а что с документацией? Не всё же можно понять, силами реверс-инжиниринга. Где твои «Свитки Архитектуры», «Манускрипты API Эндпоинтов», «Руководства Пользователя для Заклинателей Низшего Звена»?

Лохматое Легаси Чудовище издало звук, похожий на одновременный скрежет тысячи модемов, пытающихся установить соединение.

– Документация… – прошелестело оно, и несколько пузырей с запахом старого озона поднялись со дна. – Она существует… в виде легенд. В виде устных преданий, передаваемых от одного уволившегося Архимага другому. Часть её была начертана на стенах «Пещеры Первых Коммитов», но после обвала, вызванного неудачным DROP TABLE users; без условия WHERE, те фрески утеряны.

– Что-то есть в виде комментариев в коде, – продолжало Чудовище, одно из его щупалец задумчиво почесало нарост из устаревших библиотек.

– Но они в основном гласят:

// TODO: Rewrite this before the dragons notice

или

// Здесь магия, не трогать, работает на честном слове и синей изоленте.

– Иногда встречаются целые поэмы на Древне-Ассемблерском, описывающие элегантность решения, которое теперь вызывает лишь воспоминания о былом StackOverflowException.

– Путник вздохнул. – Знакомая картина. «Знание, передаваемое путем болезненной отладки» – самый распространенный вид документации в подобных системах. То есть, никакого «Confluence -Хранилища Знаний», никакого «Jira - Трекера Задач и Багов» с подробным описанием фич?

–  Ой, да был когда-то «Вики-Гримуар», – призналось Легаси. – Но последний Хранитель Знаний, эльф по имени ЛегоЛАГ, ушёл в «Бессрочный Отпуск в Валинор» после того, как его правки по «Оптимизации Запросов к Оракулу Судьбы» откатили в пятый раз. С тех пор гримуар зарос паутиной 404 Not Found.

Взгляд Путника скользнул выше, к потолку пещеры, где сквозь мутную воду виднелись контуры следующего уровня системы – вероятно, то, что когда-то было «Бизнес-Логикой Верхнего Уровня». И тут он заметил его.

– А это что? – Путник указал на гигантскую конструкцию, уходящую из глубин озера и подпирающую что-то массивное на втором ярусе. Конструкция была сделана из грубо сваренных стальных балок, но наверху, там, где она упиралась в свод, виднелся искусно сделанный, поблескивающий даже в мутной воде, мифриловый набалдашник. – Этот огромный стальной костыль с мифриловым набалдашником… он ведь не часть изначального дизайна, верно?

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

– А, ты про «Великую Подпорку Стабильности Имени Архитектора Глюкона»… – с трудом выдавило оно из себя фразу. – Это… это долгая и печальная история о том, как «быстрое решение» становится «вечной инфраструктурой».

– Рассказывай, – Путник устроился поудобнее на выступе из застывшего JSON-а.

– Это случилось во времена «Великого Запуска Модуля Предсказаний Погоды для Королевских Пикников», – начало Легаси. – Требование было простым: «Точность 99.999% за 24 часа до события». Но команда метео-магов перемудрила с «нейронной сетью на рунах хаоса», и модуль начал потреблять немыслимое количество CPU time и RAM-эссенции. Каждый раз, когда он пытался просчитать вероятность дождя над конкретной полянкой, весь второй этаж, где крутились основные сервисы Королевства, начинал вибрировать и проседать. Логи сыпались ошибками OutOfMemoryError и Kernel Panicus Totalus.

– Архитектор Глюкон, известный своим девизом «Работает – не трогай, падает – подопри!», вместо того чтобы оптимизировать прожорливый модуль (на это не было «времени в спринте»), предложил гениальное решение. Он вызвал бригаду гномов-кузнецов и велел им сковать этот… костыль. Сталь – для прочности, а мифриловый набалдашник… он не просто для красоты. В него встроены «Руны Аварийного Распределения Нагрузки». Когда сенсоры фиксируют критическую просадку производительности на втором этаже, набалдашник начинает светиться и перенаправлять часть вычислительной магии на резервные кластеры в «Подземельях Холодного Резерва».

– То есть, вместо того чтобы починить протекающий кран, вы просто поставили под него ведро побольше и автоматизировали его выливание? – уточнил Путник.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

– Именно! – подтвердило Легаси. – И это «ведро» стало настолько критически важным, что теперь вокруг него построена целая экосистема мониторинга и поддержки. Есть даже специальный «Орден Хранителей Костыля», которые дважды в день проверяют затяжку болтов и уровень магической смазки в мифриловом шарнире. Попытки убрать его приводили к немедленному segmentation fault всего «второго этажа». Он стал неотъемлемой частью моей… сущности. Символом того, как временное решение, принятое под давлением «бизнес-требований» и «сжатых сроков», может врасти в систему так глубоко, что его удаление становится сравнимо с операцией на открытом сердце без анестезии.

Путник покачал головой, но в его глазах читалось не только сочувствие, но и профессиональный азарт.

– Что ж, Легаси, – сказал он, поднимаясь. – Похоже, наш backlog пополнился ещё одной эпической задачей. Но сначала – документация. Мы должны найти хоть какие-то следы первоначального замысла. Возможно, в архивах Королевской Канцелярии сохранились «Технические Задания на Пергаменте» или «Протоколы Совещаний с Резолюциями Его Величества». Без этого мы рискуем, удалив один костыль, породить десяток новых гидр-багов.

–  Удачи тебе, путник, – прошелестело Чудовище. – Поищи в «Забытой Библиотеке Закомментированного Кода». Говорят, там иногда находят фрагменты древних диаграмм последовательности, нацарапанные на обратной стороне счетов за эльфийский эль.

Всех обнял, продолжение возможно будет.

Показать полностью 4

Когда наблюдаешь очередной срач между фанатами php и node.js

Когда наблюдаешь очередной срач между фанатами php и node.js IT юмор, Программирование, Картинка с текстом, Программист, Telegram (ссылка), PHP, Nodejs, IT, Javascript, Мемы

Взято тут - https://t.me/memolecules/29

Часы с мировым временем, или региональная шутка

Уже год пользуюсь часами фирмы Casio *World time *. Там можно любыми способами доковыряться до времени хоть Нью - Йорка, хоть Мьянмы, хоть Италии. Плюсом там есть подобие хронометра. А что вы ожидали от классических часов? Но и там не обошлось без шуток. Я начал в них ковыряться, и нашёл всё что угодно. Не иначе они посадили в часы нанокитайца.

Короче, говоря там нету только подсветки, записной книжки и калькулятора. Остальное - на любой вкус. Будильник - получите и распишитесь. Секунды - будет исполнено. Мировое время - ещё бы там его не было. Но будильник на уровне Монтаны.

Купил я это чудо вместо моих старых Casio F-91. Они страшным образом потерялись. Бесследно.

Увы...

Между нами, мальчиками. Продолжение поста про Саню и Аню

Продолжение про многострадальную "пишущую машинку". Я просто не вывел ещё несколько любопытных тезисов.

1)

На данном устройстве сделанном фирмой "Casio" было очень много фич и багов. Фичей был калькулятор на кучу строк и внезапно органайзер. Органайзер был шуточным. Какой серьёзный "органайзер" вы ожидали от электронного блокнота начала нулевых???

2)

Скажу сразу: эта машинка ещё и недолговечная. Года через два она накрылась. И мне не удалось ещё раз её на время получить.

3)

Скажу сразу number two: мне попадался шанс купить подобное устройство. Но по злой иронии судьбы он был прошляплен.

4)

Дорогие друзья!!! Желаю заявить прямо, что мне тогда было мало лет. Но из - за своего заболевания я уже тогда умел искать фичи за 3 минуты. И находил. Делал. Возвращал все в исходную позицию. Почитайте "Понедельник начинается в субботу" или "Полдень. XXII век". Там ещё жёстче программеры прикалывались.

За сим остаюсь,

Ваш несостоявшийся коллега

Роман Извеков.

Как Саня может превратиться в Аню

Мне однажды улыбнулась Фортуна попробовать попользоваться чужим "банком данных" фирмы Casio с калькулятором. При каких условиях не буду рассказывать. Это полный... Ну вы поняли. Шутка состояла в том, что там была телефонная книжка. И была в этом устройстве волшебная кнопочка "ред.". В устройстве был забит телефон какого - то Сани. Я нажал "ред." и на экране появилась Аня вместо Сани. Нажал ещё раз, и опять появился Саня. Шутка была ещё в том что там был будильник, и я его поставил. Через минуту или час раздалось "Пи - пи - пи". Было дело в 2004 году в мои 6 лет. Техника была возвращена хозяйке. Ничего страшного не случилось. Специально поставил тэг моё. Потому что это испробовано на личном опыте.

Отличная работа, все прочитано!